package service import ( dbSql "database/sql" "strconv" "strings" "crazy-fox-backend-api/config" "crazy-fox-backend-api/model" "crazy-fox-backend-api/repo" jsoniter "github.com/json-iterator/go" "github.com/pkg/errors" ) // fansService 粉丝也配置 type fansService struct{} var FansItemTitle = model.ItemTitle{ Item: "Game", Title: "FansPage", } func (This *fansService) Config() (model.FansConfig, error) { var ( err error Ok bool fansConfig model.FansConfig basicConfig model.TBasicConfig channelConfig model.FansChannelConfig ) if basicConfig, err = repo.Config.GetBasicConf(FansItemTitle); err != nil { if !errors.Is(err, dbSql.ErrNoRows) { // 查询异常 return fansConfig, err } else { // 为空则赋值默认值 fansConfig = model.FansConfig{ OpenChannel: 1, OpenType: 1, ShowType: []int64{}, MaxEveryDay: 3, MaxTotal: 4, ChannelsConfig: map[string]model.FansChannelConfig{}, } } } else { if err = jsoniter.Unmarshal([]byte(basicConfig.Content), &fansConfig); err != nil { return fansConfig, err } } fansChannels := config.FansChannels channelConfigs := make(map[string]model.FansChannelConfig) for i, channel := range fansChannels { // 保证每个渠道都有数据 if channelConfig, Ok = fansConfig.ChannelsConfig[strconv.Itoa(int(i))]; !Ok { channelConfig = model.FansChannelConfig{ DirName: strings.ToLower(channel), BtnAction: "1", Url: "", Language: model.FansLangConfig{ TitleKey: "RECOMMEND." + strings.ToUpper(channel) + ".TITLE", ContentKey: "RECOMMEND." + strings.ToUpper(channel) + ".CONTENT", ButtonKey: "RECOMMEND." + strings.ToUpper(channel) + ".BUTTON", }, } } else { if channelConfig.BtnAction != "1" { channelConfig.BtnAction = "2" } } channelConfigs[strconv.Itoa(int(i))] = channelConfig } fansConfig.ChannelsConfig = channelConfigs return fansConfig, nil } func (This *fansService) Save(fansConf model.FansConfig) error { var ( err error basicConfig model.TBasicConfig ) for k, channelConf := range fansConf.ChannelsConfig { if channelConf.BtnAction == "2" { channelConf.BtnAction = channelConf.Url } fansConf.ChannelsConfig[k] = channelConf } content, err := jsoniter.Marshal(fansConf) if err != nil { return err } basicConfig, err = repo.Config.GetBasicConf(FansItemTitle) if err != nil { // 为空则新增记录 basicConfig = model.TBasicConfig{ Id: 0, ItemTitle: FansItemTitle, Content: string(content), Memo: "粉丝页弹窗配置", } if _, err = repo.Insert(&basicConfig); err != nil { return err } } else { basicConfig.Content = string(content) if err = repo.Config.UpdateBasicConf(basicConfig); err != nil { return err } } if err = Config.SaveJson(fansConf, FansItemTitle.Title); err != nil { return err } return nil }