@nger/fk-upload 1.0.8 → 1.0.11

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.
@@ -7,6 +7,8 @@ export declare class FkDownloadTaskEntity {
7
7
  path: string;
8
8
  uploadSize: number;
9
9
  uploadUrl: string;
10
+ uploadStatus: number;
10
11
  loginId: number;
11
12
  fileMd5: string;
13
+ topicId: number;
12
14
  }
@@ -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'
@@ -1,5 +1,6 @@
1
1
  export declare class FkLoginAccountEntity {
2
2
  fkLoginAccountId: number;
3
3
  uniacid: number;
4
+ topicId: number;
4
5
  fkLoginId: number;
5
6
  }
@@ -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([
@@ -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,25 @@ 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
+ });
52
+ process.on('unhandledRejection', (reason, promisen) => {
53
+ promisen.catch((e) => console.log(e.message));
54
+ });
@@ -0,0 +1,5 @@
1
+ import { Injector, LoadAddon, Next } from '@nger/core';
2
+ export declare class MqRunner extends LoadAddon {
3
+ constructor();
4
+ handle(injector: Injector, next?: Next): Promise<void>;
5
+ }
@@ -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 upload;
7
- constructor(db: Db, upload: UploadService);
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 upload_service_1 = require("./upload.service");
25
+ const task_service_1 = require("./task.service");
26
26
  let AddTaskController = class AddTaskController {
27
27
  db;
28
- upload;
29
- constructor(db, upload) {
28
+ task;
29
+ constructor(db, task) {
30
30
  this.db = db;
31
- this.upload = upload;
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.upload.createDownLoadTask(url, loginEntity.fkLoginId);
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, upload_service_1.UploadService])
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
- const observable = await this.upload.createObservable(url);
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
- constructor(db: Db);
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 'downling';
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
- constructor(db) {
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", null, task.totalSize),
57
- react_1.default.createElement("td", null, task.size),
58
- react_1.default.createElement("td", null, task.uploadSize),
59
- react_1.default.createElement("td", null, task.uploadUrl),
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: "", className: 'btn' }, "download"),
62
- react_1.default.createElement("a", { href: "", className: 'btn' }, "upload")));
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;