@nger/fk-upload 1.0.8 → 1.0.9
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/dist/entities/fk-download-task.entity.d.ts +2 -0
- package/dist/entities/fk-download-task.entity.js +15 -0
- package/dist/entities/fk-login-account.entity.d.ts +1 -0
- package/dist/entities/fk-login-account.entity.js +10 -1
- package/dist/fk-upload.module.js +13 -7
- package/dist/main.js +14 -1
- package/dist/mq-runner.d.ts +5 -0
- package/dist/mq-runner.js +21 -0
- package/dist/static/task-manage.d.ts +6 -0
- package/dist/static/task-manage.js +35 -0
- package/dist/templates/add-task.d.ts +3 -3
- package/dist/templates/add-task.js +6 -6
- package/dist/templates/component.js +3 -0
- package/dist/templates/download-task.d.ts +0 -2
- package/dist/templates/download-task.js +1 -57
- package/dist/templates/setting.d.ts +10 -0
- package/dist/templates/setting.js +85 -0
- package/dist/templates/task-manage.d.ts +8 -1
- package/dist/templates/task-manage.js +52 -10
- package/dist/templates/task.service.d.ts +66 -0
- package/dist/templates/task.service.js +451 -0
- package/dist/templates/upload.service.d.ts +5 -13
- package/dist/templates/upload.service.js +14 -262
- package/docs.md +34 -0
- package/package.json +5 -1
- package/pnpm-lock.yaml +8 -0
@@ -20,8 +20,10 @@ let FkDownloadTaskEntity = class FkDownloadTaskEntity {
|
|
20
20
|
path;
|
21
21
|
uploadSize;
|
22
22
|
uploadUrl;
|
23
|
+
uploadStatus;
|
23
24
|
loginId;
|
24
25
|
fileMd5;
|
26
|
+
topicId;
|
25
27
|
};
|
26
28
|
__decorate([
|
27
29
|
(0, typeorm_1.PrimaryColumn)(),
|
@@ -62,6 +64,12 @@ __decorate([
|
|
62
64
|
}),
|
63
65
|
__metadata("design:type", String)
|
64
66
|
], FkDownloadTaskEntity.prototype, "uploadUrl", void 0);
|
67
|
+
__decorate([
|
68
|
+
(0, typeorm_1.Column)({
|
69
|
+
default: 0
|
70
|
+
}),
|
71
|
+
__metadata("design:type", Number)
|
72
|
+
], FkDownloadTaskEntity.prototype, "uploadStatus", void 0);
|
65
73
|
__decorate([
|
66
74
|
(0, typeorm_1.Column)({
|
67
75
|
default: 0
|
@@ -75,6 +83,13 @@ __decorate([
|
|
75
83
|
}),
|
76
84
|
__metadata("design:type", String)
|
77
85
|
], FkDownloadTaskEntity.prototype, "fileMd5", void 0);
|
86
|
+
__decorate([
|
87
|
+
(0, typeorm_1.Column)({
|
88
|
+
name: 'topic_id',
|
89
|
+
default: 0
|
90
|
+
}),
|
91
|
+
__metadata("design:type", Number)
|
92
|
+
], FkDownloadTaskEntity.prototype, "topicId", void 0);
|
78
93
|
FkDownloadTaskEntity = __decorate([
|
79
94
|
(0, typeorm_1.Entity)({
|
80
95
|
name: 'nger_fk_download_task'
|
@@ -14,6 +14,7 @@ const typeorm_1 = require("typeorm");
|
|
14
14
|
let FkLoginAccountEntity = class FkLoginAccountEntity {
|
15
15
|
fkLoginAccountId;
|
16
16
|
uniacid;
|
17
|
+
topicId;
|
17
18
|
fkLoginId;
|
18
19
|
};
|
19
20
|
__decorate([
|
@@ -27,7 +28,15 @@ __decorate([
|
|
27
28
|
__metadata("design:type", Number)
|
28
29
|
], FkLoginAccountEntity.prototype, "uniacid", void 0);
|
29
30
|
__decorate([
|
30
|
-
(0, typeorm_1.Column)(
|
31
|
+
(0, typeorm_1.Column)({
|
32
|
+
name: 'topic_id'
|
33
|
+
}),
|
34
|
+
__metadata("design:type", Number)
|
35
|
+
], FkLoginAccountEntity.prototype, "topicId", void 0);
|
36
|
+
__decorate([
|
37
|
+
(0, typeorm_1.Column)({
|
38
|
+
name: 'fk_login_id'
|
39
|
+
}),
|
31
40
|
__metadata("design:type", Number)
|
32
41
|
], FkLoginAccountEntity.prototype, "fkLoginId", void 0);
|
33
42
|
FkLoginAccountEntity = __decorate([
|
package/dist/fk-upload.module.js
CHANGED
@@ -10,15 +10,16 @@ exports.FkUploadModule = void 0;
|
|
10
10
|
const core_1 = require("@nger/core");
|
11
11
|
const typeorm_1 = require("@nger/typeorm");
|
12
12
|
const entities_1 = require("./entities");
|
13
|
-
const fk_login_account_entity_1 = require("./entities/fk-login-account.entity");
|
14
13
|
const login_controller_1 = require("./login.controller");
|
14
|
+
const mq_runner_1 = require("./mq-runner");
|
15
15
|
const add_fk_login_1 = require("./templates/add-fk-login");
|
16
16
|
const add_task_1 = require("./templates/add-task");
|
17
17
|
const code_1 = require("./templates/code");
|
18
|
-
const download_task_1 = require("./templates/download-task");
|
19
18
|
const error_1 = require("./templates/error");
|
20
19
|
const help_1 = require("./templates/help");
|
20
|
+
const setting_1 = require("./templates/setting");
|
21
21
|
const task_manage_1 = require("./templates/task-manage");
|
22
|
+
const task_service_1 = require("./templates/task.service");
|
22
23
|
const upload_1 = require("./templates/upload");
|
23
24
|
const upload_task_1 = require("./templates/upload-task");
|
24
25
|
const upload_service_1 = require("./templates/upload.service");
|
@@ -30,7 +31,13 @@ FkUploadModule = __decorate([
|
|
30
31
|
(0, core_1.Module)({
|
31
32
|
providers: [
|
32
33
|
urlSafeBase64Decode_1.UrlSafeBase64,
|
33
|
-
upload_service_1.UploadService
|
34
|
+
upload_service_1.UploadService,
|
35
|
+
task_service_1.TaskService,
|
36
|
+
{
|
37
|
+
provide: core_1.LoadAddon,
|
38
|
+
useFactory: () => new mq_runner_1.MqRunner(),
|
39
|
+
multi: true
|
40
|
+
}
|
34
41
|
],
|
35
42
|
controllers: [
|
36
43
|
code_1.FkUploadCodeController,
|
@@ -38,19 +45,18 @@ FkUploadModule = __decorate([
|
|
38
45
|
verify_1.VerifyController,
|
39
46
|
help_1.HelpController,
|
40
47
|
upload_1.UploadController,
|
41
|
-
download_task_1.DownloadTaskController,
|
42
48
|
upload_task_1.UploadTaskController,
|
43
49
|
add_fk_login_1.AddFkLoginController,
|
44
50
|
task_manage_1.TaskManageController,
|
45
51
|
add_task_1.AddTaskController,
|
46
|
-
error_1.ErrorController
|
52
|
+
error_1.ErrorController,
|
53
|
+
setting_1.SettingController
|
47
54
|
],
|
48
55
|
imports: [
|
49
56
|
typeorm_1.TypeormModule.forFeature([
|
50
57
|
entities_1.FkLoginEntity,
|
51
58
|
entities_1.FkLoginCookieEntity,
|
52
|
-
entities_1.FkDownloadTaskEntity
|
53
|
-
fk_login_account_entity_1.FkLoginAccountEntity
|
59
|
+
entities_1.FkDownloadTaskEntity
|
54
60
|
])
|
55
61
|
]
|
56
62
|
})
|
package/dist/main.js
CHANGED
@@ -16,6 +16,11 @@ const http_1 = require("@nger/http");
|
|
16
16
|
const typeorm_1 = require("@nger/typeorm");
|
17
17
|
const api_1 = require("@nger/api");
|
18
18
|
const utils_1 = require("@nger/utils");
|
19
|
+
const ws_1 = require("@nger/ws");
|
20
|
+
const redis_1 = require("@nger/redis");
|
21
|
+
const rabbitmq_1 = require("@nger/rabbitmq");
|
22
|
+
const schedule_1 = require("@nger/schedule");
|
23
|
+
const w7_1 = require("@nger/w7");
|
19
24
|
let AppModule = class AppModule {
|
20
25
|
};
|
21
26
|
AppModule = __decorate([
|
@@ -25,14 +30,22 @@ AppModule = __decorate([
|
|
25
30
|
useValue: process.cwd()
|
26
31
|
}],
|
27
32
|
imports: [
|
33
|
+
w7_1.W7Module,
|
28
34
|
fk_upload_module_1.FkUploadModule,
|
29
35
|
http_1.HttpModule.forEnv(),
|
30
36
|
typeorm_1.TypeormModule.forEnv(),
|
37
|
+
ws_1.WsModule.forEnv(),
|
38
|
+
redis_1.RedisModule.forEnv(),
|
39
|
+
rabbitmq_1.RabbitMqModule.forEnv(),
|
31
40
|
api_1.ApiModule,
|
32
|
-
utils_1.UtilsModule
|
41
|
+
utils_1.UtilsModule,
|
42
|
+
schedule_1.ScheduleModule
|
33
43
|
],
|
34
44
|
controllers: []
|
35
45
|
})
|
36
46
|
], AppModule);
|
37
47
|
exports.AppModule = AppModule;
|
38
48
|
(0, core_1.platformCore)().bootstrap(AppModule);
|
49
|
+
process.on('uncaughtException', (err) => {
|
50
|
+
console.log(err.message);
|
51
|
+
});
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.MqRunner = void 0;
|
4
|
+
const core_1 = require("@nger/core");
|
5
|
+
const task_service_1 = require("./templates/task.service");
|
6
|
+
let i = 0;
|
7
|
+
class MqRunner extends core_1.LoadAddon {
|
8
|
+
constructor() {
|
9
|
+
super(`mq runner`);
|
10
|
+
}
|
11
|
+
async handle(injector, next) {
|
12
|
+
const task = injector.get(task_service_1.TaskService);
|
13
|
+
await task.receiveDownloadTask();
|
14
|
+
await task.receiveUploadTask();
|
15
|
+
await task.receiveEffectTask();
|
16
|
+
await task.receiveScheduleTask();
|
17
|
+
if (next)
|
18
|
+
await next();
|
19
|
+
}
|
20
|
+
}
|
21
|
+
exports.MqRunner = MqRunner;
|
@@ -0,0 +1,6 @@
|
|
1
|
+
declare const url: URL;
|
2
|
+
declare const WS_PORT: any;
|
3
|
+
declare const socket: WebSocket;
|
4
|
+
declare const CREATE_TASK = "@nger/fk-upload/create-task";
|
5
|
+
declare const CREATE_TASK_DOWNLOADING = "@nger/fk-upload/downloading";
|
6
|
+
declare const CREATE_TASK_UPLOADING = "@nger/fk-upload/uploading";
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
const url = new URL(window.location.href);
|
3
|
+
const WS_PORT = Reflect.get(window, 'WS_PORT');
|
4
|
+
const socket = new WebSocket(`ws://${url.hostname}:${WS_PORT}`);
|
5
|
+
const CREATE_TASK = `@nger/fk-upload/create-task`;
|
6
|
+
const CREATE_TASK_DOWNLOADING = `@nger/fk-upload/downloading`;
|
7
|
+
const CREATE_TASK_UPLOADING = `@nger/fk-upload/uploading`;
|
8
|
+
socket.onopen = () => {
|
9
|
+
socket.onmessage = (msg) => {
|
10
|
+
const data = msg.data;
|
11
|
+
const payload = JSON.parse(data);
|
12
|
+
if (payload.action === CREATE_TASK_DOWNLOADING) {
|
13
|
+
const id = payload.data.filename + '-size';
|
14
|
+
const item = document.getElementById(id);
|
15
|
+
const total = document.getElementById(`${payload.data.filename}-total`);
|
16
|
+
if (item)
|
17
|
+
item.innerHTML = `${payload.data.size}`;
|
18
|
+
if (total) {
|
19
|
+
total.innerHTML = `${payload.data.total}`;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
else if (payload.action === CREATE_TASK_UPLOADING) {
|
23
|
+
const id = payload.data.filename + '-upload-size';
|
24
|
+
const item = document.getElementById(id);
|
25
|
+
const uploadUrlHtml = document.getElementById(`${payload.data.filename}-upload-url`);
|
26
|
+
if (item)
|
27
|
+
item.innerHTML = `${payload.data.uploadSize}`;
|
28
|
+
if (uploadUrlHtml && payload.data.uploadUrl)
|
29
|
+
uploadUrlHtml.innerHTML = `${payload.data.uploadUrl}`;
|
30
|
+
}
|
31
|
+
else {
|
32
|
+
console.log(payload);
|
33
|
+
}
|
34
|
+
};
|
35
|
+
};
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import { Db } from '@nger/typeorm';
|
2
|
-
import { UploadService } from './upload.service';
|
3
2
|
import { Context } from 'koa';
|
3
|
+
import { TaskService } from './task.service';
|
4
4
|
export declare class AddTaskController {
|
5
5
|
private db;
|
6
|
-
private
|
7
|
-
constructor(db: Db,
|
6
|
+
private task;
|
7
|
+
constructor(db: Db, task: TaskService);
|
8
8
|
postAddTask(post: any, ctx: Context): Promise<void>;
|
9
9
|
addTask(): JSX.Element;
|
10
10
|
}
|
@@ -22,19 +22,19 @@ const component_1 = require("./component");
|
|
22
22
|
const react_1 = __importDefault(require("react"));
|
23
23
|
const typeorm_1 = require("@nger/typeorm");
|
24
24
|
const entities_1 = require("../entities");
|
25
|
-
const
|
25
|
+
const task_service_1 = require("./task.service");
|
26
26
|
let AddTaskController = class AddTaskController {
|
27
27
|
db;
|
28
|
-
|
29
|
-
constructor(db,
|
28
|
+
task;
|
29
|
+
constructor(db, task) {
|
30
30
|
this.db = db;
|
31
|
-
this.
|
31
|
+
this.task = task;
|
32
32
|
}
|
33
33
|
async postAddTask(post, ctx) {
|
34
34
|
const { url, we7Username } = post;
|
35
35
|
const loginEntity = await this.db.manager.findOne(entities_1.FkLoginEntity, { where: { w7Username: we7Username } });
|
36
36
|
if (loginEntity) {
|
37
|
-
await this.
|
37
|
+
await this.task.createDownLoadTask(url, loginEntity.fkLoginId, 0);
|
38
38
|
}
|
39
39
|
ctx.redirect('/@nger/fk-upload/task-manage');
|
40
40
|
return;
|
@@ -71,6 +71,6 @@ __decorate([
|
|
71
71
|
], AddTaskController.prototype, "addTask", null);
|
72
72
|
AddTaskController = __decorate([
|
73
73
|
(0, core_1.Controller)('@nger/fk-upload'),
|
74
|
-
__metadata("design:paramtypes", [typeorm_1.Db,
|
74
|
+
__metadata("design:paramtypes", [typeorm_1.Db, task_service_1.TaskService])
|
75
75
|
], AddTaskController);
|
76
76
|
exports.AddTaskController = AddTaskController;
|
@@ -18,6 +18,9 @@ function Nav(props) {
|
|
18
18
|
}, {
|
19
19
|
link: '/@nger/fk-upload/add-task',
|
20
20
|
title: 'add task'
|
21
|
+
}, {
|
22
|
+
link: '/@nger/fk-upload/setting',
|
23
|
+
title: 'setting'
|
21
24
|
}];
|
22
25
|
return react_1.default.createElement("div", null,
|
23
26
|
react_1.default.createElement("link", { href: "https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css", rel: "stylesheet" }),
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Db } from '@nger/typeorm';
|
2
|
-
import { WsPluginContext } from '@nger/ws';
|
3
2
|
import { Context } from 'koa';
|
4
3
|
import { UploadService } from './upload.service';
|
5
4
|
export declare const CREATE_TASK_DOWNLOADING = "@nger/fk-upload/create-task/downloading";
|
@@ -8,5 +7,4 @@ export declare class DownloadTaskController {
|
|
8
7
|
private upload;
|
9
8
|
constructor(db: Db, upload: UploadService);
|
10
9
|
createTask(url: string, ctx: Context): Promise<void>;
|
11
|
-
createTaskWs(url: string, ctx: WsPluginContext): Promise<import("rxjs").Subscription>;
|
12
10
|
}
|
@@ -11,18 +11,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
13
13
|
};
|
14
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
16
|
-
};
|
17
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
18
15
|
exports.DownloadTaskController = exports.CREATE_TASK_DOWNLOADING = void 0;
|
19
16
|
const core_1 = require("@nger/core");
|
20
17
|
const http_1 = require("@nger/http");
|
21
18
|
const typeorm_1 = require("@nger/typeorm");
|
22
|
-
const entities_1 = require("../entities");
|
23
|
-
const rxjs_1 = require("rxjs");
|
24
|
-
const ws_1 = require("@nger/ws");
|
25
|
-
const md5_file_1 = __importDefault(require("md5-file"));
|
26
19
|
const upload_service_1 = require("./upload.service");
|
27
20
|
// md5-file
|
28
21
|
exports.CREATE_TASK_DOWNLOADING = `@nger/fk-upload/create-task/downloading`;
|
@@ -34,51 +27,10 @@ let DownloadTaskController = class DownloadTaskController {
|
|
34
27
|
this.upload = upload;
|
35
28
|
}
|
36
29
|
async createTask(url, ctx) {
|
37
|
-
|
38
|
-
observable.listen.pipe((0, rxjs_1.throttleTime)(1000), (0, rxjs_1.switchMap)(async (res) => {
|
39
|
-
const exist = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: observable.filename } });
|
40
|
-
if (exist) {
|
41
|
-
await this.db.manager.update(entities_1.FkDownloadTaskEntity, exist.filename, { size: res.size });
|
42
|
-
}
|
43
|
-
else {
|
44
|
-
await this.db.manager.save(entities_1.FkDownloadTaskEntity, res);
|
45
|
-
}
|
46
|
-
return res;
|
47
|
-
})).subscribe({
|
48
|
-
next: () => { },
|
49
|
-
complete: async () => {
|
50
|
-
const exist = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: observable.filename } });
|
51
|
-
const md5 = await (0, md5_file_1.default)(exist.path);
|
52
|
-
await this.db.manager.update(entities_1.FkDownloadTaskEntity, observable.filename, { status: 1, fileMd5: md5 });
|
53
|
-
}
|
54
|
-
});
|
30
|
+
this.upload.createDownLoadTask(url);
|
55
31
|
ctx.redirect('/@nger/fk-upload/help');
|
56
32
|
return;
|
57
33
|
}
|
58
|
-
async createTaskWs(url, ctx) {
|
59
|
-
const observable = await this.upload.createObservable(url);
|
60
|
-
return observable.listen.pipe((0, rxjs_1.throttleTime)(1000), (0, rxjs_1.switchMap)(async (res) => {
|
61
|
-
const exist = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: observable.filename } });
|
62
|
-
if (exist) {
|
63
|
-
await this.db.manager.update(entities_1.FkDownloadTaskEntity, exist.filename, { size: res.size });
|
64
|
-
}
|
65
|
-
else {
|
66
|
-
await this.db.manager.save(entities_1.FkDownloadTaskEntity, res);
|
67
|
-
}
|
68
|
-
ctx.send({
|
69
|
-
action: exports.CREATE_TASK_DOWNLOADING,
|
70
|
-
data: res
|
71
|
-
});
|
72
|
-
return res;
|
73
|
-
})).subscribe({
|
74
|
-
next: () => { },
|
75
|
-
complete: async () => {
|
76
|
-
const exist = await this.db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: observable.filename } });
|
77
|
-
const md5 = await (0, md5_file_1.default)(exist.path);
|
78
|
-
await this.db.manager.update(entities_1.FkDownloadTaskEntity, observable.filename, { status: 1, fileMd5: md5 });
|
79
|
-
}
|
80
|
-
});
|
81
|
-
}
|
82
34
|
};
|
83
35
|
__decorate([
|
84
36
|
(0, http_1.Get)('create-task'),
|
@@ -88,14 +40,6 @@ __decorate([
|
|
88
40
|
__metadata("design:paramtypes", [String, Object]),
|
89
41
|
__metadata("design:returntype", Promise)
|
90
42
|
], DownloadTaskController.prototype, "createTask", null);
|
91
|
-
__decorate([
|
92
|
-
(0, ws_1.On)(`create-task`),
|
93
|
-
__param(0, (0, http_1.Body)('url')),
|
94
|
-
__param(1, (0, core_1.Inject)(ws_1.WsPluginContext)),
|
95
|
-
__metadata("design:type", Function),
|
96
|
-
__metadata("design:paramtypes", [String, ws_1.WsPluginContext]),
|
97
|
-
__metadata("design:returntype", Promise)
|
98
|
-
], DownloadTaskController.prototype, "createTaskWs", null);
|
99
43
|
DownloadTaskController = __decorate([
|
100
44
|
(0, core_1.Controller)('@nger/fk-upload'),
|
101
45
|
__metadata("design:paramtypes", [typeorm_1.Db, upload_service_1.UploadService])
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { TaskService } from './task.service';
|
2
|
+
import { Client } from '@nger/redis';
|
3
|
+
import { Context } from 'koa';
|
4
|
+
export declare class SettingController {
|
5
|
+
private task;
|
6
|
+
private redis;
|
7
|
+
constructor(task: TaskService, redis: Client);
|
8
|
+
saveSetting(body: any, ctx: Context): void;
|
9
|
+
setting(): Promise<JSX.Element>;
|
10
|
+
}
|
@@ -0,0 +1,85 @@
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
16
|
+
};
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
+
exports.SettingController = void 0;
|
19
|
+
const core_1 = require("@nger/core");
|
20
|
+
const http_1 = require("@nger/http");
|
21
|
+
const react_1 = __importDefault(require("react"));
|
22
|
+
const component_1 = require("./component");
|
23
|
+
const task_service_1 = require("./task.service");
|
24
|
+
const redis_1 = require("@nger/redis");
|
25
|
+
let SettingController = class SettingController {
|
26
|
+
task;
|
27
|
+
redis;
|
28
|
+
constructor(task, redis) {
|
29
|
+
this.task = task;
|
30
|
+
this.redis = redis;
|
31
|
+
}
|
32
|
+
saveSetting(body, ctx) {
|
33
|
+
const task = {
|
34
|
+
name: body.name,
|
35
|
+
rule: body.rule
|
36
|
+
};
|
37
|
+
this.task.addScheduleTask(task);
|
38
|
+
this.redis.set(`setting`, JSON.stringify(task));
|
39
|
+
ctx.redirect(`/@nger/fk-upload/setting`);
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
async setting() {
|
43
|
+
const setting = await new Promise((resolve, reject) => {
|
44
|
+
this.redis.get(`setting`, (err, reply) => {
|
45
|
+
if (err)
|
46
|
+
return reject(err);
|
47
|
+
if (reply)
|
48
|
+
resolve(JSON.parse(reply));
|
49
|
+
resolve({});
|
50
|
+
});
|
51
|
+
});
|
52
|
+
return react_1.default.createElement(component_1.Nav, { active: 4 },
|
53
|
+
react_1.default.createElement("div", { className: "card" },
|
54
|
+
react_1.default.createElement("div", { className: "card-body" },
|
55
|
+
react_1.default.createElement("form", { action: "/@nger/fk-upload/setting", method: 'post', encType: 'application/x-www-form-urlencoded' },
|
56
|
+
react_1.default.createElement("div", { className: "form-group" },
|
57
|
+
react_1.default.createElement("label", { htmlFor: "name" }, "name"),
|
58
|
+
react_1.default.createElement("input", { type: "text", className: 'form-control', onChange: e => { }, value: setting.name, id: "name", name: "name" })),
|
59
|
+
react_1.default.createElement("div", { className: "form-group" },
|
60
|
+
react_1.default.createElement("label", { htmlFor: "rule" }, "rule"),
|
61
|
+
react_1.default.createElement("input", { type: "text", className: 'form-control', onChange: e => { }, value: setting.rule, id: "rule", name: "rule" })),
|
62
|
+
react_1.default.createElement("div", { className: "form-group" },
|
63
|
+
react_1.default.createElement("button", { type: "submit", className: 'btn btn-primary' }, "save"),
|
64
|
+
react_1.default.createElement("button", { type: "reset", className: 'btn' }, "reset"))))));
|
65
|
+
}
|
66
|
+
};
|
67
|
+
__decorate([
|
68
|
+
(0, http_1.Post)('setting'),
|
69
|
+
__param(0, (0, http_1.Body)()),
|
70
|
+
__param(1, (0, core_1.Inject)(http_1.CONTEXT)),
|
71
|
+
__metadata("design:type", Function),
|
72
|
+
__metadata("design:paramtypes", [Object, Object]),
|
73
|
+
__metadata("design:returntype", void 0)
|
74
|
+
], SettingController.prototype, "saveSetting", null);
|
75
|
+
__decorate([
|
76
|
+
(0, http_1.Get)(`setting`),
|
77
|
+
__metadata("design:type", Function),
|
78
|
+
__metadata("design:paramtypes", []),
|
79
|
+
__metadata("design:returntype", Promise)
|
80
|
+
], SettingController.prototype, "setting", null);
|
81
|
+
SettingController = __decorate([
|
82
|
+
(0, core_1.Controller)(`@nger/fk-upload`),
|
83
|
+
__metadata("design:paramtypes", [task_service_1.TaskService, redis_1.Client])
|
84
|
+
], SettingController);
|
85
|
+
exports.SettingController = SettingController;
|
@@ -1,6 +1,13 @@
|
|
1
|
+
import { Config } from '@nger/core';
|
1
2
|
import { Db } from '@nger/typeorm';
|
3
|
+
import { UploadService } from './upload.service';
|
4
|
+
import { Context } from 'koa';
|
2
5
|
export declare class TaskManageController {
|
3
6
|
private db;
|
4
|
-
|
7
|
+
private config;
|
8
|
+
private upload;
|
9
|
+
constructor(db: Db, config: Config, upload: UploadService);
|
10
|
+
taskContinue(filename: string, ctx: Context): void;
|
5
11
|
taskManage(): Promise<JSX.Element>;
|
12
|
+
staticTaskManage(ctx: Context): string;
|
6
13
|
}
|
@@ -8,6 +8,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
10
|
};
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
13
|
+
};
|
11
14
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
15
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
16
|
};
|
@@ -19,10 +22,13 @@ const typeorm_1 = require("@nger/typeorm");
|
|
19
22
|
const react_1 = __importDefault(require("react"));
|
20
23
|
const entities_1 = require("../entities");
|
21
24
|
const component_1 = require("./component");
|
25
|
+
const fs_extra_1 = require("fs-extra");
|
26
|
+
const path_1 = require("path");
|
27
|
+
const upload_service_1 = require("./upload.service");
|
22
28
|
function getStatusTitle(status) {
|
23
29
|
switch (status) {
|
24
30
|
case 0:
|
25
|
-
return '
|
31
|
+
return 'downloading';
|
26
32
|
case 1:
|
27
33
|
return 'uploading';
|
28
34
|
default:
|
@@ -31,12 +37,27 @@ function getStatusTitle(status) {
|
|
31
37
|
}
|
32
38
|
let TaskManageController = class TaskManageController {
|
33
39
|
db;
|
34
|
-
|
40
|
+
config;
|
41
|
+
upload;
|
42
|
+
constructor(db, config, upload) {
|
35
43
|
this.db = db;
|
44
|
+
this.config = config;
|
45
|
+
this.upload = upload;
|
46
|
+
}
|
47
|
+
taskContinue(filename, ctx) {
|
48
|
+
if (filename)
|
49
|
+
this.upload.continueTask(decodeURIComponent(filename));
|
50
|
+
ctx.redirect(`/@nger/fk-upload/task-manage`);
|
51
|
+
return;
|
36
52
|
}
|
37
53
|
async taskManage() {
|
38
54
|
const tasks = await this.db.manager.find(entities_1.FkDownloadTaskEntity, { where: {}, order: { loginId: "DESC" } });
|
39
55
|
return react_1.default.createElement(component_1.Nav, { active: 2 },
|
56
|
+
react_1.default.createElement("script", { dangerouslySetInnerHTML: {
|
57
|
+
__html: `
|
58
|
+
window.WS_PORT = ${this.config.get(`WS_PORT`)};
|
59
|
+
`
|
60
|
+
} }),
|
40
61
|
react_1.default.createElement("div", { className: "card" },
|
41
62
|
react_1.default.createElement("div", { className: "card-body" },
|
42
63
|
react_1.default.createElement("table", { className: 'table' },
|
@@ -50,27 +71,48 @@ let TaskManageController = class TaskManageController {
|
|
50
71
|
react_1.default.createElement("td", { width: '240px' }, "upload url"),
|
51
72
|
react_1.default.createElement("td", null))),
|
52
73
|
react_1.default.createElement("tbody", null, tasks.map((task, key) => {
|
74
|
+
const _continue = `/@nger/fk-upload/task-continue?filename=${encodeURIComponent(task.filename)}`;
|
53
75
|
return react_1.default.createElement("tr", { key: key },
|
54
76
|
react_1.default.createElement("td", null, task.filename),
|
55
77
|
react_1.default.createElement("td", null, getStatusTitle(task.status)),
|
56
|
-
react_1.default.createElement("td",
|
57
|
-
react_1.default.createElement("td",
|
58
|
-
react_1.default.createElement("td",
|
59
|
-
react_1.default.createElement("td",
|
78
|
+
react_1.default.createElement("td", { id: task.filename + '-total' }, task.totalSize),
|
79
|
+
react_1.default.createElement("td", { id: task.filename + '-size' }, task.size),
|
80
|
+
react_1.default.createElement("td", { id: task.filename + '-upload-size' }, task.uploadSize),
|
81
|
+
react_1.default.createElement("td", { id: task.filename + '-upload-url' }, task.uploadUrl),
|
60
82
|
react_1.default.createElement("td", null,
|
61
|
-
react_1.default.createElement("a", { href:
|
62
|
-
|
63
|
-
|
83
|
+
react_1.default.createElement("a", { href: _continue, className: 'btn' }, "continue")));
|
84
|
+
}))))),
|
85
|
+
react_1.default.createElement("script", { src: "/@nger/fk-upload/static/task-manage.js?t=" + new Date().getTime() }));
|
86
|
+
}
|
87
|
+
staticTaskManage(ctx) {
|
88
|
+
ctx.type = 'js';
|
89
|
+
const content = (0, fs_extra_1.readFileSync)((0, path_1.join)(__dirname, '../static/task-manage.js')).toString('utf-8');
|
90
|
+
return content;
|
64
91
|
}
|
65
92
|
};
|
93
|
+
__decorate([
|
94
|
+
(0, http_1.Get)('task-continue'),
|
95
|
+
__param(0, (0, http_1.Query)('filename')),
|
96
|
+
__param(1, (0, core_1.Inject)(http_1.CONTEXT)),
|
97
|
+
__metadata("design:type", Function),
|
98
|
+
__metadata("design:paramtypes", [String, Object]),
|
99
|
+
__metadata("design:returntype", void 0)
|
100
|
+
], TaskManageController.prototype, "taskContinue", null);
|
66
101
|
__decorate([
|
67
102
|
(0, http_1.Get)('task-manage'),
|
68
103
|
__metadata("design:type", Function),
|
69
104
|
__metadata("design:paramtypes", []),
|
70
105
|
__metadata("design:returntype", Promise)
|
71
106
|
], TaskManageController.prototype, "taskManage", null);
|
107
|
+
__decorate([
|
108
|
+
(0, http_1.Get)('static/task-manage.js'),
|
109
|
+
__param(0, (0, core_1.Inject)(http_1.CONTEXT)),
|
110
|
+
__metadata("design:type", Function),
|
111
|
+
__metadata("design:paramtypes", [Object]),
|
112
|
+
__metadata("design:returntype", void 0)
|
113
|
+
], TaskManageController.prototype, "staticTaskManage", null);
|
72
114
|
TaskManageController = __decorate([
|
73
115
|
(0, core_1.Controller)(`@nger/fk-upload`),
|
74
|
-
__metadata("design:paramtypes", [typeorm_1.Db])
|
116
|
+
__metadata("design:paramtypes", [typeorm_1.Db, core_1.Config, upload_service_1.UploadService])
|
75
117
|
], TaskManageController);
|
76
118
|
exports.TaskManageController = TaskManageController;
|