first commit
commit
3af22ea7dd
Binary file not shown.
@ -0,0 +1 @@
|
||||
后台管理
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
学生端
|
@ -0,0 +1,55 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Java template
|
||||
# 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*
|
||||
|
||||
### macOS template
|
||||
# General
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Icon must end with two \r
|
||||
Icon
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear in the root of a volume
|
||||
.DocumentRevisions-V100
|
||||
.fseventsd
|
||||
.Spotlight-V100
|
||||
.TemporaryItems
|
||||
.Trashes
|
||||
.VolumeIcon.icns
|
||||
.com.apple.timemachine.donotpresent
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
.idea
|
||||
*.iml
|
@ -0,0 +1,120 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>common</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>common-core</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!-- hutool -->
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>5.3.8</version>
|
||||
</dependency>
|
||||
|
||||
<!-- jwt -->
|
||||
<dependency>
|
||||
<groupId>com.auth0</groupId>
|
||||
<artifactId>java-jwt</artifactId>
|
||||
<version>3.10.3</version>
|
||||
</dependency>
|
||||
|
||||
<!-- excel -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
<version>3.17</version>
|
||||
</dependency>
|
||||
|
||||
<!-- ECharts -->
|
||||
<dependency>
|
||||
<groupId>com.github.abel533</groupId>
|
||||
<artifactId>ECharts</artifactId>
|
||||
<version>3.0.0.6</version>
|
||||
</dependency>
|
||||
|
||||
<!-- jsoup -->
|
||||
<dependency>
|
||||
<groupId>org.jsoup</groupId>
|
||||
<artifactId>jsoup</artifactId>
|
||||
<version>1.14.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itextpdf</artifactId>
|
||||
<version>5.5.13.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.spring4all</groupId>
|
||||
<artifactId>swagger-spring-boot-starter</artifactId>
|
||||
<version>1.9.1.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.xiaoymin</groupId>
|
||||
<artifactId>knife4j-spring-ui</artifactId>
|
||||
<version>2.0.7</version>
|
||||
</dependency>
|
||||
|
||||
<!-- org.apache.httpcomponents -->
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpmime</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- log -->
|
||||
<dependency>
|
||||
<groupId>net.logstash.logback</groupId>
|
||||
<artifactId>logstash-logback-encoder</artifactId>
|
||||
<version>6.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>log4j-over-slf4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>jcl-over-slf4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>jul-to-slf4j</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
<!-- org.apache.httpcomponents -->
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpmime</artifactId>
|
||||
</dependency>
|
||||
<!-- web -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
</project>
|
@ -0,0 +1,38 @@
|
||||
package com.tz.platform.common.core.base;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public class Base {
|
||||
protected static final String REGEX_MOBILE = "^((13[0-9])|(14[5,7,9])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199)\\d{8}$";// 手机号码校验
|
||||
|
||||
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
protected static final ExecutorService callbackExecutor = Executors.newFixedThreadPool(50);
|
||||
|
||||
public final static Integer FREEZE = 3;// 冻结状态
|
||||
|
||||
public final static BigDecimal LECTURER_DEFAULT_PROPORTION = BigDecimal.valueOf(0.70); // 讲师默认分成
|
||||
|
||||
public static String getString(Map<String, Object> map, String key) {
|
||||
if (null != map.get(key)) {
|
||||
return map.get(key).toString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static Map<String, Object> getMap() {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
public void log(Object obj) {
|
||||
logger.info(JSONUtil.toJsonPrettyStr(obj));
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.tz.platform.common.core.base;
|
||||
|
||||
import com.tz.platform.common.core.enmus.ResultEnum;
|
||||
|
||||
public class BaseException extends RuntimeException {
|
||||
/**
|
||||
* 异常码
|
||||
*/
|
||||
protected int code;
|
||||
|
||||
public BaseException() {
|
||||
super("系统异常");
|
||||
this.code = 99;
|
||||
}
|
||||
|
||||
public BaseException(ResultEnum resultEnum) {
|
||||
super(resultEnum.getDesc());
|
||||
this.code = resultEnum.getCode();
|
||||
}
|
||||
|
||||
public BaseException(String message) {
|
||||
super(message);
|
||||
this.code = 99;
|
||||
}
|
||||
|
||||
public BaseException(int code, String message) {
|
||||
super(message);
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.tz.platform.common.core.config;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
public class SystemUtil {
|
||||
private SystemUtil() {
|
||||
}
|
||||
|
||||
private static final Properties properties = new Properties();
|
||||
|
||||
static {
|
||||
try {
|
||||
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("system.properties"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private static String getProperty(String keyName) {
|
||||
return properties.getProperty(keyName, "").trim();
|
||||
}
|
||||
|
||||
public static final String PIC_PATH = getProperty("pic_path");
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package com.tz.platform.common.core.enmus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum LoginStatusEnum {
|
||||
SUCCESS(1, "登录成功", ""),
|
||||
//
|
||||
FAIL(0, "登录失败", "red");
|
||||
|
||||
private Integer code;
|
||||
|
||||
private String desc;
|
||||
|
||||
private String color;
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.common.core.enmus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RedisPreEnum {
|
||||
ADMINI_MENU("admini_menu_", "管理员菜单-admini_menu_");
|
||||
private String code;
|
||||
|
||||
private String desc;
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.tz.platform.common.core.enmus;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum UserTypeEnum {
|
||||
USER(1, "用户"), TEACHER(2, "教师") ,ADMIN(3,"管理员");
|
||||
|
||||
private Integer code;
|
||||
|
||||
private String desc;
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.tz.platform.common.core.tools;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class BeanUtils<T extends Serializable> {
|
||||
private BeanUtils() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param source
|
||||
* @param clazz
|
||||
* @return
|
||||
* @throws IllegalAccessException
|
||||
* @throws InvocationTargetException
|
||||
* @throws InstantiationException
|
||||
*/
|
||||
public static <T> T copyProperties(Object source, Class<T> clazz) {
|
||||
if (source == null) {
|
||||
return null;
|
||||
}
|
||||
T t = null;
|
||||
try {
|
||||
t = clazz.newInstance();
|
||||
org.springframework.beans.BeanUtils.copyProperties(source, t);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param source
|
||||
* @param clazz
|
||||
* @return
|
||||
* @throws IllegalAccessException
|
||||
* @throws InvocationTargetException
|
||||
* @throws InstantiationException
|
||||
*/
|
||||
public static <T> List<T> copyProperties(List<?> source, Class<T> clazz) {
|
||||
if (source == null || source.size() == 0) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<T> res = new ArrayList<>(source.size());
|
||||
for (Object o : source) {
|
||||
T t = null;
|
||||
try {
|
||||
t = clazz.newInstance();
|
||||
org.springframework.beans.BeanUtils.copyProperties(o, t);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
res.add(t);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package com.tz.platform.common.core.tools;
|
||||
|
||||
import com.auth0.jwt.JWT;
|
||||
import com.auth0.jwt.algorithms.Algorithm;
|
||||
import com.auth0.jwt.exceptions.JWTCreationException;
|
||||
import com.auth0.jwt.exceptions.JWTVerificationException;
|
||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.util.Date;
|
||||
|
||||
public class JWTUtil {
|
||||
protected static final Logger logger = LoggerFactory.getLogger(JWTUtil.class);
|
||||
|
||||
private static final String TOKEN_SECRET = "eyJhbGciOiJIUzI1NiJ9";
|
||||
private static final String ISSUER = "RONCOO";
|
||||
public static final String USERNO = "userNo";
|
||||
public static final Long DATE = 30 * 24 * 3600 * 1000L; // 1个月
|
||||
|
||||
/**
|
||||
* @param userNo
|
||||
* @param date
|
||||
* @return
|
||||
* @throws IllegalArgumentException
|
||||
* @throws JWTCreationException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
public static String create(Long userNo, Long date) {
|
||||
try {
|
||||
return JWT.create().withIssuer(ISSUER).withClaim(USERNO, userNo.toString()).withExpiresAt(new Date(System.currentTimeMillis() + date)).sign(Algorithm.HMAC256(TOKEN_SECRET));
|
||||
} catch (Exception e) {
|
||||
logger.error("JWT生成失败", e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param token
|
||||
* @return
|
||||
* @throws JWTVerificationException
|
||||
* @throws IllegalArgumentException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
public static DecodedJWT verify(String token) throws JWTVerificationException, IllegalArgumentException, UnsupportedEncodingException {
|
||||
return JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).withIssuer(ISSUER).build().verify(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param decodedJWT
|
||||
* @return
|
||||
* @throws JWTVerificationException
|
||||
* @throws IllegalArgumentException
|
||||
* @throws UnsupportedEncodingException
|
||||
*/
|
||||
public static Long getUserNo(DecodedJWT decodedJWT) {
|
||||
return Long.valueOf(decodedJWT.getClaim(USERNO).asString());
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.tz.platform.common.core.tools;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
public class SHA1Util {
|
||||
private SHA1Util() {
|
||||
}
|
||||
|
||||
public static final String getSign(String message) {
|
||||
MessageDigest md = null;
|
||||
String tmpStr = null;
|
||||
try {
|
||||
md = MessageDigest.getInstance("SHA-1");
|
||||
byte[] digest = md.digest(message.getBytes());
|
||||
tmpStr = byteToStr(digest);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return tmpStr;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字节数组转换为十六进制字符串
|
||||
*
|
||||
* @param byteArray
|
||||
* @return
|
||||
*/
|
||||
private static String byteToStr(byte[] byteArray) {
|
||||
String strDigest = "";
|
||||
for (int i = 0; i < byteArray.length; i++) {
|
||||
strDigest += byteToHexStr(byteArray[i]);
|
||||
}
|
||||
return strDigest;
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字节转换为十六进制字符串
|
||||
*
|
||||
* @param mByte
|
||||
* @return
|
||||
*/
|
||||
private static String byteToHexStr(byte mByte) {
|
||||
char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||
char[] tempArr = new char[2];
|
||||
tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
|
||||
tempArr[1] = Digit[mByte & 0X0F];
|
||||
return new String(tempArr);
|
||||
}
|
||||
}
|
@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||
|
||||
<springProperty name="springApplicationName" source="spring.application.name" defaultValue="tz-platform"/>
|
||||
<springProperty name="FILE_PATH" source="management.endpoint.logfile.external-file"
|
||||
defaultValue="/home/tz/logs"/>
|
||||
|
||||
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n"/>
|
||||
|
||||
<!-- 本地环境 -->
|
||||
<springProfile name="local">
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<logger name="com.tz" level="debug"/>
|
||||
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="debug"/>
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
<!-- 生产环境 -->
|
||||
<springProfile name="prod">
|
||||
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${FILE_PATH}/warn</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<MaxHistory>30</MaxHistory>
|
||||
</rollingPolicy>
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${FILE_PATH}/json</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${FILE_PATH}/json.%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||||
<maxHistory>7</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
|
||||
<providers>
|
||||
<timestamp>
|
||||
<timeZone>UTC</timeZone>
|
||||
</timestamp>
|
||||
<pattern>
|
||||
<pattern>
|
||||
{
|
||||
"severity": "%level",
|
||||
"service": "${springApplicationName:-}",
|
||||
"trace": "%X{X-B3-TraceId:-}",
|
||||
"span": "%X{X-B3-SpanId:-}",
|
||||
"parent": "%X{X-B3-ParentSpanId:-}",
|
||||
"exportable": "%X{X-Span-Export:-}",
|
||||
"pid": "${PID:-}",
|
||||
"thread": "%thread",
|
||||
"class": "%logger{40}",
|
||||
"rest": "%message"
|
||||
}
|
||||
</pattern>
|
||||
</pattern>
|
||||
</providers>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="com.tz" level="warn"/>
|
||||
|
||||
<root level="warn">
|
||||
<appender-ref ref="PROD_FILE"/>
|
||||
<!--<appender-ref ref="LOGSTASH" />-->
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
<!-- 开发、测试环境 -->
|
||||
<springProfile name="!local">
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<!-- 文件路径 -->
|
||||
<file>${FILE_PATH}/info</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 文件名称 -->
|
||||
<fileNamePattern>${FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 文件最大保存历史数量 -->
|
||||
<MaxHistory>7</MaxHistory>
|
||||
</rollingPolicy>
|
||||
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<logger name="com.tz" level="debug"/>
|
||||
<logger name="org.springframework.cloud.netflix.zuul" level="debug"/>
|
||||
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="debug"/>
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="TEST-FILE"/>
|
||||
</root>
|
||||
</springProfile>
|
||||
</configuration>
|
@ -0,0 +1 @@
|
||||
pic_path=/Volumes/Lexar/www/pic
|
@ -0,0 +1,108 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
|
||||
|
||||
<springProperty name="springApplicationName" source="spring.application.name" defaultValue="tz-platform"/>
|
||||
<springProperty name="FILE_PATH" source="management.endpoint.logfile.external-file"
|
||||
defaultValue="/home/tz/logs"/>
|
||||
|
||||
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n"/>
|
||||
|
||||
<!-- 本地环境 -->
|
||||
<springProfile name="local">
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<logger name="com.tz" level="debug"/>
|
||||
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="debug"/>
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
<!-- 生产环境 -->
|
||||
<springProfile name="prod">
|
||||
<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${FILE_PATH}/warn</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${FILE_PATH}/warn.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<MaxHistory>30</MaxHistory>
|
||||
</rollingPolicy>
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${FILE_PATH}/json</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${FILE_PATH}/json.%d{yyyy-MM-dd}.gz</fileNamePattern>
|
||||
<maxHistory>7</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
|
||||
<providers>
|
||||
<timestamp>
|
||||
<timeZone>UTC</timeZone>
|
||||
</timestamp>
|
||||
<pattern>
|
||||
<pattern>
|
||||
{
|
||||
"severity": "%level",
|
||||
"service": "${springApplicationName:-}",
|
||||
"trace": "%X{X-B3-TraceId:-}",
|
||||
"span": "%X{X-B3-SpanId:-}",
|
||||
"parent": "%X{X-B3-ParentSpanId:-}",
|
||||
"exportable": "%X{X-Span-Export:-}",
|
||||
"pid": "${PID:-}",
|
||||
"thread": "%thread",
|
||||
"class": "%logger{40}",
|
||||
"rest": "%message"
|
||||
}
|
||||
</pattern>
|
||||
</pattern>
|
||||
</providers>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<logger name="com.tz" level="warn"/>
|
||||
|
||||
<root level="warn">
|
||||
<appender-ref ref="PROD_FILE"/>
|
||||
<!--<appender-ref ref="LOGSTASH" />-->
|
||||
</root>
|
||||
</springProfile>
|
||||
|
||||
<!-- 开发、测试环境 -->
|
||||
<springProfile name="!local">
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<!-- 文件路径 -->
|
||||
<file>${FILE_PATH}/info</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 文件名称 -->
|
||||
<fileNamePattern>${FILE_PATH}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 文件最大保存历史数量 -->
|
||||
<MaxHistory>7</MaxHistory>
|
||||
</rollingPolicy>
|
||||
|
||||
<layout class="ch.qos.logback.classic.PatternLayout">
|
||||
<pattern>${PATTERN}</pattern>
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<logger name="com.tz" level="debug"/>
|
||||
<logger name="org.springframework.cloud.netflix.zuul" level="debug"/>
|
||||
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="debug"/>
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="TEST-FILE"/>
|
||||
</root>
|
||||
</springProfile>
|
||||
</configuration>
|
@ -0,0 +1 @@
|
||||
pic_path=/Volumes/Lexar/www/pic
|
@ -0,0 +1,82 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>common</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>common-service</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!-- nacos -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- sentinel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Druid -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.1.21</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!-- spring boot -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
||||
</dependency>
|
||||
<!-- devtools -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,20 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>platform</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>common</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>common-service</module>
|
||||
<module>common-core</module>
|
||||
</modules>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,29 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>competition</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>competition-service</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-service</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>user-feign</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,15 @@
|
||||
package com.tz.platform.competitiion;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackages = "com.tz.platform.feign")
|
||||
public class CompetitionApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(CompetitionApplication.class,args);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.tz.platform.competitiion.api;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.feign.user.IFeignUser;
|
||||
import com.tz.platform.feign.user.vo.UserVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/api/competition")
|
||||
public class TestController {
|
||||
|
||||
@Autowired
|
||||
private IFeignUser iFeignUser;
|
||||
|
||||
@GetMapping(value = "/user/{userNo}")
|
||||
public String getUserByNo(@PathVariable(value = "userNo") Long userNo){
|
||||
UserVo user = iFeignUser.getByUserNo(userNo);
|
||||
return user.getMobile();
|
||||
}
|
||||
|
||||
@GetMapping(value = "/get/user/mobile/{mobile}")
|
||||
public Result<Long> getByMobile(@PathVariable(value = "mobile") String mobile){
|
||||
UserVo user = iFeignUser.getByMobile(mobile);
|
||||
return Result.success(user.getId());
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
server:
|
||||
port: 50012
|
||||
spring:
|
||||
application:
|
||||
name: tz-competition-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: 127.0.0.1:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
config:
|
||||
namespace: ${spring.profiles.active}
|
||||
file-extension: yaml
|
||||
discovery:
|
||||
namespace: ${spring.profiles.active}
|
@ -0,0 +1,17 @@
|
||||
server:
|
||||
port: 50012
|
||||
spring:
|
||||
application:
|
||||
name: tz-competition-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: 127.0.0.1:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
config:
|
||||
namespace: ${spring.profiles.active}
|
||||
file-extension: yaml
|
||||
discovery:
|
||||
namespace: ${spring.profiles.active}
|
@ -0,0 +1,21 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>platform</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>competition</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>competition-service</module>
|
||||
</modules>
|
||||
|
||||
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,70 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>platform</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>gateway</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!-- Nacos -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- gateway -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-gateway</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-devtools</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>app-gateway</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.sonarsource.scanner.maven</groupId>
|
||||
<artifactId>sonar-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,13 @@
|
||||
package com.tz.platform.gateway;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
public class GatewayApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(GatewayApplication.class,args);
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.tz.platform.gateway;
|
||||
|
||||
import com.tz.platform.common.core.base.BaseException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.web.error.ErrorAttributeOptions;
|
||||
import org.springframework.boot.web.reactive.error.DefaultErrorAttributes;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
public class GlobalErrorAttributes extends DefaultErrorAttributes {
|
||||
@Override
|
||||
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
|
||||
Map<String, Object> map = super.getErrorAttributes(request, options);
|
||||
log.error("系统异常,{}", map);
|
||||
map.put("status", HttpStatus.OK.value());
|
||||
Throwable error = this.getError(request);
|
||||
if (error instanceof BaseException) {
|
||||
BaseException be = (BaseException) error;
|
||||
map.put("code", be.getCode());
|
||||
map.put("msg", be.getMessage());
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.tz.platform.gateway;
|
||||
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
@RestController
|
||||
public class IndexController {
|
||||
|
||||
@GetMapping("/")
|
||||
public Mono<String> index(){ return Mono.just("success");}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
spring:
|
||||
application:
|
||||
name: tz-gateway
|
||||
cloud:
|
||||
nacos:
|
||||
username: nacos
|
||||
password: nacos
|
||||
discovery:
|
||||
server-addr: 127.0.0.1:8848
|
||||
namespace: ${spring.profiles.active}
|
||||
config:
|
||||
file-extension: yaml
|
||||
namespace: ${spring.profiles.active}
|
||||
profiles:
|
||||
active: dev
|
||||
server:
|
||||
port: 50010
|
@ -0,0 +1,17 @@
|
||||
spring:
|
||||
application:
|
||||
name: tz-gateway
|
||||
cloud:
|
||||
nacos:
|
||||
username: nacos
|
||||
password: nacos
|
||||
discovery:
|
||||
server-addr: 127.0.0.1:8848
|
||||
namespace: ${spring.profiles.active}
|
||||
config:
|
||||
file-extension: yaml
|
||||
namespace: ${spring.profiles.active}
|
||||
profiles:
|
||||
active: dev
|
||||
server:
|
||||
port: 50010
|
@ -0,0 +1,126 @@
|
||||
<?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.tz</groupId>
|
||||
<artifactId>platform</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<modules>
|
||||
<module>common</module>
|
||||
<module>user</module>
|
||||
<module>gateway</module>
|
||||
<module>competition</module>
|
||||
</modules>
|
||||
|
||||
<properties>
|
||||
<java.version>1.8</java.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<!-- spring boot -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-parent</artifactId>
|
||||
<version>2.3.5.RELEASE</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- spring cloud -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-dependencies</artifactId>
|
||||
<version>Hoxton.SR9</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- spring cloud alibaba -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
|
||||
<version>2.2.6.RELEASE</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-service</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>user-feign</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<!-- spring boot -->
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<executable>true</executable>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
<goal>build-info</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<!-- compiler -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
<skip>true</skip>
|
||||
<encoding>${project.build.sourceEncoding}</encoding>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- sonar -->
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>org.sonarsource.scanner.maven</groupId>-->
|
||||
<!-- <artifactId>sonar-maven-plugin</artifactId>-->
|
||||
<!-- <version>3.6.0.1398</version>-->
|
||||
<!-- </plugin>-->
|
||||
|
||||
<!-- https://github.com/spotify/dockerfile-maven -->
|
||||
<!-- <plugin>-->
|
||||
<!-- <groupId>com.spotify</groupId>-->
|
||||
<!-- <artifactId>dockerfile-maven-plugin</artifactId>-->
|
||||
<!-- <version>1.4.13</version>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <repository>harbor.roncoo.com/library/${project.artifactId}</repository>-->
|
||||
<!-- <tag>${project.version}</tag>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </plugin>-->
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
</project>
|
@ -0,0 +1,21 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>platform</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>user</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>user-service</module>
|
||||
<module>user-feign</module>
|
||||
</modules>
|
||||
|
||||
|
||||
|
||||
</project>
|
@ -0,0 +1,26 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>user</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>user-feign</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,15 @@
|
||||
package com.tz.platform.feign.user;
|
||||
|
||||
import com.tz.platform.feign.user.vo.UserVo;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
@FeignClient(value = "tz-user-service")
|
||||
public interface IFeignUser {
|
||||
|
||||
@GetMapping(value = "/feign/user/getByUserNo/{userNo}")
|
||||
UserVo getByUserNo(@PathVariable(value = "userNo") Long userNo);
|
||||
@GetMapping(value = "/feign/user/getByMobile/{mobile}")
|
||||
UserVo getByMobile(@PathVariable(value = "mobile") String mobile);
|
||||
}
|
Binary file not shown.
@ -0,0 +1,37 @@
|
||||
<?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">
|
||||
<parent>
|
||||
<artifactId>user</artifactId>
|
||||
<groupId>com.tz</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>user-service</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-service</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
</dependency>
|
||||
<!-- test -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tz</groupId>
|
||||
<artifactId>user-feign</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -0,0 +1,16 @@
|
||||
package com.tz.platform;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients
|
||||
public class Application {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(Application.class,args);
|
||||
}
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
package com.tz.platform.entity;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Date;
|
||||
|
||||
@Entity
|
||||
@Table(name = "user")
|
||||
public class User {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy= GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
private Date gmtCreate;
|
||||
|
||||
private Date gmtModified;
|
||||
|
||||
private Integer statusId;
|
||||
|
||||
private Long userNo;
|
||||
|
||||
private String mobile;
|
||||
|
||||
private String userName;
|
||||
|
||||
private String studentNo;
|
||||
|
||||
private String mobileSalt;
|
||||
|
||||
private String mobilePsw;
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getGmtCreate() {
|
||||
return gmtCreate;
|
||||
}
|
||||
|
||||
public void setGmtCreate(Date gmtCreate) {
|
||||
this.gmtCreate = gmtCreate;
|
||||
}
|
||||
|
||||
public Date getGmtModified() {
|
||||
return gmtModified;
|
||||
}
|
||||
|
||||
public void setGmtModified(Date gmtModified) {
|
||||
this.gmtModified = gmtModified;
|
||||
}
|
||||
|
||||
public Integer getStatusId() {
|
||||
return statusId;
|
||||
}
|
||||
|
||||
public void setStatusId(Integer statusId) {
|
||||
this.statusId = statusId;
|
||||
}
|
||||
|
||||
public Long getUserNo() {
|
||||
return userNo;
|
||||
}
|
||||
|
||||
public void setUserNo(Long userNo) {
|
||||
this.userNo = userNo;
|
||||
}
|
||||
|
||||
public String getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
|
||||
public void setMobile(String mobile) {
|
||||
this.mobile = mobile == null ? null : mobile.trim();
|
||||
}
|
||||
|
||||
public String getMobileSalt() {
|
||||
return mobileSalt;
|
||||
}
|
||||
|
||||
public void setMobileSalt(String mobileSalt) {
|
||||
this.mobileSalt = mobileSalt == null ? null : mobileSalt.trim();
|
||||
}
|
||||
|
||||
public String getMobilePsw() {
|
||||
return mobilePsw;
|
||||
}
|
||||
|
||||
public void setMobilePsw(String mobilePsw) {
|
||||
this.mobilePsw = mobilePsw == null ? null : mobilePsw.trim();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(getClass().getSimpleName());
|
||||
sb.append(" [");
|
||||
sb.append("Hash = ").append(hashCode());
|
||||
sb.append(", id=").append(id);
|
||||
sb.append(", gmtCreate=").append(gmtCreate);
|
||||
sb.append(", gmtModified=").append(gmtModified);
|
||||
sb.append(", statusId=").append(statusId);
|
||||
sb.append(", userNo=").append(userNo);
|
||||
sb.append(", mobile=").append(mobile);
|
||||
sb.append(", mobileSalt=").append(mobileSalt);
|
||||
sb.append(", mobilePsw=").append(mobilePsw);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.User;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
@Repository
|
||||
public interface UserDao extends JpaRepository<User,Long> {
|
||||
User findByMobile(String mobile);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.tz.platform.user.api;
|
||||
|
||||
import com.tz.platform.entity.User;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(path = "/api/user")
|
||||
public class UserInfoController {
|
||||
|
||||
@Autowired
|
||||
UserDao userDao;
|
||||
|
||||
@GetMapping(path = "test")
|
||||
public String test(){
|
||||
List<User> userList = userDao.findAll();
|
||||
return "user count:"+userList.size();
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package com.tz.platform.user.api.biz;
|
||||
|
||||
import com.tz.platform.common.core.base.Result;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.user.api.bo.UserLoginPasswordBO;
|
||||
import com.tz.platform.user.api.dto.UserLoginDTO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class apiUserInfoBiz {
|
||||
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
public Result<UserLoginDTO> loginPassword(UserLoginPasswordBO userLoginPasswordBO){
|
||||
UserLoginDTO userLoginDTO = new UserLoginDTO();
|
||||
return Result.success(userLoginDTO);
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
package com.tz.platform.user.api.bo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class UserLoginPasswordBO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
@ApiModelProperty(value = "手机号", required = true)
|
||||
private String mobile;
|
||||
/**
|
||||
* 登录密码
|
||||
*/
|
||||
@ApiModelProperty(value = "密码", required = true)
|
||||
private String password;
|
||||
/**
|
||||
* clientId
|
||||
*/
|
||||
@ApiModelProperty(value = "clientId", required = true)
|
||||
private String clientId;
|
||||
|
||||
private String ip;
|
||||
}
|
@ -0,0 +1,25 @@
|
||||
package com.tz.platform.user.feign;
|
||||
|
||||
import com.tz.platform.user.feign.biz.FeignUserBiz;
|
||||
import com.tz.platform.feign.user.IFeignUser;
|
||||
import com.tz.platform.feign.user.vo.UserVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
public class FeignUserController implements IFeignUser {
|
||||
|
||||
@Autowired
|
||||
private FeignUserBiz feignUserBiz;
|
||||
|
||||
@Override
|
||||
public UserVo getByUserNo(@PathVariable(value = "userNo") Long userNo) {
|
||||
return feignUserBiz.getByUserNo(userNo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserVo getByMobile(@PathVariable(value = "mobile") String mobile){
|
||||
return feignUserBiz.getByMobile(mobile);
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.tz.platform.user.feign.biz;
|
||||
|
||||
import com.tz.platform.common.core.tools.BeanUtils;
|
||||
import com.tz.platform.entity.User;
|
||||
import com.tz.platform.repository.UserDao;
|
||||
import com.tz.platform.feign.user.vo.UserVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class FeignUserBiz {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
public UserVo getByUserNo(Long userNo){
|
||||
User user = userDao.findById(userNo).get();
|
||||
return BeanUtils.copyProperties(user,UserVo.class);
|
||||
}
|
||||
|
||||
public UserVo getByMobile(String mobile){
|
||||
User user = userDao.findByMobile(mobile);
|
||||
return BeanUtils.copyProperties(user,UserVo.class);
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
server:
|
||||
port: 50011
|
||||
spring:
|
||||
application:
|
||||
name: tz-user-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: 127.0.0.1:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
config:
|
||||
namespace: ${spring.profiles.active}
|
||||
file-extension: yaml
|
||||
discovery:
|
||||
namespace: ${spring.profiles.active}
|
@ -0,0 +1,26 @@
|
||||
package com.tz.platform.repository;
|
||||
|
||||
import com.tz.platform.entity.User;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
|
||||
@SpringBootTest
|
||||
public class UserRepositoryTest {
|
||||
@Autowired
|
||||
private UserDao userDao;
|
||||
|
||||
@Test
|
||||
@Rollback
|
||||
public void userSaveTest(){
|
||||
User user = new User();
|
||||
user.setUserNo(1L);
|
||||
user.setMobile("18600024112");
|
||||
user.setMobileSalt("");
|
||||
user.setMobilePsw("11111111");
|
||||
user.setUserSource("1123123");
|
||||
userDao.save(user);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
server:
|
||||
port: 50011
|
||||
spring:
|
||||
application:
|
||||
name: tz-user-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
server-addr: 127.0.0.1:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
config:
|
||||
namespace: ${spring.profiles.active}
|
||||
file-extension: yaml
|
||||
discovery:
|
||||
namespace: ${spring.profiles.active}
|
Loading…
Reference in New Issue