123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- package model
- import (
- "active/constant"
- "database/sql"
- "encoding/json"
- "fmt"
- "time"
- "git.jiaxianghudong.com/go/logs"
- "git.jiaxianghudong.com/webs/pkg/dbx"
- )
- //Precious 神秘宝藏
- type Precious struct {
- ID int `json:"id" sql:"id"` //
- UserID int `json:"userid" sql:"userid"` //用户ID
- Goodstag string `json:"goodstag" sql:"goodstag"` //商品标识符 计费点
- Multiple int `json:"multiple" sql:"multiple"` //倍数 10:1(20 则为2倍)
- Count int `json:"count" sql:"count"` //每日抽奖次数
- Date sql.NullString `json:"date" sql:"date"` //抽奖时间
- Locked int `json:"locked" sql:"locked"` //锁定 1 锁定计费点 2 锁定倍数
- Lockeddate sql.NullString `json:"locked_date" sql:"locked_date"` //锁定时间
- Usesurprised int `json:"use_surprised" sql:"use_surprised"` //1 抽中过 是抽中过必现奖励6,12 的10倍奖励
- Updatetime string `json:"update_time" sql:"update_time"` //更新时间
- }
- //PreciousData 神秘宝藏礼包存储数据
- type PreciousData struct {
- PayTime string `yaml:"pay_time" json:"pay_time"`
- Count int `yaml:"count" json:"count"`
- }
- // GetPrecious 获取全部活动数据
- func (m *Precious) GetPrecious() error {
- err := dbx.MySQLExt.QueryRow("SELECT goodstag,multiple,count,date,locked,locked_date,use_surprised from `log`.`pay_precious_log` where userid = ? ",
- m.UserID).Scan(&m.Goodstag, &m.Multiple, &m.Count, &m.Date, &m.Locked, &m.Lockeddate, &m.Usesurprised)
- if nil != err {
- if err == sql.ErrNoRows {
- return InitPreciousLog(m.UserID)
- }
- logs.Errorf("GetPrecious err:%v", err)
- return err
- }
- return nil
- }
- //UpdatePreciousCounts 更新抽奖使用数据
- func (m *Precious) UpdatePreciousCounts() (int64, error) {
- m.Updatetime = time.Now().Format("2006-01-02 15:04:05")
- querySQL := `UPDATE log.pay_precious_log SET goodstag = ?, multiple = ?, count= ?, date=?, use_surprised=?, update_time=?, locked=? where userid = ? `
- count, err := dbx.MySQLExt.Update(querySQL,
- m.Goodstag,
- m.Multiple,
- m.Count,
- time.Now().Format("2006-01-02"),
- m.Usesurprised,
- m.Updatetime,
- m.Locked,
- m.UserID)
- if nil != err && err != sql.ErrNoRows {
- logs.Errorf("UpdatePreciousCounts err:%v", err)
- return 0, err
- }
- return count, nil
- }
- //InitPreciousLog 初始化表记录
- func InitPreciousLog(userID int) error {
- querySQL := "INSERT INTO log.pay_precious_log set userid = ?"
- _, err := dbx.MySQLExt.Insert(querySQL, userID)
- if err != nil {
- logs.Error(fmt.Sprintf("InitPreciousLog sqlStr: %s err: %v", querySQL, err))
- return err
- }
- return nil
- }
- //UpdatePreciousLocked 更新锁定
- func (m *Precious) UpdatePreciousLocked() (int64, error) {
- m.Updatetime = time.Now().Format("2006-01-02 15:04:05")
- querySQL := `UPDATE log.pay_precious_log SET goodstag = ?, multiple = ?, locked_date =?, update_time=?, locked=? where userid = ? `
- count, err := dbx.MySQLExt.Update(querySQL,
- m.Goodstag,
- m.Multiple,
- time.Now().Format("2006-01-02"),
- m.Updatetime,
- m.Locked,
- m.UserID)
- if nil != err && err != sql.ErrNoRows {
- logs.Errorf("UpdatePreciousCounts err:%v", err)
- return 0, err
- }
- return count, nil
- }
- //GetPreciousPayCount 更新神秘活动
- func GetPreciousPayCount(data string, ver int) int {
- count := constant.MaxPayPrecious
- if ver >= 1 {
- count = constant.MaxPayShakeBean
- }
- pd := PreciousData{}
- if len(data) > 0 {
- err := json.Unmarshal([]byte(data), &pd)
- if err != nil {
- logs.Errorf("GetPreciousPayCount: json data:%s err:%v", data, err)
- }
- }
- //购买每日重制
- if time.Now().Format("2006-01-02") != pd.PayTime {
- return count
- }
- if pd.Count >= count {
- return 0
- }
- return count - pd.Count
- }
- //GetRegressPayCount 获取付费老用户回归
- func GetRegressPayCount(data string) int {
- pd := PreciousData{}
- if len(data) > 0 {
- err := json.Unmarshal([]byte(data), &pd)
- if err != nil {
- logs.Errorf("GetPreciousPayCount: json data:%s err:%v", data, err)
- }
- }
- //购买每日重制
- if time.Now().Format("2006-01-02") != pd.PayTime {
- return constant.MaxPayRegress
- }
- if pd.Count >= constant.MaxPayRegress {
- return 0
- }
- return constant.MaxPayRegress - pd.Count
- }
- //ChangeGoodsTag 更新最高计费点
- func ChangeGoodsTag(goodstag string, userid int) (int64, error) {
- querySQL := `UPDATE log.pay_precious_log SET goodstag = ? where userid = ? `
- count, err := dbx.MySQLExt.Update(querySQL,
- goodstag,
- userid)
- if nil != err && err != sql.ErrNoRows {
- logs.Errorf("ChangeGoodsTag err:%v", err)
- return 0, err
- }
- return count, nil
- }
|