调整表结构
This commit is contained in:
@ -6,7 +6,6 @@ package logic
|
||||
|
||||
import (
|
||||
_ "server/internal/logic/admin"
|
||||
_ "server/internal/logic/menu"
|
||||
_ "server/internal/logic/merchant"
|
||||
_ "server/internal/logic/merchantAdmin"
|
||||
_ "server/internal/logic/rewardType"
|
||||
|
||||
@ -1,189 +0,0 @@
|
||||
package menu
|
||||
|
||||
import (
|
||||
"context"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
"server/internal/model/do"
|
||||
"server/internal/model/entity"
|
||||
"server/internal/service"
|
||||
"server/utility/ecode"
|
||||
)
|
||||
|
||||
type sMenu struct {
|
||||
}
|
||||
|
||||
func New() service.IMenu {
|
||||
return &sMenu{}
|
||||
}
|
||||
|
||||
func init() {
|
||||
service.RegisterMenu(New())
|
||||
}
|
||||
|
||||
// Create 创建菜单
|
||||
func (s *sMenu) Create(ctx context.Context, in *model.MenuCreateInput) (out *model.CreateOut, err error) {
|
||||
// 检查菜单名称是否已存在
|
||||
exist, err := dao.Menus.Ctx(ctx).Where(do.Menus{Name: in.Name}).Exist()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("插入菜单查重出现异常")
|
||||
}
|
||||
if exist {
|
||||
return nil, ecode.Params.Sub("菜单名称已存在")
|
||||
}
|
||||
|
||||
id, err := dao.Menus.Ctx(ctx).InsertAndGetId(do.Menus{
|
||||
ParentId: in.ParentId,
|
||||
Name: in.Name,
|
||||
Path: in.Path,
|
||||
Component: in.Component,
|
||||
Type: in.Type,
|
||||
Icon: in.Icon,
|
||||
Sort: in.Sort,
|
||||
Hidden: in.Hidden,
|
||||
Status: in.Status,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.CreateOut{Id: id}, nil
|
||||
}
|
||||
|
||||
// Delete 删除菜单
|
||||
func (s *sMenu) Delete(ctx context.Context, in *model.MenuDeleteInput) (out *model.DeleteOut, err error) {
|
||||
// 检查是否存在子菜单
|
||||
count, err := dao.Menus.Ctx(ctx).Where(do.Menus{ParentId: in.Id}).Count()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if count > 0 {
|
||||
return nil, ecode.Params.Sub("存在子菜单,请先删除子菜单")
|
||||
}
|
||||
|
||||
// 删除菜单
|
||||
_, err = dao.Menus.Ctx(ctx).Where(do.Menus{Id: in.Id}).Delete()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &model.DeleteOut{}, nil
|
||||
}
|
||||
|
||||
// BatchDelete 批量删除菜单
|
||||
func (s *sMenu) BatchDelete(ctx context.Context, in *model.BatchDeleteIn) (out *model.BatchDeleteOut, err error) {
|
||||
// 检查是否存在子菜单
|
||||
var menus []*entity.Menus
|
||||
err = dao.Menus.Ctx(ctx).WhereIn(dao.Menus.Columns().ParentId, in.Ids).Scan(&menus)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 获取有子菜单的ID
|
||||
hasChildrenIds := make(map[int]bool)
|
||||
for _, menu := range menus {
|
||||
hasChildrenIds[int(menu.ParentId)] = true
|
||||
}
|
||||
|
||||
// 找出可以删除的ID
|
||||
var deletableIds []int
|
||||
var undeletableIds []int
|
||||
for _, id := range in.Ids {
|
||||
if hasChildrenIds[id] {
|
||||
undeletableIds = append(undeletableIds, id)
|
||||
} else {
|
||||
deletableIds = append(deletableIds, id)
|
||||
}
|
||||
}
|
||||
|
||||
// 如果有可删除的ID,执行删除操作
|
||||
if len(deletableIds) > 0 {
|
||||
_, err = dao.Menus.Ctx(ctx).WhereIn(dao.Menus.Columns().Id, deletableIds).Delete()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return &model.BatchDeleteOut{
|
||||
Ids: undeletableIds,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Update 更新菜单
|
||||
func (s *sMenu) Update(ctx context.Context, in *model.MenuUpdateInput) (out *model.UpdateOut, err error) {
|
||||
// 检查菜单是否存在
|
||||
exist, err := dao.Menus.Ctx(ctx).WherePri(in.Id).Exist()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询菜单失败")
|
||||
}
|
||||
if !exist {
|
||||
return nil, ecode.Params.Sub("菜单不存在")
|
||||
}
|
||||
exist, err = dao.Menus.Ctx(ctx).Where(do.Menus{Name: in.Name}).WhereNot(dao.Menus.Columns().Id, in.Id).Exist()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询菜单失败")
|
||||
}
|
||||
if exist {
|
||||
return nil, ecode.Params.Sub("菜单名称已存在")
|
||||
}
|
||||
|
||||
// 更新菜单
|
||||
_, err = dao.Menus.Ctx(ctx).Where(do.Menus{
|
||||
Id: in.Id,
|
||||
}).Update(do.Menus{
|
||||
ParentId: in.ParentId,
|
||||
Name: in.Name,
|
||||
Path: in.Path,
|
||||
Component: in.Component,
|
||||
Type: in.Type,
|
||||
Icon: in.Icon,
|
||||
Sort: in.Sort,
|
||||
Hidden: in.Hidden,
|
||||
Status: in.Status,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.UpdateOut{}, nil
|
||||
}
|
||||
|
||||
// List 获取菜单列表
|
||||
func (s *sMenu) List(ctx context.Context, in *model.MenuListInput) (out *model.MenuListOutput, err error) {
|
||||
m := dao.Menus.Ctx(ctx)
|
||||
|
||||
// 构建查询条件
|
||||
if in.ParentId > 0 {
|
||||
m = m.Where(do.Menus{
|
||||
ParentId: in.ParentId,
|
||||
})
|
||||
}
|
||||
if in.Name != "" {
|
||||
m = m.WhereLike(dao.Menus.Columns().Name, "%"+in.Name+"%")
|
||||
}
|
||||
if in.Path != "" {
|
||||
m = m.WhereLike(dao.Menus.Columns().Path, "%"+in.Path+"%")
|
||||
}
|
||||
if in.Type > 0 {
|
||||
m = m.Where(do.Menus{
|
||||
Type: in.Type,
|
||||
})
|
||||
}
|
||||
if in.Status > 0 {
|
||||
m = m.Where(do.Menus{
|
||||
Status: in.Status,
|
||||
})
|
||||
}
|
||||
|
||||
// 分页查询
|
||||
list := make([]model.Menu, 0)
|
||||
var total int
|
||||
err = m.Page(in.Page, in.Size).OrderAsc(dao.Menus.Columns().Sort).ScanAndCount(&list, &total, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.MenuListOutput{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
@ -17,6 +17,7 @@ import (
|
||||
"server/utility/ecode"
|
||||
utility "server/utility/encrypt"
|
||||
"server/utility/jwt"
|
||||
"server/utility/snowid"
|
||||
)
|
||||
|
||||
type sMerchantAdmin struct {
|
||||
@ -150,8 +151,13 @@ func (s *sMerchantAdmin) Register(ctx context.Context, in *model.MerchantAdminRe
|
||||
}
|
||||
if err = dao.MerchantAdmins.Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) {
|
||||
// 插入商户数据
|
||||
generateCode, err := snowid.GetSnowClient().GenerateMerchantCode()
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("生成商户编号失败")
|
||||
}
|
||||
id, err := tx.Model(dao.Merchants.Table()).Data(do.Merchants{
|
||||
Name: fmt.Sprintf("%s的商铺", in.Username),
|
||||
MerchantCode: generateCode,
|
||||
Name: fmt.Sprintf("%s代理", in.Username),
|
||||
CreatedByType: consts.MerchantRegisterByAdmin,
|
||||
Status: consts.MerchantDisabledStatus,
|
||||
AuditStatus: consts.MerchantPendingReview,
|
||||
|
||||
@ -9,6 +9,7 @@ import (
|
||||
"server/internal/model/do"
|
||||
"server/internal/service"
|
||||
"server/utility/ecode"
|
||||
"server/utility/snowid"
|
||||
)
|
||||
|
||||
type sStore struct {
|
||||
@ -39,21 +40,29 @@ func (s *sStore) Create(ctx context.Context, in *model.StoreCreateIn) (out *mode
|
||||
// 2. 使用事务处理数据插入
|
||||
if err = dao.Stores.Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) {
|
||||
// 2.1 根据商户 id 获取所属的商户
|
||||
value, err := dao.MerchantAdmins.Ctx(ctx).WherePri(in.MerchantAdminId).Fields(dao.MerchantAdmins.Columns().MerchantId).Value()
|
||||
value, err := dao.MerchantAdmins.Ctx(ctx).WherePri(in.OperatorId).Fields(dao.MerchantAdmins.Columns().MerchantId).Value()
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("获取商户ID出现异常")
|
||||
}
|
||||
// 2,2 生成门店的相关信息
|
||||
|
||||
code, err := snowid.GetSnowClient().GenerateStoreCode()
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("生成门店ID出现异常")
|
||||
}
|
||||
// 2.3 插入门店数据
|
||||
id, err := tx.Model(dao.Stores.Table()).Data(do.Stores{
|
||||
MerchantId: value.Int64(),
|
||||
MerchantId: value.Int(),
|
||||
StoreCode: code,
|
||||
Name: in.Name,
|
||||
Address: in.Address,
|
||||
ContactName: in.ContactName,
|
||||
ContactPhone: in.ContactPhone,
|
||||
}).InsertAndGetId()
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("新增门店出现异常")
|
||||
}
|
||||
|
||||
//2.4 生成门店主管理账号
|
||||
// TODO 生成门店主管理账号,密码通知方式
|
||||
|
||||
// 2.5 插入门店管理员数据
|
||||
_, err = tx.Model(dao.StoreAdmins.Table()).Data(do.StoreAdmins{
|
||||
@ -62,11 +71,11 @@ func (s *sStore) Create(ctx context.Context, in *model.StoreCreateIn) (out *mode
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("新增门店管理员出现异常")
|
||||
}
|
||||
out.Id = id
|
||||
return nil
|
||||
}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@ -98,6 +98,9 @@ func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.Us
|
||||
}
|
||||
return
|
||||
}
|
||||
func (s *sUser) WeChatLogin(ctx context.Context, in *model.WeChatLogin) (out *model.WeChatLoginOut, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (s *sUser) Info(ctx context.Context, in *model.UserInfoIn) (out *model.UserInfoOut, err error) {
|
||||
exist, err := dao.Users.Ctx(ctx).Where(do.Users{WxOpenId: in.OpenId, Id: in.Id}).OmitEmptyWhere().Exist()
|
||||
|
||||
Reference in New Issue
Block a user