From 241fdacda05471706358af6f6b3a1cbfeb6edb19 Mon Sep 17 00:00:00 2001 From: mofangmin Date: Thu, 29 Aug 2024 18:14:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- call/item.go | 10 +++++++--- call/pay.go | 34 +++++++++++++++++++++------------ cmd/build.sh | 3 ++- common/activity.go | 4 ++++ modules/web/handler/activity.go | 7 ++++--- modules/web/handler/recharge.go | 1 - 6 files changed, 39 insertions(+), 20 deletions(-) diff --git a/call/item.go b/call/item.go index c1c5e78..89cbe5c 100644 --- a/call/item.go +++ b/call/item.go @@ -5,6 +5,8 @@ import ( "server/common" "server/db" "server/pb" + + "github.com/liangdas/mqant/log" ) 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) { - 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}) - + err := db.Mysql().Create(&common.PlayerItems{UID: uid, ItemID: common.ItemDiscountTicket, Time: t, Status: common.ItemStatusNormal, Exi1: exi1, Exi2: exi2}) + if err != nil { + log.Error("AddUserDiscountTicket err:%v", err) + } + SendNR(uid, int(pb.ServerCommonResp_CommonDisCountTicketResp), &pb.DiscountTicketNotify{Discount: exi1, Amount: exi2}, "common") } diff --git a/call/pay.go b/call/pay.go index 7edd4bf..5d607b0 100644 --- a/call/pay.go +++ b/call/pay.go @@ -14,6 +14,7 @@ import ( "server/natsClient" "server/pb" "server/util" + "sort" "time" "github.com/gogo/protobuf/proto" @@ -40,7 +41,7 @@ func GetRechargeInfo(uid int) *common.RechargeInfo { // Recharge 内部充值调用 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() module := "pay" if data.PaySource == common.PaySourceBlockPay { @@ -173,10 +174,13 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s // 第三步,给玩家发货 // 正常商城充值 var bonus = r.Bonus + discountOriginAmount := r.Amount // 折扣前的价格 if r.ProductID == 0 { amount := PayExtra(r) // 判断特殊购买,如优惠券 if amount == 0 { amount = r.Amount + } else { + discountOriginAmount = amount } t := common.CurrencyResourceRecharge 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) } if r.ProductID == 0 { - ticket := GetConfigDiscountTicketByAmount(r.Amount) + ticket := GetConfigDiscountTicketByAmount(discountOriginAmount) log.Info("ticket:%v", ticket) if ticket.Id > 0 { // 赠送优惠券 - products := GetConfigPayProductByActivityID(0) - nextProduct := &common.ConfigPayProduct{} - for _, product := range products { - if product.Amount > r.Amount && nextProduct.Amount < product.Amount { - nextProduct = product + tickets := GetConfigDiscountTicket() + sort.Slice(tickets, func(i, j int) bool { + return tickets[i].RechargeAmount < tickets[j].RechargeAmount + }) + // 获取下一档 + nextIdx := -1 + for idx, product := range tickets { + if product.RechargeAmount == discountOriginAmount { + nextIdx = idx + 1 } } - var nextTicket common.ConfigDiscountTicket - if nextProduct != nil { - nextTicket = GetConfigDiscountTicketByAmount(nextProduct.Amount) + var nextTicket = ticket + if len(tickets) > nextIdx && nextIdx != -1 { + nextTicket = tickets[nextIdx] } + 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.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)) } 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)) } } diff --git a/cmd/build.sh b/cmd/build.sh index 4b29610..037ba5e 100644 --- a/cmd/build.sh +++ b/cmd/build.sh @@ -8,4 +8,5 @@ cd pb/proto # go generate cd ../.. #go build main.go -CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o indiaprovider main.go \ No newline at end of file +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 \ No newline at end of file diff --git a/common/activity.go b/common/activity.go index 245ca2e..69ae928 100644 --- a/common/activity.go +++ b/common/activity.go @@ -546,6 +546,10 @@ type ConfigActivityPopup struct { AdditionalInfo string `gorm:"column:additional_info;type:text;comment:附加信息" web:"additional_info"` } +func (m *ConfigActivityPopup) TableName() string { + return "config_activity_popup" +} + type ConfigDiscountTicket struct { 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"` diff --git a/modules/web/handler/activity.go b/modules/web/handler/activity.go index 9a4661a..6cba84c 100644 --- a/modules/web/handler/activity.go +++ b/modules/web/handler/activity.go @@ -1436,10 +1436,10 @@ func ActivityWeekCardDraw(c *gin.Context) { nextTicket = call.GetConfigDiscountTicketByAmount(nextProduct.Amount) } 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)) } 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)) } resp.DiscountTicket = ticket.DiscountAmount @@ -2130,7 +2130,8 @@ func DiscountTicketInfo(c *gin.Context) { sort.Slice(list, func(i, j int) bool { 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{ Amount: list[0].Exi1, Discount: list[0].Exi2, diff --git a/modules/web/handler/recharge.go b/modules/web/handler/recharge.go index fc56f82..b94764c 100644 --- a/modules/web/handler/recharge.go +++ b/modules/web/handler/recharge.go @@ -247,7 +247,6 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI order.Extra = string(ticketByte) req.Amount = common.RoundCurrency(common.CurrencyINR, req.Amount-ticket.Exi1) order.Amount = req.Amount - db.Mysql().Update(&common.PlayerItems{ID: ticket.ID}, map[string]interface{}{"status": common.ItemStatusInvalid}) } } re := call.GetRechargeInfo(uid)