From 9703057956549369444720e429a1bda75a1c1178 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Tue, 15 Apr 2025 16:14:38 +0800 Subject: [PATCH] 1.0 --- oying-system/src/main/resources/config/application-dev.yml | 2 /dev/null | 47 ----------------------- .idea/inspectionProfiles/Project_Default.xml | 8 ++++ .idea/sqldialects.xml | 7 +++ .idea/compiler.xml | 1 .idea/dataSources.xml | 18 +++++++++ oying-system/src/main/resources/config/application-prod.yml | 6 +- README.md | 26 ++++++------- 8 files changed, 50 insertions(+), 65 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 2bf07b9..8f29a85 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -2,6 +2,7 @@ <project version="4"> <component name="CompilerConfiguration"> <annotationProcessing> + <profile default="true" name="Default" enabled="true" /> <profile name="Maven default annotation processors profile" enabled="true"> <sourceOutputDir name="target/generated-sources/annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml new file mode 100644 index 0000000..6e24ddc --- /dev/null +++ b/.idea/dataSources.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="DataSourceManagerImpl" format="xml" multifile-model="true"> + <data-source source="LOCAL" name="oying" uuid="ae90bd7e-992f-4e9a-bff6-a82171b032ef"> + <driver-ref>mysql.8</driver-ref> + <synchronize>true</synchronize> + <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver> + <jdbc-url>jdbc:mysql://118.145.136.116:3306/oying</jdbc-url> + <jdbc-additional-properties> + <property name="com.intellij.clouds.kubernetes.db.host.port" /> + <property name="com.intellij.clouds.kubernetes.db.enabled" value="false" /> + <property name="com.intellij.clouds.kubernetes.db.resource.type" value="Deployment" /> + <property name="com.intellij.clouds.kubernetes.db.container.port" /> + </jdbc-additional-properties> + <working-dir>$ProjectFileDir$</working-dir> + </data-source> + </component> +</project> \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..68ce32a --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ +<component name="InspectionProjectProfileManager"> + <profile version="1.0"> + <option name="myName" value="Project Default" /> + <inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true"> + <option name="ADDITIONAL_TAGS" value="date,description" /> + </inspection_tool> + </profile> +</component> \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml new file mode 100644 index 0000000..539d872 --- /dev/null +++ b/.idea/sqldialects.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="SqlDialectMappings"> + <file url="file://$PROJECT_DIR$" dialect="MySQL" /> + <file url="PROJECT" dialect="MySQL" /> + </component> +</project> \ No newline at end of file diff --git a/README.md b/README.md index 39b9451..61434f7 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ - FileUtil 文件工具类 - oying-system 系统核心模块(系统启动入口) - sysrunner 程序启动后处理数据 - - modules 系统相关模块(登录授权、系统监控、定时任务、系统模块、运维模块) + - modules 系统相关模块(登录授权、系统监控、定时任务、系统模块) - oying-logging 系统日志模块 - oying-tools 系统第三方工具模块 - email 邮件工具 @@ -54,29 +54,27 @@ 一、*基础信息* 1. **用户(User)**:包括所有用户角色(商户、消费者、骑手、代货商、拉新代理等),需要通过角色字段区分。 -2. **商户(Merchant)**:普通商户、大型商户,大型商户可以管理多个门店。 +2. **门店(Store)**:商户可以拥有多个门店,每个门店有独立的信息。 -3. **门店(Store)**:商户可以拥有多个门店,每个门店有独立的信息。 +3. **商品(Product)**:由商户或代货商发布,需要包含商品名称、价格、库存等信息,可能关联到分类和参数。 -4. **商品(Product)**:由商户或代货商发布,需要包含商品名称、价格、库存等信息,可能关联到分类和参数。 +4. **商品分类(Category)**:后台统一维护的商品分类。 -5. **商品分类(Category)**:后台统一维护的商品分类。 +5. **订单(Order)**:消费者下单生成的订单和明细,包含订单状态、商品列表、价格、配送信息等。 -6. **订单(Order)**:消费者下单生成的订单和明细,包含订单状态、商品列表、价格、配送信息等。 +6. **骑手(Rider)**:负责配送订单的骑手信息。 -7. **骑手(Rider)**:负责配送订单的骑手信息。 +7. **配送(Delivery)**:订单的配送信息,关联骑手和订单。 -8. **配送(Delivery)**:订单的配送信息,关联骑手和订单。 +8. **评价(Review)**:消费者对商品和服务的评价。 -9. **评价(Review)**:消费者对商品和服务的评价。 +9. **库存(Inventory)**:<font color="red">(库存维护)</font>商品的库存信息,可能关联到门店。 -10. **库存(Inventory)**:<font color="red">(库存维护)</font>商品的库存信息,可能关联到门店。 +10. **提现记录(Withdrawal)**:商户和骑手的提现记录。<font color="red">(分成规则)</font> -11. **提现记录(Withdrawal)**:商户和骑手的提现记录。<font color="red">(分成规则)</font> +11. **消息(Message)**:系统消息、订单消息、顾客留言等。 -12. **消息(Message)**:系统消息、订单消息、顾客留言等。 - -13. **数据统计(Statistics)**:存储各类统计信息,如订单数量、销售额等 +12. **数据统计(Statistics)**:存储各类统计信息,如订单数量、销售额等 二、 *第三方信息* 1. **支付方式** diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/App.java b/oying-system/src/main/java/com/oying/modules/maint/domain/App.java deleted file mode 100644 index 9688430..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/App.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.oying.modules.maint.domain; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import com.oying.base.BaseEntity; -import java.io.Serializable; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Getter -@Setter -@TableName("mnt_app") -public class App extends BaseEntity implements Serializable { - - - @TableId(value = "app_id", type = IdType.AUTO) - @ApiModelProperty(value = "ID", hidden = true) - private Long id; - - @ApiModelProperty(value = "名称") - private String name; - - @ApiModelProperty(value = "端口") - private int port; - - @ApiModelProperty(value = "上传路径") - private String uploadPath; - - @ApiModelProperty(value = "部署路径") - private String deployPath; - - @ApiModelProperty(value = "备份路径") - private String backupPath; - - @ApiModelProperty(value = "启动脚本") - private String startScript; - - @ApiModelProperty(value = "部署脚本") - private String deployScript; - - public void copy(App source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/Database.java b/oying-system/src/main/java/com/oying/modules/maint/domain/Database.java deleted file mode 100644 index 5372440..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/Database.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.oying.modules.maint.domain; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import com.oying.base.BaseEntity; - -import java.io.Serializable; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Getter -@Setter -@TableName("mnt_database") -public class Database extends BaseEntity implements Serializable { - - @TableId(value = "db_id", type = IdType.AUTO) - @ApiModelProperty(value = "ID", hidden = true) - private String id; - - @ApiModelProperty(value = "数据库名称") - private String name; - - @ApiModelProperty(value = "数据库连接地址") - private String jdbcUrl; - - @ApiModelProperty(value = "数据库密码") - private String pwd; - - @ApiModelProperty(value = "用户名") - private String userName; - - public void copy(Database source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/Deploy.java b/oying-system/src/main/java/com/oying/modules/maint/domain/Deploy.java deleted file mode 100644 index ff9d6f4..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/Deploy.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.oying.modules.maint.domain; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import cn.hutool.core.collection.CollectionUtil; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import com.oying.base.BaseEntity; - -import java.io.Serializable; -import java.util.Set; -import java.util.stream.Collectors; - -/** -* @author Z -* @date 2019-08-24 -*/ - -@Getter -@Setter -@TableName("mnt_deploy") -public class Deploy extends BaseEntity implements Serializable { - - @TableId(value = "deploy_id", type = IdType.AUTO) - @ApiModelProperty(value = "ID", hidden = true) - private Long id; - - @ApiModelProperty(value = "应用编号") - private Long appId; - - @TableField(exist = false) - @ApiModelProperty(name = "服务器", hidden = true) - private Set<Server> deploys; - - @TableField(exist = false) - @ApiModelProperty(value = "应用") - private App app; - - public void copy(Deploy source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } - - public String getServers() { - if(CollectionUtil.isNotEmpty(deploys)){ - return deploys.stream().map(Server::getName).collect(Collectors.joining(",")); - } - return ""; - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/DeployHistory.java b/oying-system/src/main/java/com/oying/modules/maint/domain/DeployHistory.java deleted file mode 100644 index 28046a8..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/DeployHistory.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.oying.modules.maint.domain; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; - -import java.io.Serializable; -import java.sql.Timestamp; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Getter -@Setter -@TableName("mnt_deploy_history") -public class DeployHistory implements Serializable { - - @TableId(value = "history_id", type = IdType.AUTO) - @ApiModelProperty(value = "ID", hidden = true) - private String id; - - @ApiModelProperty(value = "应用名称") - private String appName; - - @ApiModelProperty(value = "IP") - private String ip; - - @ApiModelProperty(value = "部署时间") - private Timestamp deployDate; - - @ApiModelProperty(value = "部署者") - private String deployUser; - - @ApiModelProperty(value = "部署ID") - private Long deployId; - - public void copy(DeployHistory source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/Server.java b/oying-system/src/main/java/com/oying/modules/maint/domain/Server.java deleted file mode 100644 index d21cb37..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/Server.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.oying.modules.maint.domain; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.bean.copier.CopyOptions; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import io.swagger.annotations.ApiModelProperty; -import lombok.Getter; -import lombok.Setter; -import com.oying.base.BaseEntity; - -import java.io.Serializable; -import java.util.Objects; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Getter -@Setter -@TableName("mnt_server") -public class Server extends BaseEntity implements Serializable { - - @TableId(value = "server_id", type = IdType.AUTO) - @ApiModelProperty(value = "ID", hidden = true) - private Long id; - - @ApiModelProperty(value = "服务器名称") - private String name; - - @ApiModelProperty(value = "IP") - private String ip; - - @ApiModelProperty(value = "端口") - private Integer port; - - @ApiModelProperty(value = "账号") - private String account; - - @ApiModelProperty(value = "密码") - private String password; - - public void copy(Server source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Server that = (Server) o; - return Objects.equals(id, that.id) && - Objects.equals(name, that.name); - } - - @Override - public int hashCode() { - return Objects.hash(id, name); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/AppQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/maint/domain/dto/AppQueryCriteria.java deleted file mode 100644 index 2429f46..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/AppQueryCriteria.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.oying.modules.maint.domain.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Data -public class AppQueryCriteria{ - - @ApiModelProperty(value = "名称") - private String name; - - @ApiModelProperty(value = "创建时间") - private List<Timestamp> createTime; - - @ApiModelProperty(value = "页码", example = "1") - private Integer page = 1; - - @ApiModelProperty(value = "每页数据量", example = "10") - private Integer size = 10; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DatabaseQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DatabaseQueryCriteria.java deleted file mode 100644 index 9c2eefb..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DatabaseQueryCriteria.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.oying.modules.maint.domain.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Data -public class DatabaseQueryCriteria{ - - @ApiModelProperty(value = "名称") - private String name; - - @ApiModelProperty(value = "数据源") - private String jdbcUrl; - - @ApiModelProperty(value = "创建时间") - private List<Timestamp> createTime; - - @ApiModelProperty(value = "页码", example = "1") - private Integer page = 1; - - @ApiModelProperty(value = "每页数据量", example = "10") - private Integer size = 10; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployHistoryQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployHistoryQueryCriteria.java deleted file mode 100644 index 33ed5b4..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployHistoryQueryCriteria.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.oying.modules.maint.domain.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Data -public class DeployHistoryQueryCriteria{ - - @ApiModelProperty(value = "模糊查询") - private String blurry; - - @ApiModelProperty(value = "部署ID") - private Long deployId; - - @ApiModelProperty(value = "部署时间") - private List<Timestamp> deployDate; - - @ApiModelProperty(value = "页码", example = "1") - private Integer page = 1; - - @ApiModelProperty(value = "每页数据量", example = "10") - private Integer size = 10; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployQueryCriteria.java deleted file mode 100644 index b1c6531..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/DeployQueryCriteria.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.oying.modules.maint.domain.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Data -public class DeployQueryCriteria{ - - @ApiModelProperty(value = "应用名称") - private String appName; - - @ApiModelProperty(value = "创建时间") - private List<Timestamp> createTime; - - @ApiModelProperty(value = "页码", example = "1") - private Integer page = 1; - - @ApiModelProperty(value = "每页数据量", example = "10") - private Integer size = 10; - - @ApiModelProperty(value = "查询分页偏移量", hidden = true) - private Long offset; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/ServerQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/maint/domain/dto/ServerQueryCriteria.java deleted file mode 100644 index c7a3041..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/dto/ServerQueryCriteria.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.oying.modules.maint.domain.dto; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.sql.Timestamp; -import java.util.List; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Data -public class ServerQueryCriteria { - - @ApiModelProperty(value = "模糊查询") - private String blurry; - - @ApiModelProperty(value = "创建时间") - private List<Timestamp> createTime; - - @ApiModelProperty(value = "页码", example = "1") - private Integer page = 1; - - @ApiModelProperty(value = "每页数据量", example = "10") - private Integer size = 10; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/enums/DataTypeEnum.java b/oying-system/src/main/java/com/oying/modules/maint/domain/enums/DataTypeEnum.java deleted file mode 100644 index 9c4b7c2..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/enums/DataTypeEnum.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.oying.modules.maint.domain.enums; -import lombok.extern.slf4j.Slf4j; - -/** - * @author Z - */ -@Slf4j -@SuppressWarnings({"unchecked","all"}) -public enum DataTypeEnum { - - /** mysql */ - MYSQL("mysql", "mysql", "com.mysql.jdbc.Driver", "`", "`", "'", "'"), - - /** oracle */ - ORACLE("oracle", "oracle", "oracle.jdbc.driver.OracleDriver", "\"", "\"", "\"", "\""), - - /** sql server */ - SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "\"", "\""), - - /** h2 */ - H2("h2", "h2", "org.h2.Driver", "`", "`", "\"", "\""), - - /** phoenix */ - PHOENIX("phoenix", "hbase phoenix", "org.apache.phoenix.jdbc.PhoenixDriver", "", "", "\"", "\""), - - /** mongo */ - MONGODB("mongo", "mongodb", "mongodb.jdbc.MongoDriver", "`", "`", "\"", "\""), - - /** sql4es */ - ELASTICSEARCH("sql4es", "elasticsearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), - - /** presto */ - PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", "", "", "\"", "\""), - - /** moonbox */ - MOONBOX("moonbox", "moonbox", "moonbox.jdbc.MbDriver", "`", "`", "`", "`"), - - /** cassandra */ - CASSANDRA("cassandra", "cassandra", "com.github.adejanovski.cassandra.jdbc.CassandraDriver", "", "", "'", "'"), - - /** click house */ - CLICKHOUSE("clickhouse", "clickhouse", "ru.yandex.clickhouse.ClickHouseDriver", "", "", "\"", "\""), - - /** kylin */ - KYLIN("kylin", "kylin", "org.apache.kylin.jdbc.Driver", "\"", "\"", "\"", "\""), - - /** vertica */ - VERTICA("vertica", "vertica", "com.vertica.jdbc.Driver", "", "", "'", "'"), - - /** sap */ - HANA("sap", "sap hana", "com.sap.db.jdbc.Driver", "", "", "'", "'"), - - /** impala */ - IMPALA("impala", "impala", "com.cloudera.impala.jdbc41.Driver", "", "", "'", "'"); - - private String feature; - private String desc; - private String driver; - private String keywordPrefix; - private String keywordSuffix; - private String aliasPrefix; - private String aliasSuffix; - - private static final String JDBC_URL_PREFIX = "jdbc:"; - - DataTypeEnum(String feature, String desc, String driver, String keywordPrefix, String keywordSuffix, String aliasPrefix, String aliasSuffix) { - this.feature = feature; - this.desc = desc; - this.driver = driver; - this.keywordPrefix = keywordPrefix; - this.keywordSuffix = keywordSuffix; - this.aliasPrefix = aliasPrefix; - this.aliasSuffix = aliasSuffix; - } - - public static DataTypeEnum urlOf(String jdbcUrl) { - String url = jdbcUrl.toLowerCase().trim(); - for (DataTypeEnum dataTypeEnum : values()) { - if (url.startsWith(JDBC_URL_PREFIX + dataTypeEnum.feature)) { - try { - Class<?> aClass = Class.forName(dataTypeEnum.getDriver()); - if (null == aClass) { - throw new RuntimeException("Unable to get driver instance for jdbcUrl: " + jdbcUrl); - } - } catch (ClassNotFoundException e) { - throw new RuntimeException("Unable to get driver instance: " + jdbcUrl); - } - return dataTypeEnum; - } - } - return null; - } - - public String getFeature() { - return feature; - } - - public String getDesc() { - return desc; - } - - public String getDriver() { - return driver; - } - - public String getKeywordPrefix() { - return keywordPrefix; - } - - public String getKeywordSuffix() { - return keywordSuffix; - } - - public String getAliasPrefix() { - return aliasPrefix; - } - - public String getAliasSuffix() { - return aliasSuffix; - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/domain/enums/MsgType.java b/oying-system/src/main/java/com/oying/modules/maint/domain/enums/MsgType.java deleted file mode 100644 index 377c448..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/domain/enums/MsgType.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.oying.modules.maint.domain.enums; - -/** - * @author Z - * @date 2019-08-10 9:56 - */ -public enum MsgType { - /** 连接 */ - CONNECT, - /** 关闭 */ - CLOSE, - /** 信息 */ - INFO, - /** 错误 */ - ERROR -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/AppMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/AppMapper.java deleted file mode 100644 index 61bfc29..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/AppMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.App; -import com.oying.modules.maint.domain.dto.AppQueryCriteria; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface AppMapper extends BaseMapper<App> { - - IPage<App> queryAll(@Param("criteria") AppQueryCriteria criteria, Page<Object> page); - - List<App> queryAll(@Param("criteria") AppQueryCriteria criteria); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/DatabaseMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/DatabaseMapper.java deleted file mode 100644 index 91f6933..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/DatabaseMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.Database; -import com.oying.modules.maint.domain.dto.DatabaseQueryCriteria; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface DatabaseMapper extends BaseMapper<Database> { - - IPage<Database> findAll(@Param("criteria") DatabaseQueryCriteria criteria, Page<Object> page); - - List<Database> findAll(@Param("criteria") DatabaseQueryCriteria criteria); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployHistoryMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployHistoryMapper.java deleted file mode 100644 index c174688..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployHistoryMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployHistoryQueryCriteria; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface DeployHistoryMapper extends BaseMapper<DeployHistory> { - - IPage<DeployHistory> findAll(@Param("criteria") DeployHistoryQueryCriteria criteria, Page<Object> page); - - List<DeployHistory> findAll(@Param("criteria") DeployHistoryQueryCriteria criteria); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployMapper.java deleted file mode 100644 index 03dc727..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.oying.modules.maint.domain.Deploy; -import com.oying.modules.maint.domain.dto.DeployQueryCriteria; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import java.util.List; -import java.util.Set; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface DeployMapper extends BaseMapper<Deploy> { - - Long countAll(@Param("criteria") DeployQueryCriteria criteria); - - List<Deploy> findAll(@Param("criteria") DeployQueryCriteria criteria); - - Set<Long> getIdByAppIds(@Param("appIds") Set<Long> appIds); - - Deploy getDeployById(@Param("deployId") Long deployId); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployServerMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployServerMapper.java deleted file mode 100644 index c224069..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/DeployServerMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.oying.modules.maint.domain.Server; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.Set; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface DeployServerMapper { - - void insertData(@Param("deployId") Long deployId, @Param("servers") Set<Server> servers); - - void deleteByDeployId(@Param("deployId") Long deployId); - - void deleteByDeployIds(@Param("deployIds") Set<Long> deployIds); - - void deleteByServerIds(@Param("serverIds") Set<Long> serverIds); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/mapper/ServerMapper.java b/oying-system/src/main/java/com/oying/modules/maint/mapper/ServerMapper.java deleted file mode 100644 index a48b475..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/mapper/ServerMapper.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.oying.modules.maint.mapper; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.Server; -import com.oying.modules.maint.domain.dto.ServerQueryCriteria; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * @author Z - * @description - * @date 2023-06-12 - **/ -@Mapper -public interface ServerMapper extends BaseMapper<Server> { - - Server findByIp(@Param("ip") String ip); - - IPage<Server> findAll(@Param("criteria") ServerQueryCriteria criteria, Page<Object> page); - - List<Server> findAll(@Param("criteria") ServerQueryCriteria criteria); -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/rest/AppController.java b/oying-system/src/main/java/com/oying/modules/maint/rest/AppController.java deleted file mode 100644 index b2398e9..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/rest/AppController.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.oying.modules.maint.rest; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.App; -import com.oying.modules.maint.domain.dto.AppQueryCriteria; -import com.oying.modules.maint.service.AppService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import com.oying.annotation.Log; -import com.oying.utils.PageResult; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -@RestController -@RequiredArgsConstructor -@Api(tags = "运维:应用管理") -@RequestMapping("/api/app") -public class AppController { - - private final AppService appService; - - @ApiOperation("导出应用数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('app:list')") - public void exportApp(HttpServletResponse response, AppQueryCriteria criteria) throws IOException { - appService.download(appService.queryAll(criteria), response); - } - - @ApiOperation(value = "查询应用") - @GetMapping - @PreAuthorize("@el.check('app:list')") - public ResponseEntity<PageResult<App>> queryApp(AppQueryCriteria criteria){ - Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(appService.queryAll(criteria, page),HttpStatus.OK); - } - - @Log("新增应用") - @ApiOperation(value = "新增应用") - @PostMapping - @PreAuthorize("@el.check('app:add')") - public ResponseEntity<Object> createApp(@Validated @RequestBody App resources){ - appService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @Log("修改应用") - @ApiOperation(value = "修改应用") - @PutMapping - @PreAuthorize("@el.check('app:edit')") - public ResponseEntity<Object> updateApp(@Validated @RequestBody App resources){ - appService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除应用") - @ApiOperation(value = "删除应用") - @DeleteMapping - @PreAuthorize("@el.check('app:del')") - public ResponseEntity<Object> deleteApp(@RequestBody Set<Long> ids){ - appService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/rest/DatabaseController.java b/oying-system/src/main/java/com/oying/modules/maint/rest/DatabaseController.java deleted file mode 100644 index 323f914..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/rest/DatabaseController.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.oying.modules.maint.rest; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.Database; -import com.oying.modules.maint.domain.dto.DatabaseQueryCriteria; -import com.oying.modules.maint.service.DatabaseService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import com.oying.annotation.Log; -import com.oying.exception.BadRequestException; -import com.oying.modules.maint.util.SqlUtils; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Api(tags = "运维:数据库管理") -@RestController -@RequiredArgsConstructor -@RequestMapping("/api/database") -public class DatabaseController { - - private final String fileSavePath = FileUtil.getTmpDirPath()+"/"; - private final DatabaseService databaseService; - - @ApiOperation("导出数据库数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('database:list')") - public void exportDatabase(HttpServletResponse response, DatabaseQueryCriteria criteria) throws IOException { - databaseService.download(databaseService.queryAll(criteria), response); - } - - @ApiOperation(value = "查询数据库") - @GetMapping - @PreAuthorize("@el.check('database:list')") - public ResponseEntity<PageResult<Database>> queryDatabase(DatabaseQueryCriteria criteria){ - Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(databaseService.queryAll(criteria, page),HttpStatus.OK); - } - - @Log("新增数据库") - @ApiOperation(value = "新增数据库") - @PostMapping - @PreAuthorize("@el.check('database:add')") - public ResponseEntity<Object> createDatabase(@Validated @RequestBody Database resources){ - databaseService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @Log("修改数据库") - @ApiOperation(value = "修改数据库") - @PutMapping - @PreAuthorize("@el.check('database:edit')") - public ResponseEntity<Object> updateDatabase(@Validated @RequestBody Database resources){ - databaseService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除数据库") - @ApiOperation(value = "删除数据库") - @DeleteMapping - @PreAuthorize("@el.check('database:del')") - public ResponseEntity<Object> deleteDatabase(@RequestBody Set<String> ids){ - databaseService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("测试数据库链接") - @ApiOperation(value = "测试数据库链接") - @PostMapping("/testConnect") - @PreAuthorize("@el.check('database:testConnect')") - public ResponseEntity<Object> testConnect(@Validated @RequestBody Database resources){ - return new ResponseEntity<>(databaseService.testConnection(resources),HttpStatus.CREATED); - } - - @Log("执行SQL脚本") - @ApiOperation(value = "执行SQL脚本") - @PostMapping(value = "/upload") - @PreAuthorize("@el.check('database:add')") - public ResponseEntity<Object> uploadDatabase(@RequestBody MultipartFile file, HttpServletRequest request)throws Exception{ - String id = request.getParameter("id"); - Database database = databaseService.getById(id); - String fileName; - if(database != null){ - fileName = FileUtil.verifyFilename(file.getOriginalFilename()); - File executeFile = new File(fileSavePath+fileName); - FileUtil.del(executeFile); - file.transferTo(executeFile); - String result = SqlUtils.executeFile(database.getJdbcUrl(), database.getUserName(), database.getPwd(), executeFile); - return new ResponseEntity<>(result,HttpStatus.OK); - }else{ - throw new BadRequestException("Database not exist"); - } - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/rest/DeployController.java b/oying-system/src/main/java/com/oying/modules/maint/rest/DeployController.java deleted file mode 100644 index 0b61020..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/rest/DeployController.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.oying.modules.maint.rest; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.Deploy; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployQueryCriteria; -import com.oying.modules.maint.service.DeployService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import com.oying.annotation.Log; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -@RestController -@Api(tags = "运维:部署管理") -@RequiredArgsConstructor -@RequestMapping("/api/deploy") -public class DeployController { - - private final String fileSavePath = FileUtil.getTmpDirPath()+"/"; - private final DeployService deployService; - - @ApiOperation("导出部署数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('database:list')") - public void exportDeployData(HttpServletResponse response, DeployQueryCriteria criteria) throws IOException { - deployService.download(deployService.queryAll(criteria), response); - } - - @ApiOperation(value = "查询部署") - @GetMapping - @PreAuthorize("@el.check('deploy:list')") - public ResponseEntity<PageResult<Deploy>> queryDeployData(DeployQueryCriteria criteria){ - Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(deployService.queryAll(criteria, page),HttpStatus.OK); - } - - @Log("新增部署") - @ApiOperation(value = "新增部署") - @PostMapping - @PreAuthorize("@el.check('deploy:add')") - public ResponseEntity<Object> createDeploy(@Validated @RequestBody Deploy resources){ - deployService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @Log("修改部署") - @ApiOperation(value = "修改部署") - @PutMapping - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<Object> updateDeploy(@Validated @RequestBody Deploy resources){ - deployService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除部署") - @ApiOperation(value = "删除部署") - @DeleteMapping - @PreAuthorize("@el.check('deploy:del')") - public ResponseEntity<Object> deleteDeploy(@RequestBody Set<Long> ids){ - deployService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("上传文件部署") - @ApiOperation(value = "上传文件部署") - @PostMapping(value = "/upload") - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<Object> uploadDeploy(@RequestBody MultipartFile file, HttpServletRequest request)throws Exception{ - Long id = Long.valueOf(request.getParameter("id")); - String fileName = ""; - if(file != null){ - fileName = FileUtil.verifyFilename(file.getOriginalFilename()); - File deployFile = new File(fileSavePath+fileName); - FileUtil.del(deployFile); - file.transferTo(deployFile); - //文件下一步要根据文件名字来 - deployService.deploy(fileSavePath+fileName ,id); - }else{ - System.out.println("没有找到相对应的文件"); - } - System.out.println("文件上传的原名称为:"+ Objects.requireNonNull(file).getOriginalFilename()); - Map<String,Object> map = new HashMap<>(2); - map.put("errno",0); - map.put("id",fileName); - return new ResponseEntity<>(map,HttpStatus.OK); - } - - @Log("系统还原") - @ApiOperation(value = "系统还原") - @PostMapping(value = "/serverReduction") - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<String> serverReduction(@Validated @RequestBody DeployHistory resources){ - String result = deployService.serverReduction(resources); - return new ResponseEntity<>(result,HttpStatus.OK); - } - - @Log("服务运行状态") - @ApiOperation(value = "服务运行状态") - @PostMapping(value = "/serverStatus") - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<String> serverStatus(@Validated @RequestBody Deploy resources){ - String result = deployService.serverStatus(resources); - return new ResponseEntity<>(result,HttpStatus.OK); - } - - @Log("启动服务") - @ApiOperation(value = "启动服务") - @PostMapping(value = "/startServer") - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<String> startServer(@Validated @RequestBody Deploy resources){ - String result = deployService.startServer(resources); - return new ResponseEntity<>(result,HttpStatus.OK); - } - - @Log("停止服务") - @ApiOperation(value = "停止服务") - @PostMapping(value = "/stopServer") - @PreAuthorize("@el.check('deploy:edit')") - public ResponseEntity<String> stopServer(@Validated @RequestBody Deploy resources){ - String result = deployService.stopServer(resources); - return new ResponseEntity<>(result,HttpStatus.OK); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/rest/DeployHistoryController.java b/oying-system/src/main/java/com/oying/modules/maint/rest/DeployHistoryController.java deleted file mode 100644 index 82c9e0a..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/rest/DeployHistoryController.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.oying.modules.maint.rest; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployHistoryQueryCriteria; -import com.oying.modules.maint.service.DeployHistoryService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import com.oying.annotation.Log; -import com.oying.utils.PageResult; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -@RestController -@RequiredArgsConstructor -@Api(tags = "运维:部署历史管理") -@RequestMapping("/api/deployHistory") -public class DeployHistoryController { - - private final DeployHistoryService deployhistoryService; - - @ApiOperation("导出部署历史数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('deployHistory:list')") - public void exportDeployHistory(HttpServletResponse response, DeployHistoryQueryCriteria criteria) throws IOException { - deployhistoryService.download(deployhistoryService.queryAll(criteria), response); - } - - @ApiOperation(value = "查询部署历史") - @GetMapping - @PreAuthorize("@el.check('deployHistory:list')") - public ResponseEntity<PageResult<DeployHistory>> queryDeployHistory(DeployHistoryQueryCriteria criteria){ - Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(deployhistoryService.queryAll(criteria, page),HttpStatus.OK); - } - - @Log("删除DeployHistory") - @ApiOperation(value = "删除部署历史") - @DeleteMapping - @PreAuthorize("@el.check('deployHistory:del')") - public ResponseEntity<Object> deleteDeployHistory(@RequestBody Set<String> ids){ - deployhistoryService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/rest/ServerController.java b/oying-system/src/main/java/com/oying/modules/maint/rest/ServerController.java deleted file mode 100644 index 2789b84..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/rest/ServerController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.oying.modules.maint.rest; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.oying.modules.maint.domain.Server; -import com.oying.modules.maint.domain.dto.ServerQueryCriteria; -import com.oying.modules.maint.service.ServerService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import com.oying.annotation.Log; -import com.oying.utils.PageResult; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -@RestController -@Api(tags = "运维:服务器管理") -@RequiredArgsConstructor -@RequestMapping("/api/serverDeploy") -public class ServerController { - - private final ServerService serverService; - - @ApiOperation("导出服务器数据") - @GetMapping(value = "/download") - @PreAuthorize("@el.check('serverDeploy:list')") - public void exportServerDeploy(HttpServletResponse response, ServerQueryCriteria criteria) throws IOException { - serverService.download(serverService.queryAll(criteria), response); - } - - @ApiOperation(value = "查询服务器") - @GetMapping - @PreAuthorize("@el.check('serverDeploy:list')") - public ResponseEntity<PageResult<Server>> queryServerDeploy(ServerQueryCriteria criteria){ - Page<Object> page = new Page<>(criteria.getPage(), criteria.getSize()); - return new ResponseEntity<>(serverService.queryAll(criteria, page),HttpStatus.OK); - } - - @Log("新增服务器") - @ApiOperation(value = "新增服务器") - @PostMapping - @PreAuthorize("@el.check('serverDeploy:add')") - public ResponseEntity<Object> createServerDeploy(@Validated @RequestBody Server resources){ - serverService.create(resources); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @Log("修改服务器") - @ApiOperation(value = "修改服务器") - @PutMapping - @PreAuthorize("@el.check('serverDeploy:edit')") - public ResponseEntity<Object> updateServerDeploy(@Validated @RequestBody Server resources){ - serverService.update(resources); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除服务器") - @ApiOperation(value = "删除Server") - @DeleteMapping - @PreAuthorize("@el.check('serverDeploy:del')") - public ResponseEntity<Object> deleteServerDeploy(@RequestBody Set<Long> ids){ - serverService.delete(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("测试连接服务器") - @ApiOperation(value = "测试连接服务器") - @PostMapping("/testConnect") - @PreAuthorize("@el.check('serverDeploy:add')") - public ResponseEntity<Object> testConnectServerDeploy(@Validated @RequestBody Server resources){ - return new ResponseEntity<>(serverService.testConnect(resources),HttpStatus.CREATED); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/AppService.java b/oying-system/src/main/java/com/oying/modules/maint/service/AppService.java deleted file mode 100644 index 185e0a1..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/AppService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.oying.modules.maint.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.oying.modules.maint.domain.dto.AppQueryCriteria; -import com.oying.modules.maint.domain.App; -import com.oying.utils.PageResult; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -public interface AppService extends IService<App> { - - /** - * 分页查询 - * @param criteria 条件 - * @param page 分页参数 - * @return / - */ - PageResult<App> queryAll(AppQueryCriteria criteria, Page<Object> page); - - /** - * 查询全部数据 - * - * @param criteria 条件 - * @return / - */ - List<App> queryAll(AppQueryCriteria criteria); - - /** - * 创建 - * @param resources / - */ - void create(App resources); - - /** - * 编辑 - * @param resources / - */ - void update(App resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set<Long> ids); - - /** - * 导出数据 - * @param apps / - * @param response / - * @throws IOException / - */ - void download(List<App> apps, HttpServletResponse response) throws IOException; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/DatabaseService.java b/oying-system/src/main/java/com/oying/modules/maint/service/DatabaseService.java deleted file mode 100644 index ea89a41..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/DatabaseService.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.oying.modules.maint.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.oying.modules.maint.domain.Database; -import com.oying.modules.maint.domain.dto.DatabaseQueryCriteria; -import com.oying.utils.PageResult; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** - * @author Z - * @date 2019-08-24 - */ -public interface DatabaseService extends IService<Database> { - - /** - * 分页查询 - * - * @param criteria 条件 - * @param page 分页参数 - * @return / - */ - PageResult<Database> queryAll(DatabaseQueryCriteria criteria, Page<Object> page); - - /** - * 查询全部 - * @param criteria 条件 - * @return / - */ - List<Database> queryAll(DatabaseQueryCriteria criteria); - - /** - * 创建 - * @param resources / - */ - void create(Database resources); - - /** - * 编辑 - * @param resources / - */ - void update(Database resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set<String> ids); - - /** - * 测试连接 - * @param resources / - * @return / - */ - boolean testConnection(Database resources); - - /** - * 导出数据 - * @param queryAll / - * @param response / - * @throws IOException e - */ - void download(List<Database> queryAll, HttpServletResponse response) throws IOException; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/DeployHistoryService.java b/oying-system/src/main/java/com/oying/modules/maint/service/DeployHistoryService.java deleted file mode 100644 index ed4203f..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/DeployHistoryService.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.oying.modules.maint.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployHistoryQueryCriteria; -import com.oying.utils.PageResult; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** - * @author Z - */ -public interface DeployHistoryService extends IService<DeployHistory> { - - /** - * 分页查询 - * - * @param criteria 条件 - * @param page 分页参数 - * @return / - */ - PageResult<DeployHistory> queryAll(DeployHistoryQueryCriteria criteria, Page<Object> page); - - /** - * 查询全部 - * - * @param criteria 条件 - * @return / - */ - List<DeployHistory> queryAll(DeployHistoryQueryCriteria criteria); - - /** - * 创建 - * @param resources / - */ - void create(DeployHistory resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set<String> ids); - - /** - * 导出数据 - * @param queryAll / - * @param response / - * @throws IOException / - */ - void download(List<DeployHistory> queryAll, HttpServletResponse response) throws IOException; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/DeployService.java b/oying-system/src/main/java/com/oying/modules/maint/service/DeployService.java deleted file mode 100644 index 82d5271..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/DeployService.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.oying.modules.maint.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.oying.modules.maint.domain.Deploy; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployQueryCriteria; -import com.oying.utils.PageResult; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -public interface DeployService extends IService<Deploy> { - - /** - * 分页查询 - * - * @param criteria 条件 - * @param page 分页参数 - * @return / - */ - PageResult<Deploy> queryAll(DeployQueryCriteria criteria, Page<Object> page); - - /** - * 查询全部数据 - * @param criteria 条件 - * @return / - */ - List<Deploy> queryAll(DeployQueryCriteria criteria); - - /** - * 创建 - * @param resources / - */ - void create(Deploy resources); - - - /** - * 编辑 - * @param resources / - */ - void update(Deploy resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set<Long> ids); - - /** - * 部署服务 - * @param fileSavePath / - * @param appId / - */ - void deploy(String fileSavePath, Long appId); - - /** - * 查询部署状态 - * @param resources / - * @return / - */ - String serverStatus(Deploy resources); - /** - * 启动服务 - * @param resources / - * @return / - */ - String startServer(Deploy resources); - /** - * 停止服务 - * @param resources / - * @return / - */ - String stopServer(Deploy resources); - - /** - * 停止服务 - * @param resources / - * @return / - */ - String serverReduction(DeployHistory resources); - - /** - * 导出数据 - * @param queryAll / - * @param response / - * @throws IOException / - */ - void download(List<Deploy> queryAll, HttpServletResponse response) throws IOException; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/ServerService.java b/oying-system/src/main/java/com/oying/modules/maint/service/ServerService.java deleted file mode 100644 index e95359e..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/ServerService.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.oying.modules.maint.service; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.IService; -import com.oying.modules.maint.domain.Server; -import com.oying.modules.maint.domain.dto.ServerQueryCriteria; -import com.oying.utils.PageResult; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -/** -* @author Z -* @date 2019-08-24 -*/ -public interface ServerService extends IService<Server> { - - /** - * 分页查询 - * - * @param criteria 条件 - * @param page 分页参数 - * @return / - */ - PageResult<Server> queryAll(ServerQueryCriteria criteria, Page<Object> page); - - /** - * 查询全部数据 - * @param criteria 条件 - * @return / - */ - List<Server> queryAll(ServerQueryCriteria criteria); - - /** - * 创建 - * @param resources / - */ - void create(Server resources); - - /** - * 编辑 - * @param resources / - */ - void update(Server resources); - - /** - * 删除 - * @param ids / - */ - void delete(Set<Long> ids); - - /** - * 根据IP查询 - * - * @param ip / - * @return / - */ - Server findByIp(String ip); - - /** - * 测试连接 - * @param resources / - * @return / - */ - Boolean testConnect(Server resources); - - /** - * 导出数据 - * @param queryAll / - * @param response / - * @throws IOException / - */ - void download(List<Server> queryAll, HttpServletResponse response) throws IOException; -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/impl/AppServiceImpl.java b/oying-system/src/main/java/com/oying/modules/maint/service/impl/AppServiceImpl.java deleted file mode 100644 index 2d10b5a..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/impl/AppServiceImpl.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.oying.modules.maint.service.impl; - -import cn.hutool.core.collection.CollUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.maint.domain.dto.AppQueryCriteria; -import com.oying.modules.maint.mapper.AppMapper; -import com.oying.modules.maint.mapper.DeployMapper; -import com.oying.modules.maint.mapper.DeployServerMapper; -import lombok.RequiredArgsConstructor; -import com.oying.exception.BadRequestException; -import com.oying.modules.maint.domain.App; -import com.oying.modules.maint.service.AppService; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import com.oying.utils.PageUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Service -@RequiredArgsConstructor -public class AppServiceImpl extends ServiceImpl<AppMapper, App> implements AppService { - - private final AppMapper appMapper; - private final DeployMapper deployMapper; - private final DeployServerMapper deployServerMapper; - - @Override - public PageResult<App> queryAll(AppQueryCriteria criteria, Page<Object> page){ - return PageUtil.toPage(appMapper.queryAll(criteria, page)); - } - - @Override - public List<App> queryAll(AppQueryCriteria criteria){ - return appMapper.queryAll(criteria); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(App resources) { - verification(resources); - save(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(App resources) { - verification(resources); - App app = getById(resources.getId()); - app.copy(resources); - saveOrUpdate(app); - } - - private void verification(App resources){ - String opt = "/opt"; - String home = "/home"; - if (!(resources.getUploadPath().startsWith(opt) || resources.getUploadPath().startsWith(home))) { - throw new BadRequestException("文件只能上传在opt目录或者home目录 "); - } - if (!(resources.getDeployPath().startsWith(opt) || resources.getDeployPath().startsWith(home))) { - throw new BadRequestException("文件只能部署在opt目录或者home目录 "); - } - if (!(resources.getBackupPath().startsWith(opt) || resources.getBackupPath().startsWith(home))) { - throw new BadRequestException("文件只能备份在opt目录或者home目录 "); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set<Long> ids) { - // 删除应用 - removeBatchByIds(ids); - // 删除部署 - Set<Long> deployIds = deployMapper.getIdByAppIds(ids); - if(CollUtil.isNotEmpty(deployIds)){ - deployServerMapper.deleteByDeployIds(deployIds); - deployMapper.deleteBatchIds(deployIds); - } - } - - @Override - public void download(List<App> apps, HttpServletResponse response) throws IOException { - List<Map<String, Object>> list = new ArrayList<>(); - for (App app : apps) { - Map<String,Object> map = new LinkedHashMap<>(); - map.put("应用名称", app.getName()); - map.put("端口", app.getPort()); - map.put("上传目录", app.getUploadPath()); - map.put("部署目录", app.getDeployPath()); - map.put("备份目录", app.getBackupPath()); - map.put("启动脚本", app.getStartScript()); - map.put("部署脚本", app.getDeployScript()); - map.put("创建日期", app.getCreateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DatabaseServiceImpl.java b/oying-system/src/main/java/com/oying/modules/maint/service/impl/DatabaseServiceImpl.java deleted file mode 100644 index ebd4814..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DatabaseServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.oying.modules.maint.service.impl; - -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.maint.domain.Database; -import com.oying.modules.maint.domain.dto.DatabaseQueryCriteria; -import com.oying.modules.maint.mapper.DatabaseMapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import com.oying.modules.maint.service.DatabaseService; -import com.oying.modules.maint.util.SqlUtils; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import com.oying.utils.PageUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Slf4j -@Service -@RequiredArgsConstructor -public class DatabaseServiceImpl extends ServiceImpl<DatabaseMapper, Database> implements DatabaseService { - - private final DatabaseMapper databaseMapper; - - @Override - public PageResult<Database> queryAll(DatabaseQueryCriteria criteria, Page<Object> page){ - return PageUtil.toPage(databaseMapper.findAll(criteria, page)); - } - - @Override - public List<Database> queryAll(DatabaseQueryCriteria criteria){ - return databaseMapper.findAll(criteria); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(Database resources) { - resources.setId(IdUtil.simpleUUID()); - save(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(Database resources) { - Database database = getById(resources.getId()); - database.copy(resources); - saveOrUpdate(database); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set<String> ids) { - removeBatchByIds(ids); - } - - @Override - public boolean testConnection(Database resources) { - try { - return SqlUtils.testConnection(resources.getJdbcUrl(), resources.getUserName(), resources.getPwd()); - } catch (Exception e) { - log.error(e.getMessage()); - return false; - } - } - - @Override - public void download(List<Database> databases, HttpServletResponse response) throws IOException { - List<Map<String, Object>> list = new ArrayList<>(); - for (Database database : databases) { - Map<String,Object> map = new LinkedHashMap<>(); - map.put("数据库名称", database.getName()); - map.put("数据库连接地址", database.getJdbcUrl()); - map.put("用户名", database.getUserName()); - map.put("创建日期", database.getCreateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployHistoryServiceImpl.java b/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployHistoryServiceImpl.java deleted file mode 100644 index 1feb2e1..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployHistoryServiceImpl.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.oying.modules.maint.service.impl; - -import cn.hutool.core.util.IdUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.dto.DeployHistoryQueryCriteria; -import lombok.RequiredArgsConstructor; -import com.oying.modules.maint.mapper.DeployHistoryMapper; -import com.oying.modules.maint.service.DeployHistoryService; -import com.oying.utils.DateUtil; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import com.oying.utils.PageUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Service -@RequiredArgsConstructor -public class DeployHistoryServiceImpl extends ServiceImpl<DeployHistoryMapper, DeployHistory> implements DeployHistoryService { - - private final DeployHistoryMapper deployhistoryMapper; - - @Override - public PageResult<DeployHistory> queryAll(DeployHistoryQueryCriteria criteria, Page<Object> page){ - return PageUtil.toPage(deployhistoryMapper.findAll(criteria, page)); - } - - @Override - public List<DeployHistory> queryAll(DeployHistoryQueryCriteria criteria){ - return deployhistoryMapper.findAll(criteria); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(DeployHistory resources) { - resources.setId(IdUtil.simpleUUID()); - resources.setDeployDate(DateUtil.getTimeStamp()); - save(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set<String> ids) { - removeBatchByIds(ids); - } - - @Override - public void download(List<DeployHistory> deployHistories, HttpServletResponse response) throws IOException { - List<Map<String, Object>> list = new ArrayList<>(); - for (DeployHistory deployHistory : deployHistories) { - Map<String,Object> map = new LinkedHashMap<>(); - map.put("部署编号", deployHistory.getDeployId()); - map.put("应用名称", deployHistory.getAppName()); - map.put("部署IP", deployHistory.getIp()); - map.put("部署时间", deployHistory.getDeployDate()); - map.put("部署人员", deployHistory.getDeployUser()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployServiceImpl.java b/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployServiceImpl.java deleted file mode 100644 index 245f711..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/impl/DeployServiceImpl.java +++ /dev/null @@ -1,414 +0,0 @@ -package com.oying.modules.maint.service.impl; - -import cn.hutool.core.date.DatePattern; -import cn.hutool.core.date.DateUtil; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.maint.domain.Deploy; -import com.oying.modules.maint.domain.DeployHistory; -import com.oying.modules.maint.domain.Server; -import com.oying.modules.maint.domain.dto.DeployQueryCriteria; -import com.oying.modules.maint.domain.enums.MsgType; -import com.oying.modules.maint.mapper.DeployMapper; -import com.oying.modules.maint.mapper.DeployServerMapper; -import com.oying.modules.maint.service.websocket.SocketMsg; -import com.oying.modules.maint.service.websocket.WebSocketServer; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import com.oying.exception.BadRequestException; -import com.oying.modules.maint.domain.App; -import com.oying.modules.maint.service.DeployHistoryService; -import com.oying.modules.maint.service.DeployService; -import com.oying.modules.maint.service.ServerService; -import com.oying.modules.maint.util.ExecuteShellUtil; -import com.oying.modules.maint.util.ScpClientUtil; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import com.oying.utils.PageUtil; -import com.oying.utils.SecurityUtils; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** - * @author Z - * @date 2019-08-24 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class DeployServiceImpl extends ServiceImpl<DeployMapper, Deploy> implements DeployService { - - private final String FILE_SEPARATOR = "/"; - private final DeployMapper deployMapper; - private final DeployServerMapper deployServerMapper; - private final ServerService serverService; - private final DeployHistoryService deployHistoryService; - /** - * 循环次数 - */ - private final Integer count = 30; - - @Override - public PageResult<Deploy> queryAll(DeployQueryCriteria criteria, Page<Object> page) { - criteria.setOffset(page.offset()); - List<Deploy> deploys = deployMapper.findAll(criteria); - Long total = deployMapper.countAll(criteria); - return PageUtil.toPage(deploys, total); - } - - @Override - public List<Deploy> queryAll(DeployQueryCriteria criteria) { - return deployMapper.findAll(criteria); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(Deploy resources) { - resources.setAppId(resources.getApp().getId()); - save(resources); - // 保存关联关系 - deployServerMapper.insertData(resources.getId(), resources.getDeploys()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(Deploy resources) { - Deploy deploy = getById(resources.getId()); - deploy.copy(resources); - saveOrUpdate(deploy); - // 更新关联关系 - deployServerMapper.deleteByDeployId(resources.getId()); - deployServerMapper.insertData(resources.getId(), resources.getDeploys()); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set<Long> ids) { - removeBatchByIds(ids); - // 删除关联 - deployServerMapper.deleteByDeployIds(ids); - } - - @Override - public void deploy(String fileSavePath, Long id) { - deployApp(fileSavePath, id); - } - - /** - * @param fileSavePath 本机路径 - * @param id ID - */ - private void deployApp(String fileSavePath, Long id) { - Deploy deploy = deployMapper.getDeployById(id); - if (deploy == null) { - sendMsg("部署信息不存在", MsgType.ERROR); - throw new BadRequestException("部署信息不存在"); - } - App app = deploy.getApp(); - if (app == null) { - sendMsg("包对应应用信息不存在", MsgType.ERROR); - throw new BadRequestException("包对应应用信息不存在"); - } - int port = app.getPort(); - //这个是服务器部署路径 - String uploadPath = app.getUploadPath(); - StringBuilder sb = new StringBuilder(); - String msg; - Set<Server> deploys = deploy.getDeploys(); - for (Server server : deploys) { - String ip = server.getIp(); - ExecuteShellUtil executeShellUtil = getExecuteShellUtil(ip); - //判断是否第一次部署 - boolean flag = checkFile(executeShellUtil, app); - //第一步要确认服务器上有这个目录 - executeShellUtil.execute("mkdir -p " + app.getUploadPath()); - executeShellUtil.execute("mkdir -p " + app.getBackupPath()); - executeShellUtil.execute("mkdir -p " + app.getDeployPath()); - //上传文件 - msg = String.format("登陆到服务器:%s", ip); - ScpClientUtil scpClientUtil = getScpClientUtil(ip); - log.info(msg); - sendMsg(msg, MsgType.INFO); - msg = String.format("上传文件到服务器:%s<br>目录:%s下,请稍等...", ip, uploadPath); - sendMsg(msg, MsgType.INFO); - scpClientUtil.putFile(fileSavePath, uploadPath); - if (flag) { - sendMsg("停止原来应用", MsgType.INFO); - //停止应用 - stopApp(port, executeShellUtil); - sendMsg("备份原来应用", MsgType.INFO); - //备份应用 - backupApp(executeShellUtil, ip, app.getDeployPath()+FILE_SEPARATOR, app.getName(), app.getBackupPath()+FILE_SEPARATOR, id); - } - sendMsg("部署应用", MsgType.INFO); - //部署文件,并启动应用 - String deployScript = app.getDeployScript(); - executeShellUtil.execute(deployScript); - sleep(3); - sendMsg("应用部署中,请耐心等待部署结果,或者稍后手动查看部署状态", MsgType.INFO); - int i = 0; - boolean result = false; - // 由于启动应用需要时间,所以需要循环获取状态,如果超过30次,则认为是启动失败 - while (i++ < count){ - result = checkIsRunningStatus(port, executeShellUtil); - if(result){ - break; - } - // 休眠6秒 - sleep(6); - } - sb.append("服务器:").append(server.getName()).append("<br>应用:").append(app.getName()); - sendResultMsg(result, sb); - executeShellUtil.close(); - } - } - - private void sleep(int second) { - try { - Thread.sleep(second * 1000L); - } catch (InterruptedException e) { - log.error(e.getMessage(),e); - } - } - - private void backupApp(ExecuteShellUtil executeShellUtil, String ip, String fileSavePath, String appName, String backupPath, Long id) { - String deployDate = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN); - StringBuilder sb = new StringBuilder(); - backupPath += appName + FILE_SEPARATOR + deployDate + "\n"; - sb.append("mkdir -p ").append(backupPath); - sb.append("mv -f ").append(fileSavePath); - sb.append(appName).append(" ").append(backupPath); - log.info("备份应用脚本:" + sb); - executeShellUtil.execute(sb.toString()); - //还原信息入库 - DeployHistory deployHistory = new DeployHistory(); - deployHistory.setAppName(appName); - deployHistory.setDeployUser(SecurityUtils.getCurrentUsername()); - deployHistory.setIp(ip); - deployHistory.setDeployId(id); - deployHistoryService.create(deployHistory); - } - - /** - * 停App - * - * @param port 端口 - * @param executeShellUtil / - */ - private void stopApp(int port, ExecuteShellUtil executeShellUtil) { - //发送停止命令 - executeShellUtil.execute(String.format("lsof -i :%d|grep -v \"PID\"|awk '{print \"kill -9\",$2}'|sh", port)); - - } - - /** - * 指定端口程序是否在运行 - * - * @param port 端口 - * @param executeShellUtil / - * @return true 正在运行 false 已经停止 - */ - private boolean checkIsRunningStatus(int port, ExecuteShellUtil executeShellUtil) { - String result = executeShellUtil.executeForResult(String.format("fuser -n tcp %d", port)); - return result.indexOf("/tcp:")>0; - } - - private void sendMsg(String msg, MsgType msgType) { - try { - WebSocketServer.sendInfo(new SocketMsg(msg, msgType), "deploy"); - } catch (IOException e) { - log.error(e.getMessage(),e); - } - } - - @Override - public String serverStatus(Deploy resources) { - Set<Server> servers = resources.getDeploys(); - App app = resources.getApp(); - for (Server server : servers) { - StringBuilder sb = new StringBuilder(); - ExecuteShellUtil executeShellUtil = getExecuteShellUtil(server.getIp()); - sb.append("服务器:").append(server.getName()).append("<br>应用:").append(app.getName()); - boolean result = checkIsRunningStatus(app.getPort(), executeShellUtil); - if (result) { - sb.append("<br>正在运行"); - sendMsg(sb.toString(), MsgType.INFO); - } else { - sb.append("<br>已停止!"); - sendMsg(sb.toString(), MsgType.ERROR); - } - log.info(sb.toString()); - executeShellUtil.close(); - } - return "执行完毕"; - } - - private boolean checkFile(ExecuteShellUtil executeShellUtil, App app) { - String result = executeShellUtil.executeForResult("find " + app.getDeployPath() + " -name " + app.getName()); - return result.indexOf(app.getName())>0; - } - - /** - * 启动服务 - * @param resources / - * @return / - */ - @Override - public String startServer(Deploy resources) { - Set<Server> deploys = resources.getDeploys(); - App app = resources.getApp(); - for (Server deploy : deploys) { - StringBuilder sb = new StringBuilder(); - ExecuteShellUtil executeShellUtil = getExecuteShellUtil(deploy.getIp()); - //为了防止重复启动,这里先停止应用 - stopApp(app.getPort(), executeShellUtil); - sb.append("服务器:").append(deploy.getName()).append("<br>应用:").append(app.getName()); - sendMsg("下发启动命令", MsgType.INFO); - executeShellUtil.execute(app.getStartScript()); - sleep(3); - sendMsg("应用启动中,请耐心等待启动结果,或者稍后手动查看运行状态", MsgType.INFO); - int i = 0; - boolean result = false; - // 由于启动应用需要时间,所以需要循环获取状态,如果超过30次,则认为是启动失败 - while (i++ < count){ - result = checkIsRunningStatus(app.getPort(), executeShellUtil); - if(result){ - break; - } - // 休眠6秒 - sleep(6); - } - sendResultMsg(result, sb); - log.info(sb.toString()); - executeShellUtil.close(); - } - return "执行完毕"; - } - - /** - * 停止服务 - * @param resources / - * @return / - */ - @Override - public String stopServer(Deploy resources) { - Set<Server> deploys = resources.getDeploys(); - App app = resources.getApp(); - for (Server deploy : deploys) { - StringBuilder sb = new StringBuilder(); - ExecuteShellUtil executeShellUtil = getExecuteShellUtil(deploy.getIp()); - sb.append("服务器:").append(deploy.getName()).append("<br>应用:").append(app.getName()); - sendMsg("下发停止命令", MsgType.INFO); - //停止应用 - stopApp(app.getPort(), executeShellUtil); - sleep(1); - boolean result = checkIsRunningStatus(app.getPort(), executeShellUtil); - if (result) { - sb.append("<br>关闭失败!"); - sendMsg(sb.toString(), MsgType.ERROR); - } else { - sb.append("<br>关闭成功!"); - sendMsg(sb.toString(), MsgType.INFO); - } - log.info(sb.toString()); - executeShellUtil.close(); - } - return "执行完毕"; - } - - @Override - public String serverReduction(DeployHistory resources) { - Long deployId = resources.getDeployId(); - Deploy deployInfo = getById(deployId); - String deployDate = DateUtil.format(resources.getDeployDate(), DatePattern.PURE_DATETIME_PATTERN); - App app = deployInfo.getApp(); - if (app == null) { - sendMsg("应用信息不存在:" + resources.getAppName(), MsgType.ERROR); - throw new BadRequestException("应用信息不存在:" + resources.getAppName()); - } - String backupPath = app.getBackupPath()+FILE_SEPARATOR; - backupPath += resources.getAppName() + FILE_SEPARATOR + deployDate; - //这个是服务器部署路径 - String deployPath = app.getDeployPath(); - String ip = resources.getIp(); - ExecuteShellUtil executeShellUtil = getExecuteShellUtil(ip); - String msg; - - msg = String.format("登陆到服务器:%s", ip); - log.info(msg); - sendMsg(msg, MsgType.INFO); - sendMsg("停止原来应用", MsgType.INFO); - //停止应用 - stopApp(app.getPort(), executeShellUtil); - //删除原来应用 - sendMsg("删除应用", MsgType.INFO); - executeShellUtil.execute("rm -rf " + deployPath + FILE_SEPARATOR + resources.getAppName()); - //还原应用 - sendMsg("还原应用", MsgType.INFO); - executeShellUtil.execute("cp -r " + backupPath + "/. " + deployPath); - sendMsg("启动应用", MsgType.INFO); - executeShellUtil.execute(app.getStartScript()); - sendMsg("应用启动中,请耐心等待启动结果,或者稍后手动查看启动状态", MsgType.INFO); - int i = 0; - boolean result = false; - // 由于启动应用需要时间,所以需要循环获取状态,如果超过30次,则认为是启动失败 - while (i++ < count){ - result = checkIsRunningStatus(app.getPort(), executeShellUtil); - if(result){ - break; - } - // 休眠6秒 - sleep(6); - } - StringBuilder sb = new StringBuilder(); - sb.append("服务器:").append(ip).append("<br>应用:").append(resources.getAppName()); - sendResultMsg(result, sb); - executeShellUtil.close(); - return ""; - } - - private ExecuteShellUtil getExecuteShellUtil(String ip) { - Server server = serverService.findByIp(ip); - if (server == null) { - sendMsg("IP对应服务器信息不存在:" + ip, MsgType.ERROR); - throw new BadRequestException("IP对应服务器信息不存在:" + ip); - } - return new ExecuteShellUtil(ip, server.getAccount(), server.getPassword(), server.getPort()); - } - - private ScpClientUtil getScpClientUtil(String ip) { - Server server = serverService.findByIp(ip); - if (server == null) { - sendMsg("IP对应服务器信息不存在:" + ip, MsgType.ERROR); - throw new BadRequestException("IP对应服务器信息不存在:" + ip); - } - return ScpClientUtil.getInstance(ip, server.getPort(), server.getAccount(), server.getPassword()); - } - - private void sendResultMsg(boolean result, StringBuilder sb) { - if (result) { - sb.append("<br>启动成功!"); - sendMsg(sb.toString(), MsgType.INFO); - } else { - sb.append("<br>启动失败!"); - sendMsg(sb.toString(), MsgType.ERROR); - } - } - - @Override - public void download(List<Deploy> deploys, HttpServletResponse response) throws IOException { - List<Map<String, Object>> list = new ArrayList<>(); - for (Deploy deploy : deploys) { - Map<String,Object> map = new LinkedHashMap<>(); - map.put("应用名称", deploy.getApp().getName()); - map.put("服务器", deploy.getServers()); - map.put("部署日期", deploy.getCreateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/impl/ServerServiceImpl.java b/oying-system/src/main/java/com/oying/modules/maint/service/impl/ServerServiceImpl.java deleted file mode 100644 index 5838bbb..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/impl/ServerServiceImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.oying.modules.maint.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.maint.domain.Server; -import com.oying.modules.maint.domain.dto.ServerQueryCriteria; -import com.oying.modules.maint.mapper.DeployServerMapper; -import com.oying.modules.maint.mapper.ServerMapper; -import lombok.RequiredArgsConstructor; -import com.oying.modules.maint.service.ServerService; -import com.oying.modules.maint.util.ExecuteShellUtil; -import com.oying.utils.FileUtil; -import com.oying.utils.PageResult; -import com.oying.utils.PageUtil; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.*; - -/** -* @author Z -* @date 2019-08-24 -*/ -@Service -@RequiredArgsConstructor -public class ServerServiceImpl extends ServiceImpl<ServerMapper, Server> implements ServerService { - - private final ServerMapper serverMapper; - private final DeployServerMapper deployServerMapper; - - @Override - public PageResult<Server> queryAll(ServerQueryCriteria criteria, Page<Object> page){ - return PageUtil.toPage(serverMapper.findAll(criteria, page)); - } - - @Override - public List<Server> queryAll(ServerQueryCriteria criteria){ - return serverMapper.findAll(criteria); - } - - @Override - public Server findByIp(String ip) { - return serverMapper.findByIp(ip); - } - - @Override - public Boolean testConnect(Server resources) { - ExecuteShellUtil executeShellUtil = null; - try { - executeShellUtil = new ExecuteShellUtil(resources.getIp(), resources.getAccount(), resources.getPassword(),resources.getPort()); - return executeShellUtil.execute("ls")==0; - } catch (Exception e) { - return false; - }finally { - if (executeShellUtil != null) { - executeShellUtil.close(); - } - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(Server resources) { - save(resources); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(Server resources) { - Server server = getById(resources.getId()); - server.copy(resources); - saveOrUpdate(server); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(Set<Long> ids) { - removeBatchByIds(ids); - // 删除与之关联的服务 - deployServerMapper.deleteByServerIds(ids); - } - - @Override - public void download(List<Server> servers, HttpServletResponse response) throws IOException { - List<Map<String, Object>> list = new ArrayList<>(); - for (Server deploy : servers) { - Map<String,Object> map = new LinkedHashMap<>(); - map.put("服务器名称", deploy.getName()); - map.put("服务器IP", deploy.getIp()); - map.put("端口", deploy.getPort()); - map.put("账号", deploy.getAccount()); - map.put("创建日期", deploy.getCreateTime()); - list.add(map); - } - FileUtil.downloadExcel(list, response); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/websocket/SocketMsg.java b/oying-system/src/main/java/com/oying/modules/maint/service/websocket/SocketMsg.java deleted file mode 100644 index f4a3997..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/websocket/SocketMsg.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.oying.modules.maint.service.websocket; - -import com.oying.modules.maint.domain.enums.MsgType; -import lombok.Data; - -/** - * @author Z - * @date 2019-08-10 9:55 - */ -@Data -public class SocketMsg { - private String msg; - private MsgType msgType; - - public SocketMsg(String msg, MsgType msgType) { - this.msg = msg; - this.msgType = msgType; - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/service/websocket/WebSocketServer.java b/oying-system/src/main/java/com/oying/modules/maint/service/websocket/WebSocketServer.java deleted file mode 100644 index ebb4f20..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/service/websocket/WebSocketServer.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.oying.modules.maint.service.websocket; - -import com.alibaba.fastjson2.JSON; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import javax.websocket.*; -import javax.websocket.server.PathParam; -import javax.websocket.server.ServerEndpoint; -import java.io.IOException; -import java.util.Objects; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * @author Z - * @date 2019-08-10 15:46 - */ -@ServerEndpoint("/webSocket/{sid}") -@Slf4j -@Component -public class WebSocketServer { - - /** - * concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。 - */ - private static final CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>(); - - /** - * 与某个客户端的连接会话,需要通过它来给客户端发送数据 - */ - private Session session; - - /** - * 接收sid - */ - private String sid=""; - /** - * 连接建立成功调用的方法 - * */ - @OnOpen - public void onOpen(Session session,@PathParam("sid") String sid) { - this.session = session; - //如果存在就先删除一个,防止重复推送消息 - webSocketSet.removeIf(webSocket -> webSocket.sid.equals(sid)); - webSocketSet.add(this); - this.sid=sid; - } - - /** - * 连接关闭调用的方法 - */ - @OnClose - public void onClose() { - webSocketSet.remove(this); - } - - /** - * 收到客户端消息后调用的方法 - * @param message 客户端发送过来的消息*/ - @OnMessage - public void onMessage(String message, Session session) { - log.info("收到来"+sid+"的信息:"+message); - //群发消息 - for (WebSocketServer item : webSocketSet) { - try { - item.sendMessage(message); - } catch (IOException e) { - log.error(e.getMessage(),e); - } - } - } - - @OnError - public void onError(Session session, Throwable error) { - log.error("发生错误", error); - } - /** - * 实现服务器主动推送 - */ - private void sendMessage(String message) throws IOException { - this.session.getBasicRemote().sendText(message); - } - - - /** - * 群发自定义消息 - * */ - public static void sendInfo(SocketMsg socketMsg,@PathParam("sid") String sid) throws IOException { - String message = JSON.toJSONString(socketMsg); - log.info("推送消息到"+sid+",推送内容:"+message); - for (WebSocketServer item : webSocketSet) { - try { - //这里可以设定只推送给这个sid的,为null则全部推送 - if(sid==null) { - item.sendMessage(message); - }else if(item.sid.equals(sid)){ - item.sendMessage(message); - } - } catch (IOException ignored) { } - } - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - WebSocketServer that = (WebSocketServer) o; - return Objects.equals(session, that.session) && - Objects.equals(sid, that.sid); - } - - @Override - public int hashCode() { - return Objects.hash(session, sid); - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/util/ExecuteShellUtil.java b/oying-system/src/main/java/com/oying/modules/maint/util/ExecuteShellUtil.java deleted file mode 100644 index 2c9551b..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/util/ExecuteShellUtil.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.oying.modules.maint.util; - -import cn.hutool.core.io.IoUtil; -import com.jcraft.jsch.ChannelShell; -import com.jcraft.jsch.JSch; -import com.jcraft.jsch.Session; -import lombok.extern.slf4j.Slf4j; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.PrintWriter; -import java.util.Vector; - -/** - * 执行shell命令 - * - * @author Z - * @date 2019/8/10 - */ -@Slf4j -public class ExecuteShellUtil { - - private Vector<String> stdout; - - Session session; - - public ExecuteShellUtil(final String ipAddress, final String username, final String password,int port) { - try { - JSch jsch = new JSch(); - session = jsch.getSession(username, ipAddress, port); - session.setPassword(password); - session.setConfig("StrictHostKeyChecking", "no"); - session.connect(3000); - } catch (Exception e) { - log.error(e.getMessage(),e); - } - - } - - public int execute(final String command) { - int returnCode = 0; - ChannelShell channel = null; - PrintWriter printWriter = null; - BufferedReader input = null; - stdout = new Vector<>(); - try { - channel = (ChannelShell) session.openChannel("shell"); - channel.connect(); - input = new BufferedReader(new InputStreamReader(channel.getInputStream())); - printWriter = new PrintWriter(channel.getOutputStream()); - printWriter.println(command); - printWriter.println("exit"); - printWriter.flush(); - log.info("The remote command is: "); - String line; - while ((line = input.readLine()) != null) { - stdout.add(line); - System.out.println(line); - } - } catch (Exception e) { - log.error(e.getMessage(),e); - return -1; - }finally { - IoUtil.close(printWriter); - IoUtil.close(input); - if (channel != null) { - channel.disconnect(); - } - } - return returnCode; - } - - public void close(){ - if (session != null) { - session.disconnect(); - } - } - - public String executeForResult(String command) { - execute(command); - StringBuilder sb = new StringBuilder(); - for (String str : stdout) { - sb.append(str); - } - return sb.toString(); - } - -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/util/ScpClientUtil.java b/oying-system/src/main/java/com/oying/modules/maint/util/ScpClientUtil.java deleted file mode 100644 index 5db7fea..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/util/ScpClientUtil.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.oying.modules.maint.util; - -import ch.ethz.ssh2.Connection; -import ch.ethz.ssh2.SCPClient; -import com.google.common.collect.Maps; -import com.oying.utils.StringUtils; - -import java.io.IOException; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * 远程执行linux命令 - * @author Z - * @date 2019-08-10 10:06 - */ -public class ScpClientUtil { - - private final String ip; - private final int port; - private final String username; - private final String password; - - static private final Map<String,ScpClientUtil> instance = Maps.newHashMap(); - - static synchronized public ScpClientUtil getInstance(String ip, int port, String username, String password) { - instance.computeIfAbsent(ip, i -> new ScpClientUtil(i, port, username, password)); - return instance.get(ip); - } - - public ScpClientUtil(String ip, int port, String username, String password) { - this.ip = ip; - this.port = port; - this.username = username; - this.password = password; - } - - public void getFile(String remoteFile, String localTargetDirectory) { - Connection conn = new Connection(ip, port); - try { - conn.connect(); - boolean isAuthenticated = conn.authenticateWithPassword(username, password); - if (!isAuthenticated) { - System.err.println("authentication failed"); - } - SCPClient client = new SCPClient(conn); - client.get(remoteFile, localTargetDirectory); - } catch (IOException ex) { - Logger.getLogger(SCPClient.class.getName()).log(Level.SEVERE, null, ex); - }finally{ - conn.close(); - } - } - - public void putFile(String localFile, String remoteTargetDirectory) { - putFile(localFile, null, remoteTargetDirectory); - } - - public void putFile(String localFile, String remoteFileName, String remoteTargetDirectory) { - putFile(localFile, remoteFileName, remoteTargetDirectory,null); - } - - public void putFile(String localFile, String remoteFileName, String remoteTargetDirectory, String mode) { - Connection conn = new Connection(ip, port); - try { - conn.connect(); - boolean isAuthenticated = conn.authenticateWithPassword(username, password); - if (!isAuthenticated) { - System.err.println("authentication failed"); - } - SCPClient client = new SCPClient(conn); - if (StringUtils.isBlank(mode)) { - mode = "0600"; - } - if (remoteFileName == null) { - client.put(localFile, remoteTargetDirectory); - } else { - client.put(localFile, remoteFileName, remoteTargetDirectory, mode); - } - } catch (IOException ex) { - Logger.getLogger(ScpClientUtil.class.getName()).log(Level.SEVERE, null, ex); - }finally{ - conn.close(); - } - } -} diff --git a/oying-system/src/main/java/com/oying/modules/maint/util/SqlUtils.java b/oying-system/src/main/java/com/oying/modules/maint/util/SqlUtils.java deleted file mode 100644 index 17a3681..0000000 --- a/oying-system/src/main/java/com/oying/modules/maint/util/SqlUtils.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.oying.modules.maint.util; - -import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.util.StringUtils; -import com.oying.modules.maint.domain.enums.DataTypeEnum; -import lombok.extern.slf4j.Slf4j; -import com.oying.utils.CloseUtil; -import javax.sql.DataSource; -import java.io.BufferedReader; -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.sql.*; -import java.util.ArrayList; -import java.util.List; - -/** - * @author Z - */ -@Slf4j -public class SqlUtils { - - /** - * 获取数据源 - * - * @param jdbcUrl / - * @param userName / - * @param password / - * @return DataSource - */ - private static DataSource getDataSource(String jdbcUrl, String userName, String password) { - DruidDataSource druidDataSource = new DruidDataSource(); - String className; - try { - className = DriverManager.getDriver(jdbcUrl.trim()).getClass().getName(); - } catch (SQLException e) { - throw new RuntimeException("Get class name error: =" + jdbcUrl); - } - if (StringUtils.isEmpty(className)) { - DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl); - if (null == dataTypeEnum) { - throw new RuntimeException("Not supported data type: jdbcUrl=" + jdbcUrl); - } - druidDataSource.setDriverClassName(dataTypeEnum.getDriver()); - } else { - druidDataSource.setDriverClassName(className); - } - - // 去掉不安全的参数 - jdbcUrl = sanitizeJdbcUrl(jdbcUrl); - - druidDataSource.setUrl(jdbcUrl); - druidDataSource.setUsername(userName); - druidDataSource.setPassword(password); - // 配置获取连接等待超时的时间 - druidDataSource.setMaxWait(3000); - // 配置初始化大小、最小、最大 - druidDataSource.setInitialSize(1); - druidDataSource.setMinIdle(1); - druidDataSource.setMaxActive(1); - - // 如果链接出现异常则直接判定为失败而不是一直重试 - druidDataSource.setBreakAfterAcquireFailure(true); - try { - druidDataSource.init(); - } catch (SQLException e) { - log.error("Exception during pool initialization", e); - throw new RuntimeException(e.getMessage()); - } - - return druidDataSource; - } - - private static Connection getConnection(String jdbcUrl, String userName, String password) { - DataSource dataSource = getDataSource(jdbcUrl, userName, password); - Connection connection = null; - try { - connection = dataSource.getConnection(); - } catch (Exception ignored) {} - try { - int timeOut = 5; - if (null == connection || connection.isClosed() || !connection.isValid(timeOut)) { - log.info("connection is closed or invalid, retry get connection!"); - connection = dataSource.getConnection(); - } - } catch (Exception e) { - log.error("create connection error, jdbcUrl: {}", jdbcUrl); - throw new RuntimeException("create connection error, jdbcUrl: " + jdbcUrl); - } finally { - CloseUtil.close(connection); - } - return connection; - } - - private static void releaseConnection(Connection connection) { - if (null != connection) { - try { - connection.close(); - } catch (Exception e) { - log.error(e.getMessage(),e); - } - } - } - - public static boolean testConnection(String jdbcUrl, String userName, String password) { - Connection connection = null; - try { - connection = getConnection(jdbcUrl, userName, password); - if (null != connection) { - return true; - } - } catch (Exception e) { - log.error("Get connection failed:{}", e.getMessage()); - } finally { - releaseConnection(connection); - } - return false; - } - - public static String executeFile(String jdbcUrl, String userName, String password, File sqlFile) { - Connection connection = getConnection(jdbcUrl, userName, password); - try { - batchExecute(connection, readSqlList(sqlFile)); - } catch (Exception e) { - log.error("sql脚本执行发生异常:{}",e.getMessage()); - return e.getMessage(); - }finally { - releaseConnection(connection); - } - return "success"; - } - - /** - * 批量执行sql - * @param connection / - * @param sqlList / - */ - public static void batchExecute(Connection connection, List<String> sqlList) { - try (Statement st = connection.createStatement()) { - for (String sql : sqlList) { - // 去除末尾的分号 - if (sql.endsWith(";")) { - sql = sql.substring(0, sql.length() - 1); - } - // 检查 SQL 语句是否为空 - if (!sql.trim().isEmpty()) { - st.addBatch(sql); - } - } - st.executeBatch(); - } catch (SQLException e) { - log.error("SQL脚本批量执行发生异常: {},错误代码: {}", e.getMessage(), e.getErrorCode()); - } - } - - /** - * 将文件中的sql语句以;为单位读取到列表中 - * @param sqlFile / - * @return / - */ - private static List<String> readSqlList(File sqlFile) { - List<String> sqlList = new ArrayList<>(); - StringBuilder sb = new StringBuilder(); - try (BufferedReader reader = Files.newBufferedReader(sqlFile.toPath(), StandardCharsets.UTF_8)) { - String line; - while ((line = reader.readLine()) != null) { - log.info("line: {}", line); - sb.append(line.trim()); - - if (line.trim().endsWith(";")) { - sqlList.add(sb.toString()); - // 清空 StringBuilder - sb.setLength(0); - } else { - // 在行之间加一个空格 - sb.append(" "); - } - } - if (sb.length() > 0) { - sqlList.add(sb.toString().trim()); - } - } catch (Exception e) { - log.error("读取SQL文件时发生异常: {}", e.getMessage()); - } - return sqlList; - } - - /** - * 去除不安全的参数 - * @param jdbcUrl / - * @return / - */ - private static String sanitizeJdbcUrl(String jdbcUrl) { - // 定义不安全参数和其安全替代值 - String[][] unsafeParams = { - // allowLoadLocalInfile:允许使用 LOAD DATA LOCAL INFILE,可能导致文件泄露 - {"allowLoadLocalInfile", "false"}, - // allowUrlInLocalInfile:允许在 LOAD DATA LOCAL INFILE 中使用 URL,可能导致未经授权的文件访问 - {"allowUrlInLocalInfile", "false"}, - // autoDeserialize:允许自动反序列化对象,可能导致反序列化漏洞 - {"autoDeserialize", "false"}, - // allowNanAndInf:允许使用 NaN 和 Infinity 作为数字值,可能导致不一致的数据处理 - {"allowNanAndInf", "false"}, - // allowMultiQueries:允许在一个语句中执行多个查询,可能导致 SQL 注入攻击 - {"allowMultiQueries", "false"}, - // allowPublicKeyRetrieval:允许从服务器检索公钥,可能导致中间人攻击 - {"allowPublicKeyRetrieval", "false"} - }; - - // 替换不安全的参数 - for (String[] param : unsafeParams) { - jdbcUrl = jdbcUrl.replaceAll("(?i)" + param[0] + "=true", param[0] + "=" + param[1]); - } - return jdbcUrl; - } -} diff --git a/oying-system/src/main/resources/config/application-dev.yml b/oying-system/src/main/resources/config/application-dev.yml index 7a791fe..f1717d3 100644 --- a/oying-system/src/main/resources/config/application-dev.yml +++ b/oying-system/src/main/resources/config/application-dev.yml @@ -62,7 +62,7 @@ # 验证码 code: # 验证码类型配置 查看 LoginProperties 类 - code-type: arithmetic + code-type: spec # 登录图形验证码有效时间/分钟 expiration: 2 # 验证码高度 diff --git a/oying-system/src/main/resources/config/application-prod.yml b/oying-system/src/main/resources/config/application-prod.yml index a00051c..4c783a9 100644 --- a/oying-system/src/main/resources/config/application-prod.yml +++ b/oying-system/src/main/resources/config/application-prod.yml @@ -66,7 +66,7 @@ # 验证码 code: # 验证码类型配置 查看 LoginProperties 类 - code-type: arithmetic + code-type: spec # 登录图形验证码有效时间/分钟 expiration: 2 # 验证码高度 @@ -119,8 +119,8 @@ path: ~/file/ avatar: ~/avatar/ linux: - path: /home/oying/file/ - avatar: /home/oying/avatar/ + path: /opt/oying/file/ + avatar: /opt/oying/avatar/ windows: path: C:\oying\file\ avatar: C:\oying\avatar\ diff --git a/oying-system/src/main/resources/mapper/maint/AppMapper.xml b/oying-system/src/main/resources/mapper/maint/AppMapper.xml deleted file mode 100644 index 71f59cf..0000000 --- a/oying-system/src/main/resources/mapper/maint/AppMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.AppMapper"> - <resultMap id="BaseResultMap" type="com.oying.modules.maint.domain.App"> - <id column="app_id" property="id"/> - <result column="name" property="name"/> - <result column="port" property="port"/> - <result column="upload_path" property="uploadPath"/> - <result column="deploy_path" property="deployPath"/> - <result column="backup_path" property="backupPath"/> - <result column="start_script" property="startScript"/> - <result column="deploy_script" property="deployScript"/> - <result column="create_by" property="createBy"/> - <result column="update_by" property="updateBy"/> - <result column="create_time" property="createTime"/> - <result column="update_time" property="updateTime"/> - </resultMap> - - <sql id="Base_Column_List"> - app_id,name,port,upload_path,deploy_path,backup_path,start_script,deploy_script,create_by,update_by,create_time,update_time - </sql> - - <select id="queryAll" resultMap="BaseResultMap"> - select - <include refid="Base_Column_List"/> - from mnt_app - <where> - <if test="criteria.name != null and criteria.name != ''"> - and name like concat('%',#{criteria.name},'%') - </if> - <if test="criteria.createTime != null and criteria.createTime.size() > 0"> - and create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]} - </if> - </where> - order by app_id desc - </select> -</mapper> diff --git a/oying-system/src/main/resources/mapper/maint/DatabaseMapper.xml b/oying-system/src/main/resources/mapper/maint/DatabaseMapper.xml deleted file mode 100644 index 06ba262..0000000 --- a/oying-system/src/main/resources/mapper/maint/DatabaseMapper.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.DatabaseMapper"> - <resultMap id="BaseResultMap" type="com.oying.modules.maint.domain.Database"> - <id column="db_id" property="id"/> - <result column="name" property="name"/> - <result column="jdbc_url" property="jdbcUrl"/> - <result column="pwd" property="pwd"/> - <result column="user_name" property="userName"/> - <result column="create_by" property="createBy"/> - <result column="update_by" property="updateBy"/> - <result column="create_time" property="createTime"/> - <result column="update_time" property="updateTime"/> - </resultMap> - - <sql id="Base_Column_List"> - db_id, name, jdbc_url, pwd, user_name, create_by, update_by, create_time, update_time - </sql> - - <select id="findAll" resultMap="BaseResultMap"> - SELECT - <include refid="Base_Column_List"/> - FROM mnt_database - <where> - <if test="criteria.name != null and criteria.name != ''"> - AND name LIKE CONCAT('%',#{criteria.name},'%') - </if> - <if test="criteria.jdbcUrl != null and criteria.jdbcUrl != ''"> - AND jdbc_url = #{criteria.jdbcUrl} - </if> - <if test="criteria.createTime != null and criteria.createTime.size() != 0"> - AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} - </if> - </where> - </select> -</mapper> diff --git a/oying-system/src/main/resources/mapper/maint/DeployHistoryMapper.xml b/oying-system/src/main/resources/mapper/maint/DeployHistoryMapper.xml deleted file mode 100644 index fa0a764..0000000 --- a/oying-system/src/main/resources/mapper/maint/DeployHistoryMapper.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.DeployHistoryMapper"> - <resultMap id="BaseResultMap" type="com.oying.modules.maint.domain.DeployHistory"> - <id column="history_id" property="id"/> - <result column="app_name" property="appName"/> - <result column="ip" property="ip"/> - <result column="deploy_date" property="deployDate"/> - <result column="deploy_user" property="deployUser"/> - <result column="deploy_id" property="deployId"/> - </resultMap> - - <sql id="Base_Column_List"> - history_id, app_name, ip, deploy_date, deploy_user, deploy_id - </sql> - - <select id="findAll" resultMap="BaseResultMap"> - SELECT - <include refid="Base_Column_List"/> - FROM mnt_deploy_history - <where> - <if test="criteria.blurry != null and criteria.blurry != ''"> - AND ( - app_name LIKE CONCAT('%',#{criteria.blurry},'%') - or ip LIKE CONCAT('%',#{criteria.blurry},'%') - or deploy_user LIKE CONCAT('%',#{criteria.blurry},'%') - ) - </if> - <if test="criteria.deployId != null"> - AND deploy_id = #{criteria.deployId} - </if> - <if test="criteria.deployDate != null and criteria.deployDate.size() != 0"> - AND deploy_date BETWEEN #{criteria.deployDate[0]} AND #{criteria.deployDate[1]} - </if> - </where> - order by deploy_date desc - </select> - -</mapper> diff --git a/oying-system/src/main/resources/mapper/maint/DeployMapper.xml b/oying-system/src/main/resources/mapper/maint/DeployMapper.xml deleted file mode 100644 index 80d6f6f..0000000 --- a/oying-system/src/main/resources/mapper/maint/DeployMapper.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis_deploy.org//DTD Mapper 3.0//EN" "http://mybatis_deploy.org/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.DeployMapper"> - <resultMap id="BaseResultMap" type="com.oying.modules.maint.domain.Deploy"> - <id column="d_deploy_id" property="id"/> - <result column="d_app_id" property="appId"/> - <result column="d_create_by" property="createBy"/> - <result column="d_update_by" property="updateBy"/> - <result column="d_create_time" property="createTime"/> - <result column="d_update_time" property="updateTime"/> - <association property="app" javaType="com.oying.modules.maint.domain.App"> - <id column="a_app_id" property="id"/> - <result column="a_name" property="name"/> - <result column="a_port" property="port"/> - <result column="a_upload_path" property="uploadPath"/> - <result column="a_deploy_path" property="deployPath"/> - <result column="a_backup_path" property="backupPath"/> - <result column="a_start_script" property="startScript"/> - <result column="a_deploy_script" property="deployScript"/> - </association> - <collection property="deploys" ofType="com.oying.modules.maint.domain.Server"> - <id column="s_server_id" property="id"/> - <result column="s_name" property="name"/> - <result column="s_ip" property="ip"/> - <result column="s_port" property="port"/> - <result column="s_account" property="account"/> - <result column="s_password" property="password"/> - </collection> - </resultMap> - - <sql id="Base_Column_List"> - deploy.deploy_id as d_deploy_id, deploy.app_id as d_app_id,deploy.create_by as d_create_by,deploy.update_by as d_update_by,deploy.create_time as d_create_time,deploy.update_time as d_update_time, - app.app_id as a_app_id,app.name as a_name,app.port as a_port,app.upload_path as a_upload_path,app.deploy_path as a_deploy_path,app.backup_path as a_backup_path,app.start_script as a_start_script,app.deploy_script as a_deploy_script - </sql> - - <sql id="Server_Column_List"> - server.server_id as s_server_id,server.name as s_name,server.ip as s_ip,server.port as s_port,server.account as s_account,server.password as s_password - </sql> - - <sql id="Where_sql"> - <where> - <if test="criteria.appName != null and criteria.appName != ''"> - and app.name like concat('%',#{criteria.appName},'%') - </if> - <if test="criteria.createTime != null and criteria.createTime.size() != 0"> - and deploy.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]} - </if> - </where> - </sql> - - <select id="findAll" resultMap="BaseResultMap"> - select t.*, - <include refid="Server_Column_List"/> - from ( - select <include refid="Base_Column_List"/> - from mnt_deploy deploy - left join mnt_app app on deploy.app_id = app.app_id - <include refid="Where_sql"/> - order by deploy.deploy_id desc - <if test="criteria.offset != null"> - limit #{criteria.offset}, #{criteria.size} - </if> - ) t - left join mnt_deploy_server mds on t.d_deploy_id = mds.deploy_id - left join mnt_server server on server.server_id = mds.server_id - order by t.d_deploy_id desc - </select> - - <select id="countAll" resultType="java.lang.Long"> - select count(*) - from mnt_deploy deploy - left join mnt_app app on deploy.app_id = app.app_id - <include refid="Where_sql"/> - </select> - - <select id="getIdByAppIds" resultType="java.lang.Long"> - select deploy.deploy_id - from mnt_deploy deploy - where deploy.app_id in - <foreach collection="appIds" item="appId" open="(" separator="," close=")"> - #{appId} - </foreach> - </select> - - <select id="getDeployById" resultMap="BaseResultMap"> - select - <include refid="Base_Column_List"/>, - <include refid="Server_Column_List"/> - from mnt_deploy deploy - left join mnt_app app on deploy.app_id = app.app_id - left join mnt_deploy_server mds on deploy.deploy_id = mds.deploy_id - left join mnt_server server on server.server_id = mds.server_id - where deploy.deploy_id = #{deployId} - </select> -</mapper> diff --git a/oying-system/src/main/resources/mapper/maint/DeployServerMapper.xml b/oying-system/src/main/resources/mapper/maint/DeployServerMapper.xml deleted file mode 100644 index bfd5e22..0000000 --- a/oying-system/src/main/resources/mapper/maint/DeployServerMapper.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.DeployServerMapper"> - - <insert id="insertData"> - insert into mnt_deploy_server (deploy_id, server_id) - values - <foreach collection="servers" item="item" open="(" separator="),(" close=")"> - #{deployId}, #{item.id} - </foreach> - </insert> - - <delete id="deleteByDeployId"> - delete from mnt_deploy_server - where deploy_id = #{deployId} - </delete> - - <delete id="deleteByDeployIds"> - delete from mnt_deploy_server - where deploy_id in - <foreach collection="deployIds" item="id" open="(" separator="," close=")"> - #{id} - </foreach> - </delete> - - <delete id="deleteByServerIds"> - delete from mnt_deploy_server - where server_id in - <foreach collection="serverIds" item="id" open="(" separator="," close=")"> - #{id} - </foreach> - </delete> -</mapper> diff --git a/oying-system/src/main/resources/mapper/maint/ServerMapper.xml b/oying-system/src/main/resources/mapper/maint/ServerMapper.xml deleted file mode 100644 index b7ceaa6..0000000 --- a/oying-system/src/main/resources/mapper/maint/ServerMapper.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> -<!DOCTYPE mapper PUBLIC "-//mybatiorg//DTD Mapper 3.0//EN" "http://mybatiorg/dtd/mybatis-3-mapper.dtd" > -<mapper namespace="com.oying.modules.maint.mapper.ServerMapper"> - <resultMap id="BaseResultMap" type="com.oying.modules.maint.domain.Server"> - <id column="server_id" property="id"/> - <result column="name" property="name"/> - <result column="ip" property="ip"/> - <result column="port" property="port"/> - <result column="account" property="account"/> - <result column="password" property="password"/> - <result column="create_by" property="createBy"/> - <result column="update_by" property="updateBy"/> - <result column="create_time" property="createTime"/> - <result column="update_time" property="updateTime"/> - </resultMap> - - <sql id="Base_Column_List"> - server_id, name, ip, port, account, password, create_by, update_by, create_time, update_time - </sql> - - <select id="findByIp" resultMap="BaseResultMap"> - SELECT - <include refid="Base_Column_List"/> - FROM mnt_server - <where> - ip = #{ip} - </where> - </select> - - <select id="findAll" resultMap="BaseResultMap"> - SELECT - <include refid="Base_Column_List"/> - FROM mnt_server - <where> - <if test="criteria.blurry != null and criteria.blurry != ''"> - AND ( - name LIKE CONCAT('%',#{criteria.blurry},'%') - or ip LIKE CONCAT('%',#{criteria.blurry},'%') - ) - </if> - <if test="criteria.createTime != null and criteria.createTime.size() != 0"> - AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} - </if> - </where> - order by server_id desc - </select> -</mapper> -- Gitblit v1.9.3