fans.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package service
  2. import (
  3. dbSql "database/sql"
  4. "strconv"
  5. "strings"
  6. "crazy-fox-backend-api/config"
  7. "crazy-fox-backend-api/model"
  8. "crazy-fox-backend-api/repo"
  9. jsoniter "github.com/json-iterator/go"
  10. "github.com/pkg/errors"
  11. )
  12. // fansService 粉丝也配置
  13. type fansService struct{}
  14. var FansItemTitle = model.ItemTitle{
  15. Item: "Game",
  16. Title: "FansPage",
  17. }
  18. func (This *fansService) Config() (model.FansConfig, error) {
  19. var (
  20. err error
  21. Ok bool
  22. fansConfig model.FansConfig
  23. basicConfig model.TBasicConfig
  24. channelConfig model.FansChannelConfig
  25. )
  26. if basicConfig, err = repo.Config.GetBasicConf(FansItemTitle); err != nil {
  27. if !errors.Is(err, dbSql.ErrNoRows) { // 查询异常
  28. return fansConfig, err
  29. } else { // 为空则赋值默认值
  30. fansConfig = model.FansConfig{
  31. OpenChannel: 1,
  32. OpenType: 1,
  33. ShowType: []int64{},
  34. MaxEveryDay: 3,
  35. MaxTotal: 4,
  36. ChannelsConfig: map[string]model.FansChannelConfig{},
  37. }
  38. }
  39. } else {
  40. if err = jsoniter.Unmarshal([]byte(basicConfig.Content), &fansConfig); err != nil {
  41. return fansConfig, err
  42. }
  43. }
  44. fansChannels := config.FansChannels
  45. channelConfigs := make(map[string]model.FansChannelConfig)
  46. for i, channel := range fansChannels { // 保证每个渠道都有数据
  47. if channelConfig, Ok = fansConfig.ChannelsConfig[strconv.Itoa(int(i))]; !Ok {
  48. channelConfig = model.FansChannelConfig{
  49. DirName: strings.ToLower(channel),
  50. BtnAction: "1",
  51. Url: "",
  52. Language: model.FansLangConfig{
  53. TitleKey: "RECOMMEND." + strings.ToUpper(channel) + ".TITLE",
  54. ContentKey: "RECOMMEND." + strings.ToUpper(channel) + ".CONTENT",
  55. ButtonKey: "RECOMMEND." + strings.ToUpper(channel) + ".BUTTON",
  56. },
  57. }
  58. } else {
  59. if channelConfig.BtnAction != "1" {
  60. channelConfig.BtnAction = "2"
  61. }
  62. }
  63. channelConfigs[strconv.Itoa(int(i))] = channelConfig
  64. }
  65. fansConfig.ChannelsConfig = channelConfigs
  66. return fansConfig, nil
  67. }
  68. func (This *fansService) Save(fansConf model.FansConfig) error {
  69. var (
  70. err error
  71. basicConfig model.TBasicConfig
  72. )
  73. for k, channelConf := range fansConf.ChannelsConfig {
  74. if channelConf.BtnAction == "2" {
  75. channelConf.BtnAction = channelConf.Url
  76. }
  77. fansConf.ChannelsConfig[k] = channelConf
  78. }
  79. content, err := jsoniter.Marshal(fansConf)
  80. if err != nil {
  81. return err
  82. }
  83. basicConfig, err = repo.Config.GetBasicConf(FansItemTitle)
  84. if err != nil {
  85. // 为空则新增记录
  86. basicConfig = model.TBasicConfig{
  87. Id: 0,
  88. ItemTitle: FansItemTitle,
  89. Content: string(content),
  90. Memo: "粉丝页弹窗配置",
  91. }
  92. if _, err = repo.Insert(&basicConfig); err != nil {
  93. return err
  94. }
  95. } else {
  96. basicConfig.Content = string(content)
  97. if err = repo.Config.UpdateBasicConf(basicConfig); err != nil {
  98. return err
  99. }
  100. }
  101. if err = Config.SaveJson(fansConf, FansItemTitle.Title); err != nil {
  102. return err
  103. }
  104. return nil
  105. }