Forráskód Böngészése

数据治理-删除功能&表内容查看

ZHOUTD 1 éve
szülő
commit
047f154b50

+ 18 - 0
xzl-admin/src/main/java/com/xzl/web/controller/DataGovernanceController.java

@@ -38,11 +38,29 @@ public class DataGovernanceController {
         return dataGovernanceService.createDatabase(databaseName);
     }
 
+    @RequestMapping(value = "/dropDatabase", method = RequestMethod.POST)
+    public Map<String,String> dropDatabase(@RequestBody List<String> list){
+        return dataGovernanceService.dropDatabase(list);
+    }
 
     @RequestMapping(value = "/createTable",method = RequestMethod.POST)
     public Map<String,String> createTable(@RequestBody CreateTableDTO createTableDTO){
         return dataGovernanceService.createTable(createTableDTO);
     }
 
+    @RequestMapping(value = "/dropTable", method = RequestMethod.POST)
+    public Map<String,String> dropTable(@RequestBody List<String> list){
+        return dataGovernanceService.dropTable(list);
+    }
+
+    @RequestMapping(value = "/getTableTitleList", method = RequestMethod.GET)
+    public List<Map> getTableTitleList(String tableName){
+        return dataGovernanceService.getTableTitleList(tableName);
+    }
+
+    @RequestMapping(value = "/getTableData", method = RequestMethod.GET)
+    public List<Map> getTableData(String tableName){
+        return dataGovernanceService.getTableData(tableName);
+    }
 
 }

+ 9 - 0
xzl-admin/src/main/java/com/xzl/web/mapper/DataGovernanceMapper.java

@@ -4,6 +4,7 @@ import com.xzl.web.model.dataGovernance.dto.CreateTableDTO;
 import com.xzl.web.model.dataGovernance.entity.DatabaseInfo;
 import com.xzl.web.model.dataGovernance.entity.TableInfo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.poi.ss.formula.functions.T;
 
 import java.util.List;
 import java.util.Map;
@@ -14,7 +15,15 @@ public interface DataGovernanceMapper {
 
     void createDatabase(String databaseName);
 
+    void dropDatabase(String databaseName);
+
     List<TableInfo> getTableListByDatabaseName(Map<String,String> param);
 
     void createTable(CreateTableDTO createTableDTO);
+
+    void dropTable(String tableName);
+
+    List<Map> getTableTitleListByTableName(Map<String,String> param);
+
+    List<Map> getTableDataByTableName(String tableName);
 }

+ 8 - 0
xzl-admin/src/main/java/com/xzl/web/service/DataGovernanceService.java

@@ -15,5 +15,13 @@ public interface DataGovernanceService {
 
     Map<String, String> createDatabase(String databaseName);
 
+    Map<String, String> dropDatabase(List<String> list);
+
     Map<String, String> createTable(CreateTableDTO createTableDTO);
+
+    Map<String, String> dropTable(List<String> list);
+
+    List<Map> getTableTitleList(String tableName);
+
+    List<Map> getTableData(String tableName);
 }

+ 53 - 0
xzl-admin/src/main/java/com/xzl/web/service/impl/DataGovernanceServiceImpl.java

@@ -10,6 +10,7 @@ import com.xzl.web.service.DataGovernanceService;
 import org.mybatis.spring.SqlSessionTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.HashMap;
 import java.util.List;
@@ -57,6 +58,25 @@ public class DataGovernanceServiceImpl implements DataGovernanceService {
         return result;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, String> dropDatabase(List<String> list) {
+        Map<String,String> result = new HashMap<>();
+        try {
+            for (String databaseName : list) {
+                dataGovernanceMapper.dropDatabase(databaseName);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.put("message","删除失败!");
+            result.put("type","error");
+            return result;
+        }
+        result.put("message","删除成功!");
+        result.put("type","success");
+        return result;
+    }
+
     @Override
     public Map<String, String> createTable(CreateTableDTO createTableDTO) {
         Map<String,String> result = new HashMap<>();
@@ -108,6 +128,39 @@ public class DataGovernanceServiceImpl implements DataGovernanceService {
         return result;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, String> dropTable(List<String> list) {
+        Map<String,String> result = new HashMap<>();
+        try {
+            for (String tableName : list) {
+                dataGovernanceMapper.dropTable(tableName);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.put("message","删除失败!");
+            result.put("type","error");
+            return result;
+        }
+        result.put("message","删除成功!");
+        result.put("type","success");
+        return result;
+    }
+
+    @Override
+    public List<Map> getTableTitleList(String tableName) {
+        Map<String,String> param=new HashMap<>();
+        String[] strings = tableName.split("\\.");
+        param.put("dataBaseName",strings[0]);
+        param.put("tableName",strings[1]);
+        return dataGovernanceMapper.getTableTitleListByTableName(param);
+    }
+
+    @Override
+    public List<Map> getTableData(String tableName) {
+        return dataGovernanceMapper.getTableDataByTableName(tableName);
+    }
+
 
     private Boolean verifySQLName(String text){
         return text.isEmpty() || !text.matches("^[a-zA-Z_][a-zA-Z0-9_]{0,63}$");

+ 7 - 8
xzl-admin/src/main/resources/application-dev.yml

@@ -6,14 +6,13 @@ spring:
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://webapplication.mysql.polardb.rds.aliyuncs.com:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
-#                url: jdbc:mysql://webapplication.rwlb.rds.aliyuncs.com:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
-                username: jerry
-                password: zjr38zjR@
-
-#                url: jdbc:mysql://localhost:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
-#                username: root
-#                password: 1234
+#                url: jdbc:mysql://webapplication.mysql.polardb.rds.aliyuncs.com:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
+##                url: jdbc:mysql://webapplication.rwlb.rds.aliyuncs.com:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
+#                username: jerry
+#                password: zjr38zjR@
+                url: jdbc:mysql://localhost:3306/xtdb?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
+                username: root
+                password: 1234
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 20 - 0
xzl-admin/src/main/resources/mapper/DataGovernanceMapper.xml

@@ -4,6 +4,7 @@
     <select id="getDatabaseList" resultType="com.xzl.web.model.dataGovernance.entity.DatabaseInfo">
         select schema_name as databaseName,DEFAULT_CHARACTER_SET_NAME as characterName,DEFAULT_COLLATION_NAME as collationName
         from information_schema.schemata
+        where schema_name not in ("information_schema","mysql","performance_schema")
     </select>
 
     <select id="getTableListByDatabaseName" resultType="com.xzl.web.model.dataGovernance.entity.TableInfo" parameterType="map">
@@ -19,12 +20,27 @@
         order by createTime desc
     </select>
 
+    <select id="getTableTitleListByTableName" resultType="map" parameterType="map">
+        select column_name as "name"
+        from information_schema.columns
+        where TABLE_SCHEMA=#{dataBaseName} and TABLE_NAME=#{tableName}
+        order by ORDINAL_POSITION
+    </select>
+
+    <select id="getTableDataByTableName" resultType="map" parameterType="string">
+        select * from ${tableName}
+    </select>
+
     <update id="createDatabase" parameterType="string">
         CREATE DATABASE IF NOT EXISTS ${databaseName}
         DEFAULT CHARACTER SET utf8mb4
         DEFAULT COLLATE utf8mb4_general_ci
     </update>
 
+    <update id="dropDatabase" parameterType="string">
+        DROP DATABASE ${databaseName}
+    </update>
+
     <update id="createTable" parameterType="com.xzl.web.model.dataGovernance.dto.CreateTableDTO">
         CREATE TABLE ${databaseName}.${tableName}(
             <foreach collection="columns" item="column" separator=",">
@@ -33,4 +49,8 @@
         )ENGINE=INNODB DEFAULT CHARSET=utf8mb4
     </update>
 
+    <update id="dropTable" parameterType="string">
+        DROP TABLE ${tableName}
+    </update>
+
 </mapper>

+ 4 - 0
xzl-ui/src/App.vue

@@ -25,4 +25,8 @@ export default {
 #app .theme-picker {
   display: none;
 }
+
+body .el-table th.cell{
+  display: table-cell!important;
+}
 </style>

+ 14 - 0
xzl-ui/src/router/index.js

@@ -175,6 +175,20 @@ export const dynamicRoutes = [
         meta: { title: '数据库表查看', activeMenu: '/dataGovernance' }
       }
     ]
+  },
+  {
+    path: '/dataGovernance/tableData',
+    component: Layout,
+    hidden: true,
+    permissions: ['dataGovernance:databaseManage'],
+    children: [
+      {
+        path: '',
+        component: () => import('@/views/dataGovernance/tableData'),
+        name: 'tableData',
+        meta: { title: '数据库数据查看', activeMenu: '/dataGovernance' }
+      },
+    ]
   }
 
 ]

+ 29 - 7
xzl-ui/src/views/dataGovernance/databaseManage.vue

@@ -2,15 +2,14 @@
   <div>
     <el-row style="height: 50px;padding-top: 7.2px;padding-left: 15px">
       <el-button type="success" size="small" @click="handleAdd">增加</el-button>
-      <el-tooltip class="item" effect="dark" content="开发中...." placement="bottom">
-        <el-button type="danger" size="small">删除</el-button>
-      </el-tooltip>
+      <el-button type="danger" size="small" @click="handleDelete">删除</el-button>
     </el-row>
     <el-table
       :data="tableData"
       border
       stripe
       size="medium"
+      @selection-change="handleSelectionChange"
     >
       <el-table-column
         type="selection"
@@ -103,6 +102,33 @@ export default {
     handleAdd(){
       this.formVisible=true;
     },
+    handleDelete(){
+      const t=this;
+      let data=[];
+      t.multipleSelection.forEach(row=>{
+        data.push(row.databaseName);
+      })
+      this.$confirm('确定删除这些数据库?', '确认信息', {
+        distinguishCancelAndClose: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消'
+      }).then(() => {
+        request({
+          url: "/dataGovernance/dropDatabase",
+          method: "post",
+          data: data
+        }).then(rs => {
+          t.$message(rs);
+          t.initData();
+        })
+      }).catch(action => {
+
+      });
+
+    },
+    handleSelectionChange(val){
+      this.multipleSelection=val;
+    },
     handleClose() {
       this.formVisible = false;
       this.form.databaseName="";
@@ -120,10 +146,6 @@ export default {
     },
     view(index,table){
       this.$tab.openPage(table[index].databaseName, '/dataGovernance/tableManage', {databaseName:table[index].databaseName})
-    },
-    change(index,table){
-      console.log(table[index]);
-      //this.$tab.openPage("测试tab", '/dataGovernance/tableManage',null)
     }
   }
 }

+ 65 - 0
xzl-ui/src/views/dataGovernance/tableData.vue

@@ -0,0 +1,65 @@
+<template>
+  <div>
+    <el-table
+      :data="tableData"
+      border
+      stripe
+      size="medium"
+    >
+      <el-table-column v-for="(item,index) in  titleData" :key="index" :prop="item.name" :label="item.name" show-overflow-tooltip></el-table-column>
+    </el-table>
+
+
+  </div>
+</template>
+<script>
+import request from '@/utils/request'
+
+export default {
+  data() {
+    return {
+      titleData:[],
+      tableData: []
+    }
+  },
+  mounted() {
+    this.initTitle();
+    this.initData();
+  },
+  methods: {
+    initTitle(){
+      const t = this;
+      request({
+        url: "/dataGovernance/getTableTitleList?tableName=" + this.$route.query.databaseName+"."+this.$route.query.tableName,
+        method: "get"
+      }).then(rs => {
+        t.titleData = rs;
+      })
+    },
+    initData() {
+      const t = this;
+      request({
+        url: "/dataGovernance/getTableData?tableName=" + this.$route.query.databaseName+"."+this.$route.query.tableName,
+        method: "get"
+      }).then(rs => {
+        t.tableData = rs;
+      })
+    }
+  }
+}
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+
+.el-table {
+  width: 100%;
+
+  .el-table__header-wrapper table, .el-table__body-wrapper table {
+    width: 100% !important;
+  }
+
+  .el-table__body, .el-table__footer, .el-table__header {
+    table-layout: auto;
+  }
+}
+</style>

+ 31 - 19
xzl-ui/src/views/dataGovernance/tableManage.vue

@@ -2,15 +2,14 @@
   <div>
     <el-row style="height: 50px;padding-top: 7.2px;padding-left: 15px">
       <el-button type="success" size="small" @click="handleAdd">增加</el-button>
-      <el-tooltip class="item" effect="dark" content="开发中...." placement="bottom">
-        <el-button type="danger" size="small">删除</el-button>
-      </el-tooltip>
+      <el-button type="danger" size="small" @click="handleDelete">删除</el-button>
     </el-row>
     <el-table
       :data="tableData"
       border
       stripe
       size="medium"
+      @selection-change="handleSelectionChange"
     >
       <el-table-column
         type="selection"
@@ -60,13 +59,6 @@
           >
             查看
           </el-button>
-          <el-button
-            @click.native.prevent="change(scope.$index, tableData)"
-            type="text"
-            size="small"
-          >
-            修改
-          </el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -155,7 +147,7 @@ export default {
           {name: "id", type: "varchar", length: "32", decimal: "", isNotNull: true, isKey: true, exegesis: "默认主键id"}
         ]
       },
-
+      multipleSelection:[]
     }
   },
   mounted() {
@@ -163,7 +155,6 @@ export default {
   },
   methods: {
     initData() {
-      console.log(this.$route.query)
       const t = this;
       request({
         url: "/dataGovernance/tableList?databaseName=" + this.$route.query.databaseName,
@@ -175,6 +166,33 @@ export default {
     handleAdd() {
       this.formVisible = true;
     },
+    handleDelete(){
+      const t=this;
+      let data=[];
+      t.multipleSelection.forEach(row=>{
+        data.push(t.$route.query.databaseName+"."+row.tableName);
+      })
+      this.$confirm('确定删除这些数据表?', '确认信息', {
+        distinguishCancelAndClose: true,
+        confirmButtonText: '确定',
+        cancelButtonText: '取消'
+      }).then(() => {
+        request({
+          url: "/dataGovernance/dropTable",
+          method: "post",
+          data: data
+        }).then(rs => {
+          t.$message(rs);
+          t.initData()
+        })
+      }).catch(action => {
+
+      });
+
+    },
+    handleSelectionChange(val){
+      this.multipleSelection=val;
+    },
     handleAddRow() {
       this.form.columns.push({
         name: "",
@@ -195,7 +213,6 @@ export default {
     },
     handleSave() {
       const t = this;
-
       request({
         url: "/dataGovernance/createTable",
         method: "post",
@@ -209,14 +226,9 @@ export default {
       })
     },
     view(index, table) {
+      this.$tab.openPage(table[index].tableName, '/dataGovernance/tableData', {databaseName: this.$route.query.databaseName,tableName:table[index].tableName})
 
-
-
-
-    },
-    change(index, table) {
     }
-
   }
 }
 </script>