实现门店桌面设置相关配置
This commit is contained in:
@ -15,6 +15,7 @@ import (
|
||||
_ "server/internal/logic/role"
|
||||
_ "server/internal/logic/store"
|
||||
_ "server/internal/logic/storeAdmin"
|
||||
_ "server/internal/logic/storeDesktopSetting"
|
||||
_ "server/internal/logic/storeRole"
|
||||
_ "server/internal/logic/storeTaskReward"
|
||||
_ "server/internal/logic/task"
|
||||
|
||||
@ -173,57 +173,3 @@ func (s *sStore) GetDesktopSetting(ctx context.Context, in *model.StoreGetDeskto
|
||||
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (s *sStore) SaveDesktopSetting(ctx context.Context, in *model.SaveDesktopSettingIn) (*model.SaveDesktopSettingOut, error) {
|
||||
out := &model.SaveDesktopSettingOut{}
|
||||
err := dao.StoreDesktopSettings.Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
|
||||
// 构建数据,包含所有字段
|
||||
data := do.StoreDesktopSettings{
|
||||
Id: in.Id,
|
||||
StoreId: in.StoreId,
|
||||
BackgroundUrl: in.BackgroundUrl,
|
||||
Resolution: in.Resolution,
|
||||
IsTopWidgetVisible: in.IsTopWidgetVisible,
|
||||
IsRightWidgetVisible: in.IsRightWidgetVisible,
|
||||
}
|
||||
|
||||
// 检查记录是否存在(基于 store_id)
|
||||
exist, err := dao.StoreDesktopSettings.Ctx(ctx).TX(tx).Where(do.StoreDesktopSettings{StoreId: in.StoreId}).Count()
|
||||
if err != nil {
|
||||
return gerror.Wrap(ecode.Fail, "检查门店桌面设置失败")
|
||||
}
|
||||
|
||||
if exist == 0 {
|
||||
// 新增
|
||||
result, err := dao.StoreDesktopSettings.Ctx(ctx).TX(tx).Data(data).Insert()
|
||||
if err != nil {
|
||||
return gerror.Wrap(ecode.Fail, "新增门店桌面设置失败")
|
||||
}
|
||||
id, err := result.LastInsertId()
|
||||
if err != nil {
|
||||
return gerror.Wrap(ecode.Fail, "获取新增记录ID失败")
|
||||
}
|
||||
out.Id = id
|
||||
} else {
|
||||
// 更新(如果提供了 Id,则优先使用 Id 作为条件,否则使用 StoreId)
|
||||
updateWhere := do.StoreDesktopSettings{StoreId: in.StoreId}
|
||||
if in.Id > 0 {
|
||||
updateWhere = do.StoreDesktopSettings{Id: in.Id}
|
||||
}
|
||||
_, err := dao.StoreDesktopSettings.Ctx(ctx).TX(tx).Data(data).Where(updateWhere).Update()
|
||||
if err != nil {
|
||||
return gerror.Wrap(ecode.Fail, "更新门店桌面设置失败")
|
||||
}
|
||||
id, err := dao.StoreDesktopSettings.Ctx(ctx).TX(tx).Where(updateWhere).Fields(dao.StoreDesktopSettings.Columns().Id).Value()
|
||||
if err != nil {
|
||||
return gerror.Wrap(ecode.Fail, "获取更新记录ID失败")
|
||||
}
|
||||
out.Id = id.Int64()
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
66
internal/logic/storeDesktopSetting/storeDesktopSetting.go
Normal file
66
internal/logic/storeDesktopSetting/storeDesktopSetting.go
Normal file
@ -0,0 +1,66 @@
|
||||
package storeDesktopSetting
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"server/internal/dao"
|
||||
"server/internal/model"
|
||||
"server/internal/model/do"
|
||||
"server/internal/service"
|
||||
)
|
||||
|
||||
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
|
||||
}
|
||||
return &model.SaveDesktopSettingOut{
|
||||
Success: true,
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user