首先门店对网费进行 激励设置

This commit is contained in:
2025-07-04 18:24:57 +08:00
parent 2dfe6540ae
commit db9f182226
37 changed files with 486 additions and 395 deletions

View File

@ -2,6 +2,7 @@ package store
import (
"context"
"fmt"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"server/internal/consts"
@ -299,3 +300,77 @@ func (s *sStore) GetStoreMemberList(ctx context.Context, in *model.StoreMemberLe
Total: total,
}, nil
}
func (s *sStore) GetStoreAreaList(ctx context.Context, in *model.StoreAreaListIn) (out *model.StoreAreaListOut, err error) {
// 根据角色权限获取门店ID
switch in.OperatorRole {
case consts.MerchantRoleCode:
exist, err := dao.MerchantAdmins.Ctx(ctx).Where(do.MerchantAdmins{
MerchantId: in.OperatorId,
}).LeftJoin(dao.Stores.Table(), fmt.Sprintf("%s.%s = %s.%s", dao.Stores.Table(), dao.Stores.Columns().MerchantId, dao.MerchantAdmins.Table(), dao.MerchantAdmins.Columns().MerchantId)).Where("stores.id = ?", in.StoreId).Exist()
if err != nil {
return nil, ecode.Fail.Sub("检查商户权限失败")
}
if !exist {
return nil, ecode.Params.Sub("无门店权限")
}
case consts.StoreRoleCode:
// 检查门店管理员是否有该门店权限
value, err := dao.StoreAdmins.Ctx(ctx).WherePri(in.OperatorId).Fields(dao.StoreAdmins.Columns().StoreId).Value()
if err != nil {
return nil, ecode.Fail.Sub("检查门店权限失败")
}
if value.IsEmpty() || value.Int64() != in.StoreId {
return nil, ecode.Params.Sub("无门店权限")
}
default:
return nil, ecode.Params.Sub("无操作权限")
}
out = &model.StoreAreaListOut{}
if err = dao.StoreAreas.Ctx(ctx).Where(do.StoreAreas{StoreId: in.StoreId}).ScanAndCount(&out.List, &out.Total, false); err != nil {
return nil, ecode.Fail.Sub("门店区域列表获取失败")
}
return
}
func (s *sStore) GetNetfeeSetting(ctx context.Context, in *model.GetNetfeeSettingIn) (out *model.StoreNetfeeAreaLevel, err error) {
out = &model.StoreNetfeeAreaLevel{}
one, err := dao.StoreNetfeeAreaLevel.Ctx(ctx).Where(do.StoreNetfeeAreaLevel{StoreId: in.StoreId, RewardId: in.RewardId, AreaId: in.AreaId, MemberLevelId: in.MemberLevelId}).One()
if err != nil {
return nil, ecode.Fail.Sub("门店区域价格获取失败")
}
if one.IsEmpty() {
return
}
if err = one.Struct(out); err != nil {
return nil, ecode.Fail.Sub("门店区域价格获取失败")
}
return
}
func (s *sStore) SaveNetfeeSetting(ctx context.Context, in *model.SaveNetfeeSettingIn) (out *model.SaveNetfeeSettingOut, err error) {
exist, err := dao.StoreNetfeeAreaLevel.Ctx(ctx).Where(do.StoreNetfeeAreaLevel{StoreId: in.StoreId, RewardId: in.RewardId, AreaId: in.AreaId, MemberLevelId: in.MemberLevelId}).Exist()
if err != nil {
return nil, ecode.Fail.Sub("门店区域价格保存失败")
}
if exist {
_, err = dao.StoreNetfeeAreaLevel.Ctx(ctx).Where(do.StoreNetfeeAreaLevel{StoreId: in.StoreId, RewardId: in.RewardId, AreaId: in.AreaId, MemberLevelId: in.MemberLevelId}).
Update(do.StoreNetfeeAreaLevel{PriceData: in.PriceData})
if err != nil {
return nil, ecode.Fail.Sub("门店区域价格保存失败")
}
} else {
_, err = dao.StoreNetfeeAreaLevel.Ctx(ctx).Insert(do.StoreNetfeeAreaLevel{
AreaId: in.AreaId,
MemberLevelId: in.MemberLevelId,
PriceData: in.PriceData,
RewardId: in.RewardId,
StoreId: in.StoreId,
})
if err != nil {
return nil, ecode.Fail.Sub("门店区域价格保存失败")
}
}
return &model.SaveNetfeeSettingOut{
Success: true,
}, nil
}