baja-lite 1.3.27 → 1.3.28
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/boot-remote.d.ts +2 -0
- package/{src/boot-remote.ts → boot-remote.js} +6 -7
- package/boot.d.ts +2 -0
- package/{src/boot.ts → boot.js} +31 -38
- package/code.d.ts +2 -0
- package/{src/code.ts → code.js} +71 -66
- package/convert-xml.d.ts +10 -0
- package/{src/convert-xml.ts → convert-xml.js} +105 -155
- package/enum.d.ts +18 -0
- package/enum.js +59 -0
- package/error.d.ts +5 -0
- package/error.js +13 -0
- package/fn.d.ts +128 -0
- package/fn.js +172 -0
- package/{src/index.ts → index.d.ts} +11 -12
- package/index.js +11 -0
- package/list.d.ts +10 -0
- package/{src/list.ts → list.js} +8 -9
- package/math.d.ts +83 -0
- package/math.js +451 -0
- package/object.d.ts +83 -0
- package/object.js +221 -0
- package/package.json +1 -1
- package/snowflake.d.ts +12 -0
- package/{src/snowflake.ts → snowflake.js} +33 -52
- package/sql.d.ts +1798 -0
- package/sql.js +4802 -0
- package/sqlite.d.ts +32 -0
- package/{src/sqlite.ts → sqlite.js} +53 -52
- package/string.d.ts +17 -0
- package/string.js +105 -0
- package/test-mysql.d.ts +2 -0
- package/test-mysql.js +109 -0
- package/test-postgresql.d.ts +2 -0
- package/{src/test-postgresql.ts → test-postgresql.js} +91 -80
- package/test-sqlite.d.ts +1 -0
- package/{src/test-sqlite.ts → test-sqlite.js} +90 -80
- package/test-xml.d.ts +1 -0
- package/{src/test-xml.ts → test-xml.js} +1 -1
- package/test.d.ts +1 -0
- package/{src/test.ts → test.js} +2 -3
- package/wx/base.d.ts +11 -0
- package/wx/base.js +78 -0
- package/wx/mini.d.ts +52 -0
- package/wx/mini.js +112 -0
- package/wx/organ.d.ts +65 -0
- package/wx/organ.js +171 -0
- package/{src/wx/types.ts → wx/types.d.ts} +21 -10
- package/wx/types.js +1 -0
- package/wx.js +3 -0
- package/.eslintignore +0 -7
- package/.eslintrc.cjs +0 -89
- package/.prettierrc +0 -4
- package/.vscode/settings.json +0 -8
- package/ci.js +0 -29
- package/package-cjs.json +0 -17
- package/src/enum.ts +0 -71
- package/src/error.ts +0 -11
- package/src/fn.ts +0 -295
- package/src/math.ts +0 -405
- package/src/object.ts +0 -247
- package/src/sql.ts +0 -5023
- package/src/string.ts +0 -111
- package/src/test-mysql.ts +0 -144
- package/src/wx/base.ts +0 -76
- package/src/wx/mini.ts +0 -147
- package/src/wx/organ.ts +0 -290
- package/tsconfig.cjs.json +0 -42
- package/tsconfig.json +0 -44
- package/tsconfig.tsbuildinfo +0 -1
- package/xml/event-report.xml +0 -13
- package/yarn.lock +0 -1757
- /package/{Readme.md → README.md} +0 -0
- /package/{src/wx.ts → wx.d.ts} +0 -0
|
@@ -1,80 +1,90 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
SellerSKU: '
|
|
46
|
-
site:
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { DBType, Field, SqlType } from 'baja-lite-field';
|
|
11
|
+
import 'reflect-metadata';
|
|
12
|
+
import { Boot } from './boot';
|
|
13
|
+
import { DB, DeleteMode, InsertMode, SqlService, SyncMode } from './sql';
|
|
14
|
+
class AmaFuck {
|
|
15
|
+
}
|
|
16
|
+
__decorate([
|
|
17
|
+
Field({ type: SqlType.varchar }),
|
|
18
|
+
__metadata("design:type", String)
|
|
19
|
+
], AmaFuck.prototype, "site", void 0);
|
|
20
|
+
__decorate([
|
|
21
|
+
Field({ type: SqlType.varchar }),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], AmaFuck.prototype, "SellerSKU2", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
Field({ type: SqlType.varchar, id: true }),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], AmaFuck.prototype, "SellerSKU", void 0);
|
|
28
|
+
let AmaService = class AmaService extends SqlService {
|
|
29
|
+
};
|
|
30
|
+
AmaService = __decorate([
|
|
31
|
+
DB({
|
|
32
|
+
tableName: 'ama_fuck2', clz: AmaFuck, dbType: DBType.Sqlite, sqliteVersion: '0.0.3'
|
|
33
|
+
})
|
|
34
|
+
], AmaService);
|
|
35
|
+
async function go() {
|
|
36
|
+
await Boot({
|
|
37
|
+
Sqlite: 'd:1.db',
|
|
38
|
+
log: 'info'
|
|
39
|
+
});
|
|
40
|
+
const service = new AmaService();
|
|
41
|
+
const ret = service.transaction({
|
|
42
|
+
sync: SyncMode.Sync,
|
|
43
|
+
fn: conn => {
|
|
44
|
+
const list = new Array({
|
|
45
|
+
SellerSKU: '1',
|
|
46
|
+
site: '111'
|
|
47
|
+
}, {
|
|
48
|
+
SellerSKU: '2',
|
|
49
|
+
SellerSKU2: '22',
|
|
50
|
+
}, {
|
|
51
|
+
SellerSKU2: '33',
|
|
52
|
+
SellerSKU: '3',
|
|
53
|
+
site: '333'
|
|
54
|
+
}, {
|
|
55
|
+
SellerSKU2: '44',
|
|
56
|
+
SellerSKU: '4',
|
|
57
|
+
site: '444'
|
|
58
|
+
}, {
|
|
59
|
+
SellerSKU2: '',
|
|
60
|
+
SellerSKU: '66',
|
|
61
|
+
site: undefined
|
|
62
|
+
});
|
|
63
|
+
const rt = service.insert({
|
|
64
|
+
sync: SyncMode.Sync,
|
|
65
|
+
data: list,
|
|
66
|
+
conn, skipEmptyString: false, mode: InsertMode.InsertWithTempTable
|
|
67
|
+
});
|
|
68
|
+
console.log(rt);
|
|
69
|
+
const rt2 = service.update({
|
|
70
|
+
sync: SyncMode.Sync,
|
|
71
|
+
data: list,
|
|
72
|
+
conn, skipEmptyString: false
|
|
73
|
+
});
|
|
74
|
+
console.log(rt2);
|
|
75
|
+
const rt3 = service.delete({
|
|
76
|
+
sync: SyncMode.Sync,
|
|
77
|
+
where: [
|
|
78
|
+
{ SellerSKU2: '11', SellerSKU: '1' },
|
|
79
|
+
{ SellerSKU2: '22', SellerSKU: '2' },
|
|
80
|
+
{ SellerSKU2: '33', SellerSKU: '3' }
|
|
81
|
+
],
|
|
82
|
+
mode: DeleteMode.TempTable
|
|
83
|
+
});
|
|
84
|
+
console.log(rt3);
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
return ret;
|
|
89
|
+
}
|
|
90
|
+
go();
|
package/test-xml.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/{src/test.ts → test.js}
RENAMED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { snowflake } from "snowflake";
|
|
2
|
-
|
|
3
|
-
console.log(snowflake.generate());
|
|
1
|
+
import { snowflake } from "snowflake";
|
|
2
|
+
console.log(snowflake.generate());
|
package/wx/base.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare abstract class BaseWx {
|
|
2
|
+
protected authErrorCodes: number[];
|
|
3
|
+
protected name: string;
|
|
4
|
+
protected tokenUrl: string;
|
|
5
|
+
private tokenData;
|
|
6
|
+
protected mock: boolean;
|
|
7
|
+
protected getToken(force?: boolean): Promise<string>;
|
|
8
|
+
protected fetch(uri: (token: string) => string, method: 'get' | 'post', data: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
}, needToken?: boolean, buffer?: boolean): Promise<any>;
|
|
11
|
+
}
|
package/wx/base.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
2
|
+
import * as rp from 'request-promise';
|
|
3
|
+
import { Throw } from '../error.js';
|
|
4
|
+
import pino from 'pino';
|
|
5
|
+
const logger = process.env['NODE_ENV'] !== 'production' ? pino({
|
|
6
|
+
name: 'wx',
|
|
7
|
+
transport: {
|
|
8
|
+
target: 'pino-pretty'
|
|
9
|
+
}
|
|
10
|
+
}) : pino({ name: 'wx' });
|
|
11
|
+
export class BaseWx {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.authErrorCodes = [40001, 40014, 41001, 42001];
|
|
14
|
+
this.name = '';
|
|
15
|
+
this.tokenUrl = '';
|
|
16
|
+
this.tokenData = '';
|
|
17
|
+
this.mock = false;
|
|
18
|
+
}
|
|
19
|
+
async getToken(force) {
|
|
20
|
+
let token = '';
|
|
21
|
+
const now = +new Date();
|
|
22
|
+
let need = force === true;
|
|
23
|
+
if (this.tokenData) {
|
|
24
|
+
const datas = this.tokenData.split('^_^');
|
|
25
|
+
token = datas[0];
|
|
26
|
+
const lastTime = datas[1];
|
|
27
|
+
const spliceTime = datas[2];
|
|
28
|
+
if (now - parseInt(lastTime, 10) - parseInt(spliceTime, 10) > 0) {
|
|
29
|
+
need = true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
need = true;
|
|
34
|
+
}
|
|
35
|
+
if (need === true) {
|
|
36
|
+
const data = await this.fetch(() => this.tokenUrl, 'get', {}, false);
|
|
37
|
+
token = data.access_token;
|
|
38
|
+
this.tokenData = `${token}^_^${now}^_^${data.expires_in * 1000}`;
|
|
39
|
+
}
|
|
40
|
+
return token;
|
|
41
|
+
}
|
|
42
|
+
async fetch(uri, method, data, needToken = true, buffer = false) {
|
|
43
|
+
if (this.mock === true) {
|
|
44
|
+
return {};
|
|
45
|
+
}
|
|
46
|
+
let token = needToken ? await this.getToken() : '';
|
|
47
|
+
if (!needToken || token) {
|
|
48
|
+
const start = +new Date();
|
|
49
|
+
let url = uri(token);
|
|
50
|
+
const param = method === 'get' ? {
|
|
51
|
+
method,
|
|
52
|
+
json: buffer ? false : true,
|
|
53
|
+
qs: data,
|
|
54
|
+
encoding: buffer ? null : undefined
|
|
55
|
+
} : {
|
|
56
|
+
json: data,
|
|
57
|
+
method,
|
|
58
|
+
encoding: buffer ? null : undefined
|
|
59
|
+
};
|
|
60
|
+
let response = await rp.default({
|
|
61
|
+
uri: url,
|
|
62
|
+
...param
|
|
63
|
+
});
|
|
64
|
+
if (this.authErrorCodes.includes(response.errcode)) {
|
|
65
|
+
token = await this.getToken(true);
|
|
66
|
+
url = uri(token);
|
|
67
|
+
response = await rp.default({
|
|
68
|
+
uri: url,
|
|
69
|
+
...param
|
|
70
|
+
});
|
|
71
|
+
Throw.if(response.errcode && response.errcode - 0 !== 0, `${url}-${response.errcode}-${response.errmsg}`);
|
|
72
|
+
}
|
|
73
|
+
Throw.if(response.errcode && response.errcode - 0 !== 0, `${url}-${response.errcode}-${response.errmsg}`);
|
|
74
|
+
logger.info(`fetch data ${+new Date() - start} ms`);
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
package/wx/mini.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BaseWx } from './base.js';
|
|
2
|
+
import { WxLiveInfo, WxLiveReplay, WxMiniConfig } from './types.js';
|
|
3
|
+
export declare class WxMini extends BaseWx {
|
|
4
|
+
protected name: string;
|
|
5
|
+
private config;
|
|
6
|
+
private templNameCache;
|
|
7
|
+
private templKeyCache;
|
|
8
|
+
constructor(config: WxMiniConfig);
|
|
9
|
+
getUnlimited({ scene, model, page, fullpath, png, width, lineColor }: {
|
|
10
|
+
scene: string;
|
|
11
|
+
model?: string;
|
|
12
|
+
page?: string;
|
|
13
|
+
fullpath?: string;
|
|
14
|
+
png?: '0' | '1' | 0 | 1 | true | false | 'true' | 'false';
|
|
15
|
+
width?: number;
|
|
16
|
+
lineColor?: {
|
|
17
|
+
r: number;
|
|
18
|
+
g: number;
|
|
19
|
+
b: number;
|
|
20
|
+
};
|
|
21
|
+
}): Promise<any>;
|
|
22
|
+
sendMs({ openids, name, data, scene }: {
|
|
23
|
+
openids: string[];
|
|
24
|
+
name: string;
|
|
25
|
+
data: {
|
|
26
|
+
[key: string]: string | number;
|
|
27
|
+
};
|
|
28
|
+
scene: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
code2session(code: string): Promise<{
|
|
31
|
+
openid: string;
|
|
32
|
+
session_key: string;
|
|
33
|
+
unionid?: string;
|
|
34
|
+
}>;
|
|
35
|
+
getTemplIds(): {
|
|
36
|
+
[key: string]: string[];
|
|
37
|
+
};
|
|
38
|
+
decrypt<T>({ sessionKey, encryptedData, iv }: {
|
|
39
|
+
iv: string;
|
|
40
|
+
sessionKey: string;
|
|
41
|
+
encryptedData: string;
|
|
42
|
+
}): T | undefined;
|
|
43
|
+
getLiveInfo(start: number, limit: number): Promise<WxLiveInfo[]>;
|
|
44
|
+
getLiveReplay(room_id: number, start: number, limit: number): Promise<WxLiveReplay[]>;
|
|
45
|
+
getPhone(code: string, openid: string): Promise<{
|
|
46
|
+
phoneNumber: any;
|
|
47
|
+
purePhoneNumber: any;
|
|
48
|
+
countryCode: any;
|
|
49
|
+
timestamp: any;
|
|
50
|
+
appid: any;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
package/wx/mini.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import crypto from 'crypto';
|
|
2
|
+
import { Throw } from '../error.js';
|
|
3
|
+
import { BaseWx } from './base.js';
|
|
4
|
+
export class WxMini extends BaseWx {
|
|
5
|
+
constructor(config) {
|
|
6
|
+
super();
|
|
7
|
+
this.name = 'wxMini';
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.tokenUrl = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${this.config.appId}&secret=${this.config.appSecret}`;
|
|
10
|
+
this.templNameCache = {};
|
|
11
|
+
this.templKeyCache = {};
|
|
12
|
+
if (this.config.messages) {
|
|
13
|
+
for (const item of this.config.messages) {
|
|
14
|
+
if (!this.templNameCache[item.name]) {
|
|
15
|
+
this.templNameCache[item.name] = [];
|
|
16
|
+
}
|
|
17
|
+
this.templNameCache[item.name].push({
|
|
18
|
+
tmplId: item.tmplId,
|
|
19
|
+
page: `pages/${item.model}/${item.page}/${item.page}`
|
|
20
|
+
});
|
|
21
|
+
for (const key of item.keys) {
|
|
22
|
+
if (!this.templKeyCache[key]) {
|
|
23
|
+
this.templKeyCache[key] = [];
|
|
24
|
+
}
|
|
25
|
+
this.templKeyCache[key].push(item.tmplId);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async getUnlimited({ scene, model, page, fullpath, png, width, lineColor }) {
|
|
31
|
+
Throw.if(!fullpath && (!model || !page), '路径不完整,fullpath或者model+page必须传一个');
|
|
32
|
+
const pageto = fullpath ?? `pages/${model}/${page}/${page}`;
|
|
33
|
+
return await this.fetch((token) => `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${token}`, 'post', {
|
|
34
|
+
scene,
|
|
35
|
+
page: pageto,
|
|
36
|
+
line_color: lineColor ?? this.config.qrcode?.lineColor,
|
|
37
|
+
is_hyaline: png === 'true' || png === '1' || png === true || png === 1,
|
|
38
|
+
width: width ?? this.config.qrcode?.width ?? 500
|
|
39
|
+
}, true, true);
|
|
40
|
+
}
|
|
41
|
+
async sendMs({ openids, name, data, scene }) {
|
|
42
|
+
const temps = this.templNameCache[name];
|
|
43
|
+
const dataSend = {};
|
|
44
|
+
for (const [key, value] of Object.entries(data)) {
|
|
45
|
+
dataSend[key] = { value: value ?? '' };
|
|
46
|
+
}
|
|
47
|
+
if (scene) {
|
|
48
|
+
scene = `?${scene}`;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
scene = '';
|
|
52
|
+
}
|
|
53
|
+
for (const temp of temps) {
|
|
54
|
+
for (const touser of openids) {
|
|
55
|
+
await this.fetch((token) => `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${token}`, 'post', {
|
|
56
|
+
touser,
|
|
57
|
+
data: dataSend,
|
|
58
|
+
template_id: temp.tmplId,
|
|
59
|
+
page: `${temp.page}${scene}`
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async code2session(code) {
|
|
65
|
+
const data = await this.fetch(() => `https://api.weixin.qq.com/sns/jscode2session?appid=${this.config.appId}&secret=${this.config.appSecret}&js_code=${code}&grant_type=authorization_code`, 'get', {}, false);
|
|
66
|
+
return {
|
|
67
|
+
openid: data.openid,
|
|
68
|
+
session_key: data.session_key,
|
|
69
|
+
unionid: data.unionid
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
getTemplIds() {
|
|
73
|
+
return this.templKeyCache;
|
|
74
|
+
}
|
|
75
|
+
decrypt({ sessionKey, encryptedData, iv }) {
|
|
76
|
+
Throw.if(!sessionKey, '会话过期,请重新登陆!');
|
|
77
|
+
const sessionKeyBuf = Buffer.from(sessionKey, 'base64');
|
|
78
|
+
const encryptedDataBuf = Buffer.from(encryptedData, 'base64');
|
|
79
|
+
const ivBuf = Buffer.from(iv, 'base64');
|
|
80
|
+
try {
|
|
81
|
+
// 解密
|
|
82
|
+
const decipher = crypto.createDecipheriv('aes-128-cbc', sessionKeyBuf, ivBuf);
|
|
83
|
+
// 设置自动 padding 为 true,删除填充补位
|
|
84
|
+
decipher.setAutoPadding(true);
|
|
85
|
+
const decoded = decipher.update(encryptedDataBuf, undefined, 'utf8') + decipher.final('utf8');
|
|
86
|
+
const decodedData = JSON.parse(decoded);
|
|
87
|
+
Throw.if(decodedData.watermark.appid !== this.config.appId, '加密验证失败');
|
|
88
|
+
return decodedData;
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
throw new Error('加密验证失败');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
async getLiveInfo(start, limit) {
|
|
95
|
+
const data = await this.fetch((token) => `https://api.weixin.qq.com/wxa/business/getliveinfo?access_token=${token}`, 'post', { start, limit });
|
|
96
|
+
return data.room_info;
|
|
97
|
+
}
|
|
98
|
+
async getLiveReplay(room_id, start, limit) {
|
|
99
|
+
const data = await this.fetch((token) => `https://api.weixin.qq.com/wxa/business/getliveinfo?access_token=${token}`, 'post', { room_id, start, limit, action: 'get_replay' });
|
|
100
|
+
return data.live_replay;
|
|
101
|
+
}
|
|
102
|
+
async getPhone(code, openid) {
|
|
103
|
+
const data = await this.fetch((token) => `https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=${token}`, 'post', { code, openid });
|
|
104
|
+
return {
|
|
105
|
+
phoneNumber: data.phone_info.phoneNumber,
|
|
106
|
+
purePhoneNumber: data.phone_info.purePhoneNumber,
|
|
107
|
+
countryCode: data.phone_info.countryCode,
|
|
108
|
+
timestamp: data.phone_info.watermark.timestamp,
|
|
109
|
+
appid: data.phone_info.watermark.appid
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
package/wx/organ.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { BaseWx } from './base.js';
|
|
2
|
+
import { WxDepartment, WxOrganConfig, WxOrganFile, WxOrganImage, WxOrganMarkDown, WxOrganMini, WxOrganMpNews, WxOrganNews, WxOrganTaskCard, WxOrganText, WxOrganTextCard, WxOrganUser, WxOrganUserSimply, WxOrganVideo, WxOrganVoice } from './types.js';
|
|
3
|
+
export declare class WxOrgan extends BaseWx {
|
|
4
|
+
protected name: string;
|
|
5
|
+
private config;
|
|
6
|
+
private miniMessCache;
|
|
7
|
+
private messCache;
|
|
8
|
+
constructor(config: WxOrganConfig);
|
|
9
|
+
createDepartment(param: WxDepartment): Promise<number>;
|
|
10
|
+
updateDepartment(param: WxDepartment): Promise<void>;
|
|
11
|
+
deleteDepartment(id: number): Promise<void>;
|
|
12
|
+
getDepartmentList(id?: number): Promise<WxDepartment[]>;
|
|
13
|
+
createUser(param: WxOrganUser): Promise<string | number>;
|
|
14
|
+
getUser(userid: number | string): Promise<WxOrganUser>;
|
|
15
|
+
updateUser(param: WxOrganUser): Promise<void>;
|
|
16
|
+
deleteUser(userid: number | string): Promise<void>;
|
|
17
|
+
batchDeleteUser(useridlist: Array<number | string>): Promise<void>;
|
|
18
|
+
getDeptUserSimply(department_id: number, fetch_child: boolean): Promise<WxOrganUserSimply[]>;
|
|
19
|
+
getDeptUser(department_id: number, fetch_child: boolean): Promise<WxOrganUser[]>;
|
|
20
|
+
userid2openid(userid: number | string): Promise<string>;
|
|
21
|
+
openid2userid(openid: string): Promise<number | string>;
|
|
22
|
+
authsucc(userid: string): Promise<void>;
|
|
23
|
+
inviteUsers({ user, party, tag }: {
|
|
24
|
+
user?: Array<number | string>;
|
|
25
|
+
party?: number[];
|
|
26
|
+
tag?: number[];
|
|
27
|
+
}): Promise<{
|
|
28
|
+
invaliduser?: Array<number | string>;
|
|
29
|
+
invalidparty?: number[];
|
|
30
|
+
invalidtag?: number[];
|
|
31
|
+
}>;
|
|
32
|
+
createTag(tagname: string, tagid: number): Promise<number>;
|
|
33
|
+
updateTag(tagname: string, tagid: number): Promise<void>;
|
|
34
|
+
deleteTag(tagid: number): Promise<void>;
|
|
35
|
+
createTagUser(tagid: number, userlist: Array<string | number>): Promise<void>;
|
|
36
|
+
deleteTagUser(tagid: number, userlist: Array<string | number>): Promise<void>;
|
|
37
|
+
getTagUser(tagid: number): Promise<{
|
|
38
|
+
tagname: string;
|
|
39
|
+
userlist: Array<{
|
|
40
|
+
userid: string | number;
|
|
41
|
+
name: string;
|
|
42
|
+
}>;
|
|
43
|
+
partylist: number[];
|
|
44
|
+
}>;
|
|
45
|
+
getTag(): Promise<Array<{
|
|
46
|
+
tagid: number;
|
|
47
|
+
tagname: string;
|
|
48
|
+
}>>;
|
|
49
|
+
updateTaskCard(userids: Array<string | number>, task_id: string, clicked_key: string): Promise<void>;
|
|
50
|
+
sendMiniMs({ touser, toparty, totag, name, scene, ms }: {
|
|
51
|
+
touser?: Array<number | string>;
|
|
52
|
+
toparty?: number[];
|
|
53
|
+
totag?: number[];
|
|
54
|
+
name: string;
|
|
55
|
+
scene?: string;
|
|
56
|
+
ms: WxOrganMini;
|
|
57
|
+
}): Promise<void>;
|
|
58
|
+
sendMs({ touser, toparty, totag, name, ms }: {
|
|
59
|
+
touser?: Array<number | string>;
|
|
60
|
+
toparty?: number[];
|
|
61
|
+
totag?: number[];
|
|
62
|
+
name: string;
|
|
63
|
+
ms: WxOrganText | WxOrganImage | WxOrganVoice | WxOrganVideo | WxOrganFile | WxOrganTextCard | WxOrganNews | WxOrganMpNews | WxOrganMarkDown | WxOrganTaskCard;
|
|
64
|
+
}): Promise<void>;
|
|
65
|
+
}
|