123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package luckdrawlist
  2. import (
  3. "errors"
  4. "spaceofcheng/services/models/luckdrawlist"
  5. "spaceofcheng/services/models/model"
  6. "spaceofcheng/services/models/verify"
  7. "spaceofcheng/services/utils"
  8. "strings"
  9. "github.com/astaxie/beego"
  10. )
  11. // LuckdrawlistServ 系统处理
  12. type LuckdrawlistServ struct {
  13. ctx *utils.Context
  14. dao *luckdrawlist.LuckdrawDAO
  15. verifyDao *verify.VerifyDAO
  16. }
  17. // NewLuckdrawlistServ 初始化
  18. func NewLuckdrawlistServ(ctx *utils.Context) *LuckdrawlistServ {
  19. return &LuckdrawlistServ{
  20. ctx: ctx,
  21. dao: luckdrawlist.NewLuckdrawDAO(ctx),
  22. verifyDao: verify.NewVerifyDAO(ctx),
  23. }
  24. }
  25. func (s *LuckdrawlistServ) GetLuckShareList(caseID, fromPhone, toPhone string, pagenavi ...int) ([]model.TaShareLuckyRecord, int64, error) {
  26. filters := ""
  27. if caseID != "" {
  28. if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
  29. return nil, 0, err
  30. }
  31. filters = "a.case_id='" + caseID + "'"
  32. } else {
  33. casesRaw := s.ctx.Get("cases")
  34. if casesRaw == nil {
  35. return nil, 0, errors.New("请设置过滤案场")
  36. }
  37. cases := casesRaw.([]model.SysUserCase)
  38. caseIDs := []string{}
  39. for _, cs := range cases {
  40. caseIDs = append(caseIDs, cs.CaseId)
  41. }
  42. filters = "a.case_id in ('" + strings.Join(caseIDs, "','") + "')"
  43. }
  44. limit := utils.GetPageNaviLimit(pagenavi...)
  45. res, total, err := s.dao.GetLuckShareList(fromPhone, toPhone, filters, limit)
  46. if err != nil {
  47. utils.LogError("查询分享列表失败: " + err.Error())
  48. return nil, 0, errors.New("查询分享列表失败")
  49. }
  50. return res, total, nil
  51. }
  52. func (s *LuckdrawlistServ) GetLuckdrawList(caseID string, pagenavi ...int) ([]luckdrawlist.Luckdraw, int64, error) {
  53. filters := []string{}
  54. if caseID != "" {
  55. if err := utils.NewAuthEngine(s.ctx).CheckCase(caseID); err != nil {
  56. return nil, 0, err
  57. }
  58. filters = []string{
  59. "a.case_id='" + caseID + "'",
  60. }
  61. } else {
  62. casesRaw := s.ctx.Get("cases")
  63. if casesRaw == nil {
  64. return nil, 0, errors.New("请设置过滤案场")
  65. }
  66. cases := casesRaw.([]model.SysUserCase)
  67. caseIDs := []string{}
  68. for _, cs := range cases {
  69. caseIDs = append(caseIDs, cs.CaseId)
  70. }
  71. filters = []string{
  72. "a.case_id in ('" + strings.Join(caseIDs, "','") + "')",
  73. }
  74. }
  75. limit := utils.GetPageNaviLimit(pagenavi...)
  76. res, total, err := s.dao.GetLuckdrawList(filters, limit)
  77. if err != nil {
  78. utils.LogError("查询抽奖列表失败: " + err.Error())
  79. return nil, 0, errors.New("查询抽奖列表失败")
  80. }
  81. return res, total, nil
  82. }
  83. func (s *LuckdrawlistServ) GetVerifyList(qrcode, caseIDs string) (*luckdrawlist.Luckdraw, error) {
  84. luckdrawId, err := s.verifyDao.GetCustomerCourseIdByQrcode(qrcode)
  85. if err != nil {
  86. utils.LogError("查询抽奖列表失败: " + err.Error())
  87. return nil, errors.New("查询抽奖列表失败")
  88. }
  89. luckdraw, err := s.dao.GetLuckdrawById(luckdrawId, caseIDs)
  90. if err != nil {
  91. utils.LogError("查询抽奖列表失败: " + err.Error())
  92. return nil, errors.New("查询抽奖列表失败")
  93. }
  94. return luckdraw, nil
  95. }
  96. func (s *LuckdrawlistServ) VerifyLuckdraw(luckdrawId, caseIDs, userId string) error {
  97. luckdraw, err := s.dao.GetLuckdrawById(luckdrawId, caseIDs)
  98. err = s.dao.VerifyLuckdraw(luckdrawId)
  99. if err != nil {
  100. utils.LogError("核销失败: " + err.Error())
  101. return errors.New("核销失败")
  102. }
  103. beego.Error(luckdraw)
  104. err = s.dao.AddWriteoffRecord(luckdraw, userId)
  105. if err != nil {
  106. utils.LogError("核销失败: " + err.Error())
  107. return errors.New("核销失败")
  108. }
  109. return nil
  110. }