优惠券通知

dev
mofangmin 1 year ago
parent 452911d4a9
commit 241fdacda0
  1. 10
      call/item.go
  2. 34
      call/pay.go
  3. 3
      cmd/build.sh
  4. 4
      common/activity.go
  5. 7
      modules/web/handler/activity.go
  6. 1
      modules/web/handler/recharge.go

@ -5,6 +5,8 @@ import (
"server/common" "server/common"
"server/db" "server/db"
"server/pb" "server/pb"
"github.com/liangdas/mqant/log"
) )
func GetUserItem(uid, itemID int) []*common.PlayerItems { func GetUserItem(uid, itemID int) []*common.PlayerItems {
@ -41,7 +43,9 @@ func GetUserBestDiscountTicket(uid int) *common.PlayerItems {
} }
func AddUserDiscountTicket(uid int, exi1, exi2, t int64) { func AddUserDiscountTicket(uid int, exi1, exi2, t int64) {
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})
SendNR(uid, int(pb.ServerCommonResp_CommonDisCountTicketResp), &pb.DiscountTicketNotify{Discount: exi1, Amount: exi2}) if err != nil {
log.Error("AddUserDiscountTicket err:%v", err)
}
SendNR(uid, int(pb.ServerCommonResp_CommonDisCountTicketResp), &pb.DiscountTicketNotify{Discount: exi1, Amount: exi2}, "common")
} }

@ -14,6 +14,7 @@ import (
"server/natsClient" "server/natsClient"
"server/pb" "server/pb"
"server/util" "server/util"
"sort"
"time" "time"
"github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/proto"
@ -40,7 +41,7 @@ func GetRechargeInfo(uid int) *common.RechargeInfo {
// Recharge 内部充值调用 // Recharge 内部充值调用
func Recharge(data *pb.InnerRechargeReq) (*pb.InnerRechargeResp, error) { func Recharge(data *pb.InnerRechargeReq) (*pb.InnerRechargeResp, error) {
to, cancel := context.WithTimeout(context.Background(), 5*time.Second) to, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() defer cancel()
module := "pay" module := "pay"
if data.PaySource == common.PaySourceBlockPay { if data.PaySource == common.PaySourceBlockPay {
@ -173,10 +174,13 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
// 第三步,给玩家发货 // 第三步,给玩家发货
// 正常商城充值 // 正常商城充值
var bonus = r.Bonus var bonus = r.Bonus
discountOriginAmount := r.Amount // 折扣前的价格
if r.ProductID == 0 { if r.ProductID == 0 {
amount := PayExtra(r) // 判断特殊购买,如优惠券 amount := PayExtra(r) // 判断特殊购买,如优惠券
if amount == 0 { if amount == 0 {
amount = r.Amount amount = r.Amount
} else {
discountOriginAmount = amount
} }
t := common.CurrencyResourceRecharge t := common.CurrencyResourceRecharge
if notCharge && bonus > 0 { // 首充 if notCharge && bonus > 0 { // 首充
@ -213,28 +217,34 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
UploadActivityData(uid, common.ActivityIDRecharge, common.ActivityDataJoin, bonus) UploadActivityData(uid, common.ActivityIDRecharge, common.ActivityDataJoin, bonus)
} }
if r.ProductID == 0 { if r.ProductID == 0 {
ticket := GetConfigDiscountTicketByAmount(r.Amount) ticket := GetConfigDiscountTicketByAmount(discountOriginAmount)
log.Info("ticket:%v", ticket) log.Info("ticket:%v", ticket)
if ticket.Id > 0 { if ticket.Id > 0 {
// 赠送优惠券 // 赠送优惠券
products := GetConfigPayProductByActivityID(0) tickets := 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 > r.Amount && nextProduct.Amount < product.Amount { })
nextProduct = product // 获取下一档
nextIdx := -1
for idx, product := range tickets {
if product.RechargeAmount == discountOriginAmount {
nextIdx = idx + 1
} }
} }
var nextTicket common.ConfigDiscountTicket var nextTicket = ticket
if nextProduct != nil { if len(tickets) > nextIdx && nextIdx != -1 {
nextTicket = GetConfigDiscountTicketByAmount(nextProduct.Amount) nextTicket = tickets[nextIdx]
} }
log.Info("nextTicket:%v", nextTicket)
count := ticket.CurProb + ticket.NextProb count := ticket.CurProb + ticket.NextProb
val := rand.Intn(count) val := rand.Intn(count)
log.Info("val:%v", val)
if val <= ticket.CurProb { if val <= ticket.CurProb {
AddUserDiscountTicket(uid, ticket.RechargeAmount, ticket.DiscountAmount, -1) AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
} else if nextTicket.Id > 0 { } else if nextTicket.Id > 0 {
AddUserDiscountTicket(uid, nextTicket.RechargeAmount, nextTicket.DiscountAmount, -1) AddUserDiscountTicket(uid, ticket.DiscountAmount, ticket.RechargeAmount, -1)
SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits)) SendMailWithContent(uid, SystemTitle, fmt.Sprintf(EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
} }
} }

@ -8,4 +8,5 @@ cd pb/proto
# go generate # go generate
cd ../.. cd ../..
#go build main.go #go build main.go
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o indiaprovider main.go CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o indiaprovider main.go
#CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o gameserver main.go

@ -546,6 +546,10 @@ type ConfigActivityPopup struct {
AdditionalInfo string `gorm:"column:additional_info;type:text;comment:附加信息" web:"additional_info"` AdditionalInfo string `gorm:"column:additional_info;type:text;comment:附加信息" web:"additional_info"`
} }
func (m *ConfigActivityPopup) TableName() string {
return "config_activity_popup"
}
type ConfigDiscountTicket struct { type ConfigDiscountTicket struct {
Id int `gorm:"column:id;type:int(11) AUTO_INCREMENT;primary_key" json:"id"` Id int `gorm:"column:id;type:int(11) AUTO_INCREMENT;primary_key" json:"id"`
RechargeAmount int64 `gorm:"column:recharge_amount;type:bigint(20)" json:"recharge_amount"` RechargeAmount int64 `gorm:"column:recharge_amount;type:bigint(20)" json:"recharge_amount"`

@ -1436,10 +1436,10 @@ func ActivityWeekCardDraw(c *gin.Context) {
nextTicket = call.GetConfigDiscountTicketByAmount(nextProduct.Amount) nextTicket = call.GetConfigDiscountTicketByAmount(nextProduct.Amount)
} }
if up { if up {
call.AddUserDiscountTicket(a.UID, ticket.RechargeAmount, ticket.DiscountAmount, -1) 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.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
} else if nextTicket.Id > 0 { } else if nextTicket.Id > 0 {
call.AddUserDiscountTicket(a.UID, nextTicket.RechargeAmount, nextTicket.DiscountAmount, -1) 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.SendMailWithContent(a.UID, call.SystemTitle, fmt.Sprintf(call.EmailDiscount, ticket.RechargeAmount/common.DecimalDigits, ticket.DiscountAmount/common.DecimalDigits))
} }
resp.DiscountTicket = ticket.DiscountAmount resp.DiscountTicket = ticket.DiscountAmount
@ -2130,7 +2130,8 @@ func DiscountTicketInfo(c *gin.Context) {
sort.Slice(list, func(i, j int) bool { sort.Slice(list, func(i, j int) bool {
return list[i].Exi2 > list[i].Exi2 return list[i].Exi2 > list[i].Exi2
}) })
if len(list) > 0 { currency := call.GetUserCurrency(a.UID, common.CurrencyINR)
if len(list) > 0 && currency <= config.GetConfig().Web.BreakLimit {
resp.Ticket = &values.DiscountTicketInfo{ resp.Ticket = &values.DiscountTicketInfo{
Amount: list[0].Exi1, Amount: list[0].Exi1,
Discount: list[0].Exi2, Discount: list[0].Exi2,

@ -247,7 +247,6 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI
order.Extra = string(ticketByte) order.Extra = string(ticketByte)
req.Amount = common.RoundCurrency(common.CurrencyINR, req.Amount-ticket.Exi1) req.Amount = common.RoundCurrency(common.CurrencyINR, req.Amount-ticket.Exi1)
order.Amount = req.Amount order.Amount = req.Amount
db.Mysql().Update(&common.PlayerItems{ID: ticket.ID}, map[string]interface{}{"status": common.ItemStatusInvalid})
} }
} }
re := call.GetRechargeInfo(uid) re := call.GetRechargeInfo(uid)

Loading…
Cancel
Save