From 54c85cd161085916e840ced8e1b72657e66db10f Mon Sep 17 00:00:00 2001 From: maochaoying <925670706@qq.com> Date: Mon, 20 Mar 2023 11:34:52 +0800 Subject: [PATCH] init project --- .env | 4 +- README.md | 2 +- package.json | 2 +- src/constant/command.type.js | 21 ----- src/constant/err.type.js | 13 --- src/controller/gateway.controller.js | 101 ----------------------- src/controller/terminal.controller.js | 12 --- src/middleware/gateway.middleware.js | 80 ------------------ src/model/account.model.js | 2 +- src/model/com.model.js | 29 ------- src/model/gateway.model.js | 42 ---------- src/model/role.model.js | 28 ------- src/model/terminal.model.js | 74 ----------------- src/router/gateway.route.js | 61 -------------- src/router/terminal.route.js | 11 --- src/service/com.service.js | 21 ----- src/service/gateway.service.js | 150 ---------------------------------- src/service/terminal.service.js | 75 ----------------- src/tcp/controller/tcp.controller.js | 58 ------------- src/tcp/forwardCommand.js | 40 --------- src/tcp/server.js | 5 -- src/test/tcpClient.js | 70 ---------------- 22 files changed, 5 insertions(+), 896 deletions(-) delete mode 100644 src/constant/command.type.js delete mode 100644 src/controller/gateway.controller.js delete mode 100644 src/controller/terminal.controller.js delete mode 100644 src/middleware/gateway.middleware.js delete mode 100644 src/model/com.model.js delete mode 100644 src/model/gateway.model.js delete mode 100644 src/model/role.model.js delete mode 100644 src/model/terminal.model.js delete mode 100644 src/router/gateway.route.js delete mode 100644 src/router/terminal.route.js delete mode 100644 src/service/com.service.js delete mode 100644 src/service/gateway.service.js delete mode 100644 src/service/terminal.service.js delete mode 100644 src/tcp/controller/tcp.controller.js delete mode 100644 src/tcp/forwardCommand.js diff --git a/.env b/.env index 79d2ba6..36a480e 100644 --- a/.env +++ b/.env @@ -15,7 +15,7 @@ MYSQL_HOST = localhost MYSQL_PORT = 3306 MYSQL_USER = root MYSQL_PWD = root -MYSQL_DB = solar_energy +MYSQL_DB = chicken_breeding # salt -JWT_SECRET = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJsdJ9.eyJqdGkiOiJjYjc4M2I5Yi1kMGYxLTRjMWEtYmQyMC0zOTM' \ No newline at end of file +JWT_SECRET = 'eyJ0e2223XAiOiJKV1Q33iLCJhbGciOiJsdJ9.eyJqd4GkiOiJjYjc4M2I5Yi1kMGYxLTRjMWEtYmQyMC0zOTM' \ No newline at end of file diff --git a/README.md b/README.md index 71f1e64..8fb2336 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# 智能太阳能服务端 Nodejs -> Koa +# 鸡管家养殖系统 diff --git a/package.json b/package.json index 76f0ca4..90d999a 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "solar-energy-nodejs", + "name": "chicken-breeding-nodejs", "version": "1.0.0", "description": "", "main": "index.js", diff --git a/src/constant/command.type.js b/src/constant/command.type.js deleted file mode 100644 index 3f6b380..0000000 --- a/src/constant/command.type.js +++ /dev/null @@ -1,21 +0,0 @@ -module.exports = { - // 重置网关名称 网关 -> 服务器 - RESET_THE_GATEWAY_NAME: "ReceiptSetTheGatewayName", - // 设置网关名称 服务器 -> 网关 - SET_THE_GATEWAY_NAME: "SetTheGatewayName", - // 全部注册 服务器 -> 网关 - REGISTER_ALL_JUNCTION_BOXES: "CommandRegisterAllJunctionBoxes", - // 全部注册 网关 -> 服务器 - RECEIPT_ALL_JUNCTION_BOXES: "ReceiptAllJunctionBoxes", - // 全部查询 服务器 -> 网关 - QUERY_ALL_JUNCTION_BOXES: "CommandQueryAllJunctionBoxes", - // 全部查询 网关 -> 服务器 - RECEIPT_QUERY_ALL_JUNCTION_BOXES: "ReceiptQueryAllJunctionBoxes", - // 单个控制 服务器 -> 网关 - CONTROL_JUNCTION_BOX_SWITCH: "CommandControlJunctionBoxSwitch", - // 单个控制 网关 -> 服务器 - RECEIPT_CONTROL_JUNCTION_BOX_SWITCH: "ReceiptControlJunctionBoxSwitch", - // 上传检测数据 网关 -> 服务器 - JUNCTION_BOX_SWITCH_STATE_RECEIPT: - "command,getJunctionBoxSwitchsStateReceipt", -}; diff --git a/src/constant/err.type.js b/src/constant/err.type.js index acad4ef..ea3b225 100644 --- a/src/constant/err.type.js +++ b/src/constant/err.type.js @@ -11,17 +11,4 @@ module.exports = { tokenExpiredError: Response("40001", "token已经过期"), noAuthorization: Response("40002", "Authorization头部为空"), noAdminPermission: Response("40003", "没有超级管理员权限"), - gatewayFormatError: Response("50001", "传递网关信息不全"), - updateGatewayInfoError: Response("50002", "更新网关信息失败"), - getGatewayInfoError: Response("50003", "获取网关信息失败"), - addGatewayOneError: Response("50004", "新增网关信息失败"), - gatewayNameExistedError: Response("50005", "网关名称重复"), - getAllOnlineGateWayError: Response("50006", "查询所有在线网关失败"), - switchStateReceiptCommandError: Response( - "50007", - "上传监测数据command不正确" - ), - saveTerminalInfoError: Response("50007", "保存接线盒信息错误"), - registerAllCommandError: Response("50008", "全部注册命令错误"), - queryAllCommandError: Response("50009", "全部查询命令错误"), }; diff --git a/src/controller/gateway.controller.js b/src/controller/gateway.controller.js deleted file mode 100644 index 08813ea..0000000 --- a/src/controller/gateway.controller.js +++ /dev/null @@ -1,101 +0,0 @@ -const { - getGatewayInfo, - addGatewayOne, - updateGatewayInfo, - getAllOnlineGateWayInService, - saveOtherWatchDataList, - getTerminalInfoListByGatewayListService, -} = require('../service/gateway.service') -const Response = require('../utils/response') -const Request = require('../utils/request') -const { - addGatewayOneError, - saveTerminalInfoError, -} = require('../constant/err.type') -const { SET_THE_GATEWAY_NAME } = require('../constant/command.type') - -const createClientToSendData = require('../tcp/client') - -class GatewayController { - async addOrUpdateSingleGateway(ctx, next) { - const { TerminalName, TerminalID } = ctx.request.body - // 查询该网关是否存在 - const gatewayInfo = await getGatewayInfo({ gateway_number: TerminalID }) - let res = null - if (gatewayInfo) { - // 存在该网关则修改信息 - if (gatewayInfo.gateway_name != TerminalName) { - res = await updateGatewayInfo(TerminalName, TerminalID) - } - } else { - // 不存在则新增 - res = await addGatewayOne(TerminalName, TerminalID) - } - // 向网关发送5.3 设置网关名称指令 - createClientToSendData( - Request(SET_THE_GATEWAY_NAME, { TerminalName, TerminalID }), - ) - ctx.body = Response(0, '网关信息更新完毕', res) - } - - async getAllOnlineGateWay(ctx, next) { - const { pageIndex, pageSize } = ctx.request.query - const res = await getAllOnlineGateWayInService( - pageIndex && parseInt(pageIndex), - pageSize && parseInt(pageSize), - ) - ctx.body = Response(0, '查询成功', res) - } - - async addOrUpdateWatchData(ctx, next) { - const { TerminalName, TerminalID, States } = ctx.request.body - // 查询该网关是否存在 - try { - const gatewayInfo = await getGatewayInfo({ gateway_number: TerminalID }) - let gatewayRes = null - if (gatewayInfo) { - // 存在该网关则修改信息 - if (gatewayInfo.gateway_name != TerminalName) { - gatewayRes = await updateGatewayInfo(TerminalName, TerminalID) - } - } else { - // 不存在则新增 - gatewayRes = await addGatewayOne(TerminalName, TerminalID) - } - } catch (error) { - ctx.app.emit('error', addGatewayOneError, ctx) - } - try { - const res = saveOtherWatchDataList(TerminalID, States) - ctx.body = Response(0, '更新网关及接线盒信息完毕', res) - } catch (error) { - ctx.app.emit('error', saveTerminalInfoError, ctx) - } - } - - async registerAll(ctx, next) { - const { TerminalName, TerminalID, Command } = ctx.request.body - // 控制网关 - createClientToSendData(Command, { TerminalName, TerminalID }) - ctx.body = Response(0, '发送全部注册指令成功', null) - } - - async queryAll(ctx, next) { - const { TerminalName, TerminalID, Command } = ctx.request.body - // 控制网关 - createClientToSendData(Command, { TerminalName, TerminalID }) - ctx.body = Response(0, '发送全部查询指令成功', null) - } - - async getTerminalInfoListByGatewayList(ctx, next) { - const { gateway_id, terminal_status, pageIndex } = ctx.request.query - const res = await getTerminalInfoListByGatewayListService( - gateway_id, - terminal_status, - pageIndex, - ) - ctx.body = Response(0, '查询接线盒信息成功', res) - } -} - -module.exports = new GatewayController() diff --git a/src/controller/terminal.controller.js b/src/controller/terminal.controller.js deleted file mode 100644 index e1008f5..0000000 --- a/src/controller/terminal.controller.js +++ /dev/null @@ -1,12 +0,0 @@ -const { updateTerminalSwitch } = require('../service/terminal.service') -const Response = require('../utils/response') - -class TerminalController { - async updateTerminalSwitchState(ctx, next) { - const { switch_state, terminal_id } = ctx.request.body - const res = updateTerminalSwitch(switch_state, terminal_id) - ctx.body = Response(0, '更新接线盒通断状态成功', res) - } -} - -module.exports = new TerminalController() diff --git a/src/middleware/gateway.middleware.js b/src/middleware/gateway.middleware.js deleted file mode 100644 index 2d9d5e8..0000000 --- a/src/middleware/gateway.middleware.js +++ /dev/null @@ -1,80 +0,0 @@ -const { - gatewayFormatError, - gatewayNameExistedError, - switchStateReceiptCommandError, - registerAllCommandError, - queryAllCommandError, -} = require("../constant/err.type"); -const { getGatewayInfo } = require("../service/gateway.service"); - -const { - JUNCTION_BOX_SWITCH_STATE_RECEIPT, - QUERY_ALL_JUNCTION_BOXES, - REGISTER_ALL_JUNCTION_BOXES, -} = require("../constant/command.type"); - -// 检测网关参数是否传递正确 -const gatewayValidator = async (ctx, next) => { - if (ctx.request.body) { - const { TerminalName, TerminalID } = ctx.request.body; - // 合法性 - if (!TerminalID || !TerminalName) { - ctx.app.emit("error", gatewayFormatError, ctx); - return; - } - } else { - ctx.app.emit("error", gatewayFormatError, ctx); - return; - } - await next(); -}; - -const isGatewayNameExisted = async (ctx, next) => { - const { TerminalName, TerminalID } = ctx.request.body; - const isGatewayNameExisted = await getGatewayInfo({ - gateway_name: TerminalName, - }); - if (isGatewayNameExisted) { - // 网关名称重复 - if (TerminalID != isGatewayNameExisted.gateway_number) { - ctx.app.emit("error", gatewayNameExistedError, ctx); - return; - } - } - await next(); -}; - -const verifyWatchCommandTrue = async (ctx, next) => { - const { Command } = ctx.request.body; - if (Command != JUNCTION_BOX_SWITCH_STATE_RECEIPT) { - ctx.app.emit("error", switchStateReceiptCommandError, ctx); - return; - } - await next(); -}; - -const verifyRegisterCommandTrue = async (ctx, next) => { - const { Command } = ctx.request.body; - if (Command != REGISTER_ALL_JUNCTION_BOXES) { - ctx.app.emit("error", registerAllCommandError, ctx); - return; - } - await next(); -}; - -const verifyQueryCommandTrue = async (ctx, next) => { - const { Command } = ctx.request.body; - if (Command != QUERY_ALL_JUNCTION_BOXES) { - ctx.app.emit("error", queryAllCommandError, ctx); - return; - } - await next(); -}; - -module.exports = { - gatewayValidator, - isGatewayNameExisted, - verifyWatchCommandTrue, - verifyRegisterCommandTrue, - verifyQueryCommandTrue, -}; diff --git a/src/model/account.model.js b/src/model/account.model.js index e6714a4..e9d0703 100644 --- a/src/model/account.model.js +++ b/src/model/account.model.js @@ -2,7 +2,7 @@ const { DataTypes } = require("sequelize"); const seq = require("../db/seq"); -const Account = seq.define("solar_account", { +const Account = seq.define("chicken_account", { // id 会被sequelize自动创建, 管理 username: { type: DataTypes.STRING, diff --git a/src/model/com.model.js b/src/model/com.model.js deleted file mode 100644 index f6f0fa0..0000000 --- a/src/model/com.model.js +++ /dev/null @@ -1,29 +0,0 @@ -const { DataTypes } = require("sequelize"); - -const seq = require("../db/seq"); - -const Com = seq.define( - "solar_com", - { - // id 会被sequelize自动创建, 管理 - com_number: { - type: DataTypes.STRING, - allowNull: false, - unique: true, - comment: "com口编号", - }, - gateway_id: { - type: DataTypes.STRING, - allowNull: false, - comment: "网关id", - }, - }, - { - tableName: "solar_com", - } -); - -// 强制同步数据库(创建数据表) -// Com.sync({ force: true }); - -module.exports = Com; diff --git a/src/model/gateway.model.js b/src/model/gateway.model.js deleted file mode 100644 index 5c122de..0000000 --- a/src/model/gateway.model.js +++ /dev/null @@ -1,42 +0,0 @@ -const { DataTypes } = require("sequelize"); - -const seq = require("../db/seq"); - -const Gateway = seq.define( - "solar_gateway", - { - // id 会被sequelize自动创建, 管理 - gateway_name: { - type: DataTypes.STRING(64), - allowNull: false, - unique: true, - comment: "网关名称", - }, - is_online: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: 1, - comment: "是否在线,0掉线,1在线", - }, - gateway_number: { - type: DataTypes.STRING(64), - allowNull: false, - unique: true, - comment: "网关编号", - }, - is_deleted: { - type: DataTypes.BOOLEAN, - defaultValue: 0, - allowNull: false, - comment: "是否在物理层面移除掉了该设备,0未移除,1已移除", - }, - }, - { - tableName: "solar_gateway", - } -); - -// 强制同步数据库(创建数据表) -// Gateway.sync({ force: true }); - -module.exports = Gateway; diff --git a/src/model/role.model.js b/src/model/role.model.js deleted file mode 100644 index 7475888..0000000 --- a/src/model/role.model.js +++ /dev/null @@ -1,28 +0,0 @@ -const { DataTypes } = require("sequelize"); - -const seq = require("../db/seq"); - -const Role = seq.define( - "solar_role", - { - // id 会被sequelize自动创建, 管理 - role_id: { - type: DataTypes.INTEGER, - allowNull: false, - comment: "角色id", - }, - gateway_id: { - type: DataTypes.INTEGER, - allowNull: false, - comment: "网关id", - }, - }, - { - tableName: "solar_role", - } -); - -// 强制同步数据库(创建数据表) -// Role.sync({ force: true }); - -module.exports = Role; diff --git a/src/model/terminal.model.js b/src/model/terminal.model.js deleted file mode 100644 index a737440..0000000 --- a/src/model/terminal.model.js +++ /dev/null @@ -1,74 +0,0 @@ -const { DataTypes } = require("sequelize"); - -const seq = require("../db/seq"); - -const Terminal = seq.define( - "solar_terminal", - { - device_id: { - type: DataTypes.INTEGER, - allowNull: false, - unique: true, - comment: "接线盒的设备ID", - }, - switch_state: { - type: DataTypes.BOOLEAN, - allowNull: false, - comment: "设备的开关状态,默认0关闭,1开启", - defaultValue: 0, - }, - temperuature: { - type: DataTypes.INTEGER, - allowNull: false, - comment: "设备的温度,单位℃,精确到整数", - defaultValue: 0, - }, - current: { - type: DataTypes.FLOAT(10, 1), - allowNull: false, - comment: "设备的电流,单位A,精确到小数点后一位", - defaultValue: 0, - }, - voltage: { - type: DataTypes.FLOAT(10, 1), - allowNull: false, - comment: "设备的电压,单位V,精确到小数点后一位", - defaultValue: 0, - }, - online_or_not: { - type: DataTypes.BOOLEAN, - allowNull: false, - comment: "接线盒是否在线,默认0不在线,1在线", - defaultValue: 1, - }, - registration_info_match: { - type: DataTypes.BOOLEAN, - allowNull: false, - comment: "注册信息是否正确,默认0不正确,1正确", - defaultValue: 1, - }, - gateway_id: { - type: DataTypes.STRING, - allowNull: false, - comment: "网关id", - }, - com_id: { - type: DataTypes.STRING, - allowNull: false, - comment: "对应那个COM口", - }, - rank: { - type: DataTypes.INTEGER, - allowNull: false, - comment: "当前终端在当前COM链条中的位置", - }, - }, - { - tableName: "solar_terminal", - } -); - -// 强制同步数据库(创建数据表) -// Terminal.sync({ force: true }); - -module.exports = Terminal; diff --git a/src/router/gateway.route.js b/src/router/gateway.route.js deleted file mode 100644 index 8751b49..0000000 --- a/src/router/gateway.route.js +++ /dev/null @@ -1,61 +0,0 @@ -const Router = require('koa-router') - -const router = new Router({ prefix: '/gateway' }) - -const { - addOrUpdateSingleGateway, - getAllOnlineGateWay, - addOrUpdateWatchData, - registerAll, - queryAll, - getTerminalInfoListByGatewayList, -} = require('../controller/gateway.controller') -const { auth } = require('../middleware/auth.middleware') -const { - gatewayValidator, - isGatewayNameExisted, - verifyWatchCommandTrue, - verifyRegisterCommandTrue, - verifyQueryCommandTrue, -} = require('../middleware/gateway.middleware') - -router.post( - '/addOrUpdateSingleGateway', - auth, - gatewayValidator, - isGatewayNameExisted, - addOrUpdateSingleGateway, -) -router.get('/list', auth, getAllOnlineGateWay) - -router.post( - '/addOrUpdateWatchData', - auth, - gatewayValidator, - verifyWatchCommandTrue, - addOrUpdateWatchData, -) - -router.get( - '/getTerminalInfoListByGatewayId', - auth, - getTerminalInfoListByGatewayList, -) - -router.post( - '/allregister', - auth, - gatewayValidator, - verifyRegisterCommandTrue, - registerAll, -) - -router.post( - '/allquery', - auth, - gatewayValidator, - verifyQueryCommandTrue, - queryAll, -) - -module.exports = router diff --git a/src/router/terminal.route.js b/src/router/terminal.route.js deleted file mode 100644 index 8490600..0000000 --- a/src/router/terminal.route.js +++ /dev/null @@ -1,11 +0,0 @@ -const Router = require('koa-router') - -const router = new Router({ prefix: '/terminal' }) - -const { auth } = require('../middleware/auth.middleware') - -const { - updateTerminalSwitchState, -} = require('../controller/terminal.controller') -router.post('/updateState', auth, updateTerminalSwitchState) -module.exports = router diff --git a/src/service/com.service.js b/src/service/com.service.js deleted file mode 100644 index 4503263..0000000 --- a/src/service/com.service.js +++ /dev/null @@ -1,21 +0,0 @@ -const Com = require("../model/com.model"); -class ComService { - async addComInfo(com_number, gateway_id) { - // 查询没有则添加 - const whereOpt = {}; - com_number && Object.assign(whereOpt, { com_number }); - gateway_id && Object.assign(whereOpt, { gateway_id }); - const findRes = await Com.findOne({ - attributes: ["com_number", "gateway_id"], - where: whereOpt, - }); - if (!findRes) { - const createRes = Com.create({ - com_number, - gateway_id, - }); - } - } -} - -module.exports = new ComService(); diff --git a/src/service/gateway.service.js b/src/service/gateway.service.js deleted file mode 100644 index b251d64..0000000 --- a/src/service/gateway.service.js +++ /dev/null @@ -1,150 +0,0 @@ -const Gateway = require('../model/gateway.model') -const { - updateGatewayInfoError, - getGatewayInfoError, - addGatewayOneError, - getAllOnlineGateWayError, -} = require('../constant/err.type') - -const { addComInfo } = require('./com.service') -const { addTerminal } = require('./terminal.service') -const Terminal = require('../model/terminal.model') - -class GatewayService { - async getGatewayInfo({ id, gateway_name, gateway_number }) { - try { - const whereOpt = {} - id && Object.assign(whereOpt, { id }) - gateway_name && Object.assign(whereOpt, { gateway_name }) - gateway_number && Object.assign(whereOpt, { gateway_number }) - const res = await Gateway.findOne({ - attributes: ['id', 'gateway_name', 'gateway_number'], - where: whereOpt, - }) - return res ? res.dataValues : null - } catch (error) { - return ctx.app.exit('error', getGatewayInfoError, ctx) - } - } - - async addGatewayOne(TerminalName, TerminalID) { - try { - const res = await Gateway.create({ - gateway_name: TerminalName, - gateway_number: TerminalID, - }) - return res ? res.dataValues : null - } catch (error) { - return ctx.app.exit('error', addGatewayOneError, ctx) - } - } - - async updateGatewayInfo(TerminalName, TerminalID) { - try { - const res = await Gateway.update( - { - gateway_name: TerminalName, - }, - { - where: { - gateway_number: TerminalID, - }, - }, - ) - return res - } catch (error) { - return ctx.app.exit('error', updateGatewayInfoError, ctx) - } - } - - async getAllOnlineGateWayInService(pageIndex = 1, pageSize = 10) { - try { - let count = await Gateway.count({ - where: { - is_online: 1, - }, - }) - if (count != 0) { - const gatewayList = await Gateway.findAll({ - where: { - is_online: 1, - }, - limit: pageSize, - offset: (pageIndex - 1) * pageSize, - }) - const res = gatewayList.map(item => item.dataValues) - return { - pageInfo: { pageIndex, pageSize, total: count }, - list: res, - } - } - } catch (error) { - return ctx.app.exit('error', getAllOnlineGateWayError, ctx) - } - return - } - - async saveOtherWatchDataList(gateway_id, states) { - // const { SwitchChannel, JunctionBoxs } = states || {}; - // 存储com口编号和网关编号的对应关系 - states && - states.map(async item => { - const { SwitchChannel: com_number, JunctionBoxs: terminalList } = - item || {} - const comResult = addComInfo(com_number, gateway_id) - const rank = 1 - terminalList && - terminalList.map(t => { - const terminalResult = addTerminal({ - ...t, - com_number, - rank, - gateway_id, - }) - }) - }) - return null - } - - async getTerminalInfoListByGatewayListService( - gateway_id, - terminal_status = '0', - pageIndex = 1, - pageSize = 10, - ) { - try { - let count = await Terminal.count({ - where: { - gateway_id, - }, - }) - if (count != 0) { - // 需要根据terminal_status转换为对应的查询条件 - let obj = { gateway_id } - if (terminal_status == '1') { - obj['online_or_not'] = 1 - } else { - if (terminal_status == '2') { - obj['online_or_not'] = 0 - } - if (terminal_status == '3') { - obj['registration_info_match'] = 0 - } - } - console.log(pageIndex) - const terminalList = await Terminal.findAll({ - where: obj, - limit: pageSize, - offset: (parseInt(pageIndex) - 1) * pageSize, - }) - const res = terminalList.map(item => item.dataValues) - return { - pageInfo: { pageIndex, pageSize, total: count }, - list: res || [], - } - } - } catch (error) {} - } -} - -module.exports = new GatewayService() diff --git a/src/service/terminal.service.js b/src/service/terminal.service.js deleted file mode 100644 index e235ddd..0000000 --- a/src/service/terminal.service.js +++ /dev/null @@ -1,75 +0,0 @@ -const Terminal = require('../model/terminal.model') - -const createClientToSendData = require('../tcp/client') -class TerminalService { - async addTerminal({ - DeviceID: device_id, - SwitchState: switch_state, - Temperuature: temperuature, - Current: current, - Voltage: voltage, - OnlineOrNot: online_or_not, - RegistrationInfoMatch: registration_info_match, - com_number: com_id, - rank, - gateway_id, - }) { - const findResult = await Terminal.findOne({ - where: { - device_id, - }, - }) - if (findResult) { - const whereOpt = {} - switch_state && Object.assign(whereOpt, { switch_state }) - temperuature && Object.assign(whereOpt, { temperuature }) - current && Object.assign(whereOpt, { current }) - voltage && Object.assign(whereOpt, { voltage }) - online_or_not && Object.assign(whereOpt, { online_or_not }) - registration_info_match && - Object.assign(whereOpt, { registration_info_match }) - com_id && Object.assign(whereOpt, { com_id }) - gateway_id && Object.assign(whereOpt, { gateway_id }) - rank && Object.assign(whereOpt, { rank }) - const res = await Terminal.update(whereOpt, { - where: { - device_id, - }, - }) - return res - } else { - const res = await Terminal.create({ - device_id, - switch_state, - temperuature, - current, - voltage, - online_or_not, - registration_info_match, - com_id, - rank, - gateway_id, - }) - return res.dataValues - } - } - - async updateTerminalSwitch(switch_state, terminal_id) { - const res = await Terminal.update( - { - switch_state, - }, - { - where: { - id: terminal_id, - }, - }, - ) - // 需要向网关发送通断指令。 - // TODO - // createClientToSendData({}) - return res - } -} - -module.exports = new TerminalService() diff --git a/src/tcp/controller/tcp.controller.js b/src/tcp/controller/tcp.controller.js deleted file mode 100644 index a3aaf9f..0000000 --- a/src/tcp/controller/tcp.controller.js +++ /dev/null @@ -1,58 +0,0 @@ -const { - getGatewayInfo, - addGatewayOne, - updateGatewayInfo, - saveOtherWatchDataList, -} = require("../../service/gateway.service"); -const Response = require("../../utils/response"); -const { - saveTerminalInfoError, - addGatewayOneError, -} = require("../../constant/err.type"); - -class TcpController { - // 5.1 终端建立TCP连接后上报终端名称 - async addOrUpdateSingleGateway({ TerminalName, TerminalID }) { - // 查询该网关是否存在 - const gatewayInfo = await getGatewayInfo({ gateway_number: TerminalID }); - let res = null; - if (gatewayInfo) { - // 存在该网关则修改信息 - if (gatewayInfo.gateway_name != TerminalName) { - res = await updateGatewayInfo(TerminalName, TerminalID); - } - } else { - // 不存在则新增 - res = await addGatewayOne(TerminalName, TerminalID); - } - return Response(0, "网关信息更新完毕", res); - } - - // 5.2 5min主动向服务器上传一次监测数据 - async addOrUpdateWatchData({ TerminalName, TerminalID, States }) { - // 查询该网关是否存在 - try { - const gatewayInfo = await getGatewayInfo({ gateway_number: TerminalID }); - let gatewayRes = null; - if (gatewayInfo) { - // 存在该网关则修改信息 - if (gatewayInfo.gateway_name != TerminalName) { - gatewayRes = await updateGatewayInfo(TerminalName, TerminalID); - } - } else { - // 不存在则新增 - gatewayRes = await addGatewayOne(TerminalName, TerminalID); - } - } catch (error) { - return addGatewayOneError; - } - try { - const res = saveOtherWatchDataList(TerminalID, States); - return Response(0, "更新网关及接线盒信息完毕", res); - } catch (error) { - return saveTerminalInfoError; - } - } -} - -module.exports = new TcpController(); diff --git a/src/tcp/forwardCommand.js b/src/tcp/forwardCommand.js deleted file mode 100644 index 0d1ec70..0000000 --- a/src/tcp/forwardCommand.js +++ /dev/null @@ -1,40 +0,0 @@ -const { - addOrUpdateSingleGateway, - addOrUpdateWatchData, -} = require("./controller/tcp.controller"); -const { - JUNCTION_BOX_SWITCH_STATE_RECEIPT, - RESET_THE_GATEWAY_NAME, - RECEIPT_ALL_JUNCTION_BOXES, - RECEIPT_CONTROL_JUNCTION_BOX_SWITCH, - RECEIPT_QUERY_ALL_JUNCTION_BOXES, -} = require("../constant/command.type"); - -const forwardCommand = (command, data) => { - switch (command) { - case JUNCTION_BOX_SWITCH_STATE_RECEIPT: - // 5.2 5min主动向服务器上传一次监测数据 - addOrUpdateWatchData(data); - break; - case RECEIPT_ALL_JUNCTION_BOXES: - // 5.4 全部注册 - addOrUpdateWatchData(data); - break; - case RECEIPT_QUERY_ALL_JUNCTION_BOXES: - addOrUpdateWatchData(data); - break; - case RECEIPT_CONTROL_JUNCTION_BOX_SWITCH: - addOrUpdateWatchData(data); - break; - case RESET_THE_GATEWAY_NAME: - // 5.3 设置网关名称 - addOrUpdateSingleGateway(data); - break; - default: - // 5.1 终端建立TCP连接后上报终端名称 - addOrUpdateSingleGateway(data); - break; - } -}; - -module.exports = forwardCommand; diff --git a/src/tcp/server.js b/src/tcp/server.js index 85132cb..7934d64 100644 --- a/src/tcp/server.js +++ b/src/tcp/server.js @@ -1,15 +1,10 @@ const net = require("net"); -const forwardCommand = require("./forwardCommand"); const { isJsonString } = require("../utils/common"); const server = net.createServer(function (socket) { //监听data事件 socket.on("data", function (data) { if (data.toString() && isJsonString(data.toString())) { - const { Command, ...res } = JSON.parse(data.toString()); - // 对res进行处理并转发到相应的接口 - // 根据不同的Command类型处理不同的数据 - forwardCommand(Command, res); } }); socket.on("error", (err) => { diff --git a/src/test/tcpClient.js b/src/test/tcpClient.js index 8319496..e69de29 100644 --- a/src/test/tcpClient.js +++ b/src/test/tcpClient.js @@ -1,70 +0,0 @@ -// 模拟网关 - -const createClientToSendData = require("../tcp/client"); - -const addGateway = () => { - const data = { - MessageID: "xxxafdafd-adfasdfasd-fdafasdfas-fdadffasd", - TimePoint: 123124, - TerminalName: "北京北京昌平一号", - TerminalID: "AJKM-MBK3-9AQR-1OFD", - }; - createClientToSendData(data); -}; - -const getJunctionBoxSwitchsStateReceipt = () => { - const data = { - MessageID: "xxxafdafd-adfasdfasd-fdafasdfas-fdadffasd", - TimePoint: 123124, - TerminalName: "北京北京昌平一2号", - TerminalID: "AJKM-MBK3-9AQR-1OFD", - Command: "command,getJunctionBoxSwitchsStateReceipt", - States: [ - { - SwitchChannel: 3, - JunctionBoxs: [ - { - DeviceID: 12, - SwitchState: true, - Temperuature: 18, - Current: 3.1, - Voltage: 55.2, - OnlineOrNot: true, - RegistrationInfoMatch: true, - }, - ], - }, - { - SwitchChannel: 1, - JunctionBoxs: [ - { - DeviceID: 13, - SwitchState: true, - Temperuature: 18, - Current: 3.1, - Voltage: 55.2, - OnlineOrNot: true, - RegistrationInfoMatch: true, - }, - ], - }, - ], - }; - createClientToSendData(data); -}; - -// 5.3 设置网关名称 -const setTheGatewayName = () => { - const data = { - MessageID: "xxxafdafd-adfasdfasd-fdafasdfas-fdadffasd", - TimePoint: 123124, - TerminalName: "北京北京昌平shi号", - TerminalID: "AJKM-MBK3-9AQR-1OFD", - Command: "SetTheGatewayName", - }; - createClientToSendData(data); -}; - -// setTheGatewayName(); -// getJunctionBoxSwitchsStateReceipt(); -// addGateway();