活动修改

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
}
func GetConfigDiscountTicketByAmount(amount int64) common.ConfigDiscountTicket {
// GetConfigDiscountTicketByAmount 不存在就获取小一档的
func GetConfigDiscountTicketByAmount(amount int64) (ret common.ConfigDiscountTicket) {
for _, item := range configDiscountTicket {
if item.RechargeAmount == amount {
return item
if item.RechargeAmount <= amount {
ret = item
}
}
return common.ConfigDiscountTicket{}
return
}

@ -42,10 +42,12 @@ func GetUserBestDiscountTicket(uid int) *common.PlayerItems {
return nil
}
func AddUserDiscountTicket(uid int, exi1, exi2, t int64) {
err := db.Mysql().Create(&common.PlayerItems{UID: uid, ItemID: common.ItemDiscountTicket, Time: t, Status: common.ItemStatusNormal, Exi1: exi1, Exi2: exi2})
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, Exi3: exi3})
if err != nil {
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) {
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() {
SendNR(r.UID, int(pb.ServerCommonResp_CommonUserInfoResp), &pb.PlayerBalanceResp{}, "common")
// 更新活动数据上传
if bonus > 0 {
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)
count := ticket.CurProb + ticket.NextProb
val := rand.Intn(count)
log.Info("val:%v", val)
if val <= ticket.CurProb {
AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
} else if nextTicket.Id > 0 {
AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
if count > 0 {
val := rand.Intn(count)
log.Info("val:%v", val)
if val <= ticket.CurProb {
AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1, 0, true)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.DiscountAmount/common.DecimalDigits, ticket.RechargeAmount/common.DecimalDigits))
} else if nextTicket.Id > 0 {
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) {
redPoints := &common.PlayerRed{UID: uid}
db.Mysql().Get(redPoints)
checkMail(uid, redPoints)
one := new(pb.RedPoint)
one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)})
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
if redPoints.Mail > 0 {
one := new(pb.RedPoint)
one.List = append(one.List, &pb.RedInfo{ModuleName: pb.RedPointModule_RedPointMail, Num: uint32(redPoints.Mail)})
SendNR(uid, int(pb.ServerCommonResp_CommonRedPointResp), one, "common")
}
}
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:物品状态"`
Exi1 int64 `gorm:"column:exi1;type:bigint(20);default:0;comment:物品标识字段1"`
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 {

@ -178,6 +178,7 @@ func WithdrawExamine(c *gin.Context) {
if err != nil {
log.Error(err.Error())
}
call.SendMailWithContent(one.UID, call.SystemTitle, fmt.Sprintf(call.EmailWithdrawFail, one.OrderID, one.Amount/common.DecimalDigits))
return
}
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 {
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 {
values.WithdrawSuccess(values.PayWay(or.PayChannel))
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.ChannelList = call.GetConfigPayChannelsByID(common.CurrencyINR)
resp.ProductList = call.GetConfigPayProductByActivityID(common.ActivityIDWeekCard)
if resp.Status {
if resp.Status && resp.RechargeStatus {
call.PushRed(a.UID, pb.RedPointModule_RedPointWeekCard, 1)
}
}
@ -1408,44 +1408,60 @@ func ActivityWeekCardDraw(c *gin.Context) {
// 推送当前最高额度向上一档充值满减卷
// 用户画像二:只解锁周卡,未充值的玩家
// 推送当前额度向下一档充值满减卷,最低300
var list []common.CurrencyBalance
q := elastic.NewBoolQuery()
q.Filter(elastic.NewRangeQuery("time").Gte(card.RechargeTime))
q.Filter(elastic.NewRangeQuery("time").Lte(now))
q.Filter(elastic.NewRangeQuery("event").Gte(common.CurrencyEventReCharge))
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
if count >= 3 {
maxAmount := card.RechargeAmount
if len(list) >= 3 {
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)
if ticket.Id > 0 {
// 赠送优惠券
products := call.GetConfigPayProductByActivityID(0)
nextProduct := &common.ConfigPayProduct{}
for _, product := range products {
if product.Amount > card.RechargeAmount && nextProduct.Amount < product.Amount {
nextProduct = product
} else if product.Amount < card.RechargeAmount && nextProduct.Amount > product.Amount {
nextProduct = product
tickets := call.GetConfigDiscountTicket()
sort.Slice(tickets, func(i, j int) bool {
return tickets[i].RechargeAmount < tickets[j].RechargeAmount
})
// 获取下一档
nextIdx := -1
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
if nextProduct != nil {
nextTicket = call.GetConfigDiscountTicketByAmount(nextProduct.Amount)
var nextTicket = ticket
if len(tickets) > nextIdx && nextIdx != -1 {
nextTicket = tickets[nextIdx]
}
if up {
call.AddUserDiscountTicket(a.UID, ticket.DiscountAmount, ticket.RechargeAmount, -1)
call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
call.AddUserDiscountTicket(a.UID, ticket.DiscountAmount, ticket.RechargeAmount, -1, 0, false)
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 {
call.AddUserDiscountTicket(a.UID, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1)
call.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
call.AddUserDiscountTicket(a.UID, nextTicket.DiscountAmount, nextTicket.RechargeAmount, -1, 1, false)
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
if card.Day > 0 {

@ -43,6 +43,9 @@ func MailList(c *gin.Context) {
}
a.Data = resp
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) {
@ -73,8 +76,9 @@ func ReadMail(c *gin.Context) {
a.Code = values.CodeRetry
return
}
call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail)
// call.UpsertRedPointAndNotify(a.UID, -1, call.ModuleMail)
a.Data = values.ReadMailResp{Mail: *one}
}
// func DrawMail(c *gin.Context) {
@ -147,7 +151,6 @@ func DeleteMail(c *gin.Context) {
if !a.S(req) {
return
}
count := 0
for _, v := range req.ID {
// id, err := strconv.Atoi(v)
// if err != nil {
@ -173,9 +176,6 @@ func DeleteMail(c *gin.Context) {
count++
}
}
if count > 0 {
call.UpsertRedPointAndNotify(a.UID, -count, call.ModuleMail)
}
}
func DeleteMailAll(c *gin.Context) {
@ -188,5 +188,4 @@ func DeleteMailAll(c *gin.Context) {
a.Code = values.CodeRetry
return
}
call.UpsertRedPointAndNotify(a.UID, 0, call.ModuleMail)
}

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

Loading…
Cancel
Save