|
|
|
|
package sn
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/md5"
|
|
|
|
|
"encoding/hex"
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/liangdas/mqant/log"
|
|
|
|
|
"sort"
|
|
|
|
|
"strings"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
|
|
|
|
APIRlease = "https://api.nbetps.com/v2/launch_game"
|
|
|
|
|
APITest = "https://api.nbetps.com/v2/launch_game"
|
|
|
|
|
|
|
|
|
|
APICreateUserRlease = "https://api.nbetps.com/v1/create_user"
|
|
|
|
|
APICreateUserTest = "https://api.nbetps.com/v1/create_user"
|
|
|
|
|
|
|
|
|
|
APIControlRlease = "https://api.nbetps.com/v1/control"
|
|
|
|
|
APIControlTest = "https://api.nbetps.com/v1/control"
|
|
|
|
|
|
|
|
|
|
// LaunchGameURL = "/api/usr/ingame"
|
|
|
|
|
// GetGameListURL = "/api/game/loadlist"
|
|
|
|
|
// Lang = "hi"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Agent struct {
|
|
|
|
|
MchId string `json:"mch_id"`
|
|
|
|
|
Key string `json:"key"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
API = ""
|
|
|
|
|
APICreate = ""
|
|
|
|
|
APIControl = ""
|
|
|
|
|
AgentMap Agent
|
|
|
|
|
AgentMapTest = Agent{
|
|
|
|
|
MchId: "slotgolden777test",
|
|
|
|
|
Key: "010804d1-7bbf-4ed5-9b50-60fbd2b22e34",
|
|
|
|
|
}
|
|
|
|
|
AgentMapRelease = Agent{
|
|
|
|
|
MchId: "slotgolden777",
|
|
|
|
|
Key: "ddeaeb76-5624-41fe-a6ea-7ad9307d7701",
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func getSignStr(str string, pass ...string) string {
|
|
|
|
|
m := map[string]json.RawMessage{}
|
|
|
|
|
sortStrs := []string{}
|
|
|
|
|
json.Unmarshal([]byte(str), &m)
|
|
|
|
|
for i := range m {
|
|
|
|
|
sortStrs = append(sortStrs, i)
|
|
|
|
|
}
|
|
|
|
|
signStr := ""
|
|
|
|
|
sort.Strings(sortStrs)
|
|
|
|
|
for _, v := range sortStrs {
|
|
|
|
|
shouldPass := false
|
|
|
|
|
for _, s := range pass {
|
|
|
|
|
if v == s {
|
|
|
|
|
shouldPass = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if shouldPass {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
if len(m[v]) > 1 && m[v][0] == 34 {
|
|
|
|
|
m[v] = m[v][1 : len(m[v])-1]
|
|
|
|
|
}
|
|
|
|
|
if len(m[v]) == 0 {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
signStr += fmt.Sprintf("%v=%v", v, string(m[v]))
|
|
|
|
|
signStr += "&"
|
|
|
|
|
}
|
|
|
|
|
signStr = signStr[:len(signStr)-1]
|
|
|
|
|
return signStr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//func GeneratedSign(str string) string {
|
|
|
|
|
// signStr := getSignStr(str, "sign") + "&key=" + SignKey
|
|
|
|
|
// md5Value := createMd5(signStr)
|
|
|
|
|
// md5Value = strings.ToUpper(createMd5(md5Value))
|
|
|
|
|
// log.Debug("sn signStr:%s, md5:%s", signStr, md5Value)
|
|
|
|
|
// return md5Value
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
func GeneratedSignMap(params map[string]interface{}) string {
|
|
|
|
|
keys := make([]string, 0, len(params))
|
|
|
|
|
for k := range params {
|
|
|
|
|
if k != "" && k != "sign" && params[k] != nil {
|
|
|
|
|
keys = append(keys, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sort.Strings(keys)
|
|
|
|
|
var result string
|
|
|
|
|
for _, v := range keys {
|
|
|
|
|
if result != "" {
|
|
|
|
|
result += "&"
|
|
|
|
|
}
|
|
|
|
|
var value string
|
|
|
|
|
switch params[v].(type) {
|
|
|
|
|
case float64:
|
|
|
|
|
value = fmt.Sprintf("%d", int64(params[v].(float64)))
|
|
|
|
|
case int64:
|
|
|
|
|
value = fmt.Sprintf("%d", params[v].(int64))
|
|
|
|
|
default:
|
|
|
|
|
value = fmt.Sprintf("%v", params[v])
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result += v + "=" + value
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GeneratedSign(params map[string]interface{}, key string) string {
|
|
|
|
|
keys := make([]string, 0, len(params))
|
|
|
|
|
for k := range params {
|
|
|
|
|
if k != "" && k != "sign" && params[k] != nil && fmt.Sprintf("%v", params[k]) != "" {
|
|
|
|
|
keys = append(keys, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sort.Strings(keys)
|
|
|
|
|
var sign string
|
|
|
|
|
for _, v := range keys {
|
|
|
|
|
var value string
|
|
|
|
|
switch params[v].(type) {
|
|
|
|
|
case float64:
|
|
|
|
|
value = fmt.Sprintf("%d", int64(params[v].(float64)))
|
|
|
|
|
case int64:
|
|
|
|
|
value = fmt.Sprintf("%d", params[v].(int64))
|
|
|
|
|
case []interface{}, map[string]interface{}:
|
|
|
|
|
data, _ := json.Marshal(params[v])
|
|
|
|
|
value = string(data)
|
|
|
|
|
default:
|
|
|
|
|
value = fmt.Sprintf("%v", params[v])
|
|
|
|
|
}
|
|
|
|
|
sign += v + "=" + value + "&"
|
|
|
|
|
}
|
|
|
|
|
sign += "key=" + key
|
|
|
|
|
result := strings.ToUpper(createMd5(sign))
|
|
|
|
|
log.Debug("signStr:%v sign:%s\n", sign, result)
|
|
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// createMd5 生成md5字符串
|
|
|
|
|
func createMd5(str string) string {
|
|
|
|
|
h := md5.New()
|
|
|
|
|
h.Write([]byte(str))
|
|
|
|
|
return hex.EncodeToString(h.Sum(nil))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// var (
|
|
|
|
|
// RtpMap = map[int]int{
|
|
|
|
|
// 97: 11,
|
|
|
|
|
// 96: 12,
|
|
|
|
|
// 95: 13,
|
|
|
|
|
// 93: 14,
|
|
|
|
|
// 90: 15,
|
|
|
|
|
// 85: 16,
|
|
|
|
|
// 80: 17,
|
|
|
|
|
// 60: 18,
|
|
|
|
|
// 40: 19,
|
|
|
|
|
// }
|
|
|
|
|
// rtps = []int{97, 96, 95, 93, 90, 85, 80, 60, 40}
|
|
|
|
|
// LevelMap = map[int]int{
|
|
|
|
|
// 11: 97,
|
|
|
|
|
// 12: 96,
|
|
|
|
|
// 13: 95,
|
|
|
|
|
// 14: 93,
|
|
|
|
|
// 15: 90,
|
|
|
|
|
// 16: 85,
|
|
|
|
|
// 17: 80,
|
|
|
|
|
// 18: 60,
|
|
|
|
|
// 19: 40,
|
|
|
|
|
// }
|
|
|
|
|
// )
|
|
|
|
|
|
|
|
|
|
// func GetLevel(uid int) int {
|
|
|
|
|
// rtp := call.GetProviderGameRtp(uid)
|
|
|
|
|
// if rtp >= rtps[0] {
|
|
|
|
|
// return RtpMap[97]
|
|
|
|
|
// } else if rtp <= rtps[len(rtps)-1] {
|
|
|
|
|
// return RtpMap[40]
|
|
|
|
|
// }
|
|
|
|
|
// for i := 1; i < len(rtps); i++ {
|
|
|
|
|
// if rtp <= rtps[i-1] && rtp >= rtps[i] {
|
|
|
|
|
// return RtpMap[rtps[i]]
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return 15
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// func GetRtp(uid int) int {
|
|
|
|
|
// rtp := call.GetProviderGameRtp(uid)
|
|
|
|
|
// if rtp >= rtps[0] {
|
|
|
|
|
// return LevelMap[RtpMap[97]]
|
|
|
|
|
// } else if rtp <= rtps[len(rtps)-1] {
|
|
|
|
|
// return LevelMap[RtpMap[40]]
|
|
|
|
|
// }
|
|
|
|
|
// for i := 1; i < len(rtps); i++ {
|
|
|
|
|
// if rtp <= rtps[i-1] && rtp >= rtps[i] {
|
|
|
|
|
// return LevelMap[RtpMap[rtps[i]]]
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return 90
|
|
|
|
|
// }
|