活动修改

dev
mofangmin 1 year ago
parent 241fdacda0
commit 755f712100
  1. 9
      call/config.go
  2. 8
      call/item.go
  3. 2
      call/mail.go
  4. 19
      call/pay.go
  5. 9
      call/redpoint.go
  6. 1
      common/player.go
  7. 1
      modules/backend/handler/examine/examine.go
  8. 1
      modules/pay/base/callback.go
  9. 58
      modules/web/handler/activity.go
  10. 11
      modules/web/handler/mail.go
  11. 1
      pb/proto/platform.proto

@ -1574,11 +1574,12 @@ func GetConfigDiscountTicket() []common.ConfigDiscountTicket {
return configDiscountTicket return configDiscountTicket
} }
func GetConfigDiscountTicketByAmount(amount int64) common.ConfigDiscountTicket { // GetConfigDiscountTicketByAmount 不存在就获取小一档的
func GetConfigDiscountTicketByAmount(amount int64) (ret common.ConfigDiscountTicket) {
for _, item := range configDiscountTicket { for _, item := range configDiscountTicket {
if item.RechargeAmount == amount { if item.RechargeAmount <= amount {
return item ret = item
} }
} }
return common.ConfigDiscountTicket{} return
} }

@ -42,10 +42,12 @@ func GetUserBestDiscountTicket(uid int) *common.PlayerItems {
return nil return nil
} }
func AddUserDiscountTicket(uid int, exi1, exi2, t int64) { func AddUserDiscountTicket(uid int, exi1, exi2, t, exi3 int64, notify bool) {
err := db.Mysql().Create(&common.PlayerItems{UID: uid, ItemID: common.ItemDiscountTicket, Time: t, Status: common.ItemStatusNormal, Exi1: exi1, Exi2: exi2}) err := db.Mysql().Create(&common.PlayerItems{UID: uid, ItemID: common.ItemDiscountTicket, Time: t, Status: common.ItemStatusNormal, Exi1: exi1, Exi2: exi2, Exi3: exi3})
if err != nil { if err != nil {
log.Error("AddUserDiscountTicket err:%v", err) log.Error("AddUserDiscountTicket err:%v", err)
} }
SendNR(uid, int(pb.ServerCommonResp_CommonDisCountTicketResp), &pb.DiscountTicketNotify{Discount: exi1, Amount: exi2}, "common") if notify {
SendNR(uid, int(pb.ServerCommonResp_CommonDisCountTicketResp), &pb.DiscountTicketNotify{Discount: exi1, Amount: exi2}, "common")
}
} }

@ -80,5 +80,5 @@ func SendMailWithContent(uid int, title, content string) {
} }
func SendMail(mail *common.Mail) { func SendMail(mail *common.Mail) {
db.Mysql().Create(mail) db.Mysql().Create(mail)
UpsertRedPointAndNotify(mail.Receiver, 1, ModuleMail) // UpsertRedPointAndNotify(mail.Receiver, 1, ModuleMail)
} }

@ -212,6 +212,7 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
// 以上逻辑为处理订单,更新玩家充值信息,给玩家加钱。 // 以上逻辑为处理订单,更新玩家充值信息,给玩家加钱。
// 下面逻辑处理活动,数据统计等,不影响以上效率,接下来逻辑并发执行 // 下面逻辑处理活动,数据统计等,不影响以上效率,接下来逻辑并发执行
util.Go(func() { util.Go(func() {
SendNR(r.UID, int(pb.ServerCommonResp_CommonUserInfoResp), &pb.PlayerBalanceResp{}, "common")
// 更新活动数据上传 // 更新活动数据上传
if bonus > 0 { if bonus > 0 {
UploadActivityData(uid, common.ActivityIDRecharge, common.ActivityDataJoin, bonus) UploadActivityData(uid, common.ActivityIDRecharge, common.ActivityDataJoin, bonus)
@ -238,14 +239,16 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
} }
log.Info("nextTicket:%v", nextTicket) log.Info("nextTicket:%v", nextTicket)
count := ticket.CurProb + ticket.NextProb count := ticket.CurProb + ticket.NextProb
val := rand.Intn(count) if count > 0 {
log.Info("val:%v", val) val := rand.Intn(count)
if val <= ticket.CurProb { log.Info("val:%v", val)
AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1) if val <= ticket.CurProb {
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1, 0, true)
} else if nextTicket.Id > 0 { SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits))
AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1) } else if nextTicket.Id > 0 {
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) AddUserDiscountTicket(uid, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1, 1, true)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits))
}
} }
} }
} }

@ -47,10 +47,11 @@ func UpsertRedPointAndNotify(uid, num int, module string) {
func PushMailRed(uid int) { func PushMailRed(uid int) {
redPoints := &common.PlayerRed{UID: uid} redPoints := &common.PlayerRed{UID: uid}
db.Mysql().Get(redPoints) db.Mysql().Get(redPoints)
checkMail(uid, redPoints) if redPoints.Mail > 0 {
one := new(pb.RedPoint) one := new(pb.RedPoint)
one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)}) one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)})
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common") SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
}
} }
func PushRed(uid int, module pb.RedPointModule, num uint32) { func PushRed(uid int, module pb.RedPointModule, num uint32) {

@ -176,6 +176,7 @@ type PlayerItems struct {
Status int `gorm:"column:status;type:int(11);default:0;comment:物品状态"` Status int `gorm:"column:status;type:int(11);default:0;comment:物品状态"`
Exi1 int64 `gorm:"column:exi1;type:bigint(20);default:0;comment:物品标识字段1"` Exi1 int64 `gorm:"column:exi1;type:bigint(20);default:0;comment:物品标识字段1"`
Exi2 int64 `gorm:"column:exi2;type:bigint(20);default:0;comment:物品标识字段2"` Exi2 int64 `gorm:"column:exi2;type:bigint(20);default:0;comment:物品标识字段2"`
Exi3 int64 `gorm:"column:exi3;type:bigint(20);default:0;comment:物品标识字段3"`
} }
func (p *PlayerItems) TableName() string { func (p *PlayerItems) TableName() string {

@ -178,6 +178,7 @@ func WithdrawExamine(c *gin.Context) {
if err != nil { if err != nil {
log.Error(err.Error()) log.Error(err.Error())
} }
call.SendMailWithContent(one.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawFail, one.OrderID, one.Amount/common.DecimalDigits))
return return
} }
call.SendMailWithContent(one.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawPass, one.OrderID, one.Amount/common.DecimalDigits)) call.SendMailWithContent(one.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawPass, one.OrderID, one.Amount/common.DecimalDigits))

@ -96,7 +96,6 @@ func (b *Base) WithdrawCallback(c *gin.Context) {
} }
if !success { if !success {
values.WithdrawAmount(values.PayWay(or.PayChannel), false, or.Amount*100) values.WithdrawAmount(values.PayWay(or.PayChannel), false, or.Amount*100)
call.SendMailWithContent(or.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawFail, or.OrderID, or.Amount/common.DecimalDigits))
} else { } else {
values.WithdrawSuccess(values.PayWay(or.PayChannel)) values.WithdrawSuccess(values.PayWay(or.PayChannel))
call.SendMailWithContent(or.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawSuccess, or.OrderID, or.Amount/common.DecimalDigits)) call.SendMailWithContent(or.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawSuccess, or.OrderID, or.Amount/common.DecimalDigits))

@ -1353,7 +1353,7 @@ func ActivityWeekCardInfo(c *gin.Context) {
resp.RewardDay = cardInfo.Day resp.RewardDay = cardInfo.Day
resp.ChannelList = call.GetConfigPayChannelsByID(common.CurrencyINR) resp.ChannelList = call.GetConfigPayChannelsByID(common.CurrencyINR)
resp.ProductList = call.GetConfigPayProductByActivityID(common.ActivityIDWeekCard) resp.ProductList = call.GetConfigPayProductByActivityID(common.ActivityIDWeekCard)
if resp.Status { if resp.Status && resp.RechargeStatus {
call.PushRed(a.UID, pb.RedPointModule_RedPointWeekCard, 1) call.PushRed(a.UID, pb.RedPointModule_RedPointWeekCard, 1)
} }
} }
@ -1408,44 +1408,60 @@ func ActivityWeekCardDraw(c *gin.Context) {
// 推送当前最高额度向上一档充值满减卷 // 推送当前最高额度向上一档充值满减卷
// 用户画像二:只解锁周卡,未充值的玩家 // 用户画像二:只解锁周卡,未充值的玩家
// 推送当前额度向下一档充值满减卷,最低300 // 推送当前额度向下一档充值满减卷,最低300
var list []common.CurrencyBalance
q := elastic.NewBoolQuery() q := elastic.NewBoolQuery()
q.Filter(elastic.NewRangeQuery("time").Gte(card.RechargeTime)) q.Filter(elastic.NewRangeQuery("time").Gte(card.RechargeTime))
q.Filter(elastic.NewRangeQuery("time").Lte(now)) q.Filter(elastic.NewRangeQuery("time").Lte(now))
q.Filter(elastic.NewRangeQuery("event").Gte(common.CurrencyEventReCharge)) q.Filter(elastic.NewRangeQuery("event").Gte(common.CurrencyEventReCharge))
q.Must(elastic.NewTermsQuery("uid", a.UID)) q.Must(elastic.NewTermsQuery("uid", a.UID))
count := db.ES().Count(common.ESIndexBalance, q) db.ES().QueryList(common.ESIndexBalance, 0, 100, q, &list, "time", true)
up := false up := false
if count >= 3 { maxAmount := card.RechargeAmount
if len(list) >= 3 {
up = true up = true
for _, item := range list {
if item.Value > maxAmount {
maxAmount = item.Value
}
}
} }
ticket := call.GetConfigDiscountTicketByAmount(int64(300) * common.DecimalDigits) log.Info("maxAmount:%v", maxAmount)
ticket := call.GetConfigDiscountTicketByAmount(maxAmount)
log.Info("ticket:%v", ticket) log.Info("ticket:%v", ticket)
if ticket.Id > 0 { if ticket.Id > 0 {
// 赠送优惠券 // 赠送优惠券
products := call.GetConfigPayProductByActivityID(0) tickets := call.GetConfigDiscountTicket()
nextProduct := &common.ConfigPayProduct{} sort.Slice(tickets, func(i, j int) bool {
for _, product := range products { return tickets[i].RechargeAmount < tickets[j].RechargeAmount
if product.Amount > card.RechargeAmount && nextProduct.Amount < product.Amount { })
nextProduct = product // 获取下一档
} else if product.Amount < card.RechargeAmount && nextProduct.Amount > product.Amount { nextIdx := -1
nextProduct = product for idx, item := range tickets {
if item.RechargeAmount == maxAmount {
if up {
nextIdx = idx + 1
} else if item.RechargeAmount >= 300*common.DecimalDigits {
nextIdx = idx - 1
}
break
} }
} }
var nextTicket common.ConfigDiscountTicket var nextTicket = ticket
if nextProduct != nil { if len(tickets) > nextIdx && nextIdx != -1 {
nextTicket = call.GetConfigDiscountTicketByAmount(nextProduct.Amount) nextTicket = tickets[nextIdx]
} }
if up { if up {
call.AddUserDiscountTicket(a.UID, ticket.DiscountAmount, ticket.RechargeAmount, -1) call.AddUserDiscountTicket(a.UID, ticket.DiscountAmount, ticket.RechargeAmount, -1, 0, false)
call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits))
resp.DiscountTicket = ticket.DiscountAmount
resp.Amount = ticket.RechargeAmount
} else if nextTicket.Id > 0 { } else if nextTicket.Id > 0 {
call.AddUserDiscountTicket(a.UID, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1) call.AddUserDiscountTicket(a.UID, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1, 1, false)
call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits))
resp.DiscountTicket = nextTicket.DiscountAmount
resp.Amount = nextTicket.RechargeAmount
} }
resp.DiscountTicket = ticket.DiscountAmount
resp.Amount = ticket.RechargeAmount
} }
} }
resource := common.CurrencyResourceWeekCard resource := common.CurrencyResourceWeekCard
if card.Day > 0 { if card.Day > 0 {

@ -43,6 +43,9 @@ func MailList(c *gin.Context) {
} }
a.Data = resp a.Data = resp
call.PushRed(a.UID, pb.RedPointModule_RedPointMail, 0) call.PushRed(a.UID, pb.RedPointModule_RedPointMail, 0)
db.Mysql().Update(&common.PlayerRed{UID: a.UID}, map[string]interface{}{
"mail": 0,
})
} }
func ReadMail(c *gin.Context) { func ReadMail(c *gin.Context) {
@ -73,8 +76,9 @@ func ReadMail(c *gin.Context) {
a.Code = values.CodeRetry a.Code = values.CodeRetry
return return
} }
call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail) // call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail)
a.Data = values.ReadMailResp{Mail: *one} a.Data = values.ReadMailResp{Mail: *one}
} }
// func DrawMail(c *gin.Context) { // func DrawMail(c *gin.Context) {
@ -147,7 +151,6 @@ func DeleteMail(c *gin.Context) {
if !a.S(req) { if !a.S(req) {
return return
} }
count := 0
for _, v := range req.ID { for _, v := range req.ID {
// id, err := strconv.Atoi(v) // id, err := strconv.Atoi(v)
// if err != nil { // if err != nil {
@ -173,9 +176,6 @@ func DeleteMail(c *gin.Context) {
count++ count++
} }
} }
if count > 0 {
call.UpsertRedPointAndNotify(a.UID, -count, call.ModuleMail)
}
} }
func DeleteMailAll(c *gin.Context) { func DeleteMailAll(c *gin.Context) {
@ -188,5 +188,4 @@ func DeleteMailAll(c *gin.Context) {
a.Code = values.CodeRetry a.Code = values.CodeRetry
return return
} }
call.UpsertRedPointAndNotify(a.UID, 0, call.ModuleMail)
} }

@ -113,6 +113,7 @@ enum ServerCommonResp{
CommonVipResp = 5; // ActivityResp CommonVipResp = 5; // ActivityResp
CommonBroadcastResp = 6; // 广 CommonBroadcastResp = 6; // 广
CommonDisCountTicketResp = 7; // CommonDisCountTicketResp = 7; //
CommonUserInfoResp = 8; //
} }
// //

Loading…
Cancel
Save