package service import ( "bkb-seller/global" "bkb-seller/model" "bkb-seller/utils" "errors" uuid "github.com/satori/go.uuid" "gorm.io/gorm" ) func LoginByPhone(u *model.User) (err error, userInter *model.User) { var ( user model.User authorities []model.SysAuthority ) err = global.MG_DB.Model(&model.User{}).Where("phone_code = ? AND phone = ? and appid=? and type=?", u.PhoneCode, u.Phone, u.Appid, "seller").First(&user).Error if err != nil { return errors.New("用户名不存在或者密码错误"), nil } e := Casbin() res := e.GetRolesForUserInDomain(user.UUID.String(), u.Appid) if len(res) > 0 { err = global.MG_DB.Where("authority_id IN ?", res).Find(&authorities).Error } else { err = errors.New("该用户未分配角色") } for _, v := range authorities { if user.AuthorityID == v.AuthorityId { user.Authority = v break } } user.Authorities = authorities return err, &user } func LoginByEmail(u *model.User) (err error, userInter *model.User) { var ( user model.User authorities []model.SysAuthority ) if errors.Is(global.MG_DB.Where("email = ? and appid=? and type=?", u.Email, u.Appid, "seller").First(&user).Error, gorm.ErrRecordNotFound) { // 判断email是否注册 return errors.New("邮箱未注册"), userInter } u.Password = utils.MD5V([]byte(u.Password)) err = global.MG_DB.Where("email = ? AND password = ? and appid=? and type=?", u.Email, u.Password, u.Appid, "seller").First(&user).Error if err != nil { return errors.New("密码错误"), userInter } e := Casbin() res := e.GetRolesForUserInDomain(user.UUID.String(), u.Appid) if len(res) > 0 { err = global.MG_DB.Where("authority_id IN ?", res).Find(&authorities).Error } else { err = errors.New("该用户未分配角色") } for _, v := range authorities { if user.AuthorityID == v.AuthorityId { user.Authority = v break } } user.Authorities = authorities return nil, &user } func Register(u model.User) (err error, userInter model.User) { var user model.User if !errors.Is(global.MG_DB.Where("phone = ? and appid=? and type=?", u.Phone, u.Appid, "seller").First(&user).Error, gorm.ErrRecordNotFound) { // 判断手机号是否注册 return errors.New("手机号已注册"), userInter } if !errors.Is(global.MG_DB.Where("email = ? and appid=? and type=?", u.Email, u.Appid, "seller").First(&user).Error, gorm.ErrRecordNotFound) { // 判断email是否注册 return errors.New("邮箱已注册"), userInter } tx := global.MG_DB.Begin() storeNo := utils.GetUUIDv4() // 附加uuid 密码md5简单加密 注册 u.Password = utils.MD5V([]byte(u.Password)) u.UUID = uuid.NewV4() u.Type = "seller" u.Avatar = "https://minio.sumweal.com/nft/221109/C82M980ZLumQCzt857yxur92iAsGdCc7271sDn8MPf666sk44V.png" u.AuthorityID = 1 u.NickName = "商家用户" u.RelationID = storeNo err = tx.Create(&u).Error if err != nil { tx.Rollback() err = errors.New("注册失败") return err, u } //创建个人店铺 err = tx.Create(&model.SellerStore{StoreNo: storeNo, Type: 1, Email: u.Email, CreateBy: u.UUID.String()}).Error if err != nil { tx.Rollback() err = errors.New("注册失败2") return err, u } var wallet model.Wallet //卖家端钱包userid为店铺编号 wallet.UserID = storeNo wallet.Platform = "seller" err = tx.Model(&model.Wallet{}).Create(&wallet).Error if err != nil { tx.Rollback() err = errors.New("注册失败2") return err, u } tx.Commit() InitSellerRole(u.UUID.String(), "1", u.Appid) return err, u } func RecoverPassword(u model.User) (err error, userInter model.User) { var user model.User if global.MG_DB.Where("email = ?", u.Email).First(&user).Error != nil { // 判断email是否注册 return errors.New("邮箱未注册"), userInter } if global.MG_DB.Where("email = ? AND phone = ?", u.Email, u.Phone).First(&user).Error != nil { // 判断email是否注册 return errors.New("邮箱与手机号不匹配"), userInter } u.Password = utils.MD5V([]byte(u.Password)) err = global.MG_DB.Model(&user).Updates(&u).Error return err, u }