瀏覽代碼

审核通过数据;修改请求使用下级查询中间件

lrf 3 年之前
父節點
當前提交
81942c5087
共有 7 個文件被更改,包括 123 次插入23 次删除
  1. 32 0
      app/controller/.duplicate.js
  2. 13 0
      app/controller/duplicate.js
  3. 25 13
      app/middleware/duplicate.js
  4. 10 9
      app/router.js
  5. 15 0
      app/service/duplicate.js
  6. 27 0
      app/z_router/duplicate.js
  7. 1 1
      app/z_router/updateapply.js

+ 32 - 0
app/controller/.duplicate.js

@@ -0,0 +1,32 @@
+module.exports = {
+  show: {
+    parameters: {
+      params: ['!id'],
+    },
+    service: 'fetch',
+  },
+  index: {
+    parameters: {
+      query: {
+        apply_id: 'apply_id',
+        user_id: 'user_id',
+        user_name: 'user_name',
+        apply_year: 'apply_year',
+        title: 'title',
+        status: 'status',
+        'meta.createdAt@start': 'meta.createdAt@start',
+        'meta.createdAt@end': 'meta.createdAt@end',
+      },
+      // options: {
+      //   "meta.state": 0 // 默认条件
+      // },
+    },
+    service: 'query',
+    options: {
+      query: ['skip', 'limit'],
+      sort: ['meta.createdAt'],
+      desc: true,
+      count: true,
+    },
+  },
+};

+ 13 - 0
app/controller/duplicate.js

@@ -0,0 +1,13 @@
+'use strict';
+const meta = require('./.duplicate.js');
+const Controller = require('egg').Controller;
+const { CrudController } = require('naf-framework-mongoose-free/lib/controller');
+
+// 绩效申请审核通过备份数据
+class DuplicateController extends Controller {
+  constructor(ctx) {
+    super(ctx);
+    this.service = this.ctx.service.duplicate;
+  }
+}
+module.exports = CrudController(DuplicateController, meta);

+ 25 - 13
app/middleware/duplicate.js

@@ -1,20 +1,32 @@
 'use strict';
 const _ = require('lodash');
+const { ObjectId } = require('mongoose').Types;
 module.exports = options => {
   return async function duplicate(ctx, next) {
-    await next();
-    const body = ctx.response.body;
-    const { data } = body;
+    const data = _.get(ctx.request, 'body');
+    const id = _.get(ctx.params, 'id');
     const status = data.status;
-    if (status !== '2') return;
-    // 创建副本数据
-    const duplicateData = _.cloneDeep(data);
-    duplicateData.apply_id = data._id || data.id;
-    delete duplicateData._id;
-    delete duplicateData.id;
-    const q = { apply_id: duplicateData.apply_id, user_id: duplicateData.user_id };
-    // 先查询有没有,有就更新
-    // 一切都复制一份,将原数据id放到apply_id上,用来追溯/对比
-    // ctx.model.Duplicate.create(duplicateData);
+    if (status === '2') {
+      // 创建副本数据
+      let oData = await ctx.model.Apply.findById(id);
+      if (!oData) return;
+      oData = JSON.parse(JSON.stringify(oData));
+      oData = { ...oData, ...data };
+      const duplicateData = _.cloneDeep(oData);
+      duplicateData.apply_id = id;
+      delete duplicateData._id;
+      delete duplicateData.id;
+      const q = { apply_id: duplicateData.apply_id, user_id: duplicateData.user_id };
+      // // 先查询有没有,有就更新
+      const result = await ctx.model.Duplicate.findOne(q);
+      if (result) {
+        // 修改
+        ctx.model.Duplicate.updateOne({ _id: result._id || result.id }, duplicateData);
+      } else {
+        // 一切都复制一份,将原数据id放到apply_id上,用来追溯/对比
+        ctx.model.Duplicate.create(duplicateData);
+      }
+    }
+    await next();
   };
 };

+ 10 - 9
app/router.js

@@ -3,13 +3,14 @@
 /**
  * @param {Egg.Application} app - egg application
  */
-module.exports = (app) => {
+module.exports = app => {
   const { router, controller } = app;
-  router.get("/", controller.home.index);
-  router.post("/util", controller.home.util);
-  require("./z_router/setting")(app); // 绩效设置
-  require("./z_router/user")(app); // 用户关系
-  require("./z_router/apply")(app); // 绩效申请
-  require("./z_router/template")(app); // 绩效模板
-  require("./z_router/updateapply")(app); // 绩效修改申请
-};;
+  router.get('/', controller.home.index);
+  router.post('/util', controller.home.util);
+  require('./z_router/setting')(app); // 绩效设置
+  require('./z_router/user')(app); // 用户关系
+  require('./z_router/apply')(app); // 绩效申请
+  require('./z_router/template')(app); // 绩效模板
+  require('./z_router/updateapply')(app); // 绩效修改申请
+  require('./z_router/duplicate')(app); // 绩效申请通过
+};

+ 15 - 0
app/service/duplicate.js

@@ -0,0 +1,15 @@
+'use strict';
+const { CrudService } = require('naf-framework-mongoose-free/lib/service');
+const { BusinessError, ErrorCode } = require('naf-core').Error;
+const _ = require('lodash');
+const assert = require('assert');
+
+// 审核通过备份数据
+class DuplicateService extends CrudService {
+  constructor(ctx) {
+    super(ctx, 'duplicate');
+    this.model = this.ctx.model.Duplicate;
+  }
+}
+
+module.exports = DuplicateService;

+ 27 - 0
app/z_router/duplicate.js

@@ -0,0 +1,27 @@
+'use strict';
+// 路由配置
+const mainKey = 'duplicate';
+const keyZh = '绩效申请已通过';
+const routes = [
+  { method: 'get', path: `/${mainKey}`, controller: `${mainKey}.index`, name: `${mainKey}Query`, zh: `${keyZh}设置列表查询` },
+  { method: 'get', path: `/${mainKey}/:id`, controller: `${mainKey}.show`, name: `${mainKey}Fetch`, zh: `${keyZh}设置查询` },
+  // { method: 'post', path: `/${mainKey}`, controller: `${mainKey}.create`, name: `${mainKey}Create`, zh: `创建${keyZh}设置` },
+  // { method: 'post', path: `/${mainKey}/:id`, controller: `${mainKey}.update`, name: `${mainKey}Update`, zh: `修改${keyZh}` },
+  // { method: 'delete', path: `/${mainKey}/:id`, controller: `${mainKey}.destroy`, name: `${mainKey}Delete`, zh: `删除${keyZh}` },
+];
+
+module.exports = app => {
+  const { router, config } = app;
+  const mwares = app.middleware;
+  for (const route of routes) {
+    const { method, path, controller: ctl, zh } = route;
+    let { middleware = [] } = route;
+    if (!method || !path || !ctl) continue;
+    // 拼全路径
+    const allPath = `${config.routePrefix}${path}`;
+    // 处理中间件
+    if (middleware.length > 0) middleware = middleware.map(i => mwares[i]());
+    // 注册路由
+    router[method](zh, allPath, ...middleware, ctl);
+  }
+};

+ 1 - 1
app/z_router/updateapply.js

@@ -1,7 +1,7 @@
 'use strict';
 // 路由配置
 const routes = [
-  { method: 'get', path: '/updateapply', controller: 'updateapply.index', name: 'updateapplyQuery', zh: '绩效修改申请列表查询' },
+  { method: 'get', path: '/updateapply', controller: 'updateapply.index', middleware: [ 'applyQuery' ], name: 'updateapplyQuery', zh: '绩效修改申请列表查询' },
   { method: 'post', path: '/updateapply', controller: 'updateapply.create', name: 'updateapplyCreate', zh: '创建绩效修改申请设置' },
   { method: 'post', path: '/updateapply/:id', controller: 'updateapply.update', name: 'updateapplyUpdate', zh: '修改绩效修改申请设置' },
   // { method: 'delete', path: '/updateapply/:id', controller: 'achievementSetting.destroy', name: 'settingDelete', zh: '删除绩效设置' },