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

90 lines
4.8 KiB

package models
import (
"time"
"github.com/ouxuanserver/osmanthuswine/src/core"
)
const ShakeRedEnvelopeRecordTableName = TableNamePrefix + "shake_red_envelope_record"
type ShakeRedEnvelopeRecord struct {
Id int64 `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 int64 `json:"activity_id" xorm:"not null default 0 comment('主活动id') INT(11)"`
RehearsalId int64 `json:"rehearsal_id" xorm:"not null default(0) comment('彩排id/0正式') INT(11)"`
RedEnvelopeType int `json:"red_envelope_type" xorm:"not null default 0 comment('红包类型[0摇红包1直播红包]')"`
LiveRedEnvelopeRuleId int64 `json:"live_red_envelope_rule_id,omitempty" xorm:"not null default 0 comment('直播红包id') INT(11)"`
ShakeRedEnvelopeActivityId int64 `json:"shake_red_envelope_activity_id,omitempty" xorm:"not null default 0 comment('摇红包活动id') INT(11)"`
ShakeRedEnvelopeRuleId int64 `json:"shake_red_envelope_rule_id,omitempty" xorm:"not null default 0 comment('摇红包规则id') INT(11)"`
AreaId int64 `json:"area_id" xorm:"not null default 0 comment('地区id') INT(11)"`
AreaName string `json:"area_name" xorm:"not null default '' comment('地区名字') VARCHAR(18)"`
Name string `json:"name" xorm:"not null default '' comment('红包名字') VARCHAR(255)"`
UserId int64 `json:"user_id" xorm:"not null default 0 comment('用户id') INT(11)"`
Amount float64 `json:"amount" xorm:"not null default '0' comment('金额') DECIMAL(18)"`
IsDraw int `json:"is_draw" xorm:"not null default(0) comment('-1未被摇中,0已被摇中,1已被提现,2提现失败')"`
TransferType int `json:"transfer_type" xorm:"not null default 0 comment('0微信红包 1 微信转账') TINYINT(1)"`
PartnerTradeNo string `json:"partner_trade_no" xorm:"not null default '' comment('转账账单no') VARCHAR(128)"`
Version int `json:"version" xorm:"not null version comment('乐观锁') INT(11)"`
// 无关变量
// Status string `json:"status" xorm:"not null default '' comment('红包状态') VARCHAR(16)"`
IsValid bool `json:"is_valid,omitempty" xorm:"-"`
}
func (t *ShakeRedEnvelopeRecord) TableName() string {
return ShakeRedEnvelopeRecordTableName
}
func (t *ShakeRedEnvelopeRecord) ExistRecord(reid, aid, srid, said, uid int64) (bool, error) {
return core.GetXormAuto().Where("is_delete=0 and rehearsal_id=? and activity_id=? and "+
"shake_red_envelope_rule_id=? and shake_red_envelope_activity_id=? and user_id=?",
reid, aid, srid, said, uid).Exist(t)
}
func (t *ShakeRedEnvelopeRecord) Add() (int64, error) {
return core.GetXormAuto().InsertOne(t)
}
func (t *ShakeRedEnvelopeRecord) Total(aid, rid, said, srid int64) (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 int64) (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 int64, status int64) (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 int64) (bool, error) {
return core.GetXormAuto().Where("is_delete=0 and is_draw=-1 and shake_red_envelope_rule_id=? and rehearsal_id=?",
ruleId, rehearsalId).Get(t)
}
func (t *ShakeRedEnvelopeRecord) UpdateAllColsById(id int64) (int64, error) {
return core.GetXormAuto().Where("is_delete=0 and id=?", id).AllCols().Update(t)
}
func GetRedEnvelopesByUserId(userId int64) ([]*ShakeRedEnvelopeRecord, error) {
records := make([]*ShakeRedEnvelopeRecord, 0)
err := core.GetXormAuto().Where("user_id=? and is_delete=0 and is_draw<>-1", userId).
Desc("created_at").Find(&records)
for index := range records {
records[index].IsValid = true
}
return records, err
}
func (t *ShakeRedEnvelopeRecord) GetLiveRedPackRecord(id interface{}) (bool, error) {
return core.GetXormAuto().Where("is_delete=0 and red_envelope_type = 1 and live_red_envelope_rule_id=?", id).Get(t)
}