zhanwencai 1 anno fa
parent
commit
dc858f2f28

+ 85 - 37
webServer/src/controller/ApiController.ts

@@ -160,8 +160,10 @@ const googleCallPay = async (ctx) => {
   let orgProductId = orderInfo.product_id;
   let orgProductPrice = orderInfo.amount;
 
+  const accountInfo = (await User.checkAccountIsExist(orgMemId))[0];
+
   // 在适当的时机,调用 CG_ASK_LOGIN 方法
-  let params = `{"account":"${orgMemId}","order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
+  let params = `{"account":"${orgMemId}","channel_id":${accountInfo.channel_id},"order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
   return new Promise((resolve) => {
     setTimeout(async () => {
       const send_res = sendMsg.CG_ASK_LOGIN(
@@ -352,8 +354,10 @@ const appleCallPay = async (ctx) => {
   let orgProductId = orderInfo.product_id;
   let orgProductPrice = orderInfo.amount;
 
+  const accountInfo = (await User.checkAccountIsExist(orgMemId))[0];
+
   // 在适当的时机,调用 CG_ASK_LOGIN 方法
-  let params = `{"account":"${orgMemId}","order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
+  let params = `{"account":"${orgMemId}","channel_id":${accountInfo.channel_id},"order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
   return new Promise((resolve) => {
     setTimeout(async () => {
       logger.info(`订单${orderId}通知游戏发货开始`);
@@ -471,8 +475,11 @@ const CallPayQuick = async (ctx) => {
   let sendMsg = new Msg();
   sendMsg.connect(url, Account);
   logger.info(`订单${orderId} ${url}`);
+
+  const accountInfo = (await User.checkAccountIsExist(orgMemId))[0];
+
   // 在适当的时机,调用 CG_ASK_LOGIN 方法
-  let params = `{"account":"${orgMemId}","order":"${orderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
+  let params = `{"account":"${orgMemId}","order":"${orderId}","channel_id":${accountInfo.channel_id},"id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
   return new Promise((resolve) => {
     setTimeout(async () => {
       console.log("这个消息将在3秒后打印出来");
@@ -574,8 +581,11 @@ const CallPay360 = async (ctx) => {
   let orgProductId = orderInfo.product_id;
   let orgExt = data.cText;
   let orgProductPrice = data.skuPrice;
+
+  const accountInfo = (await User.checkAccountIsExist(orgMemId))[0];
+
   // 在适当的时机,调用 CG_ASK_LOGIN 方法
-  let params = `{"account":"${orgMemId}","order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`;
+  let params = `{"account":"${orgMemId}","order":"${orgOderId}","id":${orgProductId},"channel_id":${accountInfo.channel_id},"cnt":100,"money":${orgProductPrice}}`;
   return new Promise((resolve) => {
     setTimeout(async () => {
       console.log("这个消息将在3秒后打印出来");
@@ -778,6 +788,9 @@ function extractIPAddresses(text: string): string[] {
 const checkUserToken = async (ctx) => {
   let ret = {
     code: 0,
+    data: {
+      ip: "",
+    },
     msg: "请求失败",
   };
 
@@ -836,6 +849,7 @@ const checkUserToken = async (ctx) => {
 
   ret.code = 1;
   ret.msg = "请求成功";
+  ret.data.ip = ip;
   return ret;
 };
 
@@ -857,6 +871,38 @@ class ApiController {
       ctx.body = { code: -1, message: "参数错误,创建订单失败!!", data: "" };
       return;
     }
+    // const data = ctx.request.body;
+    // const sign = data.sign;
+    // //签名参数
+    // let signData = Object.keys(data)
+    //   .sort()
+    //   .filter((key) => key !== "sign");
+    // let signStr = signData.map((key) => `${data[key]}`).join("");
+    // signStr += "q97tvr1yqpum8y2h7d0mhvosffrplwlm";
+
+    // let newSign = CryptoJS.MD5(signStr).toString();
+    // console.log("signStr:", signStr);
+    // console.log("newSign:", newSign);
+    // if (sign != newSign) {
+    //   logger.info(
+    //     `签名错误: 签名串 ${signStr} newSign ${newSign} sign ${sign}`
+    //   );
+    //   ctx.body = {
+    //     code: -1,
+    //     message: "签名错误,创建订单失败!!",
+    //     data: "",
+    //   };
+    //   return;
+    // }
+
+    if (amount < 1) {
+      ctx.body = {
+        code: -1,
+        message: "金额错误,创建订单失败!!",
+        data: "",
+      };
+      return;
+    }
 
     const orderId = generateOrderNumber(); // 生成一个长度为8的订单号
     const create_time = formatDate(new Date());
@@ -902,7 +948,7 @@ class ApiController {
         var result = await checkUserToken(ctx);
         ctx.body = result;
         break;
-    case "quick":
+      case "quick":
         var result = await checkUserToken(ctx);
         ctx.body = result;
         break;
@@ -1357,7 +1403,7 @@ class ApiController {
     let data = ctx.request.body;
 
     const servers = await Server.getServerList("default");
-    const serversId = []
+    const serversId = [];
     servers.forEach(function (element) {
       let url = "ws://" + element.ip + ":" + element.port;
       if (!url) {
@@ -1367,7 +1413,7 @@ class ApiController {
         };
         return;
       }
-      serversId.push(element.id)
+      serversId.push(element.id);
 
       let param = JSON.stringify({
         type: "kickAllUser",
@@ -1382,10 +1428,7 @@ class ApiController {
       });
     });
 
-    const res = await Server.updateServerStatus(
-        serversId,
-        3
-      );
+    const res = await Server.updateServerStatus(serversId, 3);
 
     ctx.body = {
       code: 0,
@@ -1430,7 +1473,6 @@ class ApiController {
   async sendAllMail(ctx) {
     let data = ctx.request.body;
 
-
     if (!data.server_list || data.server_list.length === 0) {
       ctx.body = { code: -1, message: "区服不能为空", data: "" };
       return;
@@ -1440,34 +1482,36 @@ class ApiController {
 
     const server_list = data.server_list;
     const servers = await Server.getServerList("default");
-    const filteredServer = servers.filter(item => server_list.includes(item.id));
+    const filteredServer = servers.filter((item) =>
+      server_list.includes(item.id)
+    );
 
     filteredServer.forEach(function (element) {
-        let url = "ws://" + element.ip + ":" + element.port;
-        if (!url) {
-          ctx.body = {
-            code: 1,
-            msg: `区服id错误: serverId ${element.server_id}`,
-          };
-          return;
-        }
+      let url = "ws://" + element.ip + ":" + element.port;
+      if (!url) {
+        ctx.body = {
+          code: 1,
+          msg: `区服id错误: serverId ${element.server_id}`,
+        };
+        return;
+      }
 
-        let param = JSON.stringify({
-          type: "sendAllMail",
-          mail: JSON.stringify({
-            title: data.title,
-            content: data.content,
-            items: JSON.parse(data.items),
-            expire: data.expire,
-          }),
-        });
-        let sendMsg = new Msg();
-        sendMsg.connect(url, Account);
-        new Promise((resolve) => {
-          setTimeout(async () => {
-            sendMsg.CG_TEST_PROTO("test", param);
-          }, 1000);
-        });
+      let param = JSON.stringify({
+        type: "sendAllMail",
+        mail: JSON.stringify({
+          title: data.title,
+          content: data.content,
+          items: JSON.parse(data.items),
+          expire: data.expire,
+        }),
+      });
+      let sendMsg = new Msg();
+      sendMsg.connect(url, Account);
+      new Promise((resolve) => {
+        setTimeout(async () => {
+          sendMsg.CG_TEST_PROTO("test", param);
+        }, 1000);
+      });
     });
 
     ctx.body = {
@@ -1487,6 +1531,8 @@ class ApiController {
       data.userId = body.uuid;
     }
 
+    const accountInfo = (await User.checkAccountIsExist(body.account))[0];
+
     logger.info("api cdk 接口请求 data:", { data: data });
 
     let serverUrl = await getServerList(body.serverId, "default");
@@ -1516,6 +1562,7 @@ class ApiController {
         param = JSON.stringify({
           code: data.code,
           type: "UseFixCDK",
+          channel_id: accountInfo.channel_id,
         });
       } else {
         const result = splitString(response.data.data, ";");
@@ -1530,6 +1577,7 @@ class ApiController {
         param = JSON.stringify({
           type: "UseCDKV2",
           itemList: itemList,
+          channel_id: accountInfo.channel_id,
         });
       }
       let sendMsg = new Msg();

+ 11 - 8
webServer/src/model/ServerModel.ts

@@ -20,7 +20,7 @@ class ServerModel {
   }
   async getAllServerList(tag: any, ip: string) {
     const rows = await query(
-      `SELECT id,status,name,ip,port,tips,white_list FROM game_server WHERE tag = ?`,
+      `SELECT * FROM game_server WHERE tag = ?`,
       [tag]
     );
     const resultArray = (rows as any[]).map((row) => {
@@ -34,11 +34,18 @@ class ServerModel {
         }
       }
 
+      let server = "";
+      if (row.wss) {
+        server = row.wss;
+      } else {
+        server = `ws://${row.ip}:${row.port}`;
+      }
+
       return {
         sid: row.id,
         id: row.id,
         name: row.name,
-        server: `ws://${row.ip}:${row.port}`,
+        server: server,
         status: status,
         tips: row.tips,
         ip: row.ip,
@@ -78,12 +85,8 @@ class ServerModel {
 
   //更新状态
   async updateServerStatus(id: any, status: any) {
-    const sql =
-      "UPDATE game_server SET status = ? WHERE id in (?)";
-    return await query(sql, [
-      status,
-      id,
-    ]);
+    const sql = "UPDATE game_server SET status = ? WHERE id in (?)";
+    return await query(sql, [status, id]);
   }
 }
 

+ 47 - 36
webServer/src/utils/common.ts

@@ -1,49 +1,60 @@
-const Server = require('../model/ServerModel')
+const Server = require("../model/ServerModel");
 
 export const compareVersions = (v1: string, v2: string) => {
-    const parts1 = v1.split('.').map(Number);
-    const parts2 = v2.split('.').map(Number);
+  const parts1 = v1.split(".").map(Number);
+  const parts2 = v2.split(".").map(Number);
 
-    for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
-        const num1 = parts1[i] || 0;
-        const num2 = parts2[i] || 0;
+  for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
+    const num1 = parts1[i] || 0;
+    const num2 = parts2[i] || 0;
 
-        if (num1 > num2) return 1;
-        if (num1 < num2) return -1;
-    }
+    if (num1 > num2) return 1;
+    if (num1 < num2) return -1;
+  }
 
-    return 0;
-}
+  return 0;
+};
 
 export const generateOrderNumber = () => {
-    const date = new Date();
-    const year = date.getFullYear();
-    const month = (date.getMonth() + 1).toString().padStart(2, '0');
-    const day = date.getDate().toString().padStart(2, '0');
-    const hours = date.getHours().toString().padStart(2, '0');
-    const minutes = date.getMinutes().toString().padStart(2, '0');
-    const seconds = date.getSeconds().toString().padStart(2, '0');
-    const dateString = `${year}${month}${day}${hours}${minutes}${seconds}`;
-    const randomString1 = Math.floor(Math.random() * 1090000000800)
-        .toString()
-        .slice(0, 4);
-    const randomString2 = Math.floor(Math.random() * 1090000000800)
-        .toString()
-        .slice(0, 4);
-    return "CP" + dateString + randomString1 + randomString2;
-}
+  const date = new Date();
+  const year = date.getFullYear();
+  const month = (date.getMonth() + 1).toString().padStart(2, "0");
+  const day = date.getDate().toString().padStart(2, "0");
+  const hours = date.getHours().toString().padStart(2, "0");
+  const minutes = date.getMinutes().toString().padStart(2, "0");
+  const seconds = date.getSeconds().toString().padStart(2, "0");
+  const dateString = `${year}${month}${day}${hours}${minutes}${seconds}`;
+  const randomString1 = Math.floor(Math.random() * 1090000000800)
+    .toString()
+    .slice(0, 4);
+  const randomString2 = Math.floor(Math.random() * 1090000000800)
+    .toString()
+    .slice(0, 4);
+  return "CP" + dateString + randomString1 + randomString2;
+};
 
 export const formatDate = (now: Date) => {
-    const formattedDateTime = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();
-    return formattedDateTime;
-}
+  const formattedDateTime =
+    now.getFullYear() +
+    "-" +
+    (now.getMonth() + 1) +
+    "-" +
+    now.getDate() +
+    " " +
+    now.getHours() +
+    ":" +
+    now.getMinutes() +
+    ":" +
+    now.getSeconds();
+  return formattedDateTime;
+};
 
 //根据区服id获取地址
 export const getServerList = async (serverId, tag) => {
-    const servers = (await Server.getServerList(tag))
-    for (let i = 0; i < servers.length; i++) {
-        if (servers[i].id == serverId) {
-            return 'ws://' + servers[i].ip + ':' + servers[i].port
-        }
+  const servers = await Server.getServerList(tag);
+  for (let i = 0; i < servers.length; i++) {
+    if (servers[i].id == serverId) {
+        return "ws://" + servers[i].ip + ":" + servers[i].port;
     }
-}
+  }
+};