package controllers import ( "encoding/json" "hongze/hongze_api/models" "hongze/hongze_api/services" "hongze/hongze_api/utils" "strconv" "time" ) //用户 type UserController struct { BaseAuthController } //用户 type UserCommonController struct { BaseCommonController } // @Title 获取用户详情 // @Description 获取用户详情接口 // @Success 200 {object} models.UserDetail // @router /detail [get] func (this *UserController) Detail() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录,用户信息为空" br.Ret = 408 return } item, err := models.GetUserDetailByUserId(user.UserId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "获取信息失败,Err:" + err.Error() return } userPermission, err := services.CheckUserPermission(user.UserId) if err != nil { br.Msg = "获取信息失败" br.ErrMsg = "判断用户权限信息失败,Err:" + err.Error() return } item.UserPermission = userPermission br.Ret = 200 br.Success = true br.Msg = "获取成功" br.Data = item } // @Title 获取短信验证码 // @Description 获取短信验证码接口 // @Param Mobile query string true "手机号码" // @Param AreaNum query string true "地区编码" // @Success Ret=200 获取成功 // @router /getSmsCode [get] func (this *UserCommonController) GetSmsCode() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() mobile := this.GetString("Mobile") if mobile == "" { br.Msg = "请输入手机号" return } areaNum := this.GetString("AreaNum") msgCode := utils.GetRandDigit(4) var result bool if areaNum == "86" || areaNum == "" || areaNum == "0" { result = services.SendSmsCode(mobile, msgCode) } else { result = services.SendSmsCodeGj(mobile, msgCode, areaNum) } //发送成功 if result { item := new(models.MsgCode) item.OpenId = "" item.Code = msgCode item.Mobile = mobile item.ExpiredIn = time.Now().Unix() + 15*60 item.Enabled = 1 err := models.AddMsgCode(item) if err != nil { br.Msg = "发送失败" br.ErrMsg = "发送失败,Err:" + err.Error() return } br.Msg = "发送成功" } else { br.Msg = "发送失败" } br.Ret = 200 br.Success = true } // @Title 校验短信验证码 // @Description 校验短信验证码接口 // @Param request body models.CheckSmsCodeReq true "type json string" // @Success Ret=200 校验成功 // @router /checkSmsCode [post] func (this *UserCommonController) CheckSmsCode() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.CheckSmsCodeReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Mobile == "" { br.Msg = "请输入手机号" br.ErrMsg = "请输入手机号" return } if req.SmsCode == "" { br.Msg = "请输入验证码" br.ErrMsg = "请输入验证码" return } item, err := models.GetMsgCode(req.Mobile, req.SmsCode) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "验证码错误,请重新输入" br.ErrMsg = "校验验证码失败,Err:" + err.Error() return } else { br.Msg = "验证码错误,请重新输入" br.ErrMsg = "校验验证码失败,Err:" + err.Error() return } } if item == nil { br.Msg = "验证码错误,请重新输入" return } br.Ret = 200 br.Success = true br.Msg = "验证码正确" } // @Title 获取邮件验证码 // @Description 获取邮件验证码接口 // @Param Email query string true "手机号码" // @Success Ret=200 获取成功 // @router /getEmailCode [get] func (this *UserCommonController) GetEmailCode() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() email := this.GetString("Email") if email == "" { br.Msg = "请输入邮箱地址" return } if !utils.ValidateEmailFormatat(email) { br.Msg = "邮箱格式错误,请重新输入" return } msgCode := utils.GetRandDigit(4) content := "尊敬的用户:
您好,感谢您使用弘则研究,您正在进行邮箱验证,本次请求的验证码为:" + msgCode + "(为了保障您账号的安全性,请在15分钟内完成验证。)
弘则研究团队
2019年05月11日" title := "弘则研究登陆验证" //发送邮件 result, err := utils.SendEmailByHz(title, content, email) if err != nil { br.Msg = "发送失败" br.ErrMsg = "发送失败,Err:" + err.Error() return } if result { br.Msg = "发送成功" } else { br.Msg = "发送失败" } br.Ret = 200 br.Success = true } // @Title 校验邮箱验证码 // @Description 校验邮箱验证码接口 // @Param request body models.CheckEmailCodeReq true "type json string" // @Success Ret=200 校验成功 // @router /checkEmailCode [post] func (this *UserCommonController) CheckEmailCode() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.CheckEmailCodeReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Email == "" { br.Msg = "请输入手机号" br.ErrMsg = "请输入手机号" return } if req.SmsCode == "" { br.Msg = "请输入验证码" br.ErrMsg = "请输入验证码" return } item, err := models.GetMsgCode(req.Email, req.SmsCode) if err != nil { if err.Error() == utils.ErrNoRow() { br.Msg = "验证码错误,请重新输入" br.ErrMsg = "校验验证码失败,Err:" + err.Error() return } else { br.Msg = "验证码错误,请重新输入" br.ErrMsg = "校验验证码失败,Err:" + err.Error() return } } if item == nil { br.Msg = "验证码错误,请重新输入" return } br.Ret = 200 br.Success = true br.Msg = "验证码正确" } // @Title 登录 // @Description 登录接口 // @Param request body models.LoginReq true "type json string" // @Success 200 {object} models.LoginResp // @router /login [post] func (this *UserCommonController) Login() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.LoginReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "登录成功" } /* //登录 function login() { $openId =$this->request->open_id; if(empty($openId)){ return response()->json(['code'=>'1','msg'=>'参数错误']); } $user = UserModel::getUserByOpenid($openId); if(empty($user)) { return response()->json(['code'=>'40001','msg'=>'请重新登陆']); } $loginTypeStr=''; $userId=$user->user_id; $userData=array( 'company_id'=>1, ); if ($loginType==1){ $mobile = ExpressUtil::checkStringArrayValue('mobile',$request_data); if(!preg_match("/^1\d{10}$/",$mobile)){ return response()->json(['code'=>'3','msg'=>'请输入正确的手机号(1开头的11位数字)']); } app('log')->info("start bindMobile"); $userId=UserModel::bindMobile($openId,$userId,$mobile); $loginTypeStr='MOBILE'; }else if ($loginType==2){ $email = ExpressUtil::checkStringArrayValue('email',$request_data); $preg_email='/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-.])+([a-z]{2,5})$/ims'; if(!preg_match($preg_email,$email)){ return response()->json(['code'=>'4','msg'=>'请输入正确的邮箱']); } $userId=UserModel::bindMobile($openId,$userId,$email); $loginTypeStr='EMAIL'; }else{ return response()->json(['code'=>'5','msg'=>'无效的登录方式']); } //判断是否有权限访问 $userPermission = ExpressUtil::checkUserPermission($userId); SessionModel::addSession($openId,$userId); $session = SessionModel::getSessionByUserId($userId); $rddpAccessToken=$session->access_token; $response = new Response(['code'=>'0','msg'=>'登录成功','data'=>array( 'user_id'=>$userId, 'rddp_access_token'=>$rddpAccessToken, 'user_permission'=>$userPermission, )]); UserModel::editUserFirstLogin($openId); $result=json_encode($response); app('log')->info("login result:".$result); return $response; } */ // @Title 申请试用 // @Description 申请试用接口 // @Param request body models.ApplyReq true "type json string" // @Success 200 {object} models.LoginResp // @router /apply [post] func (this *UserController) Apply() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录" br.Ret = 408 return } var req models.ApplyReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } realName := req.RealName userId := user.UserId if req.ApplyMethod == 2 { if realName == "" { br.Msg = "姓名不能为空!" return } } if realName == "" { realName = user.RealName } err = models.Apply(userId, req.ApplyMethod, user.Mobile, user.Email, req.CompanyName, realName, user.OpenId) if err != nil { br.Msg = "申请失败!" br.ErrMsg = "申请失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "申请成功" } // @Title 是否小套餐客户 // @Description 是否小套餐客户接口 // @Success 200 {object} models.SmallLimitResp // @router /smallLimit [get] func (this *UserController) SmallLimit() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() user := this.User if user == nil { br.Msg = "请登录" br.ErrMsg = "请登录" br.Ret = 408 return } userItem, err := models.GetWxUserItemByUserId(user.UserId) if err != nil { br.Msg = "获取用户信息失败" br.ErrMsg = "获取用户信息失败,Err:" + err.Error() return } if userItem == nil { br.Msg = "获取用户信息失败" br.ErrMsg = "用户信息不存在,UserId:" + strconv.Itoa(user.UserId) return } maxCount, err := models.GetUserIsMaxPermission(userItem.CompanyId) if err != nil { br.Msg = "获取用户信息失败" br.ErrMsg = "判断是否最大客户权限失败,Err:" + err.Error() return } resp := new(models.SmallLimitResp) if maxCount >= 15 { resp.IsMaxPermission = 1 } else { resp.IsMaxPermission = 0 } br.Ret = 200 br.Success = true br.Data = resp } //func init() { // fmt.Println("start") // userPermission, err := services.CheckUserPermission(11602) // fmt.Println(err) // fmt.Println(userPermission) // fmt.Println("end") //}