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
46
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
import * as dd from 'dingtalk-jsapi';
import { Http, ViewTool } from "ibiz-core";
export interface stateResult {
/**
* 状态
*
* @memberof stateResult
*/
state: "SUCCESS" | "ERROR";
/**
* 数据
*
* @memberof stateResult
*/
result: any;
}
/**
* 第三方登录服务
*
* @memberof AppThirdService
*/
export class AppThirdService {
/**
* 单例变量声明
*
* @private
* @static
* @type {AppThirdService}
* @memberof AppThirdService
*/
private static appThirdService: AppThirdService;
/**
* 获取 AppThirdService 单例对象
*
* @static
* @returns {AppThirdService}
* @memberof AppThirdService
*/
public static getInstance(): AppThirdService {
if (!AppThirdService.appThirdService) {
AppThirdService.appThirdService = new AppThirdService();
}
return this.appThirdService;
}
/**
* 钉钉授权登录
*
* @memberof AppThirdService
*/
public dingtalkLogin(Environment: any): Promise<any> {
return new Promise((resolve) => {
// 请求头
const headers = {};
const tempViewParam = ViewTool.getDcSystemIdViewParam();
if (tempViewParam && tempViewParam.srfdcsystem) {
Object.assign(headers, { srfdcsystem: tempViewParam.srfdcsystem });
}
const get: Promise<any> = Http.getInstance().get('/uaa/open/dingtalk/appid', {}, false, headers);
get.then((response: any) => {
if (response && response.status === 200) {
const data = response.data;
if (data && data.appid) {
resolve({ state: "SUCCESS", data: data });
} else {
resolve({ state: "ERROR", message: `获取网站应用appid失败,${data.detail}` });
}
}
}).catch((error: any) => {
const data = error.data;
if (data && data.detail) {
resolve({ state: "ERROR", message: `获取网站应用appid失败,${data.detail}` });
} else {
resolve({ state: "ERROR", message: `获取网站应用appid失败` });
}
});
})
}
/**
* 企业微信授权登录
*
* @memberof AppThirdService
*/
public wxWorkLogin(Environment: any): Promise<any> {
return new Promise((resolve) => {
// 请求头
const headers = {};
const tempViewParam = ViewTool.getDcSystemIdViewParam();
if (tempViewParam && tempViewParam.srfdcsystem) {
Object.assign(headers, { srfdcsystem: tempViewParam.srfdcsystem });
}
const get: Promise<any> = Http.getInstance().get('/uaa/open/wxwork/appid', {}, false, headers);
get.then((response: any) => {
if (response && response.status === 200) {
const data = response.data;
if (data && (data.corp_id || data.appid)) {
resolve({ state: "SUCCESS", data: data });
} else {
resolve({ state: "ERROR", message: `获取网站应用appid失败,${data.detail}` });
}
}
}).catch((error: any) => {
const data = error.data;
if (data && data.detail) {
resolve({ state: "ERROR", message: `获取网站应用appid失败,${data.detail}` });
} else {
resolve({ state: "ERROR", message: `获取网站应用appid失败` });
}
});
})
}
/**
* 钉钉内部免登
*
* @memberof AppThirdService
*/
public embedDingTalkLogin(Environment: any): Promise<any> {
return new Promise((resolve) => {
// 请求头
const headers = {};
const tempViewParam = ViewTool.getDcSystemIdViewParam();
if (tempViewParam && tempViewParam.srfdcsystem) {
Object.assign(headers, { srfdcsystem: tempViewParam.srfdcsystem });
}
const param = ViewTool.handleViewParam(window.location.href);
if(param.corpId){
let corpId:string = param.corpId;
if(corpId.indexOf("#") > -1){
corpId = corpId.split("#")[0];
}
dd.runtime.permission.requestAuthCode({ corpId }).then((res: any) => {
if (res && res.code) {
Http.getInstance().get(`/uaa/open/dingtalk/auth/${res.code}`, {}, false, headers).then((res: any) => {
if (res.status == 200 && (res.data.token || res.data.user)) {
resolve({ state: "SUCCESS", data: res.data });
} else {
resolve({ state: "ERROR", message: `${res.data.message}` });
}
})
} else {
resolve({ state: "ERROR", message: `钉钉用户信息获取失败` });
}
}).catch((error: any) => {
resolve({ state: "ERROR", message: `钉钉用户信息获取失败` });
})
}else{
resolve({ state: "ERROR", message: `获取企业ID失败` });
}
})
}
}