新版签到

pull/9/head
mofangmin 1 year ago
parent df454d6808
commit 3ce53f75a5
  1. 9
      call/config.go
  2. 11
      call/user.go
  3. 7
      common/activity.go
  4. 2
      common/player.go
  5. 177
      modules/web/handler/activity.go
  6. 1
      modules/web/middleware/token.go
  7. 3
      modules/web/routers/routers_activity.go
  8. 6
      modules/web/values/activity.go

@ -1260,6 +1260,15 @@ func GetConfigActivitySign() []*common.ConfigActivitySign {
return configActivitySign return configActivitySign
} }
func GetConfigActivitySignByWheel(wheel int) (ret []*common.ConfigActivitySign) {
for _, conf := range configActivitySign {
if wheel >= conf.WheelStart && wheel <= conf.WheelEnd {
ret = append(ret, conf)
}
}
return
}
func LoadConfigActivityBreakGift() (err error) { func LoadConfigActivityBreakGift() (err error) {
list := []*common.ConfigActivityBreakGift{} list := []*common.ConfigActivityBreakGift{}
if _, err = db.Mysql().QueryAll("", "recharge_down", &common.ConfigActivityBreakGift{}, &list); err != nil { if _, err = db.Mysql().QueryAll("", "recharge_down", &common.ConfigActivityBreakGift{}, &list); err != nil {

@ -586,10 +586,21 @@ func UpdatePlayerProfile(data *common.ESGameData) error {
} }
util.Go(func() { util.Go(func() {
now := time.Now()
// 更新vip // 更新vip
UpdateVip(uid, 0, bet, settle) UpdateVip(uid, 0, bet, settle)
// 检查任务 // 检查任务
CheckTask(Task{Uid: uid, Value: bet / 100, Types: []common.TaskType{common.TaskTypePlayGame, common.TaskTypeBet1000, common.TaskTypeBet10000}}) CheckTask(Task{Uid: uid, Value: bet / 100, Types: []common.TaskType{common.TaskTypePlayGame, common.TaskTypeBet1000, common.TaskTypeBet10000}})
// 日打码量
playerData := GetPlayerData(uid)
updates := make(map[string]interface{})
if util.IsSameDayTimeStamp(now.Unix(), playerData.DayBetTime) {
updates["day_bet_time"] = now.Unix()
updates["day_bet"] = 0
} else {
updates["day_bet"] = gorm.Expr("bet + ?", bet)
}
db.Mysql().Update(&common.PlayerData{UID: uid}, updates)
}) })
// 写入es // 写入es

@ -260,8 +260,11 @@ func (c *ActivityLuckyCode) TableName() string {
type ConfigActivitySign struct { type ConfigActivitySign struct {
ID int `gorm:"primarykey"` ID int `gorm:"primarykey"`
Day int `gorm:"column:day;type:int(11);default:1;comment:签到天数" web:"day"` Day int `gorm:"column:day;type:int(11);default:1;comment:签到天数" web:"day"`
WheelStart int `gorm:"column:wheel_start;type:int(11);default:1;comment:开始期数" web:"wheel_start"`
WheelEnd int `gorm:"column:wheel_end;type:int(11);default:1;comment:结束期数" web:"wheel_end"`
Reward int64 `gorm:"column:reward;not null;type:bigint(20);comment:奖励" web:"reward"` Reward int64 `gorm:"column:reward;not null;type:bigint(20);comment:奖励" web:"reward"`
Recharge int64 `gorm:"column:recharge;type:bigint(20);default:0;comment:所需充值金额" web:"recharge"` Recharge int64 `gorm:"column:recharge;type:bigint(20);default:0;comment:所需充值金额" web:"recharge"`
Bet int64 `gorm:"column:bet;type:bigint(20);default:0;comment:打码量" web:"bet"`
} }
func (c *ConfigActivitySign) TableName() string { func (c *ConfigActivitySign) TableName() string {
@ -272,7 +275,11 @@ type ActivitySignData struct {
ID int `gorm:"primarykey"` ID int `gorm:"primarykey"`
UID int `gorm:"column:uid;type:int(11);uniqueIndex:uid"` UID int `gorm:"column:uid;type:int(11);uniqueIndex:uid"`
Sign int `gorm:"column:sign;type:int(11);comment:签到天数,二进制"` Sign int `gorm:"column:sign;type:int(11);comment:签到天数,二进制"`
Wheel int `gorm:"column:wheel;type:int(11);default:1;comment:第几轮签到"`
Time int64 `gorm:"column:time;type:bigint(20);comment:首次参与时间"` Time int64 `gorm:"column:time;type:bigint(20);comment:首次参与时间"`
Finish bool `gorm:"column:finish;type:tinyint;default:0;comment:当前签到状态"`
Reward int64 `gorm:"column:reward;type:bigint(20);default:0;comment:累计领取奖励"`
SignTime int64 `gorm:"column:sign_time;type:bigint(20);comment:签到时间"`
} }
func (c *ActivitySignData) TableName() string { func (c *ActivitySignData) TableName() string {

@ -134,6 +134,8 @@ type PlayerData struct {
LastSysEmailDraw int64 `gorm:"column:last_sys_email_draw;type:bigint(20);default:0;comment:最近一次接收系统邮件的时间"` LastSysEmailDraw int64 `gorm:"column:last_sys_email_draw;type:bigint(20);default:0;comment:最近一次接收系统邮件的时间"`
LastAppSpinDraw int64 `gorm:"column:last_app_spin_draw;type:bigint(20);default:0;comment:上次领取app下载转盘的时间"` LastAppSpinDraw int64 `gorm:"column:last_app_spin_draw;type:bigint(20);default:0;comment:上次领取app下载转盘的时间"`
FeedbackTime int64 `gorm:"column:feedback_time;type:bigint(20);default:0;comment:完成问卷调查的时间"` FeedbackTime int64 `gorm:"column:feedback_time;type:bigint(20);default:0;comment:完成问卷调查的时间"`
DayBet int64 `gorm:"column:day_bet;type:bigint(20);default:0;comment:日打码"`
DayBetTime int64 `gorm:"column:day_bet_time;type:bigint(20);default:0;comment:修改时间"`
} }
func (u *PlayerData) TableName() string { func (u *PlayerData) TableName() string {

@ -809,6 +809,17 @@ func Sign(day int) int {
return ret return ret
} }
// GetSignDay 获取签到天数
func GetSignDay(sign int) (day int) {
for i := 0; i < 7; i++ {
if sign&1 == 1 {
day++
}
sign >>= 1
}
return
}
// CanSignDays 返回可以签到的天数 // CanSignDays 返回可以签到的天数
func CanSignDays(sign, day int) (ret []int) { func CanSignDays(sign, day int) (ret []int) {
for i := 0; i < day; i++ { for i := 0; i < day; i++ {
@ -975,6 +986,172 @@ func ActivitySignDraw(c *gin.Context) {
call.UploadActivityData(a.UID, common.ActivityIDSign, common.ActivityDataJoin, reward) 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) { func ActivityBreakGiftInfo(c *gin.Context) {
a := app.NewApp(c) a := app.NewApp(c)

@ -51,6 +51,7 @@ var (
"/activity/sign/info": {}, "/activity/sign/info": {},
"/ad/uploadFB": {}, "/ad/uploadFB": {},
"/activity/slots/info": {}, "/activity/slots/info": {},
"/activity/sign/new/info": {},
} }
) )

@ -25,6 +25,9 @@ func activity(e *gin.RouterGroup) {
e.POST("/activity/luckyCode/draw", handler.ActivityLuckyCodeDraw) e.POST("/activity/luckyCode/draw", handler.ActivityLuckyCodeDraw)
e.POST("/activity/sign/info", handler.ActivitySignInfo) e.POST("/activity/sign/info", handler.ActivitySignInfo)
e.POST("/activity/sign/draw", handler.ActivitySignDraw) e.POST("/activity/sign/draw", handler.ActivitySignDraw)
// 新版签到
e.POST("/activity/sign/new/info", handler.ActivitySignNewInfo)
e.POST("/activity/sign/new/draw", handler.ActivitySignNewDraw)
e.POST("/activity/breakGift/info", handler.ActivityBreakGiftInfo) e.POST("/activity/breakGift/info", handler.ActivityBreakGiftInfo)
e.POST("/activity/weekCard/info", handler.ActivityWeekCardInfo) e.POST("/activity/weekCard/info", handler.ActivityWeekCardInfo)
e.POST("/activity/weekCard/draw", handler.ActivityWeekCardDraw) e.POST("/activity/weekCard/draw", handler.ActivityWeekCardDraw)

@ -83,9 +83,13 @@ type ActivityLuckyCodeDrawResp struct {
// CanSign 能否签到 // CanSign 能否签到
type ActivitySignInfoResp struct { type ActivitySignInfoResp struct {
List []*common.ConfigActivitySign List []*common.ConfigActivitySign
Sign int Sign int // 累计天数
Day int Day int
CanSign bool CanSign bool
Recharge int64 // 充值金额
Bet int64 // 下注额度
RewardCount int64 // 累计奖金
LatestSignTime int64 // 最新签到时间
} }
type ActivitySignDrawResp struct { type ActivitySignDrawResp struct {

Loading…
Cancel
Save