Compare commits
	
		
			4 Commits
		
	
	
		
			26bd2029e7
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 34cebffd0c | |||
| 7cc37b0523 | |||
| 7f1d475af9 | |||
| 09302848c9 | 
							
								
								
									
										1
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -13,6 +13,7 @@ | |||||||
|       ], |       ], | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "axios": "^1.8.4", |         "axios": "^1.8.4", | ||||||
|  |         "body-parser": "^2.2.0", | ||||||
|         "dotenv": "^16.5.0", |         "dotenv": "^16.5.0", | ||||||
|         "express": "^5.1.0", |         "express": "^5.1.0", | ||||||
|         "mysql": "^2.18.1", |         "mysql": "^2.18.1", | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ | |||||||
|   "license": "ISC", |   "license": "ISC", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "axios": "^1.8.4", |     "axios": "^1.8.4", | ||||||
|  |     "body-parser": "^2.2.0", | ||||||
|     "dotenv": "^16.5.0", |     "dotenv": "^16.5.0", | ||||||
|     "express": "^5.1.0", |     "express": "^5.1.0", | ||||||
|     "mysql": "^2.18.1", |     "mysql": "^2.18.1", | ||||||
|   | |||||||
| @@ -1,8 +1,13 @@ | |||||||
| const express = require("express"); | const express = require("express"); | ||||||
|  | const bodyParser = require("body-parser"); // 添加 body-parser 中间件 | ||||||
| const { getConnection, query } = require("../utils/db.util"); | const { getConnection, query } = require("../utils/db.util"); | ||||||
|  | const axios = require("axios"); | ||||||
|  |  | ||||||
| const router = express.Router(); | const router = express.Router(); | ||||||
|  |  | ||||||
|  | // 添加 body-parser 中间件 | ||||||
|  | router.use(bodyParser.json()); | ||||||
|  |  | ||||||
| // 获取角色列表 | // 获取角色列表 | ||||||
| router.get("/roles", async (req, res) => { | router.get("/roles", async (req, res) => { | ||||||
|   try { |   try { | ||||||
| @@ -16,6 +21,37 @@ router.get("/roles", async (req, res) => { | |||||||
|   } |   } | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | router.post("/item/send", async (req, res) => { | ||||||
|  |   try { | ||||||
|  |     const { roleName, itemId, itemNum = 1 } = req.body; | ||||||
|  |     if (!roleName || !itemId) res.json({ code: 1, msg: "缺少必要参数" }); | ||||||
|  |     const roleId = await query(`SELECT id FROM role where name = '${roleName}' limit 1`); | ||||||
|  |     if (roleId?.length != 1) res.json({ code: 1, msg: "没有找到角色" }); | ||||||
|  |     const role = roleId[0].id; | ||||||
|  |     const result = await axios.post( | ||||||
|  |       "http://192.168.25.110:19000/center/gm", | ||||||
|  |       { role, item: [[itemId, itemNum]] }, | ||||||
|  |       { | ||||||
|  |         headers: { | ||||||
|  |           Accept: "application/json, text/plain, */*", | ||||||
|  |           "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", | ||||||
|  |           Connection: "keep-alive", | ||||||
|  |           "Content-Type": "application/json", | ||||||
|  |           "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1 Edg/121.0.0.0", | ||||||
|  |           "Accept-Encoding": "gzip", | ||||||
|  |           "X-Mgip-sign": "gzip", | ||||||
|  |         }, | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |     console.log("物品[%s]发送给[%s]结果:%s", itemId, roleName, result.data); | ||||||
|  |     if (result.data == "成功") res.json({ code: 0, msg: "发送成功!" }); | ||||||
|  |     else res.json({ code: 1, msg: result.data.content }); | ||||||
|  |   } catch (error) { | ||||||
|  |     console.error("获取角色数据失败:", error); | ||||||
|  |     res.status(500).json({ error: "获取角色数据失败" }); | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  |  | ||||||
| // 获取充值列表 | // 获取充值列表 | ||||||
| router.get("/recharges", async (req, res) => { | router.get("/recharges", async (req, res) => { | ||||||
|   try { |   try { | ||||||
|   | |||||||
| @@ -3,12 +3,15 @@ import { ref, onMounted } from 'vue' | |||||||
| import axios from 'axios' | import axios from 'axios' | ||||||
| import itemList from "@/assets/items.json" | import itemList from "@/assets/items.json" | ||||||
| import dayjs from 'dayjs' | import dayjs from 'dayjs' | ||||||
|  | import { ElMessage } from 'element-plus' | ||||||
|  |  | ||||||
|  |  | ||||||
| // 第一个卡片:表单数据 | // 第一个卡片:表单数据 | ||||||
|  | const gmFormRef = ref() | ||||||
| const form = ref({ | const form = ref({ | ||||||
|   playerName: '', |   playerName: '', | ||||||
|   item: '', |   item: '', | ||||||
|  |   itemNum: '', | ||||||
|   recharge: '' |   recharge: '' | ||||||
| }) | }) | ||||||
| const items = ref(itemList) | const items = ref(itemList) | ||||||
| @@ -53,8 +56,15 @@ onMounted(() => { | |||||||
| }) | }) | ||||||
|  |  | ||||||
| // 提交表单 | // 提交表单 | ||||||
| const submitForm = () => { | const submitForm = (formEl) => { | ||||||
|   console.log('提交表单:', form.value) |   formEl.validate().then(async () => { | ||||||
|  |     const params = form.value | ||||||
|  |     const res = await axios.post("/api/item/send", { roleName: params.playerName, itemId: params.item, itemNum: params.itemNum }) | ||||||
|  |     const result = res?.data | ||||||
|  |     if (res.data.code == 0) ElMessage.success(result.msg) | ||||||
|  |     else ElMessage.error(result.msg) | ||||||
|  |   }) | ||||||
|  |  | ||||||
| } | } | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| @@ -65,31 +75,27 @@ const submitForm = () => { | |||||||
|       <template #header> |       <template #header> | ||||||
|         <div class="card-header"> |         <div class="card-header"> | ||||||
|           <span>GM操作台</span> |           <span>GM操作台</span> | ||||||
|           <el-button type="primary" @click="submitForm">提交</el-button> |           <el-button type="primary" @click="submitForm(gmFormRef)">提交</el-button> | ||||||
|         </div> |         </div> | ||||||
|       </template> |       </template> | ||||||
|       <el-form :model="form" label-width="100px"> |       <el-form ref="gmFormRef" :model="form" label-width="100px"> | ||||||
|         <el-row :gutter="20"> |         <div class="grid grid-cols-2"> | ||||||
|           <el-col :span="8"> |           <el-form-item label="玩家角色名" prop="playerName" required> | ||||||
|             <el-form-item label="玩家角色名"> |             <el-input v-model="form.playerName" placeholder="请输入玩家角色名"></el-input> | ||||||
|               <el-input v-model="form.playerName" placeholder="请输入玩家角色名"></el-input> |           </el-form-item> | ||||||
|             </el-form-item> |           <el-form-item label="物品道具" prop="item"> | ||||||
|           </el-col> |             <el-select-v2 v-model="form.item" placeholder="请选择物品" :options="items" | ||||||
|           <el-col :span="8"> |               :props="{ label: 'name', value: 'resId' }" filterable /> | ||||||
|             <el-form-item label="物品道具"> |           </el-form-item> | ||||||
|               <el-select-v2 v-model="form.item" placeholder="请选择物品" :options="items" |           <el-form-item label="物品数量" prop="itemNum"> | ||||||
|                 :props="{ label: 'name', value: 'resId' }" filterable /> |             <el-input type="number" v-model="form.itemNum" placeholder="请输入发送的物品数量"></el-input> | ||||||
|             </el-form-item> |           </el-form-item> | ||||||
|           </el-col> |           <el-form-item label="充值" prop="recharges"> | ||||||
|           <el-col :span="8"> |             <el-select v-model="form.recharge" placeholder="请选择充值"> | ||||||
|             <el-form-item label="充值"> |               <el-option v-for="recharge in recharges" :key="recharge" :label="recharge" :value="recharge"></el-option> | ||||||
|               <el-select v-model="form.recharge" placeholder="请选择充值"> |             </el-select> | ||||||
|                 <el-option v-for="recharge in recharges" :key="recharge" :label="recharge" |           </el-form-item> | ||||||
|                   :value="recharge"></el-option> |         </div> | ||||||
|               </el-select> |  | ||||||
|             </el-form-item> |  | ||||||
|           </el-col> |  | ||||||
|         </el-row> |  | ||||||
|       </el-form> |       </el-form> | ||||||
|     </el-card> |     </el-card> | ||||||
|  |  | ||||||
| @@ -98,7 +104,8 @@ const submitForm = () => { | |||||||
|       <template #header> |       <template #header> | ||||||
|         <div class="card-header"> |         <div class="card-header"> | ||||||
|           <span>角色列表</span> |           <span>角色列表</span> | ||||||
|           <el-input style="width: 240px;" v-model="roleSearch" placeholder="请输入角色名称或ID" @change="fetchRoleList" clearable /> |           <el-input style="width: 240px;" v-model="roleSearch" placeholder="请输入角色名称或ID" @change="fetchRoleList" | ||||||
|  |             clearable /> | ||||||
|         </div> |         </div> | ||||||
|       </template> |       </template> | ||||||
|       <el-table :data="roleList" style="width: 100%" border height="400"> |       <el-table :data="roleList" style="width: 100%" border height="400"> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user