From 0b31be01af4247244e1b6285d6c537c2894acea9 Mon Sep 17 00:00:00 2001
From: wangrong <wangrong@shsening.com>
Date: 星期二, 28 六月 2022 14:32:46 +0800
Subject: [PATCH] 添加socket.io taskshchedule等
---
src/app/modules/business/entity/periodicsetting.ts | 3
src/app/modules/business/controller/admin/taskmonitor.ts | 30 +
src/app/modules/business/controller/admin/taskimmediately.ts | 76 +++
src/socket/socketHandle.ts | 85 +++
src/configuration.ts | 16
src/app/modules/base/utils/axiosutil.ts | 56 ++
src/app/modules/base/utils/dateutil.ts | 6
src/config/config.default.ts | 17
src/app/modules/business/controller/admin/colletmeta.ts | 27 +
src/schedule/taskSchedule.js | 181 ++++++++
src/socket/chatUser.ts | 32 +
src/app/modules/base/service/dataapi/rpcservice.ts | 115 +++++
src/schedule/aerial.proto | 294 +++++++++++++
package.json | 6
src/app/modules/business/service/taskimmediately.ts | 51 ++
src/app/comm/aerial.proto | 294 +++++++++++++
bootstrap.js | 10
src/schedule/helloCorn | 19
18 files changed, 1,300 insertions(+), 18 deletions(-)
diff --git a/bootstrap.js b/bootstrap.js
index abb687a..a42516e 100644
--- a/bootstrap.js
+++ b/bootstrap.js
@@ -1,7 +1,17 @@
const WebFramework = require('@midwayjs/web').Framework;
+const { SocketFramework, createRedisAdapter} = require('@cool-midway/socket');
const web = new WebFramework().configure({
port: 8001,
});
+// // 鍒濆鍖� socket.io 妗嗘灦
+// const socketFramework = new SocketFramework().configure({
+// port: 3000,
+// // adapter: createRedisAdapter({ host: '192.168.1.2', port: 6379}),
+// });
+
const { Bootstrap } = require('@midwayjs/bootstrap');
Bootstrap.load(web).run();
+
+const schedule_ = require("./src/schedule/taskSchedule.js");
+schedule_.job_();
\ No newline at end of file
diff --git a/package.json b/package.json
index e4ff29d..e36a2df 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "cool-admin",
"version": "4.0.0",
- "description": "cool-admin 涓�涓緢閰风殑閫氱敤鍚庡彴绠$悊绯荤粺",
+ "description": "涓�涓緢閰风殑閫氱敤鍚庡彴绠$悊绯荤粺",
"private": true,
"dependencies": {
"@cool-midway/alipay": "^4.0.4",
@@ -17,9 +17,11 @@
"@midwayjs/core": "^2.14.0",
"@midwayjs/decorator": "^2.14.0",
"@midwayjs/orm": "^2.14.0",
+ "@midwayjs/socketio": "^3.3.5",
"@midwayjs/swagger": "^1.3.0",
"@midwayjs/view-nunjucks": "^2.14.0",
"@midwayjs/web": "^2.13.4",
+ "axios": "^0.27.2",
"egg": "^2.33.1",
"egg-cors": "^2.2.3",
"egg-scripts": "^2.15.2",
@@ -29,7 +31,9 @@
"md5": "^2.3.0",
"mini-svg-data-uri": "^1.4.3",
"mysql2": "^2.3.3",
+ "node-schedule": "^2.1.0",
"node-xlsx": "^0.17.2",
+ "protobufjs": "^6.11.3",
"svg-captcha": "^1.4.0",
"typeorm": "^0.2.41"
},
diff --git a/src/app/comm/aerial.proto b/src/app/comm/aerial.proto
new file mode 100644
index 0000000..14fa4e0
--- /dev/null
+++ b/src/app/comm/aerial.proto
@@ -0,0 +1,294 @@
+syntax = "proto3";
+
+// enum SysCommand {
+// UNKOWN_COMMAND = 0; // 鏈煡鍛戒护
+// SYS_COMMAND = 1; // 绯荤粺鍛戒护
+// SENSOR_COMMAND = 2; // 浼犳劅鍣ㄥ懡浠�
+// FIVE_G_COMMAND = 3; // 閫氳5G妯″潡鍛戒护
+// CAMERA_COMMAND = 4; // 鎽勫儚澶村弬鏁板懡浠�
+// IO_COMMAND = 5; // 澶栬IO鍙f搷浣滃懡浠�
+// SYS_PARAMS_COMMAND = 6; // 绯荤粺鍙傛暟鑾峰彇
+// WIFI_COMMAND = 7; // 璁惧WIFI鍙傛暟璁剧疆
+// KERNEL_COMMAND = 8; // 鏍稿績璁$畻鍙傛暟璁�
+// DEVICE_COMMAND = 9; // 宸ヤ綔璁惧鍙傛暟璁剧疆
+// MICRO_WAVE_COMMAND = 10; // 姣背娉�
+// }
+
+// enum SubCommand {
+// option allow_alias = true;
+
+// UNKOWN_SUB_COMMAND = 0; // 鏈煡瀛愬懡浠�
+
+// // 绯荤粺鍛戒护
+// POWER_ON_SUB_COMMAND = 1; // 寮�鏈�
+// POWER_OFF_SUB_COMMAND = 2; // 鍏虫満
+
+// // 浼犳劅鍣ㄥ懡浠�
+// SENSOR_INIT_SUB_COMMAND = 1; // 浼犳劅鍣ㄥ垵濮嬪寲
+// SENSOR_REQURE_SUB_COMMAND = 2; // 浼犳劅鍣ㄥ弬鏁拌幏鍙�
+// RTK_SETTING_SUB_COMMAND = 3; // RTK澶栬鍙傛暟璁剧疆
+// RTK_REQURE_SUB_COMMAND = 4; // RTK澶栬鏁版嵁鑾峰彇
+
+// // 閫氳5G妯″潡鍛戒护
+// FIVE_G_INIT_SUB_COMMAND = 1; // 5G妯″潡鍙傛暟鍒濆鍖�
+// FIVE_G_SEND_IMAGE_SUB_COMMAND = 2; // 5G閫氳鍥惧儚鏁版嵁鍙戦��
+// FIVE_G_REQURE_SUB_COMMAND = 3; // 5G閫氳鎺ユ敹
+
+// // 鎽勫儚澶村弬鏁板懡浠�
+// CAMERA_NUMBER_SUB_COMMAND = 1; // 璁惧鎽勫儚澶翠釜鏁�
+// CAMERA_RESOLUTION_SUB_COMMAND = 2; // 璁惧鎽勫儚澶村伐浣滃垎杈ㄧ巼
+// CAMERA_FRAME_RATE_SUB_COMMAND = 3; // 鎽勫儚澶村伐浣滃抚鐜�
+// CAMERA_OTHER_PARAMS_SUB_COMMAND = 4; // 鎽勫儚澶村伐浣滃叾浠栧弬鏁�
+
+// // 澶栬IO鍙f搷浣滃懡浠�
+// CAMERA_DUST_REMOVAL_START_SUB_COMMAND = 1; // 鎽勫儚澶撮櫎灏樺惎鍔�
+// CAMERA_CONTROL_START_SUB_COMMAND = 2; // 澶栬鎺у埗鏁版嵁鍚姩锛�18璺帶鍒讹級
+
+// // 绯荤粺鍙傛暟鑾峰彇
+// CPU_FREQUENCY_SUB_COMMAND = 1; // CPU涓婚宸ヤ綔鏁版嵁
+// CPU_KERNAL_TEMP_SUB_COMMAND = 2; // CPU鏍稿績娓╁害鏁版嵁
+// CPU_BETTERY_DATA_SUB_COMMAND = 3; // 鐢垫睜渚涚數鐢甸噺鏁版嵁
+
+// // 璁惧WIFI鍙傛暟璁剧疆
+// WIFI_HOTSPOT_SETTING_SUB_COMMAND = 1; // WIFI鐑偣璁剧疆
+// WIFI_HOTSPOT_START_STOP_SUB_COMMAND = 2; // WIFI鐑偣寮�鍚拰鍏抽棴
+
+// // 鏍稿績璁$畻鍙傛暟璁剧疆
+// POINT_CLOUD_ACCURACY_SUB_COMMAND = 1; // 鐐逛簯璁$畻绮惧害
+// SPLICING_PARAMS_SUB_COMMAND = 2; // 鎷兼帴鍙傛暟
+// MAP_INTERFACE_PLATFORM_SUB_COMMAND = 3; // 鍦板浘鎺ュ彛骞冲彴
+// DATA_STORE_BACKUP_SUB_COMMAND = 4; // 鏁版嵁瀛樺偍澶囦唤
+
+// // 宸ヤ綔璁惧鍙傛暟璁剧疆
+// SYSTEM_TIMER_SUB_COMMAND = 1; // 绯荤粺宸ヤ綔瀹氭椂
+// SYSTEM_COORD_HEIGHT_SUB_COMMAND = 2; // 宸ヤ綔鍖哄煙鍧愭爣涓庨珮搴�
+// TRIGGER_CONDITION_SUB_COMMAND = 3; // 宸ヤ綔瑙﹀彂鏉′欢
+// GRAVITY_FAILURE_SUB_COMMAND = 4; // 閲嶅姏鍔犻�熷害澶辨晥鍙傛暟
+// NINE_AXIS_FAILURE_SUB_COMMAND = 5; // 涔濊酱鍔犻�熷害澶辨晥鍙傛暟
+
+// // 姣背娉�
+// MICRO_WAVE_SUB_COMMAND = 1; // 姣背娉�
+// }
+
+// message DataField {
+// int32 length = 1; // 鏁版嵁闀垮害
+// bytes data = 2; // 鏁版嵁鍐呭
+// int32 checksum = 3; // 鏍¢獙鐮�
+// }
+
+// message CapturedData {
+// int64 capture_time = 1; // 閲囬泦鏃堕棿
+// string capture_device =2; // 閲囬泦璁惧
+// int32 capture_port = 3; // 閲囬泦璁惧搴忓彿
+// DataField DataField = 4;
+// string data_type = 5; // 鏁版嵁绫诲瀷 image udp
+// }
+
+// message DataMessage{
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CapturedData CapturedData = 5;
+// }
+
+// message StateData {
+// int64 state_time = 1;
+// string state_device = 2;
+// DataField DataField = 4;
+// }
+
+// message StateMessage {
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CapturedData StatedData = 5;
+// }
+
+// message CommandData {
+// SysCommand SysCommand = 1;
+// SubCommand SubCommand = 2;
+// }
+
+// message CommandMessage {
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CommandData CommandData =4;
+// }
+
+enum SysCommand{
+ UNKOWN_COMMAND = 0;
+ CAMERA_COMMAND = 1;
+ MICROWAVE_COMMAND = 2;
+ DUSTCLEANER_COMMAND = 3;
+
+}
+
+enum SubCommand{
+ UNKOWN_SUBCOMMAND = 0;
+
+ // camera params
+ ONE_TIME_CAPTURE = 1;
+
+ // microwave params
+ ONE_CIRCLE_SCAN = 2;
+
+ // dust cleaner params
+ ONE_CLEAN_SCAN = 4;
+
+}
+
+
+message CommandMessage{
+ string source = 1;
+ string generatetime = 2;
+ SysCommand syscommand = 3;
+ SubCommand subcommand = 4;
+ string targetclient = 5;
+ string returnserver = 6;
+ string taskuuid = 7;
+}
+
+message LogsMessage{
+ string source = 1;
+ string timestamp = 2;
+ string context = 3;
+ optional string taskuuid = 4;
+}
+
+
+message ImagesMessage
+{
+ string source = 1;
+ string timestamp = 2;
+
+ message ImageItems
+ {
+ int32 length = 1; // 鏁版嵁闀垮害
+ bytes data = 2; // 鏁版嵁鍐呭
+ }
+
+ repeated ImageItems Image = 3;
+ optional string taskuuid = 4;
+}
+
+
+
+message PlysMessage
+{
+ string source = 1;
+ string timestamp = 2;
+
+ message PointCloudItem
+ {
+ int32 length = 1;
+ int32 rows = 2;
+ int32 cols = 3;
+ string order = 4;
+ string dtype = 5;
+ bytes data = 6;
+
+ }
+
+ repeated PointCloudItem Plydata = 3;
+ optional string taskuuid = 4;
+
+ // enum ref_system
+ // {
+ // MICROWAVE_SYSTEM = 0;
+ // DEVICE_SYSTEM = 1;
+ // }
+
+ // ref_system reference = 4
+}
+
+
+
+
+
+
+
+// message MicroWaveMessage
+// {
+// int32 length = 1; // 鏁版嵁闀垮害
+// bytes data = 2; // 鏁版嵁鍐呭
+// }
+
+// message CommandRequest{
+
+// }
+
+// message StateMessage{
+// string message_type = 1;
+// int64 generatetime = 2;
+// string generate_device = 3;
+// string target_device = 4;
+// string message_uuid = 5;
+// string str_body = 6;
+// }
+
+
+
+
+
+
+// message RequestCommand {
+// int32 sync_word = 1; // 鍚屾瀛�
+// string device_id = 2; // 璁惧ID
+// SysCommand sys_command = 3; // 鍛戒护1
+// SubCommand sub_command = 4; // 鍛戒护2
+// DataField data1 = 5; // 鏁版嵁1
+// DataField data2 = 6; // 鏁版嵁2
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
+
+// enum ResponseState
+// {
+// SUCCESS = 0; // 鎴愬姛
+// FAILURE = 1; // 澶辫触
+// ABNORMAL = 2; // 寮傚父
+// INFICIENT_POWER = 3; // 鐢甸噺涓嶈冻
+// OTHER = 4; // 鍏朵粬
+// }
+
+// message ResponseCommand
+// {
+// string device_id = 1; // 璁惧ID
+// SysCommand sys_command = 2; // 鍛戒护1
+// SubCommand sub_command = 3; // 鍛戒护2
+// ResponseState state = 4; // 鍝嶅簲鐘舵��
+// int32 data_length = 5; // 鏁版嵁闀垮害
+// bytes data = 6; // 鏁版嵁
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
+
+
+// // 鏈嶅姟绔悜閲囬泦绔彂閫佺殑涓绘寚浠�
+// enum ControlSysCommand {
+// DUST_CLEANER_COMMAND = 0;
+// }
+
+// // 鏈嶅姟绔悜閲囬泦绔彂閫佺殑瀛愬懡浠�
+// enum ControlSubCommand {
+// // dust cleaner sub commands
+// DUST_CLEANER_ONETIME_CLEAN_SELF = 0;
+// DUST_CLEANER_ONETIME_CLEAN_CAMERA = 1;
+// DUST_CLEANER_CLOSE_PERIOD_CLEAN_SELF = 2;
+// DUST_CLEANER_CLOSE_PERIOD_CLEAN_CAMERA = 3;
+// DUST_CLEANER_PERIOD_CLEAN_SELF = 4;
+// DUST_CLEANER_PERIOD_CLEAN_CAMERA = 5;
+// }
+
+// // dust cleaner command message
+// message DustCleanerMessage {
+// uint32 period = 1;
+// }
+
+// // 鎺у埗涓婁綅鏈烘秷鎭�
+// message ControllMessage {
+// int32 sync_word = 1; // 鍚屾瀛�
+// ControlSysCommand sys_command = 3; // 涓诲懡浠�
+// ControlSubCommand sub_command = 4; // 瀛愬懡浠�
+// DataField data = 5; // 鏁版嵁
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
diff --git a/src/app/modules/base/service/dataapi/rpcservice.ts b/src/app/modules/base/service/dataapi/rpcservice.ts
new file mode 100644
index 0000000..d5a9012
--- /dev/null
+++ b/src/app/modules/base/service/dataapi/rpcservice.ts
@@ -0,0 +1,115 @@
+import { Inject, Provide } from '@midwayjs/decorator';
+import { BaseService, ICoolCache, } from '@cool-midway/core';
+import * as _ from 'lodash';
+import { MysqlUtil } from '../../utils/mysqlutil';
+import { DateUtil } from '../../utils/dateutil';
+import { AxiosUtil } from '../../utils/axiosutil';
+
+// 寮曞叆璇诲啓鏍稿績妯″潡
+
+
+/**
+ * 绯荤粺鐢ㄦ埛
+ */
+@Provide()
+export class RpcService extends BaseService {
+
+ @Inject('cool:cache')
+ coolCache: ICoolCache;
+
+ @Inject()
+ mysqlUtil: MysqlUtil;
+
+ rpc_url: "http://192.168.1.4:5000/api";
+
+ @Inject()
+ dateUtil: DateUtil;
+
+ @Inject()
+ axios: AxiosUtil;
+
+ /**
+ * 杩滅▼璋冪敤璁惧锛屽惎鍔ㄤ换鍔℃墽琛�
+ * @param query
+ */
+ async remoteCall(url, query) {
+ if (url == null) {
+ url = this.rpc_url;
+ }
+ let stattime = this.dateUtil.getCurretTimeStr()
+ console.log('---------------------------------------------send msg to device-----------------------------------------')
+ console.log(query)
+ // let res = await this.axios.httpPostBuffer(url, query)
+ console.log('---------------------------------------receive the reply msg from device-----------------------------------')
+ this.axios.httpPostBuffer(url, query).then(res => {
+ console.log(res)
+ const bidsql = `insert into t_config_interface_record (interface_direct,start_time,end_time,request_type,createTime,remark,status,params,result)
+ values ('${url}','${stattime}','${this.dateUtil.getCurretTimeStr()}','post',now(),'ok',200,'${JSON.stringify(query)}','${res}') `;
+ this.nativeQuery(bidsql);
+ return res
+ }).catch((error) => {
+ console.log(error)
+ return error
+ })
+
+ }
+
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ */
+ async getData(query) {
+ // const { keyWord, status, departmentIds = [] } = query;
+ // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
+ // this.ctx.admin.userId
+ // ); // 閮ㄩ棬鏉冮檺
+ const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
+ const bid_obj_ = await this.nativeQuery(bidsql);
+ console.log(bid_obj_)
+ let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
+ if (sqlObj?.status == 0) {
+ return sqlObj?.msg;
+ }
+ return this.nativeQuery(sqlObj?.sql, query);
+ }
+
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ */
+ async getDataByNative(query) {
+ // const { keyWord, status, departmentIds = [] } = query;
+ // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
+ // this.ctx.admin.userId
+ // ); // 閮ㄩ棬鏉冮檺
+ const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
+ const bid_obj_ = await this.nativeQuery(bidsql);
+ console.log(bid_obj_)
+ let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
+ if (sqlObj?.status == 0) {
+ return sqlObj?.msg;
+ }
+ return this.nativeQuery(sqlObj?.sql)
+ }
+
+ /**
+ * 鍒嗛〉鏌ヨ
+ * @param query
+ */
+ async updateData(query) {
+ // const { keyWord, status, departmentIds = [] } = query;
+ // const permsDepartmentArr = await this.baseSysPermsService.departmentIds(
+ // this.ctx.admin.userId
+ // ); // 閮ㄩ棬鏉冮檺
+ const bidsql = `select * from t_sys_business_config where id_='${query.bid}' limit 0,1`;
+ const bid_obj_ = await this.nativeQuery(bidsql);
+ let sqlObj = this.mysqlUtil.create_sql(bid_obj_[0], query?.pageindex || null, query?.pagesize || null, query);
+ if (sqlObj?.status == 0) {
+ return sqlObj?.msg;
+ }
+ return this.sqlRenderPage(sqlObj?.sql, query);
+ }
+
+}
diff --git a/src/app/modules/base/utils/axiosutil.ts b/src/app/modules/base/utils/axiosutil.ts
new file mode 100644
index 0000000..046ee52
--- /dev/null
+++ b/src/app/modules/base/utils/axiosutil.ts
@@ -0,0 +1,56 @@
+import { Provide } from "@midwayjs/decorator"
+const axios = require('axios');
+
+/**
+ * 绯荤粺鐢ㄦ埛
+ */
+@Provide()
+export class AxiosUtil {
+
+ async httpGet(uri) {
+ console.log(uri);
+ axios.get(uri).then(response => {
+ console.log(response.data);
+ return response;
+ }).catch(error => {
+ console.log(error);
+ return error
+ });
+ }
+
+ async httpPost(uri, postdata) {
+ // let data = {
+ // name: 'John Doe',
+ // job: 'Content Writer'
+ // };
+ axios.post(uri, postdata).then((res) => {
+ console.log(`Status: ${res.status}`);
+ console.log('Body: ', res.data);
+ return res;
+ }).catch((err) => {
+ console.error(err);
+ return err
+ });
+ }
+
+ async httpPostBuffer(uri,postdata) {
+ axios({
+ method: 'post',
+ url: uri,
+ data: postdata,
+ headers: {
+ 'Content-Type': 'application/octet-stream', // 鍏抽敭
+ },
+ }).then(res => {
+ console.log(res)
+ return res
+ }).catch((error) => {
+ console.log(error)
+ return error
+ })
+ }
+
+
+
+}
+
diff --git a/src/app/modules/base/utils/dateutil.ts b/src/app/modules/base/utils/dateutil.ts
index b06330b..70b110b 100644
--- a/src/app/modules/base/utils/dateutil.ts
+++ b/src/app/modules/base/utils/dateutil.ts
@@ -6,7 +6,6 @@
@Provide()
export class DateUtil {
-
date_format(date_str, format) {
// = 'YY-MM-DD hh:mm:ss'
let date = new Date(date_str)
@@ -49,4 +48,9 @@
return result
}
+ getCurretTimeStr() {
+ let currtime = this.date_format(new Date(), 'YY-MM-DD hh:mm:ss')
+ return currtime
+ }
+
}
diff --git a/src/app/modules/business/controller/admin/colletmeta.ts b/src/app/modules/business/controller/admin/colletmeta.ts
index a10b38c..813eb83 100644
--- a/src/app/modules/business/controller/admin/colletmeta.ts
+++ b/src/app/modules/business/controller/admin/colletmeta.ts
@@ -1,8 +1,10 @@
import { ALL, Body, Get, Inject, Post, Provide, Query } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { Colletmeta } from '../../entity/colletmeta';
-// import { ColletmetaService } from '../../service/colletmeta';
+// import { ColletmetaService } from '../../service/';
import { DataController } from '../../../base/controller/dataController';
+import { SocketHandler } from '../../../../../socket/socketHandle';
+import { RpcService } from '../../../base/service/dataapi/rpcservice';
/**
* 鐩戞祴鍏冩暟鎹�
*/
@@ -15,6 +17,22 @@
export class ColletmetaController extends DataController {
// 聽@Inject()
// 聽colletmetaService: ColletmetaService;
+
+
+ @Inject()
+ socketHandler: SocketHandler
+
+ @Inject()
+ rpcService: RpcService
+
+ /**
+ * 鎺ユ敹璁惧鐩戞帶娑堟伅
+ */
+ @Post('/getDeviceMsg', { summary: '鎺ユ敹璁惧娑堟伅' })
+ async getDeviceMsg(@Query(ALL) params: any) {
+ this.dealMessage(params)
+ return this.ok();
+ }
/**
* 鑾峰緱鏁版嵁
@@ -30,4 +48,11 @@
async postData(@Query(ALL) params: any) {
return this.ok(await this.dataService.getData(params));
}
+
+
+ async dealMessage(params: any) {
+ // this.socketHandler.connection
+ console.log(params);
+ }
+
}
\ No newline at end of file
diff --git a/src/app/modules/business/controller/admin/taskimmediately.ts b/src/app/modules/business/controller/admin/taskimmediately.ts
index 1e9f008..7a50129 100644
--- a/src/app/modules/business/controller/admin/taskimmediately.ts
+++ b/src/app/modules/business/controller/admin/taskimmediately.ts
@@ -1,20 +1,61 @@
import { ALL, Body, Get, Inject, Post, Provide, Query } from '@midwayjs/decorator';
import { CoolController, BaseController } from '@cool-midway/core';
import { Taskimmediately } from '../../entity/taskimmediately';
-// import { TaskimmediatelyService } from '../../service/taskimmediately';
+import { TaskimmediatelyService } from '../../../business/service/taskimmediately';
import { DataController } from '../../../base/controller/dataController';
+import { SocketHandler } from '../../../../../socket/socketHandle';
+import { RpcService } from '../../../base/service/dataapi/rpcservice';
+import { randomUUID } from 'crypto';
+
+const ProtoBufJs = require("protobufjs");
+const root = ProtoBufJs.loadSync("D:/21-dljc/road-env-server/server/models/aerial.proto");
+const CommandMessage = root.lookupType("CommandMessage");
+const command_req = CommandMessage.create();
+// const SYScommand = root.lookupType("SysCommand");
+// const SUBcommand = root.lookupType("SubCommand");
+
/**
* 鍗虫椂浠诲姟璁板綍
*/
@Provide()
@CoolController({
- api: ['add', 'delete', 'update', 'list', 'page', 'info'],
+ api: ['delete', 'update', 'list', 'page', 'info'],
entity: Taskimmediately,
- // 聽service: TaskimmediatelyService,
+ // service: TaskimmediatelyService,
})
export class TaskimmediatelyController extends DataController {
- // 聽@Inject()
- // 聽taskimmediatelyService: TaskimmediatelyService;
+
+ @Inject()
+ taskimmediatelyService: TaskimmediatelyService;
+
+ @Inject()
+ socketHandler: SocketHandler
+
+ @Inject()
+ rpcService: RpcService
+
+ private colletServiceUrl = "http://192.168.1.4:5000/api";
+
+ /**
+ * 涓嬪彂璁惧鎸囦护娑堟伅
+ */
+ @Post('/sendMsgToDevice', { summary: '涓嬪彂璁惧鎸囦护娑堟伅' })
+ async sendMsgToDevice(@Query(ALL) params: any) {
+
+ console.log(params);
+ return this.ok(await this.rpcService.remoteCall(this.colletServiceUrl, this.createCommand(params)))
+ }
+
+ /**
+ * 涓嬪彂璁惧鎸囦护娑堟伅
+ */
+ @Get('/sendMsgToDevice', { summary: '涓嬪彂璁惧鎸囦护娑堟伅' })
+ async sendMsg2Device(@Query(ALL) params: any) {
+ // this.socketHandler.connection
+ console.log(params);
+ return this.ok(await this.rpcService.remoteCall(this.colletServiceUrl, this.createCommand(params)))
+ // this.rpcService.remoteCall("http://192.168.1.4:5000/api", params);
+ }
/**
* 鑾峰緱鏁版嵁
@@ -30,4 +71,29 @@
async postData(@Query(ALL) params: any) {
return this.ok(await this.dataService.getData(params));
}
+
+ createCommand(params: any) {
+
+ command_req.source = "testcommand"
+ command_req.generatetime = "2"
+ command_req.syscommand = root.SysCommand.CAMERA_COMMAND
+ command_req.subcommand = root.SubCommand.ONE_TIME_CAPTURE
+ command_req.targetclient = "bunker0.block0.device0"
+ command_req.returnserver = "server0"
+ command_req.taskuuid = randomUUID()
+ console.log(JSON.stringify(command_req))
+
+ // Verify the payload if necessary (i.e. when possibly incomplete or invalid)
+ let errMsg = CommandMessage.verify(command_req);
+ if (errMsg)
+ throw Error(errMsg);
+
+ // let buffer = Buffer.from(command_req)
+ let buffer_ = CommandMessage.encode(command_req).finish();
+ // let msg_ = CommandMessage.decode(buffer_);
+ return buffer_;
+
+ }
+
+
}
\ No newline at end of file
diff --git a/src/app/modules/business/controller/admin/taskmonitor.ts b/src/app/modules/business/controller/admin/taskmonitor.ts
index 63e6f79..6f26494 100644
--- a/src/app/modules/business/controller/admin/taskmonitor.ts
+++ b/src/app/modules/business/controller/admin/taskmonitor.ts
@@ -3,6 +3,8 @@
import { Taskmonitor } from '../../entity/taskmonitor';
// import { TaskmonitorService } from '../../service/taskmonitor';
import { DataController } from '../../../base/controller/dataController';
+import { SocketHandler } from '../../../../../socket/socketHandle';
+import { RpcService } from '../../../base/service/dataapi/rpcservice';
/**
* 鐩戞祴浠诲姟
*/
@@ -10,17 +12,39 @@
@CoolController({
api: ['add', 'delete', 'update', 'list', 'page', 'info'],
entity: Taskmonitor,
+ service: RpcService,
// 聽service: TaskmonitorService,
})
export class TaskmonitorController extends DataController {
// 聽@Inject()
// 聽taskmonitorService: TaskmonitorService;
+ @Inject()
+ socketHandler: SocketHandler
+
+ @Inject()
+ rpcService: RpcService
+
+
+
+ /**
+ * 浠诲姟涓嬪彂
+ */
+ @Get('/add', { summary: '涓嬪彂浠诲姟' })
+ async add(@Query(ALL) params: any) { // 杩欎釜io瀵硅薄瀵瑰簲 SocketHandler鐨勫懡鍚嶇┖闂�
+ // this.socketHandler.connection
+ this.socketHandler.clients.get("").emit('device is offline');
+ this.rpcService.remoteCall(null,"");
+
+ }
+
/**
* 鑾峰緱鏁版嵁
*/
@Get('/getdata', { summary: '鏁版嵁鎺ュ彛' })
- async getData(@Query(ALL) params: any) {
+ async getData(@Query(ALL) params: any) { // 杩欎釜io瀵硅薄瀵瑰簲 SocketHandler鐨勫懡鍚嶇┖闂�
+ // this.socketHandler.connection
+ this.socketHandler.clients.get("").emit('device is offline');
return this.ok(await this.dataService.getData(params));
}
/**
@@ -30,4 +54,8 @@
async postData(@Query(ALL) params: any) {
return this.ok(await this.dataService.getData(params));
}
+
+
+
+
}
\ No newline at end of file
diff --git a/src/app/modules/business/entity/periodicsetting.ts b/src/app/modules/business/entity/periodicsetting.ts
index dce098f..a5b8c25 100644
--- a/src/app/modules/business/entity/periodicsetting.ts
+++ b/src/app/modules/business/entity/periodicsetting.ts
@@ -9,6 +9,9 @@
@Column({ comment: '鍛ㄦ湡浠诲姟', type: 'varchar', default: '', length: 255 })
crontab_rule: string;
+ @Column({ comment: '浠诲姟寮�濮嬫椂闂�', type: 'datetime' })
+ start_time: Date;
+
@Column({ comment: '浠诲姟缁撴潫鏃堕棿', type: 'datetime' })
end_time: Date;
diff --git a/src/app/modules/business/service/taskimmediately.ts b/src/app/modules/business/service/taskimmediately.ts
new file mode 100644
index 0000000..13427aa
--- /dev/null
+++ b/src/app/modules/business/service/taskimmediately.ts
@@ -0,0 +1,51 @@
+import { Provide } from '@midwayjs/decorator';
+import { BaseService } from '@cool-midway/core';
+import { InjectEntityModel } from '@midwayjs/orm';
+import { Repository } from 'typeorm';
+import { Basedeviceinfo } from '../entity/basedeviceinfo';
+import { Devicegroup } from '../entity/devicegroup';
+
+/**
+ * 鎻忚堪
+ */
+@Provide()
+export class TaskimmediatelyService extends BaseService {
+ @InjectEntityModel(Basedeviceinfo)
+ Basedeviceinfo: Repository<Basedeviceinfo>;
+ @InjectEntityModel(Devicegroup)
+ Devicegroup: Repository<Devicegroup>;
+
+ /**
+ * 鎻忚堪
+ */
+ // async add(param: any) {
+ // console.log(param, "dddddddd")
+ // const { logic_id } = param
+ // const devicegroup = this.Devicegroup
+ // await this.Devicegroup.insert(param)
+ // return await super.add(param)
+ // }
+
+
+ async delete(logic_id: any) {
+ console.log(this.ctx, "ddd")
+ await this.nativeQuery(
+ 'DELETE t_base_deviceinfo,t_base_device_group FROM t_base_deviceinfo,t_base_device_group WHERE t_base_deviceinfo.logic_id = t_base_device_group.logic_id AND t_base_deviceinfo.id in (?)',
+ [logic_id]
+ );
+ await this.Basedeviceinfo.delete(logic_id)
+
+ }
+
+
+ async page(query) {
+
+ // const { keyWord, status, departmentIds = [] } = query;
+ // const permsDepartmentArr = await this.Basedeviceinfo.id(
+ // this.ctx.admin.userId
+ // ); // 閮ㄩ棬鏉冮檺
+ const sql = `
+ SELECT a.*,b.configurator FROM t_base_deviceinfo a,t_base_device_group b WHERE 1 = 1`;
+ return this.sqlRenderPage(sql, query);
+ }
+}
diff --git a/src/config/config.default.ts b/src/config/config.default.ts
index c9c4d15..909f250 100644
--- a/src/config/config.default.ts
+++ b/src/config/config.default.ts
@@ -74,8 +74,21 @@
// 鏂囦欢涓婁紶
file: {
// 鏂囦欢璺緞鍓嶇紑 鏈湴涓婁紶妯″紡涓� 鏈夋晥
- // domain: 'http://127.0.0.1:8001',
- domain: 'http://112.74.77.127:9100/hn',
+ domain: 'http://127.0.0.1:8001',
+ },
+ // redis涓烘彃浠跺悕绉�
+ redis: {
+ host: "127.0.0.1",
+ password: "",
+ port: 6379,
+ db: 0
+ },
+ socket: {
+ cors: {
+ // 杩欓噷鍙互鍐欏叿浣撶殑鍦板潃濡傦細http://127.0.0.1:8080
+ origin: '*',
+ methods: ['GET', 'POST'],
+ },
},
} as CoolConfig;
diff --git a/src/configuration.ts b/src/configuration.ts
index ed46ab5..d178fd0 100644
--- a/src/configuration.ts
+++ b/src/configuration.ts
@@ -7,12 +7,14 @@
import * as swagger from '@midwayjs/swagger';
// import * as wxpay from '@cool-midway/wxpay';
// import * as oss from '@cool-midway/oss';
-// import * as redis from '@cool-midway/redis';
-// import * as queue from '@cool-midway/queue';
+import * as redis from '@cool-midway/redis';
+import * as queue from '@cool-midway/queue';
// import * as alipay from '@cool-midway/alipay';
-// import * as socket from '@cool-midway/socket';
+import * as socket from '@cool-midway/socket';
@Configuration({
+
+
// 娉ㄦ剰缁勪欢椤哄簭 cool 鏈変緷璧杘rm缁勪欢锛� 鎵�浠ュ繀椤绘斁鍦紝orm缁勪欢涔嬪悗 cool鐨勫叾浠栫粍浠跺繀椤绘斁鍦╟ool 鏍稿績缁勪欢涔嬪悗
imports: [
// 妯℃澘娓叉煋
@@ -29,15 +31,15 @@
// oss鎻掍欢锛岄渶瑕佸埌鍚庡彴閰嶇疆涔嬪悗鎵嶆湁鐢紝榛樿鏄湰鍦颁笂浼�
// oss,
// 灏嗙紦瀛樻浛鎹㈡垚redis
- // redis,
- // // 闃熷垪
- // queue,
+ redis,
+ // 闃熷垪
+ queue,
// 寰俊鏀粯
//wxpay,
// 鏀粯瀹濇敮浠�
// alipay,
// socket
- //socket,
+ socket,
// file,
],
})
diff --git a/src/schedule/aerial.proto b/src/schedule/aerial.proto
new file mode 100644
index 0000000..94a99db
--- /dev/null
+++ b/src/schedule/aerial.proto
@@ -0,0 +1,294 @@
+syntax = "proto3";
+
+// enum SysCommand {
+// UNKOWN_COMMAND = 0; // 鏈煡鍛戒护
+// SYS_COMMAND = 1; // 绯荤粺鍛戒护
+// SENSOR_COMMAND = 2; // 浼犳劅鍣ㄥ懡浠�
+// FIVE_G_COMMAND = 3; // 閫氳5G妯″潡鍛戒护
+// CAMERA_COMMAND = 4; // 鎽勫儚澶村弬鏁板懡浠�
+// IO_COMMAND = 5; // 澶栬IO鍙f搷浣滃懡浠�
+// SYS_PARAMS_COMMAND = 6; // 绯荤粺鍙傛暟鑾峰彇
+// WIFI_COMMAND = 7; // 璁惧WIFI鍙傛暟璁剧疆
+// KERNEL_COMMAND = 8; // 鏍稿績璁$畻鍙傛暟璁�
+// DEVICE_COMMAND = 9; // 宸ヤ綔璁惧鍙傛暟璁剧疆
+// MICRO_WAVE_COMMAND = 10; // 姣背娉�
+// }
+
+// enum SubCommand {
+// option allow_alias = true;
+
+// UNKOWN_SUB_COMMAND = 0; // 鏈煡瀛愬懡浠�
+
+// // 绯荤粺鍛戒护
+// POWER_ON_SUB_COMMAND = 1; // 寮�鏈�
+// POWER_OFF_SUB_COMMAND = 2; // 鍏虫満
+
+// // 浼犳劅鍣ㄥ懡浠�
+// SENSOR_INIT_SUB_COMMAND = 1; // 浼犳劅鍣ㄥ垵濮嬪寲
+// SENSOR_REQURE_SUB_COMMAND = 2; // 浼犳劅鍣ㄥ弬鏁拌幏鍙�
+// RTK_SETTING_SUB_COMMAND = 3; // RTK澶栬鍙傛暟璁剧疆
+// RTK_REQURE_SUB_COMMAND = 4; // RTK澶栬鏁版嵁鑾峰彇
+
+// // 閫氳5G妯″潡鍛戒护
+// FIVE_G_INIT_SUB_COMMAND = 1; // 5G妯″潡鍙傛暟鍒濆鍖�
+// FIVE_G_SEND_IMAGE_SUB_COMMAND = 2; // 5G閫氳鍥惧儚鏁版嵁鍙戦��
+// FIVE_G_REQURE_SUB_COMMAND = 3; // 5G閫氳鎺ユ敹
+
+// // 鎽勫儚澶村弬鏁板懡浠�
+// CAMERA_NUMBER_SUB_COMMAND = 1; // 璁惧鎽勫儚澶翠釜鏁�
+// CAMERA_RESOLUTION_SUB_COMMAND = 2; // 璁惧鎽勫儚澶村伐浣滃垎杈ㄧ巼
+// CAMERA_FRAME_RATE_SUB_COMMAND = 3; // 鎽勫儚澶村伐浣滃抚鐜�
+// CAMERA_OTHER_PARAMS_SUB_COMMAND = 4; // 鎽勫儚澶村伐浣滃叾浠栧弬鏁�
+
+// // 澶栬IO鍙f搷浣滃懡浠�
+// CAMERA_DUST_REMOVAL_START_SUB_COMMAND = 1; // 鎽勫儚澶撮櫎灏樺惎鍔�
+// CAMERA_CONTROL_START_SUB_COMMAND = 2; // 澶栬鎺у埗鏁版嵁鍚姩锛�18璺帶鍒讹級
+
+// // 绯荤粺鍙傛暟鑾峰彇
+// CPU_FREQUENCY_SUB_COMMAND = 1; // CPU涓婚宸ヤ綔鏁版嵁
+// CPU_KERNAL_TEMP_SUB_COMMAND = 2; // CPU鏍稿績娓╁害鏁版嵁
+// CPU_BETTERY_DATA_SUB_COMMAND = 3; // 鐢垫睜渚涚數鐢甸噺鏁版嵁
+
+// // 璁惧WIFI鍙傛暟璁剧疆
+// WIFI_HOTSPOT_SETTING_SUB_COMMAND = 1; // WIFI鐑偣璁剧疆
+// WIFI_HOTSPOT_START_STOP_SUB_COMMAND = 2; // WIFI鐑偣寮�鍚拰鍏抽棴
+
+// // 鏍稿績璁$畻鍙傛暟璁剧疆
+// POINT_CLOUD_ACCURACY_SUB_COMMAND = 1; // 鐐逛簯璁$畻绮惧害
+// SPLICING_PARAMS_SUB_COMMAND = 2; // 鎷兼帴鍙傛暟
+// MAP_INTERFACE_PLATFORM_SUB_COMMAND = 3; // 鍦板浘鎺ュ彛骞冲彴
+// DATA_STORE_BACKUP_SUB_COMMAND = 4; // 鏁版嵁瀛樺偍澶囦唤
+
+// // 宸ヤ綔璁惧鍙傛暟璁剧疆
+// SYSTEM_TIMER_SUB_COMMAND = 1; // 绯荤粺宸ヤ綔瀹氭椂
+// SYSTEM_COORD_HEIGHT_SUB_COMMAND = 2; // 宸ヤ綔鍖哄煙鍧愭爣涓庨珮搴�
+// TRIGGER_CONDITION_SUB_COMMAND = 3; // 宸ヤ綔瑙﹀彂鏉′欢
+// GRAVITY_FAILURE_SUB_COMMAND = 4; // 閲嶅姏鍔犻�熷害澶辨晥鍙傛暟
+// NINE_AXIS_FAILURE_SUB_COMMAND = 5; // 涔濊酱鍔犻�熷害澶辨晥鍙傛暟
+
+// // 姣背娉�
+// MICRO_WAVE_SUB_COMMAND = 1; // 姣背娉�
+// }
+
+// message DataField {
+// int32 length = 1; // 鏁版嵁闀垮害
+// bytes data = 2; // 鏁版嵁鍐呭
+// int32 checksum = 3; // 鏍¢獙鐮�
+// }
+
+// message CapturedData {
+// int64 capture_time = 1; // 閲囬泦鏃堕棿
+// string capture_device =2; // 閲囬泦璁惧
+// int32 capture_port = 3; // 閲囬泦璁惧搴忓彿
+// DataField DataField = 4;
+// string data_type = 5; // 鏁版嵁绫诲瀷 image udp
+// }
+
+// message DataMessage{
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CapturedData CapturedData = 5;
+// }
+
+// message StateData {
+// int64 state_time = 1;
+// string state_device = 2;
+// DataField DataField = 4;
+// }
+
+// message StateMessage {
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CapturedData StatedData = 5;
+// }
+
+// message CommandData {
+// SysCommand SysCommand = 1;
+// SubCommand SubCommand = 2;
+// }
+
+// message CommandMessage {
+// int64 sending_time = 1;
+// string sending_device = 2;
+// string target_device = 3;
+// CommandData CommandData =4;
+// }
+
+enum SysCommand{
+ UNKOWN_COMMAND = 0;
+ CAMERA_COMMAND = 1;
+ MICROWAVE_COMMAND = 2;
+ DUSTCLEANER_COMMAND = 3;
+
+}
+
+enum SubCommand{
+ UNKOWN_SUBCOMMAND = 0;
+
+ // camera params
+ ONE_TIME_CAPTURE = 1;
+
+ // microwave params
+ ONE_CIRCLE_SCAN = 2;
+
+ // dust cleaner params
+ ONE_CLEAN_SCAN = 4;
+
+}
+
+
+message CommandMessage{
+ string source = 1;
+ string generatetime = 2;
+ SysCommand syscommand = 3;
+ SubCommand subcommand = 4;
+ string targetclient = 5;
+ string returnserver = 6;
+ string taskuuid = 7;
+}
+
+message LogsMessage{
+ string source = 1;
+ string timestamp = 2;
+ string context = 3;
+ optional string task_uuid = 4;
+}
+
+
+message ImagesMessage
+{
+ string source = 1;
+ string timestamp = 2;
+
+ message ImageItems
+ {
+ int32 length = 1; // 鏁版嵁闀垮害
+ bytes data = 2; // 鏁版嵁鍐呭
+ }
+
+ repeated ImageItems Image = 3;
+ optional string task_uuid = 4;
+}
+
+
+
+message PlysMessage
+{
+ string source = 1;
+ string timestamp = 2;
+
+ message PointCloudItem
+ {
+ int32 length = 1;
+ int32 rows = 2;
+ int32 cols = 3;
+ string order = 4;
+ string dtype = 5;
+ bytes data = 6;
+
+ }
+
+ repeated PointCloudItem Plydata = 3;
+ optional string task_uuid = 4;
+
+ // enum ref_system
+ // {
+ // MICROWAVE_SYSTEM = 0;
+ // DEVICE_SYSTEM = 1;
+ // }
+
+ // ref_system reference = 4
+}
+
+
+
+
+
+
+
+// message MicroWaveMessage
+// {
+// int32 length = 1; // 鏁版嵁闀垮害
+// bytes data = 2; // 鏁版嵁鍐呭
+// }
+
+// message CommandRequest{
+
+// }
+
+// message StateMessage{
+// string message_type = 1;
+// int64 generate_time = 2;
+// string generate_device = 3;
+// string target_device = 4;
+// string message_uuid = 5;
+// string str_body = 6;
+// }
+
+
+
+
+
+
+// message RequestCommand {
+// int32 sync_word = 1; // 鍚屾瀛�
+// string device_id = 2; // 璁惧ID
+// SysCommand sys_command = 3; // 鍛戒护1
+// SubCommand sub_command = 4; // 鍛戒护2
+// DataField data1 = 5; // 鏁版嵁1
+// DataField data2 = 6; // 鏁版嵁2
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
+
+// enum ResponseState
+// {
+// SUCCESS = 0; // 鎴愬姛
+// FAILURE = 1; // 澶辫触
+// ABNORMAL = 2; // 寮傚父
+// INFICIENT_POWER = 3; // 鐢甸噺涓嶈冻
+// OTHER = 4; // 鍏朵粬
+// }
+
+// message ResponseCommand
+// {
+// string device_id = 1; // 璁惧ID
+// SysCommand sys_command = 2; // 鍛戒护1
+// SubCommand sub_command = 3; // 鍛戒护2
+// ResponseState state = 4; // 鍝嶅簲鐘舵��
+// int32 data_length = 5; // 鏁版嵁闀垮害
+// bytes data = 6; // 鏁版嵁
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
+
+
+// // 鏈嶅姟绔悜閲囬泦绔彂閫佺殑涓绘寚浠�
+// enum ControlSysCommand {
+// DUST_CLEANER_COMMAND = 0;
+// }
+
+// // 鏈嶅姟绔悜閲囬泦绔彂閫佺殑瀛愬懡浠�
+// enum ControlSubCommand {
+// // dust cleaner sub commands
+// DUST_CLEANER_ONETIME_CLEAN_SELF = 0;
+// DUST_CLEANER_ONETIME_CLEAN_CAMERA = 1;
+// DUST_CLEANER_CLOSE_PERIOD_CLEAN_SELF = 2;
+// DUST_CLEANER_CLOSE_PERIOD_CLEAN_CAMERA = 3;
+// DUST_CLEANER_PERIOD_CLEAN_SELF = 4;
+// DUST_CLEANER_PERIOD_CLEAN_CAMERA = 5;
+// }
+
+// // dust cleaner command message
+// message DustCleanerMessage {
+// uint32 period = 1;
+// }
+
+// // 鎺у埗涓婁綅鏈烘秷鎭�
+// message ControllMessage {
+// int32 sync_word = 1; // 鍚屾瀛�
+// ControlSysCommand sys_command = 3; // 涓诲懡浠�
+// ControlSubCommand sub_command = 4; // 瀛愬懡浠�
+// DataField data = 5; // 鏁版嵁
+// int32 checksum = 7; // 鏍¢獙鐮�
+// }
diff --git a/src/schedule/helloCorn b/src/schedule/helloCorn
new file mode 100644
index 0000000..b006a14
--- /dev/null
+++ b/src/schedule/helloCorn
@@ -0,0 +1,19 @@
+import { Provide, Inject, Schedule, CommonSchedule } from '@midwayjs/decorator';
+import { Context } from 'egg';
+
+@Provide()
+@Schedule({
+ interval: 2333, // 2.333s 闂撮殧
+ type: 'worker', // 鎸囧畾鏌愪竴涓� worker 鎵ц
+ //cron: '0 0 */3 * * *',
+})
+export class HelloCron implements CommonSchedule {
+
+ @Inject()
+ ctx: Context;
+
+ // 瀹氭椂鎵ц鐨勫叿浣撲换鍔�
+ async exec() {
+ this.ctx.logger.info(process.pid, 'hello');
+ }
+}
\ No newline at end of file
diff --git a/src/schedule/taskSchedule.js b/src/schedule/taskSchedule.js
new file mode 100644
index 0000000..833fc11
--- /dev/null
+++ b/src/schedule/taskSchedule.js
@@ -0,0 +1,181 @@
+const schedule = require('node-schedule');
+const axios = require('axios');
+
+const ProtoBufJs = require("protobufjs");
+const root = ProtoBufJs.loadSync("D:/22-hn3d/hn3d/src/schedule/aerial.proto");
+const CommandMessage = root.lookupType("CommandMessage");
+const command_req = CommandMessage.create();
+var jsonData = '';//瀛樺偍澶╂皵淇℃伅
+// 瀹氫箟瑙勫垯
+let rule = new schedule.RecurrenceRule();
+// rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56]
+rule.second = [58]; // 姣忛殧 10 绉掓墽琛屼竴娆�
+
+let rule_task = new schedule.RecurrenceRule();
+// rule.minute = [1,6,11,16,21,26,31,36,41,46,51,56]
+rule_task.second = [00]; // 姣忛殧 10 绉掓墽琛屼竴娆�
+
+var periodTasklist = []
+
+var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient:"111",returnserver:"#server#", taskuuid:"1234" };
+
+// Verify the payload if necessary (i.e. when possibly incomplete or invalid)
+var errMsg = CommandMessage.verify(payload);
+if (errMsg)
+ throw Error(errMsg);
+
+// Create a new message
+var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary
+
+// let buffer = Buffer.from(command_req)
+// let buffer = CommandMessage.encode(message).finish();
+// let msg = CommandMessage.decode(buffer);
+
+
+module.exports = {
+ async job_() {
+ // schedule.scheduleJob('5 * * * * *', async () => {
+
+ // });
+ },
+
+};
+
+schedule.scheduleJob(rule_task, async () => {//姣忓垎閽熻鍙栧懆鏈熶换鍔� 骞跺皢浠诲姟鍒嗚В鎵ц
+ // let res = httpGet('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList');
+ axios.get('http://127.0.0.1:8001/admin/business/periodicsetting/getdata?bid=getPeriodTaskList').then(response => {
+ periodTasklist = response.data.data;
+ console.log(periodTasklist)
+ }).catch(error => {
+ console.log(error);
+ });
+});
+
+schedule.scheduleJob(rule, async () => {//姣忓垎閽熻鍙栧懆鏈熶换鍔� 骞跺皢浠诲姟鍒嗚В鎵ц
+ //http://192.168.1.4:5000/api
+ // Exemplary payload
+ var payload = { source: "AwesomeString", syscommand: 1, subcommand: 2, generatetime: "2", targetclient:"111",returnserver:"#server#", taskuuid:"1234" };
+
+ // Verify the payload if necessary (i.e. when possibly incomplete or invalid)
+ var errMsg = CommandMessage.verify(payload);
+ if (errMsg)
+ throw Error(errMsg);
+
+ // Create a new message
+ var message = CommandMessage.create(payload); // or use .fromObject if conversion is necessary
+
+ // let buffer = Buffer.from(command_req)
+ let buffer = CommandMessage.encode(message).finish();
+ let msg = CommandMessage.decode(buffer);
+ console.log('-------step in-------------------------')
+ let urlstr = "http://192.168.1.4:5000/api";
+ axios({
+ method: 'post',
+ url: urlstr,
+ data: buffer,
+ headers: {
+ 'Content-Type': 'application/octet-stream', // 鍏抽敭
+ },
+ }).then(res => {
+ console.log(res)
+ }).catch((error) => {
+ console.log(error)
+ })
+
+
+ console.log('-----step over------------------------------------------------')
+
+});
+
+
+
+// schedule.scheduleJob(rule, async () => {//姣忓皬鏃跺畾鏃跺彇澶╂皵鏁版嵁
+// //https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
+// // 1. 妫�娴嬪綋鍓嶆槸鍚﹀凡鏈夊ぉ姘旀暟鎹�
+// let sqlstr = `select count(1) as counter from t_d_weather_hour where TO_DAYS(now())=TO_DAYS(posttime) and HOUR(now())=hour(posttime) and posttime> date_sub(now(), interval 1 hour)`;
+// let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
+// if( lastdata_times[0].counter > 0 ) { return ;}
+// // 2.鑻ュ綋鍓嶆棤澶╂皵鏁版嵁锛岄噸鏂版姄鍙�
+// let urlstr = "https://devapi.heweather.net/v7/weather/now?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
+// sqlstr = `select * from t_s_weather_city order by code`;
+// let data_rets = await mysql.query_data(sqlstr, 'master', null)
+// for (let index = 0; index < data_rets.length; index++) {
+// let element = data_rets[index];
+// axios.get(urlstr.replace('location_code', element.code)).then(response => {
+// if(response.data.now) {
+// let w = response.data.now;
+// let posttime_ = w.obsTime.replace('T',' ').substr(0,13)+ ':00:00';
+// let sql_ = `insert into t_d_weather_hour (type,citycode,cityname,posttime,temp,feelsLike,icon,text,wind360,windDir,windScale,windSpeed,humidity,precip,pressure,vis,cloud,dew,responsedata)
+// values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.temp}','${w.feelsLike}','${w.icon}','${w.text}','${w.wind360}',
+// '${w.windDir}','${w.windScale}','${w.windSpeed}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}','${w.cloud}','${w.dew}','${JSON.stringify(response.data)}'
+// )`;
+// mysql.query_data(sql_, 'master', null)
+// }
+// }).catch(error => {
+// console.log(error);
+// });
+// }
+
+// });
+
+
+// schedule.scheduleJob(rule, async () => {//姣忓ぉ瀹氭椂鏇存柊澶╂皵鏁版嵁
+// //https://devapi.qweather.com/v7/weather/3d?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
+// // 1. 妫�娴嬪綋鍓嶆槸鍚﹀凡鏈夊ぉ姘旀暟鎹�
+// let sqlstr = `select count(1) as counter from t_d_weather_day where TO_DAYS(now())=TO_DAYS(posttime)`;
+// let lastdata_times = await mysql.query_data(sqlstr, 'master', null);
+// if( lastdata_times[0].counter > 0 ) { return ;}
+// // 2.鑻ュ綋鍓嶆棤澶╂皵鏁版嵁锛岄噸鏂版姄鍙�
+// let urlstr = "https://devapi.qweather.com/v7/weather/3d?location=location_code&key=495b433d21c84986a99c4ac52d42fd3b";
+// sqlstr = `select * from t_s_weather_city order by code`;
+// let data_rets = await mysql.query_data(sqlstr, 'master', null)
+// for (let index = 0; index < data_rets.length; index++) {
+// let element = data_rets[index];
+// axios.get(urlstr.replace('location_code', element.code)).then(response => {
+// if(response.data.daily) {
+// let w = response.data.daily[0];
+// let posttime_ = w.fxDate+ ' 00:00:00';
+// let sql_ = `insert into t_d_weather_day (type,citycode,cityname,posttime,iconNight,iconDay,humidity,precip,pressure,vis,cloud,
+// moonPhase,moonPhaseIcon,moonrise,moonset,sunrise,sunset,tempMax,tempMin,textDay,textNight,uvIndex,
+// wind360Day,windDirDay,wind360Night,windDirNight,windScaleDay,windScaleNight,windSpeedDay,windSpeedNight,responsedata)
+// values ('${element.type}','${element.code}','${element.name}','${posttime_}','${w.iconNight}','${w.iconDay}','${w.humidity}','${w.precip}','${w.pressure}','${w.vis}',
+// '${w.cloud}','${w.moonPhase}','${w.moonPhaseIcon}','${w.moonrise}','${w.moonset}','${w.sunrise}','${w.sunset}','${w.tempMax}','${w.tempMin}','${w.textDay}','${w.textNight}','${w.uvIndex}',
+// '${w.wind360Day}','${w.windDirDay}','${w.wind360Night}','${w.windDirNight}','${w.windScaleDay}','${w.windScaleNight}','${w.windSpeedDay}','${w.windSpeedNight}',
+// '${JSON.stringify(response.data)}'
+// )`;
+// mysql.query_data(sql_, 'master', null)
+// }
+// }).catch(error => {
+// console.log(error);
+// });
+// }
+
+// });
+
+
+// https://devapi.heweather.net/v7/weather/now?location=101021700&key=495b433d21c84986a99c4ac52d42fd3b
+
+
+function httpGet(uri) {
+ console.log(uri);
+ axios.get(uri).then(response => {
+ console.log(response.data);
+ return response.data;
+ }).catch(error => {
+ console.log(error);
+ });
+}
+
+function httpPost(uri, postdata) {
+ // let data = {
+ // name: 'John Doe',
+ // job: 'Content Writer'
+ // };
+ axios.post(uri, postdata).then((res) => {
+ return res.data;
+ console.log(`Status: ${res.status}`);
+ console.log('Body: ', res.data);
+ }).catch((err) => {
+ console.error(err);
+ });
+}
\ No newline at end of file
diff --git a/src/socket/chatUser.ts b/src/socket/chatUser.ts
new file mode 100644
index 0000000..9136b4e
--- /dev/null
+++ b/src/socket/chatUser.ts
@@ -0,0 +1,32 @@
+import { EntityModel } from '@midwayjs/orm';
+import { BaseEntity } from '@cool-midway/core';
+import { Column, Index } from 'typeorm';
+
+/**
+ * 绯荤粺鏃ュ織
+ */
+@EntityModel('t_sys_user_chat')
+export class ChatUserEntity extends BaseEntity {
+ @Index()
+ @Column({ comment: '鐢ㄦ埛ID', nullable: true, type: 'bigint' })
+ userId: number;
+
+ @Index()
+ @Column({ comment: '琛屼负', length: 100 })
+ action: string;
+
+ @Index()
+ @Column({ comment: '鍐呭', length: 100 })
+ chatmsg: string;
+
+ @Index()
+ @Column({ comment: 'ip', nullable: true, length: 50 })
+ ip: string;
+
+ @Index()
+ @Column({ comment: 'ip鍦板潃', nullable: true, length: 50 })
+ ipAddr: string;
+
+ @Column({ comment: '鍙傛暟', nullable: true, type: 'text' })
+ params: string;
+}
diff --git a/src/socket/socketHandle.ts b/src/socket/socketHandle.ts
new file mode 100644
index 0000000..c9161d5
--- /dev/null
+++ b/src/socket/socketHandle.ts
@@ -0,0 +1,85 @@
+import { Config, Provide, Scope, ScopeEnum } from '@midwayjs/decorator';
+import { InjectEntityModel } from '@midwayjs/orm';
+import { CoolSocket, SocketEnvent } from '@cool-midway/socket';
+import { Socket } from 'socket.io';
+// import { ChatUserEntity } from '../entity/user';
+import { Repository } from 'typeorm';
+
+import * as jwt from 'jsonwebtoken';
+
+/**
+ * socket鐨勪簨浠�
+ */
+@Provide()
+@Scope(ScopeEnum.Singleton)
+@CoolSocket() // 鏀寔璁剧疆鍛藉悕绌洪棿 濡傦細@CoolSocket('/test')
+export class SocketHandler {
+ // 鑾峰緱妯″潡鐨勯厤缃俊鎭�
+ @Config('module.chat.jwt')
+ jwtConfig;
+
+ public clients: Map<String, Socket>;
+
+// @InjectEntityModel(ChatUserEntity)
+// chatUserEntity: Repository<ChatUserEntity>;
+
+ /**
+ * 杩炴帴鎴愬姛
+ * @param data
+ */
+ @SocketEnvent()
+ async connection(socket: Socket) {
+ // console.log('socket浜嬩欢', socket.id, socket.handshake.query);
+ // console.log('socket浜嬩欢', socket.id, socket.handshake);
+ console.log(socket);
+ this.clients.set(socket.id, socket)
+ const { token } = socket.handshake.query;
+ console.log('-----------------------------------------------------------------------------------------------------------------------')
+ console.log(token)
+ // let tokenInfo;
+ // try {
+ // // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // // @ts-ignore
+ // tokenInfo = jwt.verify(token, this.jwtConfig.secret);
+ // } catch (error) {
+ // // 濡傛灉楠岃瘉涓嶉�氳繃鍒欐柇寮�杩炴帴
+ // socket.emit('comm', '鏍¢獙澶辨晥');
+ // socket.disconnect();
+ // return;
+ // }
+ socket.on('disconnect', eventSocket => {
+ this.clients.delete(socket.id)
+ console.log('鏂紑杩炴帴');
+ });
+
+
+ socket.on('msg', msg => {
+ console.log('瀹㈡埛绔秷鎭�', msg);
+ socket.emit('data', 're:'+msg.op +" "+ msg.deviceid)
+
+ });
+
+ socket.on('devicelog',msg => {
+ //瑙f瀽缁堢涓婃姤鐨勭姸鎬佹秷鎭�
+
+ //鍏ュ簱
+
+ //鎺ㄩ�佸埌鍓嶇
+ socket.broadcast.emit('');
+ });
+
+ }
+
+ /**
+ * 杩炴帴鎴愬姛
+ * @param data
+ */
+ @SocketEnvent()
+ async broadcast(socket: Socket) {
+
+ //鎺ㄩ�佸埌鍓嶇
+ socket.broadcast.emit('');
+
+ }
+
+}
\ No newline at end of file
--
Gitblit v1.9.1