pm.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. 'use strict';
  2. /**
  3. * 标准库std 相关接口
  4. *
  5. * @author Mai
  6. * @date 2020/3/15
  7. * @version
  8. */
  9. // 加密类
  10. const jwt = require('jsonwebtoken');
  11. const privateKey = 'jl2pm3850key888sc';
  12. const dealCatagoryApi = '/api/external/jlbb/folder';
  13. const dealDataApi = '/api/external/jlbb/contract';
  14. const pmUtils = {
  15. getJwt() {
  16. return jwt.sign({}, privateKey, {expiresIn: '10m', algorithm: 'HS256'});
  17. },
  18. async postData(ctx, url, data) {
  19. const res = await ctx.curl(url, {
  20. method: 'GET', //'POST',
  21. contentType: 'json',
  22. data,
  23. dataType: 'json',
  24. timeout: [2000, 10000],
  25. timing: true,
  26. });
  27. if (res.status !== 200) throw '请求项目管理数据异常';
  28. if (!res.data || res.data.code) throw '项目管理返回数据异常';
  29. return res.data.data;
  30. },
  31. };
  32. const filterLeaf = function(node, result) {
  33. if (node.children) {
  34. for (const child of node.children) {
  35. filterLeaf(child, result);
  36. }
  37. } else if (node.isfolder !== undefined && !node.isfolder) result.push(node);
  38. };
  39. module.exports = {
  40. async dealCatagory(ctx, pCode) {
  41. // mock
  42. // return [ {id: 1, name: 'A标'}, {id: 2, name: 'B标'}, {id: 3, name: 'C标'}];
  43. const url = ctx.app.config.managementProxyPath + dealCatagoryApi;
  44. try {
  45. const data = await pmUtils.postData(ctx, url, { code: pCode, token: pmUtils.getJwt() });
  46. const result = [];
  47. filterLeaf(data, result);
  48. return result;
  49. } catch (err) {
  50. ctx.log(err);
  51. return [];
  52. }
  53. },
  54. async dealData(ctx, pCode, selects) {
  55. if (!selects || selects.length === 0) return {};
  56. const url = ctx.app.config.managementProxyPath + dealDataApi;
  57. try {
  58. const data = { code: pCode, token: pmUtils.getJwt(), key: ['contracts', 'tree_contracts'], bidsectionid: selects };
  59. return await pmUtils.postData(ctx, url, data);
  60. } catch (err) {
  61. ctx.log(err);
  62. return {};
  63. }
  64. }
  65. };