123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package main
- import (
- "errors"
- "sparrow/pkg/models"
- "sparrow/pkg/rpcs"
- )
- // ErrUserNameExists 用户名已经存在
- var ErrUserNameExists = errors.New("用户名已经存在")
- // ErrPhoneExists 手机号已经存在
- var ErrPhoneExists = errors.New("手机号已经被注册过")
- // ErrEmailExists Email地址已经被注册
- var ErrEmailExists = errors.New("Email地址已经被使用")
- // ErrNameOrPassError 登录失败
- var ErrNameOrPassError = errors.New("用户名或密码不正确")
- // Login 用户登录
- func (r *Registry) Login(args *models.LoginRequest, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- err = db.Where("(user_name = ? or phone = ? or email = ?) AND user_pass = ?",
- args.UserName, args.UserName, args.UserName, mdd(args.Password)).First(&reply).Error
- if err != nil {
- return err
- }
- if reply.ID == 0 {
- return ErrNameOrPassError
- }
- return nil
- }
- // Register 用户注册
- func (r *Registry) Register(args *models.User, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- err = checkUserExists(args.UserName, args.Phone, args.Email)
- if err != nil {
- return err
- }
- args.UserKey, err = r.keygen.GenRandomKey(args.ID)
- if err != nil {
- return err
- }
- args.UserPass = mdd(args.UserPass)
- err = db.Save(args).Error
- if err != nil {
- return err
- }
- reply = args
- return nil
- }
- //ModifyPass 修改密码
- func (r *Registry) ModifyPass(args *rpcs.ArgsUserModifyPass, reply *models.User) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- pass := mdd(args.NewPass)
- oldpass := mdd(args.OldPass)
- var count int
- err = db.Model(&reply).Where(map[string]interface{}{
- "id": args.UserID,
- "user_pass": oldpass,
- }).Update("user_pass", pass).Count(&count).Error
- if err != nil {
- return ErrNameOrPassError
- }
- if count == 0 {
- return ErrNameOrPassError
- }
- return nil
- }
- //SendVerifyCode 发送手机验证码
- //check username, phone or email exists
- func checkUserExists(name, phone, email string) error {
- db, err := getDB()
- if err != nil {
- return err
- }
- reply := &models.User{}
- db.First(reply, map[string]interface{}{"user_name": name})
- if reply.ID != 0 {
- return ErrUserNameExists
- }
- db.First(reply, map[string]interface{}{"phone": phone})
- if reply.ID != 0 {
- return ErrPhoneExists
- }
- db.First(reply, map[string]interface{}{"email": email})
- if reply.ID != 0 {
- return ErrEmailExists
- }
- return nil
- }
|