版本更新
This commit is contained in:
parent
68d40f3c41
commit
92cd035e76
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,7 +1,9 @@
|
||||
*.exe
|
||||
release/*.tar
|
||||
.vscode/
|
||||
release/backend
|
||||
release/logs
|
||||
log/app.log
|
||||
release/login_service/login_service
|
||||
release/login_service/log/*.log
|
||||
release/shipping_service/shipping_service
|
||||
release/backend
|
||||
|
||||
BIN
data/data.db
BIN
data/data.db
Binary file not shown.
1
release/login_service/.env
Normal file
1
release/login_service/.env
Normal file
@ -0,0 +1 @@
|
||||
SCRIPT_NAME=sdk_login
|
||||
@ -1,2 +1,2 @@
|
||||
cd /data/admin_backend
|
||||
GOOS=linux GOARCH=amd64 go build -o /data/admin_backend/release/login_service/login sdk/login/main.go
|
||||
GOOS=linux GOARCH=amd64 go build -o /data/admin_backend/release/login_service/login_service sdk/login/main.go
|
||||
|
||||
@ -9,46 +9,59 @@ if [ $# -ne 1 ]; then
|
||||
fi
|
||||
|
||||
if [ "$1" = "start" ]; then
|
||||
echo "Starting login..."
|
||||
echo "Starting sdk_login..."
|
||||
mkdir -p log
|
||||
: > log/login.log
|
||||
nohup ./login >> log/login.log 2>&1 &
|
||||
echo "login started."
|
||||
: > log/sdk_login.log
|
||||
nohup ./sdk_login >> log/sdk_login.log 2>&1 &
|
||||
echo "sdk_login started."
|
||||
elif [ "$1" = "stop" ]; then
|
||||
echo "Stopping login..."
|
||||
PID=$(ps -ef | grep '[.]\/login' | awk '{print $2}')
|
||||
echo "Stopping sdk_login..."
|
||||
# ...existing code...
|
||||
PID=$(ps -ef | grep '[l]ogin_service' | awk '{print $2}')
|
||||
if [ -z "$PID" ]; then
|
||||
echo "login is not running."
|
||||
echo "sdk_login is not running."
|
||||
exit 1
|
||||
fi
|
||||
kill "$PID"
|
||||
echo "login stopped."
|
||||
# 等待优雅退出,最多 5 秒,超时则强制杀死
|
||||
COUNT=0
|
||||
while [ $COUNT -lt 5 ]; do
|
||||
sleep 1
|
||||
if ! ps -p "$PID" > /dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
COUNT=$((COUNT+1))
|
||||
done
|
||||
if ps -p "$PID" > /dev/null 2>&1; then
|
||||
kill -9 "$PID"
|
||||
fi
|
||||
echo "sdk_login stopped."
|
||||
elif [ "$1" = "status" ]; then
|
||||
echo "login status:"
|
||||
PID=$(ps -ef | grep '[.]\/login' | awk '{print $2}')
|
||||
echo "sdk_login status:"
|
||||
PID=$(ps -ef | grep '[l]ogin_service' | awk '{print $2}')
|
||||
if [ -z "$PID" ]; then
|
||||
echo "login is not running."
|
||||
echo "sdk_login is not running."
|
||||
else
|
||||
echo "login is running."
|
||||
echo "sdk_login is running."
|
||||
fi
|
||||
elif [ "$1" = "restart" ]; then
|
||||
echo "Restarting login..."
|
||||
PID=$(ps -ef | grep '[.]\/login' | awk '{print $2}')
|
||||
PID=$(ps -ef | grep '[l]ogin_service' | awk '{print $2}')
|
||||
if [ -n "$PID" ]; then
|
||||
echo "login stopping."
|
||||
echo "sdk_login stopping."
|
||||
kill "$PID"
|
||||
fi
|
||||
while :; do
|
||||
PID=$(ps -ef | grep '[.]\/login' | awk '{print $2}')
|
||||
PID=$(ps -ef | grep '[l]ogin_service' | awk '{print $2}')
|
||||
[ -z "$PID" ] && break
|
||||
sleep 1
|
||||
done
|
||||
echo "login stopped."
|
||||
echo "sdk_login stopped."
|
||||
mkdir -p log
|
||||
: > log/login.log
|
||||
nohup ./login >> log/login.log 2>&1 &
|
||||
echo "login restarted."
|
||||
: > log/sdk_login.log
|
||||
nohup ./sdk_login >> log/sdk_login.log 2>&1 &
|
||||
echo "sdk_login restarted."
|
||||
else
|
||||
echo "Usage: $0 [start|stop|status|restart]"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@ -1,2 +1,2 @@
|
||||
cd /data/admin_backend
|
||||
GOOS=linux GOARCH=amd64 go build -o /data/admin_backend/release/shipping_service/shipping sdk/ship/main.go
|
||||
GOOS=linux GOARCH=amd64 go build -o /data/admin_backend/release/shipping_service/shipping_service sdk/ship/main.go
|
||||
|
||||
Binary file not shown.
@ -9,46 +9,59 @@ if [ $# -ne 1 ]; then
|
||||
fi
|
||||
|
||||
if [ "$1" = "start" ]; then
|
||||
echo "Starting shipping..."
|
||||
echo "Starting shipping_service..."
|
||||
mkdir -p log
|
||||
: > log/shipping.log
|
||||
nohup ./shipping >> log/shipping.log 2>&1 &
|
||||
echo "shipping started."
|
||||
: > log/shipping_service.log
|
||||
nohup ./shipping_service >> log/shipping_service.log 2>&1 &
|
||||
echo "shipping_service started."
|
||||
elif [ "$1" = "stop" ]; then
|
||||
echo "Stopping shipping..."
|
||||
PID=$(ps -ef | grep '[.]\/shipping' | awk '{print $2}')
|
||||
echo "Stopping shipping_service..."
|
||||
# ...existing code...
|
||||
PID=$(ps -ef | grep '[s]hipping_service' | awk '{print $2}')
|
||||
if [ -z "$PID" ]; then
|
||||
echo "shipping is not running."
|
||||
echo "shipping_service is not running."
|
||||
exit 1
|
||||
fi
|
||||
kill "$PID"
|
||||
echo "shipping stopped."
|
||||
# 等待优雅退出,最多 5 秒,超时则强制杀死
|
||||
COUNT=0
|
||||
while [ $COUNT -lt 5 ]; do
|
||||
sleep 1
|
||||
if ! ps -p "$PID" > /dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
COUNT=$((COUNT+1))
|
||||
done
|
||||
if ps -p "$PID" > /dev/null 2>&1; then
|
||||
kill -9 "$PID"
|
||||
fi
|
||||
echo "shipping_service stopped."
|
||||
elif [ "$1" = "status" ]; then
|
||||
echo "shipping status:"
|
||||
PID=$(ps -ef | grep '[.]\/shipping' | awk '{print $2}')
|
||||
echo "shipping_service status:"
|
||||
PID=$(ps -ef | grep '[s]hipping_service' | awk '{print $2}')
|
||||
if [ -z "$PID" ]; then
|
||||
echo "shipping is not running."
|
||||
echo "shipping_service is not running."
|
||||
else
|
||||
echo "shipping is running."
|
||||
echo "shipping_service is running."
|
||||
fi
|
||||
elif [ "$1" = "restart" ]; then
|
||||
echo "Restarting shipping..."
|
||||
PID=$(ps -ef | grep '[.]\/shipping' | awk '{print $2}')
|
||||
echo "Restarting login..."
|
||||
PID=$(ps -ef | grep '[s]hipping_service' | awk '{print $2}')
|
||||
if [ -n "$PID" ]; then
|
||||
echo "shipping stopping."
|
||||
echo "shipping_service stopping."
|
||||
kill "$PID"
|
||||
fi
|
||||
while :; do
|
||||
PID=$(ps -ef | grep '[.]\/shipping' | awk '{print $2}')
|
||||
PID=$(ps -ef | grep '[s]hipping_service' | awk '{print $2}')
|
||||
[ -z "$PID" ] && break
|
||||
sleep 1
|
||||
done
|
||||
echo "shipping stopped."
|
||||
echo "shipping_service stopped."
|
||||
mkdir -p log
|
||||
: > log/shipping.log
|
||||
nohup ./shipping >> log/shipping.log 2>&1 &
|
||||
echo "shipping restarted."
|
||||
: > log/shipping_service.log
|
||||
nohup ./shipping_service >> log/shipping_service.log 2>&1 &
|
||||
echo "shipping_service restarted."
|
||||
else
|
||||
echo "Usage: $0 [start|stop|status|restart]"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@ -19,14 +19,27 @@ import (
|
||||
)
|
||||
|
||||
type ChargeRequest struct {
|
||||
AppID string `json:"appId" form:"appId" binding:"required" description:"途游应用id"`
|
||||
ClientID string `json:"clientId" form:"clientId" binding:"required" description:"途游客户端包id"`
|
||||
UserID string `json:"userId" form:"userId" binding:"required" description:"途游用户id"`
|
||||
ProductID string `json:"productId" form:"productId" binding:"required" description:"途游商品id"`
|
||||
AppInfo string `json:"appInfo" form:"appInfo" description:"项目组透传参数"`
|
||||
Code string `json:"code" form:"code" binding:"required" description:"接口签名"`
|
||||
ApiVer string `json:"apiver" form:"apiver" binding:"required" description:"SDK服务端支付API版本"`
|
||||
AppID string `json:"appId" form:"appId" binding:"required" description:"cp应用ID"`
|
||||
AppInfo string `json:"appInfo" form:"appInfo" description:"项目透传信息"`
|
||||
ChargedDiamonds string `json:"chargedDiamonds" form:"chargedDiamonds" description:"充值钻石数量,一般为充值金额的10倍"`
|
||||
ChargedRmbs string `json:"chargedRmbs" form:"chargedRmbs" description:"充值金额(元)"`
|
||||
ClientID string `json:"clientId" form:"clientId" binding:"required" description:"途游客户端包id"`
|
||||
ConsumeCoin string `json:"consumeCoin" form:"consumeCoin" description:"消耗金币数量,一般为充值金额的10倍"`
|
||||
ConsumeID string `json:"consumeId" form:"consumeId" description:"本次消耗事务id"`
|
||||
OrderID string `json:"orderId" form:"orderId" description:"CP订单号"`
|
||||
PlatformOrder string `json:"platformOrder" form:"platformOrder" description:"SDK订单号"`
|
||||
ProdCount string `json:"prodCount" form:"prodCount" description:"商品数量,默认为1"`
|
||||
UserID string `json:"userId" form:"userId" binding:"required" description:"SDK用户ID"`
|
||||
ProdID string `json:"prodId" form:"prodId" description:"商品ID"`
|
||||
ProdPrice string `json:"prodPrice" form:"prodPrice" description:"商品价格"`
|
||||
Code string `json:"code" form:"code" binding:"required" description:"回调签名"`
|
||||
}
|
||||
|
||||
const (
|
||||
APP_KEY = "8001bd25832553c39d4b443f56480841"
|
||||
)
|
||||
|
||||
// 增加 Sign 方法:按 json tag 名称收集参数,排除 code,按 ASCII 升序拼接 key=value 用 & 连接,最后 MD5 并返回小写十六进制字符串。
|
||||
func (r *ChargeRequest) Sign() string {
|
||||
if r == nil {
|
||||
@ -77,7 +90,7 @@ func (r *ChargeRequest) Sign() string {
|
||||
b.WriteString(params[k])
|
||||
}
|
||||
checkstr := b.String()
|
||||
|
||||
checkstr = APP_KEY + checkstr + APP_KEY
|
||||
// 计算 MD5 并返回小写十六进制字符串
|
||||
sum := md5.Sum([]byte(checkstr))
|
||||
return fmt.Sprintf("%x", sum)
|
||||
@ -104,7 +117,7 @@ func Charge(c *gin.Context) {
|
||||
c.JSON(400, gin.H{"error": "invalid AppInfo"})
|
||||
return
|
||||
}
|
||||
AppInfo.ChannelOrderId = req.ProductID
|
||||
AppInfo.ChannelOrderId = req.OrderID
|
||||
err := AppInfo.ChangeOrderStatus()
|
||||
if err != nil {
|
||||
FeishuNotify(fmt.Sprintf("change order status error: %v", err))
|
||||
@ -113,7 +126,7 @@ func Charge(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
go Shipping(AppInfo)
|
||||
c.JSON(200, gin.H{"code": 0, "message": "success"})
|
||||
c.String(200, "success")
|
||||
}
|
||||
|
||||
func Shipping(AppInfo base.Param) {
|
||||
|
||||
28
unit_test.go
28
unit_test.go
@ -4,6 +4,7 @@ import (
|
||||
"backend/Type"
|
||||
"backend/feishu"
|
||||
"backend/model"
|
||||
"backend/sdk/ship/model/tuyou"
|
||||
"backend/util"
|
||||
"fmt"
|
||||
"testing"
|
||||
@ -12,7 +13,32 @@ import (
|
||||
|
||||
func TestXxx1(t *testing.T) {
|
||||
//util.Statistics(0)
|
||||
feishu.SendOperationMsg2(0)
|
||||
//feishu.SendOperationMsg2(0)
|
||||
a := tuyou.ChargeRequest{
|
||||
ApiVer: "2",
|
||||
AppID: "20659",
|
||||
AppInfo: `{"appId":1,"serverId":1,"orderId":"order_100100013_202511251228396eCumW","uid":100100013}`,
|
||||
ChargedDiamonds: "20",
|
||||
ChargedRmbs: "1.99",
|
||||
ClientID: "Android_5.00_tyGuest,facebook.googleplay.0-hall20659.googleplay.Meowment",
|
||||
ConsumeCoin: "20",
|
||||
ConsumeID: "d50b32511250000110",
|
||||
OrderID: "-",
|
||||
PlatformOrder: "e50b32511250000549",
|
||||
ProdCount: "1",
|
||||
ProdID: "TY206590059",
|
||||
ProdPrice: "1.99",
|
||||
UserID: "19263",
|
||||
Code: "385188b30e2924042c7ca30e3db818d7",
|
||||
}
|
||||
|
||||
sign := a.Sign()
|
||||
fmt.Println("sign:", sign)
|
||||
if sign != "385188b30e2924042c7ca30e3db818d7" {
|
||||
fmt.Println("签名错误")
|
||||
} else {
|
||||
fmt.Println("签名正确")
|
||||
}
|
||||
}
|
||||
func TestXxx(t *testing.T) {
|
||||
statistics := model.Statistics{}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user