create-ssnode-cli 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/backend/config/config.develop.yaml +6 -4
- package/templates/backend/data/template.dev.sqlite-shm +0 -0
- package/templates/backend/data/template.dev.sqlite-wal +0 -0
- package/templates/backend/dist/app.module.js +85 -1
- package/templates/backend/dist/app.module.js.map +1 -1
- package/templates/backend/dist/common/all-exceptions.filter.js +47 -1
- package/templates/backend/dist/common/all-exceptions.filter.js.map +1 -1
- package/templates/backend/dist/common/app-crypto.js +119 -1
- package/templates/backend/dist/common/app-crypto.js.map +1 -1
- package/templates/backend/dist/common/app-sign.guard.js +72 -1
- package/templates/backend/dist/common/app-sign.guard.js.map +1 -1
- package/templates/backend/dist/common/app-sign.module.js +20 -1
- package/templates/backend/dist/common/app-sign.module.js.map +1 -1
- package/templates/backend/dist/common/response.js +23 -1
- package/templates/backend/dist/common/response.js.map +1 -1
- package/templates/backend/dist/common/throttle.guard.js +42 -1
- package/templates/backend/dist/common/throttle.guard.js.map +1 -1
- package/templates/backend/dist/common/transform.interceptor.js +28 -1
- package/templates/backend/dist/common/transform.interceptor.js.map +1 -1
- package/templates/backend/dist/config/config.interface.js +2 -1
- package/templates/backend/dist/config/config.interface.js.map +1 -1
- package/templates/backend/dist/config/configuration.js +91 -1
- package/templates/backend/dist/config/configuration.js.map +1 -1
- package/templates/backend/dist/database/migrations/0001-init.migration.js +69 -1
- package/templates/backend/dist/database/migrations/0001-init.migration.js.map +1 -1
- package/templates/backend/dist/database/sqlite.config.js +32 -1
- package/templates/backend/dist/database/sqlite.config.js.map +1 -1
- package/templates/backend/dist/entities/audit-log.entity.js +49 -1
- package/templates/backend/dist/entities/audit-log.entity.js.map +1 -1
- package/templates/backend/dist/entities/image.entity.js +50 -1
- package/templates/backend/dist/entities/image.entity.js.map +1 -1
- package/templates/backend/dist/entities/page-data.entity.js +60 -1
- package/templates/backend/dist/entities/page-data.entity.js.map +1 -1
- package/templates/backend/dist/entities/screen-config.entity.js +74 -1
- package/templates/backend/dist/entities/screen-config.entity.js.map +1 -1
- package/templates/backend/dist/entities/user.entity.js +59 -1
- package/templates/backend/dist/entities/user.entity.js.map +1 -1
- package/templates/backend/dist/main.js +56 -1
- package/templates/backend/dist/main.js.map +1 -1
- package/templates/backend/dist/modules/audit/audit.controller.js +51 -1
- package/templates/backend/dist/modules/audit/audit.controller.js.map +1 -1
- package/templates/backend/dist/modules/audit/audit.module.js +25 -1
- package/templates/backend/dist/modules/audit/audit.module.js.map +1 -1
- package/templates/backend/dist/modules/audit/audit.service.js +57 -1
- package/templates/backend/dist/modules/audit/audit.service.js.map +1 -1
- package/templates/backend/dist/modules/auth/auth.controller.js +74 -1
- package/templates/backend/dist/modules/auth/auth.controller.js.map +1 -1
- package/templates/backend/dist/modules/auth/auth.module.js +45 -1
- package/templates/backend/dist/modules/auth/auth.module.js.map +1 -1
- package/templates/backend/dist/modules/auth/auth.service.js +151 -1
- package/templates/backend/dist/modules/auth/auth.service.js.map +1 -1
- package/templates/backend/dist/modules/auth/captcha.service.js +56 -1
- package/templates/backend/dist/modules/auth/captcha.service.js.map +1 -1
- package/templates/backend/dist/modules/auth/jwt-auth.guard.js +17 -1
- package/templates/backend/dist/modules/auth/jwt-auth.guard.js.map +1 -1
- package/templates/backend/dist/modules/auth/jwt.strategy.js +37 -1
- package/templates/backend/dist/modules/auth/jwt.strategy.js.map +1 -1
- package/templates/backend/dist/modules/image/image.controller.js +75 -1
- package/templates/backend/dist/modules/image/image.controller.js.map +1 -1
- package/templates/backend/dist/modules/image/image.module.js +26 -1
- package/templates/backend/dist/modules/image/image.module.js.map +1 -1
- package/templates/backend/dist/modules/image/image.service.js +94 -1
- package/templates/backend/dist/modules/image/image.service.js.map +1 -1
- package/templates/backend/dist/modules/ops/backend-version.probe.js +58 -1
- package/templates/backend/dist/modules/ops/backend-version.probe.js.map +1 -1
- package/templates/backend/dist/modules/ops/ops-probe.interface.js +4 -1
- package/templates/backend/dist/modules/ops/ops-probe.interface.js.map +1 -1
- package/templates/backend/dist/modules/ops/ops.controller.js +52 -1
- package/templates/backend/dist/modules/ops/ops.controller.js.map +1 -1
- package/templates/backend/dist/modules/ops/ops.module.js +39 -1
- package/templates/backend/dist/modules/ops/ops.module.js.map +1 -1
- package/templates/backend/dist/modules/ops/ops.service.js +72 -1
- package/templates/backend/dist/modules/ops/ops.service.js.map +1 -1
- package/templates/backend/dist/modules/ops/sqlite-backup-list.probe.js +105 -1
- package/templates/backend/dist/modules/ops/sqlite-backup-list.probe.js.map +1 -1
- package/templates/backend/dist/modules/ops/sqlite-backup-log.probe.js +67 -1
- package/templates/backend/dist/modules/ops/sqlite-backup-log.probe.js.map +1 -1
- package/templates/backend/dist/modules/ops/sqlite-backup.probe.js +115 -1
- package/templates/backend/dist/modules/ops/sqlite-backup.probe.js.map +1 -1
- package/templates/backend/dist/modules/ops/version.controller.js +52 -1
- package/templates/backend/dist/modules/ops/version.controller.js.map +1 -1
- package/templates/backend/dist/modules/page-data/page-data.controller.js +109 -1
- package/templates/backend/dist/modules/page-data/page-data.controller.js.map +1 -1
- package/templates/backend/dist/modules/page-data/page-data.module.js +25 -1
- package/templates/backend/dist/modules/page-data/page-data.module.js.map +1 -1
- package/templates/backend/dist/modules/page-data/page-data.service.js +69 -1
- package/templates/backend/dist/modules/page-data/page-data.service.js.map +1 -1
- package/templates/backend/dist/modules/screen-config/screen-config.controller.js +61 -1
- package/templates/backend/dist/modules/screen-config/screen-config.controller.js.map +1 -1
- package/templates/backend/dist/modules/screen-config/screen-config.module.js +25 -1
- package/templates/backend/dist/modules/screen-config/screen-config.module.js.map +1 -1
- package/templates/backend/dist/modules/screen-config/screen-config.service.js +41 -1
- package/templates/backend/dist/modules/screen-config/screen-config.service.js.map +1 -1
- package/templates/backend/dist/modules/upload/upload.controller.js +65 -1
- package/templates/backend/dist/modules/upload/upload.controller.js.map +1 -1
- package/templates/backend/dist/modules/upload/upload.module.js +22 -1
- package/templates/backend/dist/modules/upload/upload.module.js.map +1 -1
- package/templates/backend/dist/modules/upload/upload.service.js +75 -1
- package/templates/backend/dist/modules/upload/upload.service.js.map +1 -1
- package/templates/backend/dist/modules/user/user.controller.js +149 -1
- package/templates/backend/dist/modules/user/user.controller.js.map +1 -1
- package/templates/backend/dist/modules/user/user.module.js +26 -1
- package/templates/backend/dist/modules/user/user.module.js.map +1 -1
- package/templates/backend/dist/modules/user/user.service.js +249 -1
- package/templates/backend/dist/modules/user/user.service.js.map +1 -1
- package/templates/backend/dist/modules/websocket/websocket.gateway.js +33 -1
- package/templates/backend/dist/modules/websocket/websocket.gateway.js.map +1 -1
- package/templates/backend/dist/modules/websocket/websocket.module.js +19 -1
- package/templates/backend/dist/modules/websocket/websocket.module.js.map +1 -1
- package/templates/backend/dist/tsconfig.build.tsbuildinfo +1 -1
- package/templates/backend/package.json +1 -1
- package/templates/backend/src/modules/auth/captcha.service.ts +6 -5
- package/templates/web/dist/assets/{AuthLayout-bcf98efb.js → AuthLayout-f1e8d110.js} +1 -1
- package/templates/web/dist/assets/{AuthLayout-legacy-6e7a8ae1.js → AuthLayout-legacy-f871651c.js} +1 -1
- package/templates/web/dist/assets/{Background-eb77ef54.js → Background-955d549f.js} +1 -1
- package/templates/web/dist/assets/{Background-legacy-50457007.js → Background-legacy-fbad6e76.js} +1 -1
- package/templates/web/dist/assets/{Screen-318c3fc2.js → Screen-b14b0813.js} +1 -1
- package/templates/web/dist/assets/{Screen-legacy-af123b0f.js → Screen-legacy-154c8ee6.js} +1 -1
- package/templates/web/dist/assets/{api-beff4a3e.js → api-4d80e36e.js} +1 -1
- package/templates/web/dist/assets/{api-legacy-9fe41d4b.js → api-legacy-054fd569.js} +1 -1
- package/templates/web/dist/assets/{component-89b5253e.js → component-9d9f33fa.js} +1 -1
- package/templates/web/dist/assets/{component-legacy-8c5a28ef.js → component-legacy-4445386a.js} +1 -1
- package/templates/web/dist/assets/{index-a79e448b.js → index-107a0e80.js} +1 -1
- package/templates/web/dist/assets/{index-b60badf7.js → index-5afb70be.js} +1 -1
- package/templates/web/dist/assets/{index-cba19800.js → index-7b807c2d.js} +1 -1
- package/templates/web/dist/assets/{index-86214b19.js → index-ab64cd34.js} +1 -1
- package/templates/web/dist/assets/{index-7277cbfb.js → index-d8bfffb3.js} +1 -1
- package/templates/web/dist/assets/{index-d70eb540.js → index-db169639.js} +1 -1
- package/templates/web/dist/assets/{index-bd4ed808.js → index-e08dc495.js} +1 -1
- package/templates/web/dist/assets/index-e31f4b7c.js +1 -0
- package/templates/web/dist/assets/{index-legacy-783129a7.js → index-legacy-5cf7be80.js} +1 -1
- package/templates/web/dist/assets/index-legacy-6f112001.js +1 -0
- package/templates/web/dist/assets/{index-legacy-b3bd40c1.js → index-legacy-91e012ac.js} +1 -1
- package/templates/web/dist/assets/{index-legacy-0da8de82.js → index-legacy-aa61cf72.js} +1 -1
- package/templates/web/dist/assets/{index-legacy-06483318.js → index-legacy-afba9135.js} +1 -1
- package/templates/web/dist/assets/{index-legacy-d510e318.js → index-legacy-da51c769.js} +1 -1
- package/templates/web/dist/assets/{index-legacy-993ef005.js → index-legacy-eec0ca6e.js} +1 -1
- package/templates/web/dist/assets/{index-legacy-feb54578.js → index-legacy-f732db29.js} +1 -1
- package/templates/web/dist/index.html +2 -2
- package/templates/web/node_modules/.vite/deps/@ant-design_icons.js +4 -4
- package/templates/web/node_modules/.vite/deps/_metadata.json +57 -57
- package/templates/web/node_modules/.vite/deps/antd.js +6 -6
- package/templates/web/node_modules/.vite/deps/antd_locale_zh_CN.js +1 -1
- package/templates/web/node_modules/.vite/deps/axios.js +2793 -1104
- package/templates/web/node_modules/.vite/deps/axios.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/{chunk-FADIZLW4.js → chunk-3EE4ABTD.js} +3 -3
- package/templates/web/node_modules/.vite/deps/{chunk-5JEEJ3ET.js → chunk-3KXTUEQ5.js} +2 -2
- package/templates/web/node_modules/.vite/deps/{chunk-DSEUD2VO.js → chunk-622VOE6C.js} +28 -237
- package/templates/web/node_modules/.vite/deps/chunk-622VOE6C.js.map +7 -0
- package/templates/web/node_modules/.vite/deps/{chunk-PCLWPLHU.js → chunk-AX2S74EI.js} +4 -4
- package/templates/web/node_modules/.vite/deps/{chunk-UX3FVGZU.js → chunk-DXNXWKU4.js} +1670 -1309
- package/templates/web/node_modules/.vite/deps/chunk-DXNXWKU4.js.map +7 -0
- package/templates/web/node_modules/.vite/deps/{chunk-OTDKR2HU.js → chunk-GT2UP6M4.js} +2 -2
- package/templates/web/node_modules/.vite/deps/{chunk-5WWUZCGV.js → chunk-HM4MQYWN.js} +10 -2
- package/templates/web/node_modules/.vite/deps/{chunk-Z4XTF2JV.js → chunk-NDUAOA7M.js} +2 -2
- package/templates/web/node_modules/.vite/deps/{chunk-PIIG5WB7.js → chunk-OKY2XKJX.js} +14406 -12416
- package/templates/web/node_modules/.vite/deps/chunk-OKY2XKJX.js.map +7 -0
- package/templates/web/node_modules/.vite/deps/{chunk-UIM57Q7Y.js → chunk-SC6QO7UO.js} +6086 -4354
- package/templates/web/node_modules/.vite/deps/chunk-SC6QO7UO.js.map +7 -0
- package/templates/web/node_modules/.vite/deps/classnames.js +2 -2
- package/templates/web/node_modules/.vite/deps/dayjs.js +2 -2
- package/templates/web/node_modules/.vite/deps/dayjs_locale_zh-cn.js +2 -2
- package/templates/web/node_modules/.vite/deps/echarts_charts.js +7172 -6102
- package/templates/web/node_modules/.vite/deps/echarts_charts.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/echarts_components.js +3363 -1326
- package/templates/web/node_modules/.vite/deps/echarts_components.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/echarts_core.js +57 -42
- package/templates/web/node_modules/.vite/deps/echarts_core.js.map +3 -3
- package/templates/web/node_modules/.vite/deps/echarts_renderers.js +432 -334
- package/templates/web/node_modules/.vite/deps/echarts_renderers.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/exceljs.js +25762 -0
- package/templates/web/node_modules/.vite/deps/exceljs.js.map +7 -0
- package/templates/web/node_modules/.vite/deps/lodash.js +28 -10
- package/templates/web/node_modules/.vite/deps/lodash.js.map +3 -3
- package/templates/web/node_modules/.vite/deps/path-browserify.js +1 -1
- package/templates/web/node_modules/.vite/deps/prop-types.js +1 -1
- package/templates/web/node_modules/.vite/deps/qs.js +405 -138
- package/templates/web/node_modules/.vite/deps/qs.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/react-dom.js +3 -3
- package/templates/web/node_modules/.vite/deps/react-dom_client.js +3 -3
- package/templates/web/node_modules/.vite/deps/react-router-dom.js +3445 -1283
- package/templates/web/node_modules/.vite/deps/react-router-dom.js.map +4 -4
- package/templates/web/node_modules/.vite/deps/react.js +2 -2
- package/templates/web/node_modules/.vite/deps/react_jsx-dev-runtime.js +2 -2
- package/templates/web/node_modules/.vite/deps/recoil.js +3 -3
- package/templates/web/src/pages/Login/index.tsx +8 -1
- package/templates/web/src/services/api.ts +6 -1
- package/templates/web/vite.config.js +5 -5
- package/templates/web/dist/assets/index-e6071630.js +0 -1
- package/templates/web/dist/assets/index-legacy-028ed5d5.js +0 -1
- package/templates/web/node_modules/.vite/deps/chunk-DSEUD2VO.js.map +0 -7
- package/templates/web/node_modules/.vite/deps/chunk-PIIG5WB7.js.map +0 -7
- package/templates/web/node_modules/.vite/deps/chunk-UIM57Q7Y.js.map +0 -7
- package/templates/web/node_modules/.vite/deps/chunk-UX3FVGZU.js.map +0 -7
- package/templates/web/node_modules/.vite/deps/xlsx.js +0 -33827
- package/templates/web/node_modules/.vite/deps/xlsx.js.map +0 -7
- /package/templates/web/node_modules/.vite/deps/{chunk-FADIZLW4.js.map → chunk-3EE4ABTD.js.map} +0 -0
- /package/templates/web/node_modules/.vite/deps/{chunk-5JEEJ3ET.js.map → chunk-3KXTUEQ5.js.map} +0 -0
- /package/templates/web/node_modules/.vite/deps/{chunk-PCLWPLHU.js.map → chunk-AX2S74EI.js.map} +0 -0
- /package/templates/web/node_modules/.vite/deps/{chunk-OTDKR2HU.js.map → chunk-GT2UP6M4.js.map} +0 -0
- /package/templates/web/node_modules/.vite/deps/{chunk-5WWUZCGV.js.map → chunk-HM4MQYWN.js.map} +0 -0
- /package/templates/web/node_modules/.vite/deps/{chunk-Z4XTF2JV.js.map → chunk-NDUAOA7M.js.map} +0 -0
|
@@ -1,2 +1,116 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var SqliteBackupProbe_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.SqliteBackupProbe = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const config_1 = require("@nestjs/config");
|
|
16
|
+
const fs = require("fs");
|
|
17
|
+
const path = require("path");
|
|
18
|
+
let SqliteBackupProbe = SqliteBackupProbe_1 = class SqliteBackupProbe {
|
|
19
|
+
config;
|
|
20
|
+
logger = new common_1.Logger(SqliteBackupProbe_1.name);
|
|
21
|
+
key = 'sqlite-backup';
|
|
22
|
+
name = 'SQLite 备份';
|
|
23
|
+
kind = 'status';
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
}
|
|
27
|
+
resolveDataDir() {
|
|
28
|
+
const dir = this.config.get('database').dir;
|
|
29
|
+
return path.isAbsolute(dir) ? dir : path.resolve(process.cwd(), dir);
|
|
30
|
+
}
|
|
31
|
+
async collect() {
|
|
32
|
+
const env = process.env.NODE_ENV === 'prod' ? 'prod' : 'develop';
|
|
33
|
+
const dataDir = this.resolveDataDir();
|
|
34
|
+
const backupDir = path.join(dataDir, 'backup');
|
|
35
|
+
const thresholdHours = 25;
|
|
36
|
+
const collectedAt = new Date().toISOString();
|
|
37
|
+
const statusResult = (healthy, summary, items) => ({
|
|
38
|
+
key: this.key,
|
|
39
|
+
name: this.name,
|
|
40
|
+
kind: 'status',
|
|
41
|
+
healthy,
|
|
42
|
+
summary,
|
|
43
|
+
detail: { kind: 'status', items },
|
|
44
|
+
collectedAt
|
|
45
|
+
});
|
|
46
|
+
if (!fs.existsSync(backupDir)) {
|
|
47
|
+
return statusResult('unknown', '备份目录不存在(未配 cron 或首次部署)', [
|
|
48
|
+
{ label: '备份目录', value: backupDir }
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
let entries = [];
|
|
52
|
+
try {
|
|
53
|
+
entries = fs
|
|
54
|
+
.readdirSync(backupDir, { withFileTypes: true })
|
|
55
|
+
.filter((d) => d.isDirectory() && d.name.startsWith(`template.${env}.`))
|
|
56
|
+
.map((d) => d.name)
|
|
57
|
+
.sort()
|
|
58
|
+
.reverse();
|
|
59
|
+
}
|
|
60
|
+
catch (e) {
|
|
61
|
+
return statusResult('unknown', `读取备份目录失败: ${e.message}`, [
|
|
62
|
+
{ label: '备份目录', value: backupDir }
|
|
63
|
+
]);
|
|
64
|
+
}
|
|
65
|
+
if (entries.length === 0) {
|
|
66
|
+
return statusResult('unknown', '暂无备份(未配 cron 或首次部署)', [
|
|
67
|
+
{ label: '备份目录', value: backupDir },
|
|
68
|
+
{ label: '备份数', value: '0' }
|
|
69
|
+
]);
|
|
70
|
+
}
|
|
71
|
+
const latestDir = entries[0];
|
|
72
|
+
const latestPath = path.join(backupDir, latestDir);
|
|
73
|
+
const stat = fs.statSync(latestPath);
|
|
74
|
+
const ageHours = (Date.now() - stat.mtimeMs) / 3_600_000;
|
|
75
|
+
const healthy = ageHours <= thresholdHours;
|
|
76
|
+
const triplet = this.readTriplet(latestPath);
|
|
77
|
+
return statusResult(healthy, healthy
|
|
78
|
+
? `最近备份 ${this.formatAge(ageHours)}前 · 共 ${entries.length} 份`
|
|
79
|
+
: `最近备份已是 ${this.formatAge(ageHours)}前(超 ${thresholdHours}h,cron 可能漏跑)`, [
|
|
80
|
+
{ label: '最近备份', value: `${this.formatTs(latestDir)}(${this.formatAge(ageHours)}前)` },
|
|
81
|
+
{ label: '备份数', value: String(entries.length) },
|
|
82
|
+
{ label: '新鲜度阈值', value: `${thresholdHours}h` },
|
|
83
|
+
{ label: '最近三件套', value: triplet || '仅主库(无 WAL 旁文件)' },
|
|
84
|
+
{ label: '备份目录', value: backupDir }
|
|
85
|
+
]);
|
|
86
|
+
}
|
|
87
|
+
readTriplet(dir) {
|
|
88
|
+
const env = process.env.NODE_ENV === 'prod' ? 'prod' : 'develop';
|
|
89
|
+
const base = `template.${env}.sqlite`;
|
|
90
|
+
const parts = [base];
|
|
91
|
+
if (fs.existsSync(path.join(dir, `${base}-wal`)))
|
|
92
|
+
parts.push(`${base}-wal`);
|
|
93
|
+
if (fs.existsSync(path.join(dir, `${base}-shm`)))
|
|
94
|
+
parts.push(`${base}-shm`);
|
|
95
|
+
return parts.join(' + ');
|
|
96
|
+
}
|
|
97
|
+
formatAge(hours) {
|
|
98
|
+
if (hours < 1)
|
|
99
|
+
return `${Math.round(hours * 60)} 分钟`;
|
|
100
|
+
if (hours < 24)
|
|
101
|
+
return `${Math.round(hours)} 小时`;
|
|
102
|
+
return `${Math.round(hours / 24)} 天`;
|
|
103
|
+
}
|
|
104
|
+
formatTs(dirName) {
|
|
105
|
+
const m = dirName.match(/(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})$/);
|
|
106
|
+
if (!m)
|
|
107
|
+
return dirName;
|
|
108
|
+
return `${m[1]}-${m[2]}-${m[3]} ${m[4]}:${m[5]}:${m[6]}`;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
exports.SqliteBackupProbe = SqliteBackupProbe;
|
|
112
|
+
exports.SqliteBackupProbe = SqliteBackupProbe = SqliteBackupProbe_1 = __decorate([
|
|
113
|
+
(0, common_1.Injectable)(),
|
|
114
|
+
__metadata("design:paramtypes", [config_1.ConfigService])
|
|
115
|
+
], SqliteBackupProbe);
|
|
2
116
|
//# sourceMappingURL=sqlite-backup.probe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"sqlite-backup.probe.js","sourceRoot":"","sources":["../../../src/modules/ops/sqlite-backup.probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,53 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var VersionController_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.VersionController = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
const fs = require("fs");
|
|
17
|
+
const path = require("path");
|
|
18
|
+
let VersionController = VersionController_1 = class VersionController {
|
|
19
|
+
logger = new common_1.Logger(VersionController_1.name);
|
|
20
|
+
version() {
|
|
21
|
+
const pkgPath = path.join(process.cwd(), 'package.json');
|
|
22
|
+
let version = 'unknown';
|
|
23
|
+
let name = 'backend';
|
|
24
|
+
try {
|
|
25
|
+
if (fs.existsSync(pkgPath)) {
|
|
26
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
27
|
+
if (typeof pkg.version === 'string' && pkg.version)
|
|
28
|
+
version = pkg.version;
|
|
29
|
+
if (typeof pkg.name === 'string' && pkg.name)
|
|
30
|
+
name = pkg.name;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
this.logger.warn(`version 接口: 未找到 ${pkgPath}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
this.logger.warn(`version 接口读取失败: ${e.message}`);
|
|
38
|
+
}
|
|
39
|
+
return { name, version };
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
exports.VersionController = VersionController;
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, common_1.Get)(),
|
|
45
|
+
__metadata("design:type", Function),
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
|
+
__metadata("design:returntype", void 0)
|
|
48
|
+
], VersionController.prototype, "version", null);
|
|
49
|
+
exports.VersionController = VersionController = VersionController_1 = __decorate([
|
|
50
|
+
(0, swagger_1.ApiTags)('version 版本号'),
|
|
51
|
+
(0, common_1.Controller)('version')
|
|
52
|
+
], VersionController);
|
|
2
53
|
//# sourceMappingURL=version.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"version.controller.js","sourceRoot":"","sources":["../../../src/modules/ops/version.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyD;AACzD,6CAA0C;AAC1C,yBAAyB;AACzB,6BAA6B;AAiBtB,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IACX,MAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAG7D,OAAO;QACL,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,IAAI,IAAI,GAAG,SAAS,CAAC;QACrB,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzD,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO;oBAAE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC1E,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI;oBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAoB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AArBY,8CAAiB;AAI5B;IADC,IAAA,YAAG,GAAE;;;;gDAiBL;4BApBU,iBAAiB;IAF7B,IAAA,iBAAO,EAAC,aAAa,CAAC;IACtB,IAAA,mBAAU,EAAC,SAAS,CAAC;GACT,iBAAiB,CAqB7B"}
|
|
@@ -1,2 +1,110 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PageDataController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const platform_express_1 = require("@nestjs/platform-express");
|
|
18
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
19
|
+
const page_data_service_1 = require("./page-data.service");
|
|
20
|
+
const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
|
|
21
|
+
let PageDataController = class PageDataController {
|
|
22
|
+
service;
|
|
23
|
+
constructor(service) {
|
|
24
|
+
this.service = service;
|
|
25
|
+
}
|
|
26
|
+
ensureAdmin(req) {
|
|
27
|
+
if (req.user?.role !== 'admin' && req.user?.role !== 'superadmin') {
|
|
28
|
+
throw new common_1.ForbiddenException('仅管理员可操作大屏页面数据');
|
|
29
|
+
}
|
|
30
|
+
return { id: req.user.id, username: req.user.username };
|
|
31
|
+
}
|
|
32
|
+
getList(query) {
|
|
33
|
+
return this.service.getList(query);
|
|
34
|
+
}
|
|
35
|
+
add(body, req) {
|
|
36
|
+
this.ensureAdmin(req);
|
|
37
|
+
return this.service.add(body, req.user);
|
|
38
|
+
}
|
|
39
|
+
edit(body, req) {
|
|
40
|
+
this.ensureAdmin(req);
|
|
41
|
+
return this.service.update(body);
|
|
42
|
+
}
|
|
43
|
+
deleteById(id, req) {
|
|
44
|
+
this.ensureAdmin(req);
|
|
45
|
+
return this.service.deleteById(Number(id));
|
|
46
|
+
}
|
|
47
|
+
import(file, req) {
|
|
48
|
+
this.ensureAdmin(req);
|
|
49
|
+
if (!file) {
|
|
50
|
+
throw new Error('缺少 file');
|
|
51
|
+
}
|
|
52
|
+
return { filename: file.originalname };
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.PageDataController = PageDataController;
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, common_1.Get)('getList'),
|
|
58
|
+
__param(0, (0, common_1.Query)()),
|
|
59
|
+
__metadata("design:type", Function),
|
|
60
|
+
__metadata("design:paramtypes", [Object]),
|
|
61
|
+
__metadata("design:returntype", void 0)
|
|
62
|
+
], PageDataController.prototype, "getList", null);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
65
|
+
(0, common_1.Post)('add'),
|
|
66
|
+
__param(0, (0, common_1.Body)()),
|
|
67
|
+
__param(1, (0, common_1.Request)()),
|
|
68
|
+
__metadata("design:type", Function),
|
|
69
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
70
|
+
__metadata("design:returntype", void 0)
|
|
71
|
+
], PageDataController.prototype, "add", null);
|
|
72
|
+
__decorate([
|
|
73
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
74
|
+
(0, common_1.Put)('edit'),
|
|
75
|
+
__param(0, (0, common_1.Body)()),
|
|
76
|
+
__param(1, (0, common_1.Request)()),
|
|
77
|
+
__metadata("design:type", Function),
|
|
78
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
79
|
+
__metadata("design:returntype", void 0)
|
|
80
|
+
], PageDataController.prototype, "edit", null);
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
83
|
+
(0, common_1.Delete)('deleteById'),
|
|
84
|
+
__param(0, (0, common_1.Query)('id')),
|
|
85
|
+
__param(1, (0, common_1.Request)()),
|
|
86
|
+
__metadata("design:type", Function),
|
|
87
|
+
__metadata("design:paramtypes", [String, Object]),
|
|
88
|
+
__metadata("design:returntype", void 0)
|
|
89
|
+
], PageDataController.prototype, "deleteById", null);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
92
|
+
(0, common_1.Post)('v1/import'),
|
|
93
|
+
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)('file')),
|
|
94
|
+
(0, swagger_1.ApiConsumes)('multipart/form-data'),
|
|
95
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
96
|
+
(0, swagger_1.ApiBody)({
|
|
97
|
+
schema: { type: 'object', properties: { file: { type: 'string', format: 'binary' } } }
|
|
98
|
+
}),
|
|
99
|
+
__param(0, (0, common_1.UploadedFile)()),
|
|
100
|
+
__param(1, (0, common_1.Request)()),
|
|
101
|
+
__metadata("design:type", Function),
|
|
102
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
103
|
+
__metadata("design:returntype", void 0)
|
|
104
|
+
], PageDataController.prototype, "import", null);
|
|
105
|
+
exports.PageDataController = PageDataController = __decorate([
|
|
106
|
+
(0, swagger_1.ApiTags)('page-data 大屏页面数据'),
|
|
107
|
+
(0, common_1.Controller)(),
|
|
108
|
+
__metadata("design:paramtypes", [page_data_service_1.PageDataService])
|
|
109
|
+
], PageDataController);
|
|
2
110
|
//# sourceMappingURL=page-data.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"page-data.controller.js","sourceRoot":"","sources":["../../../src/modules/page-data/page-data.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,26 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PageDataModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const page_data_entity_1 = require("../../entities/page-data.entity");
|
|
13
|
+
const page_data_service_1 = require("./page-data.service");
|
|
14
|
+
const page_data_controller_1 = require("./page-data.controller");
|
|
15
|
+
let PageDataModule = class PageDataModule {
|
|
16
|
+
};
|
|
17
|
+
exports.PageDataModule = PageDataModule;
|
|
18
|
+
exports.PageDataModule = PageDataModule = __decorate([
|
|
19
|
+
(0, common_1.Module)({
|
|
20
|
+
imports: [typeorm_1.TypeOrmModule.forFeature([page_data_entity_1.PageDataEntity])],
|
|
21
|
+
providers: [page_data_service_1.PageDataService],
|
|
22
|
+
controllers: [page_data_controller_1.PageDataController],
|
|
23
|
+
exports: [page_data_service_1.PageDataService]
|
|
24
|
+
})
|
|
25
|
+
], PageDataModule);
|
|
2
26
|
//# sourceMappingURL=page-data.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"page-data.module.js","sourceRoot":"","sources":["../../../src/modules/page-data/page-data.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,sEAAiE;AACjE,2DAAsD;AACtD,iEAA4D;AAQrD,IAAM,cAAc,GAApB,MAAM,cAAc;CAAG,CAAA;AAAjB,wCAAc;yBAAd,cAAc;IAN1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,iCAAc,CAAC,CAAC,CAAC;QACrD,SAAS,EAAE,CAAC,mCAAe,CAAC;QAC5B,WAAW,EAAE,CAAC,yCAAkB,CAAC;QACjC,OAAO,EAAE,CAAC,mCAAe,CAAC;KAC3B,CAAC;GACW,cAAc,CAAG"}
|
|
@@ -1,2 +1,70 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.PageDataService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const page_data_entity_1 = require("../../entities/page-data.entity");
|
|
20
|
+
let PageDataService = class PageDataService {
|
|
21
|
+
repo;
|
|
22
|
+
constructor(repo) {
|
|
23
|
+
this.repo = repo;
|
|
24
|
+
}
|
|
25
|
+
async getList(params) {
|
|
26
|
+
const page = Number(params.page) || 1;
|
|
27
|
+
const pageSize = Number(params.pageSize) || 10;
|
|
28
|
+
const where = {};
|
|
29
|
+
if (params.screenKey)
|
|
30
|
+
where.screenKey = params.screenKey;
|
|
31
|
+
const [list, total] = await this.repo.findAndCount({
|
|
32
|
+
where,
|
|
33
|
+
order: { updateTime: 'DESC' },
|
|
34
|
+
skip: (page - 1) * pageSize,
|
|
35
|
+
take: pageSize
|
|
36
|
+
});
|
|
37
|
+
return { list, total };
|
|
38
|
+
}
|
|
39
|
+
async add(params, user) {
|
|
40
|
+
const entity = this.repo.create({
|
|
41
|
+
screenKey: params.screenKey,
|
|
42
|
+
section: params.section || '',
|
|
43
|
+
content: typeof params.content === 'string' ? params.content : JSON.stringify(params.content || {}),
|
|
44
|
+
updatedBy: user?.username || ''
|
|
45
|
+
});
|
|
46
|
+
return this.repo.save(entity);
|
|
47
|
+
}
|
|
48
|
+
async update(params) {
|
|
49
|
+
if (!params.id) {
|
|
50
|
+
throw new Error('缺少 id');
|
|
51
|
+
}
|
|
52
|
+
await this.repo.update(params.id, {
|
|
53
|
+
screenKey: params.screenKey,
|
|
54
|
+
section: params.section,
|
|
55
|
+
content: typeof params.content === 'string' ? params.content : JSON.stringify(params.content || {})
|
|
56
|
+
});
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
async deleteById(id) {
|
|
60
|
+
await this.repo.delete(id);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.PageDataService = PageDataService;
|
|
65
|
+
exports.PageDataService = PageDataService = __decorate([
|
|
66
|
+
(0, common_1.Injectable)(),
|
|
67
|
+
__param(0, (0, typeorm_1.InjectRepository)(page_data_entity_1.PageDataEntity)),
|
|
68
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
69
|
+
], PageDataService);
|
|
2
70
|
//# sourceMappingURL=page-data.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"page-data.service.js","sourceRoot":"","sources":["../../../src/modules/page-data/page-data.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,qCAAqC;AACrC,sEAAiE;AAO1D,IAAM,eAAe,GAArB,MAAM,eAAe;IAGP;IAFnB,YAEmB,IAAgC;QAAhC,SAAI,GAAJ,IAAI,CAA4B;IAChD,CAAC;IAGJ,KAAK,CAAC,OAAO,CAAC,MAAgE;QAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAQ,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACzD,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YACjD,KAAK;YACL,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;YAC7B,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;YAC3B,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAGD,KAAK,CAAC,GAAG,CAAC,MAAW,EAAE,IAA4B;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACnG,SAAS,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;SAChC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,MAAW;QACtB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YAChC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;SACpG,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAlDY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,iCAAc,CAAC,CAAA;qCACV,oBAAU;GAHxB,eAAe,CAkD3B"}
|
|
@@ -1,2 +1,62 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ScreenConfigController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const screen_config_service_1 = require("./screen-config.service");
|
|
19
|
+
const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
|
|
20
|
+
let ScreenConfigController = class ScreenConfigController {
|
|
21
|
+
service;
|
|
22
|
+
constructor(service) {
|
|
23
|
+
this.service = service;
|
|
24
|
+
}
|
|
25
|
+
ensureAdmin(req) {
|
|
26
|
+
if (req.user?.role !== 'admin' && req.user?.role !== 'superadmin') {
|
|
27
|
+
throw new common_1.ForbiddenException('仅管理员可操作大屏配置');
|
|
28
|
+
}
|
|
29
|
+
return { id: req.user.id, username: req.user.username };
|
|
30
|
+
}
|
|
31
|
+
list() {
|
|
32
|
+
return this.service.list();
|
|
33
|
+
}
|
|
34
|
+
update(key, dto, req) {
|
|
35
|
+
this.ensureAdmin(req);
|
|
36
|
+
return this.service.update(key, dto);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.ScreenConfigController = ScreenConfigController;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, common_1.Get)('list'),
|
|
42
|
+
__metadata("design:type", Function),
|
|
43
|
+
__metadata("design:paramtypes", []),
|
|
44
|
+
__metadata("design:returntype", void 0)
|
|
45
|
+
], ScreenConfigController.prototype, "list", null);
|
|
46
|
+
__decorate([
|
|
47
|
+
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
|
|
48
|
+
(0, swagger_1.ApiBearerAuth)(),
|
|
49
|
+
(0, common_1.Put)(':key'),
|
|
50
|
+
__param(0, (0, common_1.Param)('key')),
|
|
51
|
+
__param(1, (0, common_1.Body)()),
|
|
52
|
+
__param(2, (0, common_1.Request)()),
|
|
53
|
+
__metadata("design:type", Function),
|
|
54
|
+
__metadata("design:paramtypes", [String, Object, Object]),
|
|
55
|
+
__metadata("design:returntype", void 0)
|
|
56
|
+
], ScreenConfigController.prototype, "update", null);
|
|
57
|
+
exports.ScreenConfigController = ScreenConfigController = __decorate([
|
|
58
|
+
(0, swagger_1.ApiTags)('screen 大屏配置'),
|
|
59
|
+
(0, common_1.Controller)('screen'),
|
|
60
|
+
__metadata("design:paramtypes", [screen_config_service_1.ScreenConfigService])
|
|
61
|
+
], ScreenConfigController);
|
|
2
62
|
//# sourceMappingURL=screen-config.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
{"version":3,"file":"screen-config.controller.js","sourceRoot":"","sources":["../../../src/modules/screen-config/screen-config.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,6CAAyD;AACzD,mEAA8D;AAE9D,2DAAsD;AAI/C,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAGrD,WAAW,CAAC,GAAQ;QAC1B,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAClE,MAAM,IAAI,2BAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1D,CAAC;IAOD,IAAI;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAMD,MAAM,CACU,GAAW,EACjB,GAAgC,EAC7B,GAAQ;QAEnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;CACF,CAAA;AAhCY,wDAAsB;AAgBjC;IADC,IAAA,YAAG,EAAC,MAAM,CAAC;;;;kDAGX;AAMD;IAHC,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,uBAAa,GAAE;IACf,IAAA,YAAG,EAAC,MAAM,CAAC;IAET,WAAA,IAAA,cAAK,EAAC,KAAK,CAAC,CAAA;IACZ,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,gBAAO,GAAE,CAAA;;;;oDAIX;iCA/BU,sBAAsB;IAFlC,IAAA,iBAAO,EAAC,aAAa,CAAC;IACtB,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEmB,2CAAmB;GAD9C,sBAAsB,CAgClC"}
|