From 820f688d8bdbac13aada4bf60841d2a6fa2100cf Mon Sep 17 00:00:00 2001 From: 陈杰 <504987307@qq.com> Date: Wed, 26 Feb 2020 11:11:14 +0800 Subject: [PATCH] 网关 --- cloud/common/pom.xml | 17 +++++++---------- cloud/common/src/main/java/com/sincere/common/commons/PageResult.java | 30 ------------------------------ cloud/common/src/main/java/com/sincere/common/commons/Result.java | 49 ------------------------------------------------- cloud/common/src/main/java/com/sincere/common/exception/ResultEnums.java | 43 +++++++++++++++++++++++++++++++++++++++++++ cloud/common/src/main/java/com/sincere/common/props/PermitUrlProperties.java | 55 ------------------------------------------------------- cloud/common/src/main/java/com/sincere/common/util/ExcelUtils.java | 294 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------- cloud/common/src/main/java/com/sincere/common/util/UrlUtil.java | 47 ----------------------------------------------- cloud/common/src/main/java/com/sincere/common/util/UserUtil.java | 95 ----------------------------------------------------------------------------------------------- cloud/getaway/pom.xml | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java | 18 ++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/client/config/PermitUrlProperties.java | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/client/config/SwaggerProvider.java | 47 +++++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/client/filter/AccessFilter.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/client/filter/SwaggerHeaderFilter.java | 36 ++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/java/com/sincere/getaway/client/handler/SwaggerHandler.java | 45 +++++++++++++++++++++++++++++++++++++++++++++ cloud/getaway/src/main/resources/application.yml | 31 +++++++++++++++++++++++++++++++ cloud/getaway/src/main/resources/bootstrap.yml | 23 +++++++++++++++++++++++ cloud/geteway/pom.xml | 59 ----------------------------------------------------------- cloud/geteway/src/main/java/com/example/geteway/GetewayApplication.java | 18 ------------------ cloud/geteway/src/main/java/com/example/geteway/client/config/SwaggerProvider.java | 48 ------------------------------------------------ cloud/geteway/src/main/java/com/example/geteway/client/filter/SwaggerHeaderFilter.java | 36 ------------------------------------ cloud/geteway/src/main/java/com/example/geteway/client/handler/SwaggerHandler.java | 45 --------------------------------------------- cloud/geteway/src/main/resources/application.yml | 23 ----------------------- cloud/geteway/src/main/resources/bootstrap.yml | 23 ----------------------- cloud/geteway/src/test/java/com/example/geteway/GetewayApplicationTests.java | 16 ---------------- cloud/pom.xml | 17 +++-------------- cloud/quartz/src/main/java/com/sincere/quartz/Test.java | 23 +++++++++++++++++++++++ cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java | 60 +++++++++++++++++++++++++++++++++++++----------------------- cloud/server1/pom.xml | 17 ----------------- cloud/server1/src/main/java/com/sincere/server1/Test2.java | 91 ------------------------------------------------------------------------------------------- cloud/server1/src/test/java/com/sincere/server1/Server1ApplicationTests.java | 16 ---------------- cloud/user_search/pom.xml | 10 ++-------- cloud/user_search/src/main/java/com/sincere/userSearch/access/MemberFilter.java | 47 +++++++++++++---------------------------------- cloud/user_search/src/main/java/com/sincere/userSearch/controller/UserController.java | 7 +++---- cloud/user_search/src/main/resources/application.yaml | 2 +- 35 files changed, 692 insertions(+), 909 deletions(-) delete mode 100644 cloud/common/src/main/java/com/sincere/common/commons/PageResult.java delete mode 100644 cloud/common/src/main/java/com/sincere/common/commons/Result.java create mode 100644 cloud/common/src/main/java/com/sincere/common/exception/ResultEnums.java delete mode 100644 cloud/common/src/main/java/com/sincere/common/props/PermitUrlProperties.java delete mode 100644 cloud/common/src/main/java/com/sincere/common/util/UrlUtil.java delete mode 100644 cloud/common/src/main/java/com/sincere/common/util/UserUtil.java create mode 100644 cloud/getaway/pom.xml create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/client/config/PermitUrlProperties.java create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/client/config/SwaggerProvider.java create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/client/filter/AccessFilter.java create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/client/filter/SwaggerHeaderFilter.java create mode 100644 cloud/getaway/src/main/java/com/sincere/getaway/client/handler/SwaggerHandler.java create mode 100644 cloud/getaway/src/main/resources/application.yml create mode 100644 cloud/getaway/src/main/resources/bootstrap.yml delete mode 100644 cloud/geteway/pom.xml delete mode 100644 cloud/geteway/src/main/java/com/example/geteway/GetewayApplication.java delete mode 100644 cloud/geteway/src/main/java/com/example/geteway/client/config/SwaggerProvider.java delete mode 100644 cloud/geteway/src/main/java/com/example/geteway/client/filter/SwaggerHeaderFilter.java delete mode 100644 cloud/geteway/src/main/java/com/example/geteway/client/handler/SwaggerHandler.java delete mode 100644 cloud/geteway/src/main/resources/application.yml delete mode 100644 cloud/geteway/src/main/resources/bootstrap.yml delete mode 100644 cloud/geteway/src/test/java/com/example/geteway/GetewayApplicationTests.java create mode 100644 cloud/quartz/src/main/java/com/sincere/quartz/Test.java delete mode 100644 cloud/server1/src/main/java/com/sincere/server1/Test2.java delete mode 100644 cloud/server1/src/test/java/com/sincere/server1/Server1ApplicationTests.java diff --git a/cloud/common/pom.xml b/cloud/common/pom.xml index 69bdd8b..3ba6c94 100644 --- a/cloud/common/pom.xml +++ b/cloud/common/pom.xml @@ -22,6 +22,11 @@ + com.nimbusds + nimbus-jose-jwt + 6.0 + + redis.clients jedis 2.9.0 @@ -32,19 +37,11 @@ 4.3 - org.apache.tomcat.embed - tomcat-embed-core - - io.jsonwebtoken jjwt 0.9.0 - org.springframework.security - spring-security-core - - org.projectlombok lombok @@ -56,12 +53,12 @@ io.springfox springfox-swagger2 - 2.5.0 + 2.9.2 io.springfox springfox-swagger-ui - 2.5.0 + 2.9.2 commons-net diff --git a/cloud/common/src/main/java/com/sincere/common/commons/PageResult.java b/cloud/common/src/main/java/com/sincere/common/commons/PageResult.java deleted file mode 100644 index d35c63f..0000000 --- a/cloud/common/src/main/java/com/sincere/common/commons/PageResult.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.sincere.common.commons; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - - -/** - * @author 作者 owen E-mail: 624191343@qq.com - * @version 创建时间:2017年11月12日 上午22:57:51 - * 分页实体类 - * total 总数 - * code 是否成功 - * data 当前页结果集 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class PageResult implements Serializable { - - private static final long serialVersionUID = -275582248840137389L; - private Long count; - private int code; - private List data; -} diff --git a/cloud/common/src/main/java/com/sincere/common/commons/Result.java b/cloud/common/src/main/java/com/sincere/common/commons/Result.java deleted file mode 100644 index 53fd556..0000000 --- a/cloud/common/src/main/java/com/sincere/common/commons/Result.java +++ /dev/null @@ -1,49 +0,0 @@ -//package com.sincere.common.commons; -// -//import lombok.AllArgsConstructor; -//import lombok.Data; -//import lombok.NoArgsConstructor; -// -//import java.io.Serializable; -// -///** -// * @Author: [zhangzhiguang] -// * @Date: [2018-08-01 23:39] -// * @Description: [ ] -// * @Version: [1.0.0] -// * @Copy: [com.zzg] -// */ -//@Data -//@NoArgsConstructor -//@AllArgsConstructor -//public class Result implements Serializable { -// -// private T datas; -// private Integer resp_code; -// private String resp_msg; -// -// public static Result succeed(String msg) { -// return succeedWith(null, CodeEnum.SUCCESS.getCode(),msg); -// } -// -// public static Result succeed(T model, String msg) { -// return succeedWith(model, CodeEnum.SUCCESS.getCode(),msg); -// } -// -// public static Result succeedWith(T datas, Integer code,String msg) { -// return new Result(datas, code, msg); -// } -// -// public static Result failed(String msg) { -// return failedWith(null, CodeEnum.ERROR.getCode(), msg); -// } -// -// public static Result failed(T model,String msg) { -// return failedWith(model, CodeEnum.ERROR.getCode(), msg); -// } -// -// public static Result failedWith(T datas, Integer code, String msg) { -// return new Result( datas, code, msg); -// } -// -//} diff --git a/cloud/common/src/main/java/com/sincere/common/exception/ResultEnums.java b/cloud/common/src/main/java/com/sincere/common/exception/ResultEnums.java new file mode 100644 index 0000000..c555936 --- /dev/null +++ b/cloud/common/src/main/java/com/sincere/common/exception/ResultEnums.java @@ -0,0 +1,43 @@ +package com.sincere.common.exception; + +public enum ResultEnums { + success(0,"成功"), + not_avail(-1,"token无效"), + expire(-2,"token过期"), + account_null(-3,"账号为空"), + error(-4,"系统繁忙"), + no_token(-5,"没有传token"); + + private int code ; + private String message ; + + ResultEnums(int code, String message) { + this.code = code; + this.message = message; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public static ResultEnums getByCode(int code){ + for(ResultEnums enums :ResultEnums.values()){ + if(enums.getCode() == code){ + return enums ; + } + } + return ResultEnums.error ; + } +} diff --git a/cloud/common/src/main/java/com/sincere/common/props/PermitUrlProperties.java b/cloud/common/src/main/java/com/sincere/common/props/PermitUrlProperties.java deleted file mode 100644 index d38e9b7..0000000 --- a/cloud/common/src/main/java/com/sincere/common/props/PermitUrlProperties.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.sincere.common.props; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author 作者 owen E-mail: 624191343@qq.com - * @version 创建时间:2017年11月12日 上午22:57:51 url白名单处理 application.yml中配置需要放权的url白名单 - */ -// @ConfigurationProperties(prefix = "permit") -@ConfigurationProperties(prefix = "security.oauth2") -public class PermitUrlProperties { - - /** - * 监控中心和swagger需要访问的url - */ - private static final String[] ENDPOINTS = { - "/**/actuator/**" , "/**/actuator/**/**" , //断点监控 - "/**/v2/api-docs/**", "/**/swagger-ui.html", "/**/swagger-resources/**", "/**/webjars/**", //swagger - "/**/turbine.stream","/**/turbine.stream**/**", "/**/hystrix", "/**/hystrix.stream", "/**/hystrix/**", "/**/hystrix/**/**", "/**/proxy.stream/**" , //熔断监控 - "/**/druid/**", "/**/favicon.ico", "/**/prometheus" - }; - - private String[] ignored; - - /** - * 需要放开权限的url - * - * @param urls - * 自定义的url - * @return 自定义的url和监控中心需要访问的url集合 - */ - public String[] getIgnored() { - if (ignored == null || ignored.length == 0) { - return ENDPOINTS; - } - - List list = new ArrayList<>(); - for (String url : ENDPOINTS) { - list.add(url); - } - for (String url : ignored) { - list.add(url); - } - - return list.toArray(new String[list.size()]); - } - - public void setIgnored(String[] ignored) { - this.ignored = ignored; - } - -} diff --git a/cloud/common/src/main/java/com/sincere/common/util/ExcelUtils.java b/cloud/common/src/main/java/com/sincere/common/util/ExcelUtils.java index 2a5463a..7ba0d91 100644 --- a/cloud/common/src/main/java/com/sincere/common/util/ExcelUtils.java +++ b/cloud/common/src/main/java/com/sincere/common/util/ExcelUtils.java @@ -1,147 +1,147 @@ -package com.sincere.common.util; - -import com.google.common.base.Strings; -import org.apache.commons.lang3.StringUtils; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.OutputStream; -import java.math.BigDecimal; -import java.util.List; -import java.util.Map; - -/** - * @author chen - * @version 1.0 - * @date 2019/10/16 0016 18:46 - */ -public class ExcelUtils { - - //各个列的表头 - private List heardList; - //各个列的元素key值 - private List heardKey; - //需要填充的数据信息 - private List> data; - //工作表 - private String sheetName = "模板"; - - - public List getHeardList() { - return heardList; - } - - public void setHeardList(List heardList) { - this.heardList = heardList; - } - - public List getHeardKey() { - return heardKey; - } - - public void setHeardKey(List heardKey) { - this.heardKey = heardKey; - } - - public List> getData() { - return data; - } - - public void setData(List> data) { - this.data = data; - } - - public String getSheetName() { - return sheetName; - } - - public void setSheetName(String sheetName) { - this.sheetName = sheetName; - } - - /** - * 开始导出数据信息 - * - */ - public byte[] exportExport(HttpServletRequest request, HttpServletResponse response) throws IOException { - //检查参数配置信息 - checkConfig(); - //创建工作簿 - HSSFWorkbook wb = new HSSFWorkbook(); - //创建工作表 - HSSFSheet wbSheet = wb.createSheet(this.sheetName); - - //在第0行创建rows - HSSFRow row = wbSheet.createRow((int)0); - //设置列头元素 - HSSFCell cellHead = null; - for (int i = 0; i < heardList.size(); i++) { - cellHead = row.createCell(i); - cellHead.setCellValue(heardList.get(i)); - } - //开始写入实体数据信息 - int a = 1; - for (int i = 0; i < data.size(); i++) { - HSSFRow roww = wbSheet.createRow((int) a); - Map map = data.get(i); - HSSFCell cell = null; - for (int j = 0; j < heardKey.size(); j++) { - cell = roww.createCell(j); - Object valueObject = map.get(heardKey.get(j)); - String value = null; - if (valueObject == null) { - valueObject = ""; - } - if (valueObject instanceof String) { - //取出的数据是字符串直接赋值 - value = (String) map.get(heardKey.get(j)); - } else if (valueObject instanceof Integer) { - //取出的数据是Integer - value = String.valueOf(((Integer) (valueObject)).floatValue()); - } else if (valueObject instanceof BigDecimal) { - //取出的数据是BigDecimal - value = String.valueOf(((BigDecimal) (valueObject)).floatValue()); - } else { - value = valueObject.toString(); - } - cell.setCellValue(Strings.isNullOrEmpty(value) ? "" : value); - } - a++; - } - - //导出数据 - try { - //设置Http响应头告诉浏览器下载这个附件 - response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls"); - OutputStream outputStream = response.getOutputStream(); - wb.write(outputStream); - outputStream.flush(); - outputStream.close(); - return wb.getBytes(); - } catch (Exception ex) { - ex.printStackTrace(); - throw new IOException("导出Excel出现严重异常,异常信息:" + ex.getMessage()); - } - - } - - /** - * 检查数据配置问题 - * - * @throws IOException 抛出数据异常类 - */ - protected void checkConfig() throws IOException { - if (heardKey == null || heardList.size() == 0) { - throw new IOException("列名数组不能为空或者为NULL"); - } - if (StringUtils.isBlank(sheetName)) { - throw new IOException("工作表表名不能为NULL"); - } - } - -} +//package com.sincere.common.util; +// +//import com.google.common.base.Strings; +//import org.apache.commons.lang3.StringUtils; +//import org.apache.poi.hssf.usermodel.HSSFCell; +//import org.apache.poi.hssf.usermodel.HSSFRow; +//import org.apache.poi.hssf.usermodel.HSSFSheet; +//import org.apache.poi.hssf.usermodel.HSSFWorkbook; +// +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.io.IOException; +//import java.io.OutputStream; +//import java.math.BigDecimal; +//import java.util.List; +//import java.util.Map; +// +///** +// * @author chen +// * @version 1.0 +// * @date 2019/10/16 0016 18:46 +// */ +//public class ExcelUtils { +// +// //各个列的表头 +// private List heardList; +// //各个列的元素key值 +// private List heardKey; +// //需要填充的数据信息 +// private List> data; +// //工作表 +// private String sheetName = "模板"; +// +// +// public List getHeardList() { +// return heardList; +// } +// +// public void setHeardList(List heardList) { +// this.heardList = heardList; +// } +// +// public List getHeardKey() { +// return heardKey; +// } +// +// public void setHeardKey(List heardKey) { +// this.heardKey = heardKey; +// } +// +// public List> getData() { +// return data; +// } +// +// public void setData(List> data) { +// this.data = data; +// } +// +// public String getSheetName() { +// return sheetName; +// } +// +// public void setSheetName(String sheetName) { +// this.sheetName = sheetName; +// } +// +// /** +// * 开始导出数据信息 +// * +// */ +// public byte[] exportExport(HttpServletRequest request, HttpServletResponse response) throws IOException { +// //检查参数配置信息 +// checkConfig(); +// //创建工作簿 +// HSSFWorkbook wb = new HSSFWorkbook(); +// //创建工作表 +// HSSFSheet wbSheet = wb.createSheet(this.sheetName); +// +// //在第0行创建rows +// HSSFRow row = wbSheet.createRow((int)0); +// //设置列头元素 +// HSSFCell cellHead = null; +// for (int i = 0; i < heardList.size(); i++) { +// cellHead = row.createCell(i); +// cellHead.setCellValue(heardList.get(i)); +// } +// //开始写入实体数据信息 +// int a = 1; +// for (int i = 0; i < data.size(); i++) { +// HSSFRow roww = wbSheet.createRow((int) a); +// Map map = data.get(i); +// HSSFCell cell = null; +// for (int j = 0; j < heardKey.size(); j++) { +// cell = roww.createCell(j); +// Object valueObject = map.get(heardKey.get(j)); +// String value = null; +// if (valueObject == null) { +// valueObject = ""; +// } +// if (valueObject instanceof String) { +// //取出的数据是字符串直接赋值 +// value = (String) map.get(heardKey.get(j)); +// } else if (valueObject instanceof Integer) { +// //取出的数据是Integer +// value = String.valueOf(((Integer) (valueObject)).floatValue()); +// } else if (valueObject instanceof BigDecimal) { +// //取出的数据是BigDecimal +// value = String.valueOf(((BigDecimal) (valueObject)).floatValue()); +// } else { +// value = valueObject.toString(); +// } +// cell.setCellValue(Strings.isNullOrEmpty(value) ? "" : value); +// } +// a++; +// } +// +// //导出数据 +// try { +// //设置Http响应头告诉浏览器下载这个附件 +// response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls"); +// OutputStream outputStream = response.getOutputStream(); +// wb.write(outputStream); +// outputStream.flush(); +// outputStream.close(); +// return wb.getBytes(); +// } catch (Exception ex) { +// ex.printStackTrace(); +// throw new IOException("导出Excel出现严重异常,异常信息:" + ex.getMessage()); +// } +// +// } +// +// /** +// * 检查数据配置问题 +// * +// * @throws IOException 抛出数据异常类 +// */ +// protected void checkConfig() throws IOException { +// if (heardKey == null || heardList.size() == 0) { +// throw new IOException("列名数组不能为空或者为NULL"); +// } +// if (StringUtils.isBlank(sheetName)) { +// throw new IOException("工作表表名不能为NULL"); +// } +// } +// +//} diff --git a/cloud/common/src/main/java/com/sincere/common/util/UrlUtil.java b/cloud/common/src/main/java/com/sincere/common/util/UrlUtil.java deleted file mode 100644 index e40ee24..0000000 --- a/cloud/common/src/main/java/com/sincere/common/util/UrlUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.sincere.common.util; - -import javax.servlet.http.HttpServletRequest; -import java.io.PrintWriter; -import java.io.StringWriter; - -/** - * @author: yukong - * @date: 2018/11/14 19:50 - */ -public class UrlUtil { - - /** - * 获取目标主机的ip - * @param request - * @return - */ - public static String getRemoteHost(HttpServletRequest request) { - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getRemoteAddr(); - } - return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; - } - - - /** - * 获取完整的异常栈信息 - * @param t - * @return - */ - public static String getTrace(Throwable t) { - StringWriter stringWriter= new StringWriter(); - PrintWriter writer= new PrintWriter(stringWriter); - t.printStackTrace(writer); - StringBuffer buffer= stringWriter.getBuffer(); - return buffer.toString(); - } - - -} diff --git a/cloud/common/src/main/java/com/sincere/common/util/UserUtil.java b/cloud/common/src/main/java/com/sincere/common/util/UserUtil.java deleted file mode 100644 index 15edb7a..0000000 --- a/cloud/common/src/main/java/com/sincere/common/util/UserUtil.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.sincere.common.util; - -import com.sincere.common.constants.SecurityConstants; -import com.sincere.common.constants.UserConstants; -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; -import lombok.extern.slf4j.Slf4j; - -import javax.servlet.http.HttpServletRequest; -import java.util.Base64; -import java.util.List; - -/** - * @author: yukong - * @date: 2018/10/17 08:56 - * @description: - */ -@Slf4j -public class UserUtil { - - /** - * 获取请求中的token - * @param request - * @return token - */ - public static String getToken(HttpServletRequest request){ - String authorization = request.getHeader(SecurityConstants.TOKEN_HEADER); - if(authorization == null){ - return null; - } - String token = authorization.split(" ")[1]; - //log.info("获取token成功,值为{}", token); - return token; - } - - /** - * 获取jwt中的claims信息 - * @param token - * @return claim - */ - public static Claims getClaims(String token) { - String key = Base64.getEncoder().encodeToString(SecurityConstants.SIGN_KEY.getBytes()); - Claims claims = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody(); - return claims; - } - - /** - * 获取请求中的userId - * @param request - * @return userId - */ - public static Integer getUserId(HttpServletRequest request){ - String token = getToken(request); - if(token == null){ - return null; - } - Claims claims = getClaims(token); - Integer userId = (Integer) claims.get(UserConstants.USER_ID); - //log.info("获取userId成功,值为", userId); - return userId; - } - - /** - * 获取请求中的userId - * @param request - * @return userId - */ - public static String getUserName(HttpServletRequest request){ - String token = getToken(request); - if(token == null){ - return null; - } - Claims claims = getClaims(token); - String username = (String) claims.get(UserConstants.USER_NAME); - //log.info("获取username成功,值为", username); - return username; - } - - /** - * 获取请求中的roles集合 - * @param request - * @return roles - */ - public static List getRoles(HttpServletRequest request) { - String token = getToken(request); - if(token == null){ - return null; - } - Claims claims = getClaims(token); - List roles = (List) claims.get(UserConstants.AUTHORITIES); - return roles; - } - - -} diff --git a/cloud/getaway/pom.xml b/cloud/getaway/pom.xml new file mode 100644 index 0000000..b57d75e --- /dev/null +++ b/cloud/getaway/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.sincere + cloud + 1.0.0 + + getaway + 1.0.0 + getaway + Demo project for Spring Boot + + + 1.8 + Greenwich.SR1 + + + + + com.sincere + common + 1.0.0 + + + + org.springframework.cloud + spring-cloud-starter-gateway + + + org.springframework.boot + spring-boot-starter-web + + + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + io.springfox + springfox-swagger2 + 2.9.2 + + + + + + + + + + + + + + + + + + + + diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java new file mode 100644 index 0000000..b82d90b --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/GetawayApplication.java @@ -0,0 +1,18 @@ +package com.sincere.getaway; + +import org.springframework.boot.SpringApplication; +import org.springframework.cloud.client.SpringCloudApplication; + +/** + * 统一网关配置 + * 通过服务路由的功能,在对外提供服务的时候,只需要通过暴露Zuul中配置的调用地址就可以让调用方统一的来访问我们的服务; + */ +@SpringCloudApplication +public class GetawayApplication { + + public static void main(String[] args) { + SpringApplication.run(GetawayApplication.class, args); + } + + +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/client/config/PermitUrlProperties.java b/cloud/getaway/src/main/java/com/sincere/getaway/client/config/PermitUrlProperties.java new file mode 100644 index 0000000..b0427e3 --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/client/config/PermitUrlProperties.java @@ -0,0 +1,49 @@ +package com.sincere.getaway.client.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + + +@Component +@ConfigurationProperties(prefix = "url") +public class PermitUrlProperties { + + /** + * swagger需要访问的url + */ + private static final String[] ENDPOINTS = { + + "/v2/api-docs/**", "/swagger-ui.html", "/swagger-resources/**", "/webjars/**" , // api-gateway webflux swagger + "/**/v2/api-docs/**", "/**/swagger-ui.html", "/**/swagger-resources/**", "/**/webjars/**" //业务中心swagger + }; + + private String[] ignored; + + /** + * 需要放开权限的url + * @return 自定义的url和监控中心需要访问的url集合 + */ + public String[] getIgnored() { + if (ignored == null || ignored.length == 0) { + return ENDPOINTS; + } + + List list = new ArrayList<>(); + for (String url : ENDPOINTS) { + list.add(url); + } + for (String url : ignored) { + list.add(url); + } + + return list.toArray(new String[list.size()]); + } + + public void setIgnored(String[] ignored) { + this.ignored = ignored; + } + +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/client/config/SwaggerProvider.java b/cloud/getaway/src/main/java/com/sincere/getaway/client/config/SwaggerProvider.java new file mode 100644 index 0000000..bbf8998 --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/client/config/SwaggerProvider.java @@ -0,0 +1,47 @@ +package com.sincere.getaway.client.config; + +import lombok.AllArgsConstructor; +import org.springframework.cloud.gateway.config.GatewayProperties; +import org.springframework.cloud.gateway.route.RouteLocator; +import org.springframework.cloud.gateway.support.NameUtils; +import org.springframework.context.annotation.Primary; +import org.springframework.stereotype.Component; +import springfox.documentation.swagger.web.SwaggerResource; +import springfox.documentation.swagger.web.SwaggerResourcesProvider; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Sywd + */ +@Component +@Primary +@AllArgsConstructor +public class SwaggerProvider implements SwaggerResourcesProvider { + public static final String API_URI = "/v2/api-docs"; + private final RouteLocator routeLocator; + private final GatewayProperties gatewayProperties; + + @Override + public List get() { + List resources = new ArrayList<>(); + List routes = new ArrayList<>(); + routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); + gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId())) + .forEach(routeDefinition -> routeDefinition.getPredicates().stream() + .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName())) + .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(), + predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0") + .replace("/**", API_URI))))); + return resources; + } + + private SwaggerResource swaggerResource(String name, String location) { + SwaggerResource swaggerResource = new SwaggerResource(); + swaggerResource.setName(name); + swaggerResource.setLocation(location); + swaggerResource.setSwaggerVersion("2.0"); + return swaggerResource; + } +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/AccessFilter.java b/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/AccessFilter.java new file mode 100644 index 0000000..3c2c9b9 --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/AccessFilter.java @@ -0,0 +1,99 @@ +package com.sincere.getaway.client.filter; + +import com.alibaba.fastjson.JSONObject; +import com.sincere.common.exception.ResultEnums; +import com.sincere.common.exception.ResultException; +import com.sincere.common.util.TokenUtils; +import com.sincere.getaway.client.config.PermitUrlProperties; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.gateway.filter.GatewayFilterChain; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.core.Ordered; +import org.springframework.core.io.buffer.DataBuffer; +import org.springframework.http.HttpStatus; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.http.server.reactive.ServerHttpResponse; +import org.springframework.stereotype.Component; +import org.springframework.util.AntPathMatcher; +import org.springframework.web.server.ServerWebExchange; +import reactor.core.publisher.Mono; + +import javax.annotation.Resource; +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + */ +@Component +@EnableConfigurationProperties(PermitUrlProperties.class) +public class AccessFilter implements GlobalFilter, Ordered { + + // url匹配器 + private AntPathMatcher pathMatcher = new AntPathMatcher(); + + @Resource + private PermitUrlProperties permitUrlProperties; + + + @Override + public int getOrder() { + // TODO Auto-generated method stub + return -500; + } + + @Override + public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { + String accessToken = this.extractToken(exchange.getRequest()); + // 默认 + boolean flag = false; + for (String ignored :permitUrlProperties.getIgnored()) { + if (pathMatcher.match(ignored, exchange.getRequest().getPath().value())) { + flag = true; // 白名单 + } + } + if (flag) { + return chain.filter(exchange); + } else { + ResultEnums result = getResult(accessToken); + if(result.getCode() == 0){ + return chain.filter(exchange); + }else { + exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); + ServerHttpResponse response = exchange.getResponse(); + JSONObject message = new JSONObject(); + message.put("resp_code", result.getCode()); + message.put("resp_msg", result.getMessage()); + byte[] bits = message.toJSONString().getBytes(StandardCharsets.UTF_8); + DataBuffer buffer = response.bufferFactory().wrap(bits); + response.setStatusCode(HttpStatus.UNAUTHORIZED); + // 指定编码,否则在浏览器中会中文乱码 + response.getHeaders().add("Content-Type", "application/json;charset=UTF-8"); + return response.writeWith(Mono.just(buffer)); + } + + } + } + + private ResultEnums getResult(String token){ + if (StringUtils.isNotBlank(token)) { + return ResultEnums.no_token ; + }else { + try { + TokenUtils.validToken(token); + } catch (ResultException e) { + return ResultEnums.getByCode(e.getCode()); + } + } + return ResultEnums.error ; + } + + public String extractToken(ServerHttpRequest request) { + List strings = request.getHeaders().get("X-Authorization"); + String authToken = ""; + if (strings != null) { + authToken = strings.get(0).substring("Bearer".length()).trim(); + } + return authToken; + } +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/SwaggerHeaderFilter.java b/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/SwaggerHeaderFilter.java new file mode 100644 index 0000000..b0308d1 --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/client/filter/SwaggerHeaderFilter.java @@ -0,0 +1,36 @@ +package com.sincere.getaway.client.filter; + +import com.sincere.getaway.client.config.SwaggerProvider; +import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.http.server.reactive.ServerHttpRequest; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; +import org.springframework.web.server.ServerWebExchange; + +/** + * Spring 已修复该功能 + */ +@Component +@Deprecated +public class SwaggerHeaderFilter extends AbstractGatewayFilterFactory { + private static final String HEADER_NAME = "X-Forwarded-Prefix"; + + @Override + public GatewayFilter apply(Object config) { + return (exchange, chain) -> { + ServerHttpRequest request = exchange.getRequest(); + String path = request.getURI().getPath(); + if (!StringUtils.endsWithIgnoreCase(path, SwaggerProvider.API_URI)) { + return chain.filter(exchange); + } + + String basePath = path.substring(0, path.lastIndexOf(SwaggerProvider.API_URI)); + + + ServerHttpRequest newRequest = request.mutate().header(HEADER_NAME, basePath).build(); + ServerWebExchange newExchange = exchange.mutate().request(newRequest).build(); + return chain.filter(newExchange); + }; + } +} diff --git a/cloud/getaway/src/main/java/com/sincere/getaway/client/handler/SwaggerHandler.java b/cloud/getaway/src/main/java/com/sincere/getaway/client/handler/SwaggerHandler.java new file mode 100644 index 0000000..9233928 --- /dev/null +++ b/cloud/getaway/src/main/java/com/sincere/getaway/client/handler/SwaggerHandler.java @@ -0,0 +1,45 @@ +package com.sincere.getaway.client.handler; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import reactor.core.publisher.Mono; +import springfox.documentation.swagger.web.*; + +import java.util.Optional; + +@RestController +@RequestMapping("/swagger-resources") +public class SwaggerHandler { + @Autowired(required = false) + private SecurityConfiguration securityConfiguration; + @Autowired(required = false) + private UiConfiguration uiConfiguration; + private final SwaggerResourcesProvider swaggerResources; + + @Autowired + public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { + this.swaggerResources = swaggerResources; + } + + + @GetMapping("/configuration/security") + public Mono> securityConfiguration() { + return Mono.just(new ResponseEntity<>( + Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK)); + } + + @GetMapping("/configuration/ui") + public Mono> uiConfiguration() { + return Mono.just(new ResponseEntity<>( + Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); + } + + @GetMapping("") + public Mono swaggerResources() { + return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); + } +} diff --git a/cloud/getaway/src/main/resources/application.yml b/cloud/getaway/src/main/resources/application.yml new file mode 100644 index 0000000..387e262 --- /dev/null +++ b/cloud/getaway/src/main/resources/application.yml @@ -0,0 +1,31 @@ +eureka: + client: + fetch-registry: true + register-with-eureka: true + service-url: +# defaultZone: http://localhost:8761/eureka/ + defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ + instance: + hostname: localhost + lease-expiration-duration-in-seconds: 90 + lease-renewal-interval-in-seconds: 10 + prefer-ip-address: true + +spring: + cloud: + gateway: + routes: + - id: usersearch + uri: lb://usersearch + predicates: + - Path=/usersearch/** + filters: + - StripPrefix=1 + - id: haikangserver + uri: lb://haikangserver + predicates: + - Path=/haikangserver/** + filters: + - StripPrefix=1 +url: + ignored: /user/** \ No newline at end of file diff --git a/cloud/getaway/src/main/resources/bootstrap.yml b/cloud/getaway/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..3a03a12 --- /dev/null +++ b/cloud/getaway/src/main/resources/bootstrap.yml @@ -0,0 +1,23 @@ +#端口 +server: + port: 8083 + +#服务名称 +spring: + application: + name: sincere_geteway + main: + allow-bean-definition-overriding: true + + +management: + endpoints: + web: + exposure: + include: "*" + endpoint: + health: + show-details: always + + + \ No newline at end of file diff --git a/cloud/geteway/pom.xml b/cloud/geteway/pom.xml deleted file mode 100644 index 184f4e0..0000000 --- a/cloud/geteway/pom.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - 4.0.0 - - com.sincere - cloud - 1.0.0 - - com.example.geteway - geteway - 1.0.0 - geteway - Demo project for Spring Boot - - - 1.8 - Greenwich.SR1 - - - - - - org.springframework.cloud - spring-cloud-starter-gateway - - - org.springframework.boot - spring-boot-starter-data-redis-reactive - - - io.springfox - springfox-swagger-ui - 2.9.2 - - - io.springfox - springfox-swagger2 - 2.9.2 - - - - - - - - - - - - - - - - - - - - diff --git a/cloud/geteway/src/main/java/com/example/geteway/GetewayApplication.java b/cloud/geteway/src/main/java/com/example/geteway/GetewayApplication.java deleted file mode 100644 index 27b3d08..0000000 --- a/cloud/geteway/src/main/java/com/example/geteway/GetewayApplication.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.geteway; - -import org.springframework.boot.SpringApplication; -import org.springframework.cloud.client.SpringCloudApplication; - -/** - * 统一网关配置 - * 通过服务路由的功能,在对外提供服务的时候,只需要通过暴露Zuul中配置的调用地址就可以让调用方统一的来访问我们的服务; - */ -@SpringCloudApplication -public class GetewayApplication { - - public static void main(String[] args) { - SpringApplication.run(GetewayApplication.class, args); - } - - -} diff --git a/cloud/geteway/src/main/java/com/example/geteway/client/config/SwaggerProvider.java b/cloud/geteway/src/main/java/com/example/geteway/client/config/SwaggerProvider.java deleted file mode 100644 index acceb2b..0000000 --- a/cloud/geteway/src/main/java/com/example/geteway/client/config/SwaggerProvider.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.example.geteway.client.config; - -import lombok.AllArgsConstructor; -import org.springframework.cloud.gateway.config.GatewayProperties; -import org.springframework.cloud.gateway.route.RouteLocator; -import org.springframework.cloud.gateway.support.NameUtils; -import org.springframework.context.annotation.Primary; -import org.springframework.stereotype.Component; -import springfox.documentation.swagger.web.SwaggerResource; -import springfox.documentation.swagger.web.SwaggerResourcesProvider; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Sywd - */ -@Component -@Primary -@AllArgsConstructor -public class SwaggerProvider implements SwaggerResourcesProvider { - public static final String API_URI = "/v2/api-docs"; - private final RouteLocator routeLocator; - private final GatewayProperties gatewayProperties; - - - @Override - public List get() { - List resources = new ArrayList<>(); - List routes = new ArrayList<>(); - routeLocator.getRoutes().subscribe(route -> routes.add(route.getId())); - gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId())) - .forEach(routeDefinition -> routeDefinition.getPredicates().stream() - .filter(predicateDefinition -> ("Path").equalsIgnoreCase(predicateDefinition.getName())) - .forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(), - predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0") - .replace("/**", API_URI))))); - return resources; - } - - private SwaggerResource swaggerResource(String name, String location) { - SwaggerResource swaggerResource = new SwaggerResource(); - swaggerResource.setName(name); - swaggerResource.setLocation(location); - swaggerResource.setSwaggerVersion("2.0"); - return swaggerResource; - } -} diff --git a/cloud/geteway/src/main/java/com/example/geteway/client/filter/SwaggerHeaderFilter.java b/cloud/geteway/src/main/java/com/example/geteway/client/filter/SwaggerHeaderFilter.java deleted file mode 100644 index 51d2df7..0000000 --- a/cloud/geteway/src/main/java/com/example/geteway/client/filter/SwaggerHeaderFilter.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.example.geteway.client.filter; - -import com.example.geteway.client.config.SwaggerProvider; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; -import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; -import org.springframework.web.server.ServerWebExchange; - -/** - * Spring 已修复该功能 - */ -@Component -@Deprecated -public class SwaggerHeaderFilter extends AbstractGatewayFilterFactory { - private static final String HEADER_NAME = "X-Forwarded-Prefix"; - - @Override - public GatewayFilter apply(Object config) { - return (exchange, chain) -> { - ServerHttpRequest request = exchange.getRequest(); - String path = request.getURI().getPath(); - if (!StringUtils.endsWithIgnoreCase(path, SwaggerProvider.API_URI)) { - return chain.filter(exchange); - } - - String basePath = path.substring(0, path.lastIndexOf(SwaggerProvider.API_URI)); - - - ServerHttpRequest newRequest = request.mutate().header(HEADER_NAME, basePath).build(); - ServerWebExchange newExchange = exchange.mutate().request(newRequest).build(); - return chain.filter(newExchange); - }; - } -} diff --git a/cloud/geteway/src/main/java/com/example/geteway/client/handler/SwaggerHandler.java b/cloud/geteway/src/main/java/com/example/geteway/client/handler/SwaggerHandler.java deleted file mode 100644 index 6192f37..0000000 --- a/cloud/geteway/src/main/java/com/example/geteway/client/handler/SwaggerHandler.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.example.geteway.client.handler; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import reactor.core.publisher.Mono; -import springfox.documentation.swagger.web.*; - -import java.util.Optional; - -@RestController -@RequestMapping("/swagger-resources") -public class SwaggerHandler { - @Autowired(required = false) - private SecurityConfiguration securityConfiguration; - @Autowired(required = false) - private UiConfiguration uiConfiguration; - private final SwaggerResourcesProvider swaggerResources; - - @Autowired - public SwaggerHandler(SwaggerResourcesProvider swaggerResources) { - this.swaggerResources = swaggerResources; - } - - - @GetMapping("/configuration/security") - public Mono> securityConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(securityConfiguration).orElse(SecurityConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @GetMapping("/configuration/ui") - public Mono> uiConfiguration() { - return Mono.just(new ResponseEntity<>( - Optional.ofNullable(uiConfiguration).orElse(UiConfigurationBuilder.builder().build()), HttpStatus.OK)); - } - - @GetMapping("") - public Mono swaggerResources() { - return Mono.just((new ResponseEntity<>(swaggerResources.get(), HttpStatus.OK))); - } -} diff --git a/cloud/geteway/src/main/resources/application.yml b/cloud/geteway/src/main/resources/application.yml deleted file mode 100644 index cdf80c1..0000000 --- a/cloud/geteway/src/main/resources/application.yml +++ /dev/null @@ -1,23 +0,0 @@ -eureka: - client: - fetch-registry: true - register-with-eureka: true - service-url: -# defaultZone: http://localhost:8761/eureka/ - defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/ - instance: - hostname: localhost - lease-expiration-duration-in-seconds: 90 - lease-renewal-interval-in-seconds: 10 - prefer-ip-address: true - -spring: - cloud: - gateway: - routes: - - id: haikangserver - uri: lb://haikangserver - predicates: - - Path=/haikangserver/** - filters: - - StripPrefix=1 diff --git a/cloud/geteway/src/main/resources/bootstrap.yml b/cloud/geteway/src/main/resources/bootstrap.yml deleted file mode 100644 index 3a03a12..0000000 --- a/cloud/geteway/src/main/resources/bootstrap.yml +++ /dev/null @@ -1,23 +0,0 @@ -#端口 -server: - port: 8083 - -#服务名称 -spring: - application: - name: sincere_geteway - main: - allow-bean-definition-overriding: true - - -management: - endpoints: - web: - exposure: - include: "*" - endpoint: - health: - show-details: always - - - \ No newline at end of file diff --git a/cloud/geteway/src/test/java/com/example/geteway/GetewayApplicationTests.java b/cloud/geteway/src/test/java/com/example/geteway/GetewayApplicationTests.java deleted file mode 100644 index 178a5a1..0000000 --- a/cloud/geteway/src/test/java/com/example/geteway/GetewayApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.example.geteway; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class GetewayApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/cloud/pom.xml b/cloud/pom.xml index e18b4eb..f6be0b4 100644 --- a/cloud/pom.xml +++ b/cloud/pom.xml @@ -28,8 +28,8 @@ server1 server2 - - geteway + common + getaway haikang @@ -42,6 +42,7 @@ + user_search @@ -51,18 +52,6 @@ 1.2.58 compile - - - org.projectlombok - lombok - 1.18.8 - - - - org.springframework.cloud - spring-cloud-starter-netflix-eureka-client - - org.springframework.cloud spring-cloud-starter-netflix-eureka-client diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/Test.java b/cloud/quartz/src/main/java/com/sincere/quartz/Test.java new file mode 100644 index 0000000..842dd37 --- /dev/null +++ b/cloud/quartz/src/main/java/com/sincere/quartz/Test.java @@ -0,0 +1,23 @@ +package com.sincere.quartz; + +import com.alibaba.fastjson.JSONObject; +import com.netflix.ribbon.proxy.annotation.Http; +import com.sincere.common.util.HttpClientUtils; + +public class Test { + + public static void main(String[] args){ + for(int i = 1 ; i < 5000 ; i++){ + + String infoUrl = "https://static-data.eol.cn/www/2.0/school/"+i+"/info.json" ; + String gradePointUrl = "https://api.eol.cn/gkcx/api/?access_token=&local_province_id=33&local_type_id=3&page=1&school_id="+i+"&signsafe=&size=10&uri=apidata/api/gk/score/province&year=" ; + String prefessionUrl = "https://static-data.eol.cn/www/2.0/school/"+i+"/pc_special.json" ; + + JSONObject infoResult = HttpClientUtils.httpGet(infoUrl) ; + JSONObject gradePointResult = HttpClientUtils.httpGet(gradePointUrl); + JSONObject prefessionResult = HttpClientUtils.httpGet(prefessionUrl); + + System.out.println(1); + } + } +} diff --git a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java index 3cca9f0..dde373b 100644 --- a/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java +++ b/cloud/quartz/src/main/java/com/sincere/quartz/third/yixueyun/YXYWriteService.java @@ -109,10 +109,14 @@ public class YXYWriteService { for(String subject : subjectList){ subjects.append(subject).append(","); } - object.put("subjects",subjects.toString().substring(0,subjects.toString().length()-1)); - array.add(object); - YXYResult result = getResult(prefix_url+suffix_subject_add,array.toJSONString()) ; - scFeign.updateSchool(school.getSchoolId()); + try{ + object.put("subjects",subjects.toString().substring(0,subjects.toString().length()-1)); + array.add(object); + YXYResult result = getResult(prefix_url+suffix_subject_add,array.toJSONString()) ; + scFeign.updateSchool(school.getSchoolId()); + }catch (Exception e){ + + } } private void syncDept(SyncSchoolDto school , List deptList){ @@ -184,7 +188,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } } if(updateDept.size() > 0){ @@ -199,7 +203,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : updateDept){ if(!errorList.contains(deptDto.getDeptName())){ @@ -225,7 +229,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : deleteDept){ if(!errorList.contains(deptDto.getDeptName())){ @@ -259,12 +263,10 @@ public class YXYWriteService { deptRelationDto.setState(1); scFeign.updateDeptRelation(deptRelationDto); scFeign.updateDept(syncDeptDto.getId()); - }else { - } } }else { - System.out.println(result.getMessage()); + errorOut(result); } } if(updateGrade.size() > 0){ @@ -279,7 +281,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : updateGrade){ if(!errorList.contains(deptDto.getDeptName())){ @@ -305,7 +307,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : deleteGrade){ if(!errorList.contains(deptDto.getDeptName())){ @@ -339,12 +341,10 @@ public class YXYWriteService { deptRelationDto.setState(1); scFeign.updateDeptRelation(deptRelationDto); scFeign.updateDept(syncDeptDto.getId()); - }else { - } } }else { - System.out.println(result.getMessage()); + errorOut(result); } } if(updateClass.size() > 0){ @@ -359,7 +359,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : updateClass){ if(!errorList.contains(deptDto.getDeptName())){ @@ -385,7 +385,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncDeptDto deptDto : deleteClass){ if(!errorList.contains(deptDto.getDeptName())){ @@ -422,7 +422,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } } if(updateStudentList.size() > 0){ @@ -437,7 +437,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncUserDto user : updateStudentList){ if(!errorList.contains(user.getYxyUserId())){ @@ -463,7 +463,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncUserDto user : deleteStudentList){ if(!errorList.contains(user.getYxyUserId())){ @@ -500,7 +500,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } } if(updateTeacherList.size() > 0){ @@ -515,7 +515,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncUserDto user : updateTeacherList){ if(!errorList.contains(user.getYxyUserId())){ @@ -541,7 +541,7 @@ public class YXYWriteService { } } }else { - System.out.println(result.getMessage()); + errorOut(result); } for(SyncUserDto user : deleteTeacherList){ if(!errorList.contains(user.getYxyUserId())){ @@ -626,6 +626,10 @@ public class YXYWriteService { object.put("name",user.getName()); object.put("mobile",user.getMobile()); object.put("sex",user.getSex()); + //添加教师 任职任课关系 + JSONArray orgs = new JSONArray(); + + object.put("userOrgs",orgs); array.add(object); } return array ; @@ -726,4 +730,14 @@ public class YXYWriteService { } + + private void errorOut(YXYResult result){ + try{ + for(YXYResultDetail detail : result.getData()){ + logger.info(detail.getErr()); + } + }catch (Exception e){ + + } + } } diff --git a/cloud/server1/pom.xml b/cloud/server1/pom.xml index de19cd3..f0d27e7 100644 --- a/cloud/server1/pom.xml +++ b/cloud/server1/pom.xml @@ -14,23 +14,6 @@ Demo project for Spring Boot - - - com.aliyun.oss - oss - system - 1 - ${project.basedir}/libs/aliyun-sdk-oss-3.8.0.jar - - - - com.jdom - jdom - system - 1 - ${project.basedir}/libs/jdom-1.1.jar - - org.springframework.cloud spring-cloud-starter-netflix-eureka-server diff --git a/cloud/server1/src/main/java/com/sincere/server1/Test2.java b/cloud/server1/src/main/java/com/sincere/server1/Test2.java deleted file mode 100644 index 94d9ed9..0000000 --- a/cloud/server1/src/main/java/com/sincere/server1/Test2.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.sincere.server1; - -import com.aliyun.oss.OSS; -import com.aliyun.oss.OSSClientBuilder; - -import java.io.*; -import java.net.URL; - -public class Test2 { - - // Endpoint以杭州为例,其它Region请按实际情况填写。 - public static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; - // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。 - public static String accessKeyId = "QiuM3PwHTnVotcGy"; - public static String accessKeySecret = "Yqs7RlaC1MioZu2YYJ6u0TdeO13VFC"; - - public static void main(String[] args) { - File filePath = new File("D:\\OSS\\video.txt"); - try { - BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath)); - - String cotnent = null; - - int index = 0; - while ((cotnent=bufferedReader.readLine())!=null){ - - upLoadNetStraeam(cotnent,"",cotnent.substring(cotnent.lastIndexOf("/")+1,cotnent.length())); - index++; - System.out.println("index:"+index); - - } - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } -// File[] files = filePath.listFiles(); -// upLoadNetStraeam("http://0575jyzx.oss-cn-hangzhou.aliyuncs.com/Air/Data/898b208f82574ddcba2d439a1e28bd39.mp4", "test", "898b208f82574ddcba2d439a1e28bd39.mp4"); - /* for (File file: - files) { - - upload(file,"Data"); - - }*/ - } - - /** - * 上传网络流 - * @param url - * @param path - * @param name - */ - public static void upLoadNetStraeam(String url, String path, String name) { - System.out.println("name:"+name+" url --"+url); -// 创建OSSClient实例。 - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - -// 上传网络流。 - InputStream inputStream = null; - try { - inputStream = new URL(url).openStream(); - } catch (IOException e) { - e.printStackTrace(); - } - ossClient.putObject("szyundisk", "YikeData/" + name, inputStream); - -// 关闭OSSClient。 - ossClient.shutdown(); - - } - - public static void upload(File file, String path) { - -// 创建OSSClient实例。 - OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); - -// 上传文件流。 - InputStream inputStream = null; - try { - inputStream = new FileInputStream(file); - ossClient.putObject("szyundisk", "Air/" + path + "/" + file.getName(), inputStream); - -// 关闭OSSClient。 - ossClient.shutdown(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - -} diff --git a/cloud/server1/src/test/java/com/sincere/server1/Server1ApplicationTests.java b/cloud/server1/src/test/java/com/sincere/server1/Server1ApplicationTests.java deleted file mode 100644 index 0c80b80..0000000 --- a/cloud/server1/src/test/java/com/sincere/server1/Server1ApplicationTests.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.sincere.server1; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class Server1ApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/cloud/user_search/pom.xml b/cloud/user_search/pom.xml index cee6260..c029528 100644 --- a/cloud/user_search/pom.xml +++ b/cloud/user_search/pom.xml @@ -48,14 +48,8 @@ 6.4.0.jre8 - io.springfox - springfox-swagger2 - 2.5.0 - - - io.springfox - springfox-swagger-ui - 2.5.0 + org.springframework.boot + spring-boot-starter-web diff --git a/cloud/user_search/src/main/java/com/sincere/userSearch/access/MemberFilter.java b/cloud/user_search/src/main/java/com/sincere/userSearch/access/MemberFilter.java index 06a152b..ca6f839 100644 --- a/cloud/user_search/src/main/java/com/sincere/userSearch/access/MemberFilter.java +++ b/cloud/user_search/src/main/java/com/sincere/userSearch/access/MemberFilter.java @@ -1,6 +1,5 @@ package com.sincere.userSearch.access; -import com.fasterxml.jackson.databind.ObjectMapper; import com.sincere.common.exception.ResultException; import com.sincere.common.util.TokenUtils; import com.sincere.userSearch.vo.UserInfo; @@ -10,8 +9,6 @@ import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; @WebFilter(urlPatterns = "/user/*") public class MemberFilter implements Filter { @@ -22,39 +19,21 @@ public class MemberFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; - - String token = req.getHeader(token_string); - if (StringUtils.isBlank(token)) { - respFail(response,-5,"token 没有"); - return; - } - -// MemberDetails memberDetails = memberService.getMemberDetailsByToken(tokenId); -// if (memberDetails == null) this.respFail(response); - String userId = "" ; - try{ - userId = TokenUtils.validToken(token); - }catch (ResultException e){ - respFail(response,e.getCode(),e.getMessage()); - return; - } ParameterRequestWrapper requestWrapper = new ParameterRequestWrapper(req); UserInfo userInfo = new UserInfo() ; - userInfo.setUserId(userId); - requestWrapper.addObject(userInfo); - chain.doFilter(requestWrapper, response); - } - private void respFail(ServletResponse response , int code , String message) throws IOException { - Map map = new HashMap<>(); - map.put("status", code); - map.put("message", message); - map.put("data", null); - ObjectMapper objectMapper = new ObjectMapper(); - String s = objectMapper.writeValueAsString(map); - response.setCharacterEncoding("UTF-8"); - response.setContentType("application/json; charset=utf-8"); - response.getWriter().write(s); + String token = req.getHeader(token_string); + if (StringUtils.isNotBlank(token)) { + try{ + String userId = TokenUtils.validToken(token); + userInfo.setUserId(userId); + requestWrapper.addObject(userInfo); + chain.doFilter(requestWrapper, response); + }catch (ResultException e){ + chain.doFilter(requestWrapper, response); + } + }else { + chain.doFilter(requestWrapper, response); + } } - } diff --git a/cloud/user_search/src/main/java/com/sincere/userSearch/controller/UserController.java b/cloud/user_search/src/main/java/com/sincere/userSearch/controller/UserController.java index a08516e..3ff937e 100644 --- a/cloud/user_search/src/main/java/com/sincere/userSearch/controller/UserController.java +++ b/cloud/user_search/src/main/java/com/sincere/userSearch/controller/UserController.java @@ -37,12 +37,11 @@ public class UserController { /** * 用户类型 0-班主任; 1-任课老师; 2-学生; 3-家长; 10-学校管理员; - * @param userId */ @ApiOperation("根据userId 获取用户信息") - @RequestMapping(value = "getUserInfo" , method = RequestMethod.POST) - public void getUserInfo(UserInfo userId){ - + @RequestMapping(value = "getUserInfo" , method = RequestMethod.GET) + public String getUserInfo(){ + return "aa" ; } public void getUserId(){ diff --git a/cloud/user_search/src/main/resources/application.yaml b/cloud/user_search/src/main/resources/application.yaml index d53af07..c8e13b9 100644 --- a/cloud/user_search/src/main/resources/application.yaml +++ b/cloud/user_search/src/main/resources/application.yaml @@ -3,7 +3,7 @@ server: spring: application: - name: user_search + name: usersearch datasource: username: szjxtuser password: RQminVCJota3H1u8bBYH -- libgit2 0.21.0