Merge remote-tracking branch 'origin/master'
# Conflicts: # internal/dao/internal/rewards.go # internal/model/do/rewards.go # internal/model/entity/rewards.go
This commit is contained in:
@ -261,20 +261,18 @@ func (s *sReward) Delete(ctx context.Context, in *model.RewardDeleteIn) (out *mo
|
||||
func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model.RewardListOut, err error) {
|
||||
|
||||
rewardCols := dao.Rewards.Columns()
|
||||
rewardTypeCols := dao.RewardTypes.Columns()
|
||||
rewardTypeIds := make([]int64, 0)
|
||||
// ==== 权限校验 ====
|
||||
orm := dao.Rewards.Ctx(ctx).LeftJoin(
|
||||
dao.RewardTypes.Table(),
|
||||
fmt.Sprintf(
|
||||
"%s.%s = %s.%s",
|
||||
dao.Rewards.Table(), dao.Rewards.Columns().RewardTypeId,
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Id,
|
||||
),
|
||||
).Fields(fmt.Sprintf("%s.*,%s.name as reward_type_name", dao.Rewards.Table(), dao.RewardTypes.Table()))
|
||||
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())
|
||||
}
|
||||
|
||||
orm = orm.Where(rewardCols.Source, 1)
|
||||
case consts.MerchantRoleCode, consts.StoreRoleCode:
|
||||
// 合并商户和门店角色权限校验
|
||||
var exist bool
|
||||
@ -309,28 +307,11 @@ func (s *sReward) List(ctx context.Context, in *model.RewardListIn) (out *model.
|
||||
if !exist {
|
||||
return nil, ecode.Params.Sub("无门店权限")
|
||||
}
|
||||
|
||||
//
|
||||
array, err := dao.RewardTypes.Ctx(ctx).Where(do.RewardTypes{Source: 2, StoreId: in.StoreId}).Fields(rewardTypeCols.Id).Array()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("获取奖励类型列表失败")
|
||||
}
|
||||
for _, value := range array {
|
||||
rewardTypeIds = append(rewardTypeIds, value.Int64())
|
||||
}
|
||||
orm = orm.Where(rewardCols.Source, 2)
|
||||
default:
|
||||
return nil, ecode.Params.Sub("无效的角色")
|
||||
}
|
||||
|
||||
orm := dao.Rewards.Ctx(ctx).LeftJoin(
|
||||
dao.RewardTypes.Table(),
|
||||
fmt.Sprintf(
|
||||
"%s.%s = %s.%s",
|
||||
dao.Rewards.Table(), dao.Rewards.Columns().RewardTypeId,
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Id,
|
||||
),
|
||||
).Fields(fmt.Sprintf("%s.*,%s.name as reward_type_name", dao.Rewards.Table(), dao.RewardTypes.Table())).
|
||||
WhereIn(dao.Rewards.Columns().RewardTypeId, rewardTypeIds)
|
||||
// ==== 其他查询条件 ====
|
||||
if in.Status != 0 {
|
||||
orm = orm.Where(fmt.Sprintf("%s.%s = ?", dao.Rewards.Table(), rewardCols.Status), in.Status)
|
||||
|
||||
@ -32,10 +32,7 @@ func (s *sRewardType) Create(ctx context.Context, in *model.RewardTypeCreateIn)
|
||||
}
|
||||
|
||||
data := do.RewardTypes{
|
||||
Name: in.Name,
|
||||
Source: in.Source,
|
||||
StoreId: in.StoreId,
|
||||
TencentTypeId: in.TencentTypeId,
|
||||
Name: in.Name,
|
||||
}
|
||||
|
||||
id, err := dao.RewardTypes.Ctx(ctx).OmitEmptyData().Data(data).InsertAndGetId()
|
||||
@ -110,30 +107,6 @@ func (s *sRewardType) Delete(ctx context.Context, in *model.RewardTypeDeleteIn)
|
||||
func (s *sRewardType) List(ctx context.Context, in *model.RewardTypeListIn) (out *model.RewardTypeListOut, err error) {
|
||||
mod := dao.RewardTypes.Ctx(ctx).Where("deleted_at IS NULL")
|
||||
|
||||
switch in.OperatorRole {
|
||||
case consts.AdminRoleCode:
|
||||
// 系统管理员只能看系统奖励类型
|
||||
mod = mod.Where("source", 1)
|
||||
|
||||
case consts.MerchantRoleCode:
|
||||
// 校验商户是否对该门店有权限
|
||||
if err = checkRewardTypePermission(ctx, in.OperatorRole, in.OperatorId, 2, in.StoreId); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 只查询该门店的奖励类型(source=2且store_id=指定门店)
|
||||
mod = mod.Where("source", 2).WhereIn("store_id", in.StoreId)
|
||||
|
||||
case consts.StoreRoleCode:
|
||||
// 校验门店权限
|
||||
if err = checkRewardTypePermission(ctx, in.OperatorRole, in.OperatorId, 2, in.StoreId); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
mod = mod.Where("source", 2).Where("store_id", in.StoreId)
|
||||
|
||||
default:
|
||||
return nil, ecode.Params.Sub("无效的操作角色")
|
||||
}
|
||||
|
||||
// 其余过滤条件
|
||||
if in.Name != "" {
|
||||
mod = mod.WhereLike("name", "%"+in.Name+"%")
|
||||
|
||||
@ -13,17 +13,10 @@ import (
|
||||
)
|
||||
|
||||
type sStoreDesktopSetting struct {
|
||||
mqttCLient mqtt.MqttClient
|
||||
}
|
||||
|
||||
func New() service.IStoreDesktopSetting {
|
||||
client, b := mqtt.GetClient("emqx")
|
||||
if !b {
|
||||
return nil
|
||||
}
|
||||
return &sStoreDesktopSetting{
|
||||
mqttCLient: client,
|
||||
}
|
||||
return &sStoreDesktopSetting{}
|
||||
}
|
||||
func init() {
|
||||
service.RegisterStoreDesktopSetting(New())
|
||||
@ -74,7 +67,11 @@ func (s *sStoreDesktopSetting) Save(ctx context.Context, in model.SaveDesktopSet
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = s.mqttCLient.Publish(fmt.Sprintf("/desktop/%d", in.StoreId), marshal)
|
||||
client, b := mqtt.GetClient("emqx")
|
||||
if !b {
|
||||
return nil, gerror.New("获取MQTT客户端失败")
|
||||
}
|
||||
err = client.Publish(fmt.Sprintf("/desktop/%d", in.StoreId), marshal)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
"github.com/gogf/gf/v2/util/guid"
|
||||
"server/internal/consts"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
@ -189,12 +190,10 @@ func (s *sTask) GetNonLoginTaskList(ctx context.Context, in *model.GetTaskListIn
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Id,
|
||||
dao.Rewards.Table(), dao.Rewards.Columns().RewardTypeId)).
|
||||
Fields(
|
||||
fmt.Sprintf("%s.*, `%s`.`%s` AS %s, `%s`.`%s` AS %s",
|
||||
fmt.Sprintf(
|
||||
"%s.*, `%s`.`%s` AS %s",
|
||||
dao.Rewards.Table(),
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Name,
|
||||
"reward_type_name",
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Source,
|
||||
"reward_type_source",
|
||||
dao.RewardTypes.Table(), dao.RewardTypes.Columns().Name, "reward_type_name",
|
||||
),
|
||||
).Where(dao.TaskRewards.Columns().TaskId, task.TaskID).Scan(&data.Rewards)
|
||||
if err != nil {
|
||||
@ -359,6 +358,7 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
|
||||
return ecode.Fail.Sub("创建用户任务记录失败")
|
||||
}
|
||||
|
||||
snowid.GetSnowClient()
|
||||
// 查询该任务相关联的奖励, 创建对应奖励下发记录id
|
||||
array, err := dao.TaskRewards.Ctx(ctx).Where(do.TaskRewards{TaskId: in.TaskId}).Fields(dao.TaskRewards.Columns().RewardId).Array()
|
||||
if err != nil {
|
||||
@ -366,9 +366,10 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
|
||||
}
|
||||
for _, v := range array {
|
||||
_, err = dao.UserTaskRewards.Ctx(ctx).Data(do.UserTaskRewards{
|
||||
UserTaskId: id,
|
||||
RewardId: v.Int64(),
|
||||
Status: consts.RewardInitStatus,
|
||||
UserTaskId: id,
|
||||
RewardId: v.Int64(),
|
||||
Status: consts.RewardInitStatus,
|
||||
InnerOrderId: fmt.Sprintf("reward%s", guid.S()),
|
||||
}).Insert()
|
||||
if err != nil {
|
||||
return ecode.Fail.Sub("创建用户任务奖励记录失败")
|
||||
@ -382,3 +383,21 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *sTask) GetUserTaskRecordsList(ctx context.Context, in *model.UserTaskRecordsListIn) (out *model.UserTaskRecordsListOut, err error) {
|
||||
list := make([]model.UserTask, 0)
|
||||
var total int
|
||||
orm := dao.UserTasks.Ctx(ctx).Where(dao.UserTasks.Columns().Id, in.UserId)
|
||||
|
||||
if in.StoreId != 0 {
|
||||
orm = orm.Where(dao.UserTasks.Columns().StoreId, in.StoreId)
|
||||
}
|
||||
err = orm.Page(in.Page, in.Size).ScanAndCount(&list, &total, false)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("获取用户任务列表失败")
|
||||
}
|
||||
return &model.UserTaskRecordsListOut{
|
||||
List: list,
|
||||
Total: total,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user