Files
arenax-server/internal/logic/storeDesktopSetting/storeDesktopSetting.go

83 lines
2.1 KiB
Go

package storeDesktopSetting
import (
"context"
"encoding/json"
"fmt"
"github.com/gogf/gf/v2/errors/gerror"
"server/internal/dao"
"server/internal/model"
"server/internal/model/do"
"server/internal/service"
"server/utility/mqtt"
)
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
}
marshal, err := json.Marshal(in)
if err != nil {
return nil, err
}
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
}
return &model.SaveDesktopSettingOut{
Success: true,
}, nil
}