广告平台(站长下代理使用)
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

hdl_login.go 6.4 KiB

1ヶ月前
1日前
1ヶ月前
1ヶ月前
4週間前
1ヶ月前
4週間前
1ヶ月前
1日前
1ヶ月前
1ヶ月前
1ヶ月前
1ヶ月前
1ヶ月前
1ヶ月前
1ヶ月前
1ヶ月前
4週間前
4週間前
4週間前
4週間前
4週間前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. package hdl
  2. import (
  3. implement3 "applet/app/db/implement"
  4. "applet/app/e"
  5. "applet/app/lib/validate"
  6. "applet/app/md"
  7. "applet/app/svc"
  8. "applet/app/utils"
  9. db "code.fnuoos.com/zhimeng/model.git/src"
  10. "code.fnuoos.com/zhimeng/model.git/src/implement"
  11. model2 "code.fnuoos.com/zhimeng/model.git/src/model"
  12. implement2 "code.fnuoos.com/zhimeng/model.git/src/super/implement"
  13. "code.fnuoos.com/zhimeng/model.git/src/super/model"
  14. "fmt"
  15. "github.com/gin-gonic/gin"
  16. "time"
  17. )
  18. func LoginBase(c *gin.Context) {
  19. NewSysCfgDb := implement3.NewSysCfgDb(svc.MasterDb(c), c.GetString("mid"))
  20. logo := NewSysCfgDb.SysCfgGetWithDb("agent_logo")
  21. res := map[string]string{
  22. "logo": logo,
  23. }
  24. e.OutSuc(c, res, nil)
  25. return
  26. }
  27. // Login 登陆
  28. // @Summary 登陆
  29. // @Tags ADMIN
  30. // @Description 登入
  31. // @Accept json
  32. // @Produce json
  33. // @Param req body md.LoginReq true "用户名密码"
  34. // @Success 200 {object} md.LoginResponse "token"
  35. // @Failure 400 {object} md.Response "具体错误"
  36. // @Router /api/login [post]
  37. func Login(c *gin.Context) {
  38. var req md.LoginReq
  39. err := c.ShouldBindJSON(&req)
  40. if err != nil {
  41. err = validate.HandleValidateErr(err)
  42. err1 := err.(e.E)
  43. e.OutErr(c, err1.Code, err1.Error())
  44. return
  45. }
  46. engine := db.DBs[svc.GetMasterId(c)]
  47. adminDb := implement.NewAgentDb(engine)
  48. admin, err := adminDb.GetAgentByUsername(req.UserName)
  49. if err != nil {
  50. e.OutErr(c, e.ERR_DB_ORM, err)
  51. return
  52. }
  53. if admin == nil {
  54. e.OutErr(c, e.ERR_NO_DATA, "账号不存在!")
  55. return
  56. }
  57. if utils.Md5(req.PassWord) != admin.Password {
  58. e.OutErr(c, e.ERR_INVALID_ARGS, "密码错误")
  59. return
  60. }
  61. ip := utils.GetIP(c.Request)
  62. key := fmt.Sprintf(md.JwtTokenKey, ip, utils.AnyToString(admin.Id))
  63. token, err := svc.HandleLoginToken(key, admin)
  64. if err != nil {
  65. e.OutErr(c, e.ERR, err.Error())
  66. return
  67. }
  68. e.OutSuc(c, md.LoginResponse{
  69. Token: token,
  70. }, nil)
  71. return
  72. }
  73. // LoginPhone 手机号登陆
  74. // @Summary 手机号登陆
  75. // @Tags ADMIN
  76. // @Description 手机号登入
  77. // @Accept json
  78. // @Produce json
  79. // @Param req body md.LoginPhoneReq true "用户名、验证码"
  80. // @Success 200 {object} md.LoginResponse "token"
  81. // @Failure 400 {object} md.Response "具体错误"
  82. // @Router /api/login/phone [post]
  83. func LoginPhone(c *gin.Context) {
  84. var req md.LoginPhoneReq
  85. err := c.ShouldBindJSON(&req)
  86. if err != nil {
  87. err = validate.HandleValidateErr(err)
  88. err1 := err.(e.E)
  89. e.OutErr(c, err1.Code, err1.Error())
  90. return
  91. }
  92. engine := db.DBs[svc.GetMasterId(c)]
  93. check, err := svc.SmsCheck(c, req.UserName, req.Captcha)
  94. if check == false {
  95. e.OutErr(c, 400, e.NewErr(400, err.Error()))
  96. return
  97. }
  98. adminDb := implement.NewAgentDb(engine)
  99. admin, err := adminDb.GetAgentByUsername(req.UserName)
  100. if err != nil {
  101. e.OutErr(c, e.ERR_DB_ORM, err)
  102. return
  103. }
  104. if admin == nil {
  105. e.OutErr(c, e.ERR_NO_DATA, "账号不存在!")
  106. return
  107. }
  108. ip := utils.GetIP(c.Request)
  109. key := fmt.Sprintf(md.JwtTokenKey, ip, utils.AnyToString(admin.Id))
  110. token, err := svc.HandleLoginToken(key, admin)
  111. if err != nil {
  112. e.OutErr(c, e.ERR, err.Error())
  113. return
  114. }
  115. e.OutSuc(c, md.LoginResponse{
  116. Token: token,
  117. }, nil)
  118. return
  119. }
  120. // Register 手机号注册
  121. // @Summary 手机号注册
  122. // @Tags ADMIN
  123. // @Description 手机号注册
  124. // @Accept json
  125. // @Produce json
  126. // @Param req body md.LoginReq true "用户名、验证码"
  127. // @Success 200 {object} md.LoginResponse "token"
  128. // @Failure 400 {object} md.Response "具体错误"
  129. // @Router /api/login/register [post]
  130. func Register(c *gin.Context) {
  131. var req md.RegisterReq
  132. err := c.ShouldBindJSON(&req)
  133. if err != nil {
  134. err = validate.HandleValidateErr(err)
  135. err1 := err.(e.E)
  136. e.OutErr(c, err1.Code, err1.Error())
  137. return
  138. }
  139. masterId := svc.GetMasterId(c)
  140. engine := db.DBs[svc.GetMasterId(c)]
  141. check, err := svc.SmsCheck(c, req.UserName, req.Captcha)
  142. if check == false {
  143. e.OutErr(c, 400, e.NewErr(400, err.Error()))
  144. return
  145. }
  146. now := time.Now()
  147. //1、判断当前账号是否已存在
  148. agentDb := implement.NewAgentDb(engine)
  149. agent, err := agentDb.GetAgentByUsername(req.UserName)
  150. if err != nil {
  151. e.OutErr(c, e.ERR_DB_ORM, err)
  152. return
  153. }
  154. if agent != nil {
  155. e.OutErr(c, e.ERR_NO_DATA, "账号已存在!")
  156. return
  157. }
  158. //2、生成 agent_list 记录
  159. agentListDb := implement2.NewAgentListDb(db.Db)
  160. agentId := utils.GenerateUniqueRandomNumbers(8)
  161. agentList := model.AgentList{
  162. Uuid: utils.StrToInt(masterId),
  163. AgentId: utils.StrToInt(agentId),
  164. Kind: 1,
  165. CompanyName: "",
  166. CompanyAbbreviation: "",
  167. UnifiedSocialCreditCode: "",
  168. CertificateType: 1,
  169. BusinessLicenseImgUrl: "",
  170. LegalRepresentative: "",
  171. CountryRegionId: 1,
  172. CountryRegion: "",
  173. RegisteredAddressProvinceId: 0,
  174. RegisteredAddressCityId: 0,
  175. RegisteredAddressCountyId: 0,
  176. RegisteredAddress: "",
  177. BusinessLicenseAddress: "",
  178. CertificateValidity: "",
  179. State: 0,
  180. CreateAt: now.Format("2006-01-02 15:04:05"),
  181. UpdateAt: now.Format("2006-01-02 15:04:05"),
  182. }
  183. insertAffected, err := agentListDb.AgentListInsert(&agentList)
  184. if err != nil {
  185. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  186. return
  187. }
  188. if insertAffected <= 0 {
  189. e.OutErr(c, e.ERR_DB_ORM, "生成 记录失败")
  190. return
  191. }
  192. //3、新增 agent 记录
  193. agentModel := model2.Agent{
  194. AgentId: utils.StrToInt(agentId),
  195. Username: req.UserName,
  196. Password: utils.Md5(req.PassWord),
  197. State: 1,
  198. IsSuperAdministrator: 1,
  199. Memo: "",
  200. CreateAt: now.Format("2006-01-02 15:04:05"),
  201. UpdateAt: now.Format("2006-01-02 15:04:05"),
  202. }
  203. insertAffected, err = agentDb.AgentInsert(&agentModel)
  204. if err != nil {
  205. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  206. return
  207. }
  208. if insertAffected <= 0 {
  209. e.OutErr(c, e.ERR_DB_ORM, "新增 记录失败")
  210. return
  211. }
  212. ip := utils.GetIP(c.Request)
  213. key := fmt.Sprintf(md.JwtTokenKey, ip, utils.AnyToString(agentModel.Id))
  214. token, err := svc.HandleLoginToken(key, &agentModel)
  215. if err != nil {
  216. e.OutErr(c, e.ERR, err.Error())
  217. return
  218. }
  219. e.OutSuc(c, md.LoginResponse{
  220. Token: token,
  221. }, nil)
  222. return
  223. }