@ -12,6 +12,7 @@ import (
"server/pb"
"server/util"
"sort"
"strconv"
"strings"
"time"
@ -773,91 +774,126 @@ func ActivityLuckyCodeDraw(c *gin.Context) {
if ! a . S ( req ) {
return
}
now := time . Now ( )
luckyCode := & common . ActivityLuckyCode { Code : req . LuckyCode , Date : now . Format ( "20060102" ) }
if ! a . MGet ( luckyCode ) {
a . Code = values . CodeParam
a . Msg = "आपके द् वा रा दर् ज कि या गया को ड ग़ लत है "
return
}
resp := & values . ActivityLuckyCodeDrawResp { }
a . Data = resp
code , _ := strconv . Atoi ( req . LuckyCode )
var reward int64
codeType := luckyCode . Type
data := & common . ActivityLuckyCodeData { UID : a . UID }
db . Mysql ( ) . Get ( data )
if ( codeType == common . LuckyCodeTypeNormal && util . IsSameDayTimeStamp ( now . Unix ( ) , data . LastDraw ) ) ||
( codeType == common . LuckyCodeTypeVip && util . IsSameDayTimeStamp ( now . Unix ( ) , data . LastVipDraw ) ) {
a . Code = values . CodeParam
a . Msg = "इस को ड का पहले ही उपयो ग कि या जा चु का है "
return
}
// 开始发奖
con := call . GetConfigAcitivityLuckyCode ( codeType )
total := call . GetConfigAcitivityLuckyCodeTotalWeight ( codeType )
if total == 0 {
log . Error ( "con:%+v invalid,uid:%d" , con , a . UID )
a . Code = values . CodeParam
a . Msg = "रू पा ं तरण को ड त् रु टि "
return
}
if data . ID == 0 {
codeData := & common . ActivityLuckyCodeData { UID : a . UID , Type : codeType }
if codeType == common . LuckyCodeTypeNormal {
codeData . LastDraw = now . Unix ( )
} else if codeType == common . LuckyCodeTypeVip {
codeData . LastVipDraw = now . Unix ( )
// 判断是否为分享吗
upShareInfo := call . GetShareInfoByCode ( req . LuckyCode )
if upShareInfo . ID > 0 {
if upShareInfo . UID == a . UID {
a . Code = values . CodeRetry
a . Msg = "code error"
return
}
err := db . Mysql ( ) . Create ( codeData )
shareInfo := call . GetShareInfo ( a . UID )
if shareInfo . UP1 > 0 {
a . Code = values . CodeRetry
a . Msg = "has binding"
return
}
call . ShareBind ( req . LuckyCode , true , a . UID , a . Channel )
reward = call . GetConfigPlatform ( ) . ShareBindReward
_ , err := call . UpdateCurrencyPro ( & common . UpdateCurrency {
CurrencyBalance : & common . CurrencyBalance {
UID : a . UID ,
Type : common . CurrencyINR ,
Value : reward ,
Event : common . CurrencyEventTask ,
Exi1 : code ,
NeedBet : call . GetConfigCurrencyResourceNeedBet ( common . CurrencyResourceBonus , reward ) ,
} ,
} )
if err != nil {
log . Error ( "err:%v" , err )
a . Code = values . CodeRetry
a . Msg = "code error"
return
}
} else {
updates := map [ string ] interface { } { }
if codeType == common . LuckyCodeTypeNormal {
updates [ "last_draw" ] = now . Unix ( )
} else if codeType == common . LuckyCodeTypeVip {
updates [ "last_vip_draw" ] = now . Unix ( )
}
rows , err := db . Mysql ( ) . UpdateRes ( & common . ActivityLuckyCodeData { UID : a . UID , LastDraw : data . LastDraw } , updates )
if rows == 0 || err != nil {
a . Code = values . CodeRetry
now := time . Now ( )
luckyCode := & common . ActivityLuckyCode { Code : code , Date : now . Format ( "20060102" ) }
if ! a . MGet ( luckyCode ) {
a . Code = values . CodeParam
a . Msg = "The code you entered is incorrect"
return
}
}
ran := rand . Int63n ( total )
var rans , reward int64
id := 0
for _ , v := range con {
rans += v . Per
if ran < rans {
id = v . ID
reward = v . Reward
break
codeType := luckyCode . Type
data := & common . ActivityLuckyCodeData { UID : a . UID }
db . Mysql ( ) . Get ( data )
if ( codeType == common . LuckyCodeTypeNormal && util . IsSameDayTimeStamp ( now . Unix ( ) , data . LastDraw ) ) ||
( codeType == common . LuckyCodeTypeVip && util . IsSameDayTimeStamp ( now . Unix ( ) , data . LastVipDraw ) ) {
a . Code = values . CodeParam
a . Msg = "This code has already been used"
return
}
// 开始发奖
con := call . GetConfigAcitivityLuckyCode ( codeType )
total := call . GetConfigAcitivityLuckyCodeTotalWeight ( codeType )
if total == 0 {
log . Error ( "con:%+v invalid,uid:%d" , con , a . UID )
a . Code = values . CodeParam
a . Msg = "code error"
return
}
if data . ID == 0 {
codeData := & common . ActivityLuckyCodeData { UID : a . UID , Type : codeType }
if codeType == common . LuckyCodeTypeNormal {
codeData . LastDraw = now . Unix ( )
} else if codeType == common . LuckyCodeTypeVip {
codeData . LastVipDraw = now . Unix ( )
}
err := db . Mysql ( ) . Create ( codeData )
if err != nil {
a . Code = values . CodeRetry
return
}
} else {
updates := map [ string ] interface { } { }
if codeType == common . LuckyCodeTypeNormal {
updates [ "last_draw" ] = now . Unix ( )
} else if codeType == common . LuckyCodeTypeVip {
updates [ "last_vip_draw" ] = now . Unix ( )
}
rows , err := db . Mysql ( ) . UpdateRes ( & common . ActivityLuckyCodeData { UID : a . UID , LastDraw : data . LastDraw } , updates )
if rows == 0 || err != nil {
a . Code = values . CodeRetry
return
}
}
}
_ , err := call . UpdateCurrencyPro ( & common . UpdateCurrency {
CurrencyBalance : & common . CurrencyBalance {
UID : a . UID ,
Type : common . CurrencyINR ,
Value : reward ,
Event : common . CurrencyEventTask ,
Exs1 : fmt . Sprintf ( "%d" , codeType ) ,
Exi1 : req . LuckyCode ,
NeedBet : call . GetConfigCurrencyResourceNeedBet ( common . CurrencyResourceBonus , reward ) ,
} ,
} )
if err != nil {
log . Error ( "err:%v" , err )
a . Code = values . CodeRetry
a . Msg = "रू पा ं तरण को ड त् रु टि "
return
ran := rand . Int63n ( total )
var rans int64
for _ , v := range con {
rans += v . Per
if ran < rans {
reward = v . Reward
break
}
}
_ , err := call . UpdateCurrencyPro ( & common . UpdateCurrency {
CurrencyBalance : & common . CurrencyBalance {
UID : a . UID ,
Type : common . CurrencyINR ,
Value : reward ,
Event : common . CurrencyEventTask ,
Exs1 : fmt . Sprintf ( "%d" , codeType ) ,
Exi1 : code ,
NeedBet : call . GetConfigCurrencyResourceNeedBet ( common . CurrencyResourceBonus , reward ) ,
} ,
} )
if err != nil {
log . Error ( "err:%v" , err )
a . Code = values . CodeRetry
a . Msg = "code error"
return
}
call . UploadActivityData ( a . UID , common . ActivityIDLuckyCode , common . ActivityDataJoin , reward )
}
call . UploadActivityData ( a . UID , common . ActivityIDLuckyCode , common . ActivityDataJoin , reward )
resp . ID = id
resp . Reward = rewar d
}
// day 二进制从0位开始,实际签到日期需减1
@ -1356,6 +1392,7 @@ func ActivityWeekCardInfo(c *gin.Context) {
if resp . Status && resp . RechargeStatus {
call . PushRed ( a . UID , pb . RedPointModule_RedPointWeekCard , 1 )
}
call . UploadActivityData ( a . UID , common . ActivityIDSign , common . ActivityDataClick , 0 )
}
func ActivityWeekCardDraw ( c * gin . Context ) {
@ -1481,7 +1518,7 @@ func ActivityWeekCardDraw(c *gin.Context) {
} )
}
call . PushRed ( a . UID , pb . RedPointModule_RedPointWeekCard , 0 )
call . UploadActivityData ( a . UID , common . ActivityIDSign , common . ActivityDataJoin , reward )
}
func ActivitySlotsInfo ( c * gin . Context ) {