const { Controller } = require('egg'); const CryptoJS = require("crypto-js"); const KEY = CryptoJS.enc.Utf8.parse('BDQH'); const decryptRequest = (body) => { return CryptoJS.AES.decrypt(body, KEY, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }).toString(CryptoJS.enc.Utf8); }; const checkUid = async (ctx) => { const uid = ctx.request.body.uid; const token = ctx.request.header.authorization; const redis = ctx.app.redis; let rdmcode; if (!uid) { const [buser, cuser, tuser] = await Promise.all([ redis.get('db0').get(token), redis.get('db1').get(token), redis.get('db5').get(token), ]); rdmcode = buser || cuser || tuser; } else { let decryptUid = decryptRequest(uid).split('?')[0]; const redisType = { "B": "db0", "C": "db1", "T": "db5", }; const lastCode = decryptUid[decryptUid.length - 1]; rdmcode = await redis.get(redisType[lastCode]).get(token); } if (!rdmcode) { return false; } return rdmcode; }; const fileName = "home"; const setResponse = (ctx, code, msg, model, data = {}) => { const modelType = { "none": { code, msg }, "deconstruction": { code, msg, ...data }, "polymerization": { code, msg, data } } ctx.body = modelType[model]; } class HomeController extends Controller { // 保存挂载点 async saveMountpoint() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.saveMountpoint(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { setResponse(ctx, 200, '保存挂载点成功', "none"); } else { setResponse(ctx, 404, '保存挂载点失败', "none"); } } catch (error) { const blockName = fileName + "--" + "saveMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 修改挂载点密码 async editPassword() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.editPassword(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { setResponse(ctx, 200, '修改挂载点密码成功', "none"); } else { setResponse(ctx, 404, '修改挂载点密码失败', "none"); } } catch (error) { const blockName = fileName + "--" + "editPassword"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 修改挂载点名称 async editMountpoint() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.editMountpoint(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { setResponse(ctx, 200, '修改挂载点名称成功', "none"); } else { setResponse(ctx, 404, '修改挂载点名称失败', "none"); } } catch (error) { const blockName = fileName + "--" + "editMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 删除挂载点 async delMountpoint() { const ctx = this.ctx; try { // 验证用户token let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } // 解析获取用户ID const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; // 调用服务层删除挂载点 const result = await ctx.service.home.delMountpoint(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } // 根据删除结果返回响应 if (result) { setResponse(ctx, 200, '修改挂载点名称成功', "none"); } else { setResponse(ctx, 404, '修改挂载点名称失败', "none"); } } catch (error) { // 记录异常日志 const blockName = fileName + "--" + "delMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 获取挂载点 async getMountpoint() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const result = await ctx.service.home.getMountpoint(uid); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { const data = { mountpoint: result }; setResponse(ctx, 200, '获取挂载点成功', "deconstruction", data); } else { setResponse(ctx, 404, '获取挂载点失败', "none"); } } catch (error) { const blockName = fileName + "--" + "getMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 搜索挂载点 async searchMountpoint() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.searchMountpoint(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { const data = { mountpoint: result.dataValues.mountpoint }; setResponse(ctx, 200, '搜索挂载点成功', "deconstruction", data); } else { setResponse(ctx, 203, '搜索挂载点失败', "none"); } } catch (error) { const blockName = fileName + "--" + "searchMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 全局寻获挂载点 async findMountpoint() { const ctx = this.ctx; try { const body = ctx.request.body; const result = await ctx.service.home.findMountpoint(body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { const data = { mountpoint: result.mountpoint, password: result.password, status: result.status }; setResponse(ctx, 200, '搜索挂载点成功', "deconstruction", data); } else { setResponse(ctx, 404, '搜索挂载点失败', "none"); } } catch (error) { const blockName = fileName + "--" + "findMountpoint"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 查看ntrip-clinet密码 async viewPassword() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.viewPassword(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { const data = { base: result.dataValues.base }; setResponse(ctx, 200, 'ntrip-clinet密码获取成功', "deconstruction", data); } else { setResponse(ctx, 404, 'ntrip-clinet密码获取失败', "none"); } } catch (error) { const blockName = fileName + "--" + "viewPassword"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 获取挂载点记录 async getRecord() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.getRecord(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { let recordMsg = []; result.rows.forEach(element => { recordMsg.push(element.dataValues); }); const data = { recordMsg: recordMsg, count: result.count }; setResponse(ctx, 200, '挂载点记录查询成功', "deconstruction", data); } else { setResponse(ctx, 404, '挂载点记录查询失败', "none"); } } catch (error) { const blockName = fileName + "--" + "getRecord"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 存储消息记录 async saveMsg() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const { mountpoint, original_msg } = body; const form = { mountpoint: mountpoint, original_msg: original_msg, created_at: new Date() }; const result = await ctx.service.home.saveMsg(uid, form); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { setResponse(ctx, 200, '消息记录存储成功', "none"); } else { setResponse(ctx, 404, '消息记录存储失败', "none"); } } catch (error) { const blockName = fileName + "--" + "saveMsg"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 设置ntrip-clinet密码 async setPassword() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.setPassword(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { setResponse(ctx, 200, 'ntrip-clinet密码设置成功', "none"); } else { setResponse(ctx, 404, 'ntrip-clinet密码设置失败', "none"); } } catch (error) { const blockName = fileName + "--" + "setPassword"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 获取ntrip-clinet密码 async getPassword() { const ctx = this.ctx; try { const body = ctx.request.body; const result = await ctx.service.home.getPassword(body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { const data = { password: result.dataValues.password }; setResponse(ctx, 200, 'ntrip-clinet密码获取成功', "deconstruction", data); } else { setResponse(ctx, 404, 'ntrip-clinet密码获取失败', "none"); } } catch (error) { const blockName = fileName + "--" + "getPassword"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 获取历史消息 async getHistoryMsg() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const result = await ctx.service.home.getHistoryMsg(uid, body); if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { let historyMsg = []; result.rows.forEach(element => { historyMsg.push(element.dataValues); }); const data = { historyMsg: historyMsg, count: result.count }; setResponse(ctx, 200, '历史消息查找成功', "deconstruction", data); } else { setResponse(ctx, 404, '历史消息查找失败', "none"); } } catch (error) { const blockName = fileName + "--" + "getHistoryMsg"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 删除历史消息 async delHistoryMsg() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; const body = ctx.request.body; const model = decryptRequest(body.model); const password = decryptRequest(body.password); const requestMsg = body.userMsg; const resetList = await ctx.service.home.delHistoryMsg(uid, model, password, requestMsg); if (resetList == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (resetList) { setResponse(ctx, 200, '删除历史消息成功', "none"); } else { setResponse(ctx, 404, '删除历史消息失败', "none"); } } catch (error) { const blockName = fileName + "--" + "delHistoryMsg"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } // 获取单位用户 async bsideManager() { const ctx = this.ctx; try { let rdmcode = await checkUid(ctx); if (!rdmcode) { setResponse(ctx, 401, 'token过期或错误', "none"); return; } const uid = JSON.parse(rdmcode).uid; let result; if (uid[uid.length - 1] == 'B') { const body = ctx.request.body; result = await ctx.service.home.bsideManager(uid, body); } if (result == "error") { setResponse(ctx, 500, '服务器错误', "none"); return; } if (result) { let bsideUsers = []; result.rows.forEach(element => { bsideUsers.push(element.dataValues); }); const data = { bsideUsers: bsideUsers, count: result.count }; setResponse(ctx, 200, '获取单位用户成功', "deconstruction", data); } else { setResponse(ctx, 404, '获取单位用户失败', "none"); } } catch (error) { const blockName = fileName + "--" + "bsideManager"; ctx.app.middleware.utils.log('../../../controllerLog', blockName + ">>>>" + error); setResponse(ctx, 500, '服务器错误', "none"); } } } module.exports = HomeController;