|
|
|
@ -185,6 +185,7 @@ func GameBet(c *gin.Context) { |
|
|
|
resp.Msg = "success" |
|
|
|
resp.Msg = "success" |
|
|
|
log.Debug("sn gameBetResp, %s:%+v", account, resp) |
|
|
|
log.Debug("sn gameBetResp, %s:%+v", account, resp) |
|
|
|
a.Data = resp |
|
|
|
a.Data = resp |
|
|
|
|
|
|
|
checkControl(uid) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func Settle(c *gin.Context) { |
|
|
|
func Settle(c *gin.Context) { |
|
|
|
@ -602,7 +603,7 @@ func GameControlCallback(c *gin.Context) { |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
defer func() { |
|
|
|
defer func() { |
|
|
|
err = Control(uid, util.ToInt(req.ControlId)) |
|
|
|
err = Control(uid, util.ToInt(req.ControlId), "", 0) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
log.Error("sn control err, %s", err.Error()) |
|
|
|
log.Error("sn control err, %s", err.Error()) |
|
|
|
} |
|
|
|
} |
|
|
|
@ -627,21 +628,73 @@ func checkSpecialControl(result string) bool { |
|
|
|
|
|
|
|
|
|
|
|
const specialControlRtp = 85 |
|
|
|
const specialControlRtp = 85 |
|
|
|
|
|
|
|
|
|
|
|
func Control(uid int, controlId int) error { |
|
|
|
func checkControl(uid int) { |
|
|
|
if controlId == 0 { |
|
|
|
result, err := db.Redis().GetRedis().Get(context.Background(), fmt.Sprintf("player:%v:sn:status", uid)).Result() |
|
|
|
controlId = 1 |
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Error("get user sn status err, %s", err.Error()) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if result == "" { |
|
|
|
|
|
|
|
log.Error("get user sn status is nil, %d", uid) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.Debug("sn control update, status:%s", result) |
|
|
|
|
|
|
|
controlInfos := strings.Split(result, "|") |
|
|
|
|
|
|
|
rtp := util.ToInt(controlInfos[0]) |
|
|
|
|
|
|
|
templateId := controlInfos[1] |
|
|
|
|
|
|
|
rtpNow := getControlRtp(uid) |
|
|
|
|
|
|
|
templateIdNow := getControlTemplate(uid) |
|
|
|
|
|
|
|
var update bool |
|
|
|
|
|
|
|
if templateId != "" && templateId != templateIdNow { // 直接更新
|
|
|
|
|
|
|
|
update = true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if templateId == "" && rtp != rtpNow { |
|
|
|
|
|
|
|
update = true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if update { |
|
|
|
|
|
|
|
log.Debug("sn control update, old info:%d|%s new info:%d|%s", rtp, templateId, rtpNow, templateIdNow) |
|
|
|
|
|
|
|
Control(uid, 0, templateId, rtp) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getControlRtp(uid int) int { |
|
|
|
rtp := call.GetRtpControlV1(uid) |
|
|
|
rtp := call.GetRtpControlV1(uid) |
|
|
|
result, _ := db.Redis().GetRedis().Get(context.Background(), fmt.Sprintf("player:%v:games:at", uid)).Result() |
|
|
|
result, _ := db.Redis().GetRedis().Get(context.Background(), fmt.Sprintf("player:%v:games:at", uid)).Result() |
|
|
|
if rtp > specialControlRtp && checkSpecialControl(result) { |
|
|
|
if rtp > specialControlRtp && checkSpecialControl(result) { |
|
|
|
rtp = specialControlRtp |
|
|
|
rtp = specialControlRtp |
|
|
|
log.Debug("rtpControl special, uid:%d result:%s, rtp:%d", uid, result, specialControlRtp) |
|
|
|
log.Debug("rtpControl special, uid:%d result:%s, rtp:%d", uid, result, specialControlRtp) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return rtp |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getControlTemplate(uid int) string { |
|
|
|
templateId := call.GetConfigRtpTemplateId() |
|
|
|
templateId := call.GetConfigRtpTemplateId() |
|
|
|
if templateId == "" && DefaultTemplateId != "" { |
|
|
|
if templateId == "" && DefaultTemplateId != "" { |
|
|
|
log.Debug("sn cfg templateId is nil") |
|
|
|
log.Debug("sn cfg templateId is nil") |
|
|
|
templateId = DefaultTemplateId |
|
|
|
templateId = DefaultTemplateId |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
defaultTemplateRecharge := 300 * common.DecimalDigits |
|
|
|
|
|
|
|
userInfo, _ := call.GetUserInfo(uid) |
|
|
|
|
|
|
|
channelInfo := call.GetChannelByID(userInfo.ChannelID) |
|
|
|
|
|
|
|
if channelInfo.TemplateRecharge > 0 { |
|
|
|
|
|
|
|
defaultTemplateRecharge = channelInfo.TemplateRecharge |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
rechargeInfo := call.GetRechargeInfo(uid) |
|
|
|
|
|
|
|
if rechargeInfo.TotalRecharge >= int64(defaultTemplateRecharge) { |
|
|
|
|
|
|
|
templateId = "" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
log.Debug("sn control template, %d|%d %s", rechargeInfo.TotalRecharge, defaultTemplateRecharge, templateId) |
|
|
|
|
|
|
|
return templateId |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func Control(uid int, controlId int, templateId string, rtp int) error { |
|
|
|
|
|
|
|
if controlId == 0 { |
|
|
|
|
|
|
|
controlId = 1 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if rtp == 0 && templateId == "" { |
|
|
|
|
|
|
|
rtp = getControlRtp(uid) |
|
|
|
|
|
|
|
templateId = getControlTemplate(uid) |
|
|
|
|
|
|
|
} |
|
|
|
req := &ControlReq{ |
|
|
|
req := &ControlReq{ |
|
|
|
BaseReq: BaseReq{ |
|
|
|
BaseReq: BaseReq{ |
|
|
|
SnAccount: SnAccount, |
|
|
|
SnAccount: SnAccount, |
|
|
|
@ -661,17 +714,6 @@ func Control(uid int, controlId int) error { |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
defaultTemplateRecharge := 300 * common.DecimalDigits |
|
|
|
|
|
|
|
userInfo, _ := call.GetUserInfo(uid) |
|
|
|
|
|
|
|
channelInfo := call.GetChannelByID(userInfo.ChannelID) |
|
|
|
|
|
|
|
if channelInfo.TemplateRecharge > 0 { |
|
|
|
|
|
|
|
defaultTemplateRecharge = channelInfo.TemplateRecharge |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
rechargeInfo := call.GetRechargeInfo(uid) |
|
|
|
|
|
|
|
if rechargeInfo.TotalRecharge >= int64(defaultTemplateRecharge) { |
|
|
|
|
|
|
|
req.TemplateId = "" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log.Debug("sn control req, %+v", *req) |
|
|
|
log.Debug("sn control req, %+v", *req) |
|
|
|
reqBody, _ := json.Marshal(req) |
|
|
|
reqBody, _ := json.Marshal(req) |
|
|
|
var tmpValue map[string]interface{} |
|
|
|
var tmpValue map[string]interface{} |
|
|
|
@ -688,7 +730,10 @@ func Control(uid int, controlId int) error { |
|
|
|
log.Error("control err, %+v", resp) |
|
|
|
log.Error("control err, %+v", resp) |
|
|
|
return fmt.Errorf("control err, %+v ", resp) |
|
|
|
return fmt.Errorf("control err, %+v ", resp) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
err = db.Redis().GetRedis().Set(context.Background(), fmt.Sprintf("player:%v:sn:status", uid), fmt.Sprintf("%d|%s", rtp, templateId), 0).Err() |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
log.Error("set user sn status err, %s", err.Error()) |
|
|
|
|
|
|
|
} |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|