互动
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.

69 lines
3.9 KiB

5 years ago
5 years ago
4 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. "git.ouxuan.net/tommy/osmanthuswine/src/core"
  5. )
  6. const LotteryDrawRecordTableName = TableNamePrefix + "lottery_draw_record"
  7. type LotteryDrawRecord struct {
  8. Id int `json:"id" xorm:"pk autoincr not null INT(11)"`
  9. ActivityId int `json:"activity_id" xorm:"not null comment('主活动id') INT(11)"`
  10. RehearsalId int `json:"rehearsal_id" xorm:"not null comment('彩排id/0正式') INT(11)"`
  11. UserPrizeId int `json:"user_prize_id" xorm:"not null comment('用户奖品id') INT(11)"`
  12. LotteryDrawActivityId int `json:"lottery_draw_activity_id" xorm:"not null comment('抽奖活动id') INT(11)"`
  13. LotteryDrawRuleId int `json:"lottery_draw_rule_id" xorm:"not null comment('抽奖规则id') INT(20)"`
  14. LotteryDrawRuleLadderId int `json:"lottery_draw_rule_ladder_id" xorm:"not null comment('规则阶梯id') INT(11)"`
  15. ArchId int `json:"arch_id" xorm:"not null default 0 comment('归档id') INT(11)"`
  16. UserId int `json:"user_id" xorm:"not null comment('用户id') INT(11)"`
  17. AreaId int `json:"area_id" xorm:"not null default(0) comment('地区id') INT(11)"`
  18. RollNum int `json:"roll_num" xrom:"not null default 0 comment('滚动次数') INT(11)"`
  19. UserName string `json:"user_name" xorm:"not null comment('用户名') VARCHAR(128)"`
  20. UserPhone string `json:"user_phone" xorm:"not null comment('电话号码') VARCHAR(128)"`
  21. PrizeName string `json:"prize_name" xorm:"not null comment('奖品名字') VARCHAR(128)"`
  22. AreaName string `json:"area_name" xorm:"not null comment('地区名字') VARCHAR(128)"`
  23. EntryPersonName string `json:"entry_person_name" xorm:"not null default '' comment('录入人员名单') VARCHAR(128)"`
  24. Status int `json:"status" xorm:"not null default 0 comment('是否已经兑奖0否1是') TINYINT(1)"`
  25. WxNo string `json:"wx_no" xorm:"not null default '' comment('微信号') VARCHAR(128)"`
  26. Address string `json:"address" xorm:"not null default '' comment('地址') VARCHAR(128)"`
  27. IsDelete bool `json:"-" xorm:"default(0)"`
  28. CreatedAt time.Time `json:"-" xorm:"created"`
  29. UpdatedAt time.Time `json:"-" xorm:"updated"`
  30. // 无关变量
  31. User *User `json:"user" xorm:"-"`
  32. LotteryDrawRuleLadder *LotteryDrawRuleLadder `json:"lottery_draw_rule_ladder" xorm:"-"`
  33. }
  34. func (t *LotteryDrawRecord) TableName() string {
  35. return LotteryDrawRecordTableName
  36. }
  37. func (t *LotteryDrawRecord) GetByUserIdAndLadderId(userId, ladderId, archId interface{}, rollNum int) (bool, error) {
  38. session := core.GetXormAuto().Where("is_delete=0 and user_id=? and lottery_draw_rule_ladder_id=? and arch_id=?",
  39. userId, ladderId, archId)
  40. defer session.Close()
  41. if rollNum > 0 {
  42. session.Where("roll_num=?", rollNum)
  43. }
  44. return session.Get(t)
  45. }
  46. func (t *LotteryDrawRecord) GetByUserPrizeId(upId int) (bool, error) {
  47. return core.GetXormAuto().Where("is_delete=0 and user_prize_id=?", upId).Get(t)
  48. }
  49. func GetUserIdsByLotteryDrawRuleId(ruleId, rehearsalId, areaId, archId interface{}) ([]int, error) {
  50. recordIds := make([]int, 0)
  51. err := core.GetXormAuto().Table(new(LotteryDrawRecord)).Select("user_id").
  52. Where("lottery_draw_rule_id=? and rehearsal_id=? and area_id=? and arch_id=? and is_delete=0",
  53. ruleId, rehearsalId, areaId, archId).Find(&recordIds)
  54. return recordIds, err
  55. }
  56. func (t *LotteryDrawRecord) CountRecord(ruleId, ladderId, rehearsalId, areaId, archId interface{}) (int64, error) {
  57. return core.GetXormAuto().Where("lottery_draw_rule_id=? and lottery_draw_rule_ladder_id=? and rehearsal_id=? "+
  58. " and area_id=? and arch_id=? and is_delete=0", ruleId, ladderId, rehearsalId, areaId, archId).Count(t)
  59. }