143 lines
4.3 KiB
Go
143 lines
4.3 KiB
Go
package storeTaskReward
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"server/internal/consts"
|
|
"server/internal/dao"
|
|
"server/internal/model"
|
|
"server/internal/model/do"
|
|
"server/internal/service"
|
|
"server/utility/ecode"
|
|
)
|
|
|
|
type sStoreTaskReward struct {
|
|
}
|
|
|
|
func New() service.IStoreTaskReward {
|
|
return &sStoreTaskReward{}
|
|
}
|
|
func init() {
|
|
service.RegisterStoreTaskReward(New())
|
|
}
|
|
func (s *sStoreTaskReward) Create(ctx context.Context, in *model.StoreTaskRewardCreateIn) (out *model.StoreTaskRewardCreateOut, err error) {
|
|
if in.OperatorRole != consts.MerchantRoleCode && in.OperatorRole != consts.StoreRoleCode {
|
|
return nil, ecode.Params.Sub("仅允许商户或门店角色操作")
|
|
}
|
|
|
|
// 检查操作者是否有该门店的操作权限
|
|
switch in.OperatorRole {
|
|
case 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()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("校验商户权限失败")
|
|
}
|
|
if !exist {
|
|
return nil, ecode.Params.Sub("商户无操作该门店权限")
|
|
}
|
|
|
|
case consts.StoreRoleCode:
|
|
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("门店管理员无权限")
|
|
}
|
|
}
|
|
|
|
id, err := dao.StoreTaskRewards.Ctx(ctx).Data(do.StoreTaskRewards{
|
|
StoreId: in.StoreId,
|
|
TaskId: in.TaskId,
|
|
RewardId: in.RewardId,
|
|
}).InsertAndGetId()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("创建门店任务奖励失败, err:" + err.Error())
|
|
}
|
|
return &model.StoreTaskRewardCreateOut{Id: id}, nil
|
|
}
|
|
|
|
func (s *sStoreTaskReward) Delete(ctx context.Context, in *model.StoreTaskRewardDeleteIn) (out *model.StoreTaskRewardDeleteOut, err error) {
|
|
if in.OperatorRole != consts.MerchantRoleCode && in.OperatorRole != consts.StoreRoleCode {
|
|
return nil, ecode.Params.Sub("仅允许商户或门店角色操作")
|
|
}
|
|
|
|
// 检查操作者是否有该门店的操作权限
|
|
value, err := dao.StoreTaskRewards.Ctx(ctx).WherePri(in.Id).Fields(dao.StoreTaskRewards.Columns().StoreId).Value()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("查询门店任务奖励失败, err:" + err.Error())
|
|
}
|
|
if value.IsEmpty() {
|
|
return nil, ecode.Params.Sub("门店任务奖励不存在")
|
|
}
|
|
switch in.OperatorRole {
|
|
case 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), value.Int64()).
|
|
Exist()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("校验商户权限失败")
|
|
}
|
|
if !exist {
|
|
return nil, ecode.Params.Sub("商户无操作该门店权限")
|
|
}
|
|
|
|
case consts.StoreRoleCode:
|
|
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), value.Int64()).
|
|
Exist()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("校验门店权限失败")
|
|
}
|
|
if !exist {
|
|
return nil, ecode.Params.Sub("门店管理员无权限")
|
|
}
|
|
}
|
|
_, err = dao.StoreTaskRewards.Ctx(ctx).WherePri(in.Id).Delete()
|
|
if err != nil {
|
|
return nil, ecode.Fail.Sub("删除门店任务奖励失败")
|
|
}
|
|
|
|
return &model.StoreTaskRewardDeleteOut{Success: true}, nil
|
|
}
|