@nger/fk-upload 1.0.108 → 1.0.112

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.
@@ -12,4 +12,5 @@ export declare class FkDownloadTaskEntity {
12
12
  fileMd5: string;
13
13
  topicId: number;
14
14
  createDate: Date;
15
+ isBigFile: boolean;
15
16
  }
@@ -17,6 +17,7 @@ let FkDownloadTaskEntity = class FkDownloadTaskEntity {
17
17
  fileMd5;
18
18
  topicId;
19
19
  createDate;
20
+ isBigFile;
20
21
  };
21
22
  tslib_1.__decorate([
22
23
  (0, typeorm_1.PrimaryColumn)(),
@@ -95,6 +96,12 @@ tslib_1.__decorate([
95
96
  }),
96
97
  tslib_1.__metadata("design:type", Date)
97
98
  ], FkDownloadTaskEntity.prototype, "createDate", void 0);
99
+ tslib_1.__decorate([
100
+ (0, typeorm_1.Column)({
101
+ default: false
102
+ }),
103
+ tslib_1.__metadata("design:type", Boolean)
104
+ ], FkDownloadTaskEntity.prototype, "isBigFile", void 0);
98
105
  FkDownloadTaskEntity = tslib_1.__decorate([
99
106
  (0, typeorm_1.Entity)({
100
107
  name: 'nger_fk_download_task'
@@ -32,4 +32,7 @@ export declare class CheckUploadController {
32
32
  checkFinish(): Promise<{
33
33
  list: string[];
34
34
  }>;
35
+ reEffect(): Promise<{
36
+ list: string[];
37
+ }>;
35
38
  }
@@ -111,6 +111,21 @@ let CheckUploadController = class CheckUploadController {
111
111
  }));
112
112
  return { list: finishs.map(it => it.filename) };
113
113
  }
114
+ async reEffect() {
115
+ const finishs = await this.db.manager.find(fk_download_task_entity_1.FkDownloadTaskEntity, { where: { status: 3 } });
116
+ await Promise.all(finishs.map(finish => {
117
+ const item = new rabbitmq_1.TaskEntity();
118
+ item.topic = actions_1.EFFECT_ACTION;
119
+ item.data = {
120
+ filename: finish.filename,
121
+ uploadUrl: finish.uploadUrl,
122
+ topicId: finish.topicId,
123
+ path: finish.path,
124
+ };
125
+ return this.manager.send(item);
126
+ }));
127
+ return { list: finishs.map(it => it.filename) };
128
+ }
114
129
  };
115
130
  tslib_1.__decorate([
116
131
  (0, http_1.Get)('reupload'),
@@ -160,6 +175,12 @@ tslib_1.__decorate([
160
175
  tslib_1.__metadata("design:paramtypes", []),
161
176
  tslib_1.__metadata("design:returntype", Promise)
162
177
  ], CheckUploadController.prototype, "checkFinish", null);
178
+ tslib_1.__decorate([
179
+ (0, http_1.Get)('reEffect'),
180
+ tslib_1.__metadata("design:type", Function),
181
+ tslib_1.__metadata("design:paramtypes", []),
182
+ tslib_1.__metadata("design:returntype", Promise)
183
+ ], CheckUploadController.prototype, "reEffect", null);
163
184
  CheckUploadController = tslib_1.__decorate([
164
185
  (0, core_1.Controller)(`@nger/fk-upload`),
165
186
  tslib_1.__metadata("design:paramtypes", [typeorm_1.Db, rabbitmq_1.TaskManager, core_1.Injector])
@@ -80,6 +80,9 @@ class CheckTask extends rabbitmq_1.Task {
80
80
  size.resolve(Number(headers["content-length"]));
81
81
  req.destroy();
82
82
  });
83
+ req.on('error', (e) => {
84
+ size.resolve(0);
85
+ });
83
86
  return size;
84
87
  }
85
88
  }
@@ -64,13 +64,12 @@ class DownloadTask extends rabbitmq_1.Task {
64
64
  sub.complete();
65
65
  const fileMd5 = await (0, md5_file_1.default)(task.path);
66
66
  console.log(`file download success ${task.filename}: ${fileMd5}`);
67
- const db = injector.get(typeorm_1.Db);
68
67
  await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { totalSize: total, fileMd5: fileMd5, status: 1, size: total });
69
68
  const fk = injector.get(fk_service_1.FkService);
70
69
  const shouldSize = await fk.getSize(task.url);
71
70
  const localSize = await fk.getLocalSize(task.path);
72
71
  if (shouldSize != localSize) {
73
- // download
72
+ // re download
74
73
  await fail();
75
74
  return next && next();
76
75
  }
@@ -83,7 +82,7 @@ class DownloadTask extends rabbitmq_1.Task {
83
82
  total = Number(headers["content-length"]);
84
83
  console.log(`${task.filename} total is ${total}b`);
85
84
  if (total > 1024 * 1024 * 1024) {
86
- console.log(`file is to large`);
85
+ await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { isBigFile: true });
87
86
  req.destroy();
88
87
  await complete();
89
88
  }
@@ -7,21 +7,30 @@ const typeorm_1 = require("@nger/typeorm");
7
7
  const w7_1 = require("@nger/w7");
8
8
  const entities_1 = require("../../entities");
9
9
  const fs_extra_1 = require("fs-extra");
10
+ const task_service_1 = require("./task.service");
10
11
  class EffectTask extends rabbitmq_1.Task {
11
12
  constructor() {
12
13
  super(actions_1.EFFECT_ACTION);
13
14
  }
14
15
  async handle(injector, next) {
16
+ const db = injector.get(typeorm_1.Db);
15
17
  const task = injector.get(rabbitmq_1.DATA);
16
18
  const complete = injector.get(rabbitmq_1.COMPLETE);
19
+ const manager = injector.get(rabbitmq_1.TaskManager);
20
+ const taskService = injector.get(task_service_1.TaskService);
17
21
  console.log(`effect`, task.filename);
18
22
  if (task.uploadUrl.startsWith('https://site')) {
23
+ // redownload
24
+ const item = await db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: task.filename } });
25
+ if (item) {
26
+ const downloadTask = await taskService.createDownLoadTask(item.url, item.loginId, item.topicId);
27
+ await manager.send(downloadTask);
28
+ }
19
29
  await complete();
20
30
  return next && next();
21
31
  }
22
32
  const fail = injector.get(rabbitmq_1.FAIL);
23
33
  const w7 = injector.get(w7_1.W7DataSource);
24
- const db = injector.get(typeorm_1.Db);
25
34
  await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { status: 3 });
26
35
  if (task.topicId) {
27
36
  try {
@@ -64,10 +64,14 @@ class ScheduleTask extends rabbitmq_1.Task {
64
64
  await manager.send(task);
65
65
  }
66
66
  else {
67
- if (item.status === 0) { }
68
- else if (item.status === 1) { }
69
- else if (item.status === 2) { }
70
- else if (item.status === 3) { }
67
+ if (item.status === 0) {
68
+ }
69
+ else if (item.status === 1) {
70
+ }
71
+ else if (item.status === 2) {
72
+ }
73
+ else if (item.status === 3) {
74
+ }
71
75
  }
72
76
  }
73
77
  });
@@ -3,5 +3,6 @@ import { Injector, Next } from "@nger/core";
3
3
  export declare class UploadTask extends Task {
4
4
  constructor();
5
5
  getLocalSize(path: string): number;
6
+ errorCount: number;
6
7
  handle(injector: Injector, next?: Next): Promise<void>;
7
8
  }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UploadTask = void 0;
4
- const redis_1 = require("@nger/redis");
5
4
  const rabbitmq_1 = require("@nger/rabbitmq");
6
5
  const actions_1 = require("./actions");
7
6
  const fk_service_1 = require("./fk.service");
@@ -22,6 +21,7 @@ class UploadTask extends rabbitmq_1.Task {
22
21
  return 0;
23
22
  }
24
23
  }
24
+ errorCount = 0;
25
25
  async handle(injector, next) {
26
26
  const task = injector.get(rabbitmq_1.DATA);
27
27
  const complete = injector.get(rabbitmq_1.COMPLETE);
@@ -43,6 +43,8 @@ class UploadTask extends rabbitmq_1.Task {
43
43
  }
44
44
  if (!(0, fs_1.existsSync)(task.path) || !(old.fileMd5 && old.fileMd5.length > 0)) {
45
45
  await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { status: 0 });
46
+ const download = await taskService.createDownLoadTask(old.url, old.loginId, old.topicId);
47
+ await manager.send(download);
46
48
  await complete();
47
49
  return next && next();
48
50
  }
@@ -59,18 +61,16 @@ class UploadTask extends rabbitmq_1.Task {
59
61
  if (e.message === 'to big') {
60
62
  return complete();
61
63
  }
62
- //
63
- const resdis = injector.get(redis_1.RedisService);
64
- let count = await resdis.get(task.filename) || 0;
65
- if (count > 5) {
66
- return complete();
64
+ if (this.errorCount > 10) {
65
+ this.errorCount = 0;
66
+ return await complete();
67
67
  }
68
- count += 1;
69
- resdis.set(task.filename, count);
68
+ this.errorCount += 1;
70
69
  throw e;
71
70
  });
72
71
  }
73
72
  else {
73
+ // check
74
74
  await complete();
75
75
  }
76
76
  if (next)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nger/fk-upload",
3
- "version": "1.0.108",
3
+ "version": "1.0.112",
4
4
  "description": "",
5
5
  "main": "dist/core.js",
6
6
  "types": "dist/core.d.ts",