@nger/fk-upload 1.0.161 → 1.0.165

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.
Files changed (54) hide show
  1. package/dist/{tests/test.d.ts → electon.d.ts} +0 -0
  2. package/dist/electon.js +70 -0
  3. package/dist/templates/add-fk-login.js +1 -3
  4. package/dist/templates/add-task.d.ts +1 -1
  5. package/dist/templates/add-task.js +11 -5
  6. package/dist/templates/code.js +2 -1
  7. package/dist/templates/component.js +1 -1
  8. package/dist/templates/help.js +0 -1
  9. package/dist/templates/setting.d.ts +1 -3
  10. package/dist/templates/setting.js +2 -5
  11. package/dist/templates/task-manage.d.ts +5 -1
  12. package/dist/templates/task-manage.js +71 -34
  13. package/dist/templates/tasks/upload-task.js +11 -6
  14. package/electron/.env +32 -0
  15. package/electron/package.json +31 -0
  16. package/electron/pnpm-lock.yaml +2888 -0
  17. package/env.env +30 -0
  18. package/package.json +14 -5
  19. package/pnpm-lock.yaml +1847 -103
  20. package/dist/entities/fk-login-account.entity.d.ts +0 -6
  21. package/dist/entities/fk-login-account.entity.js +0 -47
  22. package/dist/fk-upload.controller.d.ts +0 -28
  23. package/dist/fk-upload.controller.js +0 -271
  24. package/dist/fk-v2.service.d.ts +0 -29
  25. package/dist/fk-v2.service.js +0 -152
  26. package/dist/fk.service.d.ts +0 -17
  27. package/dist/fk.service.js +0 -89
  28. package/dist/templates/account-manage.d.ts +0 -3
  29. package/dist/templates/account-manage.js +0 -27
  30. package/dist/templates/add-account.d.ts +0 -0
  31. package/dist/templates/add-account.js +0 -1
  32. package/dist/templates/create-download-task.d.ts +0 -0
  33. package/dist/templates/create-download-task.js +0 -1
  34. package/dist/templates/download-task.d.ts +0 -10
  35. package/dist/templates/download-task.js +0 -47
  36. package/dist/templates/login.service.d.ts +0 -2
  37. package/dist/templates/login.service.js +0 -16
  38. package/dist/templates/receive-shedule-task.d.ts +0 -14
  39. package/dist/templates/receive-shedule-task.js +0 -64
  40. package/dist/templates/relogin.d.ts +0 -5
  41. package/dist/templates/relogin.js +0 -25
  42. package/dist/templates/task-types.d.ts +0 -34
  43. package/dist/templates/task-types.js +0 -2
  44. package/dist/templates/task.service.d.ts +0 -0
  45. package/dist/templates/task.service.js +0 -407
  46. package/dist/templates/tasks/create-download-task.d.ts +0 -12
  47. package/dist/templates/tasks/create-download-task.js +0 -65
  48. package/dist/templates/tasks/index.d.ts +0 -0
  49. package/dist/templates/tasks/index.js +0 -1
  50. package/dist/templates/tasks/receive-shedule-task.d.ts +0 -16
  51. package/dist/templates/tasks/receive-shedule-task.js +0 -66
  52. package/dist/templates/upload.service.d.ts +0 -0
  53. package/dist/templates/upload.service.js +0 -1
  54. package/dist/tests/test.js +0 -101
File without changes
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const electron_1 = require("electron");
6
+ const path_1 = require("path");
7
+ require("reflect-metadata");
8
+ require('dotenv').config({ path: (0, path_1.join)(__dirname, '../env.env') });
9
+ const core_1 = require("@nger/core");
10
+ const fk_upload_module_1 = require("./fk-upload.module");
11
+ const http_1 = require("@nger/http");
12
+ const typeorm_1 = require("@nger/typeorm");
13
+ const api_1 = require("@nger/api");
14
+ const utils_1 = require("@nger/utils");
15
+ const ws_1 = require("@nger/ws");
16
+ const redis_1 = require("@nger/redis");
17
+ const rabbitmq_1 = require("@nger/rabbitmq");
18
+ const schedule_1 = require("@nger/schedule");
19
+ const w7_1 = require("@nger/w7");
20
+ let AppModule = class AppModule {
21
+ };
22
+ AppModule = tslib_1.__decorate([
23
+ (0, core_1.Module)({
24
+ providers: [{
25
+ provide: core_1.APP_ROOT,
26
+ useValue: process.cwd()
27
+ }],
28
+ imports: [
29
+ w7_1.W7Module,
30
+ fk_upload_module_1.FkUploadModule,
31
+ http_1.HttpModule.forEnv(),
32
+ typeorm_1.TypeormModule.forEnv(),
33
+ ws_1.WsModule.forEnv(),
34
+ redis_1.RedisModule.forEnv(),
35
+ rabbitmq_1.RabbitMqModule.forEnv(),
36
+ api_1.ApiModule,
37
+ utils_1.UtilsModule,
38
+ schedule_1.ScheduleModule
39
+ ],
40
+ controllers: []
41
+ })
42
+ ], AppModule);
43
+ exports.AppModule = AppModule;
44
+ async function createWindow() {
45
+ const win = new electron_1.BrowserWindow({
46
+ width: 1024,
47
+ height: 768,
48
+ closable: true,
49
+ title: 'FkUpload'
50
+ });
51
+ const injector = await (0, core_1.platformCore)().bootstrap(AppModule);
52
+ injector.use([{
53
+ provide: electron_1.BrowserWindow,
54
+ useValue: win
55
+ }], 'root');
56
+ win.webContents.closeDevTools();
57
+ electron_1.Menu.setApplicationMenu(null);
58
+ setTimeout(() => {
59
+ win.loadURL('http://localhost:8081/@nger/fk-upload/help');
60
+ }, 400);
61
+ }
62
+ //
63
+ electron_1.app.whenReady().then(() => {
64
+ createWindow();
65
+ electron_1.app.on('activate', () => {
66
+ if (electron_1.BrowserWindow.getAllWindows().length === 0) {
67
+ createWindow();
68
+ }
69
+ });
70
+ });
@@ -47,7 +47,6 @@ let AddFkLoginController = class AddFkLoginController {
47
47
  fkLogin = item;
48
48
  }
49
49
  return react_1.default.createElement(component_1.Nav, { active: 1 },
50
- react_1.default.createElement("link", { href: "https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css", rel: "stylesheet" }),
51
50
  react_1.default.createElement("form", { action: '', method: 'post', encType: 'application/x-www-form-urlencoded' },
52
51
  react_1.default.createElement("div", { className: "form-group" },
53
52
  react_1.default.createElement("label", { htmlFor: "username" }, "\u7528\u6237\u540D"),
@@ -60,8 +59,7 @@ let AddFkLoginController = class AddFkLoginController {
60
59
  react_1.default.createElement("input", { id: "w7Username", name: "w7Username", onChange: e => { }, className: "form-control", type: "text", value: fkLogin.w7Username })),
61
60
  react_1.default.createElement("div", { className: "for-group" },
62
61
  react_1.default.createElement("button", { type: "submit", className: 'btn btn-primary' }, "\u6DFB\u52A0"),
63
- react_1.default.createElement("button", { type: "reset", className: 'btn' }, "\u91CD\u7F6E"),
64
- react_1.default.createElement("a", { className: "btn btn-link", href: "/@nger/fk-upload/help" }, "\u9996\u9875"))));
62
+ react_1.default.createElement("button", { type: "reset", className: 'btn' }, "\u91CD\u7F6E"))));
65
63
  }
66
64
  };
67
65
  tslib_1.__decorate([
@@ -9,5 +9,5 @@ export declare class AddTaskController {
9
9
  private taskService;
10
10
  constructor(db: Db, task: TaskManager, taskService: TaskService);
11
11
  postAddTask(post: any, ctx: Context): Promise<void>;
12
- addTask(): JSX.Element;
12
+ addTask(query: any): JSX.Element;
13
13
  }
@@ -23,7 +23,8 @@ let AddTaskController = class AddTaskController {
23
23
  const { url, we7Username } = post;
24
24
  const loginEntity = await this.db.manager.findOne(entities_1.FkLoginEntity, { where: { w7Username: we7Username } });
25
25
  if (loginEntity) {
26
- const task = await this.taskService.createDownLoadTask(url, loginEntity.fkLoginId, 0);
26
+ const topicId = Number(post.topicId);
27
+ const task = await this.taskService.createDownLoadTask(url, loginEntity.fkLoginId, topicId);
27
28
  const download = task.data;
28
29
  const fkdownloadTask = new entities_1.FkDownloadTaskEntity();
29
30
  fkdownloadTask.filename = download.filename;
@@ -37,15 +38,19 @@ let AddTaskController = class AddTaskController {
37
38
  ctx.redirect('/@nger/fk-upload/task-manage');
38
39
  return;
39
40
  }
40
- addTask() {
41
+ addTask(query) {
42
+ const data = query || {};
41
43
  return react_1.default.createElement(component_1.Nav, { active: 3 },
42
44
  react_1.default.createElement("form", { action: "/@nger/fk-upload/add-task", method: "post" },
43
45
  react_1.default.createElement("div", { className: "form-group" },
44
46
  react_1.default.createElement("label", { htmlFor: "url" }, "\u8FDE\u63A5"),
45
- react_1.default.createElement("input", { type: "text", name: "url", className: 'form-control', id: "url" })),
47
+ react_1.default.createElement("input", { type: "text", onChange: e => { }, name: "url", value: data.value, className: 'form-control', id: "url" })),
46
48
  react_1.default.createElement("div", { className: "form-group" },
47
49
  react_1.default.createElement("label", { htmlFor: "w7Username" }, "\u5FAE\u64CE\u8D26\u6237"),
48
- react_1.default.createElement("input", { type: "text", name: "we7Username", className: 'form-control', id: "w7Username" })),
50
+ react_1.default.createElement("input", { type: "text", onChange: e => { }, name: "we7Username", value: data.username, className: 'form-control', id: "w7Username" })),
51
+ react_1.default.createElement("div", { className: "form-group" },
52
+ react_1.default.createElement("label", { htmlFor: "w7Username" }, "topicId"),
53
+ react_1.default.createElement("input", { type: "text", onChange: e => { }, name: "topicId", value: "{data.id}", className: 'form-control', id: "topicId" })),
49
54
  react_1.default.createElement("div", { className: "form-group" },
50
55
  react_1.default.createElement("button", { type: "submit", className: "btn btn-primary" }, "\u63D0\u4EA4"),
51
56
  react_1.default.createElement("button", { type: "reset", className: "btn" }, "\u91CD\u7F6E"))));
@@ -61,8 +66,9 @@ tslib_1.__decorate([
61
66
  ], AddTaskController.prototype, "postAddTask", null);
62
67
  tslib_1.__decorate([
63
68
  (0, http_1.Get)('add-task'),
69
+ tslib_1.__param(0, (0, http_1.Query)()),
64
70
  tslib_1.__metadata("design:type", Function),
65
- tslib_1.__metadata("design:paramtypes", []),
71
+ tslib_1.__metadata("design:paramtypes", [Object]),
66
72
  tslib_1.__metadata("design:returntype", void 0)
67
73
  ], AddTaskController.prototype, "addTask", null);
68
74
  AddTaskController = tslib_1.__decorate([
@@ -21,7 +21,8 @@ initFaicaptcha({
21
21
  window.location.href = '/@nger/fk-upload/relogin?token='+n+'&loginId='+loginId;
22
22
  });
23
23
  `
24
- } }));
24
+ } }),
25
+ react_1.default.createElement("a", { href: "/@nger/fk-upload/help" }, "go home"));
25
26
  }
26
27
  };
27
28
  tslib_1.__decorate([
@@ -21,7 +21,7 @@ function Nav(props) {
21
21
  title: '设置'
22
22
  }];
23
23
  return react_1.default.createElement("div", null,
24
- react_1.default.createElement("link", { href: "https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css", rel: "stylesheet" }),
24
+ react_1.default.createElement("link", { href: "https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.1/css/bootstrap.min.css", rel: "stylesheet" }),
25
25
  react_1.default.createElement("nav", { className: "navbar navbar-expand-lg navbar-dark bg-primary" },
26
26
  react_1.default.createElement("div", { className: "collapse navbar-collapse show" },
27
27
  react_1.default.createElement("ul", { className: "navbar-nav mr-auto", style: { display: "flex", flexDirection: 'row' } },
@@ -16,7 +16,6 @@ let HelpController = class HelpController {
16
16
  async help() {
17
17
  const list = await this.db.manager.find(fk_login_entity_1.FkLoginEntity, { where: {} });
18
18
  return react_1.default.createElement(component_1.Nav, { active: 0 },
19
- react_1.default.createElement("link", { href: "https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css", rel: "stylesheet" }),
20
19
  react_1.default.createElement("table", { className: 'table' },
21
20
  react_1.default.createElement("thead", null,
22
21
  react_1.default.createElement("tr", null,
@@ -1,15 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import { TaskService } from './tasks/task.service';
3
- import { Client } from '@nger/redis';
4
3
  import { Context } from 'koa';
5
4
  import { TaskManager } from '@nger/rabbitmq';
6
5
  import { Db } from '@nger/typeorm';
7
6
  export declare class SettingController {
8
7
  private task;
9
- private redis;
10
8
  private manager;
11
9
  private db;
12
- constructor(task: TaskService, redis: Client, manager: TaskManager, db: Db);
10
+ constructor(task: TaskService, manager: TaskManager, db: Db);
13
11
  saveSetting(body: any, taskId: number, ctx: Context): Promise<void>;
14
12
  setting(): Promise<JSX.Element>;
15
13
  }
@@ -7,18 +7,15 @@ const http_1 = require("@nger/http");
7
7
  const react_1 = tslib_1.__importDefault(require("react"));
8
8
  const component_1 = require("./component");
9
9
  const task_service_1 = require("./tasks/task.service");
10
- const redis_1 = require("@nger/redis");
11
10
  const actions_1 = require("./tasks/actions");
12
11
  const rabbitmq_1 = require("@nger/rabbitmq");
13
12
  const typeorm_1 = require("@nger/typeorm");
14
13
  let SettingController = class SettingController {
15
14
  task;
16
- redis;
17
15
  manager;
18
16
  db;
19
- constructor(task, redis, manager, db) {
17
+ constructor(task, manager, db) {
20
18
  this.task = task;
21
- this.redis = redis;
22
19
  this.manager = manager;
23
20
  this.db = db;
24
21
  }
@@ -63,6 +60,6 @@ tslib_1.__decorate([
63
60
  ], SettingController.prototype, "setting", null);
64
61
  SettingController = tslib_1.__decorate([
65
62
  (0, core_1.Controller)(`@nger/fk-upload`),
66
- tslib_1.__metadata("design:paramtypes", [task_service_1.TaskService, redis_1.Client, rabbitmq_1.TaskManager, typeorm_1.Db])
63
+ tslib_1.__metadata("design:paramtypes", [task_service_1.TaskService, rabbitmq_1.TaskManager, typeorm_1.Db])
67
64
  ], SettingController);
68
65
  exports.SettingController = SettingController;
@@ -2,15 +2,19 @@
2
2
  import { Config } from '@nger/core';
3
3
  import { Db } from '@nger/typeorm';
4
4
  import { Context } from 'koa';
5
+ import { BrowserWindow } from 'electron';
5
6
  export declare class TaskManageController {
6
7
  private db;
7
8
  private config;
8
- constructor(db: Db, config: Config);
9
+ private win;
10
+ constructor(db: Db, config: Config, win: BrowserWindow);
9
11
  toUrl(query: any): string;
10
12
  createPages(total: number, query: any, page: number): {
11
13
  index: number;
12
14
  link: string;
15
+ cls: string;
13
16
  }[];
14
17
  taskManage(query: any): Promise<JSX.Element>;
18
+ downloadFile(url: string, back: string, ctx: Context): void;
15
19
  staticTaskManage(ctx: Context): any;
16
20
  }
@@ -24,12 +24,15 @@ function getStatusTitle(status) {
24
24
  return 'unknow';
25
25
  }
26
26
  }
27
+ const electron_1 = require("electron");
27
28
  let TaskManageController = class TaskManageController {
28
29
  db;
29
30
  config;
30
- constructor(db, config) {
31
+ win;
32
+ constructor(db, config, win) {
31
33
  this.db = db;
32
34
  this.config = config;
35
+ this.win = win;
33
36
  }
34
37
  toUrl(query) {
35
38
  return Object.keys(query).map(key => `${key}=${decodeURIComponent(query[key])}`).join('&');
@@ -45,13 +48,26 @@ let TaskManageController = class TaskManageController {
45
48
  max += -min;
46
49
  }
47
50
  if (d > min && d < max) {
48
- list.push({
49
- index: d,
50
- link: `/@nger/fk-upload/task-manage?${this.toUrl({
51
- ...query,
52
- page: d
53
- })}`
54
- });
51
+ if (d === page) {
52
+ list.push({
53
+ index: d,
54
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({
55
+ ...query,
56
+ page: d
57
+ })}`,
58
+ cls: `page-item active`
59
+ });
60
+ }
61
+ else {
62
+ list.push({
63
+ index: d,
64
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({
65
+ ...query,
66
+ page: d
67
+ })}`,
68
+ cls: `page-item`
69
+ });
70
+ }
55
71
  }
56
72
  }
57
73
  return list;
@@ -98,37 +114,37 @@ let TaskManageController = class TaskManageController {
98
114
  const nextUrl = `/@nger/fk-upload/task-manage?${this.toUrl(next)}`;
99
115
  const pages = this.createPages(totalPage, query, page);
100
116
  const bigNav = [{
101
- title: 'all',
102
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: -1 })}`,
117
+ title: '不限',
118
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: -1, page: 1 })}`,
103
119
  key: -1
104
120
  }, {
105
- title: 'big',
106
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: 1 })}`,
121
+ title: '大于1G',
122
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: 1, page: 1 })}`,
107
123
  key: 1
108
124
  }, {
109
- title: 'small',
110
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: 0 })}`,
125
+ title: '小于1G',
126
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, isBigFile: 0, page: 1 })}`,
111
127
  key: 0
112
128
  }];
113
129
  const navs = [{
114
- title: 'all',
115
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: -1 })}`,
130
+ title: '不限',
131
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: -1, page: 1 })}`,
116
132
  key: -1
117
133
  }, {
118
- title: 'downloading',
119
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 0 })}`,
134
+ title: '待下载',
135
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 0, page: 1 })}`,
120
136
  key: 0
121
137
  }, {
122
- title: 'uploading',
123
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 1 })}`,
138
+ title: '待上传',
139
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 1, page: 1 })}`,
124
140
  key: 1
125
141
  }, {
126
- title: 'effecting',
127
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 2 })}`,
142
+ title: '待生效',
143
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 2, page: 1 })}`,
128
144
  key: 2
129
145
  }, {
130
- title: 'finish',
131
- link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 3 })}`,
146
+ title: '已完成',
147
+ link: `/@nger/fk-upload/task-manage?${this.toUrl({ ...query, status: 3, page: 1 })}`,
132
148
  key: 3
133
149
  }];
134
150
  return react_1.default.createElement(component_1.Nav, { active: 2 },
@@ -158,32 +174,44 @@ let TaskManageController = class TaskManageController {
158
174
  react_1.default.createElement("tr", null,
159
175
  react_1.default.createElement("td", { width: '180px' }, "\u6587\u4EF6\u540D"),
160
176
  react_1.default.createElement("td", null, "\u72B6\u6001"),
161
- react_1.default.createElement("td", null, "size"),
162
- react_1.default.createElement("td", null, "isBigFile"),
163
- react_1.default.createElement("td", { width: '240px' }, "\u8FDE\u63A5"),
164
- react_1.default.createElement("td", null, "operation"))),
177
+ react_1.default.createElement("td", null, "\u5927\u5C0F"),
178
+ react_1.default.createElement("td", null, "\u5927\u4E8E1G"),
179
+ react_1.default.createElement("td", null, "\u64CD\u4F5C"))),
165
180
  react_1.default.createElement("tbody", null, tasks.map((task, key) => {
181
+ const uploadUrl = task.uploadUrl;
182
+ // https://29294142.s21v.faiusr.com/58/ABUIABA6GAAg3tiOlAYogPvErAY.mp4
183
+ // https://29294142.s21d.faiusrd.com/58/ABUIABA6GAAgzrCRlAYo_J_Aag.mp4
184
+ // https://29294142.s21d.faiusrd.com/0/ABUIABA6GAAg3tiOlAYogPvErAY.mp4?f=mAVUREPTVCTkBF%2BzQR2oy8h6lZw4.mp4&
185
+ // let downloadurl = uploadUrl.replace('s21v.faiusr/58', 's21d.faiusrd/0')
186
+ // downloadurl += `?f=${task.filename}&`
187
+ const url = `/@nger/fk-upload/download-file?url=${task.uploadUrl}&back=/@nger/fk-upload/task-manage?${this.toUrl(query)}`;
166
188
  return react_1.default.createElement("tr", { key: key },
167
189
  react_1.default.createElement("td", null, task.filename),
168
190
  react_1.default.createElement("td", null, getStatusTitle(task.status)),
169
191
  react_1.default.createElement("td", null,
170
192
  Math.ceil(100 * task.totalSize / (1024 * 1024 * 1024)) / 100,
171
193
  "G"),
172
- react_1.default.createElement("td", null, task.isBigFile ? 'big' : 'small'),
173
- react_1.default.createElement("td", { id: task.filename + '-upload-url' },
174
- react_1.default.createElement("a", { href: task.uploadUrl }, "download")),
175
- react_1.default.createElement("td", { id: task.filename + '-operation-td' }));
194
+ react_1.default.createElement("td", null, task.isBigFile ? '' : ''),
195
+ react_1.default.createElement("td", null,
196
+ react_1.default.createElement("input", { type: "hidden", id: task.filename + '-copy', onChange: () => { }, value: task.uploadUrl }),
197
+ react_1.default.createElement("a", { href: url }, "\u4E0B\u8F7D")));
176
198
  }))),
177
199
  react_1.default.createElement("nav", null,
178
200
  react_1.default.createElement("ul", { className: "pagination" },
179
201
  react_1.default.createElement("li", { className: "page-item" },
180
202
  react_1.default.createElement("a", { className: "page-link", href: preUrl }, "Previous")),
181
- pages.map(page => react_1.default.createElement("li", { className: "page-item" },
203
+ pages.map(page => react_1.default.createElement("li", { className: page.cls },
182
204
  react_1.default.createElement("a", { className: "page-link", href: page.link }, page.index))),
183
205
  react_1.default.createElement("li", { className: "page-item" },
184
206
  react_1.default.createElement("a", { className: "page-link", href: nextUrl }, "Next")))),
185
207
  react_1.default.createElement("script", { src: "/@nger/fk-upload/static/task-manage.js?t=" + new Date().getTime() }));
186
208
  }
209
+ downloadFile(url, back, ctx) {
210
+ if (this.win) {
211
+ this.win.webContents.downloadURL(url);
212
+ }
213
+ ctx.redirect(back);
214
+ }
187
215
  staticTaskManage(ctx) {
188
216
  try {
189
217
  ctx.type = 'js';
@@ -202,6 +230,15 @@ tslib_1.__decorate([
202
230
  tslib_1.__metadata("design:paramtypes", [Object]),
203
231
  tslib_1.__metadata("design:returntype", Promise)
204
232
  ], TaskManageController.prototype, "taskManage", null);
233
+ tslib_1.__decorate([
234
+ (0, http_1.Get)('download-file'),
235
+ tslib_1.__param(0, (0, http_1.Query)('url')),
236
+ tslib_1.__param(1, (0, http_1.Query)('back')),
237
+ tslib_1.__param(2, (0, core_1.Inject)(http_1.CONTEXT)),
238
+ tslib_1.__metadata("design:type", Function),
239
+ tslib_1.__metadata("design:paramtypes", [String, String, Object]),
240
+ tslib_1.__metadata("design:returntype", void 0)
241
+ ], TaskManageController.prototype, "downloadFile", null);
205
242
  tslib_1.__decorate([
206
243
  (0, http_1.Get)('static/task-manage.js'),
207
244
  tslib_1.__param(0, (0, core_1.Inject)(http_1.CONTEXT)),
@@ -211,6 +248,6 @@ tslib_1.__decorate([
211
248
  ], TaskManageController.prototype, "staticTaskManage", null);
212
249
  TaskManageController = tslib_1.__decorate([
213
250
  (0, core_1.Controller)(`@nger/fk-upload`),
214
- tslib_1.__metadata("design:paramtypes", [typeorm_1.Db, core_1.Config])
251
+ tslib_1.__metadata("design:paramtypes", [typeorm_1.Db, core_1.Config, electron_1.BrowserWindow])
215
252
  ], TaskManageController);
216
253
  exports.TaskManageController = TaskManageController;
@@ -25,11 +25,11 @@ class UploadTask extends rabbitmq_1.Task {
25
25
  async handle(injector, next) {
26
26
  const task = injector.get(rabbitmq_1.DATA);
27
27
  const complete = injector.get(rabbitmq_1.COMPLETE);
28
- const fail = injector.get(rabbitmq_1.FAIL);
29
28
  const fk = injector.get(fk_service_1.FkService);
30
29
  const taskService = injector.get(task_service_1.TaskService);
31
30
  const manager = injector.get(rabbitmq_1.TaskManager);
32
31
  const db = injector.get(typeorm_1.Db);
32
+ const fail = injector.get(rabbitmq_1.FAIL);
33
33
  // check file size
34
34
  const old = await db.manager.findOne(entities_1.FkDownloadTaskEntity, { where: { filename: task.filename } });
35
35
  // not exist
@@ -37,6 +37,9 @@ class UploadTask extends rabbitmq_1.Task {
37
37
  await complete();
38
38
  return next && next();
39
39
  }
40
+ if (!(0, fs_1.existsSync)(task.path)) {
41
+ throw new Error(`file ${task.path} not found`);
42
+ }
40
43
  // > 1G give up
41
44
  if (task.total >= 1024 * 1024 * 1024) {
42
45
  await complete();
@@ -45,11 +48,13 @@ class UploadTask extends rabbitmq_1.Task {
45
48
  const cloudSize = await fk.getSize(old.url);
46
49
  const localSize = fk.getLocalSize(old.path);
47
50
  if (cloudSize != localSize) {
48
- await db.manager.update(entities_1.FkDownloadTaskEntity, task.filename, { status: 0 });
49
- const download = await taskService.createDownLoadTask(old.url, old.loginId, old.topicId);
50
- await manager.send(download);
51
- await complete();
52
- return next && next();
51
+ // not my task
52
+ throw new Error(`not mine task`);
53
+ // await db.manager.update(FkDownloadTaskEntity, task.filename, { status: 0 })
54
+ // const download = await taskService.createDownLoadTask(old.url, old.loginId, old.topicId);
55
+ // await manager.send(download);
56
+ // await complete();
57
+ // return next && next();
53
58
  }
54
59
  console.log(`receive upload task`, { filename: task.filename, status: old.status });
55
60
  if (old.status == 1) {
package/electron/.env ADDED
@@ -0,0 +1,32 @@
1
+
2
+
3
+
4
+
5
+ DB_TYPE=mysql
6
+ DB_HOST=sh-cdb-36cco5yk.sql.tencentcdb.com
7
+ DB_PORT=59440
8
+ DB_USERNAME=wx_jidujiaowang
9
+ DB_PASSWORD=S4Gx3ScmdYf23Gbb
10
+ DB_DATABASE=wx_jidujiaowang
11
+ DB_SYNCHRONIZE=true
12
+
13
+ REDIS_HOST=111.229.255.176
14
+ REDIS_PORT=6379
15
+ REDIS_PASS=123qwe
16
+
17
+ HTTP_HOST=0.0.0.0
18
+ HTTP_PORT=8081
19
+
20
+ WS_HOST=0.0.0.0
21
+ WS_PORT=8082
22
+
23
+ RABBITMQ_HOST=111.229.255.176
24
+ RABBITMQ_PORT=5672
25
+ RABBITMQ_USERNAME=imeepos
26
+ RABBITMQ_PASSWORD=123qwe
27
+
28
+ CLOUD_URL=http://localhost:8081
29
+ HOST_URL=http://111.229.255.176:8081
30
+
31
+
32
+
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@nger/fk-upload-electron",
3
+ "version": "1.0.0",
4
+ "description": "nger fk upload",
5
+ "main": "node_modules/@nger/fk-upload/dist/electon.js",
6
+ "scripts": {
7
+ "dist": "electron-builder --win --ia32",
8
+ "postinstall": "electron-builder install-app-deps"
9
+ },
10
+ "author": "imeepos",
11
+ "license": "ISC",
12
+ "dependencies": {
13
+ "@nger/core": "1.10.25",
14
+ "@nger/fk-upload": "^1.0.163",
15
+ "@nger/http": "^4.0.47",
16
+ "@nger/rabbitmq": "^1.0.27",
17
+ "@nger/redis": "^1.0.3",
18
+ "@nger/schedule": "^1.0.2",
19
+ "@nger/typeorm": "^1.0.9",
20
+ "@nger/utils": "^1.0.3",
21
+ "@nger/w7": "^1.0.5",
22
+ "@nger/ws": "^1.0.10",
23
+ "dotenv": "^16.0.1",
24
+ "pm2": "^5.2.0",
25
+ "reflect-metadata": "^0.1.13"
26
+ },
27
+ "devDependencies": {
28
+ "electron-builder": "^23.0.3",
29
+ "electron": "^18.2.3"
30
+ }
31
+ }