调整奖励接口
This commit is contained in:
@ -17,7 +17,6 @@ type sReward struct{}
|
||||
|
||||
func init() {
|
||||
service.RegisterReward(New())
|
||||
service.RegisterReward(New())
|
||||
}
|
||||
|
||||
func New() service.IReward {
|
||||
@ -75,21 +74,26 @@ func (s *sReward) Create(ctx context.Context, in *model.RewardCreateIn) (out *mo
|
||||
}
|
||||
|
||||
// 创建奖励
|
||||
id, err := dao.Rewards.Ctx(ctx).Data(do.Rewards{
|
||||
RewardTypeId: in.RewardTypeId,
|
||||
Name: in.Name,
|
||||
StoreId: in.StoreId,
|
||||
Status: in.Status,
|
||||
ValidFrom: in.ValidFrom,
|
||||
ValidTo: in.ValidTo,
|
||||
ExpireType: in.ExpireType,
|
||||
ExpireDays: in.ExpireDays,
|
||||
}).OmitEmptyData().InsertAndGetId()
|
||||
_, err = dao.Rewards.Ctx(ctx).Data(do.Rewards{
|
||||
StoreId: in.StoreId,
|
||||
Name: in.Name,
|
||||
RewardTypeId: in.RewardTypeId,
|
||||
ImageUrl: in.Img,
|
||||
QqGoodsId: in.QQGoodsId,
|
||||
QqGoodsIdStr: in.QQGoodsIdStr,
|
||||
Status: in.Status,
|
||||
ValidFrom: in.ValidFrom,
|
||||
ValidTo: in.ValidTo,
|
||||
ExpireType: in.ExpireType,
|
||||
ExpireDays: in.ExpireDays,
|
||||
DailyTotalLimit: in.DailyTotalLimit,
|
||||
}).OmitEmptyData().Insert()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.RewardCreateOut{Id: id}, nil
|
||||
return &model.RewardCreateOut{Success: true}, nil
|
||||
}
|
||||
|
||||
// Update 更新奖励
|
||||
@ -105,6 +109,11 @@ func (s *sReward) Update(ctx context.Context, in *model.RewardUpdateIn) (out *mo
|
||||
return nil, ecode.Params.Sub("奖励不存在")
|
||||
}
|
||||
|
||||
// 系统奖励(source=1)只能由管理员修改
|
||||
if in.Source == 1 && in.OperatorRole != consts.AdminRoleCode {
|
||||
return nil, ecode.Params.Sub("只有管理员可以修改系统奖励")
|
||||
}
|
||||
|
||||
storeId := data[dao.Rewards.Columns().StoreId].Int64()
|
||||
|
||||
// 权限校验(管理员跳过)
|
||||
@ -154,12 +163,22 @@ func (s *sReward) Update(ctx context.Context, in *model.RewardUpdateIn) (out *mo
|
||||
_, err = dao.Rewards.Ctx(ctx).
|
||||
Where(do.Rewards{Id: in.Id}).
|
||||
Data(do.Rewards{
|
||||
Name: in.Name,
|
||||
Status: in.Status,
|
||||
ValidFrom: in.ValidFrom,
|
||||
ValidTo: in.ValidTo,
|
||||
ExpireType: in.ExpireType,
|
||||
ExpireDays: in.ExpireDays,
|
||||
Name: in.Name,
|
||||
RewardTypeId: in.RewardTypeId,
|
||||
GameId: in.GameId,
|
||||
ImageUrl: in.Img,
|
||||
QqGoodsId: in.QQGoodsId,
|
||||
QqGoodsIdStr: in.QQGoodsIdStr,
|
||||
Status: in.Status,
|
||||
ValidFrom: in.ValidFrom,
|
||||
ValidTo: in.ValidTo,
|
||||
ExpireType: in.ExpireType,
|
||||
ExpireDays: in.ExpireDays,
|
||||
DailyTotalLimit: in.DailyTotalLimit,
|
||||
TotalLimit: in.TotalLimit,
|
||||
UserDailyLimit: in.UserDailyLimit,
|
||||
UserTotalLimit: in.UserTotalLimit,
|
||||
GrantQuantity: in.GrantQuantity,
|
||||
}).OmitEmptyData().Update()
|
||||
|
||||
if err != nil {
|
||||
@ -186,7 +205,7 @@ func (s *sReward) Update(ctx context.Context, in *model.RewardUpdateIn) (out *mo
|
||||
// Delete 删除奖励
|
||||
func (s *sReward) Delete(ctx context.Context, in *model.RewardDeleteIn) (out *model.RewardDeleteOut, err error) {
|
||||
data, err := dao.Rewards.Ctx(ctx).
|
||||
Fields("id", "source", "store_id").
|
||||
Fields("id", "store_id").
|
||||
Where(do.Rewards{Id: in.Id}).One()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("查询奖励失败")
|
||||
@ -195,7 +214,7 @@ func (s *sReward) Delete(ctx context.Context, in *model.RewardDeleteIn) (out *mo
|
||||
return nil, ecode.Params.Sub("奖励不存在")
|
||||
}
|
||||
|
||||
if data["source"].Int() == 1 && in.OperatorRole != consts.AdminRoleCode {
|
||||
if in.Source == 1 && in.OperatorRole != consts.AdminRoleCode {
|
||||
return nil, ecode.Params.Sub("只有管理员可以删除系统奖励")
|
||||
}
|
||||
|
||||
@ -234,15 +253,111 @@ func (s *sReward) Delete(ctx context.Context, in *model.RewardDeleteIn) (out *mo
|
||||
}
|
||||
|
||||
// List 奖励列表
|
||||
|
||||
func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) {
|
||||
|
||||
return nil, nil
|
||||
rewardCols := dao.Rewards.Columns()
|
||||
rewardTypeCols := dao.RewardTypes.Columns()
|
||||
rewardTypeIds := make([]int64, 0)
|
||||
// ==== 权限校验 ====
|
||||
switch in.OperatorRole {
|
||||
case consts.AdminRoleCode:
|
||||
// 系统管理员只能查询 source = 1 的奖励
|
||||
array, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Source: 1}).Fields(rewardTypeCols.Id).Array()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("获取奖励类型列表失败")
|
||||
}
|
||||
for _, value := range array {
|
||||
rewardTypeIds = append(rewardTypeIds, value.Int64())
|
||||
}
|
||||
|
||||
case consts.MerchantRoleCode, consts.StoreRoleCode:
|
||||
// 合并商户和门店角色权限校验
|
||||
var exist bool
|
||||
if in.OperatorRole == consts.MerchantRoleCode {
|
||||
exist, err = dao.MerchantAdmins.Ctx(ctx).
|
||||
Where(do.MerchantAdmins{Id: in.OperatorId}).
|
||||
LeftJoin(
|
||||
dao.Stores.Table(),
|
||||
fmt.Sprintf("%s.%s = %s.%s",
|
||||
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()
|
||||
} else {
|
||||
exist, err = dao.StoreAdmins.Ctx(ctx).
|
||||
Where(do.StoreAdmins{Id: in.OperatorId}).
|
||||
LeftJoin(
|
||||
dao.Stores.Table(),
|
||||
fmt.Sprintf("%s.%s = %s.%s",
|
||||
dao.StoreAdmins.Table(), dao.StoreAdmins.Columns().StoreId,
|
||||
dao.Stores.Table(), dao.Stores.Columns().Id,
|
||||
),
|
||||
).
|
||||
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("无门店权限")
|
||||
}
|
||||
|
||||
//
|
||||
array, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Source: 1}).Fields(rewardTypeCols.Id).Array()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("获取奖励类型列表失败")
|
||||
}
|
||||
for _, value := range array {
|
||||
rewardTypeIds = append(rewardTypeIds, value.Int64())
|
||||
}
|
||||
default:
|
||||
return nil, ecode.Params.Sub("无效的角色")
|
||||
}
|
||||
|
||||
orm := dao.Rewards.Ctx(ctx).WhereIn(dao.Rewards.Columns().RewardTypeId, rewardTypeIds)
|
||||
// ==== 其他查询条件 ====
|
||||
if in.Status != 0 {
|
||||
orm = orm.Where(fmt.Sprintf("%s.%s = ?", dao.Rewards.Table(), rewardCols.Status), in.Status)
|
||||
}
|
||||
if in.RewardTypeId != 0 {
|
||||
// 确保 reward_type_id 过滤独立应用
|
||||
orm = orm.Where(fmt.Sprintf("%s.%s = ?", dao.Rewards.Table(), rewardCols.RewardTypeId), in.RewardTypeId)
|
||||
}
|
||||
if in.Name != "" {
|
||||
orm = orm.WhereLike(rewardCols.Name, "%"+in.Name+"%")
|
||||
}
|
||||
|
||||
// ==== 总数统计 ====
|
||||
list := make([]model.Reward, 0)
|
||||
var total int
|
||||
err = orm.ScanAndCount(&list, &total, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &model.RewardListOut{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// GetLift 领取奖励
|
||||
func (s *sReward) GetLift(ctx context.Context, in *model.GetRewardIn) (out *model.GetRewardOut, err error) {
|
||||
|
||||
// 遍历奖励类型列表
|
||||
//for _, v := range in.RewradTypeId {
|
||||
// if v > 0 {
|
||||
// // 发背包+兑换
|
||||
//
|
||||
// }
|
||||
// if v > 0 {
|
||||
// // 直接发背包
|
||||
// }
|
||||
//}
|
||||
|
||||
activity, err := gamelife.GetGamelifeClient(ctx).RequestActivity(ctx, &model.QQNetbarActivityIn{PopenId: in.PopenId, ServiceName: consts.GetGift, GiftParam: model.GiftParam{
|
||||
TaskId: in.TaskId,
|
||||
AreaId: in.AreaId,
|
||||
|
||||
Reference in New Issue
Block a user