Ver Fonte

实体管理完成

R há 1 ano atrás
pai
commit
f00c5d8c7f
4 ficheiros alterados com 44 adições e 14 exclusões
  1. 8 7
      router/dataMark/entity.js
  2. 32 6
      router/dataMark/relationship.js
  3. 1 1
      utils/index.js
  4. 3 0
      utils/pools.js

+ 8 - 7
router/dataMark/entity.js

@@ -12,11 +12,11 @@ const execTrans = require('../../utils/dbHelper.js')
 
 // 增加实体
 router.post('/addEntity', async (req, res) => {
-  let sql = 'INSERT INTO entity_t(`name`,`introduce`,is_show,parent_id) VALUES (?,?,?,?)',
+  let sql = 'INSERT INTO entity_t(`name`,`introduce`,is_show,parent_id,color) VALUES (?,?,?,?,?)',
     obj = req.body
   await pools({
     sql,
-    val: [obj.name, obj.introduce, obj.is_show, obj.parentId],
+    val: [obj.name, obj.introduce, obj.is_show, obj.parentId, obj.color],
     run: false,
     res,
     req
@@ -27,7 +27,7 @@ router.post('/addEntity', async (req, res) => {
 router.post('/getEntityList', async (req, res) => {
   let user = await utils.getUserInfo({ req, res }),
     obj = req.body
-  let sql = `SELECT id AS entityId,name,introduce,is_show,parent_id AS parentId FROM entity_t WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点
+  let sql = `SELECT id AS entityId,name,introduce,is_show,parent_id AS parentId,color FROM entity_t WHERE 1=1` // WHERE 1=1是一个始终为真的条件,后续动态添加查询条件的起点
   sql = utils.setLike(sql, 'name', obj.name) // 添加一个基于name字段的模糊匹配条件,匹配的值来自obj.name
   sql = utils.setMoreId(sql, user)
   sql = utils.setOr(sql, 'name', obj.name)
@@ -37,16 +37,17 @@ router.post('/getEntityList', async (req, res) => {
   let { result } = await pools({ sql, res, req })
   result = result.map((item) => ({
     ...item,
-    is_show: item.is_show === 1 // 或者使用 Boolean(item.hasChildren) 如果hasChildren是数字类型
+    is_show: item.is_show === 1
+    // color: item.color.substring(1)
   }))
   res.send(utils.returnData({ data: result, total }))
 })
 
 //修改
 router.post('/updataEntity', async (req, res) => {
-  let sql = 'UPDATE entity_t SET name=?,introduce=?,is_show=?,parent_id=? WHERE id=?',
+  let sql = 'UPDATE entity_t SET name=?,introduce=?,is_show=?,parent_id=?,color=? WHERE id=?',
     obj = req.body
-  await pools({ sql, val: [obj.name, obj.introduce, obj.is_show, obj.parentId, obj.entityId], run: false, res, req })
+  await pools({ sql, val: [obj.name, obj.introduce, obj.is_show, obj.parentId, obj.color, obj.entityId], run: false, res, req })
 })
 
 //删除
@@ -75,7 +76,7 @@ router.post('/delEntity', async (req, res) => {
 
 // 导入
 router.post('/importEntity', async (req, res) => {
-  let sql = 'INSERT INTO entity_t(`name`,`introduce`,is_show,parent_id) VALUES ?'
+  let sql = 'INSERT INTO entity_t(`name`,`introduce`,is_show,parent_id,color) VALUES ?'
   let fileArr = await fileEvent(req, res)
   let filename = fileArr[0].filename
   //配置获取文件路径

+ 32 - 6
router/dataMark/relationship.js

@@ -6,6 +6,13 @@ const pools = require('../../utils/pools.js')
 router.post('/addRelationship', async (req, res) => {
   let sql = 'INSERT INTO relationship_t(`name`) VALUES (?)',
     obj = req.body
+  await utils.existName({
+    sql: 'SELECT name FROM relationship_t WHERE name=?',
+    name: obj.name,
+    res,
+    msg: '该实体关系已存在!',
+    req
+  })
   await pools({
     sql,
     val: [obj.name],
@@ -48,9 +55,8 @@ router.post('/updataRelationship', async (req, res) => {
 router.post('/getERList', async (req, res) => {
   let user = await utils.getUserInfo({ req, res }),
     obj = req.body
-  console.log('obj', obj)
   // let sql = `SELECT relationship_id AS relationshipId,name FROM relationship WHERE 1=1`
-  let sql = `SELECT
+  let sql = `(SELECT
       r.NAME AS relationshipName,
       r.id AS relationshipId,
       t.object_id AS objectId,
@@ -61,21 +67,41 @@ router.post('/getERList', async (req, res) => {
       (SELECT name from entity_t e where e.id = t.subject_id) as subjectName
     FROM
       entity_relationship_t t JOIN relationship_t r ON r.id = t.relationship_id 
-    WHERE
-      r.id = ?`
+    WHERE r.id = ? )`
+  let sqlCount = 'select count(1) from ' + sql + ' z'
+  if (obj.entityName) {
+    sql = `select z.* from ${sql} z where z.objectName like '%${obj.entityName}%' OR z.subjectName like '%${obj.entityName}%'`
+    sqlCount = 'select count(1) from (' + sql + ') z'
+  }
+  let sss = await pools({ sql: sqlCount, val: [obj.relationshipId], req })
+  let total = sss.result[0]['count(1)']
   let { result } = await pools({ sql, val: [obj.relationshipId], req })
   result = result.map((item) => ({
     ...item,
     isShow: item.is_show === 1
   }))
-  res.send(utils.returnData({ data: result }))
+  res.send(utils.returnData({ data: result, total }))
 })
 
-//删除测试账号
+//删除ER
 router.post('/delER', async (req, res) => {
   obj = req.body
   let placeholders = obj.map(() => '?').join(',')
   let sql = `DELETE FROM entity_relationship_t WHERE id in (${placeholders})`
   await pools({ sql, val: obj, run: false, res, req }) // 注意这里直接传递obj数组作为参数
 })
+
+// 增加ER
+router.post('/addER', async (req, res) => {
+  let sql = 'INSERT INTO entity_relationship_t(subject_id,object_id,relationship_id,is_show) VALUES (?,?,?,?)',
+    obj = req.body
+
+  await pools({
+    sql,
+    val: [obj.subjectId, obj.objectId, obj.relationshipId, obj.isShow],
+    run: false,
+    res,
+    req
+  })
+})
 module.exports = router

+ 1 - 1
utils/index.js

@@ -279,7 +279,7 @@ module.exports = {
     return sql
   },
   setOr(sql, name = '', val = '') {
-    if (this.exist(val)) sql += ` or entity_id in (SELECT parent_id FROM entity where name LIKE '%${val}%')`
+    if (this.exist(val)) sql += ` or id in (SELECT parent_id FROM entity_t where name LIKE '%${val}%')`
     return sql
   },
   /**

+ 3 - 0
utils/pools.js

@@ -10,7 +10,10 @@ const utils = require('./index.js')
  * */
 module.exports = function pools({ sql, val = [], msg, run = true, res, req } = {}) {
   return new Promise((resolve) => {
+    // console.log('sql', sql)
     pool.query(sql, val, (err, result) => {
+      // console.log(err)
+      // console.log(result)
       if (err) return res.send(utils.returnData({ code: -1, msg, err, req }))
       if (run) return resolve({ result })
       return res.send(utils.returnData({ data: result }))