|
@@ -125,6 +125,50 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 根据 父节点id 和 节点排序order 获取数据
|
|
|
+ * @param {Number} tenderId - 标段id
|
|
|
+ * @param {Number} pid - 父节点id
|
|
|
+ * @param {Number|Array} order - 排序
|
|
|
+ * @returns {Object|Array} - 查询结果
|
|
|
+ */
|
|
|
+ async getDataByParentAndOrder(tenderId, pid, order) {
|
|
|
+ if ((tenderId <= 0) || (pid <= 0) || (order <= 0)) {
|
|
|
+ return undefined;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.initSqlBuilder();
|
|
|
+ this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
+ value: tenderId,
|
|
|
+ operate: '='
|
|
|
+ });
|
|
|
+ this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
+ value: pid,
|
|
|
+ operate: '=',
|
|
|
+ });
|
|
|
+ if (order instanceof Array) {
|
|
|
+ this.sqlBuilder.setAndWhere('order', {
|
|
|
+ value: order,
|
|
|
+ operate: 'in'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.sqlBuilder.setAndWhere('order', {
|
|
|
+ value: order,
|
|
|
+ operate: '='
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
+ let data;
|
|
|
+ if (order instanceof Array) {
|
|
|
+ data = await this.db.query(sql, sqlParam);
|
|
|
+ } else {
|
|
|
+ data = await this.db.queryOne(sql, sqlParam);
|
|
|
+ }
|
|
|
+
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* select的全部后兄弟节点,Order自增
|
|
|
*
|
|
|
* @param {Object} select - 选中的节点
|
|
@@ -248,9 +292,124 @@ module.exports = app => {
|
|
|
const resultData = this.db.query(sql, sqlParam);
|
|
|
|
|
|
return resultData;
|
|
|
+ } else {
|
|
|
+ throw '新增节点数据错误';
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * tenderId标段中, 删除选中节点及其子节点
|
|
|
+ * @param {Number} tenderId - 标段id
|
|
|
+ * @param {Number} selectId - 选中节点id
|
|
|
+ * @return {Array} - 被删除的数据
|
|
|
+ */
|
|
|
+ async deleteNode(tenderId, selectId) {
|
|
|
+ if ((tenderId <= 0) || (selectId <= 0)) {
|
|
|
+ return [];
|
|
|
}
|
|
|
- throw '新增节点数据错误';
|
|
|
+ const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ 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 '删除节点数据错误';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * tenderId标段中, 选中节点selectId上移
|
|
|
+ * @param {Number} tenderId - 标段id
|
|
|
+ * @param {Number} selectId - 选中节点id
|
|
|
+ * @return {Array} - 发生改变的数据
|
|
|
+ */
|
|
|
+ async upMoveNode(tenderId, selectId) {
|
|
|
+ if ((tenderId <= 0) || (selectId <= 0)) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ const preData = await this.getDataByParentAndOrder(tenderId, selectData.template_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;
|
|
|
+ }
|
|
|
+
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, preData.order]);
|
|
|
+ return resultData;
|
|
|
+ } else {
|
|
|
+ throw '上移节点数据错误';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * tenderId标段中, 选中节点selectId下移
|
|
|
+ * @param {Number} tenderId - 标段id
|
|
|
+ * @param {Number} selectId - 选中节点id
|
|
|
+ * @return {Array} - 发生改变的数据
|
|
|
+ */
|
|
|
+ async downMoveNode(tenderId, selectId) {
|
|
|
+ if ((tenderId <= 0) || (selectId <= 0)) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ const nextData = await this.getDataByParentAndOrder(tenderId, selectData.template_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;
|
|
|
+ }
|
|
|
+
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, nextData.order]);
|
|
|
+ return resultData;
|
|
|
+ } else {
|
|
|
+ throw '下移节点数据错误';
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|