jl_ex.go 6.1 KB

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