Files
chuanqi-qycq-web/module/server/koa/login.js
Kubbo eb05688ccc feat(server): 添加服务器列表接口和用户进入游戏功能
- 在登录模块中添加服务器列表获取接口 /api/server/list
- 实现用户进入游戏功能,记录登录时间和IP地址
- 添加时间工具函数用于格式化时间戳
- 配置Koa代理支持
- 更新白名单路由配置
- 添加MD5加密、Cookie操作和通用工具函数库
2025-12-25 00:46:56 +08:00

35 lines
1.5 KiB
JavaScript

import Router from 'koa-router';
import mysql from "../mysql/index.js";
import jwt from "jsonwebtoken";
import * as log4js from "../log4js.js";
import {time} from "../utils.js";
const router = new Router()
router.post("/api/login", async (ctx) => {
const {username, password} = ctx.request.body
if (['admin'].includes(username)) return ctx.body = {code: 1, message: "该账户不对外开放"}
const [rows] = await mysql.query("SELECT * FROM mir_web.player WHERE username = ? AND password = ?", [username, password])
if (rows?.length == 1) {
const token = jwt.sign(rows[0], process.env.SECRET_KEY, {expiresIn: '24h'});
return ctx.body = {code: 0, message: "登录成功", token}
}
log4js.koa.error("用户登录失败", username)
return ctx.body = {code: 1, message: "用户名或密码错误"}
})
router.post("/api/enter_game", async (ctx) => {
const {srvId, account} = ctx.request.body
if (!srvId || !account) return ctx.body = {code: 1, message: "参数错误"}
log4js.koa.info("用户进入游戏", account, ctx.ip)
await mysql.query("UPDATE mir_web.player_game SET login_time = ?,login_ip = ? WHERE username = ?", [time(), ctx.ip, account])
return ctx.body = {code: 0, message: "进入游戏成功"}
})
router.get("/api/server/list", async (ctx) => {
const [rows] = await mysql.query("SELECT * FROM mir_web.server WHERE status >= 1 ORDER BY server_id ASC limit 1000")
return ctx.body = {code: 0, message: "获取服务器列表成功", data: rows}
})
export default router.routes()