消码配置

dev_aagame_provider
zhora 1 month ago
parent 6612c79f97
commit 772b65fd19
  1. 17
      call/config.go
  2. 44
      call/pay.go
  3. 9
      call/reload.go
  4. 3
      call/user.go
  5. 16
      common/config.go
  6. 1
      common/recharge.go
  7. 8
      modules/backend/handler/guser/getGameUserRechargeHistory.go
  8. 1
      modules/backend/migrate.go
  9. 2
      modules/backend/values/gm.go
  10. 5
      modules/web/handler/recharge.go

@ -100,6 +100,8 @@ var (
configWeekCard *common.ConfigWeekCard configWeekCard *common.ConfigWeekCard
configRtpControl []*common.ConfigRtpControl configRtpControl []*common.ConfigRtpControl
configEliminateBet common.ConfigEliminateBet
) )
var ( var (
@ -2590,3 +2592,18 @@ func LoadConfigRtpControl() (err error) {
func GetConfigRtpControl() []*common.ConfigRtpControl { func GetConfigRtpControl() []*common.ConfigRtpControl {
return configRtpControl return configRtpControl
} }
func LoadConfigEliminateBet() (err error) {
var result common.ConfigEliminateBet
err = db.Mysql().C().Model(&common.ConfigEliminateBet{}).Find(&result).Error
if err != nil {
log.Error("err:%v", err)
return err
}
configEliminateBet = result
return nil
}
func GetConfigEliminateBet() common.ConfigEliminateBet {
return configEliminateBet
}

@ -155,6 +155,47 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
return nil return nil
} }
if re.LastRechargeAmount == 0 {
var tmpRechargeOrder common.RechargeOrder
err = db.Mysql().C().Model(&common.RechargeOrder{}).
Where("uid = ? and event = ? and status = ?", re.UID, common.CurrencyEventReCharge, 2).
Order("id desc").Find(&tmpRechargeOrder).Error
if err != nil {
log.Error("get user last recharge order err, %s", err.Error())
}
if tmpRechargeOrder.ID != 0 {
re.LastRechargeAmount = tmpRechargeOrder.Amount
}
}
if re.LastRechargeAmount > 0 {
eliminateBetCfg := GetConfigEliminateBet()
if eliminateBetCfg.ID != 0 {
playerProfile := GetPlayerProfileByCurrency(uid, common.CurrencyINR)
if playerProfile.NeedBet > 0 {
cash := GetUserCurrency(uid, common.CurrencyINR)
log.Debug("eliminateBet check, uid:%d cash:%d value:%d lastRecharge:%d bankruptcyCoefficient:%d",
uid, cash, re.LastRechargeAmount*int64(eliminateBetCfg.BankruptcyCoefficient)/100, re.LastRechargeAmount, eliminateBetCfg.BankruptcyCoefficient)
if cash <= re.LastRechargeAmount*int64(eliminateBetCfg.BankruptcyCoefficient)/100 {
eliminateBet := re.LastRechargeAmount * int64(eliminateBetCfg.EliminateCoefficient) / 100
if playerProfile.NeedBet < eliminateBet {
eliminateBet = playerProfile.NeedBet
}
log.Debug("eliminateBet, uid:%d cash:%d lastRecharge:%d bankruptcyCoe:%d eliminateCoe:%d, eliminateBet:%d",
uid, cash, re.LastRechargeAmount, eliminateBetCfg.BankruptcyCoefficient, eliminateBetCfg.EliminateCoefficient, eliminateBet)
err = db.Mysql().C().Model(&common.PlayerProfile{}).
Where("uid = ?", playerProfile.UID).
Updates(map[string]interface{}{
"need_bet": gorm.Expr("CASE WHEN `need_bet` - ? <= 0 THEN 0 ELSE `need_bet` - ? END", eliminateBet, eliminateBet),
}).Error
if err != nil {
log.Error("eliminateBet err, %s", err.Error())
}
}
}
}
}
// 第二步,更新recharge_info // 第二步,更新recharge_info
payData := &common.ESPlayerPayData{UID: uid, Channel: r.ChannelID, Type: 1, CurrencyType: r.CurrencyType} payData := &common.ESPlayerPayData{UID: uid, Channel: r.ChannelID, Type: 1, CurrencyType: r.CurrencyType}
if topThree { if topThree {
@ -178,6 +219,7 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
payData.FirstAmount = amount payData.FirstAmount = amount
} else { } else {
updates := map[string]interface{}{ updates := map[string]interface{}{
"last_recharge_amount": r.Amount,
"total_recharge_count": gorm.Expr("total_recharge_count + 1"), "total_recharge_count": gorm.Expr("total_recharge_count + 1"),
"total_recharge": gorm.Expr("total_recharge + ?", amount), "total_recharge": gorm.Expr("total_recharge + ?", amount),
"last_recharge": now, "last_recharge": now,
@ -226,7 +268,7 @@ func RechargeCallback(r *common.RechargeOrder, success bool, payAccount, extra s
} }
var needBet int64 var needBet int64
if r.ActivityID != 0 { if r.ActivityID != 0 {
needBet = GetConfigCurrencyResourceNeedBetByActId(r.ActivityID, amount) needBet = GetConfigCurrencyResourceNeedBetByActId(r.ActivityID, amount+bonus)
} }
if needBet == 0 { if needBet == 0 {
needBet += GetConfigCurrencyResourceNeedBet(common.CurrencyResourceRecharge, amount) needBet += GetConfigCurrencyResourceNeedBet(common.CurrencyResourceRecharge, amount)

@ -641,4 +641,13 @@ func CommonReload(c map[int][]func(*pb.ReloadGameConfig) error) {
return nil return nil
}} }}
} }
if _, ok := c[common.ReloadConfigEliminateBet]; !ok {
c[common.ReloadConfigEliminateBet] = []func(*pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error {
if err := LoadConfigEliminateBet(); err != nil {
log.Error("error : [%s]", err.Error())
return err
}
return nil
}}
}
} }

@ -550,8 +550,7 @@ func UpdatePlayerRechargeInfoCurrency(uid int, t common.CurrencyType, u map[stri
func GetPlayerProfileByCurrency(uid int, t common.CurrencyType) *common.PlayerProfile { func GetPlayerProfileByCurrency(uid int, t common.CurrencyType) *common.PlayerProfile {
pp := &common.PlayerProfile{} pp := &common.PlayerProfile{}
tableName := fmt.Sprintf("player_profile_%s", t.GetCurrencyName()) db.Mysql().C().Model(&common.PlayerProfile{}).Where("uid = ?", uid).Find(pp)
db.Mysql().C().Table(tableName).Where("uid = ?", uid).Scan(pp)
return pp return pp
} }

@ -74,6 +74,7 @@ const (
ReloadTypeConfigShareRankAward ReloadTypeConfigShareRankAward
ReloadConfigWeekCard // 周卡 ReloadConfigWeekCard // 周卡
ReloadConfigRtpControl ReloadConfigRtpControl
ReloadConfigEliminateBet
ReloadTypeExcel ReloadTypeExcel
) )
@ -204,6 +205,8 @@ func GetConfigStructByType(t int) (interface{}, interface{}) {
return &ConfigWeekCard{}, &[]ConfigWeekCard{} return &ConfigWeekCard{}, &[]ConfigWeekCard{}
case ReloadConfigRtpControl: case ReloadConfigRtpControl:
return &ConfigRtpControl{}, &[]ConfigRtpControl{} return &ConfigRtpControl{}, &[]ConfigRtpControl{}
case ReloadConfigEliminateBet:
return &ConfigEliminateBet{}, &[]ConfigEliminateBet{}
default: default:
return nil, nil return nil, nil
} }
@ -789,3 +792,16 @@ const (
WithdrawSorceBlock WithdrawSorceBlock
WithdrawSorceShare // 分享 WithdrawSorceShare // 分享
) )
// ConfigEliminateBet 消除打码量配置
type ConfigEliminateBet struct {
ID int `gorm:"primarykey"`
BankruptcyCoefficient int `gorm:"column:bankruptcy_coefficient;default:0;type:int(11);comment:破产系数(*100)" web:"bankruptcy_coefficient"`
EliminateCoefficient int `gorm:"column:eliminate_coefficient;default:0;type:int(11);comment:消除系数(*100)" web:"eliminate_coefficient"`
// 更新信息
UpdatedBase
}
func (c *ConfigEliminateBet) TableName() string {
return "config_eliminate_bet"
}

@ -204,6 +204,7 @@ type RechargeInfo struct {
TotalRechargeCount int64 `gorm:"column:total_recharge_count;type:bigint(20);default:0;comment:总充值次数"` TotalRechargeCount int64 `gorm:"column:total_recharge_count;type:bigint(20);default:0;comment:总充值次数"`
FirstRecharge int64 `gorm:"column:first_recharge;type:bigint(20);default:0;comment:第一次充值的时间戳"` FirstRecharge int64 `gorm:"column:first_recharge;type:bigint(20);default:0;comment:第一次充值的时间戳"`
LastRecharge int64 `gorm:"column:last_recharge;type:bigint(20);default:0;comment:最近一次充值的时间戳"` LastRecharge int64 `gorm:"column:last_recharge;type:bigint(20);default:0;comment:最近一次充值的时间戳"`
LastRechargeAmount int64 `gorm:"column:last_recharge_amount;type:bigint(20);default:0;comment:最近一次充值的数值"`
TotalRecharge int64 `gorm:"column:total_recharge;type:bigint(20);default:0;comment:总充值数额,不论货币"` TotalRecharge int64 `gorm:"column:total_recharge;type:bigint(20);default:0;comment:总充值数额,不论货币"`
TotalWithdrawCount int64 `gorm:"column:total_withdraw_count;type:bigint(20);default:0;comment:总退出次数"` TotalWithdrawCount int64 `gorm:"column:total_withdraw_count;type:bigint(20);default:0;comment:总退出次数"`
TotalWithdraw int64 `gorm:"column:total_withdraw;type:bigint(20);default:0;comment:总退出数额,不论货币"` TotalWithdraw int64 `gorm:"column:total_withdraw;type:bigint(20);default:0;comment:总退出数额,不论货币"`

@ -24,7 +24,7 @@ func GetGameUserRechargeHistory(c *gin.Context) {
resp := values.GetGameUserRechargeHistoryResp{} resp := values.GetGameUserRechargeHistoryResp{}
var ret []common.RechargeOrder var ret []common.RechargeOrder
if req.UID > 0 { if req.UID > 0 {
count, err := db.Mysql().QueryPlayerRWHistory(&req.UID, nil, req.Page-1, req.Num, []int{int(common.CurrencyEventReCharge), count, err := db.Mysql().QueryPlayerRWHistory(&req.UID, nil, req.Page-1, req.Num, []int{int(common.CurrencyEventReCharge), int(common.CurrencyEventActivityWeekCard),
common.CurrencyEventGMRecharge}, req.Start, req.End, &common.RechargeOrder{}, &ret, req.Status) common.CurrencyEventGMRecharge}, req.Start, req.End, &common.RechargeOrder{}, &ret, req.Status)
if err != nil { if err != nil {
log.Error("err:%v", err) log.Error("err:%v", err)
@ -37,17 +37,17 @@ func GetGameUserRechargeHistory(c *gin.Context) {
Amount: v.Amount, Status: int(v.Status), MyOrderID: v.OrderID, OrderID: v.APIPayID, PayChannel: v.PayChannel, PaySource: v.PaySource}) Amount: v.Amount, Status: int(v.Status), MyOrderID: v.OrderID, OrderID: v.APIPayID, PayChannel: v.PayChannel, PaySource: v.PaySource})
} }
resp.RechargeCount = db.Mysql().Count(&common.RechargeOrder{}, fmt.Sprintf("uid = %v and (event = %v or event = %v)", req.UID, common.CurrencyEventReCharge, common.CurrencyEventGMRecharge)) resp.RechargeCount = db.Mysql().Count(&common.RechargeOrder{}, fmt.Sprintf("uid = %v and (event = %v or event = %v or event = %v)", req.UID, common.CurrencyEventReCharge, common.CurrencyEventGMRecharge, common.CurrencyEventActivityWeekCard))
re := &common.RechargeInfo{UID: req.UID} re := &common.RechargeInfo{UID: req.UID}
err = db.Mysql().Get(re) err = db.Mysql().Get(re)
if err != nil { if err != nil {
log.Error(err.Error()) log.Error(err.Error())
} }
resp.RechargeTotal = re.TotalRecharge resp.RechargeTotal = re.TotalRecharge
successCount := db.Mysql().Count(&common.RechargeOrder{}, fmt.Sprintf("uid = %v and (event = %v or event = %v) and status = %v", req.UID, common.CurrencyEventReCharge, common.CurrencyEventGMRecharge, common.StatusROrderPay)) successCount := db.Mysql().Count(&common.RechargeOrder{}, fmt.Sprintf("uid = %v and (event = %v or event = %v or event = %v) and status = %v", req.UID, common.CurrencyEventReCharge, common.CurrencyEventGMRecharge, common.CurrencyEventActivityWeekCard, common.StatusROrderPay))
resp.RechargeSuccessPer = utils.GetPer(successCount, resp.RechargeCount) resp.RechargeSuccessPer = utils.GetPer(successCount, resp.RechargeCount)
} else if req.OrderID != "" { } else if req.OrderID != "" {
resp.Count, _ = db.Mysql().QueryList(req.Page-1, req.Num, fmt.Sprintf(`event = %v and (apipayid = "%v" or orderid = "%v")`, common.CurrencyEventReCharge, req.OrderID, req.OrderID), "create_time desc", &common.RechargeOrder{}, &ret) resp.Count, _ = db.Mysql().QueryList(req.Page-1, req.Num, fmt.Sprintf(`event = %v or event = %v and (apipayid = "%v" or orderid = "%v")`, common.CurrencyEventReCharge, common.CurrencyEventActivityWeekCard, req.OrderID, req.OrderID), "create_time desc", &common.RechargeOrder{}, &ret)
// log.Debug("ret:%v", ret) // log.Debug("ret:%v", ret)
for _, v := range ret { for _, v := range ret {
resp.List = append(resp.List, values.OneRechargeList{UID: v.UID, Time: v.CreateTime, CallbackTime: v.CallbackTime, CurrencyType: v.CurrencyType, resp.List = append(resp.List, values.OneRechargeList{UID: v.UID, Time: v.CreateTime, CallbackTime: v.CallbackTime, CurrencyType: v.CurrencyType,

@ -152,6 +152,7 @@ func MigrateDB() {
new(common.ConfigWeekCard), new(common.ConfigWeekCard),
new(common.WeekCardData), new(common.WeekCardData),
new(common.ConfigRtpControl), new(common.ConfigRtpControl),
new(common.ConfigEliminateBet),
) )
if err != nil { if err != nil {
panic("Migrate db fail") panic("Migrate db fail")

@ -208,6 +208,8 @@ func GetControlType(path string) int {
return common.ReloadConfigWeekCard return common.ReloadConfigWeekCard
case "rtpControl": case "rtpControl":
return common.ReloadConfigRtpControl return common.ReloadConfigRtpControl
case "eliminateBet":
return common.ReloadConfigEliminateBet
default: default:
return 0 return 0
} }

@ -315,6 +315,9 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI
switch req.ActivityID { switch req.ActivityID {
case common.ActivityIDWeekCard: case common.ActivityIDWeekCard:
order.Event = int(common.CurrencyEventActivityWeekCard) order.Event = int(common.CurrencyEventActivityWeekCard)
if weekCard := call.GetConfigWeekCard(); weekCard != nil {
order.Bonus = int64(weekCard.AwardDetails[1].AwardLower*common.DecimalDigits) - req.Amount
}
} }
} }
// 只有商城购买才能使用优惠券 // 只有商城购买才能使用优惠券
@ -334,7 +337,7 @@ func NewRechargeImp(req *values.RechargeReq, uid, cid int, ip string) *RechargeI
//notCharge := re.TotalRecharge == 0 //notCharge := re.TotalRecharge == 0
//per := call.GetConfigFirstPayPerByAmount(notCharge, order.Amount) //per := call.GetConfigFirstPayPerByAmount(notCharge, order.Amount)
var times int var times int
if req.Bonus { if req.Bonus && req.ActivityID == 0 {
times = re.BuyAmountDataMap[fmt.Sprintf("%d", order.Amount)] times = re.BuyAmountDataMap[fmt.Sprintf("%d", order.Amount)]
per, topThree := call.GetConfigFirstPayByCount(order.Amount, times) per, topThree := call.GetConfigFirstPayByCount(order.Amount, times)
if per > 0 { if per > 0 {

Loading…
Cancel
Save