فهرست منبع

添加区服功能

zhanwencai 1 سال پیش
والد
کامیت
635cbc9fbb

+ 100 - 34
webServer/src/controller/ApiController.ts

@@ -7,6 +7,7 @@ const Order = require('../model/OrderModel')
 const Server = require('../model/ServerModel')
 const Version = require('../model/VersionModel')
 const CDK = require("../model/CDK")
+const notice = require("../notice.json")
 const logger = require('../log')
 const axios = require('axios');
 const ClientId = "849706610247-rok24bfm4sapiggunbuirugf2n31c3ho.apps.googleusercontent.com"
@@ -332,7 +333,7 @@ const testGoogleCallPay = async (ctx) => {
     }
 
     let data = ctx.request.body
-    
+
     logger.info("pay callback params:", { "url": ctx.href, "params": data })
 
     const redisClient = ctx.redis.client;
@@ -418,11 +419,11 @@ const testGoogleCallPay = async (ctx) => {
             ,
             {
                 headers: {
-    
+
                     'Content-Type': 'application/json'
                 }
             })
-    
+
         let consumeUrl = `https://androidpublisher.googleapis.com/androidpublisher/v3/applications/${PackageName}/purchases/products/${productId}/tokens/${googleToken}:consume?access_token=${access_token}`
         const consumeRes = await axios.post(consumeUrl,
             {
@@ -431,14 +432,14 @@ const testGoogleCallPay = async (ctx) => {
             ,
             {
                 headers: {
-    
+
                     'Content-Type': 'application/json'
                 }
             })
 
-            ret.code = 1
-            ret.msg = '发货成功'
-            resolve(ret);
+        ret.code = 1
+        ret.msg = '发货成功'
+        resolve(ret);
 
     });
 }
@@ -524,11 +525,9 @@ const generateOrderNumber = () => {
     return "CP" + dateString + randomString1 + randomString2;
 }
 
-const formatDate = (date: Date) => {
-    const year = date.getFullYear();
-    const month = (date.getMonth() + 1).toString().padStart(2, '0');
-    const day = date.getDate().toString().padStart(2, '0');
-    return `${year}-${month}-${day}`;
+const formatDate = (now: Date) => {
+    const formattedDateTime = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds();
+    return formattedDateTime;
 }
 
 class ApiController {
@@ -543,8 +542,6 @@ class ApiController {
             server_id
         } = ctx.request.body
 
-        logger.info("create params:", { "params": ctx })
-
         logger.info("create params:", { "params": ctx.request.body })
 
         if (!product_id || !server_id || !role_name || !role_id || !amount || !uid) {
@@ -600,11 +597,11 @@ class ApiController {
                 console.log('发货结果', result)
                 ctx.body = result
                 break;
-                // case 'testGoogle':
-                // var result = await testGoogleCallPay(ctx)
-                // console.log('发货结果', result)
-                // ctx.body = result
-                // break;
+            // case 'testGoogle':
+            // var result = await testGoogleCallPay(ctx)
+            // console.log('发货结果', result)
+            // ctx.body = result
+            // break;
             default:
                 ctx.body = {
                     code: 0,
@@ -625,6 +622,75 @@ class ApiController {
         ctx.body = servers
     }
 
+    async getAllServerList(ctx) {
+        let tag = ctx.query.tag || 'default'
+        const servers = (await Server.getAllServerList(tag))
+        ctx.body = servers
+    }
+
+    async enterServer(ctx) {
+        let ret = {
+            code: 0,
+            msg: '请求失败'
+        }
+
+        let {
+            uid,
+            server_id
+        } = ctx.request.body
+
+        if (!uid || !server_id) {
+            ctx.body = ret
+            return
+        }
+
+        await ctx.redis.client.set(`enter_sever_${uid}`, server_id);
+        ctx.body = {
+            code: 1,
+            msg: '请求成功'
+        }
+    }
+
+    async getLastServerList(ctx) {
+
+        let {
+            uid,
+        } = ctx.request.body
+
+        const tag = ctx.query.tag || 'default'
+        const enter_server = await ctx.redis.client.get(`enter_sever_${uid}`);
+
+        let isNewAccount = 1
+        let serverInfo = null
+
+        if (enter_server) {
+            serverInfo = (await Server.getServerListById(tag, enter_server))[0]
+            isNewAccount = 0
+        } else {
+            const servers = (await Server.getServerList(tag))
+            serverInfo = servers[servers.length - 1]
+        }
+
+        let data = {
+            "channel": "Thailand", //渠道固定
+            "minSid": 1,            //最小服务器
+            "maxSid": 10,         //最大服务器 这里会控制 服务器列表显示的数量
+            "isNewAccount": isNewAccount, //1为新号 会弹出用户协议
+            //以下是最近登陆的服务器 (不可为空 如果没有参数可以填最后一个区)
+            "sid": serverInfo.id || 1,
+            "id": serverInfo.id || 1,
+            "name": serverInfo.name || "1区",
+            "server": serverInfo.ip ? `ws://${serverInfo.ip}:${serverInfo.port}` : "",
+            "status": serverInfo.status || 0,
+        }
+
+        ctx.body = data
+    }
+
+    async getNotice(ctx) {
+        ctx.body = notice
+    }
+
     async genCDK(ctx) {
         /*
         data = {
@@ -635,9 +701,9 @@ class ApiController {
         }
         */
         let data = ctx.request.body
-        await CDK.genCDK(ctx,data.cnt,data.useCnt,data.serverList,data.itemList)
+        await CDK.genCDK(ctx, data.cnt, data.useCnt, data.serverList, data.itemList)
         ctx.body = {
-            code:0,
+            code: 0,
             msg: 'success'
         }
         return
@@ -645,35 +711,35 @@ class ApiController {
 
     async getCDK(ctx) {
         let data = ctx.request.body
-        let ret = await CDK.getCDK(ctx,data.batch)
-        if (ret.length <= 0 ) {
+        let ret = await CDK.getCDK(ctx, data.batch)
+        if (ret.length <= 0) {
             ctx.body = {
-                code : 1,
+                code: 1,
                 msg: "batch invalid"
             }
             return
         }
         ctx.body = {
-            code : 0,
-            msg : ret
+            code: 0,
+            msg: ret
         }
     }
     async useCDK(ctx) {
         let data = ctx.request.body
-        
+
         let url = await getServerList(data.serverId, 'default')
         if (!url) {
             logger.info(`区服id错误: serverId ${data.serverId}`)
             ctx.body = {
-                code : 1,
-                msg : `区服id错误: serverId ${data.serverId}`
+                code: 1,
+                msg: `区服id错误: serverId ${data.serverId}`
             }
-            return 
+            return
         }
-        let ret = await CDK.checkCDK(ctx,data.code,data.serverId)
+        let ret = await CDK.checkCDK(ctx, data.code, data.serverId)
         if (ret != "success") {
             ctx.body = {
-                code : 1,
+                code: 1,
                 msg: ret
             }
             return
@@ -681,9 +747,9 @@ class ApiController {
         // 通知给服务器,发放道具
         Msg.connect(url, Account);
         let itemListStr = CDK.getCDKItemList(data.code)
-        if (itemListStr.length <= 0 ) {
+        if (itemListStr.length <= 0) {
             ctx.body = {
-                code : 1,
+                code: 1,
                 msg: "invalid code"
             }
         }

+ 17 - 1
webServer/src/model/ServerModel.ts

@@ -1,10 +1,26 @@
 import { query } from '../sql/query'; // 确保路径是正确的
 
 class ServerModel {
-    //获取订单
+    //获取
     async getServerList(tag: any) {
         return await query(`SELECT id,status,name,ip,port,tips FROM game_server WHERE tag = ?`,[tag])
     }
+    async getServerListById(tag: any, id:any) {
+        return await query(`SELECT id,status,name,ip,port,tips FROM game_server WHERE tag = ? and id = ? `,[tag,id])
+    }
+    async getAllServerList(tag: any) {
+        const rows = await  query(`SELECT id,status,name,ip,port,tips FROM game_server WHERE tag = ?`,[tag])
+        const resultArray = rows.map(row => {
+            return {
+                sid : row.id,
+                id : row.id,
+                name: row.name,
+                server :`ws://${row.ip}:${row.port}`,
+                status: row.status,
+            };
+          });
+        return resultArray
+    }
 }
 
 module.exports = new ServerModel()

+ 5 - 0
webServer/src/notice.json

@@ -0,0 +1,5 @@
+[
+    {
+        "content": "这是公告这是公告 /n这是公告这是公告第二行"
+    }
+]

+ 12 - 0
webServer/src/router/index.ts

@@ -25,4 +25,16 @@ router.post('/useCDK',ApiController.useCDK)
 
 router.post('/getCDK',ApiController.getCDK)
 
+//进去区服
+router.post('/enterServer', ApiController.enterServer)
+
+//获取最近登陆区服信息
+router.post('/getLastServerList', ApiController.getLastServerList)
+
+//获取全部区服
+router.get('/getAllServerList', ApiController.getAllServerList)
+
+//获取公告
+router.get('/getNotice', ApiController.getNotice)
+
 module.exports = router

+ 1 - 1
webServer/src/sql/query.ts

@@ -10,7 +10,7 @@ const query = (sql, val) => {
             if (err) {
                 reject(err);
             } else {
-                connection.query(sql, val, (err, fields) => {
+                connection.query(sql, val, (err: any, fields: unknown) => {
                     if (err) {
                         reject(err);
                     } else {