96 lines
2.5 KiB
Go
96 lines
2.5 KiB
Go
package storeDesktopSetting
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"server/internal/consts"
|
|
"server/internal/dao"
|
|
"server/internal/model"
|
|
"server/internal/model/do"
|
|
"server/internal/service"
|
|
"server/utility/mqtt"
|
|
"server/utility/mqtt/emqx"
|
|
)
|
|
|
|
type sStoreDesktopSetting struct {
|
|
}
|
|
|
|
func New() service.IStoreDesktopSetting {
|
|
return &sStoreDesktopSetting{}
|
|
}
|
|
func init() {
|
|
service.RegisterStoreDesktopSetting(New())
|
|
}
|
|
func (s *sStoreDesktopSetting) Get(ctx context.Context, storeId int64) (out *model.StoreDesktopSettings, err error) {
|
|
value, err := dao.StoreDesktopSettings.Ctx(ctx).Where(do.StoreDesktopSettings{StoreId: storeId}).One()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// 为空创建一条记录,组件都展示;反之返回对应数据
|
|
if value.IsEmpty() {
|
|
out = &model.StoreDesktopSettings{
|
|
RightComponentVisible: 1,
|
|
TopComponentVisible: 1,
|
|
}
|
|
_, err := dao.StoreDesktopSettings.Ctx(ctx).Insert(do.StoreDesktopSettings{
|
|
RightComponentVisible: out.RightComponentVisible,
|
|
StoreId: storeId,
|
|
TopComponentVisible: out.TopComponentVisible,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
} else {
|
|
out = &model.StoreDesktopSettings{}
|
|
err := value.Struct(out)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return out, nil
|
|
}
|
|
}
|
|
|
|
func (s *sStoreDesktopSetting) Save(ctx context.Context, in model.SaveDesktopSettingIn) (out *model.SaveDesktopSettingOut, err error) {
|
|
if in.TopComponentVisible == 2 && in.RightComponentVisible == 2 {
|
|
return nil, gerror.New("请至少选择一个组件")
|
|
}
|
|
|
|
_, err = dao.StoreDesktopSettings.Ctx(ctx).Where(do.StoreDesktopSettings{StoreId: in.StoreId}).Update(do.StoreDesktopSettings{
|
|
RightComponentVisible: in.RightComponentVisible,
|
|
TopComponentVisible: in.TopComponentVisible,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
client, b := mqtt.GetClient("emqx")
|
|
if !b {
|
|
return nil, gerror.New("获取MQTT客户端失败")
|
|
}
|
|
downData := emqx.DownData{
|
|
CMD: consts.CmdDesktopSetting,
|
|
StoreId: int(in.StoreId),
|
|
Data: struct {
|
|
RightComponentVisible int `json:"rightComponentVisible"`
|
|
TopComponentVisible int `json:"topComponentVisible"`
|
|
}{
|
|
RightComponentVisible: in.RightComponentVisible,
|
|
TopComponentVisible: in.TopComponentVisible,
|
|
},
|
|
}
|
|
marshal, err := json.Marshal(downData)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
err = client.Publish(fmt.Sprintf("/%d/down", in.StoreId), marshal)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &model.SaveDesktopSettingOut{
|
|
Success: true,
|
|
}, nil
|
|
}
|