act_crazy_bet.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package service
  2. import (
  3. "crazy-fox-backend-api/model"
  4. "crazy-fox-backend-api/utils"
  5. "github.com/jmoiron/sqlx/types"
  6. jsoniter "github.com/json-iterator/go"
  7. "github.com/pkg/errors"
  8. )
  9. type actCrazyBet struct{}
  10. // 展示数据处理
  11. func (This *actCrazyBet) handleActShow(confInfo *model.ActConfInfo) (json types.JSONText, err error) {
  12. var repoConf model.CrazyBetRepoConf
  13. if err = jsoniter.Unmarshal(confInfo.Reward, &repoConf); err != nil {
  14. return json, errors.Wrap(err, "疯狂倍率 奖励Json解析失败")
  15. }
  16. // 数据转换
  17. showConf := This.convertIntoShowConf(repoConf)
  18. if json, err = jsoniter.Marshal(showConf); err != nil {
  19. return json, errors.Wrap(err, "疯狂倍率 奖励序列化失败")
  20. }
  21. return
  22. }
  23. // 保存数据处理
  24. func (This *actCrazyBet) handleActSave(confInfo *model.ActConfInfo) (err error) {
  25. var showConf model.CrazyBetShowConf
  26. if err = jsoniter.Unmarshal(confInfo.ActShowConf, &showConf); err != nil {
  27. return errors.Wrap(err, "疯狂倍率 奖励Json解析失败")
  28. }
  29. // 数据转换
  30. repoConf := This.convertIntoRepoConf(showConf)
  31. if confInfo.Reward, err = jsoniter.Marshal(repoConf); err != nil {
  32. return errors.Wrap(err, "疯狂倍率 奖励数据序列化失败")
  33. }
  34. return
  35. }
  36. // 分层数据处理
  37. func (This *actCrazyBet) handleActRewardSection(*model.ActConfInfo, ...map[string]any) error {
  38. return nil
  39. }
  40. // 导入数据处理
  41. func (This *actCrazyBet) handleActImport(*model.ActDetailInfo, [][][]string) (json types.JSONText, err error) {
  42. return
  43. }
  44. func (This *actCrazyBet) convertIntoShowConf(repoConf model.CrazyBetRepoConf) model.CrazyBetShowConf {
  45. showConf := model.CrazyBetShowConf{
  46. Init: model.CrazyBetInitShowConf{
  47. ActSpinsLimit: repoConf.Init.ActSpinsLimit,
  48. SpinsRange: utils.MapValues(repoConf.Init.SpinsRange, true),
  49. },
  50. Conf: utils.MapValues(repoConf.Conf, true),
  51. }
  52. return showConf
  53. }
  54. func (This *actCrazyBet) convertIntoRepoConf(showConf model.CrazyBetShowConf) model.CrazyBetRepoConf {
  55. var repoConf model.CrazyBetRepoConf
  56. spinsConfMap := make(map[int64]model.CrazyBetSpinsConf, len(showConf.Init.SpinsRange))
  57. for i, conf := range showConf.Init.SpinsRange {
  58. conf.Id = int64(i + 1)
  59. spinsConfMap[conf.Id] = conf
  60. }
  61. repoConf.Init.SpinsRange = spinsConfMap
  62. repoConf.Init.ActSpinsLimit = showConf.Init.ActSpinsLimit
  63. confMap := make(map[int64]model.CrazyBetBetConf, len(showConf.Conf))
  64. for i, conf := range showConf.Conf {
  65. conf.Id = int64(i + 1)
  66. confMap[conf.Id] = conf
  67. }
  68. repoConf.Conf = confMap
  69. return repoConf
  70. }