package models import ( "time" "git.ouxuan.net/tommy/osmanthuswine/src/core" ) const ShakeRedEnvelopeRecordTableName = TableNamePrefix + "shake_red_envelope_record" type ShakeRedEnvelopeRecord struct { Id int `json:"id" xorm:"not null pk autoincr comment('主键') INT(11)"` IsDelete bool `json:"-" xorm:"default(0)" description:"是否删除"` CreatedAt time.Time `json:"-" xorm:"created" description:"创建时间"` UpdatedAt time.Time `json:"-" xorm:"updated" description:"更新时间"` ActivityId int `json:"activity_id" xorm:"not null default 0 comment('主活动id') INT(11)"` RehearsalId int `json:"rehearsal_id" xorm:"not null default(0) comment('彩排id/0正式') INT(11)"` ShakeRedEnvelopeType int `json:"red_envelope_type" xorm:"not null default 0 comment('红包类型[0摇红包1直播红包]')"` ShakeRedEnvelopeRuleId int `json:"shake_red_envelope_rule_id,omitempty" xorm:"not null default 0 comment('摇红包规则id') INT(11)"` ShakeRedEnvelopeActivityId int `json:"shake_red_envelope_activity_id,omitempty" xorm:"not null default 0 comment('摇红包活动id') INT(11)"` ArchId int `json:"arch_id" xorm:"not null default 0 comment('归档id') INT(11)"` AreaId int `json:"area_id" xorm:"not null default 0 comment('地区id') INT(11)"` Name string `json:"name" xorm:"not null default '' comment('红包名字') VARCHAR(255)"` UserId int `json:"user_id" xorm:"not null default 0 comment('用户id') INT(11)"` Amount float64 `json:"amount" xorm:"not null default 0.00 comment('金额') DECIMAL(18)"` IsValid bool `json:"is_valid,omitempty" xorm:"-"` IsDraw int `json:"is_draw" xorm:"not null default 0 comment('-1未被摇中,0已被摇中1被提取')"` MchBillno string `json:"mch_billno" xorm:"not null default '' comment('微信红包订单号') VARCHAR(128)"` Version int `json:"version" xorm:"not null version default 0 comment('乐观锁') INT(11)"` } func (t *ShakeRedEnvelopeRecord) TableName() string { return ShakeRedEnvelopeRecordTableName } func (t *ShakeRedEnvelopeRecord) ExistRecord(reid, srid, uid int) (bool, error) { return core.GetXormAuto().Where("is_delete=0 and rehearsal_id=? and "+ "shake_red_envelope_rule_id=? and user_id=?", reid, srid, uid).Exist(t) } func (t *ShakeRedEnvelopeRecord) Total(aid, rid, said, srid int) (int64, error) { return core.GetXormAuto().Where("is_delete=0 and activity_id=? and rehearsal_id=? and "+ "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", aid, rid, said, srid).Count(t) } func (t *ShakeRedEnvelopeRecord) Sum(aid, rid, said, srid int) (float64, error) { return core.GetXormAuto().Where("is_delete=0 and activity_id=? and rehearsal_id=? and "+ "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", aid, rid, said, srid). Sum(t, "amount") } func (t *ShakeRedEnvelopeRecord) Count(aid, rid, said, srid int, status int) (int64, error) { return core.GetXormAuto().Where("is_delete=0 and is_draw=? and activity_id=? and rehearsal_id=? and "+ "shake_red_envelope_activity_id=? and shake_red_envelope_rule_id=?", status, aid, rid, said, srid).Count(t) } func (t *ShakeRedEnvelopeRecord) GetByRuleId(ruleId, rehearsalId, _type, archId interface{}) (bool, error) { return core.GetXormAuto().Where("is_delete=0 and is_draw=-1 and shake_red_envelope_type = ? and "+ "shake_red_envelope_rule_id=? and rehearsal_id=? and arch_id=?", _type, ruleId, rehearsalId, archId).Get(t) } func GetRedEnvelopesByUserId(userId, activityId, rehearsalId int, archId interface{}) ([]*ShakeRedEnvelopeRecord, error) { records := make([]*ShakeRedEnvelopeRecord, 0) err := core.GetXormAuto().Where("user_id=? and rehearsal_id=? and activity_id=? and arch_id=? and "+ "is_delete=0 and is_draw<>-1", userId, rehearsalId, activityId, archId).Desc("created_at"). Find(&records) for index := range records { records[index].IsValid = true } return records, err }