实现了门店奖励的增删改查

This commit is contained in:
2025-06-17 18:11:27 +08:00
parent 427e70f94e
commit e21353df23
23 changed files with 659 additions and 42 deletions

View File

@ -3,6 +3,7 @@ package reward
import (
"context"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"server/internal/consts"
"server/internal/dao"
"server/internal/model"
@ -89,7 +90,6 @@ func (s *sRewardType) Create(ctx context.Context, in *model.RewardTypeCreateIn)
}, nil
}
// Update 更新奖励类型
// Update 更新奖励类型
func (s *sRewardType) Update(ctx context.Context, in *model.RewardTypeUpdateIn) (out *model.RewardTypeUpdateOut, err error) {
// 查询原始记录,确保存在,并获取 store_id 和 source 字段用于权限判断
@ -257,15 +257,27 @@ func (s *sRewardType) List(ctx context.Context, in *model.RewardTypeListIn) (out
dao.MerchantAdmins.Table(), dao.MerchantAdmins.Columns().MerchantId,
dao.Stores.Table(), dao.Stores.Columns().MerchantId,
),
).Where(fmt.Sprintf("%s.%s = ?", dao.Stores.Table(), dao.Stores.Columns().Id), in.StoreId).Exist()
).Where(
fmt.Sprintf("%s.%s = ?", dao.Stores.Table(), dao.Stores.Columns().Id),
in.StoreId,
).Exist()
if err != nil {
return nil, ecode.Fail.Sub("检查操作者权限出现异常")
}
if !exist {
return nil, ecode.Params.Sub("无门店权限")
}
case consts.StoreRoleCode: // 门店
// 追加限制source = 1 或 store_id = 当前门店
orm = orm.Where(
fmt.Sprintf("%s.%s = ?", dao.RewardTypes.Table(), dao.RewardTypes.Columns().Source),
1,
).WhereOr(
fmt.Sprintf("%s.%s IN (?)", dao.RewardTypes.Table(), dao.RewardTypes.Columns().StoreId),
g.Slice{in.StoreId},
)
case consts.StoreRoleCode:
// 检查门店是否有权限
exist, err := dao.StoreAdmins.Ctx(ctx).
Where(do.StoreAdmins{Id: in.OperatorId}).
@ -285,21 +297,41 @@ func (s *sRewardType) List(ctx context.Context, in *model.RewardTypeListIn) (out
if !exist {
return nil, ecode.Params.Sub("无门店权限")
}
// 追加限制source = 1 或 store_id = 当前门店
orm = orm.Where(
fmt.Sprintf("%s.%s = ?", dao.RewardTypes.Table(), dao.RewardTypes.Columns().Source),
1,
).WhereOr(
fmt.Sprintf("%s.%s IN (?)", dao.RewardTypes.Table(), dao.RewardTypes.Columns().StoreId),
g.Slice{in.StoreId},
)
}
// 其他筛选
if in.Status != 0 {
orm = orm.Where(do.RewardTypes{Status: in.Status})
orm = orm.Where(
fmt.Sprintf("%s.%s = ?", dao.RewardTypes.Table(), dao.RewardTypes.Columns().Status),
in.Status,
)
}
if in.Name != "" {
orm = orm.WhereLike(dao.RewardTypes.Columns().Name, "%"+in.Name+"%")
orm = orm.WhereLike(
fmt.Sprintf("%s.%s", dao.RewardTypes.Table(), dao.RewardTypes.Columns().Name),
"%"+in.Name+"%",
)
}
// 查询总数
count, err := orm.Count()
if err != nil {
return nil, err
}
// 查询结果
err = orm.Page(in.Page, in.Size).OrderAsc(dao.RewardTypes.Columns().Source).Scan(&list)
// 查询分页数据
err = orm.Page(in.Page, in.Size).
OrderAsc(fmt.Sprintf("%s.%s", dao.RewardTypes.Table(), dao.RewardTypes.Columns().Source)).
Scan(&list)
if err != nil {
return nil, err
}