Prechádzať zdrojové kódy

俄罗斯充值比例配置

lt 8 mesiacov pred
rodič
commit
29c6f387c8

+ 9 - 8
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/base_config_global.go

@@ -119,7 +119,7 @@ var GlobalInvitationClickMemberRes int32 = 10
 
 
 var GlobalQuickBattleTimes int32 = 0
 var GlobalQuickBattleTimes int32 = 0
 var GlobalRMBToVipExpRMB int32 = 0
 var GlobalRMBToVipExpRMB int32 = 0
-var GlobalRMBToVipExpVip int32 = 0
+var GlobalRMBToVipExpVip float32 = 0
 
 
 // 冲榜 爬塔, 道场
 // 冲榜 爬塔, 道场
 var GlobalMailIdRushTower int32 = 11
 var GlobalMailIdRushTower int32 = 11
@@ -244,7 +244,7 @@ var GlobalWishSlotCost = serverproto.KeyValueType{}
 // 充值钱包
 // 充值钱包
 var GlobalCreditRechargeFactor float32 = 0                  // 充值钱包 免费充值额度神域经验比例
 var GlobalCreditRechargeFactor float32 = 0                  // 充值钱包 免费充值额度神域经验比例
 var GlobalCreditRechargeInitMax int32 = 0                   // 充值钱包 初始化最大额度
 var GlobalCreditRechargeInitMax int32 = 0                   // 充值钱包 初始化最大额度
-var GlobalRoCoinFactor float32 = 60                         // rmb获得RO币比例系数
+var GlobalRoCoinFactor float32 = 0.6                        // rmb获得RO币比例系数
 var GlobalFastBattleTime []serverproto.KeyValueType         // 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]
 var GlobalFastBattleTime []serverproto.KeyValueType         // 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]
 var GlobalClimbingTowerDayReward []serverproto.KeyValueType // 试炼馈赠(层数:免费充值额度数量)
 var GlobalClimbingTowerDayReward []serverproto.KeyValueType // 试炼馈赠(层数:免费充值额度数量)
 var GlobalRoCoinToExp = 1.0                                 // RO币兑换波利商城经验比例
 var GlobalRoCoinToExp = 1.0                                 // RO币兑换波利商城经验比例
@@ -567,8 +567,8 @@ func convertGlobalCfg() {
 	if len(rmbToVipStr) >= 2 {
 	if len(rmbToVipStr) >= 2 {
 		value, _ := Str2Num(rmbToVipStr[0])
 		value, _ := Str2Num(rmbToVipStr[0])
 		GlobalRMBToVipExpRMB = int32(value)
 		GlobalRMBToVipExpRMB = int32(value)
-		value2, _ := Str2Num(rmbToVipStr[1])
-		GlobalRMBToVipExpVip = int32(value2)
+		value2, _ := Str2Float32(rmbToVipStr[1])
+		GlobalRMBToVipExpVip = value2
 	}
 	}
 
 
 	GlobalRushTowerFightCount = getGlobalCfgValI(serverproto.GlobalType_Global_Rush_Tower_Count_Reward)
 	GlobalRushTowerFightCount = getGlobalCfgValI(serverproto.GlobalType_Global_Rush_Tower_Count_Reward)
@@ -940,10 +940,11 @@ func convertGlobalCfgBT() {
 	// rmb获得RO币比例系数
 	// rmb获得RO币比例系数
 	//GlobalRoCoinFactor
 	//GlobalRoCoinFactor
 	GlobalRMBTOROCoinFactorStr := getGlobalCfgValS(serverproto.GlobalType_Global_RmbToROCoinFactor)
 	GlobalRMBTOROCoinFactorStr := getGlobalCfgValS(serverproto.GlobalType_Global_RmbToROCoinFactor)
-	f1, f2 = Str2Res(GlobalRMBTOROCoinFactorStr)
-	// f1:rmb  f2:res
-	if f1 > 0 {
-		GlobalRoCoinFactor = float32(f2) / float32(f1)
+	f33, f4 := Str2ResFloat(GlobalRMBTOROCoinFactorStr)
+	// f33:rmb  f4:res
+	if f33 > 0 {
+		//util.ErrorF("aaaaaa %v   ,%v ,%v", float32(f2), float32(f1), float32(f2)/float32(f1))
+		GlobalRoCoinFactor = f4 / float32(f33)
 	}
 	}
 
 
 	// 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]
 	// 特殊处理使用道具添加战斗倍数时间[道具id:持续时间]

+ 19 - 9
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/util.go

@@ -30,7 +30,7 @@ const (
 	ZONE_MASK64_MULTI    = 0x000000000000FFC0
 	ZONE_MASK64_MULTI    = 0x000000000000FFC0
 )
 )
 
 
-//role uuid
+// role uuid
 func GenerateUid() uint64 {
 func GenerateUid() uint64 {
 	serviceConfig := service.GetServiceConfig()
 	serviceConfig := service.GetServiceConfig()
 	zone := serviceConfig.Node.Zone
 	zone := serviceConfig.Node.Zone
@@ -120,7 +120,7 @@ func GUIDCreateTest(zone, id int) uint64 {
 	return uid
 	return uid
 }
 }
 
 
-//item id
+// item id
 var uuidLow uint32 = 0
 var uuidLow uint32 = 0
 var uuidHigh uint32 = 1
 var uuidHigh uint32 = 1
 
 
@@ -135,7 +135,7 @@ func UUIDCreate() uint64 {
 	return uuid
 	return uuid
 }
 }
 
 
-//是否同一天(24点)
+// 是否同一天(24点)
 func IsSameDay(source int64) bool {
 func IsSameDay(source int64) bool {
 	loc := util.GetLoc()
 	loc := util.GetLoc()
 	nowTime := time.Unix(util.GetTimeSeconds(), 0).In(loc)
 	nowTime := time.Unix(util.GetTimeSeconds(), 0).In(loc)
@@ -148,7 +148,7 @@ func IsSameDay(source int64) bool {
 	return false
 	return false
 }
 }
 
 
-//是否是同一天(24点)
+// 是否是同一天(24点)
 func IsSameDayMs(sourceMs uint64) int {
 func IsSameDayMs(sourceMs uint64) int {
 	loc := util.GetLoc()
 	loc := util.GetLoc()
 	timeS := int64(sourceMs / 1000)
 	timeS := int64(sourceMs / 1000)
@@ -163,7 +163,7 @@ func IsSameDayMs(sourceMs uint64) int {
 	return 0
 	return 0
 }
 }
 
 
-//判断是否是同一天true不天, false同一天(凌晨晨5点)
+// 判断是否是同一天true不天, false同一天(凌晨晨5点)
 func IsDailyResetHour5(sourceMs uint64) bool {
 func IsDailyResetHour5(sourceMs uint64) bool {
 	if sourceMs <= 0 {
 	if sourceMs <= 0 {
 		return false
 		return false
@@ -264,6 +264,16 @@ func Str2Res(str string) (int32, int32) {
 	}
 	}
 	return 0, 0
 	return 0, 0
 }
 }
+
+func Str2ResFloat(str string) (int32, float32) {
+	resList := strings.Split(str, ":")
+	if len(resList) > 1 {
+		resType, _ := Str2Num(resList[0])
+		resValue, _ := Str2Float32(resList[1])
+		return int32(resType), resValue
+	}
+	return 0, 0
+}
 func Str2ResBySep(str string, sep string) (int32, int32) {
 func Str2ResBySep(str string, sep string) (int32, int32) {
 	resList := strings.Split(str, sep)
 	resList := strings.Split(str, sep)
 	if len(resList) > 1 {
 	if len(resList) > 1 {
@@ -309,7 +319,7 @@ func Str2Res_5(str string) (int32, int32, int32, int32, int32) {
 	return 0, 0, 0, 0, 0
 	return 0, 0, 0, 0, 0
 }
 }
 
 
-//最小堆
+// 最小堆
 type MinHeap struct {
 type MinHeap struct {
 	ItemList []int32
 	ItemList []int32
 }
 }
@@ -334,7 +344,7 @@ func (h *MinHeap) Pop() (ret interface{}) {
 	return
 	return
 }
 }
 
 
-//随机打乱数组Fisher-Yates随机置乱算法
+// 随机打乱数组Fisher-Yates随机置乱算法
 func GenRandomArray(selfArray []int32) []int32 {
 func GenRandomArray(selfArray []int32) []int32 {
 	if len(selfArray) <= 0 {
 	if len(selfArray) <= 0 {
 		return nil
 		return nil
@@ -364,7 +374,7 @@ func GenRandomArrayByLen(numLen int) []int32 {
 	return selfArray
 	return selfArray
 }
 }
 
 
-//字符串相似度算法
+// 字符串相似度算法
 func MessageLD(s, t string, ignoreCase bool) int {
 func MessageLD(s, t string, ignoreCase bool) int {
 	if ignoreCase {
 	if ignoreCase {
 		s = strings.ToLower(s)
 		s = strings.ToLower(s)
@@ -400,7 +410,7 @@ func MessageLD(s, t string, ignoreCase bool) int {
 	return d[len(s)][len(t)]
 	return d[len(s)][len(t)]
 }
 }
 
 
-//二倍均值算法,count剩余个数,amount剩余金额
+// 二倍均值算法,count剩余个数,amount剩余金额
 func DoubleAverage(count, amount int64) int64 {
 func DoubleAverage(count, amount int64) int64 {
 	//最小钱
 	//最小钱
 	min := int64(1)
 	min := int64(1)

+ 2 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role.go

@@ -3623,6 +3623,7 @@ func (this *Role) PayInfoGet(goodsType, goodsId, count int32, rushStage, rushRou
 		// 按照配置比例获取RO币
 		// 按照配置比例获取RO币
 		if model.GlobalRoCoinFactor > 0 {
 		if model.GlobalRoCoinFactor > 0 {
 			tmpRoCoin := calCeilAmount * float64(model.GlobalRoCoinFactor)
 			tmpRoCoin := calCeilAmount * float64(model.GlobalRoCoinFactor)
+			//util.ErrorF("ro1111:%v  ,%v   ,%v", tmpRoCoin, calCeilAmount, model.GlobalRoCoinFactor)
 			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
 			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
 				Key:   int32(serverproto.ResType_Res_ROCoin),
 				Key:   int32(serverproto.ResType_Res_ROCoin),
 				Value: int32(tmpRoCoin),
 				Value: int32(tmpRoCoin),
@@ -3630,7 +3631,7 @@ func (this *Role) PayInfoGet(goodsType, goodsId, count int32, rushStage, rushRou
 		}
 		}
 		//给VIP经验
 		//给VIP经验
 		if model.GlobalRMBToVipExpRMB > 0 {
 		if model.GlobalRMBToVipExpRMB > 0 {
-			vipExp := float32(calCeilAmount) * float32(model.GlobalRMBToVipExpVip) / float32(model.GlobalRMBToVipExpRMB)
+			vipExp := float32(calCeilAmount) * model.GlobalRMBToVipExpVip / float32(model.GlobalRMBToVipExpRMB)
 			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
 			payOrderInfo.RewardList = append(payOrderInfo.RewardList, &serverproto.KeyValueType{
 				Key:   int32(serverproto.ResType_Res_VipExp),
 				Key:   int32(serverproto.ResType_Res_VipExp),
 				Value: int32(vipExp),
 				Value: int32(vipExp),

+ 1 - 1
RO_Server_Trunk-branch_0.1.39/roserver/game/model/role_base.go

@@ -612,7 +612,7 @@ func (this *RoleBase) AddPayRecharge(payRewardInfo *serverproto.PayOrderSaveInfo
 
 
 	//给VIP经验
 	//给VIP经验
 	if model.GlobalRMBToVipExpRMB > 0 {
 	if model.GlobalRMBToVipExpRMB > 0 {
-		vipExp := float32(calCeilAmount) * float32(model.GlobalRMBToVipExpVip) / float32(model.GlobalRMBToVipExpRMB)
+		vipExp := float32(calCeilAmount) * model.GlobalRMBToVipExpVip / float32(model.GlobalRMBToVipExpRMB)
 		this.role.AddRes(int32(serverproto.ResType_Res_VipExp), AddItemST{ItemCount: int32(vipExp)}, true)
 		this.role.AddRes(int32(serverproto.ResType_Res_VipExp), AddItemST{ItemCount: int32(vipExp)}, true)
 	}
 	}
 
 

+ 31 - 2
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/web_paymsg.go

@@ -154,6 +154,35 @@ func getMd5Sign(callbackKey string, params map[string]string) string {
 	return hex.EncodeToString(hash[:])
 	return hex.EncodeToString(hash[:])
 }
 }
 
 
+func getMd5RuSign(callbackKey string, params map[string]string) string {
+	// 删除参数中的 sign 字段
+	delete(params, "sign")
+
+	// 按参数名进行升序排序
+	var keys []string
+	for key := range params {
+		keys = append(keys, key)
+	}
+	sort.Strings(keys)
+
+	// 拼接参数和值
+	var signKey strings.Builder
+	for i, key := range keys {
+		signKey.WriteString(key)
+		signKey.WriteString("=")
+		signKey.WriteString(params[key])
+		if i != len(keys)-1 {
+			signKey.WriteString("&")
+		}
+	}
+	// 添加回调密钥
+	signKey.WriteString(callbackKey)
+
+	// 计算 MD5
+	hash := md5.Sum([]byte(signKey.String()))
+	return hex.EncodeToString(hash[:])
+}
+
 type Extras struct {
 type Extras struct {
 	ServerId    int    `json:"serverId"`
 	ServerId    int    `json:"serverId"`
 	Platform    string `json:"platform"`
 	Platform    string `json:"platform"`
@@ -291,7 +320,7 @@ func WebPayHwRuNotify(c *gin.Context) {
 	util.InfoF("支付签名认证:%v   params:%v", extras, params)
 	util.InfoF("支付签名认证:%v   params:%v", extras, params)
 	if extras.Platform == "ZT_IOS" || extras.Bima == "ZT_IOS" {
 	if extras.Platform == "ZT_IOS" || extras.Bima == "ZT_IOS" {
 		util.ErrorF("ios 支付签名认证:%v", info)
 		util.ErrorF("ios 支付签名认证:%v", info)
-		newSign := getMd5Sign("80c648e7df8aaa72", params)
+		newSign := getMd5RuSign("80c648e7df8aaa72", params)
 		if newSign != sign {
 		if newSign != sign {
 			util.ErrorF("签名错误%v", sign)
 			util.ErrorF("签名错误%v", sign)
 			c.String(http.StatusOK, "FAILED")
 			c.String(http.StatusOK, "FAILED")
@@ -307,7 +336,7 @@ func WebPayHwRuNotify(c *gin.Context) {
 		}
 		}
 	} else {
 	} else {
 		util.ErrorF("android 支付签名认证:%v", info)
 		util.ErrorF("android 支付签名认证:%v", info)
-		newSign := getMd5Sign("80c648e7df8aaa72", params)
+		newSign := getMd5RuSign("80c648e7df8aaa72", params)
 		if newSign != sign {
 		if newSign != sign {
 			util.ErrorF("签名错误%v", sign)
 			util.ErrorF("签名错误%v", sign)
 			c.String(http.StatusOK, "FAILED")
 			c.String(http.StatusOK, "FAILED")