实现缓存+mqtt设备消息监听

This commit is contained in:
2025-06-26 16:31:43 +08:00
parent 8107b9a719
commit efed64ed9e
9 changed files with 180 additions and 62 deletions

View File

@ -22,6 +22,6 @@ const (
)
const (
NetbarOnlineNumberKey = "%s:online:device:%s"
NetbarOnlineDeviceSetKey = "%s:online_devices"
NetbarOnlineNumberKey = "%s:online_number"
OnlineDeviceSetKey = "online:devices"
)

View File

@ -20,13 +20,11 @@ func (c *ControllerV1) List(ctx context.Context, req *v1.ListReq) (res *v1.ListR
)
out, err := service.RewardType().List(ctx, &model.RewardTypeListIn{
Page: req.Page,
Size: req.Size,
OperatorId: operatorId,
OperatorRole: operatorRole,
StoreId: req.StoreId,
Name: req.Name,
Source: req.Source,
Page: req.Page,
Size: req.Size,
StoreId: req.StoreId,
Name: req.Name,
Source: req.Source,
})
if err != nil {

View File

@ -10,6 +10,11 @@ import (
)
func (c *ControllerV1) GetOnlineDevice(ctx context.Context, req *v1.GetOnlineDeviceReq) (res *v1.GetOnlineDeviceRes, err error) {
card, err := g.Redis().SCard(ctx, fmt.Sprintf(consts.NetbarOnlineDeviceSetKey, req.NetbarAccount))
return &v1.GetOnlineDeviceRes{Total: card}, err
get, err := g.Redis().Get(ctx, fmt.Sprintf(consts.NetbarOnlineNumberKey, req.NetbarAccount))
if err != nil {
return nil, err
}
return &v1.GetOnlineDeviceRes{
Total: get.Int64(),
}, nil
}

View File

@ -107,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+"%")

View File

@ -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
}

View File

@ -385,5 +385,19 @@ func (s *sTask) GetTask(ctx context.Context, in *model.GetTaskIn) (out *model.Ge
}
func (s *sTask) GetUserTaskRecordsList(ctx context.Context, in *model.UserTaskRecordsListIn) (out *model.UserTaskRecordsListOut, err error) {
return
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
}

View File

@ -6,13 +6,13 @@ import (
// RewardType 奖励类型表
type RewardType struct {
Id int64 `json:"id" dc:"奖励类型ID"`
Name string `json:"name" dc:"奖励类型名称(如积分、优惠券)"`
TencentTypeId int `json:"tencentTypeId" dc:"腾讯奖励类型ID仅系统奖励有效"`
Source int `json:"source" dc:"来源1=腾讯系统2=本系统3=其他"`
CreatedAt *gtime.Time `json:"createdAt" dc:"创建时间"`
UpdatedAt *gtime.Time `json:"updatedAt" dc:"更新时间"`
DeletedAt *gtime.Time `json:"deletedAt" dc:"软删除时间"`
Id int64 `json:"id" orm:"id" description:"奖励类型ID"` // 奖励类型ID
Name string `json:"name" orm:"name" description:"类型名称"` // 类型名称
Code string `json:"code" orm:"code" description:"唯一编码"` // 唯一编码
IconUrl string `json:"iconUrl" orm:"icon_url" description:"图标链接地址"` // 图标链接地址
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` // 创建时间
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` // 更新时间
DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"软删除时间"` // 软删除时间
}
// RewardTypeCreateIn 创建奖励类型入参
@ -59,14 +59,12 @@ type RewardTypeDeleteOut struct {
// RewardTypeListIn 获取奖励类型列表入参
type RewardTypeListIn struct {
OperatorId int64
OperatorRole string
Page int
Size int
Name string
StoreId int64
Status int
Source int
Page int
Size int
Name string
StoreId int64
Status int
Source int
}
// RewardTypeListOut 获取奖励类型列表出参

View File

@ -4,7 +4,7 @@ import (
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
_ "server/utility/gamelife"
//_ "server/utility/mqtt/emqx"
_ "server/utility/mqtt/emqx"
_ "server/utility/myCasbin"
_ "server/utility/oss/aliyun"
_ "server/utility/rsa"