@cicctencent/midwayjs-base 1.0.35 → 1.0.37
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/README.md +347 -1
- package/dist/config/config.default.d.ts +2 -2
- package/dist/config/config.default.js +33 -57
- package/dist/config/env.js +6 -9
- package/dist/configuration.js +26 -38
- package/dist/filter/default.filter.js +5 -9
- package/dist/filter/notfound.filter.js +5 -10
- package/dist/guard/api.d.ts +0 -3
- package/dist/guard/api.js +12 -29
- package/dist/guard/auth.d.ts +0 -3
- package/dist/guard/auth.js +34 -57
- package/dist/index.js +19 -39
- package/dist/lib/decorator.d.ts +3 -33
- package/dist/lib/decorator.js +15 -57
- package/dist/lib/jwt.d.ts +3 -104
- package/dist/lib/jwt.js +8 -24
- package/dist/lib/request.d.ts +0 -5
- package/dist/lib/request.js +3 -7
- package/dist/lib/utils.d.ts +1 -7
- package/dist/lib/utils.js +10 -42
- package/dist/middleware/apiResultFormatter.d.ts +4 -5
- package/dist/middleware/apiResultFormatter.js +26 -30
- package/dist/middleware/detect.middleware.d.ts +3 -4
- package/dist/middleware/detect.middleware.js +14 -20
- package/dist/middleware/requestInit.d.ts +4 -5
- package/dist/middleware/requestInit.js +54 -54
- package/dist/service/session.service.d.ts +1 -25
- package/dist/service/session.service.js +16 -44
- package/dist/service/tencent.service.d.ts +5 -13
- package/dist/service/tencent.service.js +35 -44
- package/dist/types/base.controller.js +5 -12
- package/dist/types/base.model.service.d.ts +1 -9
- package/dist/types/base.model.service.js +5 -19
- package/dist/types/base.service.d.ts +1 -10
- package/dist/types/base.service.js +16 -39
- package/dist/types/session.service.interface.d.ts +1 -15
- package/dist/types/session.service.interface.js +8 -16
- package/package.json +13 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,93 +7,94 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const ip = require("ip");
|
|
16
|
-
const logger_1 = require("@fefeding/common/dist/utils/logger");
|
|
10
|
+
import { Middleware, Config, } from '@midwayjs/core';
|
|
11
|
+
import { v4 as UUID } from 'uuid';
|
|
12
|
+
import * as ip from 'ip';
|
|
13
|
+
import Logger from '@fefeding/common/dist/utils/logger';
|
|
17
14
|
let RequestInitMiddleware = class RequestInitMiddleware {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
constructor() {
|
|
16
|
+
this.staticExtensions = [
|
|
17
|
+
'.js',
|
|
18
|
+
'.css',
|
|
19
|
+
'.jpg',
|
|
20
|
+
'.png',
|
|
21
|
+
'.ico',
|
|
22
|
+
'.svg',
|
|
23
|
+
'.woff',
|
|
24
|
+
'.woff2',
|
|
25
|
+
'.ttf',
|
|
26
|
+
'.eot',
|
|
27
|
+
'.map',
|
|
28
|
+
];
|
|
29
|
+
}
|
|
24
30
|
ignore(ctx) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
return isStaticFile ||
|
|
31
|
+
const koaCtx = ctx;
|
|
32
|
+
const isStaticFile = this.staticExtensions.some(ext => koaCtx.path.toLowerCase().endsWith(ext));
|
|
33
|
+
return isStaticFile || koaCtx.path === '/' || !koaCtx.path;
|
|
28
34
|
}
|
|
29
35
|
resolve() {
|
|
30
36
|
return async (ctx, next) => {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
const koaCtx = ctx;
|
|
38
|
+
const body = (koaCtx.request.body || {});
|
|
39
|
+
let request_id = koaCtx.URL.searchParams.get('request_id') ||
|
|
40
|
+
body.request_id ||
|
|
41
|
+
koaCtx.request.header['x-request-id'] ||
|
|
42
|
+
koaCtx.cookies.get('request_id', {
|
|
35
43
|
signed: false,
|
|
36
44
|
});
|
|
37
45
|
if (!request_id)
|
|
38
|
-
request_id = (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const logger = new logger_1.default({
|
|
46
|
+
request_id = UUID().replace(/-/g, '');
|
|
47
|
+
koaCtx.request_id = request_id;
|
|
48
|
+
const logger = new Logger({
|
|
42
49
|
remoteUrl: this.loggerConfig?.remoteUrl,
|
|
43
50
|
serviceName: process.env.SERVICE_NAME,
|
|
44
51
|
logLevel: this.loggerConfig?.level,
|
|
45
|
-
requestId:
|
|
46
|
-
loginId:
|
|
47
|
-
userId: (
|
|
48
|
-
clientIP:
|
|
52
|
+
requestId: koaCtx.request_id || '',
|
|
53
|
+
loginId: koaCtx.currentSession?.loginId || '',
|
|
54
|
+
userId: (koaCtx.currentSession?.userId || '').toString(),
|
|
55
|
+
clientIP: koaCtx.detect?.CLIENTIP || koaCtx.ip || '',
|
|
49
56
|
serverIP: ip.address() || '',
|
|
50
|
-
url:
|
|
57
|
+
url: koaCtx.url,
|
|
51
58
|
});
|
|
52
|
-
|
|
53
|
-
ctx.logger = logger;
|
|
54
|
-
// 记录请求开始时间
|
|
59
|
+
koaCtx.logger = logger;
|
|
55
60
|
const startTime = Date.now();
|
|
56
61
|
try {
|
|
57
|
-
|
|
58
|
-
let result = await next();
|
|
62
|
+
const result = await next();
|
|
59
63
|
const logData = {
|
|
60
|
-
requestId:
|
|
61
|
-
method:
|
|
62
|
-
status:
|
|
64
|
+
requestId: koaCtx.request_id,
|
|
65
|
+
method: koaCtx.method,
|
|
66
|
+
status: koaCtx.status,
|
|
63
67
|
result,
|
|
64
|
-
responseTime: Date.now() - startTime
|
|
68
|
+
responseTime: Date.now() - startTime,
|
|
65
69
|
};
|
|
66
70
|
if (typeof logData.result === 'string') {
|
|
67
71
|
logData.result = logData.result.substring(0, 500);
|
|
68
72
|
}
|
|
69
|
-
// 记录成功响应
|
|
70
|
-
//logger.info('Request completed', logData);
|
|
71
73
|
return result;
|
|
72
74
|
}
|
|
73
75
|
catch (error) {
|
|
74
|
-
// 记录错误响应
|
|
75
76
|
logger.error('Request failed', {
|
|
76
|
-
requestId:
|
|
77
|
-
method:
|
|
78
|
-
url:
|
|
77
|
+
requestId: koaCtx.request_id,
|
|
78
|
+
method: koaCtx.method,
|
|
79
|
+
url: koaCtx.href,
|
|
79
80
|
error: {
|
|
80
|
-
name: error
|
|
81
|
-
message: error
|
|
82
|
-
stack: error
|
|
81
|
+
name: error?.name,
|
|
82
|
+
message: error?.message,
|
|
83
|
+
stack: error?.stack,
|
|
83
84
|
},
|
|
84
|
-
responseTime: Date.now() - startTime
|
|
85
|
+
responseTime: Date.now() - startTime,
|
|
85
86
|
});
|
|
86
|
-
// 将错误继续抛出,由全局异常处理器处理
|
|
87
87
|
throw error;
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
91
|
};
|
|
92
|
-
exports.RequestInitMiddleware = RequestInitMiddleware;
|
|
93
92
|
__decorate([
|
|
94
|
-
|
|
93
|
+
Config('logger'),
|
|
95
94
|
__metadata("design:type", Object)
|
|
96
95
|
], RequestInitMiddleware.prototype, "loggerConfig", void 0);
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
RequestInitMiddleware = __decorate([
|
|
97
|
+
Middleware()
|
|
99
98
|
], RequestInitMiddleware);
|
|
100
|
-
|
|
99
|
+
export { RequestInitMiddleware };
|
|
100
|
+
//# sourceMappingURL=requestInit.js.map
|
|
@@ -1,33 +1,9 @@
|
|
|
1
1
|
import { ISessionService } from '../types/session.service.interface';
|
|
2
2
|
import { Session, LoginByWxReq, LoginByWxRsp, LoginByAccountReq, LoginByAccountRsp } from '@fefeding/common/dist/models/account/session';
|
|
3
3
|
export declare class SessionService extends ISessionService {
|
|
4
|
-
|
|
5
|
-
* 根据ID获取session
|
|
6
|
-
* 并判断session是否在有效期
|
|
7
|
-
* @param id token唯一
|
|
8
|
-
*/
|
|
9
|
-
getLoginSession(id: string): Promise<Session>;
|
|
10
|
-
/**
|
|
11
|
-
* 下线
|
|
12
|
-
* @param id 需要下线的id或者session
|
|
13
|
-
*/
|
|
4
|
+
getLoginSession(id: string): Promise<Session | null>;
|
|
14
5
|
logout(id: string): Promise<any>;
|
|
15
|
-
/**
|
|
16
|
-
* 用临时码登陆
|
|
17
|
-
* @param code 登陆临时码
|
|
18
|
-
* @returns
|
|
19
|
-
*/
|
|
20
6
|
loginByCode(code: string): Promise<any>;
|
|
21
|
-
/**
|
|
22
|
-
* 登录接口
|
|
23
|
-
* @param loginParams 登录参数
|
|
24
|
-
* @returns
|
|
25
|
-
*/
|
|
26
7
|
loginByWx(loginParams: LoginByWxReq): Promise<LoginByWxRsp>;
|
|
27
|
-
/**
|
|
28
|
-
* 帐号登陆
|
|
29
|
-
* @param loginParams
|
|
30
|
-
* @returns
|
|
31
|
-
*/
|
|
32
8
|
loginByAccount(loginParams: LoginByAccountReq): Promise<LoginByAccountRsp>;
|
|
33
9
|
}
|
|
@@ -1,81 +1,53 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
4
|
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
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
6
|
};
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const session_service_interface_1 = require("../types/session.service.interface");
|
|
13
|
-
const session_1 = require("@fefeding/common/dist/models/account/session");
|
|
14
|
-
let SessionService = class SessionService extends session_service_interface_1.ISessionService {
|
|
15
|
-
/**
|
|
16
|
-
* 根据ID获取session
|
|
17
|
-
* 并判断session是否在有效期
|
|
18
|
-
* @param id token唯一
|
|
19
|
-
*/
|
|
7
|
+
import { Provide, Scope, ScopeEnum, } from '@midwayjs/core';
|
|
8
|
+
import { DEFAULT_SESSION_SERVICE_KEY, ISessionService, } from '../types/session.service.interface';
|
|
9
|
+
import { GetLoginSessionReq, LogoutReq, LoginByWxReq, LoginByAccountReq, } from '@fefeding/common/dist/models/account/session';
|
|
10
|
+
let SessionService = class SessionService extends ISessionService {
|
|
20
11
|
async getLoginSession(id) {
|
|
21
|
-
const req = new
|
|
12
|
+
const req = new GetLoginSessionReq();
|
|
22
13
|
req.id = id;
|
|
23
14
|
const res = await this.requestBaseApi(req);
|
|
24
15
|
return res?.data || null;
|
|
25
16
|
}
|
|
26
|
-
/**
|
|
27
|
-
* 下线
|
|
28
|
-
* @param id 需要下线的id或者session
|
|
29
|
-
*/
|
|
30
17
|
async logout(id) {
|
|
31
|
-
const req = new
|
|
18
|
+
const req = new LogoutReq();
|
|
32
19
|
req.id = id;
|
|
33
20
|
const res = await this.requestBaseApi(req);
|
|
34
21
|
this.ctx.currentSession = null;
|
|
35
22
|
return res;
|
|
36
23
|
}
|
|
37
|
-
/**
|
|
38
|
-
* 用临时码登陆
|
|
39
|
-
* @param code 登陆临时码
|
|
40
|
-
* @returns
|
|
41
|
-
*/
|
|
42
24
|
async loginByCode(code) {
|
|
43
25
|
const res = await this.requestBaseApi('/api/session/loginByAuthCode', {
|
|
44
26
|
data: {
|
|
45
|
-
code
|
|
46
|
-
}
|
|
27
|
+
code,
|
|
28
|
+
},
|
|
47
29
|
});
|
|
48
30
|
if (res.ret === 0)
|
|
49
31
|
return res.data;
|
|
50
32
|
return null;
|
|
51
33
|
}
|
|
52
|
-
/**
|
|
53
|
-
* 登录接口
|
|
54
|
-
* @param loginParams 登录参数
|
|
55
|
-
* @returns
|
|
56
|
-
*/
|
|
57
34
|
async loginByWx(loginParams) {
|
|
58
|
-
const req = new
|
|
35
|
+
const req = new LoginByWxReq();
|
|
59
36
|
req.fromJSON(loginParams);
|
|
60
37
|
const res = await this.requestBaseApi(req);
|
|
61
38
|
return res;
|
|
62
39
|
}
|
|
63
|
-
/**
|
|
64
|
-
* 帐号登陆
|
|
65
|
-
* @param loginParams
|
|
66
|
-
* @returns
|
|
67
|
-
*/
|
|
68
40
|
async loginByAccount(loginParams) {
|
|
69
|
-
loginParams.appId = '0';
|
|
70
|
-
const req = new
|
|
41
|
+
loginParams.appId = '0';
|
|
42
|
+
const req = new LoginByAccountReq();
|
|
71
43
|
req.fromJSON(loginParams);
|
|
72
44
|
const res = await this.requestBaseApi(req);
|
|
73
45
|
return res;
|
|
74
46
|
}
|
|
75
47
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
(
|
|
79
|
-
(0, core_1.Scope)(core_1.ScopeEnum.Request, { allowDowngrade: true })
|
|
48
|
+
SessionService = __decorate([
|
|
49
|
+
Provide(DEFAULT_SESSION_SERVICE_KEY),
|
|
50
|
+
Scope(ScopeEnum.Request, { allowDowngrade: true })
|
|
80
51
|
], SessionService);
|
|
81
|
-
|
|
52
|
+
export { SessionService };
|
|
53
|
+
//# sourceMappingURL=session.service.js.map
|
|
@@ -10,36 +10,28 @@ export declare class TencentService extends BaseService {
|
|
|
10
10
|
};
|
|
11
11
|
cosFileOption: {
|
|
12
12
|
[key: string]: {
|
|
13
|
-
/** 存储桶的名称,格式为<bucketname-appid>,例如examplebucket-1250000000 */
|
|
14
13
|
Bucket: string;
|
|
15
14
|
Region: string;
|
|
16
15
|
Key?: string;
|
|
17
16
|
Headers?: any;
|
|
17
|
+
Domain?: string;
|
|
18
|
+
Protocol?: string;
|
|
19
|
+
CompatibilityMode?: boolean;
|
|
18
20
|
url?: string;
|
|
19
21
|
};
|
|
20
22
|
};
|
|
21
|
-
cosClient(name: string): any;
|
|
23
|
+
cosClient(name: string, option?: any): any;
|
|
22
24
|
uploadCosFile(key: string, filePath: string, cos?: string, headers?: {}, client?: string): Promise<{
|
|
23
|
-
/** 对象的实体标签(Entity Tag),是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化,例如"8e0b617ca298a564c3331da28dcb50df"。此头部并不一定返回对象的 MD5 值,而是根据对象上传和加密方式而有所不同 */
|
|
24
25
|
ETag: string;
|
|
25
|
-
/** 创建的存储桶访问地址,不带 https:// 前缀,例如 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/images/1.jpg */
|
|
26
26
|
Location: string;
|
|
27
27
|
url?: string;
|
|
28
28
|
}>;
|
|
29
29
|
uploadCosData(key: string, body: string | fs.ReadStream | any, cos?: string, headers?: {}, client?: string): Promise<{
|
|
30
|
-
/** 对象的实体标签(Entity Tag),是对象被创建时标识对象内容的信息标签,可用于检查对象的内容是否发生变化,例如"8e0b617ca298a564c3331da28dcb50df"。此头部并不一定返回对象的 MD5 值,而是根据对象上传和加密方式而有所不同 */
|
|
31
30
|
ETag: string;
|
|
32
|
-
/** 创建的存储桶访问地址,不带 https:// 前缀,例如 examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/images/1.jpg */
|
|
33
31
|
Location: string;
|
|
34
32
|
url?: string;
|
|
35
33
|
}>;
|
|
36
34
|
getCosFileUrl(key: string, cos?: string, client?: string): Promise<string>;
|
|
37
|
-
|
|
38
|
-
* 获取文件
|
|
39
|
-
* @param key 文件key
|
|
40
|
-
* @param cos
|
|
41
|
-
* @param client
|
|
42
|
-
*/
|
|
43
|
-
getFile(key: string, cos?: string, client?: string): Promise<COS.GetObjectResult>;
|
|
35
|
+
getFile(key: string, cos?: string, client?: string): Promise<any>;
|
|
44
36
|
}
|
|
45
37
|
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,74 +7,66 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
cosFileOption;
|
|
23
|
-
// 生成client
|
|
24
|
-
cosClient(name) {
|
|
25
|
-
const config = this.tencentCredentialConfig[name] || this.tencentCredentialConfig;
|
|
26
|
-
const client = TxCos.createClient({
|
|
27
|
-
/** 固定密钥的 SecretId,可从{@link https://console.cloud.tencent.com/cam/capi|API密钥管理}获取 */
|
|
10
|
+
import { Config, Provide, ScopeEnum, Scope } from '@midwayjs/core';
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as url from 'url';
|
|
13
|
+
import * as TxCos from '@fefeding/common/dist/utils/txCos';
|
|
14
|
+
import { isPlainObject } from 'lodash';
|
|
15
|
+
import { BaseService } from '../types/base.service';
|
|
16
|
+
let TencentService = class TencentService extends BaseService {
|
|
17
|
+
cosClient(name, option) {
|
|
18
|
+
const config = this.tencentCredentialConfig[name] ||
|
|
19
|
+
this.tencentCredentialConfig;
|
|
20
|
+
const clientOption = {
|
|
28
21
|
SecretId: config.secretId,
|
|
29
|
-
/** 固定密钥的 SecretKey,可从{@link https://console.cloud.tencent.com/cam/capi|API密钥管理}获取 */
|
|
30
22
|
SecretKey: config.secretKey,
|
|
31
|
-
|
|
23
|
+
CompatibilityMode: true,
|
|
24
|
+
};
|
|
25
|
+
if (option?.Domain)
|
|
26
|
+
clientOption.Domain = option.Domain;
|
|
27
|
+
if (option?.Protocol)
|
|
28
|
+
clientOption.Protocol = option.Protocol;
|
|
29
|
+
if (option?.CompatibilityMode !== undefined)
|
|
30
|
+
clientOption.CompatibilityMode = option.CompatibilityMode;
|
|
31
|
+
const client = TxCos.createClient(clientOption);
|
|
32
32
|
return client;
|
|
33
33
|
}
|
|
34
|
-
// 上传文件
|
|
35
34
|
async uploadCosFile(key, filePath, cos = 'default', headers = {}, client = 'default') {
|
|
36
35
|
const body = fs.createReadStream(filePath);
|
|
37
36
|
return this.uploadCosData(key, body, cos, headers, client);
|
|
38
37
|
}
|
|
39
|
-
// 上传文件内容
|
|
40
38
|
async uploadCosData(key, body, cos = 'default', headers = {}, client = 'default') {
|
|
41
39
|
const option = this.cosFileOption[cos];
|
|
42
|
-
if (
|
|
40
|
+
if (isPlainObject(body) || Array.isArray(body)) {
|
|
43
41
|
body = JSON.stringify(body);
|
|
44
42
|
}
|
|
45
43
|
headers = {
|
|
46
44
|
...option.Headers,
|
|
47
45
|
...headers,
|
|
48
46
|
};
|
|
49
|
-
const res = await TxCos.putObject({
|
|
47
|
+
const res = (await TxCos.putObject({
|
|
50
48
|
...option,
|
|
51
49
|
Key: key,
|
|
52
50
|
Body: body,
|
|
53
|
-
Headers: headers
|
|
54
|
-
}, this.cosClient(client));
|
|
51
|
+
Headers: headers,
|
|
52
|
+
}, this.cosClient(client, option)));
|
|
55
53
|
if (option.url) {
|
|
56
|
-
res.url =
|
|
54
|
+
res.url = new url.URL(key, option.url).toString();
|
|
57
55
|
}
|
|
58
56
|
return res;
|
|
59
57
|
}
|
|
60
|
-
// 获取文件访问url,带有临时签名
|
|
61
58
|
async getCosFileUrl(key, cos = 'default', client = 'default') {
|
|
62
59
|
if (!key) {
|
|
63
60
|
throw Error('指定文件地址');
|
|
64
61
|
}
|
|
65
62
|
const option = this.cosFileOption[cos];
|
|
66
|
-
const url = await TxCos.getObjectUrl({
|
|
63
|
+
const url = (await TxCos.getObjectUrl({
|
|
67
64
|
...option,
|
|
68
65
|
Key: key,
|
|
69
66
|
Sign: true,
|
|
70
|
-
}, this.cosClient(client));
|
|
67
|
+
}, this.cosClient(client, option)));
|
|
71
68
|
return url;
|
|
72
69
|
}
|
|
73
|
-
/**
|
|
74
|
-
* 获取文件
|
|
75
|
-
* @param key 文件key
|
|
76
|
-
* @param cos
|
|
77
|
-
* @param client
|
|
78
|
-
*/
|
|
79
70
|
async getFile(key, cos = 'default', client = 'default') {
|
|
80
71
|
if (!key) {
|
|
81
72
|
throw Error('指定文件地址');
|
|
@@ -85,21 +76,21 @@ let TencentService = class TencentService extends base_service_1.BaseService {
|
|
|
85
76
|
...option,
|
|
86
77
|
Key: key,
|
|
87
78
|
Sign: true,
|
|
88
|
-
}, this.cosClient(client));
|
|
79
|
+
}, this.cosClient(client, option));
|
|
89
80
|
return url;
|
|
90
81
|
}
|
|
91
82
|
};
|
|
92
|
-
exports.TencentService = TencentService;
|
|
93
83
|
__decorate([
|
|
94
|
-
|
|
84
|
+
Config('tencentCredential'),
|
|
95
85
|
__metadata("design:type", Object)
|
|
96
86
|
], TencentService.prototype, "tencentCredentialConfig", void 0);
|
|
97
87
|
__decorate([
|
|
98
|
-
|
|
88
|
+
Config('tencentCosOption'),
|
|
99
89
|
__metadata("design:type", Object)
|
|
100
90
|
], TencentService.prototype, "cosFileOption", void 0);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
91
|
+
TencentService = __decorate([
|
|
92
|
+
Provide(),
|
|
93
|
+
Scope(ScopeEnum.Request, { allowDowngrade: true })
|
|
104
94
|
], TencentService);
|
|
105
|
-
|
|
95
|
+
export { TencentService };
|
|
96
|
+
//# sourceMappingURL=tencent.service.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -8,21 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// @ts-ignore
|
|
14
|
-
const core_1 = require("@midwayjs/core");
|
|
15
|
-
class BaseController {
|
|
16
|
-
app;
|
|
17
|
-
ctx;
|
|
10
|
+
import { App, Inject } from '@midwayjs/core';
|
|
11
|
+
export class BaseController {
|
|
18
12
|
}
|
|
19
|
-
exports.BaseController = BaseController;
|
|
20
13
|
__decorate([
|
|
21
|
-
|
|
14
|
+
App(),
|
|
22
15
|
__metadata("design:type", Object)
|
|
23
16
|
], BaseController.prototype, "app", void 0);
|
|
24
17
|
__decorate([
|
|
25
|
-
|
|
18
|
+
Inject(),
|
|
26
19
|
__metadata("design:type", Object)
|
|
27
20
|
], BaseController.prototype, "ctx", void 0);
|
|
28
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=base.controller.js.map
|
|
@@ -10,17 +10,9 @@ export interface Options<Entity> {
|
|
|
10
10
|
}
|
|
11
11
|
export declare abstract class BaseModelService<K extends BaseEntity> extends BaseService {
|
|
12
12
|
protected abstract model: Repository<K>;
|
|
13
|
-
/**
|
|
14
|
-
* 保存
|
|
15
|
-
* @param u 对象orm
|
|
16
|
-
*/
|
|
17
13
|
save(entity: K, qryRunner?: QueryRunner): Promise<K>;
|
|
18
|
-
/** update 和 create都可以用insert */
|
|
19
14
|
insert(data: DeepPartial<K> | DeepPartial<K>[]): Promise<K | K[]>;
|
|
20
|
-
update(data: DeepPartial<K> | DeepPartial<K>[], repo?: Repository<K>): Promise<K>;
|
|
21
|
-
/**
|
|
22
|
-
* 删除对象
|
|
23
|
-
*/
|
|
15
|
+
update(data: DeepPartial<K> | DeepPartial<K>[], repo?: Repository<K>): Promise<K | K[]>;
|
|
24
16
|
delete(data: DeepPartial<K> | DeepPartial<K>[], repo?: Repository<K>): Promise<K | DeepPartial<K>[]>;
|
|
25
17
|
findAndCount(where: FindOptionsWhere<K> | FindOptionsWhere<K>[], options?: Options<K>): Promise<{
|
|
26
18
|
rows: K[];
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const base_service_1 = require("./base.service");
|
|
5
|
-
const enumType_1 = require("@fefeding/common/dist/models/base/enumType");
|
|
6
|
-
class BaseModelService extends base_service_1.BaseService {
|
|
7
|
-
/**
|
|
8
|
-
* 保存
|
|
9
|
-
* @param u 对象orm
|
|
10
|
-
*/
|
|
1
|
+
import { BaseService } from './base.service';
|
|
2
|
+
import { EValid } from '@fefeding/common/dist/models/base/enumType';
|
|
3
|
+
export class BaseModelService extends BaseService {
|
|
11
4
|
async save(entity, qryRunner) {
|
|
12
5
|
if (this.ctx?.currentSession?.loginId) {
|
|
13
6
|
entity.updater = this.ctx.currentSession.loginId;
|
|
@@ -18,12 +11,10 @@ class BaseModelService extends base_service_1.BaseService {
|
|
|
18
11
|
const res = await this.model.save(entity);
|
|
19
12
|
return res;
|
|
20
13
|
}
|
|
21
|
-
/** update 和 create都可以用insert */
|
|
22
14
|
async insert(data) {
|
|
23
15
|
const isArray = Array.isArray(data);
|
|
24
16
|
const updater = this.ctx.currentSession?.loginId;
|
|
25
17
|
const entities = (isArray ? data : [data]).map(it => this.model.create({
|
|
26
|
-
/** creator 优先用it的,updater优先用当前用户的 */
|
|
27
18
|
creator: updater,
|
|
28
19
|
...it,
|
|
29
20
|
updater,
|
|
@@ -51,9 +42,6 @@ class BaseModelService extends base_service_1.BaseService {
|
|
|
51
42
|
}));
|
|
52
43
|
return isArray ? models : models[0];
|
|
53
44
|
}
|
|
54
|
-
/**
|
|
55
|
-
* 删除对象
|
|
56
|
-
*/
|
|
57
45
|
async delete(data, repo) {
|
|
58
46
|
repo = repo || this.model;
|
|
59
47
|
if (Array.isArray(data)) {
|
|
@@ -63,8 +51,7 @@ class BaseModelService extends base_service_1.BaseService {
|
|
|
63
51
|
return data;
|
|
64
52
|
}
|
|
65
53
|
else {
|
|
66
|
-
|
|
67
|
-
data.valid = enumType_1.EValid.Unvalid;
|
|
54
|
+
data.valid = EValid.Unvalid;
|
|
68
55
|
return await repo.save(data);
|
|
69
56
|
}
|
|
70
57
|
}
|
|
@@ -82,5 +69,4 @@ class BaseModelService extends base_service_1.BaseService {
|
|
|
82
69
|
return { rows, count };
|
|
83
70
|
}
|
|
84
71
|
}
|
|
85
|
-
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5tb2RlbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Jhc2UubW9kZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxpREFBNkM7QUFDN0MseUVBQW9FO0FBY3BFLE1BQXNCLGdCQUF1QyxTQUFRLDBCQUFXO0lBRzVFOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBUyxFQUFFLFNBQXVCO1FBQ3pDLElBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUcsU0FBUyxFQUFFLENBQUM7WUFDWCxPQUFPLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsZ0NBQWdDO0lBQ3pCLEtBQUssQ0FBQyxNQUFNLENBQ2YsSUFBdUM7UUFFdkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUM7UUFDakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNkLHFDQUFx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
|
|
72
|
+
//# sourceMappingURL=base.model.service.js.map
|
|
@@ -13,16 +13,7 @@ export declare abstract class BaseService {
|
|
|
13
13
|
apiOption: {
|
|
14
14
|
key: string;
|
|
15
15
|
};
|
|
16
|
-
|
|
17
|
-
* 是否是管理员帐号
|
|
18
|
-
* @param account
|
|
19
|
-
*/
|
|
20
|
-
checkManager(account?: string): Promise<boolean>;
|
|
21
|
-
/**
|
|
22
|
-
* 基础服务请求
|
|
23
|
-
* @param req
|
|
24
|
-
* @param option
|
|
25
|
-
*/
|
|
16
|
+
checkManager(account?: string): Promise<boolean | "" | undefined>;
|
|
26
17
|
requestBaseApi<T extends response>(req: request | string, option?: AxiosRequestConfig): Promise<T>;
|
|
27
18
|
requestBaseServer<T extends any>(req: request | string, option?: AxiosRequestConfig & {
|
|
28
19
|
accessKey?: string;
|