Browse Source

test

tags/v1.1.6
huangjiajun 1 year ago
parent
commit
0f59750b4d
4 changed files with 39 additions and 15 deletions
  1. +8
    -2
      db/db_day_luck_draw_order_jackpot.go
  2. +5
    -2
      db/db_day_luck_draw_settle_order.go
  3. +1
    -0
      db/model/day_luck_draw_period.go
  4. +25
    -11
      svc/svc_day_luck_draw_reward.go

+ 8
- 2
db/db_day_luck_draw_order_jackpot.go View File

@@ -29,7 +29,13 @@ func AddOrderJackpot(eg *xorm.Engine, req md.DayLuckDrawOrderJackpotReq) error {
} }
return nil return nil
} }

func GetOrderJackpotCount(sess *xorm.Session, period string) int64 {
if period == "0" || zhios_day_luck_draw_utils.StrToInt(period) > 0 {
sess.Where("period=?", period)
}
sum, _ := sess.Count(&model.DayLuckDrawOrderJackpot{})
return sum
}


func GetAllOrderOid(sess *xorm.Session) []string { func GetAllOrderOid(sess *xorm.Session) []string {
sql := `SELECT oid,uid FROM day_luck_draw_order_jackpot where period=0;` sql := `SELECT oid,uid FROM day_luck_draw_order_jackpot where period=0;`
@@ -37,7 +43,7 @@ func GetAllOrderOid(sess *xorm.Session) []string {
var list = make([]string, 0) var list = make([]string, 0)
if len(data) > 0 { if len(data) > 0 {
for _, v := range data { for _, v := range data {
list = append(list, v["uid"])
list = append(list, v["oid"]+"_"+v["uid"])
} }
} }
return list return list


+ 5
- 2
db/db_day_luck_draw_settle_order.go View File

@@ -9,8 +9,11 @@ import (
"xorm.io/xorm" "xorm.io/xorm"
) )


func GetSettleAllOrderSum(sess *xorm.Session) float64 {
sum, _ := sess.Where("is_send=0").Sum(&model.DayLuckDrawSettleOrder{}, "commission")
func GetSettleAllOrderSum(sess *xorm.Session, isSend string) float64 {
if isSend == "0" || isSend == "1" {
sess.Where("is_send=?", isSend)
}
sum, _ := sess.Sum(&model.DayLuckDrawSettleOrder{}, "commission")
return sum return sum
} }




+ 1
- 0
db/model/day_luck_draw_period.go View File

@@ -10,4 +10,5 @@ type DayLuckDrawPeriod struct {
Base string `json:"base" xorm:"TEXT"` Base string `json:"base" xorm:"TEXT"`
CreateTime time.Time `json:"create_time" xorm:"DATETIME"` CreateTime time.Time `json:"create_time" xorm:"DATETIME"`
Period int `json:"period" xorm:"default 0 INT(11)"` Period int `json:"period" xorm:"default 0 INT(11)"`
Data string `json:"data" xorm:"TEXT"`
} }

+ 25
- 11
svc/svc_day_luck_draw_reward.go View File

@@ -11,6 +11,7 @@ import (
"fmt" "fmt"
"github.com/shopspring/decimal" "github.com/shopspring/decimal"
"math/rand" "math/rand"
"strings"
"time" "time"
"xorm.io/xorm" "xorm.io/xorm"
) )
@@ -24,7 +25,8 @@ func InitForDayLuckDraw(redisAddr string) (err error) {
} }


//随机几个用户 //随机几个用户
func RandUser(sess *xorm.Session, setting *model.DayLuckDrawSetting) []string {
func RandUser(sess *xorm.Session, setting *model.DayLuckDrawSetting) ([]string, []string) {
var newUid = make([]string, 0)
var newOid = make([]string, 0) var newOid = make([]string, 0)
count := 0 count := 0
var rewardData = make([]md.RewardData, 0) var rewardData = make([]md.RewardData, 0)
@@ -36,10 +38,10 @@ func RandUser(sess *xorm.Session, setting *model.DayLuckDrawSetting) []string {
} }
if count > 0 { if count > 0 {
oids := db.GetAllOrderOid(sess) oids := db.GetAllOrderOid(sess)
newOid = MicsSlice(oids, count)
return newOid
newUid, newOid = MicsSlice(oids, count)
return newUid, newOid
} }
return newOid
return newUid, newOid


} }


@@ -110,7 +112,7 @@ func GetUserReward(eg *xorm.Engine, mid string, isTask bool) error {
} }
//设置期数 //设置期数
max := db.GetPeriodMax(sess) max := db.GetPeriodMax(sess)
sum := db.GetSettleAllOrderSum(sess)
sum := db.GetSettleAllOrderSum(sess, "0")
if setting.Source == "amount" { if setting.Source == "amount" {
sum = zhios_day_luck_draw_utils.StrToFloat64(setting.Amount) sum = zhios_day_luck_draw_utils.StrToFloat64(setting.Amount)
} else { } else {
@@ -144,7 +146,7 @@ func GetUserReward(eg *xorm.Engine, mid string, isTask bool) error {
for _, v := range rewardData { for _, v := range rewardData {
rewardDataMap[zhios_day_luck_draw_utils.StrToInt64(v.Key)] = zhios_day_luck_draw_utils.StrToInt(v.Num) rewardDataMap[zhios_day_luck_draw_utils.StrToInt64(v.Key)] = zhios_day_luck_draw_utils.StrToInt(v.Num)
} }
uids := RandUser(sess, setting)
uids, oids := RandUser(sess, setting)
var award = make(map[string]int64) var award = make(map[string]int64)
var awardIdMap = make(map[int64]int) var awardIdMap = make(map[int64]int)
for _, v := range uids { for _, v := range uids {
@@ -216,6 +218,12 @@ func GetUserReward(eg *xorm.Engine, mid string, isTask bool) error {
sess.Rollback() sess.Rollback()
return errors.New("失败") return errors.New("失败")
} }
oidsStr, _ := json.Marshal(oids)
update3, err3 := sess.Where("period=?", period).Cols("data").Update(&model.DayLuckDrawPeriod{Data: string(oidsStr)})
if err3 != nil || update3 == 0 {
sess.Rollback()
return errors.New("失败")
}
sess.Commit() sess.Commit()
return nil return nil
} }
@@ -263,7 +271,7 @@ func AwardRandomNumberFor100000() int {
return num return num
} }


func MicsSlice(origin []string, count int) []string {
func MicsSlice(origin []string, count int) ([]string, []string) {
tmpOrigin := make([]string, len(origin)) tmpOrigin := make([]string, len(origin))
copy(tmpOrigin, origin) copy(tmpOrigin, origin)
//一定要seed //一定要seed
@@ -273,16 +281,22 @@ func MicsSlice(origin []string, count int) []string {
}) })


result := make([]string, 0) result := make([]string, 0)
oids := make([]string, 0)
for _, value := range tmpOrigin { for _, value := range tmpOrigin {
if len(result) == count { if len(result) == count {
break break
} }
if zhios_day_luck_draw_utils.InArr(value, result) {
continue
split := strings.Split(value, "_")
if len(split) == 2 {
if zhios_day_luck_draw_utils.InArr(split[1], result) {
continue
}
result = append(result, split[1])
oids = append(oids, split[0])
} }
result = append(result, value)
} }
return result
return result, oids
} }


func SetAllAwardsProbability(sess *xorm.Session, mid string) error { func SetAllAwardsProbability(sess *xorm.Session, mid string) error {


Loading…
Cancel
Save