You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.0 KiB
127 lines
4.0 KiB
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
|
|
}
|
|
|