文件上传,解压

执行exe文件
This commit is contained in:
2024-09-12 15:38:02 +08:00
parent 2d07a2ebe0
commit 27ecb12ccc
123 changed files with 11858 additions and 0 deletions

50
.gitignore vendored Normal file
View File

@@ -0,0 +1,50 @@
# ---> Java
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/

92
META-INF/MANIFEST.MF Normal file
View File

@@ -0,0 +1,92 @@
Manifest-Version: 1.0
Main-Class:
Class-Path: antlr-2.7.7.jar org.w3.xlink-28.0.jar okhttp-3.14.9.jar ejml
-ddense-0.41.jar slf4j-api-1.7.36.jar httpclient-4.5.13.jar hibernate-s
patial-5.6.15.Final.jar gt-metadata-28.0.jar tea-util-0.2.16.jar reacto
r-netty-http-1.0.25.jar spring-boot-starter-webflux-2.6.14.jar spring-b
oot-2.6.14.jar netty-all-4.1.86.Final.jar jakarta.websocket-api-1.1.2.j
ar netty-codec-http-4.1.85.Final.jar netty-resolver-dns-native-macos-4.
1.85.Final-osx-x86_64.jar postgresql-42.3.8.jar dom4j-2.0.3.jar net.ope
ngis.ows-28.0.jar httpmime-4.5.14.jar log4j-jul-2.17.2.jar GeographicLi
b-Java-1.49.jar prefixmap-2.0.jar snakeyaml-1.29.jar spring-boot-starte
r-undertow-2.6.14.jar spring-jdbc-5.3.24.jar micrometer-registry-promet
heus-1.10.2.jar netty-resolver-dns-4.1.85.Final.jar uom-lib-common-2.0.
jar netty-codec-xml-4.1.85.Final.jar spring-orm-5.3.24.jar spring-secur
ity-core-5.6.9.jar spring-boot-starter-data-redis-2.6.14.jar spring-dat
a-commons-2.6.10.jar checker-qual-3.5.0.jar openapiutil-0.2.0.jar sprin
g-expression-5.3.24.jar spring-aspects-5.3.24.jar ejml-core-0.41.jar co
mmons-io-2.4.jar spring-boot-starter-json-2.6.14.jar jackson-datatype-j
sr310-2.13.4.jar spring-boot-starter-reactor-netty-2.6.14.jar netty-tra
nsport-rxtx-4.1.85.Final.jar si-quantity-2.0.1.jar error_prone_annotati
ons-2.10.0.jar gt-main-28.0.jar HdrHistogram-2.1.12.jar reactor-core-3.
4.25.jar undertow-core-2.2.20.Final.jar spring-security-config-5.6.9.ja
r jakarta.persistence-api-2.2.3.jar commons-codec-1.15.jar netty-resolv
er-dns-classes-macos-4.1.85.Final.jar jgridshift-core-1.3.jar spring-bo
ot-actuator-autoconfigure-2.6.14.jar spring-boot-starter-websocket-2.6.
14.jar endpoint-util-0.0.7.jar org.jacoco.agent-0.8.4-runtime.jar netty
-transport-4.1.85.Final.jar netty-transport-native-kqueue-4.1.85.Final-
osx-aarch_64.jar caffeine-2.9.3.jar unit-api-2.0.jar netty-codec-memcac
he-4.1.85.Final.jar commons-text-1.10.0.jar tea-openapi-0.2.8.jar aspec
tjweaver-1.9.7.jar commons-dbcp-1.4.jar netty-codec-4.1.85.Final.jar js
oup-1.15.3.jar lettuce-core-6.1.10.RELEASE.jar jakarta.transaction-api-
1.3.3.jar jackson-annotations-2.13.4.jar dysmsapi20170525-2.0.23.jar ne
tty-transport-native-kqueue-4.1.85.Final-osx-x86_64.jar jts-core-1.18.2
.jar jandex-2.4.2.Final.jar LatencyUtils-2.0.3.jar netty-codec-haproxy-
4.1.85.Final.jar netty-transport-native-epoll-4.1.85.Final-linux-aarch_
64.jar spring-boot-starter-jdbc-2.6.14.jar jakarta.annotation-api-1.3.5
.jar spring-boot-starter-security-2.6.14.jar spring-boot-autoconfigure-
2.6.14.jar HikariCP-4.0.3.jar httpclient5-5.1.4.jar spring-webmvc-5.3.2
4.jar jakarta.validation-api-2.0.2.jar ini4j-0.5.4.jar jaxb-impl-2.3.0.
jar org.eclipse.emf.ecore.xmi-2.15.0.jar netty-codec-smtp-4.1.85.Final.
jar hibernate-core-5.6.14.Final.jar alibabacloud-gateway-spi-0.0.1.jar
hutool-all-5.8.10.jar netty-resolver-dns-native-macos-4.1.85.Final-osx-
aarch_64.jar mysql-connector-j-8.0.31.jar hibernate-types-55-2.15.2.jar
log4j-api-2.17.2.jar wildfly-common-1.5.4.Final.jar jakarta.activation
-api-1.2.2.jar netty-transport-udt-4.1.85.Final.jar netty-handler-4.1.8
5.Final.jar javax.inject-1.jar micrometer-core-1.8.12.jar gt-shapefile-
28.0.jar spring-context-5.3.24.jar gt-jdbc-postgis-28.0.jar hibernate-c
ommons-annotations-5.1.2.Final.jar spring-oxm-5.3.24.jar wildfly-client
-config-1.0.1.Final.jar netty-codec-stomp-4.1.85.Final.jar spring-boot-
starter-data-jpa-2.6.14.jar undertow-servlet-2.2.20.Final.jar tea-1.2.0
.jar jackson-databind-2.13.4.2.jar httpcore5-5.1.5.jar spring-security-
crypto-5.6.9.jar spring-web-5.3.24.jar jakarta.servlet-api-4.0.4.jar co
mmons-pool2-2.11.1.jar simpleclient_common-0.12.0.jar jboss-threads-3.1
.0.Final.jar spring-data-jpa-2.6.10.jar httpcore-4.4.15.jar gt-referenc
ing-28.0.jar systems-common-2.0.2.jar xnio-nio-3.8.7.Final.jar org.ecli
pse.emf.ecore-2.15.0.jar spring-boot-starter-2.6.14.jar undertow-websoc
kets-jsr-2.2.20.Final.jar netty-handler-ssl-ocsp-4.1.86.Final.jar jsr30
5-3.0.2.jar netty-common-4.1.85.Final.jar sqlite-jdbc-3.36.0.3.jar spri
ng-websocket-5.3.24.jar jaxb-core-2.3.0.jar javax.activation-api-1.2.0.
jar bcprov-jdk15on-1.65.jar spring-boot-starter-actuator-2.6.14.jar hib
ernate-validator-7.0.5.Final.jar jakarta.activation-1.2.2.jar spring-tx
-5.3.24.jar txw2-2.3.7.jar gt-http-28.0.jar simpleclient-0.12.0.jar log
4j-web-2.19.0.jar gt-jdbc-28.0.jar org.eclipse.emf.common-2.15.0.jar is
tack-commons-runtime-3.0.12.jar jul-to-slf4j-1.7.36.jar spring-boot-act
uator-2.6.14.jar yauaa-7.9.0.jar spring-data-redis-2.6.10.jar netty-buf
fer-4.1.85.Final.jar classmate-1.5.1.jar netty-handler-proxy-4.1.85.Fin
al.jar tomcat-embed-el-9.0.69.jar tea-xml-0.1.5.jar simpleclient_tracer
_otel_agent-0.12.0.jar spring-aop-5.3.24.jar bcpkix-jdk15on-1.65.jar sp
ring-beans-5.3.24.jar simpleclient_tracer_otel-0.12.0.jar jai_core-1.1.
3.jar indriya-2.0.2.jar netty-codec-http2-4.1.85.Final.jar jackson-data
type-jdk8-2.13.4.jar mbtiles4j-1.2.0.jar netty-transport-classes-epoll-
4.1.85.Final.jar xnio-api-3.8.7.Final.jar log4j-slf4j-impl-2.17.2.jar l
og4j-core-2.17.2.jar netty-codec-redis-4.1.85.Final.jar disruptor-3.4.4
.jar spring-jcl-5.3.24.jar commons-pool-1.6.jar spring-core-5.3.24.jar
spring-boot-starter-aop-2.6.14.jar httpcore5-h2-5.1.5.jar netty-resolve
r-4.1.85.Final.jar commons-lang3-3.12.0.jar gson-2.8.9.jar netty-codec-
dns-4.1.85.Final.jar jaxb-runtime-2.3.7.jar reactive-streams-1.0.4.jar
spring-security-web-5.6.9.jar spring-webflux-5.3.24.jar jackson-core-2.
13.4.jar jackson-module-jaxb-annotations-2.13.4.jar netty-transport-nat
ive-unix-common-4.1.85.Final.jar simpleclient_tracer_common-0.12.0.jar
byte-buddy-1.11.22.jar java-jwt-4.2.2.jar si-units-2.0.1.jar spring-boo
t-starter-log4j2-2.6.14.jar spring-boot-devtools-2.6.14.jar spring-data
-keyvalue-2.6.10.jar reactor-netty-core-1.0.25.jar jakarta.xml.bind-api
-2.3.3.jar spring-messaging-5.3.24.jar commons-collections4-4.4.jar net
ty-codec-mqtt-4.1.85.Final.jar credentials-java-0.2.4.jar re2j-1.6.jar
spring-boot-starter-web-2.6.14.jar jackson-module-parameter-names-2.13.
4.jar jaxb-api-2.3.1.jar netty-transport-native-epoll-4.1.85.Final-linu
x-x86_64.jar okio-1.17.2.jar geolatte-geom-1.8.2.jar netty-codec-socks-
4.1.85.Final.jar jboss-logging-3.4.3.Final.jar netty-transport-sctp-4.1
.85.Final.jar spring-context-support-5.3.24.jar gt-opengis-28.0.jar net
ty-transport-classes-kqueue-4.1.85.Final.jar

BIN
README.md

Binary file not shown.

299
pom.xml Normal file
View File

@@ -0,0 +1,299 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xkrs.microservice</groupId>
<artifactId>gsm_gui</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>GSM_GUI</name>
<description>GSM_GUI</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.14</version>
<relativePath/>
</parent>
<properties>
<yauaa.version>7.9.0</yauaa.version>
<java-jwt.version>4.2.2</java-jwt.version>
<log4j-web.version>2.19.0</log4j-web.version>
<httpmime.version>4.5.14</httpmime.version>
<hibernate-validator.version>7.0.5.Final</hibernate-validator.version>
<hibernate-spatial.version>5.6.15.Final</hibernate-spatial.version>
<disruptor.version>3.4.4</disruptor.version>
<jsoup.version>1.15.3</jsoup.version>
<dysmsapi20170525.version>2.0.23</dysmsapi20170525.version>
<netty-all.version>4.1.86.Final</netty-all.version>
<hibernate-types-55.version>2.15.2</hibernate-types-55.version>
<micrometer-registry-prometheus.version>1.10.2</micrometer-registry-prometheus.version>
<commons-lang3.version>3.12.0</commons-lang3.version>
<hutool-all.version>5.8.10</hutool-all.version>
<mbtiles4j.version>1.2.0</mbtiles4j.version>
<geotools.version>28.0</geotools.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j-web.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--排除logback和tomcat依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- web 容器使用 undertow -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<!--排除logback依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<scope>test</scope>
</dependency>
<!-- 添加 websocket -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>${java-jwt.version}</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>${netty-all.version}</version>
</dependency>
<dependency>
<groupId>ch.poole.geo</groupId>
<artifactId>mbtiles4j</artifactId>
<version>${mbtiles4j.version}</version>
</dependency>
<dependency>
<groupId>nl.basjes.parse.useragent</groupId>
<artifactId>yauaa</artifactId>
<version>${yauaa.version}</version>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>${micrometer-registry-prometheus.version}</version>
</dependency>
<dependency>
<groupId>com.vladmihalcea</groupId>
<artifactId>hibernate-types-55</artifactId>
<version>${hibernate-types-55.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>${httpmime.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${hibernate-validator.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>${hibernate-spatial.version}</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>${disruptor.version}</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>${jsoup.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>${dysmsapi20170525.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools.jdbc</groupId>
<artifactId>gt-jdbc-postgis</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.geotools</groupId>-->
<!-- <artifactId>gt-mbtiles</artifactId>-->
<!-- <version>${geotools.version}</version>-->
<!-- </dependency>-->
</dependencies>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>osgeo</id>
<name>Open Source Geospatial Foundation Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
</repository>
</repositories>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.txt</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- <plugin>-->
<!-- <groupId>org.apache.maven.plugins</groupId>-->
<!-- <artifactId>maven-compiler-plugin</artifactId>-->
<!-- <version>3.10.1</version>-->
<!-- <configuration>-->
<!-- <release>17</release>-->
<!-- </configuration>-->
<!-- </plugin>-->
</plugins>
</build>
</project>

View File

@@ -0,0 +1,28 @@
package com.xkrs.microservice;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* 微服务入口
* @author tajochen
*/
@SpringBootApplication(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
@EnableAsync
public class MicroserviceApplication {
public static void main(String[] args) {
SpringApplication.run(MicroserviceApplication.class, args);
}
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName){
return registry -> registry.config().commonTags("application", applicationName);
}
}

View File

@@ -0,0 +1,29 @@
package com.xkrs.microservice.common.account;
/**
* 账户实体
* @author tajochen
*/
public class AccountCredentials {
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

View File

@@ -0,0 +1,109 @@
package com.xkrs.microservice.common.account;
import com.xkrs.microservice.model.entity.SysAuthorityEntity;
import com.xkrs.microservice.model.entity.SysUserEntity;
import com.xkrs.microservice.service.SysAuthorityService;
import com.xkrs.microservice.service.SysRoleService;
import com.xkrs.microservice.service.SysUserService;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.DisabledException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import static com.xkrs.microservice.util.EncryptDecryptUtil.encrypt256;
/**
* 自定义认证Provider
* @author tajochen
*/
@Component
public class CustomAuthenticationProvider implements AuthenticationProvider {
@Resource
private SysUserService sysUserService;
@Resource
private SysRoleService sysRoleService;
@Resource
private SysAuthorityService sysAuthorityService;
/**
* 初使化时将已静态化的Service实例化
*/
protected static CustomAuthenticationProvider customAuthenticationProvider;
/**
* 通过@PostConstruct实现初始化bean之前进行的操作
*/
@PostConstruct
public void init() {
customAuthenticationProvider = this;
customAuthenticationProvider.sysUserService = this.sysUserService;
customAuthenticationProvider.sysRoleService = this.sysRoleService;
customAuthenticationProvider.sysAuthorityService = this.sysAuthorityService;
}
/**
* 用户认证授权
* @param authentication 认证类
*/
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
// 获取认证的用户名 & 密码
String userName = authentication.getName();
String password = authentication.getCredentials().toString();
SysUserEntity userEntity = customAuthenticationProvider.sysUserService.getSysUserByUserName(userName);
// 检查用户是否存在
if(userEntity == null){
throw new BadCredentialsException("user don't exist");
}
// 检查用户是否激活
if(userEntity.getActiveFlag() != 0){
throw new DisabledException("user not activated");
}
//检查用户状态是否正常
if(userEntity.getStatusCode() != 0){
throw new DisabledException("user state exception");
}
// 认证逻辑
String encryptPassword = encrypt256(password + userEntity.getSalt());
if (encryptPassword.equals(userEntity.getPassword())) {
// 设置权限列表
ArrayList<GrantedAuthority> permissions = new ArrayList<>();
List<SysAuthorityEntity> permissionList = customAuthenticationProvider.sysAuthorityService.
getSysAuthorityListByUserName(userName);
for(SysAuthorityEntity sysAuthorityEntity : permissionList) {
permissions.add(new CustomGrantedAuthority(sysAuthorityEntity.getAuthorityName()));
}
// 生成令牌
return new UsernamePasswordAuthenticationToken(userName, encryptPassword, permissions);
}
else {
throw new BadCredentialsException("user password error");
}
}
/**
* 是否可以提供输入类型的认证服务
* @param authentication 认证类
*/
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}

View File

@@ -0,0 +1,25 @@
package com.xkrs.microservice.common.account;
import org.springframework.security.core.GrantedAuthority;
/**
* 权限认证服务
* @author tajochen
*/
public class CustomGrantedAuthority implements GrantedAuthority {
private String authority;
public CustomGrantedAuthority(String authority) {
this.authority = authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
@Override
public String getAuthority() {
return this.authority;
}
}

View File

@@ -0,0 +1,28 @@
package com.xkrs.microservice.common.account;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.filter.GenericFilterBean;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* 拦截所有需要JWT的请求然后调用TokenAuthenticationService类的静态方法去做JWT验证
* @author tajochen
*/
public class JwtAuthenticationFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
Authentication authentication = TokenAuthenticationProvider.inspectAuthentication((HttpServletRequest)request);
SecurityContextHolder.getContext().setAuthentication(authentication);
filterChain.doFilter(request,response);
}
}

View File

@@ -0,0 +1,146 @@
package com.xkrs.microservice.common.account;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.service.SysUserService;
import com.xkrs.microservice.util.IpUtil;
import com.xkrs.microservice.common.encapsulation.OutputEncapsulation;
import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Locale;
/**
* jwt登录过滤器
* @author tajochen
*/
public class JwtLoginFilter extends AbstractAuthenticationProcessingFilter {
private static final Logger logger = LoggerFactory.getLogger(JwtLoginFilter.class);
@Resource
private SysUserService sysUserService;
public JwtLoginFilter(String url, AuthenticationManager authManager) {
super(new AntPathRequestMatcher(url));
setAuthenticationManager(authManager);
}
/**
* 登录时验证
* @param req 请求
* @param res 响应
*/
@Override
public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse res) {
try {
req.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
logger.error(String.valueOf(e));
}
res.setHeader("Access-Control-Allow-Origin","*");
res.setHeader("Access-Control-Allow-Credentials", "false");
AccountCredentials cred = new AccountCredentials();
//获取表单数据
String userName = req.getParameter("userName");
String password = req.getParameter("password");
String rememberMe = req.getParameter("remember");
//如果用户名密码为空
if(userName == null||password == null|| userName.trim().isEmpty()||password.trim().isEmpty()){
throw new BadCredentialsException("user or password is null");
}
if(rememberMe == null||rememberMe.isEmpty()){
rememberMe = "false";
}
cred.setUserName(userName.trim());
cred.setPassword(password.trim());
// 返回一个验证令牌
return getAuthenticationManager().authenticate(
new UsernamePasswordAuthenticationToken(
cred.getUserName(),
cred.getPassword()
)
);
}
/**
* 验证成功后调用
* @param req 请求
* @param response 响应
* @param chain 过滤器声明
* @param auth 认证
*/
@Override
protected void successfulAuthentication(
HttpServletRequest req, HttpServletResponse response, FilterChain chain, Authentication auth) {
if(sysUserService==null){
ServletContext servletContext = req.getServletContext();
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);
assert webApplicationContext != null;
sysUserService = webApplicationContext.getBean(SysUserService.class);
}
UserAgentAnalyzer uaa = UserAgentAnalyzer
.newBuilder()
.hideMatcherLoadStats()
.withCache(5000)
.build();
UserAgent agent = uaa.parse(req.getHeader("User-Agent"));
System.out.println("获取 UA 信息:");
for (String fieldName: agent.getAvailableFieldNamesSorted()) {
System.out.println(fieldName + " = " + agent.getValue(fieldName));
}
//更新用户登录信息
sysUserService.updateSysUserLogin(auth.getName(), IpUtil.getIpAddr(req));
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "false");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
TokenAuthenticationProvider.createAuthentication(response, auth.getName(),auth.getAuthorities());
}
/**
* 验证失败后调用
* @param request 请求
* @param response 响应
* @param failed 失败
*/
@Override
protected void unsuccessfulAuthentication(HttpServletRequest request,
HttpServletResponse response,
AuthenticationException failed) {
Locale locale = LocaleContextHolder.getLocale();
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Credentials", "false");
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
// 将 JWT 写入 body
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
logger.warn(String.valueOf(e));
}
assert out != null;
out.append(OutputEncapsulation.outputEncapsulationObject(PromptMessageEnum.DATA_WRONG, failed.getLocalizedMessage(), locale));
response.setStatus(HttpServletResponse.SC_OK);
}
}

View File

@@ -0,0 +1,125 @@
package com.xkrs.microservice.common.account;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.common.encapsulation.OutputEncapsulation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.AuthorityUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
/**
* token认证服务
* @author tajochen
*/
public class TokenAuthenticationProvider {
private static final Logger logger = LoggerFactory.getLogger(TokenAuthenticationProvider.class);
/**
* Token前缀
*/
static public final String TOKEN_PREFIX = "Bearer ";
/**
* 过期时间6小时
*/
static public final long EXPIRATIONTIME = 21_600_000;
/**
* 加密密钥
*/
static public final String SECRET_KEY = "J928A503V4wmF05Ka0HWN2dmW11hTfwqU97sR9E4DpF82B52542033Ok785x8173";
/**
* 存放Token的Header Key
*/
static final String HEADER_STRING = "Authorization";
/**
* JWT生成方法
* @param response 响应
* @param userName 用户名
* @param authorities 认证
*/
static void createAuthentication(HttpServletResponse response, String userName,
Collection<? extends GrantedAuthority > authorities) {
Locale locale = new Locale("zh", "CN");
StringBuilder auths = new StringBuilder();
String authsList = "";
for(GrantedAuthority r : authorities) {
auths.append(",").append(r.getAuthority());
}
authsList = auths.toString();
if(authsList.length()>1){
authsList=authsList.substring(1);
} else {
logger.warn(userName +" has no permission!");
}
// 加密算法
Algorithm algorithm = Algorithm.HMAC384(SECRET_KEY);
// 生成JWT
String jwt = JWT.create().withSubject(userName).
withIssuer("https://www.star-rising.com").
withAudience(userName).
withClaim("auths", authsList).
withNotBefore(new Date(System.currentTimeMillis())).
withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATIONTIME)).
sign(algorithm);
// 将 JWT 写入 body
PrintWriter out = null;
response.setStatus(HttpServletResponse.SC_OK);
try {
out = response.getWriter();
out.append(OutputEncapsulation.outputEncapsulationObject(PromptMessageEnum.SUCCESS, jwt, locale));
}
catch (IOException e) {
e.printStackTrace();
}
}
/**
* JWT验证方法
* @param request 请求体
*/
static Authentication inspectAuthentication(HttpServletRequest request) {
// 从Header中拿到token
String token = request.getHeader(HEADER_STRING);
if (token != null) {
try {
String realToken = token.replace(TOKEN_PREFIX, "");
Algorithm algorithm = Algorithm.HMAC384(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm)
.withIssuer("https://www.star-rising.com")
.build();
DecodedJWT jwt = verifier.verify(realToken);
// 获取用户名
String userName = jwt.getSubject();
// 获取权限
Claim claim = jwt.getClaim("auths");
List<GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList( claim.asString());
return new UsernamePasswordAuthenticationToken(userName, null, authorities);
} catch(Exception e) {
// 数据域丢失或者没有值
return null;
}
} else {
return null;
}
}
}

View File

@@ -0,0 +1,36 @@
package com.xkrs.microservice.common.config;
import java.lang.reflect.Field;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
/**
* spring 静态工具类里读取配置文件
* @author tajochen
*/
@Component
public class ConfigConstant {
@Resource
private Environment env;
@PostConstruct
public void readConfig() throws Exception {
String prefix = "my.";
Field[] fields = ConfigConstant.class.getFields();
for(Field field : fields ){
field.set(null, getProperty(prefix + field.getName()));
}
}
private String getProperty(String key) {
return new String(Objects.requireNonNull(env.getProperty(key)).getBytes(StandardCharsets.ISO_8859_1),
StandardCharsets.UTF_8);
}
}

View File

@@ -0,0 +1,32 @@
package com.xkrs.microservice.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
/**
* 跨域配置
* @author tajochen
*/
public class CorsConfig {
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允许任何域名
corsConfiguration.addAllowedOrigin("*");
// 允许任何头
corsConfiguration.addAllowedHeader("*");
// 允许任何方法
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
// 注册
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}

View File

@@ -0,0 +1,18 @@
package com.xkrs.microservice.common.config;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Bean;
/**
* Prometheus 度量设置
* @author tajochen
*/
public class MetricsRepositoryMethodConfig {
@Bean
InitializingBean forcePrometheusPostProcessor(BeanPostProcessor meterRegistryPostProcessor, PrometheusMeterRegistry registry) {
return () -> meterRegistryPostProcessor.postProcessAfterInitialization(registry, "");
}
}

View File

@@ -0,0 +1,37 @@
package com.xkrs.microservice.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* WebMVC配置
* @author Tajochen
*/
@Configuration
public class MvcConfig implements WebMvcConfigurer {
/**
* 放行跨域请求
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
/**
* 定时任务线程池更改,防止多个任务并行
*/
@Bean
public TaskScheduler taskScheduler() {
final ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(5);
return scheduler;
}
}

View File

@@ -0,0 +1,30 @@
package com.xkrs.microservice.common.config;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.io.Serializable;
/**
* Redis 缓存自动配置
* @author tajochen
*/
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisCacheAutoConfiguration {
@Bean
public RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Serializable> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}

View File

@@ -0,0 +1,196 @@
package com.xkrs.microservice.common.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.CacheErrorHandler;
import org.springframework.cache.interceptor.CacheResolver;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.*;
import javax.annotation.Resource;
import java.io.IOException;
import java.time.Duration;
/**
* redis配置
* @author tajochen
*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{
private static final Logger logger = LoggerFactory.getLogger(RedisConfig.class);
@Resource
private LettuceConnectionFactory lettuceConnectionFactory;
private static final Duration TIME_TO_LIVE = Duration.ofSeconds(3600*6);
@Bean
@Override
public KeyGenerator keyGenerator() {
// 设置自动key的生成规则配置spring boot的注解进行方法级别的缓存
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(":");
sb.append(method.getName());
for (Object obj : params) {
sb.append(":").append(obj);
}
// logger.info("自动生成Redis Key -> [{}]", rsToUse);
return String.valueOf(sb);
};
}
@Bean
@Override
public CacheManager cacheManager() {
// 关键点spring cache的注解使用的序列化都从这来没有这个配置的话使用的jdk自己的序列化
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
//key序列化方式
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerializer()))
//value序列化方式
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerializer()))
.disableCachingNullValues()
.entryTtl(TIME_TO_LIVE);
RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(lettuceConnectionFactory)
.cacheDefaults(config)
.transactionAware();
return builder.build();
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
// 根据需要添加其他配置,例如设置消息监听器
return container;
}
/**
* RedisTemplate配置 在单独使用redisTemplate的时候 重新定义序列化方式
*/
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
// 设置序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
// 配置null值序列化成空字符串
om.getSerializerProvider().setNullValueSerializer(new JsonSerializer<>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString("");
}
});
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
JavaTimeModule javaTimeModule = new JavaTimeModule();
om.registerModule(javaTimeModule);
om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// 其他设置
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance ,
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(om);
// 配置redisTemplate
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
RedisSerializer<?> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
private RedisSerializer<String> keySerializer() {
return new StringRedisSerializer();
}
private RedisSerializer<Object> valueSerializer() {
// 设置序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(
Object.class);
ObjectMapper om = new ObjectMapper();
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
JavaTimeModule javaTimeModule = new JavaTimeModule();
om.registerModule(javaTimeModule);
om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
// 其他设置
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance ,
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(om);
return jackson2JsonRedisSerializer;
}
@Override
public CacheResolver cacheResolver() {
return null;
}
/**
* 设置数据存入 redis 的序列化方式,并开启事务
*
* @param redisTemplate 模版
* @param factory 工厂类
*/
private void initRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
//如果不配置Serializer那么存储的时候缺省使用String如果用User类型存储那么会提示错误User can't cast to String
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// 开启事务
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.setConnectionFactory(factory);
}
/**
* 注入封装RedisTemplate 给RedisUtil提供操作类
* @param redisTemplate redis模版
* @return RedisUtil
*/
@Bean(name = "redisUtil")
public RedisUtil redisUtil(RedisTemplate<String, Object> redisTemplate) {
RedisUtil redisUtil = new RedisUtil();
redisUtil.setRedisTemplate(redisTemplate);
return redisUtil;
}
@Override
@Bean
public CacheErrorHandler errorHandler() {
// 异常处理当Redis发生异常时打印日志但是程序正常走
logger.info("初始化 -> [{}]", "Redis CacheErrorHandler");
return null;
}
}

View File

@@ -0,0 +1,42 @@
package com.xkrs.microservice.common.config;
import com.xkrs.microservice.dao.DataFileDao;
import com.xkrs.microservice.model.entity.DataFileEntity;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Optional;
/**
* 监听redis key 过期事件
*/
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
@Resource
private DataFileDao dataFileDao;
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
String expiredKey = message.toString();
if (expiredKey.contains("runFile_")){
String[] key = expiredKey.split("_");
Optional<DataFileEntity> optional = dataFileDao.findById(Integer.valueOf(key[1]));
//如果文件的状态还在运行中,就修改运行状态为 未运行
if (optional.get().getRunFlag().equals("1")){
DataFileEntity dataFileEntity = new DataFileEntity();
dataFileEntity.setId(optional.get().getId());
dataFileEntity.setRunFlag(0);
dataFileDao.save(dataFileEntity);
}
}
}
}

View File

@@ -0,0 +1,533 @@
package com.xkrs.microservice.common.config;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* redis工具类
* @author tajochen
*/
public class RedisUtil {
private RedisTemplate<String, Object> redisTemplate;
public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 指定缓存失效时间
* @param key 键
* @param time 时间(秒)
* @return
*/
public boolean expire(String key,long time){
try {
if(time>0){
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 根据key 获取过期时间
* @param key 键 不能为null
* @return 时间(秒) 返回0 代表为永久有效
*/
public long getExpire(String key){
return redisTemplate.getExpire(key,TimeUnit.SECONDS);
}
/**
* 判断key是否存在
* @param key 键
* @return true 存在 false不存在
*/
public boolean hasKey(String key){
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除缓存
* @param key 可以传一个值 或多个
*/
@SuppressWarnings("unchecked")
public void del(String ... key){
if(key!=null&&key.length>0){
if(key.length==1){
redisTemplate.delete(key[0]);
}else{
redisTemplate.delete(String.valueOf(CollectionUtils.arrayToList(key)));
}
}
}
//============================String=============================
/**
* 普通缓存获取
* @param key 键
* @return 值
*/
public Object get(String key){
return key==null?null:redisTemplate.opsForValue().get(key);
}
/**
* 普通缓存放入
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public boolean set(String key,Object value) {
try {
redisTemplate.opsForValue().set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 普通缓存放入并设置时间
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public boolean set(String key,Object value,long time){
try {
if(time>0){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
} else {
set(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 递增
* @param key 键
* @param delta 要增加几(大于0)
* @return
*/
public long incr(String key, long delta){
if(delta<0){
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
* 递减
* @param key 键
* @param delta 要减少几(小于0)
* @return
*/
public long decr(String key, long delta){
if(delta<0){
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
//================================Map=================================
/**
* HashGet
* @param key 键 不能为null
* @param item 项 不能为null
* @return 值
*/
public Object hget(String key,String item){
return redisTemplate.opsForHash().get(key, item);
}
/**
* 获取hashKey对应的所有键值
* @param key 键
* @return 对应的多个键值
*/
public Map<Object,Object> hmget(String key){
return redisTemplate.opsForHash().entries(key);
}
/**
* HashSet
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public boolean hmset(String key, Map<String,Object> map){
try {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* HashSet 并设置时间
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public boolean hmset(String key, Map<String,Object> map, long time){
try {
redisTemplate.opsForHash().putAll(key, map);
if(time>0){
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public boolean hset(String key,String item,Object value) {
try {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public boolean hset(String key,String item,Object value,long time) {
try {
redisTemplate.opsForHash().put(key, item, value);
if(time>0){
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除hash表中的值
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public void hdel(String key, Object... item){
redisTemplate.opsForHash().delete(key,item);
}
/**
* 判断hash表中是否有该项的值
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存在 false不存在
*/
public boolean hHasKey(String key, String item){
return redisTemplate.opsForHash().hasKey(key, item);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
* @return
*/
public double hincr(String key, String item,double by){
return redisTemplate.opsForHash().increment(key, item, by);
}
/**
* hash递减
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
* @return
*/
public double hdecr(String key, String item,double by){
return redisTemplate.opsForHash().increment(key, item,-by);
}
//============================set=============================
/**
* 根据key获取Set中的所有值
* @param key 键
* @return
*/
public Set<Object> sGet(String key){
try {
return redisTemplate.opsForSet().members(key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 根据value从一个set中查询,是否存在
* @param key 键
* @param value 值
* @return true 存在 false不存在
*/
public boolean sHasKey(String key,Object value){
try {
return Boolean.TRUE.equals(redisTemplate.opsForSet().isMember(key, value));
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将数据放入set缓存
* @param key 键
* @param values 值 可以是多个
* @return 成功个数
*/
public long sSet(String key, Object...values) {
try {
return redisTemplate.opsForSet().add(key, values);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 将set数据放入缓存
* @param key 键
* @param time 时间(秒)
* @param values 值 可以是多个
* @return 成功个数
*/
public long sSetAndTime(String key,long time,Object...values) {
try {
Long count = redisTemplate.opsForSet().add(key, values);
if(time>0)
{expire(key, time);}
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 获取set缓存的长度
* @param key 键
* @return
*/
public long sGetSetSize(String key){
try {
return redisTemplate.opsForSet().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 移除值为value的
* @param key 键
* @param values 值 可以是多个
* @return 移除的个数
*/
public long setRemove(String key, Object ...values) {
try {
Long count = redisTemplate.opsForSet().remove(key, values);
return count;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
//===============================list=================================
/**
* 获取list缓存的内容
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return
*/
public List<Object> lGet(String key, long start, long end){
try {
return redisTemplate.opsForList().range(key, start, end);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 获取list缓存的长度
* @param key 键
* @return
*/
public long lGetListSize(String key){
try {
return redisTemplate.opsForList().size(key);
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 通过索引 获取list中的值
* @param key 键
* @param index 索引 index>=0时 0 表头1 第二个元素依次类推index<0时-1表尾-2倒数第二个元素依次类推
* @return
*/
public Object lGetIndex(String key,long index){
try {
return redisTemplate.opsForList().index(key, index);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @return
*/
public boolean lSet(String key, Object value) {
try {
redisTemplate.opsForList().rightPush(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public boolean lSet(String key, Object value, long time) {
try {
redisTemplate.opsForList().rightPush(key, value);
if (time > 0)
{expire(key, time);}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @return
*/
public boolean lSet(String key, List<Object> value) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 将list放入缓存
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public boolean lSet(String key, List<Object> value, long time) {
try {
redisTemplate.opsForList().rightPushAll(key, value);
if (time > 0) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 根据索引修改list中的某条数据
* @param key 键
* @param index 索引
* @param value 值
* @return
*/
public boolean lUpdateIndex(String key, long index,Object value) {
try {
redisTemplate.opsForList().set(key, index, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 移除N个值为value
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
*/
public long lRemove(String key,long count,Object value) {
try {
Long remove = redisTemplate.opsForList().remove(key, count, value);
return remove;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
}

View File

@@ -0,0 +1,64 @@
package com.xkrs.microservice.common.config;
import com.xkrs.microservice.common.account.CustomAuthenticationProvider;
import com.xkrs.microservice.common.account.JwtAuthenticationFilter;
import com.xkrs.microservice.common.account.JwtLoginFilter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
class WebSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 设置 HTTP 验证规则
* @param http http隐私认证
* @throws Exception
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// 关闭csrf验证
http.csrf().disable()
// 对请求进行认证
.authorizeRequests()
// 所有 / 的所有请求 都放行
.antMatchers("/").permitAll()
// 所有OPTIONS请求都放行
.antMatchers(HttpMethod.OPTIONS).permitAll()
// 所有 /user/add 用户注册 的POST请求 都放行
.antMatchers(HttpMethod.POST, "/api/user/register").permitAll()
// 所有 /user/check/duplicate 检查用户名是否重复 的POST请求 都放行
.antMatchers(HttpMethod.GET, "/api/user/check/duplicate").permitAll()
// 所有 prometheus 度量接口 的Get请求 都放行
.antMatchers(HttpMethod.GET, "/actuator/prometheus").permitAll()
// 所有 mbtile 服务接口 的Get请求 都放行
.antMatchers(HttpMethod.GET, "/api/mbtile/get/**").permitAll()
// 所有 /login 用户登录 的POST请求 都放行
.antMatchers(HttpMethod.POST, "/api/login").permitAll()
// 所有 统计数据的 的POST请求 都放行
.antMatchers(HttpMethod.POST, "/api/statistical-data/add").permitAll()
// 所有其它请求需要身份认证
.anyRequest().authenticated()
.and()
// 添加一个过滤器 所有访问 /login 的请求交给 JWTLoginFilter 来处理 这个类处理所有的JWT相关内容
.addFilterBefore(new JwtLoginFilter("/api/login", authenticationManager()),
UsernamePasswordAuthenticationFilter.class)
// 添加一个过滤器验证其他请求的Token是否合法
.addFilterBefore(new JwtAuthenticationFilter(),
UsernamePasswordAuthenticationFilter.class);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) {
// 使用自定义身份验证组件
auth.authenticationProvider(new CustomAuthenticationProvider());
}
}

View File

@@ -0,0 +1,59 @@
package com.xkrs.microservice.common.encapsulation;
import java.io.Serializable;
/**
* 输出信息对象
* @author tajochen
* @param <T>
*/
public class EncapsulationObject<T> implements Serializable {
/**
* 状态码
*/
int status;
/**
* 提示信息
*/
String msg;
/**
* 数据
*/
T data;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "EncapsulationObejct{" +
"status=" + status +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}

View File

@@ -0,0 +1,94 @@
package com.xkrs.microservice.common.encapsulation;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.stereotype.Component;
import org.springframework.validation.FieldError;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
/**
* 输出信息封装
* @author tajochen
*/
@Component
public class OutputEncapsulation {
private static final Logger logger = LoggerFactory.getLogger(OutputEncapsulation.class);
/**
* 读取多国语言文件
*/
public static MessageSource messageSource() {
// 使用ClassLoader加载properties配置文件生成对应的输入流
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("application.properties");
// 使用properties对象加载输入流
try {
Properties properties = new Properties();
properties.load(in);
} catch (IOException e) {
e.printStackTrace();
}
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
/**
* 封装输出数据
* @param promptMessageEnum 封装枚举
* @param obj 对象
* @param locale 本地语言
*/
public static String outputEncapsulationObject(PromptMessageEnum promptMessageEnum, Object obj, Locale locale) {
EncapsulationObject<Object> encapsulationObject = new EncapsulationObject<>();
encapsulationObject.setStatus(promptMessageEnum.getCode());
encapsulationObject.setMsg(messageSource().getMessage(promptMessageEnum.getText(),null,locale));
encapsulationObject.setData(obj);
ObjectMapper objectMapper = new ObjectMapper();
// 忽略无法转换的对象
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
// 忽略json字符串中不识别的属性
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
JavaTimeModule javaTimeModule = new JavaTimeModule();
objectMapper.registerModule(javaTimeModule);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
String strByEo = "";
try {
strByEo = objectMapper.writeValueAsString(encapsulationObject);
} catch (JsonProcessingException e) {
e.printStackTrace();
logger.warn(e.toString());
}
return strByEo;
}
/**
* 输出请求值检验错误信息
* @param fieldErrors 错误列表
* @param locale 本地语言
*/
public static String outputEncapsulationErrorList(List<FieldError> fieldErrors, Locale locale){
List<String> errorMsg = new ArrayList<>();
for (FieldError fieldError : fieldErrors) {
String errMessage = Objects.requireNonNull(fieldError.getDefaultMessage()).
subSequence(1,fieldError.getDefaultMessage().length()-1).toString();
errorMsg.add(messageSource().getMessage(errMessage,null,locale));
}
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,errorMsg,locale);
}
}

View File

@@ -0,0 +1,65 @@
package com.xkrs.microservice.common.encapsulation;
/**
* 提示信息枚举
* @author tajochen
*/
public enum PromptMessageEnum{
// 执行成功
SUCCESS(0, "sys.message.success"),
// 用户与权限相关操作: 1001-1999
USER_NOT_LOGGED(1001, "sys.message.user.not_logged_in"),
USER_LOGIN_ERROR(1002, "sys.message.user.login_error"),
USER_ACCOUNT_FORBIDDEN(1003, "sys.message.user.account_forbidden"),
USER_ACCOUNT_NOT_ACTIVATED(1004, "sys.message.user.account_not_activated"),
USER_HAS_OVERTIME(1005, "sys.message.user.overtime"),
USER_NO_PERMISSION(1006,"sys.message.user.no_permission"),
USER_ALREADY_LOGGED(1007, "sys.message.user.already_logged"),
USER_ALREADY_EXIST(1008, "sys.message.user.already_exist"),
USER_NOT_EXIST(1008, "sys.message.user.not_exist"),
// 业务请求参数相关操作2001-2999
PARAM_NULL(2001, "sys.message.param.null"),
PARAM_ILLEGAL(2002, "sys.message.param.illegal"),
// 业务数据相关操作3001-3999
DATA_NONE(3001, "sys.message.data.none"),
DATA_WRONG(3002, "sys.message.data.wrong"),
DATA_REPEAT(3003, "sys.message.data.repeat"),
// 业务执行相关异常4001-4999
PROCESS_FAIL(4001,"sys.message.process.fail"),
PROCESS_OVERTIME(4002,"sys.message.process.overtime"),
FILE_EXISTS(4003,"sys.message.file.exists"),
FILE_WRITE_ERROR(4004,"sys.message.file.write.error"),
FILE_READ_ERROR(4005,"sys.message.file.read.error"),
// 系统内部错误或异常5001-5999
SYSTEM_INNER_ERROR(5001,"sys.message.system.inner_error"),
SYSTEM_ABNORMAL(5002,"sys.message.system.abnormal"),
SYSTEM_BUSY(5003,"sys.message.system.busy"),
SYSTEM_MAINTAIN(5004,"sys.message.system.maintain"),
// 数据库错误6001-6999
DATABASE_ERROR(6001,"sys.message.database.error");
private final int code;
private final String text;
PromptMessageEnum(int code,String text) {
this.code = code;
this.text = text;
}
public String getText() {
return this.text;
}
public int getCode() {
return this.code;
}
}

View File

@@ -0,0 +1,92 @@
package com.xkrs.microservice.common.tool;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xkrs.microservice.model.vo.FileServerResultVo;
import com.xkrs.microservice.util.RequestUtil;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 文件服务器管理工具
* @author tajochen
*/
public class FileServerManageTool {
private static final String FIREFOX_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) " +
"Gecko/20100101 Firefox/91.0";
/**
* 发送管理命令到文件服务器
* @param url 文件服务器路径
* @param map 命令参数集
* @return
*/
public static FileServerResultVo postFileManage(String url, Map<String,String> map){
Logger log = LoggerFactory.getLogger(RequestUtil.class);
String body = "";
// 创建httpclient对象
CloseableHttpClient client = HttpClients.createDefault();
// 创建post方式请求对象
HttpPost httpPost = new HttpPost(url);
// 装填参数
List<NameValuePair> nvps = new ArrayList<>();
if(map!=null){
for (Map.Entry<String, String> entry : map.entrySet()) {
nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
try {
// 设置参数到请求对象中
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
// 设置header报文头信息
httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");
httpPost.setHeader("User-Agent", FIREFOX_UA);
httpPost.setHeader("Accept", "application");
httpPost.setHeader("Accept-Encoding", "gzip, deflate");
// 执行请求操作,并拿到结果(同步阻塞)
CloseableHttpResponse response = client.execute(httpPost);
// 获取结果实体
HttpEntity entity = response.getEntity();
if (entity != null) {
// 按指定编码转换结果实体为String类型
body = EntityUtils.toString(entity, "UTF-8");
}
EntityUtils.consume(entity);
// 释放链接
response.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
FileServerResultVo fileServerResultVo = new FileServerResultVo();
ObjectMapper mapper = new ObjectMapper();
try {
fileServerResultVo = mapper.readValue(body, FileServerResultVo.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
log.warn(e.toString());
}
return fileServerResultVo;
}
}

View File

@@ -0,0 +1,139 @@
package com.xkrs.microservice.common.tool;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
/**
* Jackson 序列化与反序列化工具
* @author tajochen
*/
public class JackSonUtil {
Logger logger = LoggerFactory.getLogger(JackSonUtil.class);
private static ObjectMapper objectMapper = new ObjectMapper();
static {
// 忽略空Bean转json的错误
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
// 忽略在json字符串中存在但是在java对象中不存在对应属性的情况。防止错误
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
// 配置null值序列化成空字符串
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString("");
}
});
// 解决jackson无法反序列化LocalDateTime的问题,引入jsr310标准
JavaTimeModule javaTimeModule = new JavaTimeModule();
objectMapper.registerModule(javaTimeModule);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}
/**
* 对象转Json格式字符串
* @param obj 对象
* @return Json格式字符串
*/
public static <T> String obj2String(T obj) {
if (obj == null) {
return null;
} try {
return obj instanceof String ? (String) obj : objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
return null;
}
}
/**
* 对象转Json格式字符串(格式化的Json字符串)
* @param obj 对象
* @return 美化的Json格式字符串
*/
public static <T> String obj2StringPretty(T obj) {
if (obj == null) {
return null;
} try {
return obj instanceof String ? (String) obj : objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
} catch (JsonProcessingException e) {
return null;
}
}
/**
* 字符串转换为自定义对象
* @param str 要转换的字符串
* @param clazz 自定义对象的class对象
* @return 自定义对象
*/
public static <T> T string2Obj(String str, Class<T> clazz){
if(str==null || str.isEmpty() || clazz == null){
return null;
}
try {
return clazz.equals(String.class) ? (T) str : objectMapper.readValue(str, clazz);
} catch (Exception e) {
return null;
}
}
public static <T> T string2Obj(String str, TypeReference<T> typeReference) {
if (str==null || str.isEmpty() || typeReference == null) {
return null;
}
try {
return (T) (typeReference.getType().equals(String.class) ? str : objectMapper.readValue(str, typeReference));
} catch (IOException e) {
return null;
}
}
public static <T> T string2Obj(String str, Class<?> collectionClazz, Class<?>... elementClazzes) {
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(collectionClazz, elementClazzes);
try {
return objectMapper.readValue(str, javaType);
} catch (IOException e) {
return null;
}
}
// public static void main(String[] args) {
// User user1 = new User();
// user1.setId(1);
// user1.setEmail("chenhaifei@163.com");
// String userJsonstr = JsonUtil.obj2String(user1);
// String userJsonPretty = JsonUtil.obj2StringPretty(user1);
// log.info("userJson: {}", userJsonPretty);
//
// User user2 = JsonUtil.string2Obj(userJsonstr, User.class);
// user2.setId(2);
// user2.setEmail("tianxiaorui@126.com");
//
// List<User> userList = new ArrayList<>();
// userList.add(user1);
// userList.add(user2);
// String userListJson = JsonUtil.obj2String(userList);
// List<User> userListBean = JsonUtil.string2Obj(userListJson, new TypeReference<List<User>>() {});
// if (userListBean != null) {
// userListBean.forEach(user -> {
// System.out.println(user.getId() + " : " + user.getEmail());
// });
// }
// List<User> userListBean2 = JsonUtil.string2Obj(userListJson, List.class, User.class);
// if (userListBean2 != null) {
// userListBean2.forEach(user -> {
// System.out.println(user.getId() + " : " + user.getEmail());
// });
// }
// }
}

View File

@@ -0,0 +1,45 @@
package com.xkrs.microservice.common.tool;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
/**
* token工具
* @author tajochen
*/
public class TokenUtil {
/**
* Token前缀
*/
static public final String TOKEN_PREFIX = "Bearer ";
/**
* 加密密钥
*/
static public final String SECRET_KEY = "J928A503V4wmF05Ka0HWN2dmW11hTfwqU97sR9E4DpF82B52542033Ok785x8173";
public static String getTokenUserName(String token) {
String userName = "";
if (token != null) {
try {
String realToken = token.replace(TOKEN_PREFIX, "");
Algorithm algorithm = Algorithm.HMAC384(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm)
.withIssuer("https://www.star-rising.com")
.build();
DecodedJWT jwt = verifier.verify(realToken);
// 获取用户名
userName = jwt.getSubject();
} catch(Exception e) {
return null;
}
} else {
return null;
}
return userName;
}
}

View File

@@ -0,0 +1,30 @@
package com.xkrs.microservice.common.tool;
import com.vladmihalcea.hibernate.type.AbstractHibernateType;
import com.vladmihalcea.hibernate.type.array.internal.ArraySqlTypeDescriptor;
import com.vladmihalcea.hibernate.type.array.internal.StringArrayTypeDescriptor;
/**
* 数据库专用字符串数组工具
* @author tajochen
*/
public class VarcharArrayType extends AbstractHibernateType<String[]> {
public static VarcharArrayType INSTANCE = new VarcharArrayType();
public VarcharArrayType() {
super(ArraySqlTypeDescriptor.INSTANCE, new TypeDescriptor());
}
@Override
public String getName() {
return "varchar-array";
}
public static class TypeDescriptor extends StringArrayTypeDescriptor {
@Override
protected String getSqlArrayType() {
return "varchar";
}
}
}

View File

@@ -0,0 +1,109 @@
package com.xkrs.microservice.controller;
import com.xkrs.microservice.common.config.RedisUtil;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.model.entity.DataFileEntity;
import com.xkrs.microservice.model.qo.DataFileQo;
import com.xkrs.microservice.model.qo.ZipFileInfoQo;
import com.xkrs.microservice.model.validation.DataFileQoInsert;
import com.xkrs.microservice.model.vo.ResultVo;
import com.xkrs.microservice.service.DataFileService;
import com.xkrs.microservice.util.CopyPropertiesUtil;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Locale;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationErrorList;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
import static com.xkrs.microservice.common.tool.TokenUtil.getTokenUserName;
/**
* 数据文件服务
* @author tajochen
*/
@RestController
@RequestMapping("/api/data-file")
public class DataFileController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@Resource
private DataFileService dataFileService;
@Resource
private RedisUtil redisUtil;
@RequestMapping(value="/get/all",method = RequestMethod.GET)
public String getAllDataFile() {
Iterable<DataFileEntity> list = dataFileService.getAllDataFile();
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
/**
* 上传tif文件
* @param dataFileQo 数据文件实体
* @param leftFile 左影像文件
* @param rightFile 右影像文件
* @param token
* @return
*/
@RequestMapping(value="/add",method = RequestMethod.POST)
public String uploadDataFile(DataFileQo dataFileQo,
@RequestPart("leftFile") MultipartFile leftFile,
@RequestPart("rightFile") MultipartFile rightFile,
@RequestHeader(value="Authorization") String token) {
if(dataFileQo.getFileName() == null){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"文件参数不能为空!",locale);
}
if(leftFile.isEmpty()){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"左影像文件为空!",locale);
}
if(rightFile.isEmpty()){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"右影像文件为空!",locale);
}
// 获取当前用户名
String userName = getTokenUserName(token);
ResultVo resVo = dataFileService.uploadDataFile(dataFileQo,leftFile,rightFile,userName);
if(resVo.getResultCode()!=0){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,resVo.getResultMessage(),locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,resVo.getResultMessage(),locale);
}
/**
* 运行文件
* @param dataFileQo
* @return
*/
@RequestMapping(value="/runDataFile",method = RequestMethod.POST)
public String runDataFile(@RequestBody DataFileQo dataFileQo){
String key = "runFile_" + dataFileQo.getId();
if (redisUtil.hasKey(key)){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"当前文件运行中,请稍后再试!",locale);
}
ResultVo resultVo = dataFileService.runDataFile(dataFileQo);
if(resultVo.getResultCode()!=0){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,resultVo.getResultMessage(),locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,resultVo.getResultMessage(),locale);
}
@RequestMapping(value="/delete",method = RequestMethod.DELETE)
public String deleteDataFile(@RequestParam(value = "id") Integer id) {
int res = dataFileService.deleteDataFile(id);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"id 不存在",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
}

View File

@@ -0,0 +1,119 @@
package com.xkrs.microservice.controller;
import com.xkrs.microservice.model.vo.FileServerResultVo;
import com.xkrs.microservice.service.FileServerService;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Locale;
/**
* 文件服务器管理服务
* @author tajochen
*/
@RestController
@RequestMapping("/api/file")
public class FileServerController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@Resource
private FileServerService fileServerService;
/**
* 文件统计
* @return
*/
@RequestMapping(value="/stat",method = RequestMethod.GET)
@PreAuthorize("hasAnyAuthority('auth_system_manager','auth_administor')")
@CrossOrigin
public FileServerResultVo getFileStat() {
return fileServerService.getFileStat();
}
/**
* 文件删除
* @param md5 信息摘要
* @param path 路径
* @return
*/
@RequestMapping(value="/delete",method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_system_manager','role_administor')")
@CrossOrigin
public FileServerResultVo deleteFile(@RequestParam(value = "md5",required = false) String md5,
@RequestParam(value = "path",required = false) String path) {
FileServerResultVo fileServerResultVo = new FileServerResultVo();
boolean existed = (md5==null||md5.isEmpty())&&(path==null||path.isEmpty());
if(existed){
fileServerResultVo.setStatus("fail");
fileServerResultVo.setData("");
fileServerResultVo.setMessage("参数为空");
return fileServerResultVo;
}
return fileServerService.deleteFile(md5,path);
}
/**
* 获取文件信息
* @param md5 信息摘要
* @param path 路径
* @return
*/
@RequestMapping(value="/get/info",method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_system_manager','role_administor')")
@CrossOrigin
public FileServerResultVo getFileInfo(@RequestParam(value = "md5",required = false) String md5,
@RequestParam(value = "path",required = false) String path) {
boolean existed = (md5==null||md5.isEmpty())&&(path==null||path.isEmpty());
if(existed){
FileServerResultVo<String> fileServerResultVo = new FileServerResultVo<>();
fileServerResultVo.setStatus("fail");
fileServerResultVo.setData("");
fileServerResultVo.setMessage("参数为空");
return fileServerResultVo;
}
return fileServerService.getFileInfo(md5,path);
}
/**
* 获取文件列表
* @param dir 文件夹
* @return
*/
@RequestMapping(value="/get/list",method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_system_manager','role_administor')")
@CrossOrigin
public FileServerResultVo getFileList(@RequestParam(value = "dir") String dir) {
return fileServerService.getFileList(dir);
}
/**
* 修复统计信息
* @param date 要修复的日期格式如20190725
* @return
*/
@RequestMapping(value="/get/repair-stat",method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_system_manager','role_administor')")
@CrossOrigin
public FileServerResultVo getFileRepairStat(@RequestParam(value = "date") String date) {
return fileServerService.getFileRepairStat(date);
}
/**
* 同步失败修复
* @param force 是否强行修复(0|1)
* @return
*/
@RequestMapping(value="/get/repair",method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_system_manager','role_administor')")
@CrossOrigin
public FileServerResultVo getFileRepair(@RequestParam(value = "force") String force) {
return fileServerService.getFileRepair(force);
}
}

View File

@@ -0,0 +1,158 @@
package com.xkrs.microservice.controller;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import com.xkrs.microservice.model.qo.MapServiceQo;
import com.xkrs.microservice.model.validation.MapServiceQoInsert;
import com.xkrs.microservice.model.validation.MapServiceUpdate;
import com.xkrs.microservice.model.vo.MapLayerGroupVo;
import com.xkrs.microservice.service.MapServiceService;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationErrorList;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
import static com.xkrs.microservice.common.tool.TokenUtil.getTokenUserName;
import static com.xkrs.microservice.util.NumberUtil.isStrNumeric;
/**
* 地图服务
* @author tajochen
*/
@RestController
@RequestMapping("/api/map-service")
public class MapServiceController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@Resource
private MapServiceService mapServiceService;
@RequestMapping(value="/get/all",method = RequestMethod.GET)
public String getAllMapService() {
Iterable<MapServiceEntity> list = mapServiceService.getAllService();
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/get/menu-code",method = RequestMethod.GET)
public String getAllMapServiceByMenuCode(@RequestParam(value = "menuCode") String menuCode) {
Iterable<MapServiceEntity> list = mapServiceService.getByMenuCode(menuCode);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/get/layername",method = RequestMethod.GET)
public String getAllMapServiceByLayerName(@RequestParam(value = "layerName") String layerName) {
Iterable<MapServiceEntity> list = mapServiceService.getByLayerName(layerName);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/add",method = RequestMethod.POST)
public String addMapService(@Validated({MapServiceQoInsert.class}) @RequestBody
MapServiceQo mapServiceQo,
BindingResult bindingResult, @RequestHeader(value="Authorization") String token) {
// 验证数据合法性
if(bindingResult.hasErrors()){
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
}
// 获取当前用户名
String userName = getTokenUserName(token);
mapServiceService.add(mapServiceQo,userName);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/update",method = RequestMethod.POST)
public String updateMapService(@Validated({MapServiceUpdate.class}) @RequestBody
MapServiceQo mapServiceQo,
BindingResult bindingResult, @RequestHeader(value="Authorization") String token) {
// 验证数据合法性
if(bindingResult.hasErrors()){
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
}
// 获取当前用户名
String userName = getTokenUserName(token);
int res = mapServiceService.updateById(mapServiceQo,userName);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"地图服务不存在!",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/delete",method = RequestMethod.DELETE)
public String deleteMapService(@RequestParam(value = "id") Integer id) {
int res = mapServiceService.delete(id);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"id 不存在",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/map-layer-group/menu-code",method = RequestMethod.GET)
public String getAllMapLayerGroupByMenuCode(@RequestParam(value = "menuCode") String menuCode) {
List<MapLayerGroupVo> list = mapServiceService.getAllMapLayerGroupByMenuCode(menuCode);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/map-layer-group/group-code",method = RequestMethod.GET)
public String getAllMapLayerGroupByLayerGroupCode(@RequestParam(value = "groupCode") String groupCode) {
List<MapServiceEntity> list = mapServiceService.getAllMapLayerGroupByLayerGroupCode(groupCode);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/map-layer-group/add",method = RequestMethod.POST)
public String addMapLayerGroup(@RequestParam(value = "layerIds") String layerIds,
@RequestParam(value = "layerGroupOrders") String layerGroupOrders,
@RequestHeader(value="Authorization") String token) {
// 获取当前用户名
String userName = getTokenUserName(token);
String[] layerIdsArr = layerIds.split(",");
String[] layerGroupOrdersArr = layerGroupOrders.split(",");
if(layerIdsArr.length<=0||layerGroupOrdersArr.length<=0){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"图层列表或顺序列表错误!",locale);
}
Integer[] layerIdsArrNum = new Integer[layerIdsArr.length];
Integer[] layerGroupOrdersAraNum = new Integer[layerGroupOrdersArr.length];
for (String numStr:layerIdsArr) {
if(!isStrNumeric(numStr)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"图层列表错误!",locale);
}
}
for (String numStr2:layerGroupOrdersArr) {
if(!isStrNumeric(numStr2)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"顺序列表错误!",locale);
}
}
for(int i=0;i<layerIdsArr.length;i++){
layerIdsArrNum[i] = Integer.valueOf(layerIdsArr[i]);
}
for(int i=0;i<layerGroupOrdersArr.length;i++){
layerGroupOrdersAraNum[i] = Integer.valueOf(layerGroupOrdersArr[i]);
}
int res = mapServiceService.createMapLayerGroup(layerIdsArrNum,layerGroupOrdersAraNum,userName);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"图层列表错误!",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/map-layer-group/delete",method = RequestMethod.DELETE)
public String deleteMapLayerGroup(@RequestParam(value = "id") Integer id, @RequestHeader(value="Authorization") String token) {
// 获取当前用户名
String userName = getTokenUserName(token);
int res = mapServiceService.dismissMapLayerGroup(id,userName);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"id 不存在",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
}

View File

@@ -0,0 +1,56 @@
package com.xkrs.microservice.controller;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.Locale;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
/**
* 系统管理测试服务
* @author tajochen
*/
@RestController
@RequestMapping(value = "/api")
public class SysManageController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@RequestMapping(value="/hello/role",method = RequestMethod.GET)
@PreAuthorize("hasAnyRole('role_administor','role_system_manager')")
public String hello() {
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"hello vip",locale);
}
@RequestMapping(value="/hello/auth",method = RequestMethod.GET)
@PreAuthorize("hasAnyAuthority('auth_system_manager','auth_general_user')")
public String world() {
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"world",locale);
}
@RequestMapping(value="/greeting",method = RequestMethod.GET)
public String greeting(@RequestParam(required=false, defaultValue="World") String name,
@RequestHeader(value="User-Agent") String userAgent) {
System.out.println("==== in greeting ====");
System.out.println(userAgent);
UserAgentAnalyzer uaa = UserAgentAnalyzer
.newBuilder()
.hideMatcherLoadStats()
.withCache(10000)
.build();
UserAgent agent = uaa.parse(userAgent);
for (String fieldName: agent.getAvailableFieldNamesSorted()) {
System.out.println(fieldName + " = " + agent.getValue(fieldName));
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,name,locale);
}
}

View File

@@ -0,0 +1,108 @@
package com.xkrs.microservice.controller;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.model.entity.SysMenuEntity;
import com.xkrs.microservice.model.qo.SysMenuQo;
import com.xkrs.microservice.model.validation.SysMenuQoInsert;
import com.xkrs.microservice.model.validation.SysMenuQoUpdate;
import com.xkrs.microservice.service.SysMenuService;
import com.xkrs.microservice.util.CopyPropertiesUtil;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Locale;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationErrorList;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
import static com.xkrs.microservice.common.tool.TokenUtil.getTokenUserName;
/**
* 系统菜单服务
* @author tajochen
*/
@RestController
@RequestMapping("/api/sys-menu")
public class SysMenuController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@Resource
private SysMenuService sysMenuService;
@RequestMapping(value="/get/all",method = RequestMethod.GET)
public String getAllSysMenu() {
Iterable<SysMenuEntity> list = sysMenuService.getAllSysMenu();
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/get/menu-code",method = RequestMethod.GET)
public String getAllSysMenuByMenuCode(@RequestParam(value = "menuCode") String menuCode) {
Iterable<SysMenuEntity> list = sysMenuService.getSysMenuByMenuCode(menuCode);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/get/menu-name",method = RequestMethod.GET)
public String getAllSysMenuByMenuName(@RequestParam(value = "menuName") String menuName) {
Iterable<SysMenuEntity> list = sysMenuService.getSysMenuByMenuName("%"+menuName+"%");
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,list,locale);
}
@RequestMapping(value="/add",method = RequestMethod.POST)
public String addSysMenu(@Validated({SysMenuQoInsert.class}) @RequestBody
SysMenuQo sysMenuQo,
BindingResult bindingResult, @RequestHeader(value="Authorization") String token) {
// 验证数据合法性
if(bindingResult.hasErrors()){
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
}
SysMenuEntity sysMenuEntity = new SysMenuEntity();
CopyPropertiesUtil.copy( sysMenuQo, sysMenuEntity);
// 获取当前用户名
String userName = getTokenUserName(token);
sysMenuEntity.setCreatedBy(userName);
sysMenuService.insertSysMenu(sysMenuEntity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/update",method = RequestMethod.POST)
public String updateSysMenu(@Validated({SysMenuQoUpdate.class}) @RequestBody
SysMenuQo sysMenuQo,
BindingResult bindingResult, @RequestHeader(value="Authorization") String token) {
// 验证数据合法性
if(bindingResult.hasErrors()){
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
}
SysMenuEntity sysMenuEntity = new SysMenuEntity();
CopyPropertiesUtil.copy( sysMenuQo, sysMenuEntity);
// 获取当前用户名
String userName = getTokenUserName(token);
sysMenuEntity.setUpdatedBy(userName);
sysMenuService.updateSysMenu(sysMenuEntity);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/delete",method = RequestMethod.DELETE)
public String deleteSysMenu(@RequestParam(value = "id") Integer id) {
int res = sysMenuService.deleteSysMenu(id);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"id 不存在!",locale);
}
if(res==2){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"存在 关联子菜单!",locale);
}
if(res==3){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"存在 关联数据文件!",locale);
}
if(res==4){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"存在 关联地图服务!",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
}

View File

@@ -0,0 +1,260 @@
package com.xkrs.microservice.controller;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import com.xkrs.microservice.common.config.RedisUtil;
import com.xkrs.microservice.common.encapsulation.PromptMessageEnum;
import com.xkrs.microservice.model.entity.SysRoleEntity;
import com.xkrs.microservice.model.qo.SysUserQo;
import com.xkrs.microservice.model.validation.SysUserQoInsert;
import com.xkrs.microservice.model.vo.SysUserVo;
import com.xkrs.microservice.service.SysRoleService;
import com.xkrs.microservice.service.SysUserService;
import com.xkrs.microservice.util.AliMsgUtil;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Locale;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationErrorList;
import static com.xkrs.microservice.common.encapsulation.OutputEncapsulation.outputEncapsulationObject;
import static com.xkrs.microservice.common.tool.TokenUtil.getTokenUserName;
import static com.xkrs.microservice.util.NumberUtil.getRandomNumber;
import static com.xkrs.microservice.util.NumberUtil.isStrNumeric;
/**
* 系统用户服务
* @author tajocehn
*/
@RestController
@RequestMapping(value = "/api/user")
public class SysUserController {
/**
* 获取区域信息
*/
Locale locale = LocaleContextHolder.getLocale();
@Resource
private SysUserService sysUserService;
@Resource
private SysRoleService sysRoleService;
@Resource
private RedisUtil redisUtil;
/**
* 登录用户Token验证
* @return
*/
@RequestMapping(value = "/logged/check",method = RequestMethod.POST)
public String loginUserTokenCheck(){
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value = "/check/duplicate", method = RequestMethod.GET)
public String checkDuplicate(@RequestParam(value="userName") String userName){
// 验证用户名是否重复
if(!sysUserService.checkUserName(userName)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String addUser(@Validated({SysUserQoInsert.class}) @RequestBody SysUserQo userQo,
BindingResult bindingResult){
// 验证数据合法性
if(bindingResult.hasErrors()){
return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
}
// 验证用户名是否重复
if(!sysUserService.checkUserName(userQo.getUserName())){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"",locale);
}
// 添加新用户
sysUserService.addUser(userQo);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
}
@RequestMapping(value="/get/all", method = RequestMethod.GET)
@PreAuthorize("hasAnyAuthority('auth_administor','auth_system_manager','auth_general_manager')")
public String getAllSysUser(){
Iterable<SysUserVo> sysUserDtoList = sysUserService.getAllSysUser();
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,sysUserDtoList,locale);
}
@RequestMapping(value="/send-msg/telephone", method = RequestMethod.POST)
public String checkTelephone(@RequestParam(value="telephone") String telephone) throws Exception {
// 最大过期时间
final long maxExpiredTime = 60*10;
// 最小重发时间
final long minReplayTime = 60*9;
if(telephone.isEmpty()){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"参数不合法!",locale);
}
SysUserVo sysUserVo = sysUserService.findByTelephone(telephone);
if(sysUserVo==null){
return outputEncapsulationObject(PromptMessageEnum.USER_NOT_EXIST,"用户不存在!",locale);
}
// 如果短信过期时间小于60秒
long expiredTime = redisUtil.getExpire("verification_"+telephone);
if(expiredTime>=minReplayTime) {
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"同一手机号1分钟内只能发送一次",locale);
}
// 调用阿里短信接口
String verificationCode = getRandomNumber(6);
com.aliyun.dysmsapi20170525.Client client = AliMsgUtil.createClient("LTAI5tMSjLfu8Xu2w6WeguFF", "hvqM5zpi72hvX4VXM71wq6AE0XYtDI");
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName("青岛星科瑞升")
.setTemplateCode("SMS_221082764")
.setTemplateParam("{\"code\":" + verificationCode + "}")
.setPhoneNumbers(sysUserVo.getTelephone());
SendSmsResponse response = client.sendSms(sendSmsRequest);
// 写入缓存过期时间10分钟
redisUtil.set("verification_"+telephone,verificationCode,maxExpiredTime);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
@RequestMapping(value="/verification/telephone", method = RequestMethod.POST)
public String verificationTelephone(@RequestParam(value="telephone") String telephone,@RequestParam(value="verificationCode") String verificationCode) throws Exception {
// 最大过期时间
final long maxExpiredTime = 60*10;
// 最小重发时间
final long minReplayTime = 60*9;
if(telephone.isEmpty()){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"参数不合法!",locale);
}
SysUserVo sysUserVo = sysUserService.findByTelephone(telephone);
if(sysUserVo==null){
return outputEncapsulationObject(PromptMessageEnum.USER_NOT_EXIST,"用户不存在!",locale);
}
// 获取验证码
Object msgCode = redisUtil.get("verification_"+telephone);
if(msgCode==null){
return outputEncapsulationObject(PromptMessageEnum.DATA_NONE,"验证码不存在!",locale);
}
// 如果验证码不正确
if(msgCode.toString().equals(verificationCode)){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"验证码不正确!",locale);
}
// 手机号验证成功
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
/**
* 软删除指定id的普通用户
* @param id
* @return
*/
@RequestMapping(value = "/general/delete", method = RequestMethod.DELETE)
@PreAuthorize("hasAnyAuthority('auth_administor','auth_system_manager','auth_general_manager')")
public String deleteCustomUser(@RequestParam(value="userId", required=false) int id){
// 验证数据合法性
int res = sysUserService.softDeleteGeneralUser(id);
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.PROCESS_FAIL,"",locale);
} else {
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
}
// @RequestMapping(value = "/update", method = RequestMethod.POST)
// @PreAuthorize("hasAnyAuthority('auth_system_manager','auth_administor')")
// public String updateUser(@Validated({SysUserQoUpdate.class}) @RequestBody SysUserQo userQo,
// BindingResult bindingResult){
// // 验证数据合法性
// if(bindingResult.hasErrors()){
// return outputEncapsulationErrorList(bindingResult.getFieldErrors(),locale);
// }
// // 修改用户
// sysUserService.updateSysUser(userQo);
// return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
// }
@RequestMapping(value = "/update/portrait", method = RequestMethod.POST)
public String updateUserPortrait(@RequestParam(value="portraitId") String portraitId,
@RequestHeader(value="Authorization") String token){
if(!isStrNumeric(portraitId)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"",locale);
}
// 获取当前用户名
String userName = getTokenUserName(token);
// 头像是否正确
int res = sysUserService.updateSysUserPortrait(userName, Integer.valueOf(portraitId));
if(res==1){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
}
@RequestMapping(value = "/update/password", method = RequestMethod.POST)
public String updateUserPassword(@RequestParam(value="oldPassword") String oldPassword,
@RequestParam(value="newPassword") String newPassword,
@RequestHeader(value="Authorization") String token){
// 获取当前用户名
String userName = getTokenUserName(token);
int res = sysUserService.updateSysUserPassword(userName,oldPassword,newPassword);
final int r1 = 1;
final int r2 = 2;
final int r3 = 3;
if(res==r1){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"未知错误",locale);
} else if(res==r2){
return outputEncapsulationObject(PromptMessageEnum.DATA_WRONG,"旧密码错误",locale);
} else if(res==r3){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"新密码不符合规则",locale);
}
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"OK",locale);
}
@RequestMapping(value = "/get/info", method = RequestMethod.GET)
public String getUserInfo(@RequestHeader(value="Authorization") String token){
// 获取当前用户名
String userName = getTokenUserName(token);
SysUserVo sysUserVo = sysUserService.getSysUserVoByUserName(userName);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,sysUserVo,locale);
}
@RequestMapping(value="/set/forbidden",method = RequestMethod.POST)
@PreAuthorize("hasAnyAuthority('auth_administor','auth_system_manager','auth_general_manager')")
public String setUserForbidden(@RequestParam(value="userName", required=true) String userName) {
String generalRole = "role_general_user";
if(sysUserService.checkUserName(userName)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"userName 错误",locale);
}
List<SysRoleEntity> list1 = sysRoleService.getSysRoleListByUserName(userName);
SysRoleEntity sysRoleEntity = list1.get(0);
if(generalRole.equals(sysRoleEntity.getRoleName())){
sysUserService.disableSysUser(userName);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
return outputEncapsulationObject(PromptMessageEnum.USER_NO_PERMISSION,"",locale);
}
@RequestMapping(value="/set/enable",method = RequestMethod.POST)
@PreAuthorize("hasAnyAuthority('auth_administor','auth_system_manager','auth_general_manager')")
public String setUserEnable(@RequestParam(value="userName", required=true) String userName) {
String generalRole = "role_general_user";
if(sysUserService.checkUserName(userName)){
return outputEncapsulationObject(PromptMessageEnum.PARAM_ILLEGAL,"userName 错误",locale);
}
List<SysRoleEntity> list1 = sysRoleService.getSysRoleListByUserName(userName);
SysRoleEntity sysRoleEntity = list1.get(0);
if(generalRole.equals(sysRoleEntity.getRoleName())){
sysUserService.enableSysUser(userName);
return outputEncapsulationObject(PromptMessageEnum.SUCCESS,"",locale);
}
return outputEncapsulationObject(PromptMessageEnum.USER_NO_PERMISSION,"",locale);
}
}

View File

@@ -0,0 +1,60 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.DataFileEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* DataFileDao
* @author tajochen
*/
public interface DataFileDao extends JpaRepository<DataFileEntity,Integer> {
/**
* 获取文件数据根据菜单代码
* @param menuCode 菜单代码
* @return
*/
List<DataFileEntity> findAllByMenuCode(String menuCode);
/**
* 获取文件数据根据菜单代码和数据类型
* @param menuCode 菜单代码
* @param dataType 数据类型
* @return
*/
List<DataFileEntity> findAllByMenuCodeAndDataType(String menuCode,String dataType);
/**
* 获取文件数据根据菜单代码和数据类型和发布标记
* @param menuCode 菜单代码
* @param dataType 数据类型
* @param publishFlag 发布标记
* @return
*/
List<DataFileEntity> findAllByMenuCodeAndDataTypeAndPublishFlag(String menuCode,String dataType,Integer publishFlag);
/**
* 获取文件数据根据菜单代码
* @param menuCode 菜单代码
* @param publishFlag 发布标记
* @returnh
*/
List<DataFileEntity> findAllByMenuCodeAndPublishFlag(String menuCode,Integer publishFlag);
/**
* 查找数据根据数据类型
* @param dataType 数据类型
* @return
*/
List<DataFileEntity> findAllByDataType(String dataType);
/**
* 获取文件数据根据根据文件代码
* @param dataFileCode 数据文件代码
* @return
*/
DataFileEntity findByDataFileCode(String dataFileCode);
}

View File

@@ -0,0 +1,59 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* MapServiceDao
* @author tajochen
*/
public interface MapServiceDao extends JpaRepository<MapServiceEntity,Integer> {
/**
* 根据菜单代码查找
* @param menuCode 菜单代码
* @return
*/
List<MapServiceEntity> findAllByMenuCode(String menuCode);
/**
* 根据图层名称查找
* @param layerName 图层名称
* @return
*/
List<MapServiceEntity> findAllByLayerName(String layerName);
/**
* 根据文件代码查找服务
* @param dataFileCode 文件代码
* @return
*/
List<MapServiceEntity> findAllByDataFileCode(String dataFileCode);
/**
* 根据图层组查找服务
* @param layerGroupCode 图层组代码
* @return
*/
List<MapServiceEntity> findAllByLayerGroupCode(String layerGroupCode);
/**
* 根据产品类型查找
* @param productType 产品类型
* @return
*/
List<MapServiceEntity> findAllByProductType(String productType);
/**
* 根据产品类型和行政区划代码和产品类型
* @param productType 产品类型
* @param admCode 行政区划代码
* @return
*/
List<MapServiceEntity> findAllByProductTypeAndAdmCode(String productType, Integer admCode);
}

View File

@@ -0,0 +1,27 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.SysAuthorityEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* SysAuthorityDao
* @author tajochen
*/
public interface SysAuthorityDao extends JpaRepository<SysAuthorityEntity,Integer> {
/**
* 查询权限实体列表根据用户名 Object[]
* @param userName 用户名
* @return 用户实体
*/
@Query(value = "SELECT a.id, a.authority_name, a.authority_name_zh, a.authority_desc ,a.authority_name_en " +
"FROM sys_authority a,rel_role_authority ra,sys_role r " +
"WHERE r.id = ra.role_id AND ra.authority_id = a.id AND r.id " +
"IN (SELECT r.id FROM sys_user u,sys_role r,rel_user_role ur " +
" WHERE u.user_name = :userName AND u.id = ur.user_id AND ur.role_id = r.id)", nativeQuery = true)
List<SysAuthorityEntity> selectByUserName(@Param("userName") String userName);
}

View File

@@ -0,0 +1,35 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.SysMenuEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* SysMenuDao
* @author tajochen
*/
public interface SysMenuDao extends JpaRepository<SysMenuEntity,Integer> {
/**
* 获取系统菜单根据菜单代码
* @param menuCode 菜单代码
* @return
*/
List<SysMenuEntity> findAllByMenuCode(String menuCode);
/**
* 获取系统菜单根据菜单名称模糊搜索
* @param menuName 菜单名称
* @return
*/
List<SysMenuEntity> findAllByMenuNameLike(String menuName);
/**
* 获取系统菜单列表根据父级菜单代码
* @param parentCode 父级菜单代码
* @return
*/
List<SysMenuEntity> findAllByParentCode(String parentCode);
}

View File

@@ -0,0 +1,61 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.SysRoleEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* SysRoleDao
* @author tajochen
*/
public interface SysRoleDao extends JpaRepository<SysRoleEntity,Integer> {
/**
* 查询用户角色列表根据用户id
* @param id 编号
* @return
*/
@Query(value = "SELECT sys_role.id,sys_role.role_name,sys_role.role_name_zh,sys_role.role_name_en,sys_role.role_desc " +
"FROM sys_role,rel_user_role " +
"WHERE sys_role.id = rel_user_role.role_id " +
"AND rel_user_role.user_id = :id ", nativeQuery = true)
List<SysRoleEntity> selectByUserId(@Param("id") Integer id);
/**
* 查询用户角色列表根据用户名
* @param userName 用户名
* @return
*/
@Query(value = "SELECT sys_role.id,sys_role.role_name,sys_role.role_name_zh,sys_role.role_name_en,sys_role.role_desc " +
"FROM sys_role,rel_user_role,sys_user "+
"WHERE sys_role.ID = rel_user_role.role_id " +
"AND rel_user_role.user_id = sys_user.id " +
"AND rel_user_role.user_id = sys_user.id " +
"AND sys_user.user_name = :userName ", nativeQuery = true)
List<SysRoleEntity> selectByUserName(@Param("userName") String userName);
// /**
// * 根据用户名修改用户角色
// */
// @Modifying
// @Query(value = "UPDATE sys_user SET last_entry_time = now(), last_entry_ip = :ipAddress " +
// "WHERE user_name = :userName ;", nativeQuery = true)
// int updateUserRoleByUserName(@Param("userName") String userName);
/**
* 添加用户角色根据用户名和角色名
* @param userName 用户名
* @param roleName 角色名
* @return
*/
@Modifying
@Query(value = "INSERT INTO rel_user_role (id,role_id, user_id) " +
"SELECT nextval('rel_user_role_seq'),sys_role.ID,sys_user.ID FROM sys_role,sys_user " +
"WHERE sys_role.role_name = :roleName AND sys_user.user_name = :userName ", nativeQuery = true)
int insertRelUserRole(@Param("userName") String userName,@Param("roleName") String roleName);
}

View File

@@ -0,0 +1,111 @@
package com.xkrs.microservice.dao;
import com.xkrs.microservice.model.entity.SysUserEntity;
import com.xkrs.microservice.model.vo.SysUserVo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
/**
* SysUserDao
* @author tajochen
*/
public interface SysUserDao extends JpaRepository<SysUserEntity,Integer> {
/**
* 获取指定userName
* @param userName 用户名
* @return
*/
SysUserEntity findByUserName(String userName);
/**
* 获取指定手机号的用户
* @param telephone 手机号
* @return
*/
@Query(value = "select new com.xkrs.microservice.model.vo.SysUserVo (u.id, u.userName, u.userCode, u.nickName,\n" +
"u.realName, u.idCard, u.address, u.admCode,u.birthday,u.email,u.sex,u.telephone ,u.signature,\n" +
"u.statusCode,u.portraitId,u.activeFlag,u.lastEntryIp,u.lastEntryTime,u.memo,u.createdTime,\n" +
"r.roleName,r.roleNameZh) from SysUserEntity u ,SysRoleEntity r," +
"RelUserRoleEntity u_r " +
"WHERE u.deleteFlag = 0 AND u.activeFlag = 0 AND r.id = u_r.roleId AND u.id = u_r.userId " +
"AND u.telephone = :telephone")
SysUserVo findByTelephone(String telephone);
/**
* 获取指定用户Vo未软删除用户
* @param userName 用户名
* @return
*/
@Query(value = "select new com.xkrs.microservice.model.vo.SysUserVo (u.id, u.userName, u.userCode, u.nickName,\n" +
"u.realName, u.idCard, u.address, u.admCode,u.birthday,u.email,u.sex,u.telephone ,u.signature,\n" +
"u.statusCode,u.portraitId,u.activeFlag,u.lastEntryIp,u.lastEntryTime,u.memo,u.createdTime,\n" +
"r.roleName,r.roleNameZh) from SysUserEntity u ,SysRoleEntity r," +
"RelUserRoleEntity u_r " +
"WHERE u.deleteFlag = 0 AND u.activeFlag = 0 AND r.id = u_r.roleId AND u.id = u_r.userId " +
"AND u.userName = :userName")
SysUserVo selectSysUserByUserName(@Param("userName") String userName);
/**
* 检查系统用户名是否存在
* @param userName 用户名
* @return
*/
@Query(value = "SELECT COUNT(*) FROM sys_user WHERE user_name = :userName", nativeQuery = true)
int checkUserName(@Param("userName") String userName);
/**
* 查找用户实体根据用户名
* @param userName 用户名
* @return
*/
@Query(value = "SELECT * FROM sys_user WHERE user_name = :userName", nativeQuery = true)
SysUserEntity selectByUserName(@Param("userName") String userName);
/**
* 更新用户登录信息
* @param userName 用户名
* @param ipAddress ip地址
* @return
*/
@Modifying
@Query(value = "UPDATE sys_user SET last_entry_time = now(), last_entry_ip = :ipAddress " +
"WHERE user_name = :userName ;", nativeQuery = true)
int updateSysUserLogin(@Param("userName") String userName,@Param("ipAddress") String ipAddress);
/**
* 软删除系统用户根据用户名
* @param userName 用户名
* @return
*/
@Modifying
@Query(value = "UPDATE sys_user SET delete_flag = 1 " +
"WHERE user_name = :userName ;", nativeQuery = true)
int softDeleteSysUserByUserName(@Param("userName") String userName);
/**
* 软删除系统用户根据id
* @param id 编号
* @return
*/
@Modifying
@Query(value = "UPDATE sys_user SET delete_flag = 1 " +
"WHERE id = :id ;", nativeQuery = true)
int softDeleteGeneralUserById(@Param("id") Integer id);
/**
* 获取所有系统用户Vo未软删除用户
* @return
*/
@Query(value = "select new com.xkrs.microservice.model.vo.SysUserVo (u.id, u.userName, u.userCode, u.nickName," +
"u.realName, u.idCard, u.address, u.admCode,u.birthday,u.email,u.sex,u.telephone ,u.signature," +
"u.statusCode,u.portraitId,u.activeFlag,u.lastEntryIp,u.lastEntryTime,u.memo,u.createdTime," +
"r.roleName,r.roleNameZh) from SysUserEntity u ,SysRoleEntity r,RelUserRoleEntity u_r " +
"WHERE u.deleteFlag = 0 AND r.id = u_r.roleId AND u.id = u_r.userId")
List<SysUserVo> selectAllSysUser();
}

View File

@@ -0,0 +1,215 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* DataFileEntity 表实体类
* @author tajochen
*/
@Entity
@Table(name="data_file")
public class DataFileEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "data_file_seq_gen")
@SequenceGenerator(name = "data_file_seq_gen", sequenceName = "data_file_seq",allocationSize = 1)
private Integer id;
@Column( length = 128, nullable = false, columnDefinition = "varchar(128)")
private String dataFileCode;
@Column( length = 128, nullable = false, columnDefinition = "varchar(128)")
private String dataType;
@Column( length = 128,columnDefinition = "varchar(128)")
private String menuCode;
@Column( length = 128, nullable = false, columnDefinition = "varchar(128)")
private String fileName;
@Column( length = 511, columnDefinition = "varchar(511)")
private String leftFilePath;
@Column( length = 511, columnDefinition = "varchar(511)")
private String rightFilePath;
@Column( length = 128, columnDefinition = "varchar(128)")
private String leftFileMd5;
@Column( length = 128, columnDefinition = "varchar(128)")
private String rightFileMd5;
@Column( length = 128, columnDefinition = "varchar(128)")
private Long leftFileSize;
@Column( length = 128, columnDefinition = "varchar(128)")
private Long rightFileSize;
private Integer publishFlag;
/**
* 运行状态0-未运行1-运行中2-已完成)
*/
private Integer runFlag;
@Column( length = 128, columnDefinition = "varchar(128)")
private String remarks;
@Column( length = 32,nullable = false, columnDefinition = "varchar(32)")
private String createdBy;
private LocalDateTime createdTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDataFileCode() {
return dataFileCode;
}
public void setDataFileCode(String dataFileCode) {
this.dataFileCode = dataFileCode;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getLeftFilePath() {
return leftFilePath;
}
public void setLeftFilePath(String leftFilePath) {
this.leftFilePath = leftFilePath;
}
public String getRightFilePath() {
return rightFilePath;
}
public void setRightFilePath(String rightFilePath) {
this.rightFilePath = rightFilePath;
}
public String getLeftFileMd5() {
return leftFileMd5;
}
public void setLeftFileMd5(String leftFileMd5) {
this.leftFileMd5 = leftFileMd5;
}
public String getRightFileMd5() {
return rightFileMd5;
}
public void setRightFileMd5(String rightFileMd5) {
this.rightFileMd5 = rightFileMd5;
}
public Long getLeftFileSize() {
return leftFileSize;
}
public void setLeftFileSize(Long leftFileSize) {
this.leftFileSize = leftFileSize;
}
public Long getRightFileSize() {
return rightFileSize;
}
public void setRightFileSize(Long rightFileSize) {
this.rightFileSize = rightFileSize;
}
public Integer getPublishFlag() {
return publishFlag;
}
public void setPublishFlag(Integer publishFlag) {
this.publishFlag = publishFlag;
}
public Integer getRunFlag() {
return runFlag;
}
public void setRunFlag(Integer runFlag) {
this.runFlag = runFlag;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "DataFileEntity{" +
"id=" + id +
", dataFileCode='" + dataFileCode + '\'' +
", dataType='" + dataType + '\'' +
", menuCode='" + menuCode + '\'' +
", fileName='" + fileName + '\'' +
", leftFilePath='" + leftFilePath + '\'' +
", rightFilePath='" + rightFilePath + '\'' +
", leftFileMd5='" + leftFileMd5 + '\'' +
", rightFileMd5='" + rightFileMd5 + '\'' +
", rightFileSize=" + rightFileSize +
", publishFlag=" + publishFlag +
", remarks='" + remarks + '\'' +
", createdBy='" + createdBy + '\'' +
", createdTime=" + createdTime +
'}';
}
}

View File

@@ -0,0 +1,296 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.time.LocalDateTime;
/**
* MapServiceEntity 表实体类
* @author tajochen
*/
@Entity
@Table(name="map_service")
public class MapServiceEntity {
private static final long serialVersionUID = 4359709211352400087L;
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "map_service_seq_gen")
@SequenceGenerator(name = "map_service_seq_gen", sequenceName = "map_service_seq",allocationSize = 1)
private Integer id;
@Column( length = 128,nullable = false, columnDefinition = "varchar(128)")
private String dataFileCode;
@Column( length = 64,nullable = false, columnDefinition = "varchar(64)")
private String menuCode;
@Column(length = 255,nullable = false, columnDefinition = "varchar(255)")
private String layerName;
@Column(length = 255, columnDefinition = "varchar(255)")
private String layerShowName;
@Column(length = 255, columnDefinition = "varchar(255)")
private String layerGroupCode;
private Integer layerGroupOrder;
@Column( length = 64,nullable = false, columnDefinition = "varchar(64)")
private String serviceType;
@Column( length = 64, columnDefinition = "varchar(64)")
private String dataType;
@Column(length = 64, columnDefinition = "varchar(64)")
private String productType;
private LocalDateTime productStartTime;
private LocalDateTime productEndTime;
@Column(length = 64,nullable = false, columnDefinition = "varchar(64)")
private String spatialReference;
@Column(length = 128, columnDefinition = "varchar(128)")
private String styleName;
@Column(length = 128, columnDefinition = "varchar(128)")
private String dataStorage;
@Column(length = 128, columnDefinition = "varchar(128)")
private String workSpace;
private Integer admCode;
@Column( length = 64, columnDefinition = "varchar(64)")
private String admName;
@Column(length = 128, columnDefinition = "varchar(128)")
private String remarks;
@Column(length = 32, columnDefinition = "varchar(32)")
private String createdBy;
private LocalDateTime createdTime;
@Column( length = 32, columnDefinition = "varchar(32)")
private String updatedBy;
private LocalDateTime updatedTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDataFileCode() {
return dataFileCode;
}
public void setDataFileCode(String dataFileCode) {
this.dataFileCode = dataFileCode;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getLayerName() {
return layerName;
}
public void setLayerName(String layerName) {
this.layerName = layerName;
}
public String getLayerShowName() {
return layerShowName;
}
public void setLayerShowName(String layerShowName) {
this.layerShowName = layerShowName;
}
public String getLayerGroupCode() {
return layerGroupCode;
}
public void setLayerGroupCode(String layerGroupCode) {
this.layerGroupCode = layerGroupCode;
}
public Integer getLayerGroupOrder() {
return layerGroupOrder;
}
public void setLayerGroupOrder(Integer layerGroupOrder) {
this.layerGroupOrder = layerGroupOrder;
}
public String getServiceType() {
return serviceType;
}
public void setServiceType(String serviceType) {
this.serviceType = serviceType;
}
public String getProductType() {
return productType;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public LocalDateTime getProductStartTime() {
return productStartTime;
}
public void setProductStartTime(LocalDateTime productStartTime) {
this.productStartTime = productStartTime;
}
public LocalDateTime getProductEndTime() {
return productEndTime;
}
public void setProductEndTime(LocalDateTime productEndTime) {
this.productEndTime = productEndTime;
}
public String getSpatialReference() {
return spatialReference;
}
public void setSpatialReference(String spatialReference) {
this.spatialReference = spatialReference;
}
public String getStyleName() {
return styleName;
}
public void setStyleName(String styleName) {
this.styleName = styleName;
}
public String getDataStorage() {
return dataStorage;
}
public void setDataStorage(String dataStorage) {
this.dataStorage = dataStorage;
}
public String getWorkSpace() {
return workSpace;
}
public void setWorkSpace(String workSpace) {
this.workSpace = workSpace;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public String getAdmName() {
return admName;
}
public void setAdmName(String admName) {
this.admName = admName;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
public LocalDateTime getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(LocalDateTime updatedTime) {
this.updatedTime = updatedTime;
}
@Override
public String toString() {
return "MapServiceEntity{" +
"id=" + id +
", dataFileCode='" + dataFileCode + '\'' +
", menuCode='" + menuCode + '\'' +
", layerName='" + layerName + '\'' +
", layerShowName='" + layerShowName + '\'' +
", layerGroupCode='" + layerGroupCode + '\'' +
", layerGroupOrder=" + layerGroupOrder +
", serviceType='" + serviceType + '\'' +
", dataType='" + dataType + '\'' +
", productType='" + productType + '\'' +
", productStartTime=" + productStartTime +
", productEndTime=" + productEndTime +
", spatialReference='" + spatialReference + '\'' +
", styleName='" + styleName + '\'' +
", dataStorage='" + dataStorage + '\'' +
", workSpace='" + workSpace + '\'' +
", admCode=" + admCode +
", admName='" + admName + '\'' +
", remarks='" + remarks + '\'' +
", createdBy='" + createdBy + '\'' +
", createdTime=" + createdTime +
", updatedBy='" + updatedBy + '\'' +
", updatedTime=" + updatedTime +
'}';
}
}

View File

@@ -0,0 +1,60 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
/**
* RelRoleAuthority 表实体类
* @author tajochen
*/
@Entity
@Table(name="rel_role_authority")
public class RelRoleAuthorityEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "rel_role_authority_seq_gen")
@SequenceGenerator(name = "rel_role_authority_seq_gen", sequenceName = "rel_role_authority_seq",allocationSize = 1)
private Integer id;
@Column(nullable = false)
private Integer roleId;
@Column(nullable = false)
private Integer authorityId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public Integer getAuthorityId() {
return authorityId;
}
public void setAuthorityId(Integer authorityId) {
this.authorityId = authorityId;
}
@Override
public String toString() {
return "RelRoleAuthorityEntity{" +
"id=" + id +
", roleId=" + roleId +
", authorityId=" + authorityId +
'}';
}
}

View File

@@ -0,0 +1,60 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
/**
* RelUserRole 表实体类
* @author tajochen
*/
@Entity
@Table(name="rel_user_role")
public class RelUserRoleEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "rel_user_role_seq_gen")
@SequenceGenerator(name = "rel_user_role_seq_gen", sequenceName = "rel_user_role_seq",allocationSize = 1)
private Integer id;
@Column(nullable = false)
private Long userId;
@Column(nullable = false)
private Integer roleId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
@Override
public String toString() {
return "RelUserRoleEntity{" +
"id=" + id +
", userId=" + userId +
", roleId=" + roleId +
'}';
}
}

View File

@@ -0,0 +1,84 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
/**
* SysAuthority 表实体类
* @author tajochen
*/
@Entity
@Table(name="sys_authority")
public class SysAuthorityEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sys_authority_seq_gen")
@SequenceGenerator(name = "sys_authority_seq_gen", sequenceName = "sys_authority_seq",allocationSize = 1)
private Integer id;
@Column(length = 64, nullable = false, unique = true,columnDefinition = "varchar(64)")
private String authorityName;
@Column(length = 32, columnDefinition = "varchar(32)")
private String authorityNameZh;
@Column(length = 64, columnDefinition = "varchar(64)")
private String authorityNameEn;
@Column(length = 128, columnDefinition = "varchar(128)")
private String authorityDesc;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAuthorityName() {
return authorityName;
}
public void setAuthorityName(String authorityName) {
this.authorityName = authorityName == null ? null : authorityName.trim();
}
public String getAuthorityNameZh() {
return authorityNameZh;
}
public void setAuthorityNameZh(String authorityNameZh) {
this.authorityNameZh = authorityNameZh == null ? null : authorityNameZh.trim();
}
public String getAuthorityNameEn() {
return authorityNameEn;
}
public void setAuthorityNameEn(String authorityNameEn) {
this.authorityNameEn = authorityNameEn;
}
public String getAuthorityDesc() {
return authorityDesc;
}
public void setAuthorityDesc(String authorityDesc) {
this.authorityDesc = authorityDesc == null ? null : authorityDesc.trim();
}
@Override
public String toString() {
return "SysAuthorityEntity{" +
"id=" + id +
", authorityName='" + authorityName + '\'' +
", authorityNameZh='" + authorityNameZh + '\'' +
", authorityNameEn='" + authorityNameEn + '\'' +
", authorityDesc='" + authorityDesc + '\'' +
'}';
}
}

View File

@@ -0,0 +1,187 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* SysAuthority 表实体类
* @author tajochen
*/
@Entity
@Table(name="sys_menu")
public class SysMenuEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sys_menu_seq_gen")
@SequenceGenerator(name = "sys_menu_seq_gen", sequenceName = "sys_menu_seq",allocationSize = 1)
private Integer id;
@Column(length = 64, nullable = false,columnDefinition = "varchar(64)")
private String menuName;
@Column(length = 64, nullable = false, unique = true,columnDefinition = "varchar(64)")
private String menuCode;
private Integer menuType;
@Column( length = 64, columnDefinition = "varchar(64)")
private String parentCode;
private Integer sortOrder;
private Integer visibleFlag;
@Column( length = 255, columnDefinition = "varchar(255)")
private String icon;
@Column( length = 255, columnDefinition = "varchar(255)")
private String componentUrl;
private Integer revision;
@Column( length = 32, columnDefinition = "varchar(32)")
private String createdBy;
private LocalDateTime createdTime;
@Column( length = 32, columnDefinition = "varchar(32)")
private String updatedBy;
private LocalDateTime updatedTime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public Integer getMenuType() {
return menuType;
}
public void setMenuType(Integer menuType) {
this.menuType = menuType;
}
public String getParentCode() {
return parentCode;
}
public void setParentCode(String parentCode) {
this.parentCode = parentCode;
}
public Integer getSortOrder() {
return sortOrder;
}
public void setSortOrder(Integer sortOrder) {
this.sortOrder = sortOrder;
}
public Integer getVisibleFlag() {
return visibleFlag;
}
public void setVisibleFlag(Integer visibleFlag) {
this.visibleFlag = visibleFlag;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getComponentUrl() {
return componentUrl;
}
public void setComponentUrl(String componentUrl) {
this.componentUrl = componentUrl;
}
public Integer getRevision() {
return revision;
}
public void setRevision(Integer revision) {
this.revision = revision;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
public LocalDateTime getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(LocalDateTime updatedTime) {
this.updatedTime = updatedTime;
}
@Override
public String toString() {
return "SysMenuEntity{" +
"id=" + id +
", menuName='" + menuName + '\'' +
", menuCode='" + menuCode + '\'' +
", menuType=" + menuType +
", parentCode='" + parentCode + '\'' +
", sortOrder=" + sortOrder +
", visibleFlag=" + visibleFlag +
", icon='" + icon + '\'' +
", componentUrl='" + componentUrl + '\'' +
", revision=" + revision +
", createdBy='" + createdBy + '\'' +
", createdTime=" + createdTime +
", updatedBy='" + updatedBy + '\'' +
", updatedTime=" + updatedTime +
'}';
}
}

View File

@@ -0,0 +1,84 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
/**
* SysRole 表实体类
* @author tajochen
*/
@Entity
@Table(name="sys_role")
public class SysRoleEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sys_role_seq_gen")
@SequenceGenerator(name = "sys_role_seq_gen", sequenceName = "sys_role_seq",allocationSize = 1)
private Integer id;
@Column(length = 32, nullable = false, unique = true,columnDefinition = "varchar(32)")
private String roleName;
@Column(length = 32, columnDefinition = "varchar(32)")
private String roleNameZh;
@Column(length = 64, columnDefinition = "varchar(64)")
private String roleNameEn;
@Column(length = 64, columnDefinition = "varchar(64)")
private String roleDesc;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName == null ? null : roleName.trim();
}
public String getRoleDesc() {
return roleDesc;
}
public void setRoleDesc(String roleDesc) {
this.roleDesc = roleDesc == null ? null : roleDesc.trim();
}
public String getRoleNameZh() {
return roleNameZh;
}
public void setRoleNameZh(String roleNameZh) {
this.roleNameZh = roleNameZh == null ? null : roleNameZh.trim();
}
public String getRoleNameEn() {
return roleNameEn;
}
public void setRoleNameEn(String roleNameEn) {
this.roleNameEn = roleNameEn;
}
@Override
public String toString() {
return "SysRoleEntity{" +
"id=" + id +
", roleName='" + roleName + '\'' +
", roleNameZh='" + roleNameZh + '\'' +
", roleNameEn='" + roleNameEn + '\'' +
", roleDesc='" + roleDesc + '\'' +
'}';
}
}

View File

@@ -0,0 +1,299 @@
package com.xkrs.microservice.model.entity;
import javax.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* SysUser 表实体类
* @author tajochen
*/
@Entity
@Table(name="sys_user")
public class SysUserEntity implements Serializable {
/**
* 指定主键,建立自增序列,主键值取自序列
*/
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sys_user_seq_gen")
@SequenceGenerator(name = "sys_user_seq_gen", sequenceName = "sys_user_seq",allocationSize = 1)
private Integer id;
@Column(length = 32, nullable = false, unique = true, columnDefinition = "varchar(32)")
private String userName;
@Column(length = 32,columnDefinition = "varchar(32)")
private String userCode;
@Column(length = 32, columnDefinition = "varchar(32)")
private String nickName;
@Column(length = 32, columnDefinition = "varchar(32)")
private String realName;
@Column(length = 64, columnDefinition = "varchar(64)")
private String idCard;
@Column(length = 64,columnDefinition = "varchar(64)")
private String address;
private Integer admCode;
private LocalDate birthday;
@Column(length = 32, columnDefinition = "varchar(32)")
private String email;
@Column(length = 64, nullable = false, columnDefinition = "varchar(64)")
private String password;
@Column(length = 32, nullable = false, columnDefinition = "varchar(32)")
private String salt;
@Column(columnDefinition = "smallint")
private Integer sex;
@Column(length = 16, columnDefinition = "varchar(16)")
private String telephone;
@Column(length = 128,columnDefinition = "varchar(128)")
private String signature;
@Column(nullable = false,columnDefinition = "smallint")
private Integer statusCode;
private Integer portraitId;
@Column(nullable = false,columnDefinition = "smallint")
private Integer activeFlag;
@Column(length = 64,columnDefinition = "varchar(64)")
private String lastEntryIp;
private LocalDateTime lastEntryTime;
@Column(length = 128,columnDefinition = "varchar(128)")
private String memo;
@Column(nullable = false)
private LocalDateTime createdTime;
@Column(nullable = false,columnDefinition = "smallint")
private Integer deleteFlag;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public LocalDate getBirthday() {
return birthday;
}
public void setBirthday(LocalDate birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSalt() {
return salt;
}
public void setSalt(String salt) {
this.salt = salt;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public Integer getStatusCode() {
return statusCode;
}
public void setStatusCode(Integer statusCode) {
this.statusCode = statusCode;
}
public Integer getPortraitId() {
return portraitId;
}
public void setPortraitId(Integer portraitId) {
this.portraitId = portraitId;
}
public Integer getActiveFlag() {
return activeFlag;
}
public void setActiveFlag(Integer activeFlag) {
this.activeFlag = activeFlag;
}
public String getLastEntryIp() {
return lastEntryIp;
}
public void setLastEntryIp(String lastEntryIp) {
this.lastEntryIp = lastEntryIp;
}
public LocalDateTime getLastEntryTime() {
return lastEntryTime;
}
public void setLastEntryTime(LocalDateTime lastEntryTime) {
this.lastEntryTime = lastEntryTime;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
@Override
public String toString() {
return "SysUserEntity{" +
"id=" + id +
", userName='" + userName + '\'' +
", userCode='" + userCode + '\'' +
", nickName='" + nickName + '\'' +
", realName='" + realName + '\'' +
", idCard='" + idCard + '\'' +
", address='" + address + '\'' +
", admCode=" + admCode +
", birthday=" + birthday +
", email='" + email + '\'' +
", password='" + password + '\'' +
", salt='" + salt + '\'' +
", sex=" + sex +
", telephone='" + telephone + '\'' +
", signature='" + signature + '\'' +
", statusCode=" + statusCode +
", portraitId=" + portraitId +
", activeFlag=" + activeFlag +
", lastEntryIp='" + lastEntryIp + '\'' +
", lastEntryTime=" + lastEntryTime +
", memo='" + memo + '\'' +
", createdTime=" + createdTime +
", deleteFlag=" + deleteFlag +
'}';
}
}

View File

@@ -0,0 +1,152 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.DataFileQoInsert;
import com.xkrs.microservice.model.validation.DataFileQoUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* DataFileQo
* @author tajochen
*/
public class DataFileQo {
private Integer id;
@Size(max = 128, message = "{DataFile.dataFileCode.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String dataFileCode;
@Size(max = 128, message = "{DataFile.menuCode.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String menuCode;
@Size(max = 128, message = "{DataFile.dataType.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String dataType;
@Size(max = 128, message = "{DataFile.fileName.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String fileName;
@Size(max = 128, message = "{DataFile.filePath.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String leftFilePath;
@Size(max = 128, message = "{DataFile.filePath.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String rightFilePath;
private Long fileSize;
private String maxX;
private String maxY;
private String minX;
private String minY;
@Size(max = 128, message = "{DataFile.remarks.length.illegal}",groups = {DataFileQoInsert.class, DataFileQoUpdate.class})
private String remarks;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDataFileCode() {
return dataFileCode;
}
public void setDataFileCode(String dataFileCode) {
this.dataFileCode = dataFileCode;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getLeftFilePath() {
return leftFilePath;
}
public void setLeftFilePath(String leftFilePath) {
this.leftFilePath = leftFilePath;
}
public String getRightFilePath() {
return rightFilePath;
}
public void setRightFilePath(String rightFilePath) {
this.rightFilePath = rightFilePath;
}
public Long getFileSize() {
return fileSize;
}
public void setFileSize(Long fileSize) {
this.fileSize = fileSize;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getMaxX() {
return maxX;
}
public void setMaxX(String maxX) {
this.maxX = maxX;
}
public String getMaxY() {
return maxY;
}
public void setMaxY(String maxY) {
this.maxY = maxY;
}
public String getMinX() {
return minX;
}
public void setMinX(String minX) {
this.minX = minX;
}
public String getMinY() {
return minY;
}
public void setMinY(String minY) {
this.minY = minY;
}
}

View File

@@ -0,0 +1,231 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.MapServiceQoInsert;
import com.xkrs.microservice.model.validation.MapServiceUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* MapServiceQo
* @author tajochen
*/
public class MapServiceQo {
@NotNull(message = "{MapService.id.null}",groups={MapServiceUpdate.class})
private Integer id;
@NotBlank(message = "{MapService.dataFileCode.null}",groups = {MapServiceQoInsert.class})
@Size(max = 128, message = "{MapService.dataFileCode.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String dataFileCode;
@NotBlank(message = "{MapService.menuCode.null}",groups = {MapServiceQoInsert.class})
@Size(max = 64, message = "{MapService.menuCode.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String menuCode;
@NotBlank(message = "{MapService.layerName.null}",groups = {MapServiceQoInsert.class})
@Size(max = 128, message = "{MapService.layerName.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String layerName;
@NotBlank(message = "{MapService.layerGroupCode.null}",groups = {MapServiceQoInsert.class})
@Size(max = 128, message = "{MapService.layerGroupCode.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String layerGroupCode;
private Integer layerGroupOrder;
@NotBlank(message = "{MapService.layerShowName.null}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
@Size(max = 128, message = "{MapService.layerShowName.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String layerShowName;
@NotBlank(message = "{MapService.serviceType.null}",groups = {MapServiceQoInsert.class})
@Size(max = 64, message = "{MapService.serviceType.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String serviceType;
@NotBlank(message = "{MapService.dataType.null}",groups = {MapServiceQoInsert.class})
@Size(max = 64, message = "{MapService.dataType.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String dataType;
@Size(max = 64, message = "{MapService.productType.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String productType;
private Long productStartTimeTs;
private Long productEndTimeTs;
@NotBlank(message = "{MapService.spatialReference.null}",groups = {MapServiceQoInsert.class})
@Size(max = 64, message = "{MapService.spatialReference.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String spatialReference;
@Size(max = 128, message = "{MapService.styleName.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String styleName;
@Size(max = 128, message = "{MapService.dataStorage.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String dataStorage;
@NotBlank(message = "{MapService.workSpace.null}",groups = {MapServiceQoInsert.class})
@Size(max = 128, message = "{MapService.workSpace.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String workSpace;
@NotNull(message = "{MapService.admCode.null}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private Integer admCode;
@NotBlank(message = "{MapService.admName.null}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
@Size(max = 64, message = "{MapService.admName.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String admName;
@Size(max = 128, message = "{MapService.remarks.length.illegal}",groups = {MapServiceQoInsert.class, MapServiceUpdate.class})
private String remarks;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDataFileCode() {
return dataFileCode;
}
public void setDataFileCode(String dataFileCode) {
this.dataFileCode = dataFileCode;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getLayerName() {
return layerName;
}
public void setLayerName(String layerName) {
this.layerName = layerName;
}
public String getLayerShowName() {
return layerShowName;
}
public void setLayerShowName(String layerShowName) {
this.layerShowName = layerShowName;
}
public String getLayerGroupCode() {
return layerGroupCode;
}
public void setLayerGroupCode(String layerGroupCode) {
this.layerGroupCode = layerGroupCode;
}
public Integer getLayerGroupOrder() {
return layerGroupOrder;
}
public void setLayerGroupOrder(Integer layerGroupOrder) {
this.layerGroupOrder = layerGroupOrder;
}
public String getServiceType() {
return serviceType;
}
public void setServiceType(String serviceType) {
this.serviceType = serviceType;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public Long getProductStartTimeTs() {
return productStartTimeTs;
}
public void setProductStartTimeTs(Long productStartTimeTs) {
this.productStartTimeTs = productStartTimeTs;
}
public Long getProductEndTimeTs() {
return productEndTimeTs;
}
public void setProductEndTimeTs(Long productEndTimeTs) {
this.productEndTimeTs = productEndTimeTs;
}
public String getSpatialReference() {
return spatialReference;
}
public void setSpatialReference(String spatialReference) {
this.spatialReference = spatialReference;
}
public String getStyleName() {
return styleName;
}
public void setStyleName(String styleName) {
this.styleName = styleName;
}
public String getDataStorage() {
return dataStorage;
}
public void setDataStorage(String dataStorage) {
this.dataStorage = dataStorage;
}
public String getWorkSpace() {
return workSpace;
}
public void setWorkSpace(String workSpace) {
this.workSpace = workSpace;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public String getAdmName() {
return admName;
}
public void setAdmName(String admName) {
this.admName = admName;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
}

View File

@@ -0,0 +1,130 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.StatisticalDataIndependentQoInsert;
import com.xkrs.microservice.model.validation.StatisticalDataIndependentQoUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* StatisticalDataIndependentQo
* @author tajochen
*/
public class StatisticalDataIndependentQo implements Serializable {
@NotNull(message = "{StatisticalDataIndependent.id.null}",groups={StatisticalDataIndependentQoUpdate.class})
private Integer id;
@NotBlank(message = "{StatisticalDataIndependent.menuCode.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 128, message = "{StatisticalDataIndependent.menuCode.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String menuCode;
@NotBlank(message = "{StatisticalDataIndependent.classifyName.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 128, message = "{StatisticalDataIndependent.classifyName.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String statisticsName;
@NotBlank(message = "{StatisticalDataIndependent.classifyCode.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 128, message = "{StatisticalDataIndependent.classifyCode.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String statisticsCode;
private Long statisticsTimeTs;
private Double statisticsValue;
@NotBlank(message = "{StatisticalDataIndependent.statisticsValueArr.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 4095, message = "{StatisticalDataIndependent.statisticsValueArr.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String statisticsValueArr;
@NotBlank(message = "{StatisticalDataIndependent.admName.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 128, message = "{StatisticalDataIndependent.admName.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String admName;
@NotBlank(message = "{StatisticalDataIndependent.admCode.null}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
@Size(max = 128, message = "{StatisticalDataIndependent.admCode.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String admCode;
@Size(max = 128, message = "{StatisticalDataIndependent.remark.length.illegal}",groups = {StatisticalDataIndependentQoInsert.class, StatisticalDataIndependentQoUpdate.class})
private String remark;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getStatisticsName() {
return statisticsName;
}
public void setStatisticsName(String statisticsName) {
this.statisticsName = statisticsName;
}
public String getStatisticsCode() {
return statisticsCode;
}
public void setStatisticsCode(String statisticsCode) {
this.statisticsCode = statisticsCode;
}
public Long getStatisticsTimeTs() {
return statisticsTimeTs;
}
public void setStatisticsTimeTs(Long statisticsTimeTs) {
this.statisticsTimeTs = statisticsTimeTs;
}
public Double getStatisticsValue() {
return statisticsValue;
}
public void setStatisticsValue(Double statisticsValue) {
this.statisticsValue = statisticsValue;
}
public String getStatisticsValueArr() {
return statisticsValueArr;
}
public void setStatisticsValueArr(String statisticsValueArr) {
this.statisticsValueArr = statisticsValueArr;
}
public String getAdmName() {
return admName;
}
public void setAdmName(String admName) {
this.admName = admName;
}
public String getAdmCode() {
return admCode;
}
public void setAdmCode(String admCode) {
this.admCode = admCode;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

View File

@@ -0,0 +1,135 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.StatisticalDataQoInsert;
import com.xkrs.microservice.model.validation.StatisticalDataQoUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
/**
* StatisticalDataQo
* @author tajochen
*/
public class StatisticalDataQo implements Serializable {
@NotNull(message = "{StatisticalData.id.null}",groups={StatisticalDataQoUpdate.class})
private Integer id;
@NotBlank(message = "{StatisticalData.menuCode.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.menuCode.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String menuCode;
@NotBlank(message = "{StatisticalData.classifyName.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.classifyName.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String classifyName;
@NotBlank(message = "{StatisticalData.classifyCode.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.classifyCode.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String classifyCode;
@NotBlank(message = "{StatisticalData.admName.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.admName.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String admName;
@NotBlank(message = "{StatisticalData.admCode.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.admCode.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String admCode;
@NotBlank(message = "{StatisticalData.layerName.null}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
@Size(max = 128, message = "{StatisticalData.layerName.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String layerName;
private Double area;
@Size(max = 128, message = "{StatisticalData.remark.length.illegal}",groups = {StatisticalDataQoInsert.class, StatisticalDataQoUpdate.class})
private String remark;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getClassifyName() {
return classifyName;
}
public void setClassifyName(String classifyName) {
this.classifyName = classifyName;
}
public String getClassifyCode() {
return classifyCode;
}
public void setClassifyCode(String classifyCode) {
this.classifyCode = classifyCode;
}
public String getAdmName() {
return admName;
}
public void setAdmName(String admName) {
this.admName = admName;
}
public String getAdmCode() {
return admCode;
}
public void setAdmCode(String admCode) {
this.admCode = admCode;
}
public String getLayerName() {
return layerName;
}
public void setLayerName(String layerName) {
this.layerName = layerName;
}
public Double getArea() {
return area;
}
public void setArea(Double area) {
this.area = area;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
@Override
public String toString() {
return "StatisticalDataQo{" +
"id=" + id +
", menuCode='" + menuCode + '\'' +
", classifyName='" + classifyName + '\'' +
", classifyCode='" + classifyCode + '\'' +
", admName='" + admName + '\'' +
", admCode='" + admCode + '\'' +
", layerName='" + layerName + '\'' +
", area=" + area +
", remark='" + remark + '\'' +
'}';
}
}

View File

@@ -0,0 +1,101 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.SysMenuQoInsert;
import com.xkrs.microservice.model.validation.SysMenuQoUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* SysMenuQo
* @author tajochen
*/
public class SysMenuQo {
@NotNull(message = "{SysMenu.id.null}",groups={SysMenuQoUpdate.class})
private Integer id;
@NotBlank(message = "{SysMenu.menuName.null}",groups = {SysMenuQoInsert.class, SysMenuQoUpdate.class})
@Size(max = 64, message = "{SysMenu.menuName.length.illegal}",groups = {SysMenuQoInsert.class, SysMenuQoUpdate.class})
private String menuName;
private Integer menuType;
@Size(max = 64, message = "{SysMenu.parentCode.length.illegal}",groups = {SysMenuQoInsert.class, SysMenuQoUpdate.class})
private String parentCode;
private Integer sortOrder;
private Integer visibleFlag;
@Size(max = 255, message = "{SysMenu.icon.length.illegal}",groups = {SysMenuQoInsert.class, SysMenuQoUpdate.class})
private String icon;
@Size(max = 255, message = "{SysMenu.componentUrl.length.illegal}",groups = {SysMenuQoInsert.class, SysMenuQoUpdate.class})
private String componentUrl;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getMenuName() {
return menuName;
}
public void setMenuName(String menuName) {
this.menuName = menuName;
}
public Integer getMenuType() {
return menuType;
}
public void setMenuType(Integer menuType) {
this.menuType = menuType;
}
public String getParentCode() {
return parentCode;
}
public void setParentCode(String parentCode) {
this.parentCode = parentCode;
}
public Integer getSortOrder() {
return sortOrder;
}
public void setSortOrder(Integer sortOrder) {
this.sortOrder = sortOrder;
}
public Integer getVisibleFlag() {
return visibleFlag;
}
public void setVisibleFlag(Integer visibleFlag) {
this.visibleFlag = visibleFlag;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getComponentUrl() {
return componentUrl;
}
public void setComponentUrl(String componentUrl) {
this.componentUrl = componentUrl;
}
}

View File

@@ -0,0 +1,206 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.SysUserQoInsert;
import com.xkrs.microservice.model.validation.SysUserQoUpdate;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
/**
* SysUserQo
* @author tajochen
*/
public class SysUserQo {
@NotNull( message = "{SysUser.id.blank}",groups={SysUserQoUpdate.class})
private Integer id;
@NotBlank(message = "{SysUser.userName.blank}",groups={SysUserQoInsert.class})
@Size(min = 3,max = 24, message = "{SysUser.userName.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
@Pattern(regexp = "^([A-Za-z0-9_]+)$",message = "{SysUser.userName.format.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String userName;
@Size(min = 0,max = 16, message = "{SysUser.userCode.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
@Pattern(regexp = "/^[A-Za-z0-9_-]{3,16}$/g",message = "{SysUser.userCode.format.illegal}",
groups = {SysUserQoInsert.class, SysUserQoUpdate.class})
private String userCode;
@Size(min = 2,max = 24, message = "{SysUser.nickName.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String nickName;
@Size(min = 2,max = 24, message = "{SysUser.realName.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String realName;
@Size(min = 17,max = 19, message = "{SysUser.idCard.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String idCard;
@Size(max = 64, message = "{SysUser.address.length.illegal}",groups = {SysUserQoInsert.class, SysUserQoUpdate.class})
private String address;
private Integer admCode;
private Long birthdayTs;
@Size(max = 32, message = "{SysUser.email.length.illegal}",groups = {SysUserQoInsert.class, SysUserQoUpdate.class})
@Email(message = "{SysUser.email.format.illegal}",groups = {SysUserQoInsert.class, SysUserQoUpdate.class})
private String email;
@NotBlank(message = "{SysUser.password.blank}",groups = {SysUserQoInsert.class})
@Size(min = 6,max = 16, message = "{SysUser.password.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
@Pattern(regexp = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$",message = "{SysUser.password.format.illegal}",
groups = {SysUserQoInsert.class,SysUserQoUpdate.class})
private String password;
@Range(min=0,max=2,message = "{SysUser.sex.num.illegal}",groups = {SysUserQoInsert.class, SysUserQoUpdate.class})
private Integer sex;
@Pattern(regexp = "^(13[0-9]|14[0-9]|15[0-9]|16[0-9]|17[0-9]|18[0-9]|19[0-9])\\d{8}$",
message = "{SysUser.telephone.format.illegal}",groups = {SysUserQoInsert.class,SysUserQoUpdate.class})
private String telephone;
@Size(max = 128, message = "{SysUser.personalSignature.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String signature;
@NotNull(message = "{SysUser.portraitId.illegal}",groups = { SysUserQoUpdate.class})
private Integer portraitId;
@Size(max = 128, message = "{SysUser.memo.length.illegal}",groups = {SysUserQoInsert.class,
SysUserQoUpdate.class})
private String memo;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Long getBirthdayTs() {
return birthdayTs;
}
public void setBirthdayTs(Long birthdayTs) {
this.birthdayTs = birthdayTs;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public Integer getPortraitId() {
return portraitId;
}
public void setPortraitId(Integer portraitId) {
this.portraitId = portraitId;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
}

View File

@@ -0,0 +1,141 @@
package com.xkrs.microservice.model.qo;
import com.xkrs.microservice.model.validation.ZipFileQoInsert;
import com.xkrs.microservice.model.validation.ZipFileQoUpdate;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
/**
* zip文件信息
* @author tajochen
*/
public class ZipFileInfoQo {
@NotBlank(message = "{ZipFile.dataType.null}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
@Size(max = 128, message = "{ZipFile.dataType.length.illegal}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
private String dataType;
@NotBlank(message = "{ZipFile.fileName.null}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
@Size(max = 128, message = "{ZipFile.fileName.length.illegal}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
private String fileName;
@NotBlank(message = "{ZipFile.menuCode.null}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
@Size(max = 64, message = "{ZipFile.menuCode.length.illegal}",groups = {ZipFileQoInsert.class, ZipFileQoUpdate.class})
private String menuCode;
private String ServiceType;
private String LayerShowName;
private String LayerName;
private String productType;
private Long productStartTimeTs;
private Long productEndTimeTs;
private Integer admCode;
private String admName;
private String remarks;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getMenuCode() {
return menuCode;
}
public void setMenuCode(String menuCode) {
this.menuCode = menuCode;
}
public String getServiceType() {
return ServiceType;
}
public void setServiceType(String serviceType) {
ServiceType = serviceType;
}
public String getLayerShowName() {
return LayerShowName;
}
public void setLayerShowName(String layerShowName) {
LayerShowName = layerShowName;
}
public String getLayerName() {
return LayerName;
}
public void setLayerName(String layerName) {
LayerName = layerName;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public Long getProductStartTimeTs() {
return productStartTimeTs;
}
public void setProductStartTimeTs(Long productStartTimeTs) {
this.productStartTimeTs = productStartTimeTs;
}
public Long getProductEndTimeTs() {
return productEndTimeTs;
}
public void setProductEndTimeTs(Long productEndTimeTs) {
this.productEndTimeTs = productEndTimeTs;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public String getAdmName() {
return admName;
}
public void setAdmName(String admName) {
this.admName = admName;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* DataFileQoInsert
* @author tajochen
*/
public interface DataFileQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* DataFileQoUpdate
* @author tajochen
*/
public interface DataFileQoUpdate {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* MapServiceQoInsert
* @author tajochen
*/
public interface MapServiceQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* MapServiceUpdate
* @author tajochen
*/
public interface MapServiceUpdate {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* StatisticalDataIndependentQoInsert
* @author tajochen
*/
public interface StatisticalDataIndependentQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* StatisticalDataIndependentQoUpdate
* @author tajochen
*/
public interface StatisticalDataIndependentQoUpdate {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* StatisticalDataQoInsert
* @author tajochen
*/
public interface StatisticalDataQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* StatisticalDataQoUpdate
* @author tajochen
*/
public interface StatisticalDataQoUpdate {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* SysMenuQoInsert
* @author tajochen
*/
public interface SysMenuQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* SysMenuQoUpdate
* @author tajochen
*/
public interface SysMenuQoUpdate {
}

View File

@@ -0,0 +1,8 @@
package com.xkrs.microservice.model.validation;
/**
* SysUserQoInsert
* @author tajochen
*/
public interface SysUserQoInsert {
}

View File

@@ -0,0 +1,8 @@
package com.xkrs.microservice.model.validation;
/**
* SysUserQoUpdate
* @author tajochen
*/
public interface SysUserQoUpdate {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* ZipFileQoInsert
* @author tajochen
*/
public interface ZipFileQoInsert {
}

View File

@@ -0,0 +1,9 @@
package com.xkrs.microservice.model.validation;
/**
* ZipFileQoUpdate
* @author tajochen
*/
public interface ZipFileQoUpdate {
}

View File

@@ -0,0 +1,353 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
import java.util.List;
/**
* @author wudong
* @date 2021/8/18 14:47
*/
public class AliWeatherAllVo implements Serializable {
/**
* 返回状态 值为0或1 1成功0失败
*/
private String status;
/**
* 返回结果总数目
*/
private String count;
/**
* 返回的状态信息
*/
private String info;
/**
* 返回状态说明,10000代表正确
*/
private String infocode;
/**
* 预报天气信息数据
*/
private List<AliWeatherAllExVo> forecasts;
public AliWeatherAllVo() {
}
public AliWeatherAllVo(String status, String count, String info, String infocode, List<AliWeatherAllExVo> forecasts) {
this.status = status;
this.count = count;
this.info = info;
this.infocode = infocode;
this.forecasts = forecasts;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getInfocode() {
return infocode;
}
public void setInfocode(String infocode) {
this.infocode = infocode;
}
public List<AliWeatherAllExVo> getForecasts() {
return forecasts;
}
public void setForecasts(List<AliWeatherAllExVo> forecasts) {
this.forecasts = forecasts;
}
@Override
public String toString() {
return "AliWeatherBaseVo{" +
"status='" + status + '\'' +
", count='" + count + '\'' +
", info='" + info + '\'' +
", infocode='" + infocode + '\'' +
", lives=" + forecasts +
'}';
}
static class AliWeatherAllExVo {
/**
* 城市
*/
private String city;
/**
* 城市编码
*/
private String adcode;
/**
* 省份名称
*/
private String province;
/**
* 预报发布时间
*/
private String reporttime;
/**
* 预报发布时间
*/
private List<AliWeatherAllExVo.AliWeatherAllExCastVo> casts;
public AliWeatherAllExVo() {
}
public AliWeatherAllExVo(String city, String adcode, String province, String reporttime, List<AliWeatherAllExVo.AliWeatherAllExCastVo> casts) {
this.city = city;
this.adcode = adcode;
this.province = province;
this.reporttime = reporttime;
this.casts = casts;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAdcode() {
return adcode;
}
public void setAdcode(String adcode) {
this.adcode = adcode;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getReporttime() {
return reporttime;
}
public void setReporttime(String reporttime) {
this.reporttime = reporttime;
}
public List<AliWeatherAllExVo.AliWeatherAllExCastVo> getCasts() {
return casts;
}
public void setCasts(List<AliWeatherAllExVo.AliWeatherAllExCastVo> casts) {
this.casts = casts;
}
@Override
public String toString() {
return "AliWeatherBaseExVo{" +
"city='" + city + '\'' +
", adcode='" + adcode + '\'' +
", province='" + province + '\'' +
", reporttime='" + reporttime + '\'' +
", casts=" + casts +
'}';
}
static class AliWeatherAllExCastVo {
/**
* 日期
*/
private String date;
/**
* 星期几
*/
private String week;
/**
* 白天天气现象
*/
private String dayweather;
/**
* 晚上天气现象
*/
private String nightweather;
/**
* 白天天气现象
*/
private String daytemp;
/**
* 晚上天气现象
*/
private String nighttemp;
/**
* 白天风向
*/
private String daywind;
/**
* 晚上风向
*/
private String nightwind;
/**
* 白天风力
*/
private String daypower;
/**
* 晚上风力
*/
private String nightpower;
public AliWeatherAllExCastVo() {
}
public AliWeatherAllExCastVo(String date, String week, String dayweather, String nightweather, String daytemp, String nighttemp, String daywind, String nightwind, String daypower, String nightpower) {
this.date = date;
this.week = week;
this.dayweather = dayweather;
this.nightweather = nightweather;
this.daytemp = daytemp;
this.nighttemp = nighttemp;
this.daywind = daywind;
this.nightwind = nightwind;
this.daypower = daypower;
this.nightpower = nightpower;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getWeek() {
return week;
}
public void setWeek(String week) {
this.week = week;
}
public String getDayweather() {
return dayweather;
}
public void setDayweather(String dayweather) {
this.dayweather = dayweather;
}
public String getNightweather() {
return nightweather;
}
public void setNightweather(String nightweather) {
this.nightweather = nightweather;
}
public String getDaytemp() {
return daytemp;
}
public void setDaytemp(String daytemp) {
this.daytemp = daytemp;
}
public String getNighttemp() {
return nighttemp;
}
public void setNighttemp(String nighttemp) {
this.nighttemp = nighttemp;
}
public String getDaywind() {
return daywind;
}
public void setDaywind(String daywind) {
this.daywind = daywind;
}
public String getNightwind() {
return nightwind;
}
public void setNightwind(String nightwind) {
this.nightwind = nightwind;
}
public String getDaypower() {
return daypower;
}
public void setDaypower(String daypower) {
this.daypower = daypower;
}
public String getNightpower() {
return nightpower;
}
public void setNightpower(String nightpower) {
this.nightpower = nightpower;
}
@Override
public String toString() {
return "AliWeatherBaseExCastVo{" +
"date='" + date + '\'' +
", week='" + week + '\'' +
", dayweather='" + dayweather + '\'' +
", nightweather='" + nightweather + '\'' +
", daytemp='" + daytemp + '\'' +
", nighttemp='" + nighttemp + '\'' +
", daywind='" + daywind + '\'' +
", nightwind='" + nightwind + '\'' +
", daypower='" + daypower + '\'' +
", nightpower='" + nightpower + '\'' +
'}';
}
}
}
}

View File

@@ -0,0 +1,248 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
import java.util.List;
/**
* @author wudong
* @date 2021/8/18 14:40
*/
public class AliWeatherBaseVo implements Serializable {
/**
* 返回状态 值为0或1 1成功0失败
*/
private String status;
/**
* 返回结果总数目
*/
private String count;
/**
* 返回的状态信息
*/
private String info;
/**
* 返回状态说明,10000代表正确
*/
private String infocode;
/**
* 实况天气数据信息
*/
private List<AliWeatherBaseExVo> lives;
public AliWeatherBaseVo() {
}
public AliWeatherBaseVo(String status, String count, String info, String infocode, List<AliWeatherBaseExVo> lives) {
this.status = status;
this.count = count;
this.info = info;
this.infocode = infocode;
this.lives = lives;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String getInfocode() {
return infocode;
}
public void setInfocode(String infocode) {
this.infocode = infocode;
}
public List<AliWeatherBaseExVo> getLives() {
return lives;
}
public void setLives(List<AliWeatherBaseExVo> lives) {
this.lives = lives;
}
@Override
public String toString() {
return "AliWeatherAllVo{" +
"status='" + status + '\'' +
", count='" + count + '\'' +
", info='" + info + '\'' +
", infocode='" + infocode + '\'' +
", lives=" + lives +
'}';
}
static class AliWeatherBaseExVo {
/**
* 省份名
*/
private String province;
/**
* 城市名
*/
private String city;
/**
* 区域编码
*/
private String adcode;
/**
* 天气现象(汉字描述)
*/
private String weather;
/**
* 实时气温,单位:摄氏度
*/
private String temperature;
/**
* 风向描述
*/
private String winddirection;
/**
* 风力级别,单位:级
*/
private String windpower;
/**
* 空气湿度
*/
private String humidity;
/**
* 数据发布的时间
*/
private String reporttime;
public AliWeatherBaseExVo() {
}
public AliWeatherBaseExVo(String province, String city, String adcode, String weather, String temperature, String winddirection, String windpower, String humidity, String reporttime) {
this.province = province;
this.city = city;
this.adcode = adcode;
this.weather = weather;
this.temperature = temperature;
this.winddirection = winddirection;
this.windpower = windpower;
this.humidity = humidity;
this.reporttime = reporttime;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getAdcode() {
return adcode;
}
public void setAdcode(String adcode) {
this.adcode = adcode;
}
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
public String getWinddirection() {
return winddirection;
}
public void setWinddirection(String winddirection) {
this.winddirection = winddirection;
}
public String getWindpower() {
return windpower;
}
public void setWindpower(String windpower) {
this.windpower = windpower;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getReporttime() {
return reporttime;
}
public void setReporttime(String reporttime) {
this.reporttime = reporttime;
}
@Override
public String toString() {
return "AliWeatherAllExVo{" +
"province='" + province + '\'' +
", city='" + city + '\'' +
", adcode='" + adcode + '\'' +
", weather='" + weather + '\'' +
", temperature='" + temperature + '\'' +
", winddirection='" + winddirection + '\'' +
", windpower='" + windpower + '\'' +
", humidity='" + humidity + '\'' +
", reporttime='" + reporttime + '\'' +
'}';
}
}
}

View File

@@ -0,0 +1,67 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* FileServerResultVo 文件服务器查询结果
* @author tajochen
*/
public class FileServerResultVo<T> implements Serializable {
/**
* 状态信息
*/
String status;
/**
* 提示信息
*/
String message;
/**
* 数据
*/
T data;
public FileServerResultVo() {
}
public FileServerResultVo(String status, String msg, T data) {
this.status = status;
this.message = msg;
this.data = data;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "FileServerResultVo{" +
"status='" + status + '\'' +
", message='" + message + '\'' +
", data=" + data +
'}';
}
}

View File

@@ -0,0 +1,170 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* FileServiceResDetailVo
* @author tajochen
*/
public class FileServiceResDetailVo implements Serializable {
/**
* 域名
*/
String domain;
/**
* 信息摘要
*/
String md5;
/**
* 上传时间戳
*/
Long mtime;
/**
* 文件路径
*/
String path;
/**
* 返回信息代码
*/
int retcode;
/**
* 返回信息文本
*/
String retmsg;
/**
* 场景
*/
String scene;
/**
* 场景集合
*/
String scenes;
/**
* 文件大小
*/
long size;
/**
* 文件路径
*/
String src;
/**
* 文件完整链接
*/
String url;
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public Long getMtime() {
return mtime;
}
public void setMtime(Long mtime) {
this.mtime = mtime;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public int getRetcode() {
return retcode;
}
public void setRetcode(int retcode) {
this.retcode = retcode;
}
public String getRetmsg() {
return retmsg;
}
public void setRetmsg(String retmsg) {
this.retmsg = retmsg;
}
public String getScene() {
return scene;
}
public void setScene(String scene) {
this.scene = scene;
}
public String getScenes() {
return scenes;
}
public void setScenes(String scenes) {
this.scenes = scenes;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getSrc() {
return src;
}
public void setSrc(String src) {
this.src = src;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Override
public String toString() {
return "FileServiceResVo{" +
"domain='" + domain + '\'' +
", md5='" + md5 + '\'' +
", mtime=" + mtime +
", path='" + path + '\'' +
", retcode=" + retcode +
", retmsg='" + retmsg + '\'' +
", scene='" + scene + '\'' +
", scenes='" + scenes + '\'' +
", size=" + size +
", src='" + src + '\'' +
", url='" + url + '\'' +
'}';
}
}

View File

@@ -0,0 +1,61 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* 磁盘盘符信息
* @author tajochen
*/
public class HardDiskInfoVo implements Serializable {
private String hardDiskName;
private Long freeSpace;
private Long usedSpace;
private Long totalSpace;
public String getHardDiskName() {
return hardDiskName;
}
public void setHardDiskName(String hardDiskName) {
this.hardDiskName = hardDiskName;
}
public Long getFreeSpace() {
return freeSpace;
}
public void setFreeSpace(Long freeSpace) {
this.freeSpace = freeSpace;
}
public Long getUsedSpace() {
return usedSpace;
}
public void setUsedSpace(Long usedSpace) {
this.usedSpace = usedSpace;
}
public Long getTotalSpace() {
return totalSpace;
}
public void setTotalSpace(Long totalSpace) {
this.totalSpace = totalSpace;
}
@Override
public String toString() {
return "HardDiskInfoVo{" +
"hardDiskName='" + hardDiskName + '\'' +
", freeSpace=" + freeSpace +
", usedSpace=" + usedSpace +
", totalSpace=" + totalSpace +
'}';
}
}

View File

@@ -0,0 +1,52 @@
package com.xkrs.microservice.model.vo;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import java.io.Serializable;
import java.util.List;
/**
* 图层组
* @author tajochen
*/
public class MapLayerGroupVo implements Serializable {
int count;
String layerGroupCode;
List<MapServiceEntity> layers;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getLayerGroupCode() {
return layerGroupCode;
}
public void setLayerGroupCode(String layerGroupCode) {
this.layerGroupCode = layerGroupCode;
}
public List<MapServiceEntity> getLayers() {
return layers;
}
public void setLayers(List<MapServiceEntity> layers) {
this.layers = layers;
}
@Override
public String toString() {
return "MapLayerGroupVo{" +
"count=" + count +
", layerGroupCode='" + layerGroupCode + '\'' +
", layers=" + layers +
'}';
}
}

View File

@@ -0,0 +1,44 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* @author tajochen
* @date 2021/8/18 14:47
*/
public class ResultVo implements Serializable {
/**
* 返回结果值 为0或1 1成功0失败
*/
private int resultCode;
/**
* 返回结果消息
*/
private String resultMessage;
public int getResultCode() {
return resultCode;
}
public void setResultCode(int resultCode) {
this.resultCode = resultCode;
}
public String getResultMessage() {
return resultMessage;
}
public void setResultMessage(String resultMessage) {
this.resultMessage = resultMessage;
}
@Override
public String toString() {
return "ResultVo{" +
"resultCode='" + resultCode + '\'' +
", resultMessage='" + resultMessage + '\'' +
'}';
}
}

View File

@@ -0,0 +1,108 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* ShpCityVo
* @author tajochen
*/
public class ShpCityVo implements Serializable {
private Integer id;
private Integer cityCode;
private String cityName;
private Integer proCode;
private String proName;
private double shapeArea;
private Integer year;
public ShpCityVo(Integer id, Integer cityCode, String cityName, Integer proCode, String proName, double shapeArea, Integer year) {
this.id = id;
this.cityCode = cityCode;
this.cityName = cityName;
this.proCode = proCode;
this.proName = proName;
this.shapeArea = shapeArea;
this.year = year;
}
public ShpCityVo() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCityCode() {
return cityCode;
}
public void setCityCode(Integer cityCode) {
this.cityCode = cityCode;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public Integer getProCode() {
return proCode;
}
public void setProCode(Integer proCode) {
this.proCode = proCode;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public double getShapeArea() {
return shapeArea;
}
public void setShapeArea(double shapeArea) {
this.shapeArea = shapeArea;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
@Override
public String toString() {
return "ShpCityVo{" +
"id=" + id +
", cityCode=" + cityCode +
", cityName='" + cityName + '\'' +
", proCode=" + proCode +
", proName='" + proName + '\'' +
", shapeArea=" + shapeArea +
", year=" + year +
'}';
}
}

View File

@@ -0,0 +1,131 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* ShpCountyVo
* @author tajochen
*/
public class ShpCountyVo implements Serializable {
private Integer id;
private Integer coCode;
private String coName;
private Integer cityCode;
private String cityName;
private Integer proCode;
private String proName;
private double shapeArea;
private Integer year;
public ShpCountyVo(Integer id, Integer coCode, String coName, Integer cityCode, String cityName, Integer proCode, String proName, double shapeArea, Integer year) {
this.id = id;
this.coCode = coCode;
this.coName = coName;
this.cityCode = cityCode;
this.cityName = cityName;
this.proCode = proCode;
this.proName = proName;
this.shapeArea = shapeArea;
this.year = year;
}
public ShpCountyVo() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getCoCode() {
return coCode;
}
public void setCoCode(Integer coCode) {
this.coCode = coCode;
}
public String getCoName() {
return coName;
}
public void setCoName(String coName) {
this.coName = coName;
}
public Integer getCityCode() {
return cityCode;
}
public void setCityCode(Integer cityCode) {
this.cityCode = cityCode;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public Integer getProCode() {
return proCode;
}
public void setProCode(Integer proCode) {
this.proCode = proCode;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public double getShapeArea() {
return shapeArea;
}
public void setShapeArea(double shapeArea) {
this.shapeArea = shapeArea;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
@Override
public String toString() {
return "ShpCountyVo{" +
"id=" + id +
", coCode=" + coCode +
", coName='" + coName + '\'' +
", cityCode=" + cityCode +
", cityName='" + cityName + '\'' +
", proCode=" + proCode +
", proName='" + proName + '\'' +
", shapeArea=" + shapeArea +
", year=" + year +
'}';
}
}

View File

@@ -0,0 +1,84 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
/**
* ShpProvinceVo
* @author tajochen
*/
public class ShpProvinceVo implements Serializable {
private Integer id;
private Integer proCode;
private String proName;
private double shapeArea;
private Integer year;
public ShpProvinceVo(Integer id, Integer proCode, String proName, double shapeArea, Integer year) {
this.id = id;
this.proCode = proCode;
this.proName = proName;
this.shapeArea = shapeArea;
this.year = year;
}
public ShpProvinceVo() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getProCode() {
return proCode;
}
public void setProCode(Integer proCode) {
this.proCode = proCode;
}
public String getProName() {
return proName;
}
public void setProName(String proName) {
this.proName = proName;
}
public double getShapeArea() {
return shapeArea;
}
public void setShapeArea(double shapeArea) {
this.shapeArea = shapeArea;
}
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
@Override
public String toString() {
return "ShpProvinceVo{" +
"id=" + id +
", proCode=" + proCode +
", proName='" + proName + '\'' +
", shapeArea=" + shapeArea +
", year=" + year +
'}';
}
}

View File

@@ -0,0 +1,257 @@
package com.xkrs.microservice.model.vo;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;
/**
* SysUserVo
* @author tajochen
*/
public class SysUserVo implements Serializable {
private Integer id;
private String userName;
private String userCode;
private String nickName;
private String realName;
private String idCard;
private String address;
private Integer admCode;
private LocalDate birthday;
private String email;
private Integer sex;
private String telephone;
private String signature;
private Integer statusCode;
private Integer portraitId;
private Integer activeFlag;
private String lastEntryIp;
private LocalDateTime lastEntryTime;
private String memo;
private LocalDateTime createdTime;
private String roleName;
private String roleNameZh;
public SysUserVo(Integer id, String userName, String userCode, String nickName, String realName, String idCard, String address, Integer admCode, LocalDate birthday, String email, Integer sex, String telephone, String signature, Integer statusCode, Integer portraitId, Integer activeFlag, String lastEntryIp, LocalDateTime lastEntryTime, String memo, LocalDateTime createdTime, String roleName, String roleNameZh) {
this.id = id;
this.userName = userName;
this.userCode = userCode;
this.nickName = nickName;
this.realName = realName;
this.idCard = idCard;
this.address = address;
this.admCode = admCode;
this.birthday = birthday;
this.email = email;
this.sex = sex;
this.telephone = telephone;
this.signature = signature;
this.statusCode = statusCode;
this.portraitId = portraitId;
this.activeFlag = activeFlag;
this.lastEntryIp = lastEntryIp;
this.lastEntryTime = lastEntryTime;
this.memo = memo;
this.createdTime = createdTime;
this.roleName = roleName;
this.roleNameZh = roleNameZh;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getRealName() {
return realName;
}
public void setRealName(String realName) {
this.realName = realName;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Integer getAdmCode() {
return admCode;
}
public void setAdmCode(Integer admCode) {
this.admCode = admCode;
}
public LocalDate getBirthday() {
return birthday;
}
public void setBirthday(LocalDate birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public Integer getStatusCode() {
return statusCode;
}
public void setStatusCode(Integer statusCode) {
this.statusCode = statusCode;
}
public Integer getPortraitId() {
return portraitId;
}
public void setPortraitId(Integer portraitId) {
this.portraitId = portraitId;
}
public Integer getActiveFlag() {
return activeFlag;
}
public void setActiveFlag(Integer activeFlag) {
this.activeFlag = activeFlag;
}
public String getLastEntryIp() {
return lastEntryIp;
}
public void setLastEntryIp(String lastEntryIp) {
this.lastEntryIp = lastEntryIp;
}
public LocalDateTime getLastEntryTime() {
return lastEntryTime;
}
public void setLastEntryTime(LocalDateTime lastEntryTime) {
this.lastEntryTime = lastEntryTime;
}
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
public LocalDateTime getCreatedTime() {
return createdTime;
}
public void setCreatedTime(LocalDateTime createdTime) {
this.createdTime = createdTime;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getRoleNameZh() {
return roleNameZh;
}
public void setRoleNameZh(String roleNameZh) {
this.roleNameZh = roleNameZh;
}
}

View File

@@ -0,0 +1,82 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.DataFileEntity;
import com.xkrs.microservice.model.qo.DataFileQo;
import com.xkrs.microservice.model.qo.ZipFileInfoQo;
import com.xkrs.microservice.model.vo.ResultVo;
import org.springframework.web.multipart.MultipartFile;
/**
* 数据文件服务
* @author tajochen
*/
public interface DataFileService {
/**
* 获取所有数据文件
* @return
*/
Iterable<DataFileEntity> getAllDataFile();
/**
* 获取所有数据文件根据菜单代码
* @param menuCode 菜单代码
* @return
*/
Iterable<DataFileEntity> getAllDataFileByMenuCode(String menuCode);
/**
* 获取所有数据文件根据数据类型
* @param dataType 数据类型
* @return
*/
Iterable<DataFileEntity> getAllDataFileByDataType(String dataType);
/**
* 获取文件数据根据菜单代码和数据类型和发布标记
* @param menuCode 菜单代码
* @param dataType 数据类型
* @param publishFlag 发布标记
* @return
*/
Iterable<DataFileEntity> getAllDataFileByMenuCodeAndDataTypeAndPublishFlag(String menuCode,String dataType,Integer publishFlag);
/**
* 获取数据文件根据文件代码
* @param dataFileCode 文件代码
* @return
*/
DataFileEntity getDataFileByDataFileCode(String dataFileCode);
/**
* 添加数据文件
* @param dataFileEntity
* @return
*/
ResultVo insertDataFile(DataFileEntity dataFileEntity);
/**
* 运行数据文件
* @param dataFileEntity
* @return
*/
ResultVo runDataFile(DataFileQo dataFileQo);
/**
* 上传影像文件
* @param dataFileQo
* @param leftFile
* @param rightFile
* @param userName
* @return
*/
ResultVo uploadDataFile(DataFileQo dataFileQo,MultipartFile leftFile,MultipartFile rightFile,String userName);
/**
* 删除数据文件
* @param id 编号
* @return
*/
int deleteDataFile(Integer id);
}

View File

@@ -0,0 +1,64 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.vo.FileServerResultVo;
import com.xkrs.microservice.model.vo.FileServiceResDetailVo;
import java.io.File;
/**
* 文件服务器接口
* @author tajochen
*/
public interface FileServerService {
/**
* 上传文件
* @param postFile 文件
* @param path 路径
* @return
*/
FileServiceResDetailVo uploadFile(File postFile, String path);
/**
* 获取文件统计信息
* @return
*/
FileServerResultVo getFileStat();
/**
* 删除文件
* @param md5 信息摘要
* @param path 路径
* @return
*/
FileServerResultVo deleteFile(String md5,String path);
/**
* 获取文件信息
* @param md5 信息摘要
* @param path 路径
* @return
*/
FileServerResultVo getFileInfo(String md5,String path);
/**
* 获取文件列表
* @param dir 目录名
* @return
*/
FileServerResultVo getFileList(String dir);
/**
* 修复统计信息
* @param date 要修复的日期格式如20190725
* @return
*/
FileServerResultVo getFileRepairStat(String date);
/**
* 同步失败修复
* @param force 是否强行修复(0|1)
* @return
*/
FileServerResultVo getFileRepair(String force);
}

View File

@@ -0,0 +1,111 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import com.xkrs.microservice.model.qo.MapServiceQo;
import com.xkrs.microservice.model.vo.MapLayerGroupVo;
import java.util.List;
import java.util.Optional;
/**
* 地图服务管理接口
* @author tajochen
*/
public interface MapServiceService {
/**
* 获取所有地图服务
* @return
*/
Iterable<MapServiceEntity> getAllService();
/**
* 获取指定菜单编号的地图服务
* @param menuCode 菜单编号
* @return
*/
Iterable<MapServiceEntity> getByMenuCode(String menuCode);
/**
* 获取指定图层名称的地图服务
* @param layerName 图层名称
* @return
*/
List<MapServiceEntity> getByLayerName(String layerName);
/**
* 获取指定id的地图服务
* @param id 产品编号
* @return
*/
Optional<MapServiceEntity> getById(Integer id);
/**
* 获取指定类型的所有服务
* @param productType 产品类型
* @return
*/
Iterable<MapServiceEntity> getByProductType(String productType);
/**
* 获取指定类型和行政区划的所有服务
* @param admCode 行政区划
* @param productType 产品类型
* @return
*/
Iterable<MapServiceEntity> getByAdmCodeAndProductType(Integer admCode, String productType);
/**
* 新增地图服务
* @param mapServiceQo
* @param userName 用户名
*/
void add(MapServiceQo mapServiceQo, String userName);
/**
* 获取指定编号的地图服务
* @param mapServiceQo 地图服务修改
* @param userName 地图服务
* @return
*/
int updateById(MapServiceQo mapServiceQo, String userName);
/**
* 删除地图服务
* @param id 编号
* @return
*/
int delete(Integer id);
/**
* 获取指定菜单下的图层组
* @param menuCode 产品类型
* @return
*/
List<MapLayerGroupVo> getAllMapLayerGroupByMenuCode(String menuCode);
/**
* 获取指定菜单下的图层组
* @param layerGroupCode 图层组代码
* @return
*/
List<MapServiceEntity> getAllMapLayerGroupByLayerGroupCode(String layerGroupCode);
/**
* 创建图层组
* @param layerIds 图层组ids
* @param layerGroupOrdersAraNum 图层组顺序
* @param userName 用户名
* @return
*/
int createMapLayerGroup(Integer[] layerIds,Integer[] layerGroupOrdersAraNum,String userName);
/**
* 解散图层组
* @param layerId 图层组id
* @param userName 用户名
* @return
*/
int dismissMapLayerGroup(Integer layerId,String userName);
}

View File

@@ -0,0 +1,19 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.SysAuthorityEntity;
import java.util.List;
/**
* 系统权限服务接口
* @author tajochen
*/
public interface SysAuthorityService {
/**
* 获取权限实体列表根据用户名
* @param userName
* @return
*/
List<SysAuthorityEntity> getSysAuthorityListByUserName(String userName);
}

View File

@@ -0,0 +1,52 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.SysMenuEntity;
/**
* 系统菜单服务接口
* @author tajochen
*/
public interface SysMenuService {
/**
* 获取所有系统菜单服务
* @return
*/
Iterable<SysMenuEntity> getAllSysMenu();
/**
* 获取系统菜单服务根据菜单代码
* @param menuCode 菜单代码
* @return
*/
Iterable<SysMenuEntity> getSysMenuByMenuCode(String menuCode);
/**
* 获取系统菜单服务根据菜单代码
* @param menuName 菜单代码
* @return
*/
Iterable<SysMenuEntity> getSysMenuByMenuName(String menuName);
/**
* 添加系统菜单服务
* @param sysMenuEntity
* @return
*/
void insertSysMenu(SysMenuEntity sysMenuEntity);
/**
* 修改系统菜单服务
* @param sysMenuEntity
* @return
*/
void updateSysMenu(SysMenuEntity sysMenuEntity);
/**
* 删除系统菜单服务
* @param id 编号
* @return
*/
int deleteSysMenu(Integer id);
}

View File

@@ -0,0 +1,19 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.SysRoleEntity;
import java.util.List;
/**
* 系统角色服务接口
* @author tajochen
*/
public interface SysRoleService {
/**
* 获取角色实体列表根据用户名
* @param userName
* @return
*/
List<SysRoleEntity> getSysRoleListByUserName(String userName);
}

View File

@@ -0,0 +1,105 @@
package com.xkrs.microservice.service;
import com.xkrs.microservice.model.entity.SysUserEntity;
import com.xkrs.microservice.model.qo.SysUserQo;
import com.xkrs.microservice.model.vo.SysUserVo;
/**
* 系统用户服务接口
* @author tajochen
*/
public interface SysUserService {
/**
* 获取指定用户Vo
* @param userName 用户名
* @return
*/
SysUserVo getSysUserVoByUserName(String userName);
/**
* 获取指定手机号用户
* @param telephone 手机号
* @return
*/
SysUserVo findByTelephone(String telephone);
/**
* 用户头像更新
* @param userName 用户名
* @param portraitId 编号
* @return
*/
int updateSysUserPortrait(String userName,Integer portraitId);
/**
* 用户密码更新
* @param userName 用户名
* @param oldPassword 旧密码
* @param newPassword 新密码
* @return
*/
int updateSysUserPassword(String userName,String oldPassword,String newPassword);
/**
* 检查用户名
* @param userName 用户名
* @return
*/
boolean checkUserName(String userName);
/**
* 获取所有用户
* @return
*/
Iterable<SysUserVo> getAllSysUser();
/**
* 保存用户
* @param sysUserQo
*/
void addUser(SysUserQo sysUserQo);
/**
* 获取系统用户实体根据用户名
* @param userName 用户名
* @return
*/
SysUserEntity getSysUserByUserName(String userName);
/**
* 用户登录更新
* @param userName 用户名
* @param ipAddress ip地址
* @return
*/
int updateSysUserLogin(String userName,String ipAddress);
/**
* 系统用户更新
* @param sysUserQo
* @return
*/
int updateSysUser(SysUserQo sysUserQo);
/**
* 禁用用户账号
* @param userName
* @return
*/
int disableSysUser(String userName);
/**
* 启用用户账号
* @param userName
* @return
*/
int enableSysUser(String userName);
/**
* 软删除系统用户
* @param id 编号
* @return
*/
int softDeleteGeneralUser(Integer id);
}

View File

@@ -0,0 +1,281 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.common.config.RedisUtil;
import com.xkrs.microservice.common.encapsulation.EncapsulationObject;
import com.xkrs.microservice.dao.DataFileDao;
import com.xkrs.microservice.dao.MapServiceDao;
import com.xkrs.microservice.model.entity.DataFileEntity;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import com.xkrs.microservice.model.qo.DataFileQo;
import com.xkrs.microservice.model.qo.ZipFileInfoQo;
import com.xkrs.microservice.model.vo.FileServiceResDetailVo;
import com.xkrs.microservice.model.vo.ResultVo;
import com.xkrs.microservice.service.DataFileService;
import com.xkrs.microservice.service.FileServerService;
import com.xkrs.microservice.util.CopyPropertiesUtil;
import com.xkrs.microservice.util.OpenGeoGisUtil;
import com.xkrs.microservice.util.SnowFlakeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Optional;
import static com.xkrs.microservice.util.DateTimeUtil.getNowTime;
import static com.xkrs.microservice.util.DateTimeUtil.timeMillisToTime;
import static com.xkrs.microservice.util.FileUtil.multipartToFile;
import static com.xkrs.microservice.util.ZipUtil.unZip;
/**
* 数据文件服务
* @author tajochen
*/
@Service
@CacheConfig(cacheNames = "DataFileServiceCache")
public class DataFileServiceImpl implements DataFileService {
@Value("${my.TempFilePath}")
private String tempFilePath;
@Value("${my.FileServerPath}")
private String fileServerPath;
@Value("${my.gsmExePath}")
private String gsmExePath;
@Value("${my.gsmOutPath}")
private String gsmOutPath;
Logger logger = LoggerFactory.getLogger(DataFileServiceImpl.class);
@Resource
private DataFileDao dataFileDao;
@Resource
private MapServiceDao mapServiceDao;
@Resource
private RedisUtil redisUtil;
/**
* 获取所有数据文件
* @return
*/
@Cacheable(keyGenerator = "keyGenerator",unless="#result == null")
@Override
public Iterable<DataFileEntity> getAllDataFile(){
return dataFileDao.findAll();
}
/**
* 获取数据文件根据菜单代码
* @param menuCode 菜单代码
* @return
*/
@Cacheable(keyGenerator = "keyGenerator",unless="#result == null")
@Override
public Iterable<DataFileEntity> getAllDataFileByMenuCode(String menuCode){
return dataFileDao.findAllByMenuCode(menuCode);
}
/**
* 获取所有数据文件根据数据类型
* @param dataType 数据类型
* @return
*/
@Cacheable(keyGenerator = "keyGenerator",unless="#result == null")
@Override
public Iterable<DataFileEntity> getAllDataFileByDataType(String dataType){
return dataFileDao.findAllByDataType(dataType);
}
/**
* 获取文件数据根据菜单代码和数据类型和发布标记
* @param menuCode 菜单代码
* @param dataType 数据类型
* @param publishFlag 发布标记
* @return
*/
@Cacheable(keyGenerator = "keyGenerator",unless="#result == null")
@Override
public Iterable<DataFileEntity> getAllDataFileByMenuCodeAndDataTypeAndPublishFlag(String menuCode,String dataType,Integer publishFlag){
return dataFileDao.findAllByMenuCodeAndDataTypeAndPublishFlag(menuCode,dataType,publishFlag);
}
/**
* 获取数据文件根据文件代码
* @param dataFileCode 文件代码
* @return
*/
@Cacheable(keyGenerator = "keyGenerator",unless="#result == null")
@Override
public DataFileEntity getDataFileByDataFileCode(String dataFileCode){
return dataFileDao.findByDataFileCode(dataFileCode);
}
/**
* 添加数据文件
* @param dataFileEntity
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
@CacheEvict(value = "DataFileServiceCache",allEntries = true)
public ResultVo insertDataFile(DataFileEntity dataFileEntity){
ResultVo resultVo = new ResultVo();
// 设置文件代码
SnowFlakeUtil snowFlake = new SnowFlakeUtil(5, 5);
String dataFileCode = String.valueOf(snowFlake.nextId());
dataFileEntity.setDataFileCode(dataFileCode);
// 设置发布标记
dataFileEntity.setPublishFlag(0);
// 设置系统时间
dataFileEntity.setCreatedTime(getNowTime());
dataFileDao.save(dataFileEntity);
resultVo.setResultCode(0);
resultVo.setResultMessage(dataFileCode);
return resultVo;
}
@Override
public ResultVo runDataFile(DataFileQo dataFileQo) {
ResultVo resultVo = new ResultVo();
//给这个文件加个锁
redisUtil.set("runFile_" + dataFileQo.getId(),"lock",3*60*60);
DataFileEntity dataFileEntity = dataFileDao.findById(dataFileQo.getId()).get();
dataFileEntity.setRunFlag(1);
dataFileDao.save(dataFileEntity);
Optional<DataFileEntity> optional = dataFileDao.findById(dataFileQo.getId());
//线程池执行GSM操作
executeRunData(dataFileQo.getId(),optional.get().getDataFileCode(),optional.get().getLeftFilePath(),
optional.get().getRightFilePath(),
dataFileQo.getMaxX(),dataFileQo.getMaxY(),
dataFileQo.getMinX(),dataFileQo.getMinY());
resultVo.setResultCode(0);
resultVo.setResultMessage("执行成功");
return resultVo;
}
/**
* 执行文件操作
* @param id 文件的id
* @param dataFileCode 上传的文件编码
* @param leftFilePath 左影像文件
* @param rightFilePath 右影像文件
* @param maxX
* @param maxY
* @param minX
* @param minY
*/
@Async
public void executeRunData(Integer id,String dataFileCode,String leftFilePath,String rightFilePath,String maxX,String maxY,String minX,String minY){
String[] params = {gsmExePath,"-l",leftFilePath,"-r",rightFilePath,"-o",gsmOutPath + dataFileCode,
"--maxx",maxX,"--maxy",maxY,"--minx",minX,"--miny",minY};
try {
// 执行命令
Process process = Runtime.getRuntime().exec(params);
// 读取执行结果
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待执行结束
int exitCode = process.waitFor();
DataFileEntity dataFileEntity = dataFileDao.findById(id).get();
dataFileEntity.setRunFlag(2);
dataFileDao.save(dataFileEntity);
}catch (IOException | InterruptedException e){
e.printStackTrace();
// 如果出现异常将文件的运行状态改为未运行
DataFileEntity dataFileEntity = dataFileDao.findById(id).get();
dataFileEntity.setRunFlag(0);
dataFileDao.save(dataFileEntity);
}
//不管运行结果怎么样都把文件锁去掉
redisUtil.del("runFile_" + id);
}
@Override
public ResultVo uploadDataFile(DataFileQo dataFileQo, MultipartFile leftFile, MultipartFile rightFile, String userName) {
ResultVo resultVo = new ResultVo();
// 设置文件代码
SnowFlakeUtil snowFlake = new SnowFlakeUtil(5, 5);
String dataFileCode = String.valueOf(snowFlake.nextId());
File tempLeftFile = multipartToFile(leftFile,fileServerPath + "/GSM_GUI/source/" + dataFileCode + "/");
//将左影像文件加压到当前目录
unZip(tempLeftFile,tempLeftFile.getParent());
File tempRightFile = multipartToFile(rightFile,fileServerPath + "/GSM_GUI/source/" + dataFileCode + "/");
//将右影像解压到当前目录
unZip(tempRightFile,tempRightFile.getParent());
DataFileEntity dataFileEntity = new DataFileEntity();
dataFileEntity.setFileName(dataFileQo.getFileName());
dataFileEntity.setDataType(dataFileQo.getDataType());
dataFileEntity.setDataFileCode(dataFileCode);
dataFileEntity.setRemarks(dataFileQo.getRemarks());
// dataFileEntity.setLeftFileMd5(tempLeftFile.getMd5());
dataFileEntity.setLeftFileSize(tempLeftFile.length());
dataFileEntity.setLeftFilePath(tempLeftFile.getPath().replace(".zip",".tif"));
// dataFileEntity.setRightFileMd5(tempLeftFile.getMd5());
dataFileEntity.setRightFileSize(tempRightFile.length());
dataFileEntity.setRightFilePath(tempRightFile.getPath().replace(".zip",".tif"));
// 设置发布标记
dataFileEntity.setPublishFlag(0);
dataFileEntity.setRunFlag(0);
dataFileEntity.setCreatedBy(userName);
// 设置系统时间
dataFileEntity.setCreatedTime(getNowTime());
dataFileDao.save(dataFileEntity);
return resultVo;
}
/**
* 删除数据文件
* @param id 编号
*/
@Transactional(rollbackFor=Exception.class)
@Override
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true),
@CacheEvict(value = "DataFileServiceCache",allEntries = true)})
public int deleteDataFile(Integer id){
Optional<DataFileEntity> dataFileEntityOptional = dataFileDao.findById(id);
if(dataFileEntityOptional.isPresent()){
// 删除文件对应地图服务,解散图层组
dataFileDao.deleteById(id);
Iterable<MapServiceEntity> mapServiceEntityIterable = mapServiceDao.findAllByDataFileCode(dataFileEntityOptional.get().getDataFileCode());
for(MapServiceEntity mapServiceEntity:mapServiceEntityIterable){
mapServiceDao.deleteById(mapServiceEntity.getId());
List<MapServiceEntity> mapServiceEntityList = mapServiceDao.findAllByLayerGroupCode(mapServiceEntity.getLayerGroupCode());
// 设置图层组代码为空
for(MapServiceEntity mapServiceEntityOne:mapServiceEntityList){
mapServiceEntityOne.setLayerGroupCode("");
mapServiceEntityOne.setLayerGroupOrder(0);
mapServiceDao.save(mapServiceEntityOne);
}
}
return 0;
}
return 1;
}
}

View File

@@ -0,0 +1,151 @@
package com.xkrs.microservice.service.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xkrs.microservice.model.vo.FileServerResultVo;
import com.xkrs.microservice.model.vo.FileServiceResDetailVo;
import com.xkrs.microservice.service.FileServerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import static com.xkrs.microservice.common.tool.FileServerManageTool.postFileManage;
import static com.xkrs.microservice.util.RequestUtil.postFile;
/**
* 文件服务器接口
* @author tajochen
*/
@Service
public class FileServerServiceImpl implements FileServerService {
Logger logger = LoggerFactory.getLogger(FileServerServiceImpl.class);
@Value("${my.FileServerAdminAdress}")
private String fileServerAdminAdress;
@Value("${my.FileServerAdress}")
private String fileServerAdress;
@Value("${my.FileServerPath}")
private String fileServerPath;
/**
* 上传文件
* @param theFile 本地文件
* @param path 文件服务器路径
* @return
*/
@Override
public FileServiceResDetailVo uploadFile(File theFile, String path){
Map<String,String> postParam = new HashMap<>(16);
postParam.put("output","json");
postParam.put("path",path);
postParam.put("scene","");
String resFileServer = postFile(theFile, fileServerAdress+"/gsm/upload", postParam);
ObjectMapper objectMapper = new ObjectMapper();
FileServiceResDetailVo result = null;
try {
result = objectMapper.readValue(resFileServer,FileServiceResDetailVo.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return result;
}
/**
* 获取文件统计信息
* @return
*/
@Override
public FileServerResultVo getFileStat(){
String requestUrl = fileServerAdminAdress + "/group1/stat";
Map<String,String> map = new HashMap<>(16);
return postFileManage(requestUrl,map);
}
/**
* 删除文件
* @param md5 信息摘要
* @param path 路径
* @return
*/
@Override
public FileServerResultVo deleteFile(String md5,String path){
String requestUrl = fileServerAdminAdress + "/group1/delete";
Map<String,String> map = new HashMap<>(16);
if(md5 != null && !md5.isEmpty()){
map.put("md5",md5);
}
if(path != null && !path.isEmpty()){
map.put("path",path);
}
return postFileManage(requestUrl,map);
}
/**
* 获取文件信息
* @param md5 信息摘要
* @param path 路径
* @return
*/
@Override
public FileServerResultVo getFileInfo(String md5,String path){
String requestUrl = fileServerAdminAdress + "/group1/get_file_info";
Map<String,String> map = new HashMap<>(16);
if(md5 != null && !md5.isEmpty()){
map.put("md5",md5);
}
if(path != null && !path.isEmpty()){
map.put("path",path);
}
return postFileManage(requestUrl,map);
}
/**
* 获取文件列表
* @param dir 目录名
* @return
*/
@Override
public FileServerResultVo getFileList(String dir){
String requestUrl = fileServerAdminAdress + "/group1/list_dir";
Map<String,String> map = new HashMap<>(16);
map.put("dir",dir);
return postFileManage(requestUrl,map);
}
/**
* 修复统计信息
* @param date 要修复的日期格式如20190725
* @return
*/
@Override
public FileServerResultVo getFileRepairStat(String date){
String requestUrl = fileServerAdminAdress + "/group1/repair_stat";
Map<String,String> map = new HashMap<>(16);
map.put("date",date);
return postFileManage(requestUrl,map);
}
/**
* 同步失败修复
* @param force 是否强行修复(0|1)
* @return
*/
@Override
public FileServerResultVo getFileRepair(String force){
String requestUrl = fileServerAdminAdress + "/group1/repair";
Map<String,String> map = new HashMap<>(16);
map.put("force",force);
return postFileManage(requestUrl,map);
}
}

View File

@@ -0,0 +1,311 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.dao.DataFileDao;
import com.xkrs.microservice.dao.MapServiceDao;
import com.xkrs.microservice.model.entity.DataFileEntity;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import com.xkrs.microservice.model.qo.MapServiceQo;
import com.xkrs.microservice.model.vo.MapLayerGroupVo;
import com.xkrs.microservice.service.MapServiceService;
import com.xkrs.microservice.util.CopyPropertiesUtil;
import com.xkrs.microservice.util.SnowFlakeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import static com.xkrs.microservice.util.DateTimeUtil.*;
import static com.xkrs.microservice.util.DateTimeUtil.timeMillisToTime;
/**
* 地图服务管理接口
* @author tajochen
*/
@Service
@CacheConfig(cacheNames = "MapServiceCache")
public class MapServiceServiceServiceImpl implements MapServiceService {
Logger logger = LoggerFactory.getLogger(MapServiceServiceServiceImpl.class);
@Resource
private MapServiceDao mapServiceDao;
@Resource
private DataFileDao dataFileDao;
/**
* 获取所有地图服务
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<MapServiceEntity> getAllService(){
return mapServiceDao.findAll();
}
/**
* 获取指定菜单编号的地图服务
* @param menuCode 菜单编号
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<MapServiceEntity> getByMenuCode(String menuCode){
return mapServiceDao.findAllByMenuCode(menuCode);
}
/**
* 获取指定图层名称的地图服务
* @param layerName 图层名称
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public List<MapServiceEntity> getByLayerName(String layerName){
return mapServiceDao.findAllByLayerName(layerName);
}
/**
* 获取指定id的地图服务
* @param id 产品编号
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Optional<MapServiceEntity> getById(Integer id){
return mapServiceDao.findById(id);
}
/**
* 获取指定类型的所有地图服务
* @param productType 产品类型
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<MapServiceEntity> getByProductType(String productType){
return mapServiceDao.findAllByProductType(productType);
}
/**
* 获取指定类型和行政区划的所有服务
* @param admCode 行政区划
* @param productType 产品类型
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<MapServiceEntity> getByAdmCodeAndProductType(Integer admCode, String productType) {
return mapServiceDao.findAllByProductTypeAndAdmCode(productType,admCode);
}
/**
* 新增地图服务记录
* @param mapServiceQo
* @param userName 用户名
*/
@Transactional(rollbackFor=Exception.class)
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true),
@CacheEvict(value = "DataFileServiceCache",allEntries = true)})
@Override
public void add(MapServiceQo mapServiceQo, String userName){
MapServiceEntity mapservice = new MapServiceEntity();
CopyPropertiesUtil.copy(mapServiceQo, mapservice);
mapservice.setProductStartTime(timeMillisToTime(mapServiceQo.getProductStartTimeTs()));
mapservice.setProductEndTime(timeMillisToTime(mapServiceQo.getProductEndTimeTs()));
// 设置添加用户
mapservice.setCreatedBy(userName);
// 设置系统时间
mapservice.setCreatedTime(getNowTime());
// 获取原始文件
DataFileEntity dataFileEntity = dataFileDao.findByDataFileCode(mapservice.getDataFileCode());
// 设置发布标记
dataFileEntity.setPublishFlag(1);
mapServiceDao.save(mapservice);
dataFileDao.save(dataFileEntity);
};
/**
* 修改指定编号的地图服务
* @param mapServiceQo 地图服务修改
* @param userName 地图服务
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true)})
@Override
public int updateById(MapServiceQo mapServiceQo, String userName){
Optional<MapServiceEntity> mapServiceEntityOptional = mapServiceDao.findById(mapServiceQo.getId());
if(mapServiceEntityOptional.isEmpty()){
return 1;
}
mapServiceEntityOptional.get().setRemarks(mapServiceQo.getRemarks());
mapServiceEntityOptional.get().setStyleName(mapServiceQo.getStyleName());
mapServiceEntityOptional.get().setProductStartTime(timeMillisToTime(mapServiceQo.getProductStartTimeTs()));
mapServiceEntityOptional.get().setProductEndTime(timeMillisToTime(mapServiceQo.getProductEndTimeTs()));
mapServiceEntityOptional.get().setAdmCode(mapServiceQo.getAdmCode());
mapServiceEntityOptional.get().setAdmName(mapServiceQo.getAdmName());
mapServiceEntityOptional.get().setLayerShowName(mapServiceQo.getLayerShowName());
// 图层组不改变
mapServiceEntityOptional.get().setLayerGroupCode(mapServiceEntityOptional.get().getLayerGroupCode());
// 设置修改用户
mapServiceEntityOptional.get().setUpdatedBy(userName);
// 设置系统时间
mapServiceEntityOptional.get().setUpdatedTime(getNowTime());
mapServiceDao.save(mapServiceEntityOptional.get());
return 0;
}
/**
* 删除地图服务
* @param id 编号
*/
@Transactional(rollbackFor=Exception.class)
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true),
@CacheEvict(value = "DataFileServiceCache",allEntries = true)})
@Override
public int delete(Integer id){
Optional<MapServiceEntity> mapServiceEntityOptional = mapServiceDao.findById(id);
if(mapServiceEntityOptional.isPresent()){
// 解散图层组
if(!mapServiceEntityOptional.get().getLayerGroupCode().isEmpty()){
List<MapServiceEntity> mapServiceEntityList = mapServiceDao.findAllByLayerGroupCode(mapServiceEntityOptional.get().getLayerGroupCode());
// 设置图层组代码为空
for(MapServiceEntity mapServiceEntity:mapServiceEntityList){
mapServiceEntity.setLayerGroupCode("");
mapServiceEntity.setLayerGroupOrder(0);
mapServiceDao.save(mapServiceEntity);
}
}
// 文件标识改回未发布
DataFileEntity dataFileEntity = dataFileDao.findByDataFileCode(mapServiceEntityOptional.get().getDataFileCode());
dataFileEntity.setPublishFlag(0);
dataFileDao.save(dataFileEntity);
mapServiceDao.deleteById(id);
return 0;
}
return 1;
}
/**
* 获取指定菜单下的图层组
* @param menuCode 产品类型
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public List<MapLayerGroupVo> getAllMapLayerGroupByMenuCode(String menuCode){
List<MapLayerGroupVo> res = new ArrayList<>();
List<MapServiceEntity> oriMapServiceList = mapServiceDao.findAllByMenuCode(menuCode);
// 图层组列表
List<String> groupCodes = new ArrayList<>();
for(MapServiceEntity obj: oriMapServiceList){
if(!groupCodes.contains(obj.getLayerGroupCode()) ){
// 新建图层组Vo
MapLayerGroupVo mapLayerGroupVo = new MapLayerGroupVo();
List<MapServiceEntity> list = new ArrayList<>();
mapLayerGroupVo.setCount(1);
mapLayerGroupVo.setLayerGroupCode(obj.getLayerGroupCode());
list.add(obj);
mapLayerGroupVo.setLayers(list);
groupCodes.add(obj.getLayerGroupCode());
// 追加结果
res.add(mapLayerGroupVo);
} else {
// 更新图层组Vo
for(MapLayerGroupVo resVo: res){
// 查找相同图层
if(Objects.equals(resVo.getLayerGroupCode(), obj.getLayerGroupCode())){
resVo.setCount(resVo.getCount()+1);
List<MapServiceEntity> list = resVo.getLayers();
list.add(obj);
resVo.setLayers(list);
}
}
}
}
return res;
}
/**
* 获取指定菜单下的图层组
* @param layerGroupCode 图层组代码
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public List<MapServiceEntity> getAllMapLayerGroupByLayerGroupCode(String layerGroupCode){
return mapServiceDao.findAllByLayerGroupCode(layerGroupCode);
}
/**
* 创建图层组
* @param layerIds 图层组ids
* @param layerGroupOrdersAraNum 图层组顺序
* @param userName 用户名
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true)})
@Override
public int createMapLayerGroup(Integer[] layerIds,Integer[] layerGroupOrdersAraNum,String userName){
List<MapServiceEntity> mapServiceEntityList = new ArrayList<>();
for(Integer id:layerIds){
Optional<MapServiceEntity> mapServiceEntityOptional = mapServiceDao.findById(id);
if(mapServiceEntityOptional.isEmpty()){
return 1;
}
mapServiceEntityList.add(mapServiceEntityOptional.get());
}
// 设置图层组编号
SnowFlakeUtil snowFlake = new SnowFlakeUtil(5, 5);
String layerGroupCode = String.valueOf(snowFlake.nextId());
int n = 0;
// 设置图层组和图层顺序
for(MapServiceEntity mapServiceEntity:mapServiceEntityList){
mapServiceEntity.setLayerGroupCode(layerGroupCode);
mapServiceEntity.setLayerGroupOrder(layerGroupOrdersAraNum[n]);
mapServiceDao.save(mapServiceEntity);
n=n+1;
}
return 0;
}
/**
* 解散图层组
* @param layerId 图层组id
* @param userName 用户名
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Caching(evict={@CacheEvict(value = "MapServiceCache",allEntries = true)})
@Override
public int dismissMapLayerGroup(Integer layerId,String userName){
Optional<MapServiceEntity> mapServiceEntityOptional = mapServiceDao.findById(layerId);
if(mapServiceEntityOptional.isEmpty()){
return 1;
}
String layerGroupCode = mapServiceEntityOptional.get().getLayerGroupCode();
List<MapServiceEntity> mapServiceEntityList = mapServiceDao.findAllByLayerGroupCode(layerGroupCode);
// 设置图层组代码为空
for(MapServiceEntity mapServiceEntity:mapServiceEntityList){
mapServiceEntity.setLayerGroupCode("");
mapServiceEntity.setLayerGroupOrder(0);
mapServiceDao.save(mapServiceEntity);
}
return 0;
}
}

View File

@@ -0,0 +1,29 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.dao.SysAuthorityDao;
import com.xkrs.microservice.model.entity.SysAuthorityEntity;
import com.xkrs.microservice.service.SysAuthorityService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 系统权限服务实现
* @author tajochen
*/
@Service
public class SysAuthorityServiceImpl implements SysAuthorityService {
Logger logger = LoggerFactory.getLogger(SysAuthorityServiceImpl.class);
@Resource
private SysAuthorityDao sysAuthorityDao;
@Override
public List<SysAuthorityEntity> getSysAuthorityListByUserName(String userName) {
return sysAuthorityDao.selectByUserName(userName);
}
}

View File

@@ -0,0 +1,143 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.dao.DataFileDao;
import com.xkrs.microservice.dao.MapServiceDao;
import com.xkrs.microservice.dao.SysMenuDao;
import com.xkrs.microservice.model.entity.DataFileEntity;
import com.xkrs.microservice.model.entity.MapServiceEntity;
import com.xkrs.microservice.model.entity.SysMenuEntity;
import com.xkrs.microservice.service.SysMenuService;
import com.xkrs.microservice.util.SnowFlakeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
import static com.xkrs.microservice.util.DateTimeUtil.getNowTime;
/**
* 系统菜单服务接口
* @author tajochen
*/
@Service
@CacheConfig(cacheNames = "SysMenuServiceCache")
public class SysMenuServiceImpl implements SysMenuService {
Logger logger = LoggerFactory.getLogger(SysMenuServiceImpl.class);
@Resource
private SysMenuDao sysMenuDao;
@Resource
private MapServiceDao mapServiceDao;
@Resource
private DataFileDao dataFileDao;
/**
* 获取所有系统菜单服务
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<SysMenuEntity> getAllSysMenu(){
return sysMenuDao.findAll();
}
/**
* 获取系统菜单服务根据菜单代码
* @param menuCode 菜单代码
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<SysMenuEntity> getSysMenuByMenuCode(String menuCode){
return sysMenuDao.findAllByMenuCode(menuCode);
}
/**
* 获取系统菜单服务根据菜单代码
* @param menuName 菜单代码
* @return
*/
@Cacheable(keyGenerator = "keyGenerator", unless="#result == null")
@Override
public Iterable<SysMenuEntity> getSysMenuByMenuName(String menuName){
return sysMenuDao.findAllByMenuNameLike(menuName);
}
/**
* 添加系统菜单服务
* @param sysMenuEntity
* @return
*/
@Transactional(rollbackFor=Exception.class)
@CacheEvict(value = "SysMenuServiceCache",allEntries = true)
@Override
public void insertSysMenu(SysMenuEntity sysMenuEntity){
// 设置菜单代码
SnowFlakeUtil snowFlake = new SnowFlakeUtil(5, 5);
sysMenuEntity.setMenuCode(String.valueOf(snowFlake.nextId()));
// 设置系统时间
sysMenuEntity.setCreatedTime(getNowTime());
sysMenuDao.save(sysMenuEntity);
}
/**
* 修改系统菜单服务
* @param sysMenuEntity
* @return
*/
@Transactional(rollbackFor=Exception.class)
@CacheEvict(value = "SysMenuServiceCache",allEntries = true)
@Override
public void updateSysMenu(SysMenuEntity sysMenuEntity){
Optional<SysMenuEntity> oldSysMenu = sysMenuDao.findById(sysMenuEntity.getId());
if(oldSysMenu.isPresent()){
sysMenuEntity.setMenuCode(oldSysMenu.get().getMenuCode());
// 设置系统时间
sysMenuEntity.setUpdatedTime(getNowTime());
sysMenuDao.save(sysMenuEntity);
}
}
/**
* 删除系统菜单服务
* @param id 编号
* @return
*/
@Transactional(rollbackFor=Exception.class)
@CacheEvict(value = "SysMenuServiceCache",allEntries = true)
@Override
public int deleteSysMenu(Integer id){
Optional<SysMenuEntity> sysMenuEntityOptional = sysMenuDao.findById(id);
if(sysMenuEntityOptional.isEmpty()){
return 1;
}
// 检查是否关联子菜单
List<SysMenuEntity> sysMenuEntityList= sysMenuDao.findAllByParentCode(sysMenuEntityOptional.get().getMenuCode());
if(sysMenuEntityList.size()>0){
return 2;
}
// 检查有无关联数据文件
List<DataFileEntity> dataFileEntityList = dataFileDao.findAllByMenuCode(sysMenuEntityOptional.get().getMenuCode());
if(dataFileEntityList.size()>0){
return 3;
}
// 检查有无关联地图服务
List<MapServiceEntity> mapServiceEntityList = mapServiceDao.findAllByMenuCode(sysMenuEntityOptional.get().getMenuCode());
if(mapServiceEntityList.size()>0){
return 4;
}
sysMenuDao.deleteById(id);
return 0;
}
}

View File

@@ -0,0 +1,29 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.dao.SysRoleDao;
import com.xkrs.microservice.model.entity.SysRoleEntity;
import com.xkrs.microservice.service.SysRoleService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 系统角色服务实现
* @author tajochen
*/
@Service
public class SysRoleServiceImpl implements SysRoleService {
Logger logger = LoggerFactory.getLogger(SysRoleServiceImpl.class);
@Resource
private SysRoleDao sysRoleDao;
@Override
public List<SysRoleEntity> getSysRoleListByUserName(String userName) {
return sysRoleDao.selectByUserName(userName);
}
}

View File

@@ -0,0 +1,242 @@
package com.xkrs.microservice.service.impl;
import com.xkrs.microservice.common.config.RedisUtil;
import com.xkrs.microservice.dao.SysRoleDao;
import com.xkrs.microservice.dao.SysUserDao;
import com.xkrs.microservice.model.entity.SysRoleEntity;
import com.xkrs.microservice.model.entity.SysUserEntity;
import com.xkrs.microservice.model.qo.SysUserQo;
import com.xkrs.microservice.model.vo.SysUserVo;
import com.xkrs.microservice.service.SysUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.crypto.keygen.KeyGenerators;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.regex.Pattern;
import static com.xkrs.microservice.util.DateTimeUtil.*;
import static com.xkrs.microservice.util.EncryptDecryptUtil.encrypt256;
/**
* 系统用户服务实现
* @author tajochen
*/
@Service
public class SysUserServiceImpl implements SysUserService {
Logger logger = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Resource
private SysUserDao sysUserDao;
@Resource
private SysRoleDao sysRoleDao;
/**
* 获取指定用户Vo
* @param userName 用户名
* @return
*/
@Override
public SysUserVo getSysUserVoByUserName(String userName){
return sysUserDao.selectSysUserByUserName(userName);
}
/**
* 获取指定手机号用户
* @param telephone 手机号
* @return
*/
@Override
public SysUserVo findByTelephone(String telephone){
return sysUserDao.findByTelephone(telephone);
}
/**
* 用户头像更新
* @param userName 用户名
* @param portraitId 编号
* @return
*/
@Override
public int updateSysUserPortrait(String userName,Integer portraitId){
SysUserEntity sysUserEntity = sysUserDao.findByUserName(userName);
if(sysUserEntity==null){
return 1;
}
sysUserEntity.setPortraitId(portraitId);
sysUserDao.save(sysUserEntity);
return 0;
}
/**
* 用户密码更新
* @param userName 用户名
* @param oldPassword 旧密码
* @param newPassword 新密码
* @return
*/
@Override
public int updateSysUserPassword(String userName,String oldPassword,String newPassword){
// 检查旧密码是否正确
SysUserEntity sysUserEntity = sysUserDao.findByUserName(userName);
if(sysUserEntity==null){
return 1;
}
String oldPasswordStr = encrypt256(oldPassword + sysUserEntity.getSalt());
// 如果旧密码不正确
if(!oldPasswordStr.equals(sysUserEntity.getPassword())){
return 2;
}
String pattern = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,16}$";
boolean isMatch = Pattern.matches(pattern, newPassword);
// 如果新密码不符合规则
if(!isMatch){
return 3;
}
String salt = KeyGenerators.string().generateKey();
sysUserEntity.setSalt(salt);
sysUserEntity.setPassword(encrypt256(newPassword + salt));
sysUserDao.save(sysUserEntity);
return 0;
}
/**
* 检查用户名是否存在
* @param userName 用户名
* @return
*/
@Override
public boolean checkUserName(String userName) {
if(userName==null){
return false;
}
int num = sysUserDao.checkUserName(userName);
return (num == 0);
}
/**
* 禁用用户账号
* @param userName
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int disableSysUser(String userName){
SysUserEntity sysUserEntity = sysUserDao.findByUserName(userName);
sysUserEntity.setStatusCode(2);
sysUserDao.save(sysUserEntity);
return 1;
}
/**
* 启用用户账号
* @param userName
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int enableSysUser(String userName){
SysUserEntity sysUserEntity = sysUserDao.findByUserName(userName);
sysUserEntity.setStatusCode(0);
sysUserDao.save(sysUserEntity);
return 1;
}
/**
* 新增用户
* @param sysUserQo
*/
@Transactional(rollbackFor=Exception.class)
@Override
public void addUser(SysUserQo sysUserQo) {
String salt = KeyGenerators.string().generateKey();
SysUserEntity sysUserEntity = new SysUserEntity();
sysUserEntity.setUserName(sysUserQo.getUserName());
sysUserEntity.setUserCode(sysUserQo.getUserCode());
sysUserEntity.setNickName(sysUserQo.getNickName());
sysUserEntity.setRealName(sysUserQo.getRealName());
sysUserEntity.setIdCard(sysUserQo.getIdCard());
sysUserEntity.setAddress(sysUserQo.getAddress());
sysUserEntity.setAdmCode(sysUserQo.getAdmCode());
if(sysUserQo.getBirthdayTs()!=null){
sysUserEntity.setBirthday(timeMillisToDate(sysUserQo.getBirthdayTs()));
}
sysUserEntity.setEmail(sysUserQo.getEmail());
sysUserEntity.setSalt(salt);
sysUserEntity.setPassword(encrypt256(sysUserQo.getPassword() + salt));
sysUserEntity.setSex(sysUserQo.getSex());
sysUserEntity.setTelephone(sysUserQo.getTelephone());
sysUserEntity.setSignature(sysUserQo.getSignature());
sysUserEntity.setPortraitId(sysUserQo.getPortraitId());
sysUserEntity.setMemo(sysUserQo.getMemo());
// 设置账户默认状态
sysUserEntity.setActiveFlag(0);
sysUserEntity.setStatusCode(0);
sysUserEntity.setCreatedTime(getNowTime());
sysUserEntity.setDeleteFlag(0);
sysUserDao.save(sysUserEntity);
// 设置账户默认角色
sysRoleDao.insertRelUserRole(sysUserEntity.getUserName(),"role_general_user");
}
/**
* 查询所有用户Vo
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public Iterable<SysUserVo> getAllSysUser() {
Iterable<SysUserVo> ls = sysUserDao.selectAllSysUser();
return ls;
}
@Transactional(rollbackFor=Exception.class)
@Override
public SysUserEntity getSysUserByUserName(String userName) {
return sysUserDao.selectByUserName(userName);
}
@Transactional(rollbackFor=Exception.class)
@Override
public int updateSysUserLogin(String userName,String ipAddress) {
return sysUserDao.updateSysUserLogin(userName,ipAddress);
}
/**
* 更新用户
* @param sysUserQo
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateSysUser(SysUserQo sysUserQo) {
SysUserEntity sysUserEntity = new SysUserEntity();
sysUserEntity.setNickName(sysUserQo.getNickName());
sysUserDao.save(sysUserEntity);
return 1;
}
/**
* 软删除普通用户
* @param id 编号
* @return
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int softDeleteGeneralUser(Integer id) {
List<SysRoleEntity> list = sysRoleDao.selectByUserId(id);
if(list.size()>0){
SysRoleEntity sysRoleEntity = list.get(1);
sysUserDao.softDeleteGeneralUserById(id);
return 0;
}
return 1;
}
}

View File

@@ -0,0 +1,173 @@
package com.xkrs.microservice.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xkrs.microservice.model.vo.AliWeatherBaseVo;
import com.xkrs.microservice.model.vo.AliWeatherAllVo;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
/**
* 高德地图天气工具
* @author wd
* @date 2021/2/1
*/
public class AliMapWeather {
private static final Logger log = LoggerFactory.getLogger(AliMapWeather.class);
/**
* 获取天气预报
* @return
*/
public static AliWeatherAllVo getForecast(String key, int cityCode, String extensions) {
String forecastWeather = getForecastWeather(key, cityCode, extensions);
ObjectMapper objectMapper = new ObjectMapper();
AliWeatherAllVo aliWeatherAllVo = null;
try {
aliWeatherAllVo = objectMapper.readValue(forecastWeather, AliWeatherAllVo.class);
} catch (JsonProcessingException e) {
log.error("objectMapper出错获取天气预报{}", e.getMessage());
}
return aliWeatherAllVo;
}
/**
* 获取天气实况
* @return
*/
public static AliWeatherBaseVo getLives(String key, int cityCode, String extensions) {
String forecastWeather = getForecastWeather(key, cityCode, extensions);
ObjectMapper objectMapper = new ObjectMapper();
AliWeatherBaseVo aliWeatherBaseVo = null;
try {
aliWeatherBaseVo = objectMapper.readValue(forecastWeather, AliWeatherBaseVo.class);
} catch (JsonProcessingException e) {
log.error("objectMapper出错获取天气预报{}", e.getMessage());
}
return aliWeatherBaseVo;
}
public static String getForecastWeather(String key, int cityCode, String extensions) {
// 请求成功标志
boolean isSuccess = false;
// 重复次数
int retryTimes = 3;
// String key = "175e6f5cc5469125bf7c49ea5371e9c0";
// int cityCode = 370100;
// String extensions = "all";
String url = String.format("https://restapi.amap.com/v3/weather/weatherInfo?key=%s&city=%d&extensions=%s", key, cityCode, extensions);
CloseableHttpResponse response = null;
String line;
String result = "";
AliWeatherAllVo aliWeatherAllVo;
AliWeatherBaseVo aliWeatherBaseVo;
Map<String, String> map = new HashMap<>(3);
while (!isSuccess && retryTimes > 0) {
// 创建http对象
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setSocketTimeout(60000).setConnectTimeout(60000)
.setConnectionRequestTimeout(60000)
.build();
CloseableHttpClient client = HttpClients.custom()
.setDefaultRequestConfig(defaultRequestConfig).build();
// 创建并设置URI
URIBuilder uri;
// 创建Get请求
HttpGet get = null;
try {
uri = new URIBuilder(url);
get = new HttpGet(uri.build());
} catch (Exception e) {
log.info("{}", (Object) e.getStackTrace());
}
//发送请求
HttpEntity entity;
InputStream is = null;
BufferedReader br = null;
try {
response = client.execute(get);
// 获取请求结果
entity = response.getEntity();
is = entity.getContent();
br = new BufferedReader(
new InputStreamReader(is, StandardCharsets.UTF_8)
);
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
result = sb.toString();
isSuccess = true;
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
retryTimes --;
log.info("请求超时等问题{}", (Object) e.getStackTrace());
} catch (IOException e) {
retryTimes --;
log.info("I/O问题{}", (Object) e.getStackTrace());
} finally {
closeConn(is, br, response, client);
}
}
return result;
}
/**
* 关闭连接
* @param is InputStream
* @param br BufferedReader
* @param response CloseableHttpResponse
* @param client CloseableHttpClient
*/
private static void closeConn(InputStream is, BufferedReader br, CloseableHttpResponse response,
CloseableHttpClient client ){
try {
if (null != is){
is.close();
}
if (null != br){
br.close();
}
if (null != response){
response.close();
}
if (null != client){
client.close();
}
} catch (IOException e) {
log.info("IO异常{}", (Object) e.getStackTrace());
}
}
public static void main(String[] args){
String key = "175e6f5cc5469125bf7c49ea5371e9c0";
int cityCode = 370100;
String all = "all";
String base = "base";
AliWeatherAllVo forecast = getForecast(key, cityCode, all);
AliWeatherBaseVo lives = getLives(key, cityCode, base);
getForecastWeather(key, cityCode, base);
}
}

View File

@@ -0,0 +1,42 @@
package com.xkrs.microservice.util;
import com.aliyun.dysmsapi20170525.models.*;
import com.aliyun.teaopenapi.models.*;
/**
* 阿里巴巴短信工具
* @author tajochen
*/
public class AliMsgUtil {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId 访问秘钥id
* @param accessKeySecret 访问密钥密码
* @return Client
* @throws Exception
*/
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
Config config = new Config()
// 您的AccessKey ID
.setAccessKeyId(accessKeyId)
// 您的AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// 访问的域名
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
public static void main(String[] args1) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args1);
com.aliyun.dysmsapi20170525.Client client = AliMsgUtil.createClient("LTAI5tMSjLfu8Xu2w6WeguFF", "hvqM5zpi72hvX4VXM71wq6AE0XYtDI");
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setSignName("青岛星科瑞升")
.setTemplateCode("SMS_221082764")
.setTemplateParam("{\"code\":\"123456\"}")
.setPhoneNumbers("123456789,123456798");
// 复制代码运行请自行打印 API 的返回值
SendSmsResponse response = client.sendSms(sendSmsRequest);
System.out.println(response);
}
}

View File

@@ -0,0 +1,52 @@
package com.xkrs.microservice.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* 复制源对象的属性值
* @author tajochen
*/
public class CopyPropertiesUtil {
/**
* 复制源对象和目标对象的属性值
* @param source 源对象
* @param target 目标对象
*/
public static void copy(Object source, Object target) {
//得到对象的Class
Class<?> sourceClass = source.getClass();
Class<?> targetClass = target.getClass();
//得到Class对象的所有属性
Field[] sourceFields = sourceClass.getDeclaredFields();
Field[] targetFields = targetClass.getDeclaredFields();
for(Field sourceField : sourceFields){
//属性名
String name = sourceField.getName();
//属性类型
Class<?> type = sourceField.getType();
String methodName = name.substring(0, 1).toUpperCase() + name.substring(1);
try{
//得到属性对应get方法
Method getMethod = sourceClass.getMethod("get" + methodName);
//执行源对象的get方法得到属性值
Object value = getMethod.invoke(source);
//目标对象的属性名
for(Field targetField : targetFields){
String targetName = targetField.getName();
if(targetName.equals(name)){
//属性对应的set方法
Method setMethod = targetClass.getMethod("set" + methodName, type);
//执行目标对象的set方法
setMethod.invoke(target, value);
}
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,211 @@
package com.xkrs.microservice.util;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 日期时间工具
* @author tajochen
*/
public class DateTimeUtil {
private final static String COMMON_PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
private final static String COMMON_PATTERN_DATE = "yyyy-MM-dd";
private final static String COMMON_PATTERN_DATE_NO_LINE = "yyyyMMdd";
private final static DateTimeFormatter COMMON_FORMATTER_DATETIME = DateTimeFormatter.ofPattern(COMMON_PATTERN_DATETIME);
private final static DateTimeFormatter COMMON_FORMATTER_DATE = DateTimeFormatter.ofPattern(COMMON_PATTERN_DATE);
private final static DateTimeFormatter COMMON_FORMATTER_DATE_NO_LINE = DateTimeFormatter.ofPattern(COMMON_PATTERN_DATE_NO_LINE);
private final static ZoneOffset DEFAULT_ZONE_OFFSET = ZoneOffset.of("+8");
/**
* 字符串转LocalDate
* @param dateStr 日期字符串
* @return
*/
public static LocalDate stringToDate(String dateStr) {
assert dateStr != null;
return LocalDate.parse(dateStr, COMMON_FORMATTER_DATE);
}
/**
* LocalDate转字符串
* @param date 日期
* @return
*/
public static String dateToString(LocalDate date) {
assert date != null;
return COMMON_FORMATTER_DATE.format(date);
}
/**
* LocalDate转字符串无横线
* @param date 日期
* @return
*/
public static String dateToStringNoLine(LocalDate date) {
assert date != null;
return COMMON_FORMATTER_DATE_NO_LINE.format(date);
}
/**
* LocalDateTime转字符串
* @param dateTime 日期时间
* @return
*/
public static String dateTimeToString(LocalDateTime dateTime) {
assert dateTime != null;
return COMMON_FORMATTER_DATETIME.format(dateTime);
}
/**
* 字符串转LocalDateTime
* @param dateTimeStr 日期时间字符串
* @return
*/
public static LocalDateTime stringToDateTime(String dateTimeStr) {
assert dateTimeStr != null;
return LocalDateTime.parse(dateTimeStr, COMMON_FORMATTER_DATETIME);
}
/**
* 字符串转Instant时间戳
* @param str 字符串
* @return
*/
public static Instant stringToInstant(String str) {
assert str != null;
return stringToDateTime(str).toInstant(DEFAULT_ZONE_OFFSET);
}
/**
* LocalDateTime转字符串格式化
* @param dateTime 日期时间
* @param formatter 格式化标准
* @return
*/
public static String dateToStringFormatter(LocalDateTime dateTime, DateTimeFormatter formatter) {
assert dateTime != null;
return formatter.format(dateTime);
}
/**
* 字符串转LocalDateTime格式化
* @param dateTimeStr 日期时间字符串
* @param formatter 格式化标准
* @return
*/
public static LocalDateTime stringToDateTimeFormatter(String dateTimeStr, DateTimeFormatter formatter) {
assert dateTimeStr != null;
return LocalDateTime.parse(dateTimeStr, formatter);
}
/**
* 字符串转 local date
* @param dateStr 日期字符串
* @return
*/
public static LocalDate stringToDateFormatter(String dateStr){
return LocalDate.parse(dateStr, COMMON_FORMATTER_DATE);
}
/**
* 日期转时间戳
* @param dateTime 日期时间
* @return
*/
public static long dateToTimeMillis(LocalDateTime dateTime) {
assert dateTime != null;
return dateTime.toInstant(DEFAULT_ZONE_OFFSET).toEpochMilli();
}
/**
* 时间戳转日期
* @param timeMillis 时间戳(长整型)
* @return
*/
public static LocalDate timeMillisToDate(long timeMillis) {
return Instant.ofEpochMilli(timeMillis).atZone(DEFAULT_ZONE_OFFSET).toLocalDate();
}
/**
* 时间戳转时间
* @param timeMillis 时间戳(长整型)
* @return
*/
public static LocalDateTime timeMillisToTime(long timeMillis) {
return LocalDateTime.ofEpochSecond(timeMillis,0, DEFAULT_ZONE_OFFSET);
}
/**
* 获取当前时间 hh:mm:ss:nnn
* @return
*/
public static LocalDateTime getNowTime() {
return LocalDateTime.now();
}
/**
* 获取当前日期 yyyy-MM-dd
* @return
*/
public static LocalDate getToday() {
return LocalDate.now();
}
/**
* 获取当前 Instant 时间戳
* @return
*/
public static Instant getInstant() {
return Instant.now();
}
/**
* 判断日期格式是否合法 "yyyy-MM-dd"
* @param strDate 日期字符串
* @return
*/
public static boolean isValidDate(String strDate) {
final int minLen = 10;
if(strDate == null || strDate.length() < minLen) {
return false;
}
//正则表达式校验日期格式 yyyy-MM-dd
String eL = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-" +
"(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|" +
"((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)" +
"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|" +
"1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))" +
"|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)";
Pattern pat = Pattern.compile(eL);
Matcher matcher = pat.matcher(strDate);
return matcher.matches();
}
/**
* 判断时间格式 格式必须为 "YYYY-MM-DD HH:mm:ss"
* @param sDateTime 日期时间字符串
* @return
*/
public static boolean isValidDateTime(String sDateTime) {
final int minLen = 19;
if ((sDateTime == null) || (sDateTime.length() < minLen)) {
return false;
}
String eL = "(((01[0-9]{2}|0[2-9][0-9]{2}|[1-9][0-9]{3})-(0?[13578]|1[02])-" +
"(0?[1-9]|[12]\\\\d|3[01]))|((01[0-9]{2}|0[2-9][0-9]{2}|[1-9][0-9]{3})-" +
"(0?[13456789]|1[012])-(0?[1-9]|[12]\\\\d|30))|((01[0-9]{2}|0[2-9][0-9]{2}|[1-9][0-9]{3})-0?2-" +
"(0?[1-9]|1\\\\d|2[0-8]))|(((1[6-9]|[2-9]\\\\d)(0[48]|[2468][048]|[13579][26])|" +
"((04|08|12|16|[2468][048]|[3579][26])00))-0?2-29)) (20|21|22|23|[0-1]?\\\\d):[0-5]?\\\\d:[0-5]?\\\\d";
Pattern pat = Pattern.compile(eL);
Matcher matcher = pat.matcher(sDateTime);
return matcher.matches();
}
}

View File

@@ -0,0 +1,96 @@
package com.xkrs.microservice.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* SHA加密解密工具
* @author tajochen
*/
public class EncryptDecryptUtil {
/**
* SHA-256加密
* @param strText 字符串
* @return
*/
public static String encrypt256(final String strText){
return encryptSha(strText,"SHA-256");
}
/**
* SHA-512加密
* @param strText 字符串
* @return
*/
public static String encrypt512(final String strText){
return encryptSha(strText,"SHA-512");
}
/**
* 基础SHA加密
* @param strText 字符串
* @param strType 字符串类型
* @return
*/
private static String encryptSha(final String strText, final String strType){
// 返回值
String strResult=null;
// 是否是有效的字符串
if (strText != null && strText.length()>0){
// 加密开始,创建加密对象,并传入加密类型
try {
MessageDigest messageDigest = MessageDigest.getInstance(strType);
// 传入加密的字符串
messageDigest.update(strText.getBytes());
// 得到bytes类型结果
byte[] byteBuffer = messageDigest.digest();
StringBuilder strHexString = new StringBuilder();
for (byte b : byteBuffer) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
strHexString.append('0');
}
strHexString.append(hex);
}
// 得到返回的结果
strResult = strHexString.toString();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return strResult;
}
/**
* MD5 消息摘要
* @param password
* @return
*/
public static String md5Encode(String password) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
throw new RuntimeException(e);
}
char[] charArray = password.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++){
byteArray[i] = (byte) charArray[i];
}
byte[] md5Bytes = md5.digest(byteArray);
StringBuilder hexValue = new StringBuilder();
for (byte md5Byte : md5Bytes) {
int val = ((int) md5Byte) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
}

View File

@@ -0,0 +1,80 @@
package com.xkrs.microservice.util;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
import java.util.Objects;
/**
* 文件工具
* @author tajochen
*/
public class FileUtil {
/**
* multipart 转 file
* @param multipartFile 二进制流文件
* @param tempPath 临时目录
* @return
*/
public static File multipartToFile(MultipartFile multipartFile,String tempPath){
File toFile = null;
if (multipartFile.isEmpty()) {
multipartFile = null;
} else {
InputStream ins = null;
try {
ins = multipartFile.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
File dir = new File(tempPath);
if (!dir.exists()) {
boolean res = dir.mkdirs();
}
toFile = new File(tempPath+multipartFile.getOriginalFilename());
inputStreamToFile(ins, toFile);
try {
assert ins != null;
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return toFile;
}
/**
* 获取流文件
* @param ins 流
* @param file 文件
*/
private static void inputStreamToFile(InputStream ins, File file) {
try {
final int streamSize = 8192;
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[streamSize];
while ((bytesRead = ins.read(buffer, 0, streamSize)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除文件
* @param file 文件
*/
private static boolean deleteFile(File file) {
boolean res = false;
if (file.exists()) {
res = file.delete();
}
return res;
}
}

View File

@@ -0,0 +1,65 @@
package com.xkrs.microservice.util;
import com.xkrs.microservice.model.vo.HardDiskInfoVo;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 磁盘工具
* @author tajochen
*/
public class HardDiskInfo {
/**
* 获取硬盘信息
* @return
*/
public static List<HardDiskInfoVo> getHardDiskInfo() {
List<HardDiskInfoVo> hardDiskInfoList = new ArrayList<>();
File[] roots = File.listRoots();
for (File file : roots) {
HardDiskInfoVo hardDiskInfo = new HardDiskInfoVo();
hardDiskInfo.setHardDiskName(file.getPath());
hardDiskInfo.setFreeSpace(file.getUsableSpace());
hardDiskInfo.setUsedSpace(file.getTotalSpace()-file.getFreeSpace());
hardDiskInfo.setTotalSpace(file.getTotalSpace());
hardDiskInfoList.add(hardDiskInfo);
}
return hardDiskInfoList;
}
/**
* 获取指定目录下的文件和文件夹
* @return
*/
public static Map<String,String> getHardDiskFileList(String rootPath) {
Map<String,String> fileListMap = new HashMap<>(1024);
String fatherNodePath = "";
String fullPath = rootPath+File.separator+fatherNodePath;
File hdd = new File(fullPath);
File[] fileList = hdd.listFiles();
if(fileList != null){
System.out.println(fullPath+"目录结构:");
for (File file : fileList) {
if (file.isDirectory()) {
System.out.println(file.getName() + "(文件夹)");
fileListMap.put(file.getName(),"(文件夹)");
} else if (file.isFile()) {
System.out.println(file.getName() + "(文件)");
fileListMap.put(file.getName(),"(文件)");
}
}
}
return fileListMap;
}
public static void main(String[] args) {
List<HardDiskInfoVo> ss = getHardDiskInfo();
System.out.println(ss);
}
}

Some files were not shown because too many files have changed in this diff Show More