patenttrans.js 3.7 KB

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