增加企业微信获取用户信息和发起审批的方法

This commit is contained in:
zhl 2023-04-17 10:43:04 +08:00
parent 24333d23cf
commit 1a48086d5c
2 changed files with 111 additions and 3 deletions

View File

@ -32,8 +32,12 @@ export class ChainTaskClass extends BaseModule {
public name: string
@prop()
public desc: string
// 谁发起的
@prop()
public starter: string
// 发起人的名称
@prop()
public starterName: string
@prop({ type: mongoose.Schema.Types.Mixed })
public taskData: any
@ -128,9 +132,9 @@ export class ChainTaskClass extends BaseModule {
/**
*
*/
public static async parseWxApprovalInfo({ taskId, name, desc, data, starter }) {
public static async parseWxApprovalInfo({ taskId, name, desc, data, starter, starterName }) {
let maxTryCount = parseInt(process.env.CHAIN_MAX_TRY)
let chainTask = await ChainTask.insertOrUpdate({ taskId }, { name, desc, starter, data })
let chainTask = await ChainTask.insertOrUpdate({ taskId }, { name, desc, starter, starterName, data })
let subTasks: any = []
if (chainTask.newRecord) {
let subTask

View File

@ -90,6 +90,108 @@ export class WechatWorkService {
})
return response
}
/**
*
* @param userid
*/
public async fetchUserInfo(userid: string) {
const url = `${WX_API_HOST}/cgi-bin/user/get`
const access_token = await this.getAccessToken()
let config: AxiosRequestConfig = {
method: 'get',
url,
params: {
access_token,
userid,
},
}
let response = await axios.request(config).then(response => {
return response.data
})
if (response.errcode) {
throw new Error(response.errmsg)
}
return response
}
/**
* ,
* @param userid
* @returns
*/
public async beginApproval({
userid,
title,
desc,
info,
}: {
userid: string
title: string
desc: string
info: string
}) {
const url = `${WX_API_HOST}/cgi-bin/oa/applyevent`
const access_token = await this.getAccessToken()
let config: AxiosRequestConfig = {
method: 'post',
url,
params: {
access_token,
},
data: {
creator_userid: userid,
template_id: process.env.WX_NOTIFY_TEMPLATE_ID,
use_template_approver: 0,
approver: [
{
userid: userid,
attr: 1,
},
],
apply_data: {
contents: [
{
control: 'Text',
id: process.env.WX_NOTIFY_TEXT_ID,
value: {
text: title,
},
},
],
},
summary_list: [
{
summary_info: [
{
text: title,
lang: 'zh_CN',
},
],
},
{
summary_info: [
{
text: desc,
lang: 'zh_CN',
},
],
},
{
summary_info: [
{
text: info,
lang: 'zh_CN',
},
],
},
],
},
}
let response = await axios.request(config).then(response => {
return response.data
})
return response
}
/**
* ,
* @param spNo
@ -122,9 +224,11 @@ export class WechatWorkService {
if (!fileId) {
throw new Error('no file')
}
let userInfo = await this.fetchUserInfo(starter)
let starterName = userInfo.name
let filePath = await this.fetchFile(fileId)
let data = excelToJson(filePath)
return { taskId: spNo, name, desc, data, starter }
return { taskId: spNo, name, desc, data, starter, starterName }
}
/**