peripherals.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package service
  2. import (
  3. "gadmin/config"
  4. "gadmin/internal/admin/consts"
  5. "gadmin/internal/admin/forms"
  6. "gadmin/internal/gorm/model"
  7. "gadmin/internal/gorm/query"
  8. "gadmin/utility/serializer"
  9. "github.com/gin-gonic/gin"
  10. "time"
  11. )
  12. // Peripherals 周边活动
  13. var Peripherals = new(sPeripherals)
  14. type sPeripherals struct{}
  15. func (s *sPeripherals) ReceiveCdk(ctx *gin.Context, req forms.PeripheralsReceiveCdk) serializer.Response {
  16. var (
  17. q = query.Use(config.DB).RedeemCode
  18. pr = query.Use(config.DB).RedeemPeripheralsReceived
  19. models *model.RedeemCode
  20. prModels *model.RedeemPeripheralsReceived
  21. err error
  22. )
  23. if err = pr.WithContext(ctx).Where(pr.Sn.Eq(req.Sn)).Where(pr.Openid.Eq(req.OpenId)).Scan(&prModels); err != nil {
  24. return serializer.Err(consts.CodeParamErr, "领取记录查询异常", err)
  25. }
  26. // 还没有,就给一个
  27. if prModels == nil {
  28. if err = q.WithContext(ctx).
  29. Where(q.Sn.Eq(req.Sn)).
  30. Where(q.Times.Gt(0)).
  31. Where(q.Columns(q.ID).NotIn(pr.WithContext(ctx).Select(pr.Cid).Where(pr.Sn.Eq(req.Sn)))).
  32. Scan(&models); err != nil {
  33. return serializer.Err(consts.CodeParamErr, "兑换码查询异常-2", err)
  34. }
  35. if models == nil {
  36. return serializer.Err(101, "兑换码已用尽", err)
  37. }
  38. var data model.RedeemPeripheralsReceived
  39. data.Cid = models.ID
  40. data.Sn = models.Sn
  41. data.Openid = req.OpenId
  42. data.CreatedAt = time.Now().Unix()
  43. if err = query.Use(config.DB).RedeemPeripheralsReceived.WithContext(ctx).Create(&data); err != nil {
  44. return serializer.Err(consts.CodeParamErr, "兑换码失败,请稍后重试!", err)
  45. }
  46. return serializer.Suc(models)
  47. }
  48. if err = q.WithContext(ctx).Where(q.ID.Eq(prModels.Cid)).Scan(&models); err != nil {
  49. return serializer.Err(consts.CodeParamErr, "兑换码查询异常", err)
  50. }
  51. if models == nil {
  52. return serializer.Err(consts.CodeParamErr, "兑换码不存在或已被删除", err)
  53. }
  54. return serializer.Suc(models)
  55. }