Commit fa3e77b84186d244d5556bdf42e5e98bde5d87b3

Authored by 王彬
1 parent 72a20310
Exists in master

optimize monitor controller

src/main/java/com/taover/bazhuayun/analysis/web/advice/GlobalExceptionHandler.java 0 → 100644
@@ -0,0 +1,26 @@ @@ -0,0 +1,26 @@
  1 +package com.taover.bazhuayun.analysis.web.advice;
  2 +
  3 +import org.springframework.web.bind.annotation.ControllerAdvice;
  4 +import org.springframework.web.bind.annotation.ExceptionHandler;
  5 +import org.springframework.web.bind.annotation.ResponseBody;
  6 +
  7 +import com.taover.util.UtilLog;
  8 +import com.taover.util.bean.ResultInfo;
  9 +import com.taover.util.bean.ResultInfoException;
  10 +import com.taover.util.bean.UtilResultInfo;
  11 +
  12 +@ControllerAdvice("com.taover.bazhuayun.analysis.web.controller.manage")
  13 +public class GlobalExceptionHandler {
  14 + @ExceptionHandler(value = Exception.class)
  15 + @ResponseBody
  16 + public ResultInfo handlerException(Exception e) {
  17 + UtilLog.errorForException(e, this.getClass());
  18 + return UtilResultInfo.getFailure(e.getMessage());
  19 + }
  20 +
  21 + @ExceptionHandler(value = ResultInfoException.class)
  22 + @ResponseBody
  23 + public ResultInfo handlerResultInfoException(ResultInfoException e) {
  24 + return e.toResultInfo();
  25 + }
  26 +}
0 \ No newline at end of file 27 \ No newline at end of file
src/main/java/com/taover/bazhuayun/analysis/web/controller/manage/HeartbeatController.java 0 → 100644
@@ -0,0 +1,154 @@ @@ -0,0 +1,154 @@
  1 +package com.taover.bazhuayun.analysis.web.controller.manage;
  2 +
  3 +import javax.annotation.Resource;
  4 +import javax.servlet.http.HttpServletRequest;
  5 +
  6 +import org.apache.commons.lang.StringUtils;
  7 +import org.springframework.web.bind.annotation.DeleteMapping;
  8 +import org.springframework.web.bind.annotation.GetMapping;
  9 +import org.springframework.web.bind.annotation.PathVariable;
  10 +import org.springframework.web.bind.annotation.PostMapping;
  11 +import org.springframework.web.bind.annotation.PutMapping;
  12 +import org.springframework.web.bind.annotation.RequestBody;
  13 +import org.springframework.web.bind.annotation.RequestMapping;
  14 +import org.springframework.web.bind.annotation.RestController;
  15 +
  16 +import com.taover.bazhuayun.analysis.web.form.HeartbeatInstanceCreateForm;
  17 +import com.taover.bazhuayun.analysis.web.form.HeartbeatInstanceUpdateForm;
  18 +import com.taover.bazhuayun.analysis.web.module.heartbeat.HeartbeatManager;
  19 +import com.taover.bazhuayun.analysis.web.repository.AnalysisHeartbeatInstanceRepository;
  20 +import com.taover.util.bean.ResultInfo;
  21 +import com.taover.util.bean.UtilResultInfo;
  22 +
  23 +@RestController("manage.heartbeat")
  24 +@RequestMapping("/manage/heartbeat")
  25 +public class HeartbeatController {
  26 + @Resource
  27 + private AnalysisHeartbeatInstanceRepository analysisHeartbeatInstanceRepository;
  28 + @Resource
  29 + private HeartbeatManager heartbeatManager;
  30 +
  31 + /**
  32 + * @apiDefine ResultInfo
  33 + * @apiSuccess {string}
  34 + * @apiSuccessExample {json} Success-Response:
  35 + * {
  36 + * code:ok,
  37 + * error:null
  38 + * }
  39 + * @apiError ThrowException 出现异常
  40 + * @apiErrorExample
  41 + * {
  42 + * code:fail,
  43 + * error:null exception
  44 + * }
  45 + */
  46 +
  47 + /**
  48 + * @api {GET} /v1/wxorderauthoper 查询wxorderauthoper列表
  49 + * @apiDescription 查询wxorderauthoper列表数据
  50 + * 返回分页结果
  51 + *
  52 + * @apiGroup wxorderauthoper
  53 + * @apiName wxorderauthoper列表
  54 + * @apiVersion 1.0.0
  55 + * @apiHeader Authorization
  56 + *
  57 + * @apiUse ResultInfo
  58 + */
  59 + @GetMapping
  60 + public ResultInfo get(HttpServletRequest request){
  61 + String pageStr = request.getParameter("page");
  62 + if(StringUtils.isEmpty(pageStr)){
  63 + pageStr = "1";
  64 + }
  65 + String sizeStr = request.getParameter("size");
  66 + if(StringUtils.isEmpty(sizeStr)){
  67 + sizeStr = "10";
  68 + }
  69 + return UtilResultInfo.getSuccess("", this.analysisHeartbeatInstanceRepository.findPageBySql("1=1", Integer.valueOf(pageStr), Integer.valueOf(sizeStr), null));
  70 + }
  71 +
  72 + /**
  73 + * @api {GET} /v1/wxorderauthoper/{ssid} 查询ssid对应的wxorderauthoper
  74 + * @apiDescription 查询ssid对应wxorderauthoper数据
  75 + *
  76 + * @apiGroup wxorderauthoper
  77 + * @apiName get实体数据
  78 + * @apiVersion 1.0.0
  79 + * @apiHeader Authorization
  80 + *
  81 + * @apiUse ResultInfo
  82 + */
  83 + @GetMapping("/{code}")
  84 + public ResultInfo get(@PathVariable String code){
  85 + try {
  86 + return UtilResultInfo.getSuccess("", this.analysisHeartbeatInstanceRepository.findEntityBySql("code='"+code+"'", null));
  87 + } catch (Exception e) {
  88 + return UtilResultInfo.getFailure("not found record");
  89 + }
  90 + }
  91 +
  92 + /**
  93 + * @api {POST} /v1/wxorderauthoper 创建wxorderauthoper
  94 + * @apiDescription 创建wxorderauthoper
  95 + *
  96 + * @apiGroup wxorderauthoper
  97 + * @apiName get实体数据
  98 + * @apiVersion 1.0.0
  99 + * @apiHeader Authorization
  100 + *
  101 + * @apiUse ResultInfo
  102 + */
  103 + @PostMapping
  104 + public ResultInfo post(@RequestBody HeartbeatInstanceCreateForm form){
  105 + this.heartbeatManager.createInstance(form);
  106 + return UtilResultInfo.getSuccess("创建成功");
  107 + }
  108 +
  109 + /**
  110 + * @api {DELETE} /v1/wxorderauthoper/{ssid} 删除ssid对应的wxorderauthoper
  111 + * @apiDescription 删除ssid对应的wxorderauthoper数据
  112 + *
  113 + * @apiGroup wxorderauthoper
  114 + * @apiName 删除实体数据
  115 + * @apiVersion 1.0.0
  116 + * @apiHeader Authorization
  117 + *
  118 + * @apiUse ResultInfo
  119 + */
  120 + @DeleteMapping("/{code}")
  121 + public ResultInfo delete(@PathVariable String code){
  122 + this.heartbeatManager.deleteInstance(code);
  123 + return UtilResultInfo.getSuccess("删除成功");
  124 + }
  125 +
  126 + /**
  127 + * @api {PUT} /v1/wxorderauthoper/{ssid} 修改wxorderauthoper数据
  128 + * @apiDescription 修改wxorderauthoper数据
  129 + *
  130 + * @apiGroup wxorderauthoper
  131 + * @apiName 修改实体数据
  132 + * @apiVersion 1.0.0
  133 + * @apiHeader Authorization
  134 + *
  135 + * @apiUse ResultInfo
  136 + */
  137 + @PutMapping("/{code}")
  138 + public ResultInfo put(@PathVariable String code, @RequestBody HeartbeatInstanceUpdateForm form){
  139 + this.heartbeatManager.updateInstance(code, form);
  140 + return UtilResultInfo.getSuccess("更新成功");
  141 + }
  142 +
  143 + @PutMapping("/{code}/enable")
  144 + public ResultInfo putEnable(@PathVariable String code){
  145 + this.heartbeatManager.enableInstanceByCode(code);
  146 + return UtilResultInfo.getSuccess("监控启用成功");
  147 + }
  148 +
  149 + @PutMapping("/{code}/disable")
  150 + public ResultInfo putDisable(@PathVariable String code){
  151 + this.heartbeatManager.disableInstanceByCode(code);
  152 + return UtilResultInfo.getSuccess("监控停用成功");
  153 + }
  154 +}
src/main/java/com/taover/bazhuayun/analysis/web/form/HeartbeatInstanceCreateForm.java
@@ -6,7 +6,7 @@ import javax.persistence.Id; @@ -6,7 +6,7 @@ import javax.persistence.Id;
6 public class HeartbeatInstanceCreateForm extends BaseCreateForm { 6 public class HeartbeatInstanceCreateForm extends BaseCreateForm {
7 7
8 /** 8 /**
9 - * 实例类型:0-请求端,1-服务 9 + * 实例类型:0-作为服务端,1-作为请求
10 */ 10 */
11 private java.lang.Integer roleType; 11 private java.lang.Integer roleType;
12 12
src/main/java/com/taover/bazhuayun/analysis/web/form/HeartbeatInstanceUpdateForm.java
1 package com.taover.bazhuayun.analysis.web.form; 1 package com.taover.bazhuayun.analysis.web.form;
2 2
3 import javax.persistence.Column; 3 import javax.persistence.Column;
4 -import javax.persistence.Id;  
5 4
6 public class HeartbeatInstanceUpdateForm extends BaseUpdateForm { 5 public class HeartbeatInstanceUpdateForm extends BaseUpdateForm {
7 @Column(name="url") 6 @Column(name="url")
@@ -13,16 +12,7 @@ public class HeartbeatInstanceUpdateForm extends BaseUpdateForm { @@ -13,16 +12,7 @@ public class HeartbeatInstanceUpdateForm extends BaseUpdateForm {
13 public void setUrl(java.lang.String url){ 12 public void setUrl(java.lang.String url){
14 this.url = url; 13 this.url = url;
15 } 14 }
16 -  
17 - private java.lang.String code;  
18 15
19 - public java.lang.String getCode(){  
20 - return code;  
21 - }  
22 - public void setCode(java.lang.String code){  
23 - this.code = code;  
24 - }  
25 -  
26 @Column(name="fix_rate_sec") 16 @Column(name="fix_rate_sec")
27 private java.lang.Integer fixRateSec; 17 private java.lang.Integer fixRateSec;
28 18
@@ -97,20 +87,7 @@ public class HeartbeatInstanceUpdateForm extends BaseUpdateForm { @@ -97,20 +87,7 @@ public class HeartbeatInstanceUpdateForm extends BaseUpdateForm {
97 public void setReformPhone(java.lang.String reformPhone){ 87 public void setReformPhone(java.lang.String reformPhone){
98 this.reformPhone = reformPhone; 88 this.reformPhone = reformPhone;
99 } 89 }
100 -  
101 - /**  
102 - * 可用状态:0-注销,1-使用中  
103 - */  
104 - @Column(name="status")  
105 - private java.lang.Integer status;  
106 -  
107 - public java.lang.Integer getStatus(){  
108 - return status;  
109 - }  
110 - public void setStatus(java.lang.Integer status){  
111 - this.status = status;  
112 - }  
113 - 90 +
114 /** 91 /**
115 * 92 *
116 */ 93 */
src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManager.java
@@ -26,7 +26,7 @@ public interface HeartbeatManager { @@ -26,7 +26,7 @@ public interface HeartbeatManager {
26 * 修改监控实例 26 * 修改监控实例
27 * @param form 27 * @param form
28 */ 28 */
29 - void updateInstance(HeartbeatInstanceUpdateForm form); 29 + void updateInstance(String code, HeartbeatInstanceUpdateForm form);
30 30
31 /** 31 /**
32 * 停用监控实例 32 * 停用监控实例
@@ -56,4 +56,10 @@ public interface HeartbeatManager { @@ -56,4 +56,10 @@ public interface HeartbeatManager {
56 * 向服务器发送心跳 56 * 向服务器发送心跳
57 */ 57 */
58 void sendServerHeartbeat(); 58 void sendServerHeartbeat();
  59 +
  60 + /**
  61 + * 删除实例
  62 + * @param id
  63 + */
  64 + void deleteInstance(String code);
59 } 65 }
src/main/java/com/taover/bazhuayun/analysis/web/module/heartbeat/HeartbeatManagerImpl.java
@@ -271,13 +271,13 @@ public class HeartbeatManagerImpl implements HeartbeatManager { @@ -271,13 +271,13 @@ public class HeartbeatManagerImpl implements HeartbeatManager {
271 } 271 }
272 272
273 @Override 273 @Override
274 - public void updateInstance(HeartbeatInstanceUpdateForm form) { 274 + public void updateInstance(String code, HeartbeatInstanceUpdateForm form) {
275 form.trimByRegexS(); 275 form.trimByRegexS();
276 AnalysisHeartbeatInstanceEntity instance = null; 276 AnalysisHeartbeatInstanceEntity instance = null;
277 try { 277 try {
278 - instance = this.analysisHeartbeatInstanceRepository.findEntityBySql("code='"+form.getCode()+"'", null); 278 + instance = this.analysisHeartbeatInstanceRepository.findEntityBySql("code='"+code+"'", null);
279 } catch (NotFoundException | MultiRowException e1) { 279 } catch (NotFoundException | MultiRowException e1) {
280 - throw new RuntimeException("code="+form.getCode()+"对应的实例数据异常(未找到或存在多条重复记录),请技术人员核实"); 280 + throw new RuntimeException("code="+code+"对应的实例数据异常(未找到或存在多条重复记录),请技术人员核实");
281 } 281 }
282 this.analysisHeartbeatInstanceRepository.updateEntityById(form.getSQLUpdateList(), instance.getId(), null); 282 this.analysisHeartbeatInstanceRepository.updateEntityById(form.getSQLUpdateList(), instance.getId(), null);
283 try { 283 try {
@@ -326,4 +326,16 @@ public class HeartbeatManagerImpl implements HeartbeatManager { @@ -326,4 +326,16 @@ public class HeartbeatManagerImpl implements HeartbeatManager {
326 UtilLog.error("注销监控实例出现异常,code["+instance.getCode()+"]", e, this.getClass()); 326 UtilLog.error("注销监控实例出现异常,code["+instance.getCode()+"]", e, this.getClass());
327 } 327 }
328 } 328 }
  329 +
  330 + @Override
  331 + public void deleteInstance(String code) {
  332 + AnalysisHeartbeatInstanceEntity instance = null;
  333 + try {
  334 + instance = this.analysisHeartbeatInstanceRepository.findEntityBySql("code='"+code+"'", null);
  335 + } catch (NotFoundException | MultiRowException e1) {
  336 + throw new RuntimeException("code="+code+"对应的实例数据异常(未找到或存在多条重复记录),请技术人员核实");
  337 + }
  338 + this.disableInstanceByCode(instance.getCode());
  339 + this.analysisHeartbeatInstanceRepository.deleteEntityByID(instance.getId(), null);
  340 + }
329 } 341 }
src/main/java/com/taover/bazhuayun/analysis/web/permission/Audience.java 0 → 100644
@@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
  1 +package com.taover.bazhuayun.analysis.web.permission;
  2 +
  3 +/**
  4 + * jwt相关配置
  5 + * @author gaoming
  6 + *
  7 + */
  8 +public class Audience {
  9 + private String clientId = "098f6bcd4621d373cade4e832627b4f6";
  10 + private String base64Secret = "MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY";
  11 + private String name = "admin";
  12 + private int expiresSecond = 604800;
  13 +
  14 + public String getClientId() {
  15 + return clientId;
  16 + }
  17 + public void setClientId(String clientId) {
  18 + this.clientId = clientId;
  19 + }
  20 + public String getBase64Secret() {
  21 + return base64Secret;
  22 + }
  23 + public void setBase64Secret(String base64Secret) {
  24 + this.base64Secret = base64Secret;
  25 + }
  26 + public String getName() {
  27 + return name;
  28 + }
  29 + public void setName(String name) {
  30 + this.name = name;
  31 + }
  32 + public int getExpiresSecond() {
  33 + return expiresSecond;
  34 + }
  35 + public void setExpiresSecond(int expiresSecond) {
  36 + this.expiresSecond = expiresSecond;
  37 + }
  38 +}
src/main/java/com/taover/bazhuayun/analysis/web/permission/BzyClaims.java 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +package com.taover.bazhuayun.analysis.web.permission;
  2 +
  3 +import io.jsonwebtoken.Claims;
  4 +
  5 +public class BzyClaims {
  6 +
  7 + private Long tenantId;
  8 + private Long userId;
  9 + private Claims claims;
  10 +
  11 + private BzyClaims(){}
  12 +
  13 + public BzyClaims(Claims claims,Long tennatId,Long userId){
  14 + this.claims = claims;
  15 + this.tenantId = tennatId;
  16 + this.userId = userId;
  17 + }
  18 +
  19 + public Long getTenantId() {
  20 + return tenantId;
  21 + }
  22 + public void setTenantId(Long tenantId) {
  23 + this.tenantId = tenantId;
  24 + }
  25 + public Long getUserId() {
  26 + return userId;
  27 + }
  28 + public void setUserId(Long userId) {
  29 + this.userId = userId;
  30 + }
  31 + public Claims getClaims() {
  32 + return claims;
  33 + }
  34 + public void setClaims(Claims claims) {
  35 + this.claims = claims;
  36 + }
  37 +
  38 +
  39 +}
src/main/java/com/taover/bazhuayun/analysis/web/permission/JwtFilter.java 0 → 100644
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
  1 +package com.taover.bazhuayun.analysis.web.permission;
  2 +
  3 +import java.io.IOException;
  4 +
  5 +import javax.servlet.Filter;
  6 +import javax.servlet.FilterChain;
  7 +import javax.servlet.FilterConfig;
  8 +import javax.servlet.ServletException;
  9 +import javax.servlet.ServletRequest;
  10 +import javax.servlet.ServletResponse;
  11 +import javax.servlet.http.HttpServletRequest;
  12 +import javax.servlet.http.HttpServletResponse;
  13 +
  14 +import com.alibaba.fastjson.JSONObject;
  15 +import com.taover.util.UtilLog;
  16 +import com.taover.util.bean.UtilResultInfo;
  17 +
  18 +public class JwtFilter implements Filter {
  19 + private int adminUserId;
  20 +
  21 + public JwtFilter(int userId) {
  22 + this.adminUserId = userId;
  23 + }
  24 +
  25 + @Override
  26 + public void doFilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) throws IOException, ServletException {
  27 + final HttpServletRequest request = (HttpServletRequest) req;
  28 + final HttpServletResponse response = (HttpServletResponse) res;
  29 + if ("OPTIONS".equals(request.getMethod())) {
  30 + response.setStatus(HttpServletResponse.SC_OK);
  31 + } else {
  32 + //切换为当前用户
  33 + String authHeader = request.getHeader("authorization");
  34 + if(authHeader == null || !authHeader.startsWith(JwtUtil.TOKEN_PREFFIX)) {
  35 + response.getWriter().write(JSONObject.toJSONString(UtilResultInfo.getNotAuthorized("")));
  36 + return;
  37 + }else {
  38 + try {
  39 + //检查是否有权限访问
  40 + BzyClaims claims = JwtUtil.parseJWT(authHeader.substring(JwtUtil.TOKEN_START_INDEX));
  41 + if(claims.getUserId().intValue() != adminUserId) {
  42 + response.getWriter().write(JSONObject.toJSONString(UtilResultInfo.getNotAuthorized("not admin,no permission")));
  43 + return;
  44 + }
  45 + }catch (Exception e) {
  46 + response.addHeader("Content-Type", "application/json;charset=UTF-8");
  47 + response.getWriter().write(JSONObject.toJSONString(UtilResultInfo.getNotAuthorized(e.getMessage())));
  48 + return;
  49 + }
  50 + }
  51 + }
  52 + chain.doFilter(req, res);
  53 + }
  54 +
  55 + @Override
  56 + public void init(FilterConfig filterConfig) throws ServletException {
  57 + UtilLog.infoForMessage("JwtFilter:init", this.getClass());
  58 + }
  59 +
  60 + @Override
  61 + public void destroy() {
  62 + UtilLog.infoForMessage("JwtFilter:destroy", this.getClass());
  63 + }
  64 +}
src/main/java/com/taover/bazhuayun/analysis/web/permission/JwtFilterConfig.java 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +package com.taover.bazhuayun.analysis.web.permission;
  2 +
  3 +import org.springframework.beans.factory.annotation.Value;
  4 +import org.springframework.boot.web.servlet.FilterRegistrationBean;
  5 +import org.springframework.context.annotation.Bean;
  6 +import org.springframework.context.annotation.Configuration;
  7 +
  8 +@Configuration
  9 +public class JwtFilterConfig {
  10 + @Value("${db.user.userid.admin}")
  11 + private int adminUserId;
  12 +
  13 + public static final int ORDER_JWT_FILTER = 1;
  14 +
  15 + @Bean
  16 + public FilterRegistrationBean<JwtFilter> jwtFilter() {
  17 + FilterRegistrationBean<JwtFilter> registrationBean = new FilterRegistrationBean<JwtFilter>();
  18 + registrationBean.setFilter(new JwtFilter(adminUserId));
  19 + registrationBean.addUrlPatterns("/manage/*");
  20 + registrationBean.setOrder(ORDER_JWT_FILTER);
  21 + return registrationBean;
  22 + }
  23 +}
src/main/java/com/taover/bazhuayun/analysis/web/permission/JwtUtil.java 0 → 100644
@@ -0,0 +1,88 @@ @@ -0,0 +1,88 @@
  1 +package com.taover.bazhuayun.analysis.web.permission;
  2 +
  3 +import java.io.IOException;
  4 +import java.security.Key;
  5 +import java.util.Date;
  6 +
  7 +import javax.crypto.spec.SecretKeySpec;
  8 +import javax.servlet.ServletException;
  9 +import javax.xml.bind.DatatypeConverter;
  10 +
  11 +import io.jsonwebtoken.Claims;
  12 +import io.jsonwebtoken.JwtBuilder;
  13 +import io.jsonwebtoken.JwtParser;
  14 +import io.jsonwebtoken.Jwts;
  15 +import io.jsonwebtoken.SignatureAlgorithm;
  16 +
  17 +
  18 +
  19 +/**
  20 + * Reserved claims(保留),它的含义就像是编程语言的保留字一样,属于JWT标准里面规定的一些claim。JWT标准里面定好的claim有:
  21 +
  22 + iss(Issuser):代表这个JWT的签发主体;
  23 + sub(Subject):代表这个JWT的主体,即它的所有人;
  24 + aud(Audience):代表这个JWT的接收对象;
  25 + exp(Expiration time):是一个时间戳,代表这个JWT的过期时间;
  26 + nbf(Not Before):是一个时间戳,代表这个JWT生效的开始时间,意味着在这个时间之前验证JWT是会失败的;
  27 + iat(Issued at):是一个时间戳,代表这个JWT的签发时间;
  28 + jti(JWT ID):是JWT的唯一标识。
  29 + * @param req
  30 + * @param res
  31 + * @param chain
  32 + * @throws IOException
  33 + * @throws ServletException
  34 + */
  35 +public class JwtUtil {
  36 + public static String TOKEN_PREFFIX = "Bearer==";
  37 + public static int TOKEN_START_INDEX = TOKEN_PREFFIX.length();
  38 +
  39 + private static Audience audience = new Audience();
  40 + private static JwtParser jwtParser;
  41 + private static JwtBuilder jwtBuilder;
  42 +
  43 + static {
  44 + //生成签名密钥
  45 + byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(audience.getBase64Secret());
  46 +
  47 + //初始化jwtParser
  48 + jwtParser = Jwts.parser().setSigningKey(apiKeySecretBytes);
  49 +
  50 + //初始化jwtBuilder
  51 + Key signingKey = new SecretKeySpec(apiKeySecretBytes, SignatureAlgorithm.HS256.getJcaName());
  52 + jwtBuilder = Jwts.builder()
  53 + .setHeaderParam("typ", "JWT")
  54 + .setIssuer(audience.getName())
  55 + .setAudience(audience.getClientId())
  56 + .signWith(SignatureAlgorithm.HS256, signingKey);
  57 + }
  58 +
  59 + /**
  60 + * 解析jwt
  61 + */
  62 + public static BzyClaims parseJWT(String token) {
  63 + Claims claims = jwtParser.parseClaimsJws(token).getBody();
  64 + Long userid = Long.valueOf(claims.get("userid", Object.class).toString());
  65 + Long tenantId = Long.valueOf(claims.get("tenant", Object.class).toString());
  66 + return new BzyClaims(claims,tenantId,userid);
  67 + }
  68 +
  69 + /**
  70 + * 构建jwt
  71 + */
  72 + public static String createJWT(String mobile, Long userId, Long tenantId) {
  73 + //添加构成JWT的参数
  74 + jwtBuilder.claim("tenant", tenantId.toString())
  75 + .claim("username", mobile)
  76 + .claim("userid", userId.toString());
  77 + //添加Token过期时间
  78 + if (audience.getExpiresSecond() >= 0) {
  79 + long nowMillis = System.currentTimeMillis();
  80 + Date now = new Date(nowMillis);
  81 + Date exp = new Date(nowMillis + audience.getExpiresSecond()*1000);
  82 + jwtBuilder.setExpiration(exp).setNotBefore(now);
  83 + }
  84 + //生成JWT
  85 + return jwtBuilder.compact();
  86 + }
  87 +
  88 +}
0 \ No newline at end of file 89 \ No newline at end of file
src/main/resources/application-local.properties
@@ -37,3 +37,6 @@ spring.datasource.max-idle=10 @@ -37,3 +37,6 @@ spring.datasource.max-idle=10
37 spring.datasource.max-wait=10000 37 spring.datasource.max-wait=10000
38 spring.datasource.min-idle=5 38 spring.datasource.min-idle=5
39 spring.datasource.initial-size=5 39 spring.datasource.initial-size=5
  40 +
  41 +db.user.userid.admin=2
  42 +
src/main/resources/application-production.properties
@@ -33,3 +33,5 @@ spring.datasource.druid.initial-size=5 @@ -33,3 +33,5 @@ spring.datasource.druid.initial-size=5
33 spring.datasource.druid.max-active=10 33 spring.datasource.druid.max-active=10
34 spring.datasource.druid.min-idle=5 34 spring.datasource.druid.min-idle=5
35 spring.datasource.druid.max-wait=60000 35 spring.datasource.druid.max-wait=60000
  36 +
  37 +db.user.userid.admin=2