package svc import ( "applet/app/comm/db" "applet/app/comm/e" "applet/app/comm/svc" "applet/app/comm/utils" "applet/app/comm/utils/cache" "applet/app/lib/mob" sms2 "applet/app/lib/sms" "applet/app/operator/md" "code.fnuoos.com/go_rely_warehouse/zyos_go_third_party_api.git/sms" "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" "encoding/json" "fmt" "github.com/gin-gonic/gin" "github.com/syyongx/php2go" ) func Login(c *gin.Context) { var args md.LoginReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) if user == nil { e.OutErr(c, 400, e.NewErr(400, "用户未注册")) return } if user.Password != utils.Md5(args.Password) { e.OutErr(c, 400, e.NewErr(400, "密码错误")) return } if user.Level != 2 && user.Level != 3 { e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) return } // 生成jwt appName := svc.SysCfgGet(c, "app_name") token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "") if err != nil { e.OutErr(c, 400, e.NewErr(400, "用户不存在")) return } key := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) cache.SetEx(key, token, 39528000) // 半年 role := []string{"comm"} if user.Level == 3 { role = append(role, "operator") } res := map[string]interface{}{ "token": token, "role": role, } e.OutSuc(c, res, nil) return } func Register(c *gin.Context, args md.RegisterReq) { user, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) if user == nil { e.OutErr(c, 400, e.NewErr(400, "用户未注册")) return } if user.Level != 2 && user.Level != 3 { e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) return } mob1, errr := mob.GetMobSDK(c.GetString("mid")) if errr != nil { e.OutErr(c, e.ERR_MOB_CONFIG, errr) return } send := map[string]interface{}{ "phone": args.Phone, "zone": "86", "code": args.Captcha, } var ok bool // h5(wap) 登录 var err error if svc.SysCfgGet(c, "sms_send_type") == "2" { code := svc.SysCfgGet(c, "sms_send_code") if code != args.Captcha { e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) return } ok = true cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) } else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" { code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone) if code != args.Captcha { e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) return } cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) ok = true } else { ok, err = mob1.MobSMS(c, send) if err != nil { e.OutErr(c, 400, err.Error()) return } } if ok == false { // 验证码无效或者过期,验证码错误 e.OutErr(c, e.ERR_SMS_AUTH, nil) return } appName := svc.SysCfgGet(c, "app_name") token, err := utils.GenToken(user.Uid, user.Username, user.Phone, appName, "", "") if err != nil { e.OutErr(c, 400, e.NewErr(400, "用户不存在")) return } up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], user.Uid) if err != nil || up == nil { e.OutErr(c, e.ERR_DB_ORM, err) return } up.ArkidToken = token _, err = svc.MasterDb(c).Where("uid=?", up.Uid).Cols("arkid_token").Update(up) if err != nil { e.OutErr(c, 400, e.NewErr(400, "登陆失败")) return } key1 := fmt.Sprintf("%s:token:%s", c.GetString("mid"), user.Username) cache.SetEx(key1, token, 39528000) // 半年 res := map[string]string{ "token": token, } e.OutSuc(c, res, nil) return } func Sms(c *gin.Context) { var args md.SmsReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } mobile, _ := db.UserFindByMobile(svc.MasterDb(c), args.Phone) if mobile == nil { e.OutErr(c, 400, e.NewErr(400, "用户未注册")) return } if mobile.Level != 2 && mobile.Level != 3 { e.OutErr(c, 400, e.NewErr(400, "您没有访问权限,请联系平台")) return } if c.GetString("sms_type") != "2" { count := sms.SmsNumGetSmsNum(db.Db, "putong", c.GetString("mid")) if count-3 < 0 { e.OutErr(c, e.ERR_MOB_SMS_NO_AVA, nil) return } } appName := svc.SysCfgGet(c, "sms_push_sign") captcha := utils.CreateCaptcha() content := fmt.Sprintf("【%s】验证码:%s", appName, captcha) marshal, _ := json.Marshal(c.Request.Header) waykeys := "app_" + c.ClientIP() + "_" + utils.IntToStr(utils.GetApiVersion(c)) + "_" + c.Request.RequestURI + "_" + string(marshal) postData := map[string]interface{}{ "content": content, "mobile": args.Phone, "templateCode": "normal", "way": php2go.Base64Encode(waykeys), } err := sms2.GetSmsConfig(c, "86", postData, "") if err != nil { e.OutErr(c, 400, e.NewErr(400000, err.Error())) return } tip := "验证码已发送,5分钟内有效" e.OutSuc(c, tip, nil) return } func ChangePwd(c *gin.Context) { var args md.RegisterReq if err := c.ShouldBindJSON(&args); err != nil { e.OutErr(c, e.ERR_INVALID_ARGS) return } mob1, errr := mob.GetMobSDK(c.GetString("mid")) if errr != nil { e.OutErr(c, e.ERR_MOB_CONFIG, errr) return } send := map[string]interface{}{ "phone": args.Phone, "zone": "86", "code": args.Captcha, } var ok bool // h5(wap) 登录 var err error if svc.SysCfgGet(c, "sms_send_type") == "2" { code := svc.SysCfgGet(c, "sms_send_code") if code != args.Captcha { e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) return } ok = true cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) } else if c.GetString("sms_type") == "2" || svc.SysCfgGet(c, "sms_send_type") == "1" { code, _ := cache.GetString("sms:" + c.GetString("mid") + ":" + args.Phone) if code != args.Captcha { e.OutErr(c, 400, e.NewErr(400, "验证码错误,请重试")) return } cache.Del("sms:" + c.GetString("mid") + ":" + args.Phone) ok = true } else { ok, err = mob1.MobSMS(c, send) if err != nil { e.OutErr(c, 400, err.Error()) return } } if ok == false { // 验证码无效或者过期,验证码错误 e.OutErr(c, e.ERR_SMS_AUTH, nil) return } NewCampTaskStoreUserDb := implement.NewCampTaskStoreUserDb(svc.MasterDb(c)) user, _ := NewCampTaskStoreUserDb.GetCampTaskStoreUserByPhone(args.Phone) if user == nil { e.OutErr(c, 400, e.NewErr(400, "用户不存在")) return } user.Password = utils.Md5(args.Password) update, _ := svc.MasterDb(c).Where("id=?", user.Id).Cols("password").Update(user) if update == 0 { e.OutErr(c, 400, e.NewErr(400, "修改失败")) return } e.OutSuc(c, "success", nil) return }