劲创营---任务项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

svc_login.go 6.6 KiB

2 週之前
6 天之前
2 週之前
6 天之前
2 週之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package svc
  2. import (
  3. "applet/app/comm/db"
  4. "applet/app/comm/e"
  5. "applet/app/comm/svc"
  6. "applet/app/comm/utils"
  7. "applet/app/comm/utils/cache"
  8. "applet/app/lib/mob"
  9. sms2 "applet/app/lib/sms"
  10. "applet/app/operator/md"
  11. "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/sms"
  12. "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement"
  13. "encoding/json"
  14. "fmt"
  15. "github.com/gin-gonic/gin"
  16. "github.com/syyongx/php2go"
  17. )
  18. func Login(c *gin.Context) {
  19. var args md.LoginReq
  20. if err := c.ShouldBindJSON(&args); err != nil {
  21. e.OutErr(c, e.ERR_INVALID_ARGS)
  22. return
  23. }
  24. user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone)
  25. if user == nil {
  26. e.OutErr(c, 400, e.NewErr(400, "用户未注册"))
  27. return
  28. }
  29. if user.Password != utils.Md5(args.Password) {
  30. e.OutErr(c, 400, e.NewErr(400, "密码错误"))
  31. return
  32. }
  33. if user.Level != 2 && user.Level != 3 {
  34. e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台"))
  35. return
  36. }
  37. // 生成jwt
  38. appName := svc.SysCfgGet(c, "app_name")
  39. token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "")
  40. if err != nil {
  41. e.OutErr(c, 400, e.NewErr(400, "用户不存在"))
  42. return
  43. }
  44. key := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username)
  45. cache.SetEx(key, token, 39528000) // 半年
  46. role := []string{"comm"}
  47. if user.Level == 3 {
  48. role = append(role, "operator")
  49. }
  50. res := map[string]interface{}{
  51. "token": token,
  52. "role": role,
  53. }
  54. e.OutSuc(c, res, nil)
  55. return
  56. }
  57. func Register(c *gin.Context, args md.RegisterReq) {
  58. user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone)
  59. if user == nil {
  60. e.OutErr(c, 400, e.NewErr(400, "用户未注册"))
  61. return
  62. }
  63. if user.Level != 2 && user.Level != 3 {
  64. e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台"))
  65. return
  66. }
  67. mob1, errr := mob.GetMobSDK(c.GetString("mid"))
  68. if errr != nil {
  69. e.OutErr(c, e.ERR_MOB_CONFIG, errr)
  70. return
  71. }
  72. send := map[string]interface{}{
  73. "phone": args.Phone,
  74. "zone": "86",
  75. "code": args.Captcha,
  76. }
  77. var ok bool
  78. // h5(wap) 登录
  79. var err error
  80. if svc.SysCfgGet(c, "sms_send_type") == "2" {
  81. code := svc.SysCfgGet(c, "sms_send_code")
  82. if code != args.Captcha {
  83. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  84. return
  85. }
  86. ok = true
  87. cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone)
  88. } else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" {
  89. code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone)
  90. if code != args.Captcha {
  91. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  92. return
  93. }
  94. cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone)
  95. ok = true
  96. } else {
  97. ok, err = mob1.MobSMS(c, send)
  98. if err != nil {
  99. e.OutErr(c, 400, err.Error())
  100. return
  101. }
  102. }
  103. if ok == false {
  104. // 验证码无效或者过期,验证码错误
  105. e.OutErr(c, e.ERR_SMS_AUTH, nil)
  106. return
  107. }
  108. appName := svc.SysCfgGet(c, "app_name")
  109. token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "")
  110. if err != nil {
  111. e.OutErr(c, 400, e.NewErr(400, "用户不存在"))
  112. return
  113. }
  114. up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], user.Uid)
  115. if err != nil || up == nil {
  116. e.OutErr(c, e.ERR_DB_ORM, err)
  117. return
  118. }
  119. up.ArkidToken = token
  120. _, err = svc.MasterDb(c).Where("uid=?", up.Uid).Cols("arkid_token").Update(up)
  121. if err != nil {
  122. e.OutErr(c, 400, e.NewErr(400, "登陆失败"))
  123. return
  124. }
  125. key1 := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username)
  126. cache.SetEx(key1, token, 39528000) // 半年
  127. res := map[string]string{
  128. "token": token,
  129. }
  130. e.OutSuc(c, res, nil)
  131. return
  132. }
  133. func Sms(c *gin.Context) {
  134. var args md.SmsReq
  135. if err := c.ShouldBindJSON(&args); err != nil {
  136. e.OutErr(c, e.ERR_INVALID_ARGS)
  137. return
  138. }
  139. mobile, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone)
  140. if mobile == nil {
  141. e.OutErr(c, 400, e.NewErr(400, "用户未注册"))
  142. return
  143. }
  144. if mobile.Level != 2 && mobile.Level != 3 {
  145. e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台"))
  146. return
  147. }
  148. if c.GetString("sms_type") != "2" {
  149. count := sms.SmsNumGetSmsNum(db.Db, "putong", c.GetString("mid"))
  150. if count-3 < 0 {
  151. e.OutErr(c, e.ERR_MOB_SMS_NO_AVA, nil)
  152. return
  153. }
  154. }
  155. appName := svc.SysCfgGet(c, "sms_push_sign")
  156. captcha := utils.CreateCaptcha()
  157. content := fmt.Sprintf("【%s】验证码:%s", appName, captcha)
  158. marshal, _ := json.Marshal(c.Request.Header)
  159. waykeys := "app_" + c.ClientIP() + "_" + utils.IntToStr(utils.GetApiVersion(c)) + "_" + c.Request.RequestURI + "_" + string(marshal)
  160. postData := map[string]interface{}{
  161. "content": content,
  162. "mobile": args.Phone,
  163. "templateCode": "normal",
  164. "way": php2go.Base64Encode(waykeys),
  165. }
  166. err := sms2.GetSmsConfig(c, "86", postData, "")
  167. if err != nil {
  168. e.OutErr(c, 400, e.NewErr(400000, err.Error()))
  169. return
  170. }
  171. tip := "验证码已发送,5分钟内有效"
  172. e.OutSuc(c, tip, nil)
  173. return
  174. }
  175. func ChangePwd(c *gin.Context) {
  176. var args md.RegisterReq
  177. if err := c.ShouldBindJSON(&args); err != nil {
  178. e.OutErr(c, e.ERR_INVALID_ARGS)
  179. return
  180. }
  181. mob1, errr := mob.GetMobSDK(c.GetString("mid"))
  182. if errr != nil {
  183. e.OutErr(c, e.ERR_MOB_CONFIG, errr)
  184. return
  185. }
  186. send := map[string]interface{}{
  187. "phone": args.Phone,
  188. "zone": "86",
  189. "code": args.Captcha,
  190. }
  191. var ok bool
  192. // h5(wap) 登录
  193. var err error
  194. if svc.SysCfgGet(c, "sms_send_type") == "2" {
  195. code := svc.SysCfgGet(c, "sms_send_code")
  196. if code != args.Captcha {
  197. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  198. return
  199. }
  200. ok = true
  201. cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone)
  202. } else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" {
  203. code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone)
  204. if code != args.Captcha {
  205. e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试"))
  206. return
  207. }
  208. cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone)
  209. ok = true
  210. } else {
  211. ok, err = mob1.MobSMS(c, send)
  212. if err != nil {
  213. e.OutErr(c, 400, err.Error())
  214. return
  215. }
  216. }
  217. if ok == false {
  218. // 验证码无效或者过期,验证码错误
  219. e.OutErr(c, e.ERR_SMS_AUTH, nil)
  220. return
  221. }
  222. NewCampTaskStoreUserDb := implement.NewCampTaskStoreUserDb(svc.MasterDb(c))
  223. user, _ := NewCampTaskStoreUserDb.GetCampTaskStoreUserByPhone(args.Phone)
  224. if user == nil {
  225. e.OutErr(c, 400, e.NewErr(400, "用户不存在"))
  226. return
  227. }
  228. user.Password = utils.Md5(args.Password)
  229. update, _ := svc.MasterDb(c).Where("id=?", user.Id).Cols("password").Update(user)
  230. if update == 0 {
  231. e.OutErr(c, 400, e.NewErr(400, "修改失败"))
  232. return
  233. }
  234. e.OutSuc(c, "success", nil)
  235. return
  236. }