jl_ex.go 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. /*
  2. * @description: 计量接口
  3. * @Author: CP
  4. * @Date: 2021-12-25 14:33:40
  5. * @FilePath: \construction_management\web\external\jl_ex.go
  6. */
  7. package external
  8. import (
  9. "fmt"
  10. "github.com/kataras/iris/v12"
  11. "github.com/spf13/viper"
  12. "go.mod/dao"
  13. "go.mod/datasource"
  14. "go.mod/lib"
  15. "go.mod/services"
  16. "go.mod/web/utils"
  17. "go.mod/web/viewmodels"
  18. )
  19. type JlEx struct {
  20. //框架-web应用上下文环境
  21. Ctx iris.Context
  22. // 需要用的service - 必须是鸭子形式,才不会出现问题
  23. // JlService services.JlService
  24. }
  25. // 检验项目 Calibration
  26. func (c *JlEx) PostCalibration() {
  27. // 1.获得数据
  28. data := &viewmodels.Jl{}
  29. if err := c.Ctx.ReadForm(data); err != nil {
  30. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  31. return
  32. }
  33. // 1-1.校验是否存在TOKEN
  34. if err := data.ValidateToken(); err != nil {
  35. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  36. return
  37. }
  38. // 1-2.验证jwt
  39. claims, err := utils.ValidateJwt(data.Token)
  40. if err != nil {
  41. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  42. return
  43. }
  44. // 1-3.验证参数的正确性
  45. claimsData := &viewmodels.Jl{
  46. Code: fmt.Sprintf("%s", claims["code"]),
  47. }
  48. if err := claimsData.ValidateParameter(); err != nil {
  49. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  50. return
  51. }
  52. JlService := services.NewJlService()
  53. result := JlService.IsCode(claimsData.Code)
  54. c.Ctx.JSON(iris.Map{
  55. "code": 0,
  56. "msg": "",
  57. "data": result,
  58. })
  59. }
  60. // 添加项目和账号
  61. func (c *JlEx) PostProjectAdd() {
  62. // 1.获得数据
  63. data := &viewmodels.Jl{}
  64. if err := c.Ctx.ReadForm(data); err != nil {
  65. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  66. return
  67. }
  68. // 1-1.校验是否存在TOKEN
  69. if err := data.ValidateToken(); err != nil {
  70. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  71. return
  72. }
  73. // 1-2.验证jwt
  74. claims, err := utils.ValidateJwt(data.Token)
  75. if err != nil {
  76. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  77. return
  78. }
  79. // 1-3.验证参数的正确性
  80. claimsData := &viewmodels.Jl{
  81. Code: fmt.Sprintf("%s", claims["code"]),
  82. Account: fmt.Sprintf("%s", claims["account"]),
  83. }
  84. if err := claimsData.ValidateProjectAdd(); err != nil {
  85. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  86. return
  87. }
  88. JlService := services.NewJlService()
  89. result, err := JlService.ProjectAdd(claimsData)
  90. if err != nil {
  91. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  92. return
  93. }
  94. c.Ctx.JSON(iris.Map{
  95. "code": 0,
  96. "msg": "",
  97. "data": result,
  98. })
  99. }
  100. // 授权登陆
  101. func (c *JlEx) PostAuthLogin() {
  102. debug := getEnvInfo("DEBUG")
  103. AuthUrl := "https://jl.smartcost.com.cn"
  104. if debug {
  105. AuthUrl = "http://jlqa.smartcost.com.cn:7002"
  106. }
  107. // 1.获得数据
  108. data := &viewmodels.Jl{}
  109. if err := c.Ctx.ReadJSON(data); err != nil {
  110. // fmt.Sprintf("%s", err)
  111. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err), "data": map[string]string{
  112. "redirect": AuthUrl,
  113. }})
  114. return
  115. }
  116. // 1-1.校验是否存在TOKEN
  117. if err := data.ValidateToken(); err != nil {
  118. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err), "data": map[string]string{
  119. "redirect": AuthUrl,
  120. }})
  121. return
  122. }
  123. // 1-2.验证jwt
  124. claims, err := utils.ValidateJwt(data.Token)
  125. if err != nil {
  126. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err), "data": map[string]string{
  127. "redirect": AuthUrl,
  128. }})
  129. return
  130. }
  131. // 1-3.验证参数的正确性
  132. claimsData := &viewmodels.Jl{
  133. Code: fmt.Sprintf("%s", claims["code"]),
  134. Account: fmt.Sprintf("%s", claims["account"]),
  135. }
  136. if err := claimsData.ValidateProjectAdd(); err != nil {
  137. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err), "data": map[string]string{
  138. "redirect": AuthUrl,
  139. }})
  140. return
  141. }
  142. JlService := services.NewJlService()
  143. result, err := JlService.AuthLogin(claimsData, c.Ctx.ResponseWriter())
  144. if err != nil {
  145. code := -1
  146. errString := fmt.Sprintf("%s", err)
  147. if errString == "该账号已被停用" {
  148. // 计量跳转代表账号停用
  149. code = 3
  150. }
  151. c.Ctx.JSON(iris.Map{"code": code, "msg": errString, "data": map[string]string{
  152. "redirect": AuthUrl,
  153. }})
  154. return
  155. }
  156. c.Ctx.JSON(iris.Map{
  157. "code": 0,
  158. "msg": "",
  159. "data": result,
  160. })
  161. }
  162. // 修改账号名称接口
  163. func (c *JlEx) PostAccountUpdate() {
  164. // 1.获得数据
  165. data := &viewmodels.Jl{}
  166. if err := c.Ctx.ReadForm(data); err != nil {
  167. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  168. return
  169. }
  170. // 1-1.校验是否存在TOKEN
  171. if err := data.ValidateToken(); err != nil {
  172. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  173. return
  174. }
  175. // 1-2.验证jwt
  176. claims, err := utils.ValidateJwt(data.Token)
  177. if err != nil {
  178. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  179. return
  180. }
  181. // 1-3.验证参数的正确性
  182. claimsData := &viewmodels.Jl{
  183. Code: fmt.Sprintf("%s", claims["code"]),
  184. Account: fmt.Sprintf("%s", claims["account"]),
  185. NewAccount: fmt.Sprintf("%s", claims["newAccount"]),
  186. }
  187. if err := claimsData.ValidateAccountUpdate(); err != nil {
  188. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  189. return
  190. }
  191. JlService := services.NewJlService()
  192. if err := JlService.AccountUpdate(claimsData); err != nil {
  193. c.Ctx.JSON(iris.Map{"code": -1, "msg": fmt.Sprintf("%s", err)})
  194. return
  195. }
  196. c.Ctx.JSON(iris.Map{
  197. "code": 0,
  198. "msg": "",
  199. "data": "",
  200. })
  201. }
  202. // 批量同步计量账号
  203. func (c *JlEx) PostSync() {
  204. // // 是否有该项目
  205. // _, err = c.ServiceProject.Get(projectId)
  206. // if err != nil {
  207. // c.Ctx.JSON(iris.Map{"code": -1, "msg": "项目不存在"})
  208. // return
  209. // }
  210. var (
  211. accountList []map[string]interface{}
  212. err error
  213. )
  214. // 获得计量 -TODO
  215. Jlzf := lib.NewJlzf()
  216. if accountList, err = Jlzf.GetAccountList("P0301"); err != nil {
  217. fmt.Println(err)
  218. }
  219. dao := dao.NewProjectAccountDao(datasource.InstanceDbMaster())
  220. if err = dao.JlSync(accountList, 85); err != nil {
  221. fmt.Println(err)
  222. }
  223. }
  224. func getEnvInfo(env string) bool {
  225. viper.AutomaticEnv()
  226. return viper.GetBool(env)
  227. }