@nger/fk-upload 1.0.162 → 1.0.163

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/.env CHANGED
@@ -1,44 +1,32 @@
1
- # database
1
+
2
+
3
+
4
+
2
5
  DB_TYPE=mysql
3
- DB_HOST=49.235.92.214
4
- DB_PORT=3306
5
- DB_USERNAME=kaifa2_jidujiaow
6
- DB_PASSWORD=XCszXxxsf2CNN28F
7
- DB_DATABASE=kaifa2_jidujiaow
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
8
11
  DB_SYNCHRONIZE=true
9
12
 
10
- # redis
11
- REDIS_HOST=111.229.255.176
13
+ REDIS_HOST=localhost
12
14
  REDIS_PORT=6379
13
15
  REDIS_PASS=123qwe
14
16
 
15
- # http
16
17
  HTTP_HOST=0.0.0.0
17
18
  HTTP_PORT=8081
18
19
 
19
- # ws
20
20
  WS_HOST=0.0.0.0
21
21
  WS_PORT=8082
22
22
 
23
- # rabbitmq
24
23
  RABBITMQ_HOST=111.229.255.176
25
24
  RABBITMQ_PORT=5672
26
25
  RABBITMQ_USERNAME=imeepos
27
26
  RABBITMQ_PASSWORD=123qwe
28
27
 
29
- # email
30
- SMTP_HOST=smtp.163.com
31
- SMTP_USER=a18639118753@163.com
32
- SMTP_PASS=PLWKDRCODUBWOUAW
33
-
34
- # cloud url
35
- CLOUD_URL=http://198.19.35.241:8081
28
+ CLOUD_URL=http://111.229.255.176:8081
29
+ HOST_URL=http://111.229.255.176:8081
36
30
 
37
- # web site
38
- WEB_SITE=http://198.19.35.241:8081
39
31
 
40
- # vite
41
- VITE_PORT=8083
42
32
 
43
- # watcher delay
44
- DELAY=1000
package/dist/electon.js CHANGED
@@ -42,11 +42,18 @@ AppModule = tslib_1.__decorate([
42
42
  exports.AppModule = AppModule;
43
43
  async function createWindow() {
44
44
  const win = new electron_1.BrowserWindow({
45
- width: 800,
46
- height: 600
45
+ width: 1024,
46
+ height: 768,
47
+ closable: true,
48
+ title: 'FkUpload'
47
49
  });
48
- await (0, core_1.platformCore)().bootstrap(AppModule);
49
- // win.webContents.openDevTools();
50
+ const injector = await (0, core_1.platformCore)().bootstrap(AppModule);
51
+ injector.use([{
52
+ provide: electron_1.BrowserWindow,
53
+ useValue: win
54
+ }], 'root');
55
+ win.webContents.closeDevTools();
56
+ electron_1.Menu.setApplicationMenu(null);
50
57
  setTimeout(() => {
51
58
  win.loadURL('http://0.0.0.0:8081/@nger/fk-upload/help');
52
59
  }, 200);
@@ -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([
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nger/fk-upload",
3
- "version": "1.0.162",
3
+ "version": "1.0.163",
4
4
  "description": "",
5
5
  "main": "dist/electon.js",
6
6
  "types": "dist/core.d.ts",