|
|
|
|
@ -809,6 +809,17 @@ func Sign(day int) int { |
|
|
|
|
return ret |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// GetSignDay 获取签到天数
|
|
|
|
|
func GetSignDay(sign int) (day int) { |
|
|
|
|
for i := 0; i < 7; i++ { |
|
|
|
|
if sign&1 == 1 { |
|
|
|
|
day++ |
|
|
|
|
} |
|
|
|
|
sign >>= 1 |
|
|
|
|
} |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// CanSignDays 返回可以签到的天数
|
|
|
|
|
func CanSignDays(sign, day int) (ret []int) { |
|
|
|
|
for i := 0; i < day; i++ { |
|
|
|
|
@ -975,6 +986,172 @@ func ActivitySignDraw(c *gin.Context) { |
|
|
|
|
call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func GetSignNewInfo(uid int) (resp *values.ActivitySignInfoResp) { |
|
|
|
|
if !call.IsActivityValid(common.ActivityIDSign) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
data := &common.ActivitySignData{UID: uid} |
|
|
|
|
db.Mysql().Get(data) |
|
|
|
|
if data.ID == 0 { |
|
|
|
|
user, _ := call.GetUserXInfo(uid, "birth") |
|
|
|
|
db.Mysql().Create(&common.ActivitySignData{UID: uid, Time: user.Birth}) |
|
|
|
|
data.Time = user.Birth |
|
|
|
|
} |
|
|
|
|
list := call.GetConfigActivitySignByWheel(data.Wheel) |
|
|
|
|
if len(list) == 0 { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
resp = &values.ActivitySignInfoResp{List: list} |
|
|
|
|
if uid == 0 { |
|
|
|
|
resp.Day = 1 |
|
|
|
|
resp.CanSign = true |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
re := call.GetRechargeInfo(uid) |
|
|
|
|
playerData := call.GetPlayerData(uid) |
|
|
|
|
resp.RewardCount = data.Reward |
|
|
|
|
resp.LatestSignTime = data.SignTime |
|
|
|
|
resp.Recharge = re.DayRecharge |
|
|
|
|
resp.Bet = playerData.DayBet |
|
|
|
|
signDay := GetSignDay(data.Sign) |
|
|
|
|
resp.Sign = 7*(data.Wheel-1) + signDay |
|
|
|
|
resp.Day = signDay + 1 |
|
|
|
|
now := time.Now() |
|
|
|
|
if data.Finish || util.IsSameDayTimeStamp(now.Unix(), data.SignTime) { |
|
|
|
|
for _, v := range resp.List { |
|
|
|
|
if v.Day == signDay && data.Wheel >= v.WheelStart && data.Wheel <= v.WheelEnd { |
|
|
|
|
resp.Recharge = v.Recharge |
|
|
|
|
resp.Bet = v.Bet |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if util.IsSameDayTimeStamp(now.Unix(), data.SignTime) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
resp.CanSign = true |
|
|
|
|
if !data.Finish { |
|
|
|
|
for _, v := range resp.List { |
|
|
|
|
if v.Day == resp.Day && data.Wheel >= v.WheelStart && data.Wheel <= v.WheelEnd { |
|
|
|
|
if re.DayRecharge < v.Recharge || playerData.DayBet < v.Bet { |
|
|
|
|
resp.CanSign = false |
|
|
|
|
} |
|
|
|
|
// 更新状态
|
|
|
|
|
if err := db.Mysql().Update(&common.ActivitySignData{UID: data.UID}, map[string]interface{}{"finish": true}); err != nil { |
|
|
|
|
log.Error("err:%v", err) |
|
|
|
|
resp.CanSign = false |
|
|
|
|
} |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func ActivitySignNewInfo(c *gin.Context) { |
|
|
|
|
a := app.NewApp(c) |
|
|
|
|
defer func() { |
|
|
|
|
a.Response() |
|
|
|
|
}() |
|
|
|
|
if !a.CheckActivityExpire(common.ActivityIDSign) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
a.GetUID() |
|
|
|
|
resp := GetSignNewInfo(a.UID) |
|
|
|
|
if resp == nil { |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
a.Data = resp |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func ActivitySignNewDraw(c *gin.Context) { |
|
|
|
|
a := app.NewApp(c) |
|
|
|
|
defer func() { |
|
|
|
|
a.Response() |
|
|
|
|
}() |
|
|
|
|
if !a.CheckActivityExpire(common.ActivityIDSign) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
data := &common.ActivitySignData{UID: a.UID} |
|
|
|
|
db.Mysql().Get(data) |
|
|
|
|
if data.ID == 0 { |
|
|
|
|
user, _ := call.GetUserXInfo(a.UID, "birth") |
|
|
|
|
db.Mysql().Create(&common.ActivitySignData{UID: a.UID, Time: user.Birth}) |
|
|
|
|
data.Time = user.Birth |
|
|
|
|
} |
|
|
|
|
list := call.GetConfigActivitySignByWheel(data.Wheel) |
|
|
|
|
if len(list) == 0 { |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
now := time.Now() |
|
|
|
|
if util.IsSameDayTimeStamp(now.Unix(), data.SignTime) { |
|
|
|
|
// 已经签到
|
|
|
|
|
a.Code = values.CodeParam |
|
|
|
|
a.Msg = "Check-in repetido." |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 获取签到了几天
|
|
|
|
|
day := GetSignDay(data.Sign) + 1 |
|
|
|
|
var reward int64 |
|
|
|
|
for _, v := range list { |
|
|
|
|
if v.Day == day && data.Wheel >= v.WheelStart && data.Wheel <= v.WheelEnd { |
|
|
|
|
reward = v.Reward |
|
|
|
|
re := call.GetRechargeInfo(a.UID) |
|
|
|
|
playerData := call.GetPlayerData(a.UID) |
|
|
|
|
if re.DayRecharge < v.Recharge || playerData.DayBet < v.Bet { |
|
|
|
|
a.Code = values.CodeParam |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
break |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if reward == 0 { |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 如果签到了7天就重置
|
|
|
|
|
if day > 7 { |
|
|
|
|
rows, err := db.Mysql().UpdateRes(&common.ActivitySignData{UID: a.UID, Sign: data.Sign}, map[string]interface{}{"sign": 0, "wheel": gorm.Expr("wheel + ?", 1)}) |
|
|
|
|
if rows == 0 || err != nil { |
|
|
|
|
log.Error("err:%v", err) |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// ok
|
|
|
|
|
newSign := Sign(day) |
|
|
|
|
rows, err := db.Mysql().UpdateRes(&common.ActivitySignData{UID: a.UID, Sign: data.Sign}, map[string]interface{}{"sign": newSign, "finish": false, "reward": gorm.Expr("reward + ?", reward), "sign_time": now.Unix()}) |
|
|
|
|
if rows == 0 || err != nil { |
|
|
|
|
log.Error("err:%v", err) |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
_, err = call.UpdateCurrencyPro(&common.UpdateCurrency{ |
|
|
|
|
CurrencyBalance: &common.CurrencyBalance{ |
|
|
|
|
UID: a.UID, |
|
|
|
|
Type: common.CurrencyINR, |
|
|
|
|
ChannelID: a.Channel, |
|
|
|
|
Value: reward, |
|
|
|
|
Event: common.CurrencyEventActivitySign, |
|
|
|
|
NeedBet: call.GetConfigCurrencyResourceNeedBet(common.CurrencyResourceBonus, reward), |
|
|
|
|
}, |
|
|
|
|
}) |
|
|
|
|
if err != nil { |
|
|
|
|
log.Error("err:%v", err) |
|
|
|
|
a.Code = values.CodeRetry |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
a.Data = values.ActivitySignDrawResp{Reward: reward, Day: day, Sign: newSign} |
|
|
|
|
call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 破产礼包活动
|
|
|
|
|
func ActivityBreakGiftInfo(c *gin.Context) { |
|
|
|
|
a := app.NewApp(c) |
|
|
|
|
|