'use strict'; /** * 标准库std 相关接口 * * @author Mai * @date 2020/3/15 * @version */ // 加密类 const jwt = require('jsonwebtoken'); const privateKey = 'jl2pm3850key888sc'; const dealCatagoryApi = '/api/external/jlbb/folder'; const dealDataApi = '/api/external/jlbb/contract'; const pmUtils = { getJwt() { return jwt.sign({}, privateKey, {expiresIn: '10m', algorithm: 'HS256'}); }, async postData(ctx, url, data) { const res = await ctx.curl(url, { method: 'GET', //'POST', contentType: 'json', data, dataType: 'json', timeout: [2000, 10000], timing: true, }); if (res.status !== 200) throw '请求项目管理数据异常'; if (!res.data || res.data.code) throw '项目管理返回数据异常'; return res.data.data; }, }; const filterLeaf = function(node, result) { if (node.children) { for (const child of node.children) { filterLeaf(child, result); } } else if (node.isfolder !== undefined && !node.isfolder) result.push(node); }; module.exports = { async dealCatagory(ctx, pCode) { // mock // return [ {id: 1, name: 'A标'}, {id: 2, name: 'B标'}, {id: 3, name: 'C标'}]; const url = ctx.app.config.managementProxyPath + dealCatagoryApi; try { const data = await pmUtils.postData(ctx, url, { code: pCode, token: pmUtils.getJwt() }); const result = []; filterLeaf(data, result); return result; } catch (err) { ctx.log(err); return []; } }, async dealData(ctx, pCode, selects) { if (!selects || selects.length === 0) return {}; const url = ctx.app.config.managementProxyPath + dealDataApi; try { const data = { code: pCode, token: pmUtils.getJwt(), key: ['contracts', 'tree_contracts'], bidsectionid: selects }; return await pmUtils.postData(ctx, url, data); } catch (err) { ctx.log(err); return {}; } } };