优惠券通知

dev
mofangmin 1 year ago
parent 452911d4a9
commit 241fdacda0
  1. 10
      call/item.go
  2. 34
      call/pay.go
  3. 1
      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/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")
}

@ -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))
}
}

@ -9,3 +9,4 @@ cd pb/proto
cd ../..
#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 gameserver main.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"`

@ -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,

@ -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)

Loading…
Cancel
Save