lrf402788946 4 years ago
parent
commit
1441b8ab35

+ 10 - 0
app/controller/dock/.dock_user.js

@@ -61,4 +61,14 @@ module.exports = {
     requestBody: ["!status"],
     service: "userCheck",
   },
+
+  findUser:{
+    parameters: {
+      query: {
+        dock_id: "dock_id",
+        user_id: "user_id",
+      },
+    },
+    service: "findUser",
+  }
 };

+ 14 - 2
app/controller/dock/.index.js

@@ -50,7 +50,7 @@ module.exports = {
       query: {
         title: "title",
         room_id: "room_id",
-        status:"status",
+        status: "status",
         "create_time@start": "create_time@start",
         "create_time@end": "create_time@end",
       },
@@ -76,5 +76,17 @@ module.exports = {
     params: ["!id"],
     requestBody: ["room_phone", "password"],
     service: "vipLogin",
-  }
+  },
+  product: {
+    parameters: {
+      query: {
+        dock_id: "dock_id",
+        type: "type",
+      },
+    },
+    service: "dockProduct",
+    options: {
+      query: ["skip", "limit"],
+    },
+  },
 };

+ 4 - 0
app/controller/dock/index.js

@@ -9,5 +9,9 @@ class IndexController extends Controller {
     super(ctx);
     this.service = this.ctx.service.dock.index;
   }
+  async product() {
+    const { data, total } = await this.service.dockProduct(this.ctx.query);
+    this.ctx.ok({ data, total });
+  }
 }
 module.exports = CrudController(IndexController, meta);

+ 1 - 1
app/model/dock.js

@@ -15,7 +15,7 @@ const vipuser = new Schema({
   vipphone: { type: String, required: false, maxLength: 200 }, // 联系人手机
   email: { type: String, required: false, maxLength: 20 }, // 郵箱
   content: { type: String, required: false }, // 内容
-  password: { type: Secret, select: false }, // 密码
+  password: { type: String, select: false }, // 密码
 });
 
 vipuser.index({ id: 1 });

+ 1 - 1
app/model/transaction.js

@@ -22,7 +22,7 @@ const transaction = {
   product_id: { type: ObjectId }, // 产品id
   product: { type: String }, // 产品名称
   pact: { type: pact }, // 合同备案
-  status: { type: String, default: '0' }, // 状态(0-正在洽谈;1-达成意向;2-交易备案;3-交易完成;4-交易失败)
+  status: { type: String, default: '0' }, // 状态(0-正在洽谈;1-达成意向;2-交易备案(待确定);3-交易完成;4-交易失败)
   remark: { type: String, maxLength: 200 },
   create_time: { type: String, default: moment().format('YYYY-MM-DD HH:mm:ss') },
 };

+ 1 - 0
app/router/dock/dock_user.js

@@ -7,6 +7,7 @@ module.exports = app => {
   const vision = 'v0';
   const index = 'dock';
   const target = 'dockUser';
+  router.get(target, `${profix}${vision}/${index}/${target}/find`, controller[index][target].findUser);
   router.post(target, `${profix}${vision}/${index}/${target}/check/user/:id`, controller[index][target].userCheck);
   router.post(target, `${profix}${vision}/${index}/${target}/check/goods/:id`, controller[index][target].goodsCheck);
   router.resources(target, `${profix}${vision}/${index}/${target}`, controller[index][target]); // index、create、show、destroy

+ 1 - 0
app/router/dock/index.js

@@ -7,6 +7,7 @@ module.exports = app => {
   const vision = 'v0';
   const index = 'dock';
   const target = 'index';
+  router.get(target, `${profix}${vision}/${index}/${target}/product`, controller[index][target].product);
   router.post(target, `${profix}${vision}/${index}/${target}/viplogin/:id`, controller[index][target].vipLogin);
   router.post(target, `${profix}${vision}/${index}/${target}/login`, controller[index][target].login);
   router.resources(target, `${profix}${vision}/${index}/${target}`, controller[index][target]); // index、create、show、destroy

+ 5 - 0
app/service/dock/dock_user.js

@@ -65,6 +65,11 @@ class Dock_userService extends CrudService {
     object.status = status;
     await object.save();
   }
+
+  async findUser({ dock_id, user_id }) {
+    const res = await this.model.findOne({ dock_id: ObjectId(dock_id), user_id: ObjectId(user_id) });
+    return res;
+  }
 }
 
 module.exports = Dock_userService;

+ 14 - 0
app/service/dock/index.js

@@ -12,6 +12,7 @@ class IndexService extends CrudService {
   constructor(ctx) {
     super(ctx, 'index');
     this.model = this.ctx.model.Dock;
+    this.dockUser = this.ctx.model.DockUser;
   }
   async create(body) {
     const last = await this.model.findOne().sort({ room_id: -1 });
@@ -74,6 +75,19 @@ class IndexService extends CrudService {
     const token = jwt.sign(data, jwts);
     return token;
   }
+
+  async dockProduct({ dock_id, type, skip = 0, limit = 10 } = {}) {
+    assert(dock_id, '缺少展会信息');
+    assert(type, '要查询的类型');
+    const res = await this.dockUser.aggregate([
+      { $match: { dock_id: ObjectId(dock_id), 'goodsList.type': type } },
+      { $project: { goodsList: 1 } },
+      { $unwind: '$goodsList' },
+      { $match: { 'goodsList.status': '1' } },
+    ]);
+    const list = res.map(i => i.goodsList);
+    return { data: _.slice(list, skip, skip + limit), total: list.length };
+  }
 }
 
 module.exports = IndexService;

+ 17 - 0
ecosystem.config.js

@@ -0,0 +1,17 @@
+'use strict';
+
+const app = 'service-live-v0';
+module.exports = {
+  apps: [{
+    name: app, // 应用名称
+    script: './server.js', // 实际启动脚本
+    out: `./logs/${app}.log`,
+    error: `./logs/${app}.err`,
+    watch: [ // 监控变化的目录,一旦变化,自动重启
+      'app', 'config',
+    ],
+    env: {
+      NODE_ENV: 'production', // 环境参数,当前指定为生产环境
+    },
+  }],
+};

+ 9 - 0
server.js

@@ -0,0 +1,9 @@
+
+// eslint-disable-next-line strict
+const egg = require('egg');
+
+const workers = Number(process.argv[2] || require('os').cpus().length);
+egg.startCluster({
+  workers,
+  baseDir: __dirname,
+});