소스 검색

台账,基本操作,相似代码合并

MaiXinRong 7 년 전
부모
커밋
5e0ea76902
1개의 변경된 파일101개의 추가작업 그리고 121개의 파일을 삭제
  1. 101 121
      app/service/ledger.js

+ 101 - 121
app/service/ledger.js

@@ -201,6 +201,27 @@ module.exports = app => {
         }
 
         /**
+         * 根据full_path获取数据 full_path Like ‘1.2.3%’(传参full_path = '1.2.3%')
+         * @param {Number} tenderId - 标段id
+         * @param {String} full_path - 路径
+         * @returns {Promise<void>}
+         */
+        async getDataByFullPath(tenderId, full_path) {
+            this.initSqlBuilder();
+            this.sqlBuilder.setAndWhere('tender_id', {
+                value: tenderId,
+                operate: '='
+            });
+            this.sqlBuilder.setAndWhere('full_path', {
+                value: this.db.escape(full_path),
+                operate: 'Like'
+            });
+            let [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
+            const resultData = await this.db.query(sql, sqlParam);
+            return resultData;
+        }
+
+        /**
          * 根据 父节点ID 和 节点排序order 获取全部后节点数据
          * @param {Number} tenderId - 标段id
          * @param {Number} pid - 父节点id
@@ -328,42 +349,26 @@ module.exports = app => {
                 return [];
             }
             const selectData = await this.getDataByNodeId(tenderId, selectId);
+            if (!selectData) {
+                throw '新增节点数据错误';
+            }
             this.transaction = await this.db.beginTransaction();
 
-            if (selectData) {
-                try {
-                    // 选中节点的所有后兄弟节点,order+1
-                    await this._updateSelectNextsOrder(selectData);
-                    // 数据库创建新增节点数据
-                    await this._addNodeData(tenderId, selectData, data);
-                    await this.transaction.commit();
-                } catch (err) {
-                    await this.transaction.rollback();
-                    throw err;
-                }
-
-                // 查询应返回的结果
-                this.initSqlBuilder();
-                this.sqlBuilder.setAndWhere('tender_id', {
-                    value: selectData.tender_id,
-                    operate: '=',
-                });
-                this.sqlBuilder.setAndWhere('ledger_pid', {
-                    value: selectData.ledger_pid,
-                    operate: '=',
-                });
-                this.sqlBuilder.setAndWhere('order', {
-                    value: selectData.order,
-                    operate: '>',
-                });
-                const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
-                const resultData = this.db.query(sql, sqlParam);
 
-                return resultData;
-            } else {
-                throw '新增节点数据错误';
+            try {
+                // 选中节点的所有后兄弟节点,order+1
+                await this._updateSelectNextsOrder(selectData);
+                // 数据库创建新增节点数据
+                await this._addNodeData(tenderId, selectData, data);
+                await this.transaction.commit();
+            } catch (err) {
+                await this.transaction.rollback();
+                throw err;
             }
 
+            // 查询应返回的结果
+            const resultData = this.getNextsData(selectData.tender_id, selectData.ledger_pid, selectData.order);
+            return resultData;
         }
 
         /**
@@ -378,45 +383,34 @@ module.exports = app => {
                 return [];
             }
             const selectData = await this.getDataByNodeId(tenderId, selectId);
-            this.transaction = await this.db.beginTransaction();
+            if (!selectData) {
+                throw '删除节点数据错误';
+            }
 
+            this.transaction = await this.db.beginTransaction();
             let resultData = [];
-            if (selectData) {
-                try {
-                    // 获取将要被删除的数据
-                    this.initSqlBuilder();
-                    this.sqlBuilder.setAndWhere('tender_id', {
-                        value: tenderId,
-                        operate: '='
-                    });
-                    this.sqlBuilder.setAndWhere('full_path', {
-                        value: this.db.escape(selectData.full_path + '%'),
-                        operate: 'Like'
-                    });
-                    let [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
-                    resultData = await this.db.query(sql, sqlParam);
-                    // 删除
-                    this.initSqlBuilder();
-                    this.sqlBuilder.setAndWhere('tender_id', {
-                        value: tenderId,
-                        operate: '='
-                    });
-                    this.sqlBuilder.setAndWhere('full_path', {
-                        value: this.db.escape(selectData.full_path + '%'),
-                        operate: 'Like'
-                    });
-                    [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'delete');
-                    const operate = await this.transaction.query(sql, sqlParam);
-                    this.transaction.commit();
-                } catch(err) {
-                    resultData = [];
-                    await this.transaction.rollback();
-                    throw err;
-                }
-                return resultData;
-            } else {
-                throw '删除节点数据错误';
+            try {
+                // 获取将要被删除的数据
+                resultData = await this.getDataByFullPath(tenderId, selectData.full_path + '%');
+                // 删除
+                this.initSqlBuilder();
+                this.sqlBuilder.setAndWhere('tender_id', {
+                    value: tenderId,
+                    operate: '='
+                });
+                this.sqlBuilder.setAndWhere('full_path', {
+                    value: this.db.escape(selectData.full_path + '%'),
+                    operate: 'Like'
+                });
+                const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'delete');
+                const operate = await this.transaction.query(sql, sqlParam);
+                this.transaction.commit();
+            } catch(err) {
+                resultData = [];
+                await this.transaction.rollback();
+                throw err;
             }
+            return resultData;
         }
 
         /**
@@ -431,24 +425,26 @@ module.exports = app => {
                 return [];
             }
             const selectData = await this.getDataByNodeId(tenderId, selectId);
+            if (!selectData) {
+                throw '上移节点数据错误';
+            }
             const preData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order - 1);
-            this.transaction = await this.db.beginTransaction();
-
-            if (selectData && preData) {
-                try {
-                    const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order - 1});
-                    const pData = await this.transaction.update(this.tableName, {id: preData.id, order: preData.order + 1});
-                    this.transaction.commit();
-                } catch (err) {
-                    await this.transaction.rollback();
-                    throw err;
-                }
+            if (!preData) {
+                throw '节点不可上移';
+            }
 
-                const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, preData.order]);
-                return resultData;
-            } else {
-                throw '上移节点数据错误';
+            this.transaction = await this.db.beginTransaction();
+            try {
+                const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order - 1});
+                const pData = await this.transaction.update(this.tableName, {id: preData.id, order: preData.order + 1});
+                this.transaction.commit();
+            } catch (err) {
+                await this.transaction.rollback();
+                throw err;
             }
+
+            const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, preData.order]);
+            return resultData;
         }
 
         /**
@@ -463,24 +459,26 @@ module.exports = app => {
                 return [];
             }
             const selectData = await this.getDataByNodeId(tenderId, selectId);
+            if (!selectData) {
+                throw '下移节点数据错误';
+            }
             const nextData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order + 1);
-            this.transaction = await this.db.beginTransaction();
-
-            if (selectData && nextData) {
-                try {
-                    const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order + 1});
-                    const pData = await this.transaction.update(this.tableName, {id: nextData.id, order: nextData.order - 1});
-                    this.transaction.commit();
-                } catch (err) {
-                    await this.transaction.rollback();
-                    throw err;
-                }
+            if (!nextData) {
+                throw '节点不可下移'
+            }
 
-                const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, nextData.order]);
-                return resultData;
-            } else {
-                throw '下移节点数据错误';
+            this.transaction = await this.db.beginTransaction();
+            try {
+                const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order + 1});
+                const pData = await this.transaction.update(this.tableName, {id: nextData.id, order: nextData.order - 1});
+                this.transaction.commit();
+            } catch (err) {
+                await this.transaction.rollback();
+                throw err;
             }
+
+            const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, nextData.order]);
+            return resultData;
         }
 
         /**
@@ -586,6 +584,7 @@ module.exports = app => {
             }
 
             this.transaction = await this.db.beginTransaction();
+            const newFullPath = selectData.full_path.replace(selectData.ledger_pid + '.', '');
             try {
                 // 选中节点--父节点--全部后兄弟节点 order+1
                 await this._updateSelectNextsOrder(parentData);
@@ -594,7 +593,7 @@ module.exports = app => {
                     ledger_pid: parentData.ledger_pid,
                     order: parentData.order + 1,
                     level: selectData.level - 1,
-                    full_path: selectData.full_path.replace(selectData.ledger_pid + '.', '')
+                    full_path: newFullPath
                 };
                 await this.transaction.update(this.tableName, updateData);
                 // 选中节点--全部子节点(含孙) level-1, full_path变更
@@ -608,17 +607,7 @@ module.exports = app => {
             }
 
             // 查询修改的数据
-            this.initSqlBuilder();
-            this.sqlBuilder.setAndWhere('tender_id', {
-                value: tenderId,
-                operate: '='
-            });
-            this.sqlBuilder.setAndWhere('full_path', {
-                value: this.db.escape(selectData.full_path.replace(selectData.ledger_pid + '.', '') + '%'),
-                operate: 'Like'
-            });
-            const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
-            const resultData1 = await this.db.query(sql, sqlParam);
+            const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%');
             const resultData2 = await this.getNextsData(tenderId, parentData.ledger_pid, parentData.order + 1);
             return resultData1.concat(resultData2);
         }
@@ -676,6 +665,7 @@ module.exports = app => {
             const preLastChildData = await this.getLastChildData(tenderId, preData.ledger_id);
 
             this.transaction = await this.db.beginTransaction();
+            const newFullPath = selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id);
             try {
                 // 选中节点--全部后节点 order--
                 await this._updateSelectNextsOrder(selectData, -1);
@@ -684,7 +674,7 @@ module.exports = app => {
                     ledger_pid: preData.ledger_pid,
                     order: preLastChildData ? preLastChildData.order + 1 : 1,
                     level: selectData.level + 1,
-                    full_path: selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id)
+                    full_path: newFullPath
                 };
                 await this.transaction.update(this.tableName, updateData);
                 // 选中节点--全部子节点(含孙) level++, full_path
@@ -696,17 +686,7 @@ module.exports = app => {
             }
 
             // 查询修改的数据
-            this.initSqlBuilder();
-            this.sqlBuilder.setAndWhere('tender_id', {
-                value: tenderId,
-                operate: '='
-            });
-            this.sqlBuilder.setAndWhere('full_path', {
-                value: this.db.escape(selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id) + '%'),
-                operate: 'Like'
-            });
-            const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
-            const resultData1 = await this.db.query(sql, sqlParam);
+            const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%')
             const resultData2 = await this.getNextsData(tenderId, preData.ledger_pid, preData.order);
             return resultData1.concat(resultData2);
         }