From 1f7cd7ad6c805732ff69d4f9c5fd89c56f16364e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Wed, 21 Aug 2019 23:17:04 +0800 Subject: [PATCH] =?UTF-8?q?sql=E6=89=A7=E8=A1=8C=E5=99=A8=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/manage/entity/DbFavorite.java | 118 +++++++++++++++++ .../repository/manage/entity/DbHistory.java | 105 ++++++++++++++++ .../manage/mapper/DbFavoriteMapper.java | 16 +++ .../manage/mapper/DbHistoryMapper.java | 20 +++ .../support/generator/CodeGenerator.java | 4 +- .../service/manage/DbFavoriteService.java | 16 +++ .../data/service/manage/DbHistoryService.java | 18 +++ .../manage/impl/DbFavoriteServiceImpl.java | 20 +++ .../manage/impl/DbHistoryServiceImpl.java | 41 ++++++ .../mapper/manage/DbFavoriteMapper.xml | 5 + .../mapper/manage/DbHistoryMapper.xml | 5 + .../controller/DbSqlExecutorController.java | 68 +++++++++- .../framework/db/mapper/base/SqlExecutor.java | 18 ++- .../sql/zyplayer_doc_manage.1.0.4.sql | 33 +++++ zyplayer-doc-ui/db-ui/package-lock.json | 29 +++-- zyplayer-doc-ui/db-ui/src/App.vue | 2 +- .../db-ui/src/common/config/apilist.js | 3 + .../db-ui/src/views/data/Executor.vue | 119 ++++++++++++++++-- 18 files changed, 608 insertions(+), 32 deletions(-) create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbFavorite.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbHistory.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbFavoriteMapper.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbHistoryMapper.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbFavoriteService.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbHistoryService.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbFavoriteServiceImpl.java create mode 100644 zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbHistoryServiceImpl.java create mode 100644 zyplayer-doc-data/src/main/resources/mapper/manage/DbFavoriteMapper.xml create mode 100644 zyplayer-doc-data/src/main/resources/mapper/manage/DbHistoryMapper.xml create mode 100644 zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.4.sql diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbFavorite.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbFavorite.java new file mode 100644 index 00000000..830f7d83 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbFavorite.java @@ -0,0 +1,118 @@ +package com.zyplayer.doc.data.repository.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public class DbFavorite implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 收藏标题 + */ + private String name; + + /** + * 收藏内容 + */ + private String content; + + /** + * 创建人ID + */ + private Long createUserId; + + /** + * 创建人名字 + */ + private String createUserName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 是否有效 0=无效 1=有效 + */ + private Integer yn; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + public Long getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Long createUserId) { + this.createUserId = createUserId; + } + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + @Override + public String toString() { + return "DbFavorite{" + + "id=" + id + + ", name=" + name + + ", content=" + content + + ", createUserId=" + createUserId + + ", createUserName=" + createUserName + + ", createTime=" + createTime + + ", yn=" + yn + + "}"; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbHistory.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbHistory.java new file mode 100644 index 00000000..bfe975d7 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/entity/DbHistory.java @@ -0,0 +1,105 @@ +package com.zyplayer.doc.data.repository.manage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.TableId; +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public class DbHistory implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键自增ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * sql内容 + */ + private String content; + + /** + * 创建人ID + */ + private Long createUserId; + + /** + * 创建人名字 + */ + private String createUserName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 是否有效 0=无效 1=有效 + */ + private Integer yn; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + public Long getCreateUserId() { + return createUserId; + } + + public void setCreateUserId(Long createUserId) { + this.createUserId = createUserId; + } + public String getCreateUserName() { + return createUserName; + } + + public void setCreateUserName(String createUserName) { + this.createUserName = createUserName; + } + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getYn() { + return yn; + } + + public void setYn(Integer yn) { + this.yn = yn; + } + + @Override + public String toString() { + return "DbHistory{" + + "id=" + id + + ", content=" + content + + ", createUserId=" + createUserId + + ", createUserName=" + createUserName + + ", createTime=" + createTime + + ", yn=" + yn + + "}"; + } +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbFavoriteMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbFavoriteMapper.java new file mode 100644 index 00000000..fed7a4ba --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbFavoriteMapper.java @@ -0,0 +1,16 @@ +package com.zyplayer.doc.data.repository.manage.mapper; + +import com.zyplayer.doc.data.repository.manage.entity.DbFavorite; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public interface DbFavoriteMapper extends BaseMapper { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbHistoryMapper.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbHistoryMapper.java new file mode 100644 index 00000000..9f3f8093 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/manage/mapper/DbHistoryMapper.java @@ -0,0 +1,20 @@ +package com.zyplayer.doc.data.repository.manage.mapper; + +import com.zyplayer.doc.data.repository.manage.entity.DbHistory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Update; + +/** + *

+ * Mapper 接口 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public interface DbHistoryMapper extends BaseMapper { + + @Update("delete a from db_history a,(select id from db_history order by id desc limit 100, 1) b where a.id < b.id") + void deleteHistory(); + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java index c7930008..1d809c8a 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/repository/support/generator/CodeGenerator.java @@ -19,8 +19,8 @@ public class CodeGenerator { final String moduleName = "manage"; // final String[] tableName = { "zyplayer_storage", "auth_info", "user_auth", "user_info", "db_datasource" }; // final String[] tableName = { "wiki_space", "wiki_page", "wiki_page_content", "wiki_page_file", "wiki_page_comment", "wiki_page_zan" }; -// final String[] tableName = { "db_datasource" }; - final String[] tableName = { "es_datasource" }; +// final String[] tableName = { "db_datasource", "es_datasource", "db_favorite" }; + final String[] tableName = { "db_history" }; // 代码生成器 AutoGenerator mpg = new AutoGenerator(); diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbFavoriteService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbFavoriteService.java new file mode 100644 index 00000000..e05ebf4a --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbFavoriteService.java @@ -0,0 +1,16 @@ +package com.zyplayer.doc.data.service.manage; + +import com.zyplayer.doc.data.repository.manage.entity.DbFavorite; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public interface DbFavoriteService extends IService { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbHistoryService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbHistoryService.java new file mode 100644 index 00000000..3c77070d --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/DbHistoryService.java @@ -0,0 +1,18 @@ +package com.zyplayer.doc.data.service.manage; + +import com.zyplayer.doc.data.repository.manage.entity.DbHistory; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +public interface DbHistoryService extends IService { + + void saveHistory(String content); + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbFavoriteServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbFavoriteServiceImpl.java new file mode 100644 index 00000000..199c2b71 --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbFavoriteServiceImpl.java @@ -0,0 +1,20 @@ +package com.zyplayer.doc.data.service.manage.impl; + +import com.zyplayer.doc.data.repository.manage.entity.DbFavorite; +import com.zyplayer.doc.data.repository.manage.mapper.DbFavoriteMapper; +import com.zyplayer.doc.data.service.manage.DbFavoriteService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +@Service +public class DbFavoriteServiceImpl extends ServiceImpl implements DbFavoriteService { + +} diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbHistoryServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbHistoryServiceImpl.java new file mode 100644 index 00000000..871e1edd --- /dev/null +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/DbHistoryServiceImpl.java @@ -0,0 +1,41 @@ +package com.zyplayer.doc.data.service.manage.impl; + +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.config.security.DocUserUtil; +import com.zyplayer.doc.data.repository.manage.entity.DbHistory; +import com.zyplayer.doc.data.repository.manage.mapper.DbHistoryMapper; +import com.zyplayer.doc.data.service.manage.DbHistoryService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; + +/** + *

+ * 服务实现类 + *

+ * + * @author 暮光:城中城 + * @since 2019-08-21 + */ +@Service +public class DbHistoryServiceImpl extends ServiceImpl implements DbHistoryService { + + @Resource + DbHistoryMapper dbHistoryMapper; + + @Override + public void saveHistory(String content) { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + DbHistory dbHistory = new DbHistory(); + dbHistory.setContent(content); + dbHistory.setCreateTime(new Date()); + dbHistory.setCreateUserId(currentUser.getUserId()); + dbHistory.setCreateUserName(currentUser.getUsername()); + dbHistory.setYn(1); + this.save(dbHistory); + // 删除多余的数据 + dbHistoryMapper.deleteHistory(); + } +} diff --git a/zyplayer-doc-data/src/main/resources/mapper/manage/DbFavoriteMapper.xml b/zyplayer-doc-data/src/main/resources/mapper/manage/DbFavoriteMapper.xml new file mode 100644 index 00000000..ed347ae7 --- /dev/null +++ b/zyplayer-doc-data/src/main/resources/mapper/manage/DbFavoriteMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/zyplayer-doc-data/src/main/resources/mapper/manage/DbHistoryMapper.xml b/zyplayer-doc-data/src/main/resources/mapper/manage/DbHistoryMapper.xml new file mode 100644 index 00000000..2b164024 --- /dev/null +++ b/zyplayer-doc-data/src/main/resources/mapper/manage/DbHistoryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbSqlExecutorController.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbSqlExecutorController.java index 8874b597..66b002e5 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbSqlExecutorController.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DbSqlExecutorController.java @@ -1,19 +1,35 @@ package com.zyplayer.doc.db.controller; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.zyplayer.doc.core.annotation.AuthMan; import com.zyplayer.doc.core.json.ResponseJson; import com.zyplayer.doc.core.util.StringUtil; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.config.security.DocUserUtil; +import com.zyplayer.doc.data.repository.manage.entity.DbFavorite; +import com.zyplayer.doc.data.repository.manage.entity.DbHistory; +import com.zyplayer.doc.data.repository.manage.mapper.DbFavoriteMapper; +import com.zyplayer.doc.data.service.manage.DbFavoriteService; +import com.zyplayer.doc.data.service.manage.DbHistoryService; import com.zyplayer.doc.db.framework.db.mapper.base.ExecuteResult; import com.zyplayer.doc.db.framework.db.mapper.base.SqlExecutor; import com.zyplayer.doc.db.framework.json.DocDbResponseJson; +import org.apache.commons.lang.StringUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.sql.Timestamp; +import java.util.Date; +import java.util.List; import java.util.Map; +import java.util.Optional; /** * sql执行器 @@ -28,13 +44,23 @@ public class DbSqlExecutorController { @Resource SqlExecutor sqlExecutor; + @Resource + DbHistoryService dbHistoryService; + @Resource + DbFavoriteService dbFavoriteService; @PostMapping(value = "/execute") public ResponseJson execute(Long sourceId, String executeId, String sql, String params) { - Map paramMap = JSON.parseObject(params); + if (StringUtils.isBlank(sql)) { + return DocDbResponseJson.warn("执行的SQL不能为空"); + } try { + Map paramMap = JSON.parseObject(params); ExecuteResult executeResult = sqlExecutor.execute(sourceId, executeId, sql, paramMap); - String resultJsonStr = JSON.toJSONString(executeResult, SerializerFeature.WriteMapNullValue); + SerializeConfig mapping = new SerializeConfig(); + mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); + mapping.put(Timestamp.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); + String resultJsonStr = JSON.toJSONString(executeResult, mapping, SerializerFeature.WriteMapNullValue); return DocDbResponseJson.ok(resultJsonStr); } catch (Exception e) { return DocDbResponseJson.warn(StringUtil.getException(e)); @@ -46,5 +72,43 @@ public class DbSqlExecutorController { sqlExecutor.cancel(executeId); return DocDbResponseJson.ok(); } + + @PostMapping(value = "/history/list") + public ResponseJson historyList() { + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.orderByDesc("id"); + List favoriteList = dbHistoryService.list(wrapper); + return DocDbResponseJson.ok(favoriteList); + } + + @PostMapping(value = "/favorite/list") + public ResponseJson favoriteList() { + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + UpdateWrapper wrapper = new UpdateWrapper<>(); + wrapper.eq("create_user_id", currentUser.getUserId()); + wrapper.eq("yn", 1); + wrapper.orderByDesc("id"); + List favoriteList = dbFavoriteService.list(wrapper); + return DocDbResponseJson.ok(favoriteList); + } + + @PostMapping(value = "/favorite/add") + public ResponseJson addFavorite(DbFavorite dbFavorite) { + Integer yn = Optional.ofNullable(dbFavorite.getYn()).orElse(1); + if (yn == 1 && StringUtils.isBlank(dbFavorite.getContent())) { + return DocDbResponseJson.warn("收藏的SQL不能为空"); + } + DocUserDetails currentUser = DocUserUtil.getCurrentUser(); + if (dbFavorite.getId() != null && dbFavorite.getId() > 0) { + dbFavoriteService.updateById(dbFavorite); + } else { + dbFavorite.setCreateTime(new Date()); + dbFavorite.setCreateUserId(currentUser.getUserId()); + dbFavorite.setCreateUserName(currentUser.getUsername()); + dbFavorite.setYn(1); + dbFavoriteService.save(dbFavorite); + } + return DocDbResponseJson.ok(); + } } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/base/SqlExecutor.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/base/SqlExecutor.java index 2267af64..121c5b62 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/base/SqlExecutor.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/framework/db/mapper/base/SqlExecutor.java @@ -1,6 +1,12 @@ package com.zyplayer.doc.db.framework.db.mapper.base; import com.baomidou.mybatisplus.core.MybatisConfiguration; +import com.zyplayer.doc.data.config.security.DocUserDetails; +import com.zyplayer.doc.data.config.security.DocUserUtil; +import com.zyplayer.doc.data.repository.manage.entity.DbFavorite; +import com.zyplayer.doc.data.repository.manage.entity.DbHistory; +import com.zyplayer.doc.data.service.manage.DbFavoriteService; +import com.zyplayer.doc.data.service.manage.DbHistoryService; import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; import com.zyplayer.doc.db.framework.db.bean.DatabaseRegistrationBean; import com.zyplayer.doc.db.framework.db.interceptor.SqlLogUtil; @@ -33,6 +39,8 @@ public class SqlExecutor { @Resource DatabaseRegistrationBean databaseRegistrationBean; + @Resource + DbHistoryService dbHistoryService; // 执行中的PreparedStatement信息,用于强制取消执行 private static final Map statementMap = new ConcurrentHashMap<>(); @@ -80,7 +88,11 @@ public class SqlExecutor { StaticSqlSource parse = (StaticSqlSource) sqlSourceBuilder.parse(sql, Object.class, paramMap); BoundSql boundSql = parse.getBoundSql(new Object()); sql = boundSql.getSql(); - logger.info("sql ==> {}", SqlLogUtil.getSqlString(paramMap, boundSql)); + String sqlStr = SqlLogUtil.getSqlString(paramMap, boundSql); + logger.info("sql ==> {}", sqlStr); + // 保留历史记录 + dbHistoryService.saveHistory(sqlStr); + List parameterMappings = boundSql.getParameterMappings(); PreparedStatement preparedStatement = null; // 执行查询 @@ -100,8 +112,8 @@ public class SqlExecutor { while (resultSet.next()) { Map resultMap = new LinkedHashMap<>(); ResultSetMetaData metaData = resultSet.getMetaData(); - for (int i = 0; i < metaData.getColumnCount(); i++) { - resultMap.put(metaData.getColumnName(i + 1), resultSet.getObject(i + 1)); + for (int i = 1; i < metaData.getColumnCount() + 1; i++) { + resultMap.put(metaData.getColumnName(i), resultSet.getObject(i)); } if (handler != null) { handler.handleResult(resultMap); diff --git a/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.4.sql b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.4.sql new file mode 100644 index 00000000..882baa4d --- /dev/null +++ b/zyplayer-doc-manage/src/main/resources/sql/zyplayer_doc_manage.1.0.4.sql @@ -0,0 +1,33 @@ + +-- +-- !!重要说明!! +-- 1、本sql文件分为:从1.0.3版本升级 和 全新的库,即增量和全量的区分,请选择性执行 +-- 2、建议数据库版本:5.7.25 +-- + +-- ------------------------从1.0.3版本升级:------------------------ + +CREATE TABLE `db_favorite` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID', + `name` varchar(50) DEFAULT NULL COMMENT '收藏标题', + `content` varchar(10000) DEFAULT NULL COMMENT '收藏内容', + `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID', + `create_user_name` varchar(20) DEFAULT NULL COMMENT '创建人名字', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `yn` tinyint(4) DEFAULT NULL COMMENT '是否有效 0=无效 1=有效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + +CREATE TABLE `db_history` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键自增ID', + `content` varchar(10000) DEFAULT NULL COMMENT 'sql内容', + `create_user_id` bigint(20) DEFAULT NULL COMMENT '创建人ID', + `create_user_name` varchar(20) DEFAULT NULL COMMENT '创建人名字', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `yn` tinyint(4) DEFAULT NULL COMMENT '是否有效 0=无效 1=有效', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; + + + +-- ------------------------全新的库:------------------------ diff --git a/zyplayer-doc-ui/db-ui/package-lock.json b/zyplayer-doc-ui/db-ui/package-lock.json index 9e542f2a..0cc56bbd 100644 --- a/zyplayer-doc-ui/db-ui/package-lock.json +++ b/zyplayer-doc-ui/db-ui/package-lock.json @@ -1,5 +1,5 @@ { - "name": "element-starter", + "name": "console-ui", "requires": true, "lockfileVersion": 1, "dependencies": { @@ -239,7 +239,7 @@ }, "async-validator": { "version": "1.8.5", - "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz", + "resolved": "https://registry.npm.taobao.org/async-validator/download/async-validator-1.8.5.tgz?cache=0&sync_timestamp=1565685468183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fasync-validator%2Fdownload%2Fasync-validator-1.8.5.tgz", "integrity": "sha1-3D4I7B/Q3dtn5ghC8CwM0c7G1/A=", "requires": { "babel-runtime": "6.x" @@ -2014,7 +2014,7 @@ }, "deepmerge": { "version": "1.5.2", - "resolved": "http://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", + "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz", "integrity": "sha1-EEmdhohEza1P7ghC34x/bwyVp1M=" }, "define-properties": { @@ -2237,9 +2237,9 @@ "dev": true }, "element-ui": { - "version": "2.8.2", - "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.8.2.tgz", - "integrity": "sha1-Iaeky5Jhaw+LddTU5jfToc2MCd4=", + "version": "2.11.1", + "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.11.1.tgz", + "integrity": "sha1-K2f57uPtouaISHPBxYnL4w2anWA=", "requires": { "async-validator": "~1.8.1", "babel-helper-vue-jsx-merge-props": "^2.0.0", @@ -2770,7 +2770,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -3185,7 +3186,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3241,6 +3243,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3284,12 +3287,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -4637,7 +4642,7 @@ }, "normalize-wheel": { "version": "1.0.1", - "resolved": "http://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz", + "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnormalize-wheel%2Fdownload%2Fnormalize-wheel-1.0.1.tgz", "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" }, "nth-check": { @@ -6032,7 +6037,7 @@ }, "resize-observer-polyfill": { "version": "1.5.1", - "resolved": "http://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", + "resolved": "https://registry.npm.taobao.org/resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz", "integrity": "sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=" }, "resolve": { diff --git a/zyplayer-doc-ui/db-ui/src/App.vue b/zyplayer-doc-ui/db-ui/src/App.vue index d784f84b..66302956 100644 --- a/zyplayer-doc-ui/db-ui/src/App.vue +++ b/zyplayer-doc-ui/db-ui/src/App.vue @@ -19,8 +19,8 @@ 系统管理 数据源管理 - 数据库表导出 SQL执行器 + 数据库表导出

                 
- 执行 + 取消执行 + 执行
- 收藏 - 历史记录 + 收藏 + 收藏及历史
@@ -24,15 +25,43 @@ {{executeError}}
- + + + +
- -
- 打开里面的! + +
+ + + + + + + + + + + + + + + + + + + +
@@ -53,18 +82,21 @@ databaseList: [], choiceDatabase: "", + sqlExecuting: false, executeResultList: [], executeResultCols: [], sqlExecutorEditor: {}, nowExecutorId: 1, executeError: "", - + // 收藏及历史 historyDrawerVisible: false, + myFavoriteList: [], + myHistoryListList: [], } }, mounted: function () { app = this; - window.tableMetaInfo = "helloWorld"; + window.tableMetaInfo = ""; app.sqlExecutorEditor = app.initAceEditor("sqlExecutorEditor", 20); this.loadDatasourceList(); }, @@ -87,6 +119,45 @@ app.$message.success("取消成功"); }); }, + loadHistoryAndFavoriteList() { + this.historyDrawerVisible = true; + this.loadHistoryList(); + this.loadFavoriteList(); + }, + loadFavoriteList() { + this.common.post(this.apilist1.favoriteList, {}, function (json) { + app.myFavoriteList = json.data || []; + }); + }, + loadHistoryList() { + this.common.post(this.apilist1.historyList, {}, function (json) { + app.myHistoryListList = json.data || []; + }); + }, + addFavorite(sqlValue) { + if (!sqlValue) { + sqlValue = this.sqlExecutorEditor.getSelectedText(); + if (!sqlValue) { + sqlValue = this.sqlExecutorEditor.getValue(); + } + } + var param = {name: '我的收藏', content: sqlValue}; + this.common.post(this.apilist1.updateFavorite, param, function (json) { + app.$message.success("收藏成功"); + app.loadFavoriteList(); + }); + }, + delFavorite(row) { + var param = {id: row.id, yn: 0}; + this.common.post(this.apilist1.updateFavorite, param, function (json) { + app.$message.success("删除成功"); + app.loadFavoriteList(); + }); + }, + inputFavoriteSql(content) { + this.sqlExecutorEditor.setValue(content); + this.historyDrawerVisible = false; + }, doExecutorSql() { if (!this.choiceDatasourceId) { app.$message.error("请先选择数据源"); @@ -97,32 +168,43 @@ app.executeResultCols = []; this.nowExecutorId = (new Date()).getTime() + Math.ceil(Math.random() * 1000); - var sql = this.sqlExecutorEditor.getValue(); + var sqlValue = this.sqlExecutorEditor.getSelectedText(); + if (!sqlValue) { + sqlValue = this.sqlExecutorEditor.getValue(); + } + this.sqlExecuting = true; this.common.postNonCheck(this.apilist1.executeSql, { sourceId: this.choiceDatasourceId, executeId: this.nowExecutorId, - sql: sql, + sql: sqlValue, params: '', }, function (json) { + app.sqlExecuting = false; if (json.errCode != 200) { app.executeError = json.errMsg; return; } var resultData = JSON.parse(json.data) || {}; var dataList = resultData.result || []; - app.executeResultList = dataList; var executeResultCols = []; if (dataList.length > 0) { for (var key in dataList[0]) { executeResultCols.push({prop: key}); } + for (var i = 0; i < dataList.length; i++) { + dataList[i]._index = i + 1; + } } + app.executeResultList = dataList; app.executeResultCols = executeResultCols; }); }, loadDatasourceList() { this.common.post(this.apilist1.datasourceList, {}, function (json) { app.datasourceList = json.data || []; + if (app.datasourceList.length > 0) { + app.choiceDatasourceId = app.datasourceList[0].id; + } }); }, datasourceChangeEvents() { @@ -144,4 +226,17 @@ .data-executor-vue .el-card__body{ padding: 10px; } + .data-executor-vue .el-table td, .el-table th{ + padding: 6px 0; + } + .data-executor-vue-out .el-tabs__nav-scroll{ + padding-left: 20px; + } + .data-executor-vue-out .el-button+.el-button{ + margin-left: 0px; + } + .data-executor-vue-out .el-table__body-wrapper{ + height: calc(100vh - 180px); + overflow-y: auto; + }