jl_ex.go 5.3 KB

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