修改上下文参数传递,实现门店登录
This commit is contained in:
93
internal/logic/storeAdmin/storeAdmin.go
Normal file
93
internal/logic/storeAdmin/storeAdmin.go
Normal file
@ -0,0 +1,93 @@
|
||||
package storeAdmin
|
||||
|
||||
import (
|
||||
"context"
|
||||
"server/internal/consts"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
"server/internal/model/do"
|
||||
"server/internal/model/entity"
|
||||
"server/internal/service"
|
||||
"server/utility/ecode"
|
||||
utility "server/utility/encrypt"
|
||||
"server/utility/jwt"
|
||||
)
|
||||
|
||||
type sStoreAdmin struct {
|
||||
}
|
||||
|
||||
func New() service.IStoreAdmin {
|
||||
return &sStoreAdmin{}
|
||||
}
|
||||
|
||||
func init() {
|
||||
service.RegisterStoreAdmin(New())
|
||||
go checkStoreAdminRole()
|
||||
}
|
||||
|
||||
func checkStoreAdminRole() {
|
||||
ctx := context.Background()
|
||||
exist, err := dao.Roles.Ctx(ctx).Where(do.Roles{Code: consts.StoreRoleCode}).Exist()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !exist {
|
||||
_, err = dao.Roles.Ctx(ctx).Insert(do.Roles{
|
||||
Name: "门店管理员",
|
||||
Code: consts.StoreRoleCode,
|
||||
Description: "门店管理员角色",
|
||||
Status: consts.StoreAdminEnable,
|
||||
IsDeletable: false,
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *sStoreAdmin) Login(ctx context.Context, in *model.StoreAdminLoginIn) (out *model.StoreAdminLoginOut, err error) {
|
||||
one, err := dao.StoreAdmins.Ctx(ctx).Where(do.StoreAdmins{Username: in.Username}).One()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询商户管理员失败")
|
||||
}
|
||||
if one.IsEmpty() {
|
||||
return nil, ecode.Params.Sub("该用户不存在")
|
||||
}
|
||||
if one[dao.StoreAdmins.Columns().Status].Int() == consts.StoreAdminDisable {
|
||||
return nil, ecode.Params.Sub("该用户已被禁用")
|
||||
}
|
||||
if !utility.ComparePassword(one[dao.StoreAdmins.Columns().PasswordHash].String(), in.Password) {
|
||||
return nil, ecode.Params.Sub("密码错误")
|
||||
}
|
||||
value, err := dao.Roles.Ctx(ctx).WherePri(one[dao.StoreAdmins.Columns().RoleId].Int()).Fields(dao.Roles.Columns().Code).Value()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询角色失败")
|
||||
}
|
||||
|
||||
token, err := jwt.GenerateToken(&jwt.TokenIn{UserId: one[dao.StoreAdmins.Columns().Id].Int64(), Role: value.String()})
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("生成token失败")
|
||||
}
|
||||
out = &model.StoreAdminLoginOut{
|
||||
Token: token,
|
||||
}
|
||||
return
|
||||
}
|
||||
func (s *sStoreAdmin) Info(ctx context.Context, in *model.StoreAdminInfoIn) (out *model.StoreAdminInfoOut, err error) {
|
||||
exist, err := dao.StoreAdmins.Ctx(ctx).WherePri(in.StoreAdminId).Exist()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询门店管理员失败")
|
||||
}
|
||||
if !exist {
|
||||
return nil, ecode.Params.Sub("该用户不存在")
|
||||
}
|
||||
var storeAdmin entity.StoreAdmins
|
||||
err = dao.StoreAdmins.Ctx(ctx).WherePri(in.StoreAdminId).Scan(&storeAdmin)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询门店管理员失败")
|
||||
}
|
||||
out = &model.StoreAdminInfoOut{
|
||||
Username: storeAdmin.Username,
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user