dock_user.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 { ObjectId } = require('mongoose').Types;
  6. const assert = require('assert');
  7. // 展会用户
  8. class Dock_userService extends CrudService {
  9. constructor(ctx) {
  10. super(ctx, 'dock_user');
  11. this.model = this.ctx.model.Dock.DockUser;
  12. }
  13. async create(data) {
  14. const { dock_id, user_id } = data;
  15. let { productList } = data;
  16. const user = await this.model.findOne({ dock_id, user_id });
  17. if (!user) {
  18. const { productList = [] } = data;
  19. if (productList.length > 0) {
  20. data.productList = productList.map(i => {
  21. i.status = '0';
  22. i._id = ObjectId();
  23. return i;
  24. });
  25. }
  26. return await this.model.create(data);
  27. }
  28. productList = _.differenceBy(productList, user.productList, 'id');
  29. if (productList.length > 0) {
  30. productList = productList.map(i => {
  31. i.status = '0';
  32. i._id = ObjectId();
  33. return i;
  34. });
  35. }
  36. user.productList = user.productList.concat(productList);
  37. return await user.save();
  38. }
  39. async update({ id }, data) {
  40. const { productList = [] } = data;
  41. if (productList.length > 0) {
  42. data.productList = productList.map(i => {
  43. console.log(i.status);
  44. if (i.status === '1') data.status = '1';
  45. if (!i._id)i._id = ObjectId();
  46. else i._id = ObjectId(i._id);
  47. return i;
  48. });
  49. }
  50. console.log(data);
  51. return this.model.updateOne({ _id: ObjectId(id) }, data);
  52. }
  53. /**
  54. * 申请参展的产品审核
  55. * @param {Object} {id} 申请参展的产品的_id
  56. * @param {Object} {good_id, status} 要改变的状态
  57. * 只要有一个产品通过审核,该用户就更变为可通过状态=>need_pass_user
  58. */
  59. async goodCheck({ id }, { good_id, status }) {
  60. const object = await this.model.findOne({ _id: ObjectId(id), productList: { $elemMatch: { id: good_id } } });
  61. if (!object) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到需要审核的产品信息');
  62. const product = object.productList.find(f => ObjectId(good_id).equals(f.id));
  63. if (!product) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未在需要审核的产品中找到指定的产品');
  64. product.status = status;
  65. await this.model.updateOne({ _id: ObjectId(id), productList: { $elemMatch: { id: good_id } } }, object);
  66. const need_pass_user = object.productList.some(e => e.status === '1');
  67. if (need_pass_user) this.userCheck({ id: object._id }, { status: '1' });
  68. }
  69. /**
  70. * 申请参展的用户审核
  71. * @param {Object} {id} 用户申请时生成的数据的id
  72. * @param {Object} {status} 要改变的状态
  73. */
  74. async userCheck({ id }, { status }) {
  75. const object = await this.model.findById(id);
  76. if (!object) throw new BusinessError(ErrorCode.DATA_NOT_EXIST, '未找到指定的用户申请');
  77. object.status = status;
  78. await object.save();
  79. }
  80. }
  81. module.exports = Dock_userService;