Преглед на файлове

fix:bug修改及支付修改

LAPTOP-PC6VHEF0\XIONGHUY преди 1 година
родител
ревизия
20819532f1

+ 1 - 0
RO_Server_Trunk-branch_0.1.39/rocommon/service/yamlconfig.go

@@ -138,6 +138,7 @@ type configSDK struct {
 	YouYiGameIdListIOS []string `yaml:"youyigameidlistios"`
 	// 支付路由,配置在1服的配置文件中
 	PayPostRouter []string `yaml:"paypostrouter"`
+	WhiteList     []string `yaml:"whitelist"`
 }
 
 func (this *ConfigServerNode) Error() string {

+ 3 - 2
RO_Server_Trunk-branch_0.1.39/rocommon/socket/websocket/session.go

@@ -12,7 +12,7 @@ import (
 	"github.com/gorilla/websocket"
 )
 
-//Session interface def.go
+// Session interface def.go
 type wsSession struct {
 	sync.Mutex
 	tcpBase.SessionIdentify //添加到SessionManager中时会设置tcpSession的ID属性
@@ -176,6 +176,7 @@ func (this *wsSession) Send(msg interface{}) {
 	//this.sendQueue <- msg
 
 	sendLen := len(this.sendQueue)
+	util.ErrorF("wsSession sendQueue len:%v", sendLen)
 	if sendLen < sendQueueMaxLen {
 		this.sendQueue <- msg
 		return
@@ -183,7 +184,7 @@ func (this *wsSession) Send(msg interface{}) {
 	util.ErrorF("SendLen-sendQueue=%v addr=%v", sendLen, this.conn.LocalAddr())
 }
 
-//服务器进程之前启用ping操作
+// 服务器进程之前启用ping操作
 func (this *wsSession) HeartBeat(msg interface{}) {
 	//已经关闭
 	if atomic.LoadInt64(&this.closeInt) != 0 {

+ 17 - 0
RO_Server_Trunk-branch_0.1.39/roserver/auth/model/auth_msg.go

@@ -31,6 +31,23 @@ func init() {
 			LoginRet(ev, int32(serverproto.ErrorCode_ERROR_FAIL))
 			return
 		}
+		sConfig := service.GetServiceConfig()
+		whiteList := sConfig.SDKConfig.WhiteList
+		isWhite := false
+		if len(whiteList) > 0 {
+			for _, white := range whiteList {
+				if msg.OpenId == white {
+					isWhite = true
+				}
+			}
+		} else {
+			isWhite = true
+		}
+		if !isWhite {
+			LoginRet(ev, int32(serverproto.ErrorCode_ERROR_FAIL))
+			return
+		}
+
 		//做sdk登陆验证处理
 		if msg.Platform != model.SDKPlatform_PC && msg.Platform != "" {
 			switch msg.Platform {

+ 6 - 6
RO_Server_Trunk-branch_0.1.39/roserver/config/csv/ActivitiesTaskCfg.csv

@@ -584,7 +584,7 @@ int,list,list,int,int
 581,60:300,231:10;100:10,1,
 582,60:400,231:10;100:15,1,
 583,60:500,231:10;100:15,1,
-584,60:800,,231:20;100:20,1,
+584,60:800,231:20;100:20,1,
 585,60:120,231:25;100:30,1,
 586,60:10,607:1,1,
 587,60:10,607:1,1,
@@ -649,7 +649,7 @@ int,list,list,int,int
 646,60:280,100:50;110:30;607:4;2:2500,1,
 647,60:360,100:50;110:30;607:5;2:3500,1,
 648,60:500,100:50;110:30;607:6;2:5000,1,
-649,60:800,,704:1;2:7500,1,
+649,60:800,704:1;2:7500,1,
 650,60:120,707:1;2:10000,1,
 651,60:10,607:1;2:100,1,
 652,60:20,607:1;2:200,1,
@@ -703,10 +703,10 @@ int,list,list,int,int
 700,60:120,610:1;2:777;47:50000;134:1,1,
 701,60:200,687:1;2:888;47:100000;531:8,1,
 702,60:280,610:1;2:999;47:100000;138:1,1,
-20000,100:100,54:100;531:1;1:10000,1,
-20001,100:500,54:200;531:2;1:20000,1,
-20002,100:1000,54:300;531:3;1:30000,1,
-20003,100:1500,54:400;531:4;1:40000,1,
+20000,100:10,54:100;531:1;1:10000,1,
+20001,100:60,54:200;531:2;1:20000,1,
+20002,100:100,54:300;531:3;1:30000,1,
+20003,100:160,54:400;531:4;1:40000,1,
 20004,100:2000,54:500;531:5;1:50000,1,
 20005,101:100,54:100;531:2;528:1;604:3,1,
 20006,101:400,54:400;531:5;132:1;604:6,1,

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

@@ -519,16 +519,18 @@ func (this *RoleBase) AddBtJiaRecharge(val int32) {
 	this.roleBase.BtJiaTotalRecharge += uint64(val)
 	this.SetDirty(true)
 
+	todayCharge := int32(math.Ceil(float64(float32(this.roleBase.BtJiaDayRecharge)*BTJiaChangeDollar))) +
+		int32(math.Ceil(float64(this.roleBase.BtZhenDayRecharge)))
 	ntfMsg := &serverproto.SCPayInfoNtf{
 		TotalRecharge:      this.roleBase.TotalRecharge,
 		DayRecharge:        this.roleBase.DayRecharge,
 		BtZhenDayRecharge:  this.roleBase.BtZhenDayRecharge,
-		BtJiaDayRecharge:   int32(float32(this.roleBase.BtJiaDayRecharge) * BTJiaChangeDollar),
+		BtJiaDayRecharge:   todayCharge,
 		BtJiaTotalRecharge: uint64(float32(this.roleBase.BtJiaTotalRecharge) * BTJiaChangeDollar),
 	}
 	this.role.ReplayGate(ntfMsg, true)
 
-	TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, val)
+	TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, todayCharge)
 }
 
 // 增加累计充值
@@ -549,7 +551,10 @@ func (this *RoleBase) AddPayRecharge(payRewardInfo *serverproto.PayOrderSaveInfo
 		goodCfg, ok := model.ConvertGiftBag[payRewardInfo.GoodsId]
 		if ok && goodCfg.BagType == Rune_BagShop_Type_Gold {
 			this.roleBase.BtZhenDayRecharge += amount
-			TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, int32(amount))
+
+			todayCharge := int32(math.Ceil(float64(float32(this.roleBase.BtJiaDayRecharge)*BTJiaChangeDollar))) +
+				int32(math.Ceil(float64(this.roleBase.BtZhenDayRecharge)))
+			TaskMagCheck(this.role, serverproto.TaskType_BT_ZhenJiaRecharge, todayCharge)
 		}
 	}
 	calCeilAmount := math.Ceil(float64(payRewardInfo.Amount))

+ 48 - 8
RO_Server_Trunk-branch_0.1.39/roserver/game/model/task_manager.go

@@ -5,8 +5,8 @@ import (
 	"roserver/serverproto"
 )
 
-//参数说明,在common.proto协议文件中
-//[枚举类型:枚举参数...] 枚举参数根据枚举类型不同会有不同个数
+// 参数说明,在common.proto协议文件中
+// [枚举类型:枚举参数...] 枚举参数根据枚举类型不同会有不同个数
 func TaskMagCheck(role *Role, taskType serverproto.TaskType, count int32) {
 	//todo...
 	// 对当前已经接受的任务做枚举判断
@@ -92,7 +92,7 @@ func TaskConditionCheck(role *Role, taskData *serverproto.TaskData, taskType ser
 	return false
 }
 
-//true->finish bool->not finish
+// true->finish bool->not finish
 func checkSubConditionState(key int32, taskData *serverproto.TaskData) bool {
 	for idx := 0; idx < len(taskData.Progress); idx++ {
 		item := taskData.Progress[idx]
@@ -110,6 +110,12 @@ func conditionCheck(role *Role, taskData *serverproto.TaskData, taskType serverp
 	conditionList []int32, count int32, bForce bool) int32 {
 
 	switch taskType {
+	case serverproto.TaskType_BT_ZhenJiaRecharge: // 真/假每日累计充值活动
+		targetNum := conditionList[1]
+		if count <= 0 && !bForce {
+			return TASK_CONDITION_NONE
+		}
+		return changeTaskProgressAdd2(&taskData.Progress, count, int32(taskType), targetNum)
 	//主角Base等级
 	case serverproto.TaskType_Base_Level:
 		targetNum := conditionList[1]
@@ -536,8 +542,7 @@ func conditionCheck(role *Role, taskData *serverproto.TaskData, taskType serverp
 		fallthrough
 	case serverproto.TaskType_World_Boss_Challenge_Count: //公会普通boss挑战次数(任务开启)
 		fallthrough
-	case serverproto.TaskType_BT_ZhenJiaRecharge: // 真/假每日累计充值活动
-		fallthrough
+
 	case serverproto.TaskType_BT_ROCoinRecharge: // bt RO币累计活动
 		targetNum := conditionList[1]
 		if count <= 0 && !bForce {
@@ -555,7 +560,7 @@ func conditionCheck(role *Role, taskData *serverproto.TaskData, taskType serverp
 	return TASK_CONDITION_NONE
 }
 
-//累计方式
+// 累计方式
 func changeTaskProgressAdd(progress *[]*serverproto.TaskProgressType, addCount, taskType, targetNum int32) int32 {
 	bEdit := false
 	for index, data := range *progress {
@@ -590,7 +595,42 @@ func changeTaskProgressAdd(progress *[]*serverproto.TaskProgressType, addCount,
 	return TASK_CONDITION_CHANGE
 }
 
-//数值方式(目标个数)
+func changeTaskProgressAdd2(progress *[]*serverproto.TaskProgressType, addCount, taskType, targetNum int32) int32 {
+	bEdit := false
+	for index, data := range *progress {
+		if data.Key == taskType {
+			//数值一直加
+			(*progress)[index].Value = addCount
+			//已经完成
+			if data.State == TASK_REWARD_STATE_COMPLETED {
+				return TASK_CONDITION_OK
+			}
+			if (*progress)[index].Value >= targetNum {
+				(*progress)[index].Value = targetNum
+				(*progress)[index].State = TASK_REWARD_STATE_COMPLETED
+				return TASK_CONDITION_OK
+			}
+			bEdit = true
+			break
+		}
+	}
+	if !bEdit {
+		addProgress := &serverproto.TaskProgressType{
+			Key:   taskType,
+			Value: addCount,
+		}
+		*progress = append(*progress, addProgress)
+		if addCount >= targetNum {
+			addProgress.Value = targetNum
+			addProgress.State = TASK_REWARD_STATE_COMPLETED
+			return TASK_CONDITION_OK
+		}
+	}
+
+	return TASK_CONDITION_CHANGE
+}
+
+// 数值方式(目标个数)
 func changeTaskProgressSet(progress *[]*serverproto.TaskProgressType, setCount, taskType, targetNum int32) int32 {
 	bEdit := false
 	for index, data := range *progress {
@@ -647,7 +687,7 @@ func changeTaskProgressSet(progress *[]*serverproto.TaskProgressType, setCount,
 	return TASK_CONDITION_CHANGE
 }
 
-//直接赋值 注意该函数的区别
+// 直接赋值 注意该函数的区别
 func changeTaskProgressEqual(progress *[]*serverproto.TaskProgressType, addCount, taskType, targetNum int32) int32 {
 	bEdit := false
 	for index, data := range *progress {

+ 30 - 26
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/web_paymsg.go

@@ -157,22 +157,20 @@ func getMd5Sign(callbackKey string, params map[string]string) string {
 // 海外版quick回调
 func WebPayHwQuickNotify(c *gin.Context) {
 
+	params := make(map[string]string)
 	if err := c.Request.ParseForm(); err != nil {
-		util.ErrorF("参数异常 c.Request.ParseForm() err: %v", err)
-		c.JSON(http.StatusOK, "FAIL")
+		util.InfoF("parseForm falied")
+		c.String(http.StatusOK, "FAILED")
 		return
 	}
-	params := make(map[string]string)
 	for key, value := range c.Request.PostForm {
 		params[key] = value[0] // 假设每个参数只有一个值
 	}
-	util.InfoF("获取支付回调参数:%v\n", params)
-	callbackKey := service.GetServiceConfig().SDKConfig.QuickCallbackKey
-	//util.InfoF("callbackKey:%v\n", callbackKey)
-	newSign := getMd5Sign(callbackKey, params)
-	if newSign != params["sign"] {
-		util.ErrorF("签名错误%v", params["sign"])
-		c.JSON(http.StatusOK, "FAIL")
+	sign := params["sign"]
+	newSign := getMd5Sign("26819222132997854902564276561393", params)
+	if newSign != sign {
+		util.ErrorF("签名错误%v", sign)
+		c.String(http.StatusOK, "FAILED")
 		return
 	}
 	uid := c.PostForm("uid")
@@ -189,7 +187,7 @@ func WebPayHwQuickNotify(c *gin.Context) {
 	ntfData.PayCurrency = payCurrency
 	ntfData.PayTime = uint64(util.GetTimeSeconds())
 	ntfData.PayChannel = "qk_hw"
-	util.DebugF("uid=%v cpOrderNo=%v orderNo=%v payAmount=%v payCurrency=%v payType=%v usdAmount=%v",
+	util.WarnF("paycallback uid=%v cpOrderNo=%v orderNo=%v payAmount=%v payCurrency=%v payType=%v usdAmount=%v",
 		uid, cpOrderId, orderNo, payAmount, payCurrency, payType, usdAmount)
 	f64, err := strconv.ParseFloat(usdAmount, 32)
 	if err != nil {
@@ -200,8 +198,9 @@ func WebPayHwQuickNotify(c *gin.Context) {
 
 	// 简单粗暴,直接给其他服转发,不需要确认是哪个服
 	payPostRouter := service.GetServiceConfig().SDKConfig.PayPostRouter
-	util.InfoF("payPostRouter:%v\n", payPostRouter)
+	util.WarnF("paycallback payPostRouter:%v\n", payPostRouter)
 	// 组装转发body
+	params["sign"] = sign
 	var routerStr strings.Builder
 	for key, value := range params {
 		routerStr.WriteString(key)
@@ -210,33 +209,38 @@ func WebPayHwQuickNotify(c *gin.Context) {
 		routerStr.WriteString("&")
 	}
 	routerString := routerStr.String()
-	util.InfoF("支付 routerString:%v\n", routerString)
-	for _, urlPost := range payPostRouter {
-		sendPostToOtherServer(urlPost, []byte(routerString))
-	}
+	util.WarnF("paycallback routerString:%v\n", routerString)
+	go sendPosts(payPostRouter, routerString)
 
 	c.JSON(http.StatusOK, "SUCCESS")
 }
 
+func sendPosts(urls []string, routerString string) {
+	for i := 0; i < len(urls); i++ {
+		sendPostToOtherServer(urls[i], []byte(routerString))
+	}
+}
+
 // http://110.40.223.119:8002/pay/hwQucikFromS1GmWeb
 func WebPayHwQuickNotifyFromS1GmWeb(c *gin.Context) {
 
+	params := make(map[string]string)
 	if err := c.Request.ParseForm(); err != nil {
-		util.ErrorF("参数异常 c.Request.ParseForm() err: %v", err)
-		c.JSON(http.StatusOK, "FAIL")
+		util.InfoF("parseForm falied")
+		c.String(http.StatusOK, "FAILED")
 		return
 	}
-
-	params := make(map[string]string)
 	for key, value := range c.Request.PostForm {
 		params[key] = value[0] // 假设每个参数只有一个值
 	}
-	util.InfoF("获取支付回调参数:%v", params)
-	callbackKey := service.GetServiceConfig().SDKConfig.QuickCallbackKey
-	newSign := getMd5Sign(callbackKey, params)
-	if newSign != params["sign"] {
-		util.ErrorF("签名错误%v", params["sign"])
-		c.JSON(http.StatusOK, "FAIL")
+	sign := params["sign"]
+	newSign := getMd5Sign("26819222132997854902564276561393", params)
+	util.ErrorF("sign:%v", sign)
+	util.ErrorF("newSign:%v", newSign)
+	util.ErrorF("params:%v", params)
+	if newSign != sign {
+		util.ErrorF("签名错误%v", sign)
+		c.String(http.StatusOK, "FAILED")
 		return
 	}
 	uid := c.PostForm("uid")