patenttrans.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. 'use strict';
  2. const { CrudService } = require('naf-framework-mongoose/lib/service');
  3. const { BusinessError, ErrorCode } = require('naf-core').Error;
  4. const _ = require('lodash');
  5. const assert = require('assert');
  6. const { ObjectId } = require('mongoose').Types;
  7. const moment = require('moment');
  8. // 专利信息
  9. class Patent_transService extends CrudService {
  10. constructor(ctx) {
  11. super(ctx, 'patenttrans');
  12. this.model = this.ctx.model.Patent.Patenttrans;
  13. }
  14. /**
  15. * 专利交易审核
  16. * @param {body} body 参数
  17. * @property id 数据id
  18. * @property status 交底书要改变成的状态
  19. * @property info 其他数据,当做多个备注,记录使用
  20. */
  21. async check({ id, status, remark }) {
  22. await this.model.updateOne({ _id: ObjectId(id) }, { status });
  23. // 换成对应的状态码,record在下面
  24. return await this.record({ id, method: status, remark });
  25. }
  26. async record({ id, method, remark }) {
  27. let word = '';
  28. switch (`${method}`) {
  29. case 'create':
  30. word = '已申请';
  31. break;
  32. case 'update':
  33. word = '修改';
  34. break;
  35. case '1':
  36. word = '填写完合同,等待机构审核';
  37. break;
  38. case '-1':
  39. word = '填写合同审核失败,请重填';
  40. break;
  41. case '2':
  42. word = '合同审核通过,待用户确认';
  43. break;
  44. case '3':
  45. word = '用户确认成功,机构归档';
  46. break;
  47. case '-3':
  48. word = '归档失败';
  49. break;
  50. case '4':
  51. word = '归档成功';
  52. break;
  53. default:
  54. word = '未知状态';
  55. break;
  56. }
  57. const data = await this.model.findById(id);
  58. if (!data) {
  59. throw new BusinessError(
  60. ErrorCode.DATA_NOT_EXIST,
  61. '添加记录----未找到数据'
  62. );
  63. }
  64. const obj = {
  65. time: moment().format('YYYY-MM-DD HH:mm:ss'),
  66. word,
  67. remark,
  68. };
  69. data.record.push(obj);
  70. const res = await data.save();
  71. this.toNotice(id, method);
  72. return res;
  73. }
  74. async toNotice(id, code) {
  75. const data = await this.model.findById(id);
  76. if (!data) return;
  77. const { user_id, admin_id, status, patent_name } = data;
  78. const arr = [];
  79. let content = '';
  80. let to = '';
  81. switch (code) {
  82. case 'update':
  83. content = `用户的【${patent_name}】填写了交易合同,请及时前往申请专利交易模块中进行审核`;
  84. if (status === '1') {
  85. to = admin_id;
  86. }
  87. break;
  88. case '-1':
  89. content = `用户的【${patent_name}】未通过机构的审核,请您及时修改,重新填写合同`;
  90. to = user_id;
  91. break;
  92. case '1':
  93. content = `用户的【${patent_name}】交易合同填写已完成,请及时前往申请专利交易模块中进行审核`;
  94. to = user_id;
  95. break;
  96. case '2':
  97. content = `用户的【${patent_name}】通过机构的审核,请及时进行交易确认`;
  98. to = user_id;
  99. break;
  100. case '3':
  101. content = `用户的【${patent_name}】交易合同已确认完成,请及时前往申请专利交易模块中进行归档`;
  102. to = user_id;
  103. break;
  104. case '-3':
  105. content = `用户的【${patent_name}】交易合同归档失败`;
  106. to = user_id;
  107. break;
  108. case '4':
  109. content = `用户的【${patent_name}】交易合同归档成功`;
  110. to = user_id;
  111. break;
  112. default:
  113. break;
  114. }
  115. if (arr.length > 0) {
  116. await this.notice.insertMany(arr);
  117. } else {
  118. const obj = { to, content };
  119. await this.notice.create(obj);
  120. }
  121. }
  122. }
  123. module.exports = Patent_transService;