lt 5 месяцев назад
Родитель
Сommit
79ba0d5bcb

+ 94 - 3
RO_Server_Trunk-branch_0.1.39/roserver/auth/model/auth_msg.go

@@ -100,7 +100,32 @@ func init() {
 			case model.SDKPlatform_Dn_Ios:
 				fallthrough
 			case model.SDKPlatform_Dn_Android:
+				//获取用户上次登录连接信息
+				var connInfo serverproto.UserConnectInfo
+				if !initUserConnInfo(&connInfo, msg.OpenId, "") {
+					LoginRet(ev, int32(serverproto.ErrorCode_ERROR_FAIL))
+					return
+				}
+
+				loginNtf := &serverproto.SSLoginNtf{}
+				loginNtf.Error = int32(serverproto.ErrorCode_ERROR_OK)
+				loginNtf.ClientId = cliId.SessID
+				loginNtf.ConnInfo = &connInfo
+				//if loginNtf.ConnInfo.TimeStamp+connInfoTimeOut < util.GetTimeSeconds() {
+				//	loginNtf.ConnInfo.LogicNode = ""
+				//	util.InfoF("connect timeout openid=%v", msg.OpenId)
+				//}
+				util.InfoF("loginNtf ClientId: %v,ConnInfo: %v", loginNtf.ClientId, *loginNtf.ConnInfo)
+				ev.Session().Send(loginNtf)
+				//LoginVerifyDNSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId, msg.CryptPass)
+			case model.SDKPlatform_Xuan_Ios:
+				fallthrough
+			case model.SDKPlatform_Xuan_Android:
 				LoginVerifyDNSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId, msg.CryptPass)
+			case model.SDKPlatform_Xuan_Google_Android:
+				LoginVerifyDNGoogleAndroidSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId, msg.CryptPass)
+			case model.SDKPlatform_Xuan_Google_Ios:
+				LoginVerifyDNGoogleIosSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId, msg.CryptPass)
 			}
 			return
 
@@ -624,13 +649,79 @@ func LoginVerifyDNSign(clientId uint64, GateServiceNode string, platform string,
 		tmpResMsg.OpenId = openId
 		tmpResMsg.Platform = platform
 		sign := md5.Sum([]byte(openId + time + key))
-		if hex.EncodeToString(sign[:]) != token {
+		newSign := hex.EncodeToString(sign[:])
+		if newSign != token {
+			tmpResMsg.Message = "1"
+		}
+		if tmpResMsg.Message != "0" {
+			tmpResMsg.Status = false
+			util.ErrorF("uid=%v http Request openid=%v sign:%v newSign:%v", clientId, openId, token, newSign)
+		}
+		GetAuthCheckMag().AddCheckList(tmpResMsg)
+	}()
+}
+
+func LoginVerifyDNGoogleAndroidSign(clientId uint64, GateServiceNode string, platform string, token string, openId string, time string) {
+	//authHttpAddr := ""
+	go func() {
+		defer func() {
+			//打印奔溃信息
+			if err := recover(); err != nil {
+				util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
+			}
+		}()
+		key := "e81c2bd2ffb7feb7f0df477dc02b0bbd"
+		//err := httpNode.(rocommon.HTTPConnector).Request("GET", urlPath, tmpRequest)
+		//util.InfoF("tmpRequest.ResMsg:%v", res)
+		tmpResMsg := &SDKHwQuickLoginAuthCheckResp{
+			Status: true,
+		}
+		tmpResMsg.Message = "0"
+		tmpResMsg.ClientId = clientId
+		tmpResMsg.ServiceId = GateServiceNode
+		tmpResMsg.OpenId = openId
+		tmpResMsg.Platform = platform
+		sign := md5.Sum([]byte(openId + time + key))
+		newSign := hex.EncodeToString(sign[:])
+		if newSign != token {
+			tmpResMsg.Message = "1"
+		}
+		if tmpResMsg.Message != "0" {
+			tmpResMsg.Status = false
+			util.ErrorF("uid=%v http Request openid=%v sign:%v newSign:%v", clientId, openId, token, newSign)
+		}
+		GetAuthCheckMag().AddCheckList(tmpResMsg)
+	}()
+}
+
+func LoginVerifyDNGoogleIosSign(clientId uint64, GateServiceNode string, platform string, token string, openId string, time string) {
+	//authHttpAddr := ""
+	go func() {
+		defer func() {
+			//打印奔溃信息
+			if err := recover(); err != nil {
+				util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
+			}
+		}()
+		key := "3f8e9fec0794443f76d3a27cd41e2711"
+		//err := httpNode.(rocommon.HTTPConnector).Request("GET", urlPath, tmpRequest)
+		//util.InfoF("tmpRequest.ResMsg:%v", res)
+		tmpResMsg := &SDKHwQuickLoginAuthCheckResp{
+			Status: true,
+		}
+		tmpResMsg.Message = "0"
+		tmpResMsg.ClientId = clientId
+		tmpResMsg.ServiceId = GateServiceNode
+		tmpResMsg.OpenId = openId
+		tmpResMsg.Platform = platform
+		sign := md5.Sum([]byte(openId + time + key))
+		newSign := hex.EncodeToString(sign[:])
+		if newSign != token {
 			tmpResMsg.Message = "1"
 		}
 		if tmpResMsg.Message != "0" {
 			tmpResMsg.Status = false
-			util.ErrorF("uid=%v http Request openid=%v", clientId, openId)
-			util.ErrorF("uid=%v http Request2 openid=%v", clientId, openId)
+			util.ErrorF("uid=%v http Request openid=%v sign:%v newSign:%v", clientId, openId, token, newSign)
 		}
 		GetAuthCheckMag().AddCheckList(tmpResMsg)
 	}()

+ 17 - 13
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/orm_common.go

@@ -9,19 +9,23 @@ import (
 )
 
 const (
-	SDKPlatform_PC            = "PC"
-	SDKPlatform_Quick         = "SDKQuick"
-	SDKPlatform_Hw_Quick      = "SDKHwQuick"
-	SDKPlatform_NBSDK         = "SDKNB"
-	SDKPlatform_UniSDK        = "SDKUni" //SDKUni
-	SDKPlatform_YouYi         = "SDKYOUYI"
-	SDKPlatform_YouYi_IOS     = "SDKYOUYI_IOS"
-	SDKPlatform_Quick_Android = "Quick_Android"
-	SDKPlatform_Quick_Ios     = "Quick_IOS"
-	SDKPlatform_Ru_Android    = "ZT_Android"
-	SDKPlatform_Ru_Ios        = "ZT_IOS"
-	SDKPlatform_Dn_Android    = "MIAN_YOU_Android" //东南亚
-	SDKPlatform_Dn_Ios        = "MIAN_YOU_IOS"
+	SDKPlatform_PC                  = "PC"
+	SDKPlatform_Quick               = "SDKQuick"
+	SDKPlatform_Hw_Quick            = "SDKHwQuick"
+	SDKPlatform_NBSDK               = "SDKNB"
+	SDKPlatform_UniSDK              = "SDKUni" //SDKUni
+	SDKPlatform_YouYi               = "SDKYOUYI"
+	SDKPlatform_YouYi_IOS           = "SDKYOUYI_IOS"
+	SDKPlatform_Quick_Android       = "Quick_Android"
+	SDKPlatform_Quick_Ios           = "Quick_IOS"
+	SDKPlatform_Ru_Android          = "ZT_Android"
+	SDKPlatform_Ru_Ios              = "ZT_IOS"
+	SDKPlatform_Dn_Android          = "MIAN_YOU_Android" //东南亚
+	SDKPlatform_Dn_Ios              = "MIAN_YOU_IOS"
+	SDKPlatform_Xuan_Android        = "XUAN_YOU_Android" //东南亚
+	SDKPlatform_Xuan_Ios            = "XUAN_YOU_IOS"
+	SDKPlatform_Xuan_Google_Android = "XUAN_YOU_Google_Android"
+	SDKPlatform_Xuan_Google_Ios     = "XUAN_YOU_Google_Ios"
 
 	/* sub_platform
 	changemeng_xjgl    畅梦包

+ 3 - 2
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/util.go

@@ -77,8 +77,9 @@ func GUIDCreate(zone, id int) uint64 {
 	//zone 		-> 2^15
 	//logicid 	-> 2^5
 	var uid uint64 = 0
-	//前32位时间戳(秒)
-	uid |= lastTimeStamp << TIMESTAMP_BITS_MULTI
+	//前32位时间戳(秒)11111111111111
+	result := lastTimeStamp/100000 | lastTimeStamp%100000
+	uid |= result << TIMESTAMP_BITS_MULTI
 	//12位序列号
 	uid |= uint64(sequence&SEQUENCE_MASK_MULTI) << SEQUENCE_BITS_MULTI
 	//15位区域id

+ 3 - 2
RO_Server_Trunk-branch_0.1.39/roserver/game/model/item.go

@@ -96,7 +96,8 @@ func CheckHDItemAdd(configId int32, role *Role) bool {
 	return false
 }
 
-/**
+/*
+*
 ItemAction
 */
 const (
@@ -229,7 +230,7 @@ func (this *ItemAction) add(configId int32, count int32) bool {
 	}
 
 	//当前堆叠加数量够了后就不统计了(叠加数量大时有会有问题)
-	util.InfoF("uid=%v ItemAction-add cfgid=%v curItemNum=%v addCount=%v", this.roleBag.role.GetUUid(),
+	util.ErrorF("uid=%v ItemAction-add cfgid=%v curItemNum=%v addCount=%v", this.roleBag.role.GetUUid(),
 		configId, oldItemNum, tmpCount)
 
 	//if oldItemNum > 0 {

+ 5 - 3
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/main.go

@@ -146,10 +146,12 @@ func main() {
 		r2 := router.Group("/v1")
 		r2.POST("/getUserList", msg.WebGmProcessUserListGet)
 		r2.POST("/check-uid", msg.WebGmProcessUserListCheck)
-		r2.POST("/getPayInfo", msg.WebGmProcessGetPayInfo)
+		r2.GET("/getPayInfo", msg.WebGmProcessGetPayInfo)
+		r2.GET("/getUserInfo", msg.WebGmProcessGetUserInfo)
 		r2.POST("/create-order", msg.WebGmProcessCreateOrder)
-		r2.POST("/pay/hwDn", msg.WebPayHwDnNotify)   // 海外东南亚
-		r2.POST("/pay/hwDn2", msg.WebPayHwDn2Notify) // 海外东南亚2
+		r2.POST("/pay/hwDn", msg.WebPayHwDnNotify)                // 海外东南亚
+		r2.GET("/pay/hwDn2", msg.WebPayHwDn2Notify)               // 海外东南亚2
+		r2.GET("/pay/openServer", msg.WebPayHwDnOpenServerNotify) // 海外东南亚开服通知
 
 		router.POST("/pay", msg.WebPayQuickNotify)                                 // SDKquick 畅梦nbSDK
 		router.POST("/pay/hwQucik", msg.WebPayHwQuickNotify)                       // 海外quick

+ 102 - 1
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/web_gmmsg.go

@@ -382,6 +382,90 @@ func WebGmProcessGetPayInfo(c *gin.Context) {
 	c.JSON(http.StatusOK, res)
 }
 
+// 东南亚支付服务使用
+func WebGmProcessGetUserInfo(c *gin.Context) {
+	openIdStr := c.DefaultQuery("username", "") ///default ""
+	serverStr := c.DefaultQuery("server", "")   ///default ""
+	gameIdStr := c.DefaultQuery("gameId", "")   ///default ""
+	if openIdStr == "" || gameIdStr == "" {
+		util.ErrorF("param error:%v ,%v,%v", openIdStr, serverStr, gameIdStr)
+		c.JSON(http.StatusOK, gin.H{
+			"err": "param error",
+		})
+		return
+	}
+	//获取全区角色列表
+	if serverStr == "" {
+		//获取简介信息
+		bfInfoList := make([]*Role, 0)
+		if len(service.GetMysqlPay()) > 0 {
+			for _, v := range service.GetMysqlPay() {
+				var bfInfo *WebBriefInfo = nil
+				v.Operate(func(rawClient interface{}) interface{} {
+					wrapper := mysql.NewWrapper(rawClient.(*sql.DB))
+
+					wrapper.Query("select uid,nick_name,base_level,create_date,last_login_date,ban_date,map_level,fight_power,active_code,open_id,serverid from role where open_id=?", openIdStr).Each(func(wrapper2 *mysql.Wrapper) bool {
+						bfInfo = parseUserInfo(wrapper2)
+
+						return true
+					})
+
+					if wrapper.Err != nil {
+						util.ErrorF("uid=%v WebGmProcessUserGet err=%v", openIdStr, wrapper.Err)
+					}
+					return nil
+				})
+				if bfInfo == nil {
+					continue
+				}
+				serverId := strconv.Itoa(bfInfo.Serverid / 2)
+				level := strconv.Itoa(int(bfInfo.BaseLevel))
+				bfInfoList = append(bfInfoList, &Role{RoleId: strconv.FormatUint(bfInfo.Uid, 10), ServerId: serverId, RoleName: bfInfo.NickName, ServerName: serverId + "区", Level: level})
+			}
+		}
+		c.JSON(http.StatusOK, RoleLists{Code: 0, RoleList: bfInfoList})
+	} else {
+		//获取简介信息
+		server, err := strconv.Atoi(serverStr)
+		if err != nil {
+			util.ErrorF("param error:%v ,%v,%v", openIdStr, serverStr, gameIdStr)
+			c.JSON(http.StatusOK, gin.H{"err": "param error"})
+			return
+		}
+		bfInfoList := make([]*Role, 0)
+		if len(service.GetMysqlPay()) > 0 {
+			for i, v := range service.GetMysqlPay() {
+				if i+1 != server {
+					continue
+				}
+				var bfInfo *WebBriefInfo
+				v.Operate(func(rawClient interface{}) interface{} {
+					wrapper := mysql.NewWrapper(rawClient.(*sql.DB))
+
+					wrapper.Query("select uid,nick_name,base_level,create_date,last_login_date,ban_date,map_level,fight_power,active_code,open_id,serverid from role where open_id=?", openIdStr).Each(func(wrapper2 *mysql.Wrapper) bool {
+						bfInfo = parseUserInfo(wrapper2)
+
+						return true
+					})
+
+					if wrapper.Err != nil {
+						util.ErrorF("uid=%v WebGmProcessUserGet err=%v", openIdStr, wrapper.Err)
+					}
+					return nil
+				})
+				if bfInfo == nil {
+					continue
+				}
+				serverId := strconv.Itoa(bfInfo.Serverid / 2)
+				level := strconv.Itoa(int(bfInfo.BaseLevel))
+				bfInfoList = append(bfInfoList, &Role{RoleId: strconv.FormatUint(bfInfo.Uid, 10), ServerId: serverId, RoleName: bfInfo.NickName, ServerName: serverId + "区", Level: level})
+				break
+			}
+		}
+		c.JSON(http.StatusOK, RoleLists{Code: 0, RoleList: bfInfoList})
+	}
+}
+
 func WebGmProcessCreateOrder(c *gin.Context) {
 	if !verifyProcess(c) {
 		return
@@ -428,6 +512,11 @@ type UserList struct {
 	Uids   []*Uid `json:"uids"`
 }
 
+type RoleLists struct {
+	Code     int     `json:"code"`
+	RoleList []*Role `json:"roleList"`
+}
+
 type Uid struct {
 	Uid           string `json:"uid"`
 	Server        string `json:"server"`
@@ -435,6 +524,14 @@ type Uid struct {
 	CharacterName string `json:"characterName"`
 }
 
+type Role struct {
+	RoleId     string `json:"roleId"`
+	RoleName   string `json:"roleName"`
+	Level      string `json:"level"`
+	ServerId   string `json:"serverId"`
+	ServerName string `json:"serverName"`
+}
+
 type CheckUser struct {
 	Server        string `json:"server"`
 	ServerName    string `json:"serverName"`
@@ -923,8 +1020,9 @@ func parseUserInfo(wrapper *mysql.Wrapper) *WebBriefInfo {
 	var FightPower sql.NullInt64
 	var ActiveCode sql.NullString
 	var OpenId sql.NullString
+	var SeverId sql.NullInt64
 	err := wrapper.Scan(&Uid, &NickName, &BaseLevel, &CreateDate,
-		&LastLoginDate, &BanDate, &MapLevel, &FightPower, &ActiveCode, &OpenId)
+		&LastLoginDate, &BanDate, &MapLevel, &FightPower, &ActiveCode, &OpenId, &SeverId)
 	if err == nil {
 		bfInfo := &WebBriefInfo{
 			Uid: Uid,
@@ -956,6 +1054,9 @@ func parseUserInfo(wrapper *mysql.Wrapper) *WebBriefInfo {
 		if OpenId.Valid {
 			bfInfo.OpenId = OpenId.String
 		}
+		if SeverId.Valid {
+			bfInfo.Serverid = int(SeverId.Int64)
+		}
 
 		return bfInfo
 	} else {

+ 91 - 32
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/web_paymsg.go

@@ -8,6 +8,7 @@ import (
 	"encoding/json"
 	"encoding/xml"
 	"fmt"
+	"io"
 	"net/http"
 	"net/url"
 	"rocommon/service"
@@ -18,6 +19,7 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+	"time"
 
 	"github.com/gin-gonic/gin"
 )
@@ -183,19 +185,17 @@ func getMd5RuSign(callbackKey string, params map[string]string) string {
 	return hex.EncodeToString(hash[:])
 }
 
-func getMd5DnSign(callbackKey string, params map[string]string) string {
-	// 删除参数中的 sign 字段
-	delete(params, "sign")
+func getMd5DnSign(callbackKey string, username, order_id, server, amount, extra, sandbox, timestamp string) string {
 
 	// 拼接参数和值
 	var signKey strings.Builder
-	signKey.WriteString(params["username"])
-	signKey.WriteString(params["order_id"])
-	signKey.WriteString(params["server"])
-	signKey.WriteString(params["amount"])
-	signKey.WriteString(params["extra"])
-	signKey.WriteString(params["sandbox"])
-	signKey.WriteString(params["timestamp"])
+	signKey.WriteString(username)
+	signKey.WriteString(order_id)
+	signKey.WriteString(server)
+	signKey.WriteString(amount)
+	signKey.WriteString(extra)
+	signKey.WriteString(sandbox)
+	signKey.WriteString(timestamp)
 	// 添加回调密钥
 	signKey.WriteString(callbackKey)
 
@@ -223,8 +223,9 @@ type ExtrasRu struct {
 }
 
 type ExtrasDn struct {
-	CpOrderId string `json:"cpOrderId"`
-	Uid       string `json:"uid"`
+	OrderNo  string `json:"orderNo"`
+	Uid      string `json:"uid"`
+	Platform string `json:"platform"`
 }
 
 // 海外版quick回调
@@ -412,29 +413,37 @@ func WebPayHwRuNotify(c *gin.Context) {
 
 func WebPayHwDn2Notify(c *gin.Context) {
 	//util.DebugF("支付回调信息:%v", c.Request.PostForm)
-	params := make(map[string]string)
-	if err := c.Request.ParseForm(); err != nil {
-		util.InfoF("parseForm falied")
-		c.String(http.StatusOK, "FAILED")
-		return
-	}
-	util.ErrorF("支付回调信息东南亚2:%v", c.Request.PostForm)
-	for key, value := range c.Request.PostForm {
-		params[key] = value[0] // 假设每个参数只有一个值
-	}
-	orderId := params["order_id"]
-	payAmount := params["amount"]
-	sign := params["sign"]
-	if sign != getMd5DnSign("cee1b45a9aa02a75f9d720d6b9e7b7d4", params) {
-		c.JSON(http.StatusOK, gin.H{"status": 1, "msg": "sign error"})
-		return
-	}
+	orderId := c.DefaultQuery("order_id", "")
+	payAmount := c.DefaultQuery("amount", "")
+	sign := c.DefaultQuery("sign", "")
+	extra := c.DefaultQuery("extra", "")
+	username := c.DefaultQuery("username", "")
+	server := c.DefaultQuery("server", "")
+	sandbox := c.DefaultQuery("sandbox", "")
+	timestamp := c.DefaultQuery("timestamp", "")
 	var extras ExtrasDn
-	err := json.Unmarshal([]byte(params["extra"]), &extras)
+	err := json.Unmarshal([]byte(extra), &extras)
 	if err != nil {
 		util.ErrorF("支付回调参数解析错误:%v", err)
 	}
-	cpOrderId := extras.CpOrderId
+	util.ErrorF("支付回调信息东南亚2:orderId:%v,payAmount:%v,sign:%v,extra:%v,username:%v,server:%v,sandbox:%v,timestamp:%v", orderId, payAmount, sign, extra, username, server, sandbox, timestamp)
+	if extras.Platform == "XUAN_YOU_Google_Android" {
+		if sign != getMd5DnSign("e81c2bd2ffb7feb7f0df477dc02b0bbd", username, orderId, server, payAmount, extra, sandbox, timestamp) {
+			c.JSON(http.StatusOK, gin.H{"status": 1, "msg": "sign error"})
+			return
+		}
+	} else if extras.Platform == "XUAN_YOU_Google_Ios" {
+		if sign != getMd5DnSign("3f8e9fec0794443f76d3a27cd41e2711", username, orderId, server, payAmount, extra, sandbox, timestamp) {
+			c.JSON(http.StatusOK, gin.H{"status": 1, "msg": "sign error"})
+			return
+		}
+	} else {
+		if sign != getMd5DnSign("cee1b45a9aa02a75f9d720d6b9e7b7d4", username, orderId, server, payAmount, extra, sandbox, timestamp) {
+			c.JSON(http.StatusOK, gin.H{"status": 1, "msg": "sign error"})
+			return
+		}
+	}
+	cpOrderId := extras.OrderNo
 	f64, err := strconv.ParseFloat(payAmount, 32)
 	if err != nil {
 		fmt.Println("Error:", err)
@@ -462,8 +471,58 @@ func WebPayHwDn2Notify(c *gin.Context) {
 	if res == "SUCCESS" {
 		c.JSON(http.StatusOK, gin.H{"status": 0})
 	} else {
-		c.JSON(http.StatusOK, gin.H{"status": 0, "msg": "order already complete"})
+		c.JSON(http.StatusOK, gin.H{"status": 1, "msg": "order already complete"})
+	}
+}
+
+func WebPayHwDnOpenServerNotify(c *gin.Context) {
+	//util.DebugF("支付回调信息:%v", c.Request.PostForm)
+	sidStr := c.DefaultQuery("sid", "")
+	nameStr := c.DefaultQuery("name", "")
+	timeStr := c.DefaultQuery("time", "") //2019-01-01 12:00:00
+	if nameStr == "" || sidStr == "" || timeStr == "" {
+		c.JSON(http.StatusOK, "param error:"+nameStr+sidStr+timeStr)
+		return
+	}
+	reqUrl := "https://i.dze-game.com/game/center/sync_server"
+	now := strconv.FormatInt(time.Now().Unix(), 10)
+	// 准备表单数据
+	formData := url.Values{}
+	formData.Add("GAME_ID", "121")
+	formData.Add("SID", sidStr)
+	formData.Add("_SID", sidStr)
+	formData.Add("NAME", nameStr)
+	formData.Add("START_TIME", timeStr)
+	formData.Add("sign", Md5Dn("121", nameStr, sidStr, timeStr, sidStr, now))
+	formData.Add("timestamp", now)
+	resp, err := http.Post(
+		reqUrl,
+		"application/x-www-form-urlencoded",
+		strings.NewReader(formData.Encode()),
+	)
+	if err != nil {
+		util.ErrorF("req error:%v", err)
+		c.JSON(http.StatusOK, "req error:"+nameStr+sidStr+timeStr)
+		return
 	}
+	defer resp.Body.Close()
+
+	body, err := io.ReadAll(resp.Body)
+	if err != nil {
+		util.ErrorF("red body error:%v", err)
+		c.JSON(http.StatusOK, "res error:"+nameStr+sidStr+timeStr)
+		return
+	}
+
+	util.ErrorF("东南亚开服信息,sid:%v,name:%v,time:%v,response:%v", sidStr, nameStr, timeStr, string(body))
+	c.JSON(http.StatusOK, gin.H{"status": 0})
+
+}
+
+func Md5Dn(gameId, name, sid, time, _sid, timestamp string) string {
+	key := gameId + name + sid + time + _sid + timestamp + "cee1b45a9aa02a75f9d720d6b9e7b7d4"
+	hash := md5.Sum([]byte(key))
+	return hex.EncodeToString(hash[:])
 }
 
 func WebPayHwDnNotify(c *gin.Context) {

+ 2 - 2
RO_Server_Trunk-branch_0.1.39/roserver/go.mod

@@ -12,7 +12,7 @@ require (
 	github.com/go-redis/redis v6.15.2+incompatible
 	github.com/go-sql-driver/mysql v1.5.0
 	github.com/gogf/gf v1.13.4
-	github.com/golang/protobuf v1.3.3
+	github.com/golang/protobuf v1.5.4
 	github.com/gorilla/websocket v1.4.1
 	github.com/olivere/elastic/v7 v7.0.12
 	github.com/pkg/profile v1.4.0
@@ -33,7 +33,6 @@ require (
 	github.com/gogo/protobuf v1.2.1 // indirect
 	github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
 	github.com/google/btree v1.0.0 // indirect
-	github.com/google/go-cmp v0.6.0 // indirect
 	github.com/gqcn/structs v1.1.1 // indirect
 	github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 // indirect
 	github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
@@ -74,6 +73,7 @@ require (
 	golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect
 	google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb // indirect
 	google.golang.org/grpc v1.20.1 // indirect
+	google.golang.org/protobuf v1.36.10 // indirect
 	gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect
 	gopkg.in/yaml.v2 v2.2.8 // indirect
 	gorm.io/driver/mysql v1.0.3 // indirect

+ 6 - 3
RO_Server_Trunk-branch_0.1.39/roserver/go.sum

@@ -72,16 +72,17 @@ github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4er
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
 github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
+github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
 github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
 github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM=
 github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@@ -295,6 +296,8 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
+google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
+google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

+ 26 - 26
RO_Server_Trunk-branch_0.1.39/transfor/main.go

@@ -11,32 +11,32 @@ import (
 
 // serverId -> port 对应表
 var serverPortMap = map[int]int{
-	2:  8086,
-	3:  8003,
-	4:  8005,
-	5:  8007,
-	6:  8009,
-	7:  8011,
-	8:  8013,
-	9:  8015,
-	10: 8017,
-	11: 8019,
-	12: 8021,
-	13: 8023,
-	14: 8025,
-	15: 8027,
-	16: 8029,
-	17: 8031,
-	18: 8033,
-	19: 8035,
-	20: 8037,
-	21: 8039,
-	22: 8041,
-	23: 8043,
-	24: 8045,
-	25: 8047,
-	26: 8049,
-	27: 8051,
+	1:  8086,
+	2:  8003,
+	3:  8005,
+	4:  8007,
+	5:  8009,
+	6:  8011,
+	7:  8013,
+	8:  8015,
+	9:  8017,
+	10: 8019,
+	11: 8021,
+	12: 8023,
+	13: 8025,
+	14: 8027,
+	15: 8029,
+	16: 8031,
+	17: 8033,
+	18: 8035,
+	19: 8037,
+	20: 8039,
+	21: 8041,
+	22: 8043,
+	23: 8045,
+	24: 8047,
+	25: 8049,
+	26: 8051,
 }
 
 func proxyHandler(w http.ResponseWriter, r *http.Request) {