互动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
4.2 KiB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
  1. package models
  2. import (
  3. "time"
  4. "github.com/ouxuanserver/osmanthuswine/src/core"
  5. )
  6. const ShakeRedEnvelopeRecordTableName = TableNamePrefix + "shake_red_envelope_record"
  7. type ShakeRedEnvelopeRecord struct {
  8. Id int64 `json:"id" xorm:"not null pk autoincr comment('主键') INT(11)"`
  9. IsDelete bool `json:"-" xorm:"default(0)" description:"是否删除"`
  10. CreatedAt time.Time `json:"-" xorm:"created" description:"创建时间"`
  11. UpdatedAt time.Time `json:"-" xorm:"updated" description:"更新时间"`
  12. ActivityId int64 `json:"activity_id" xorm:"not null default 0 comment('主活动id') INT(11)"`
  13. RehearsalId int64 `json:"rehearsal_id" xorm:"not null default(0) comment('彩排id/0正式') INT(11)"`
  14. ShakeRedEnvelopeType int `json:"red_envelope_type" xorm:"not null default 0 comment('红包类型[0摇红包1直播红包]')"`
  15. ShakeRedEnvelopeRuleId int64 `json:"shake_red_envelope_rule_id,omitempty" xorm:"not null default 0 comment('摇红包规则id') INT(11)"`
  16. ShakeRedEnvelopeActivityId int64 `json:"shake_red_envelope_activity_id,omitempty" xorm:"not null default 0 comment('摇红包活动id') INT(11)"`
  17. AreaId int64 `json:"area_id" xorm:"not null default 0 comment('地区id') INT(11)"`
  18. Name string `json:"name" xorm:"not null default '' comment('红包名字') VARCHAR(255)"`
  19. UserId int64 `json:"user_id" xorm:"not null default 0 comment('用户id') INT(11)"`
  20. Amount float64 `json:"amount" xorm:"not null default 0.00 comment('金额') DECIMAL(18)"`
  21. IsValid bool `json:"is_valid,omitempty" xorm:"-"`
  22. IsDraw int `json:"is_draw" xorm:"not null default 0 comment('-1未被摇中,0已被摇中1被提取')"`
  23. MchBillno string `json:"mch_billno" xorm:"not null default '' comment('微信红包订单号') VARCHAR(128)"`
  24. Version int `json:"version" xorm:"not null version default 0 comment('乐观锁') INT(11)"`
  25. // 无关变量
  26. }
  27. func (t *ShakeRedEnvelopeRecord) TableName() string {
  28. return ShakeRedEnvelopeRecordTableName
  29. }
  30. func (t *ShakeRedEnvelopeRecord) ExistRecord(reid, srid, uid int64) (bool, error) {
  31. return core.GetXormAuto().Where("is_delete=0 and rehearsal_id=? and "+
  32. "shake_red_envelope_rule_id=? and user_id=?", reid, srid, uid).Exist(t)
  33. }
  34. func (t *ShakeRedEnvelopeRecord) Add() (int64, error) {
  35. return core.GetXormAuto().InsertOne(t)
  36. }
  37. func (t *ShakeRedEnvelopeRecord) Total(aid, rid, said, srid int64) (int64, error) {
  38. return core.GetXormAuto().Where("is_delete=0 and activity_id=? and rehearsal_id=? and "+
  39. "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", aid, rid, said, srid).Count(t)
  40. }
  41. func (t *ShakeRedEnvelopeRecord) Sum(aid, rid, said, srid int64) (float64, error) {
  42. return core.GetXormAuto().Where("is_delete=0 and activity_id=? and rehearsal_id=? and "+
  43. "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", aid, rid, said, srid).
  44. Sum(t, "amount")
  45. }
  46. func (t *ShakeRedEnvelopeRecord) Count(aid, rid, said, srid int64, status int64) (int64, error) {
  47. return core.GetXormAuto().Where("is_delete=0 and is_draw=? and activity_id=? and rehearsal_id=? and "+
  48. "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", status, aid, rid, said, srid).Count(t)
  49. }
  50. func (t *ShakeRedEnvelopeRecord) GetByRuleId(ruleId, rehearsalId, _type interface{}) (bool, error) {
  51. return core.GetXormAuto().Where("is_delete=0 and is_draw=-1 and shake_red_envelope_type = ? and "+
  52. "shake_red_envelope_rule_id=? and rehearsal_id=?", _type, ruleId, rehearsalId).Get(t)
  53. }
  54. func (t *ShakeRedEnvelopeRecord) UpdateById(id int64, field ...string) (int64, error) {
  55. return core.GetXormAuto().Where("is_delete=0 and id=?", id).Cols(field...).Update(t)
  56. }
  57. func GetRedEnvelopesByUserId(userId, activityId, rehearsalId int64) ([]*ShakeRedEnvelopeRecord, error) {
  58. records := make([]*ShakeRedEnvelopeRecord, 0)
  59. err := core.GetXormAuto().Where("user_id=? and rehearsal_id=? and activity_id=? and "+
  60. "is_delete=0 and is_draw<>-1", userId, rehearsalId, activityId).Desc("created_at").
  61. Find(&records)
  62. for index := range records {
  63. records[index].IsValid = true
  64. }
  65. return records, err
  66. }