From edca1adbd033a680dbbcc2cbefee0326cc7199b5 Mon Sep 17 00:00:00 2001
From: wenc000 <450292408@qq.com>
Date: Sat, 26 Oct 2019 15:55:49 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3BUG=EF=BC=8C=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
cloud-common-plugin-oauth/pom.xml | 6 +-
.../java/com/cm/common/plugin/IApiConsts.java | 5 +
.../service/menu/impl/MenuServiceImpl.java | 4 +
.../oauth/service/user/IUserService.java | 10 +
.../service/user/impl/UserServiceImpl.java | 26 +-
.../plugin/oauth/timer/ClientTokenTimer.java | 33 ++
.../oauth/token/ClientTokenManager.java | 100 +++++
.../common/plugin/pojo/bos/ClientTokenBO.java | 88 ++++
.../cm/common/plugin/push/PushMessage.java | 85 ++++
.../common/plugin/utils/RestTemplateUtil.java | 100 ++++-
cloud-common-plugin/pom.xml | 6 +-
.../com/cm/common/aspect/ApiLogAspect.java | 62 ++-
.../impl/SystemLoggerServiceImpl.java | 1 -
cloud-common/pom.xml | 4 +-
.../component/OAuthRestTemplateComponent.java | 404 ++++++++++++++++++
.../common/pojo/vos/push/PushMessageVO.java | 50 +++
.../common/token/app/entity/AppTokenUser.java | 42 +-
cloud-security/pom.xml | 4 +-
cloud-token-in/pom.xml | 4 +-
cloud-token-out/pom.xml | 4 +-
pom.xml | 2 +-
21 files changed, 992 insertions(+), 48 deletions(-)
create mode 100644 cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/timer/ClientTokenTimer.java
create mode 100644 cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/token/ClientTokenManager.java
create mode 100644 cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/pojo/bos/ClientTokenBO.java
create mode 100644 cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/push/PushMessage.java
create mode 100644 cloud-common/src/main/java/com/cm/common/component/OAuthRestTemplateComponent.java
create mode 100644 cloud-common/src/main/java/com/cm/common/pojo/vos/push/PushMessageVO.java
diff --git a/cloud-common-plugin-oauth/pom.xml b/cloud-common-plugin-oauth/pom.xml
index de009a1..5ac4907 100644
--- a/cloud-common-plugin-oauth/pom.xml
+++ b/cloud-common-plugin-oauth/pom.xml
@@ -5,20 +5,20 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
4.0.0
单点登录客户端使用的通用jar包
cloud-common-plugin-oauth
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
com.cm
cloud-common-plugin
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/IApiConsts.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/IApiConsts.java
index 8aae2bb..d7aaf48 100644
--- a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/IApiConsts.java
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/IApiConsts.java
@@ -64,6 +64,11 @@ public interface IApiConsts {
*/
String LIST_USER_DEPARTMENT_USER_BY_ROLE = "%s/resource/user/listuserdepartmentuserbyrole/%s/%s";
+ /**
+ * App获取用户所在部门用户列表(通过角色)
+ */
+ String APP_LIST_USER_DEPARTMENT_USER_BY_ROLE = "%s/app/user/listuserdepartmentuserbyrole/%s/%s";
+
/**
* 获取用户所在部门用户列表(通过职位)
*/
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/menu/impl/MenuServiceImpl.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/menu/impl/MenuServiceImpl.java
index 27009b3..b4a43b3 100644
--- a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/menu/impl/MenuServiceImpl.java
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/menu/impl/MenuServiceImpl.java
@@ -3,11 +3,13 @@ package com.cm.common.plugin.oauth.service.menu.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cm.common.base.AbstractService;
+import com.cm.common.component.OAuthRestTemplateComponent;
import com.cm.common.config.properties.ApiPathProperties;
import com.cm.common.exception.AccessTokenException;
import com.cm.common.exception.SearchException;
import com.cm.common.plugin.IApiConsts;
import com.cm.common.plugin.oauth.service.menu.IMenuService;
+import com.cm.common.plugin.oauth.token.ClientTokenManager;
import com.cm.common.plugin.utils.RestTemplateUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +33,8 @@ public class MenuServiceImpl extends AbstractService implements IMenuService {
@Autowired
private RestTemplateUtil restTemplateUtil;
@Autowired
+ private OAuthRestTemplateComponent oAuthRestTemplateComponent;
+ @Autowired
private ApiPathProperties apiPathProperties;
@Override
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/IUserService.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/IUserService.java
index 9d8f334..67a798a 100644
--- a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/IUserService.java
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/IUserService.java
@@ -98,6 +98,15 @@ public interface IUserService {
*/
JSONArray listUserDepartmentUserByRole(Map params) throws AccessTokenException, SearchException;
+ /**
+ * APP获取用户所在部门用户列表(通过角色)
+ *
+ * @param token
+ * @param userParams
+ * @return
+ */
+ JSONArray listUserDepartmentUserByRole(String token, Map userParams) throws SearchException;
+
/**
* 获取用户所在部门用户列表(通过职位)
*
@@ -118,4 +127,5 @@ public interface IUserService {
*/
JSONObject getUserDetail(Map params) throws AccessTokenException, SearchException;
+ JSONArray listRoleUsers(String accessToken, Map params) throws AccessTokenException, SearchException;
}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/impl/UserServiceImpl.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/impl/UserServiceImpl.java
index 1b09d10..484a67d 100644
--- a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/impl/UserServiceImpl.java
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/service/user/impl/UserServiceImpl.java
@@ -3,14 +3,13 @@ package com.cm.common.plugin.oauth.service.user.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cm.common.base.AbstractService;
+import com.cm.common.component.OAuthRestTemplateComponent;
import com.cm.common.config.properties.ApiPathProperties;
import com.cm.common.exception.AccessTokenException;
import com.cm.common.exception.SearchException;
-import com.cm.common.exception.TokenException;
import com.cm.common.plugin.IApiConsts;
import com.cm.common.plugin.oauth.service.user.IUserService;
import com.cm.common.plugin.utils.RestTemplateUtil;
-import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -33,6 +32,8 @@ public class UserServiceImpl extends AbstractService implements IUserService {
private RestTemplateUtil restTemplateUtil;
@Autowired
private ApiPathProperties apiPathProperties;
+ @Autowired
+ private OAuthRestTemplateComponent oAuthRestTemplateComponent;
@Override
public JSONArray listDepartmentUsers(Map params) throws AccessTokenException, SearchException {
@@ -130,6 +131,15 @@ public class UserServiceImpl extends AbstractService implements IUserService {
return JSONArray.parseArray(result);
}
+ @Override
+ public JSONArray listUserDepartmentUserByRole(String token, Map params) throws SearchException {
+ String result = restTemplateUtil.doGetFormForApp(token, String.format(IApiConsts.APP_LIST_USER_DEPARTMENT_USER_BY_ROLE, apiPathProperties.getUserCenter(), params.get("userId").toString(), params.get("roleId").toString()), params);
+ if (result == null || result.isEmpty()) {
+ throw new SearchException("获取人员列表失败");
+ }
+ return JSONArray.parseArray(result);
+ }
+
@Override
public JSONArray listUserDepartmentUserByPosition(Map params) throws AccessTokenException, SearchException {
String result = restTemplateUtil.doPostForm(String.format(IApiConsts.LIST_USER_DEPARTMENT_USER_BY_POSITION, apiPathProperties.getUserCenter(), params.get("userId").toString(), params.get("positionId").toString()), params);
@@ -154,4 +164,16 @@ public class UserServiceImpl extends AbstractService implements IUserService {
return JSONObject.parseObject(result);
}
+ @Override
+ public JSONArray listRoleUsers(String accessToken, Map params) throws AccessTokenException, SearchException {
+ String result = oAuthRestTemplateComponent.doPostFormForOAuth2Client(accessToken, String.format(IApiConsts.LIST_ROLE_USER, apiPathProperties.getUserCenter(), params.get("roleId").toString()), params);
+ if (result == null) {
+ throw new AccessTokenException("认证失败");
+ }
+ if (result.isEmpty()) {
+ throw new SearchException("获取人员列表失败");
+ }
+ return JSONArray.parseArray(result);
+ }
+
}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/timer/ClientTokenTimer.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/timer/ClientTokenTimer.java
new file mode 100644
index 0000000..b31da09
--- /dev/null
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/timer/ClientTokenTimer.java
@@ -0,0 +1,33 @@
+package com.cm.common.plugin.oauth.timer;
+
+import com.cm.common.config.properties.OauthClientProperties;
+import com.cm.common.config.properties.OauthProperties;
+import com.cm.common.plugin.pojo.bos.ClientTokenBO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: ClientTokenTimer
+ * @Description: 客户端token定时器
+ * @Author: WangGeng
+ * @Date: 2019/10/16 12:13 上午
+ * @Version: 1.0
+ **/
+@Configuration
+@EnableScheduling
+public class ClientTokenTimer {
+
+ @Autowired
+ private OauthProperties oauthProperties;
+ @Autowired
+ private OauthClientProperties oauthClientProperties;
+ private static ClientTokenBO clientTokenBO;
+
+ public void refreshToken() {
+ }
+
+}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/token/ClientTokenManager.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/token/ClientTokenManager.java
new file mode 100644
index 0000000..2d4a245
--- /dev/null
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/oauth/token/ClientTokenManager.java
@@ -0,0 +1,100 @@
+package com.cm.common.plugin.oauth.token;
+
+import com.alibaba.fastjson.JSONObject;
+import com.cm.common.config.properties.OauthClientProperties;
+import com.cm.common.config.properties.OauthProperties;
+import com.cm.common.plugin.pojo.bos.ClientTokenBO;
+import com.cm.common.plugin.utils.RestTemplateUtil;
+import com.hazelcast.core.Client;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.security.core.parameters.P;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: ClientTokenManager
+ * @Description: 客户单token
+ * @Author: WangGeng
+ * @Date: 2019/10/16 12:22 上午
+ * @Version: 1.0
+ **/
+public class ClientTokenManager {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ClientTokenManager.class);
+ private static ClientTokenManager clientTokenManager = ClientTokenBuilder.clientTokenManager;
+ private ClientTokenBO clientToken;
+ private RestTemplateUtil restTemplateUtil;
+ private OauthProperties oauthProperties;
+ private OauthClientProperties oauthClientProperties;
+
+ private ClientTokenManager() {
+ }
+
+ public static ClientTokenManager getInstance() {
+ return clientTokenManager;
+ }
+
+ public static void setClientTokenManager(ClientTokenManager clientTokenManager) {
+ ClientTokenManager.clientTokenManager = clientTokenManager;
+ }
+
+ public ClientTokenBO getClientToken() {
+ if (clientToken == null || (System.currentTimeMillis() - clientToken.getCreateTime()) / 1000 >= clientToken.getExpiresIn()) {
+ LOG.debug("客户端Token失效,获取token");
+ Map params = new HashMap<>(4);
+ params.put("grant_type", "client_credentials");
+ params.put("client_id", oauthClientProperties.getClientId());
+ params.put("client_secret", oauthClientProperties.getClientSecret());
+ params.put("scope", "all");
+ String result = restTemplateUtil.doPostFormNormal(String.format("%s/oauth/token", oauthProperties.getOauthServer()), params);
+ if (StringUtils.isBlank(result)) {
+ LOG.error("客户端获取token失效");
+ } else {
+ JSONObject accessTokenObject = JSONObject.parseObject(result);
+ clientToken = new ClientTokenBO();
+ clientToken.setAccessToken(accessTokenObject.getString("access_token"));
+ clientToken.setTokenType(accessTokenObject.getString("token_type"));
+ clientToken.setExpiresIn(accessTokenObject.getInteger("expires_in"));
+ clientToken.setScope(accessTokenObject.getString("scope"));
+ clientToken.setJti(accessTokenObject.getString("jti"));
+ clientToken.setCreateTime(System.currentTimeMillis());
+ }
+ }
+ return clientToken;
+ }
+
+ public RestTemplateUtil getRestTemplateUtil() {
+ return restTemplateUtil;
+ }
+
+ public void setRestTemplateUtil(RestTemplateUtil restTemplateUtil) {
+ this.restTemplateUtil = restTemplateUtil;
+ }
+
+ public OauthProperties getOauthProperties() {
+ return oauthProperties;
+ }
+
+ public void setOauthProperties(OauthProperties oauthProperties) {
+ this.oauthProperties = oauthProperties;
+ }
+
+ public OauthClientProperties getOauthClientProperties() {
+ return oauthClientProperties;
+ }
+
+ public void setOauthClientProperties(OauthClientProperties oauthClientProperties) {
+ this.oauthClientProperties = oauthClientProperties;
+ }
+
+ private static class ClientTokenBuilder {
+ public static ClientTokenManager clientTokenManager = new ClientTokenManager();
+ }
+
+}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/pojo/bos/ClientTokenBO.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/pojo/bos/ClientTokenBO.java
new file mode 100644
index 0000000..58ac917
--- /dev/null
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/pojo/bos/ClientTokenBO.java
@@ -0,0 +1,88 @@
+package com.cm.common.plugin.pojo.bos;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: ClientTokenBO
+ * @Description: 客户端token
+ * @Author: WangGeng
+ * @Date: 2019/10/16 12:17 上午
+ * @Version: 1.0
+ **/
+public class ClientTokenBO {
+
+ private String accessToken;
+ private String tokenType;
+ private int expiresIn;
+ private String scope;
+ private String jti;
+ private long createTime;
+
+ public String getAccessToken() {
+ return accessToken == null ? "" : accessToken.trim();
+ }
+
+ public void setAccessToken(String accessToken) {
+ this.accessToken = accessToken;
+ }
+
+ public String getTokenType() {
+ return tokenType == null ? "" : tokenType.trim();
+ }
+
+ public void setTokenType(String tokenType) {
+ this.tokenType = tokenType;
+ }
+
+ public int getExpiresIn() {
+ return expiresIn;
+ }
+
+ public void setExpiresIn(int expiresIn) {
+ this.expiresIn = expiresIn;
+ }
+
+ public String getScope() {
+ return scope == null ? "" : scope.trim();
+ }
+
+ public void setScope(String scope) {
+ this.scope = scope;
+ }
+
+ public String getJti() {
+ return jti == null ? "" : jti.trim();
+ }
+
+ public void setJti(String jti) {
+ this.jti = jti;
+ }
+
+ public long getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(long createTime) {
+ this.createTime = createTime;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("{");
+ sb.append("\"accessToken\":")
+ .append("\"").append(accessToken).append("\"");
+ sb.append(",\"tokenType\":")
+ .append("\"").append(tokenType).append("\"");
+ sb.append(",\"expiresIn\":")
+ .append(expiresIn);
+ sb.append(",\"scope\":")
+ .append("\"").append(scope).append("\"");
+ sb.append(",\"jti\":")
+ .append("\"").append(jti).append("\"");
+ sb.append(",\"createTime\":")
+ .append(createTime);
+ sb.append('}');
+ return sb.toString();
+ }
+}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/push/PushMessage.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/push/PushMessage.java
new file mode 100644
index 0000000..da61651
--- /dev/null
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/push/PushMessage.java
@@ -0,0 +1,85 @@
+package com.cm.common.plugin.push;
+
+import com.cm.common.component.OAuthRestTemplateComponent;
+import com.cm.common.config.properties.ApiPathProperties;
+import com.cm.common.config.properties.OauthClientProperties;
+import com.cm.common.plugin.utils.RestTemplateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.*;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: PushMessage
+ * @Description:
+ * @Author: WangGeng
+ * @Date: 2019/10/14 4:07 下午
+ * @Version: 1.0
+ **/
+@Component
+public class PushMessage {
+ private static final Logger LOG = LoggerFactory.getLogger(PushMessage.class);
+ /**
+ * APP推送的地址
+ */
+ private static final String APP_PUSH_URL = "%s/app/push/pushmessage/%s";
+ /**
+ * 客户端推送地址
+ */
+ private static final String RESOURCE_PUSH_CONTENT_URL = "%s/resource/push/pushmessagetouserwithcontent";
+ @Autowired
+ private ApiPathProperties apiPathProperties;
+ @Autowired
+ private RestTemplateUtil restTemplateUtil;
+ @Autowired
+ private OAuthRestTemplateComponent oAuthRestTemplateComponent;
+
+ private static Executor executor = new ThreadPoolExecutor(2, 10, 60000, TimeUnit.MILLISECONDS, new LinkedBlockingDeque<>());
+
+ /**
+ * app推送
+ *
+ * @param token
+ * @param userId
+ * @param title
+ * @param content
+ */
+ public void appPush(String token, String userId, String title, String content) {
+ Map params = new HashMap<>(2);
+ params.put("title", title);
+ params.put("content", content);
+ executor.execute(() -> {
+ String result = restTemplateUtil.doPostJsonForApp(token, String.format(APP_PUSH_URL, apiPathProperties.getUserCenter(), userId), params);
+ if (result == null) {
+ LOG.error("消息推送失败");
+ } else {
+ LOG.info(result);
+ }
+ });
+ }
+
+ /**
+ * 客户端推送
+ *
+ * @param token
+ * @param params
+ */
+ public void clientPush(String token, Map params) {
+ executor.execute(() -> {
+ String result = oAuthRestTemplateComponent.doPostJsonForOAuth2Client(token, String.format(RESOURCE_PUSH_CONTENT_URL, apiPathProperties.getUserCenter()), params);
+ if (result == null) {
+ LOG.error("消息推送失败");
+ } else {
+ LOG.info(result);
+ }
+ });
+ }
+
+}
diff --git a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/utils/RestTemplateUtil.java b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/utils/RestTemplateUtil.java
index e4d12ed..5c96ec6 100644
--- a/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/utils/RestTemplateUtil.java
+++ b/cloud-common-plugin-oauth/src/main/java/com/cm/common/plugin/utils/RestTemplateUtil.java
@@ -2,14 +2,12 @@ package com.cm.common.plugin.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
-import com.cm.common.config.properties.ApiPathProperties;
import com.cm.common.config.properties.OauthClientProperties;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties;
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.security.oauth2.client.OAuth2ClientContext;
@@ -19,7 +17,6 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
-import java.util.HashMap;
import java.util.Map;
/**
@@ -62,6 +59,44 @@ public class RestTemplateUtil {
}
}
+ /**
+ * 执行GET请求
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetFormForApp(String token, String url, Map params) {
+ RestTemplate restTemplate = getRestTemplate();
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ httpHeaders.add("token", token);
+ HttpEntity httpEntity = new HttpEntity<>(null, httpHeaders);
+ try {
+ return getResponse(restTemplate.exchange(String.format("%s?%s", url, queryParams(params)), HttpMethod.GET, httpEntity, String.class));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ return null;
+ }
+ }
+
+ /**
+ * 正常GET的form表单
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetFormNormal(String url, Map params) {
+ RestTemplate restTemplate = getRestTemplate();
+ try {
+ return getResponse(restTemplate.getForEntity(String.format("%s?%s", url, queryParams(params)), String.class, params));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ return null;
+ }
+ }
+
/**
* post提交 form 数据
*
@@ -81,12 +116,69 @@ public class RestTemplateUtil {
MultiValueMap queryParams = new LinkedMultiValueMap<>();
queryParams.add("access_token", accessToken);
+ return doPost(url, params, httpHeaders, queryParams);
+ }
+
+ /**
+ * app发送post表单请求
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostFormForApp(String token, String url, Map params) {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ httpHeaders.add("token", token);
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ return doPost(url, params, httpHeaders, queryParams);
+ }
+
+ /**
+ * 正常POST的form表单
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostFormNormal(String url, Map params) {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ return doPost(url, params, httpHeaders, queryParams);
+ }
+
+ /**
+ * 发送post请求
+ *
+ * @param url
+ * @param params
+ * @param httpHeaders
+ * @param queryParams
+ * @return
+ */
+ private String doPost(String url, Map params, HttpHeaders httpHeaders, MultiValueMap queryParams) {
for (Map.Entry kv : params.entrySet()) {
queryParams.add(kv.getKey(), kv.getValue());
}
-
HttpEntity> httpEntity = new HttpEntity<>(queryParams, httpHeaders);
+ RestTemplate restTemplate = getRestTemplate();
+ try {
+ return getResponse(restTemplate.postForEntity(url, httpEntity, String.class));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ return null;
+ }
+ }
+ public String doPostJsonForApp(String token, String url, Map params) {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+ httpHeaders.add("token", token);
+ HttpEntity httpEntity = new HttpEntity<>(JSONObject.toJSONString(params), httpHeaders);
RestTemplate restTemplate = getRestTemplate();
try {
return getResponse(restTemplate.postForEntity(url, httpEntity, String.class));
diff --git a/cloud-common-plugin/pom.xml b/cloud-common-plugin/pom.xml
index 9c53af4..0000ee1 100644
--- a/cloud-common-plugin/pom.xml
+++ b/cloud-common-plugin/pom.xml
@@ -5,18 +5,18 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
4.0.0
cloud-common-plugin
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
com.cm
cloud-common
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/cloud-common-plugin/src/main/java/com/cm/common/aspect/ApiLogAspect.java b/cloud-common-plugin/src/main/java/com/cm/common/aspect/ApiLogAspect.java
index a7ab7d2..038a70a 100644
--- a/cloud-common-plugin/src/main/java/com/cm/common/aspect/ApiLogAspect.java
+++ b/cloud-common-plugin/src/main/java/com/cm/common/aspect/ApiLogAspect.java
@@ -6,6 +6,7 @@ import com.cm.common.component.SecurityComponent;
import com.cm.common.plugin.pojo.vos.systemlogger.SystemLoggerVO;
import com.cm.common.plugin.service.systemlogger.ISystemLoggerService;
import com.cm.common.pojo.bos.UserInfoBO;
+import com.cm.common.utils.DateUtil;
import com.cm.common.utils.RequestUtil;
import com.cm.common.utils.UUIDUtil;
import com.cm.common.utils.WMapUtil;
@@ -45,7 +46,7 @@ public class ApiLogAspect {
@Around("apiCutPoint()")
public Object apiLogAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
- return logAround(proceedingJoinPoint);
+ return logAroundForApi(proceedingJoinPoint);
}
/**
@@ -57,7 +58,7 @@ public class ApiLogAspect {
@Around("resourceCutPoint()")
public Object resourcesLogAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
- return logAround(proceedingJoinPoint);
+ return logAroundForResource(proceedingJoinPoint);
}
/**
@@ -66,7 +67,7 @@ public class ApiLogAspect {
* @param proceedingJoinPoint
* @return
*/
- private Object logAround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ private Object logAroundForApi(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
HttpServletRequest request = RequestUtil.getRequest();
Signature signature = proceedingJoinPoint.getSignature();
StringBuilder paramValue = new StringBuilder();
@@ -92,6 +93,7 @@ public class ApiLogAspect {
result = proceedingJoinPoint.proceed();
long endTime = System.currentTimeMillis();
long usedTime = endTime - startTime;
+ String currentTime = DateUtil.getTime();
SystemLoggerVO systemLoggerVO = new SystemLoggerVO();
systemLoggerVO.setHost(request.getRemoteAddr());
systemLoggerVO.setPort(request.getLocalPort());
@@ -108,8 +110,8 @@ public class ApiLogAspect {
systemLoggerVO.setResponseResult(result == null ? "null" : JSON.toJSONString(result));
Map params = WMapUtil.beanToMapObj(systemLoggerVO);
params.put("systemLoggerId", UUIDUtil.getUUID());
- params.put("gmtCreate", usedTime);
- params.put("gmtModified", endTime);
+ params.put("gmtCreate", currentTime);
+ params.put("gmtModified", currentTime);
UserInfoBO userInfoBO = securityComponent.getCurrentUser();
if (null != userInfoBO) {
String userId = userInfoBO.getUserId();
@@ -124,4 +126,54 @@ public class ApiLogAspect {
return result;
}
+ private Object logAroundForResource(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
+ HttpServletRequest request = RequestUtil.getRequest();
+ String accessToken = request.getParameter("accessToken");
+ Signature signature = proceedingJoinPoint.getSignature();
+ StringBuilder paramValue = new StringBuilder();
+ Object[] args = proceedingJoinPoint.getArgs();
+ for (Object arg : args) {
+ // 去除无效的参数
+ if (arg instanceof WebStatFilter.StatHttpServletResponseWrapper) {
+ continue;
+ }
+ if (paramValue.length() > 0) {
+ paramValue.append("_wg_");
+ }
+ try {
+ paramValue.append(JSON.toJSONString(arg));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ Object result;
+ long startTime = System.currentTimeMillis();
+ result = proceedingJoinPoint.proceed();
+ long endTime = System.currentTimeMillis();
+ long usedTime = endTime - startTime;
+ String currentTime = DateUtil.getTime();
+ SystemLoggerVO systemLoggerVO = new SystemLoggerVO();
+ systemLoggerVO.setHost(request.getRemoteAddr());
+ systemLoggerVO.setPort(request.getLocalPort());
+ systemLoggerVO.setRequestIp(RequestUtil.getRequestIp());
+ systemLoggerVO.setContextPath(request.getContextPath());
+ systemLoggerVO.setUri(request.getRequestURI().replace(request.getContextPath(), ""));
+ systemLoggerVO.setParameterValues(paramValue.toString());
+ systemLoggerVO.setClassNameFull(signature.getDeclaringTypeName());
+ systemLoggerVO.setClassName(signature.getDeclaringType().getSimpleName());
+ systemLoggerVO.setMethodName(signature.getName());
+ systemLoggerVO.setStartTime(startTime);
+ systemLoggerVO.setEndTime(endTime);
+ systemLoggerVO.setUsedTime(usedTime);
+ systemLoggerVO.setResponseResult(result == null ? "null" : JSON.toJSONString(result));
+ Map params = WMapUtil.beanToMapObj(systemLoggerVO);
+ params.put("systemLoggerId", UUIDUtil.getUUID());
+ params.put("gmtCreate", currentTime);
+ params.put("gmtModified", currentTime);
+ params.put("creator", accessToken);
+ params.put("creatorName", accessToken);
+ systemLoggerService.saveSystemLogger(params);
+ return result;
+ }
+
}
diff --git a/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/systemlogger/impl/SystemLoggerServiceImpl.java b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/systemlogger/impl/SystemLoggerServiceImpl.java
index c2261b3..bea2a6f 100755
--- a/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/systemlogger/impl/SystemLoggerServiceImpl.java
+++ b/cloud-common-plugin/src/main/java/com/cm/common/plugin/service/systemlogger/impl/SystemLoggerServiceImpl.java
@@ -37,7 +37,6 @@ public class SystemLoggerServiceImpl extends AbstractService implements ISystemL
@Override
public SuccessResult saveSystemLogger(Map params) throws SaveException {
- setSaveInfo(params);
systemLoggerDao.saveSystemLogger(params);
return new SuccessResult();
}
diff --git a/cloud-common/pom.xml b/cloud-common/pom.xml
index d1352f2..ca5f8c5 100644
--- a/cloud-common/pom.xml
+++ b/cloud-common/pom.xml
@@ -5,12 +5,12 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
4.0.0
cloud-common
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/cloud-common/src/main/java/com/cm/common/component/OAuthRestTemplateComponent.java b/cloud-common/src/main/java/com/cm/common/component/OAuthRestTemplateComponent.java
new file mode 100644
index 0000000..dffe25f
--- /dev/null
+++ b/cloud-common/src/main/java/com/cm/common/component/OAuthRestTemplateComponent.java
@@ -0,0 +1,404 @@
+package com.cm.common.component;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.cm.common.config.properties.OauthClientProperties;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.*;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.security.oauth2.client.OAuth2ClientContext;
+import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: OAuthRestTemplateUtil
+ * @Description: OAuth的Rest请求工具类
+ * @Author: WangGeng
+ * @Date: 2019/10/16 10:17 下午
+ * @Version: 1.0
+ **/
+@Component
+public class OAuthRestTemplateComponent {
+
+ private static Logger LOG = LoggerFactory.getLogger(OAuthRestTemplateComponent.class);
+ @Qualifier("oauth2ClientContext")
+ private OAuth2ClientContext oAuth2ClientContext;
+ @Autowired
+ private OauthClientProperties oauthClientProperties;
+
+ /**
+ * GET的FORM表单请求
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetForm(String url, Map params) {
+ params = getParams(params);
+ HttpHeaders httpHeaders = getFormHeader();
+ return getGetResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * Oauth2客户端执行GET的FORM表单请求
+ *
+ * @param accessToken
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetFormForOAuth2Client(String accessToken, String url, Map params) {
+ params = getParams(params);
+ params.put("access_token", accessToken);
+ HttpHeaders httpHeaders = getFormHeader();
+ return getGetResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * Oauth2上下文执行GET的FORM表单请求(用户登录后)
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetFormForOAuth2Context(String url, Map params) {
+ params = getParams(params);
+ refreshOAuth2ContextAccessToken();
+ String accessToken = getOAuth2ContextAccessToken();
+ if (StringUtils.isBlank(accessToken)) {
+ return null;
+ }
+ params.put("access_token", accessToken);
+ HttpHeaders httpHeaders = getFormHeader();
+ return getGetResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * APP执行GET的FORM表单请求
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doGetFormForApp(String token, String url, Map params) {
+ params = getParams(params);
+ HttpHeaders httpHeaders = getFormHeader();
+ httpHeaders.add("token", token);
+ return getGetResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * 获取GET的FORM表单请求的结果
+ *
+ * @param httpHeaders
+ * @param url
+ * @param params
+ * @return
+ */
+ private String getGetResponse(HttpHeaders httpHeaders, String url, Map params) {
+ HttpEntity httpEntity = new HttpEntity<>(null, httpHeaders);
+ RestTemplate restTemplate = getRestTemplate();
+ try {
+ return getResponse(restTemplate.exchange(String.format("%s?%s", url, getQueryParams(params)), HttpMethod.GET, httpEntity, String.class));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ return null;
+ }
+ }
+
+ /**
+ * POST的FORM表单请求
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostForm(String url, Map params) {
+ params = getParams(params);
+ HttpHeaders httpHeaders = getFormHeader();
+ return getPostFormResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * POST的JSON请求
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostJson(String url, Map params) {
+ HttpHeaders httpHeaders = getJsonHeader();
+ return getPostJsonResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * Oauth2客户端执行POST的FORM表单请求
+ *
+ * @param accessToken
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostFormForOAuth2Client(String accessToken, String url, Map params) {
+ params = getParams(params);
+ HttpHeaders httpHeaders = getFormHeader();
+ return getPostFormResponse(httpHeaders, String.format("%s?access_token=%s", url, accessToken), params);
+ }
+
+ /**
+ * Oauth2客户端执行POST的JSON表单请求
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostJsonForOAuth2Client(String accessToken, String url, Map params) {
+ HttpHeaders httpHeaders = getJsonHeader();
+ return getPostJsonResponse(httpHeaders, String.format("%s?access_token=%s", url, accessToken), params);
+ }
+
+ /**
+ * Oauth2上下文执行POST的FORM表单请求(用户登录后)
+ *
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostFormForOAuth2Context(String url, Map params) {
+ params = getParams(params);
+ refreshOAuth2ContextAccessToken();
+ String accessToken = getOAuth2ContextAccessToken();
+ if (StringUtils.isBlank(accessToken)) {
+ return null;
+ }
+ HttpHeaders httpHeaders = getFormHeader();
+ return getPostFormResponse(httpHeaders, String.format("%s?access_token=%s", url, accessToken), params);
+ }
+
+ /**
+ * Oauth2上下文执行POST的JSON请求(用户登录后)
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostJsonForOAuth2Context(String token, String url, Map params) {
+ params = getParams(params);
+ refreshOAuth2ContextAccessToken();
+ String accessToken = getOAuth2ContextAccessToken();
+ if (StringUtils.isBlank(accessToken)) {
+ return null;
+ }
+ HttpHeaders httpHeaders = getJsonHeader();
+ return getPostJsonResponse(httpHeaders, String.format("%s?access_token=%s", url, accessToken), params);
+ }
+
+ /**
+ * APP执行POST的FORM表单请求
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostFormForApp(String token, String url, Map params) {
+ params = getParams(params);
+ HttpHeaders httpHeaders = getFormHeader();
+ httpHeaders.add("token", token);
+ return getPostFormResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * APP执行POST的JSON请求
+ *
+ * @param token
+ * @param url
+ * @param params
+ * @return
+ */
+ public String doPostJsonForApp(String token, String url, Map params) {
+ HttpHeaders httpHeaders = getJsonHeader();
+ httpHeaders.add("token", token);
+ return getPostJsonResponse(httpHeaders, url, params);
+ }
+
+ /**
+ * 获取POST的FORM表单请求的结果
+ *
+ * @param httpHeaders
+ * @param url
+ * @param params
+ * @return
+ */
+ private String getPostFormResponse(HttpHeaders httpHeaders, String url, Map params) {
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ for (Map.Entry kv : params.entrySet()) {
+ queryParams.add(kv.getKey(), kv.getValue());
+ }
+ HttpEntity> httpEntity = new HttpEntity<>(queryParams, httpHeaders);
+ return getPostResponse(httpEntity, url);
+ }
+
+ /**
+ * 获取POST的JSON请求的结果
+ *
+ * @param httpHeaders
+ * @param url
+ * @param params
+ * @return
+ */
+ private String getPostJsonResponse(HttpHeaders httpHeaders, String url, Map params) {
+ HttpEntity httpEntity = new HttpEntity<>(JSONObject.toJSONString(params), httpHeaders);
+ return getPostResponse(httpEntity, url);
+ }
+
+ /**
+ * 获取POST请求结果
+ *
+ * @param httpEntity
+ * @param url
+ * @return
+ */
+ private String getPostResponse(HttpEntity httpEntity, String url) {
+ RestTemplate restTemplate = getRestTemplate();
+ try {
+ return getResponse(restTemplate.postForEntity(url, httpEntity, String.class));
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ return null;
+ }
+ }
+
+ /**
+ * 获取参数
+ *
+ * @param params
+ * @return
+ */
+ private Map getParams(Map params) {
+ if (params == null) {
+ return new HashMap<>(0);
+ }
+ return params;
+ }
+
+ /**
+ * 获取form表单请求header
+ *
+ * @return
+ */
+ private HttpHeaders getFormHeader() {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ return httpHeaders;
+ }
+
+ /**
+ * 获取json请求header
+ *
+ * @return
+ */
+ private HttpHeaders getJsonHeader() {
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
+ return httpHeaders;
+ }
+
+ /**
+ * 获取restTemplate
+ *
+ * @return
+ */
+ private RestTemplate getRestTemplate() {
+ SimpleClientHttpRequestFactory simpleClientHttpRequestFactory = new SimpleClientHttpRequestFactory();
+ simpleClientHttpRequestFactory.setConnectTimeout(20 * 1000);
+ simpleClientHttpRequestFactory.setReadTimeout(60 * 1000);
+ return new RestTemplate(simpleClientHttpRequestFactory);
+ }
+
+ /**
+ * 返回参数
+ *
+ * @param responseEntity
+ * @return
+ */
+ private String getResponse(ResponseEntity responseEntity) {
+ LOG.debug(">>>> 请求状态:" + responseEntity.getStatusCodeValue());
+ if (HttpStatus.OK.value() == responseEntity.getStatusCodeValue()) {
+ return responseEntity.getBody();
+ } else if (HttpStatus.UNAUTHORIZED.value() == responseEntity.getStatusCodeValue()) {
+ return null;
+ }
+ return "";
+ }
+
+ /**
+ * 请求参数
+ *
+ * @param queryParams
+ * @return
+ */
+ private String getQueryParams(Map queryParams) {
+ StringBuilder urlParams = new StringBuilder();
+ for (Map.Entry kv : queryParams.entrySet()) {
+ if (urlParams.length() > 0) {
+ urlParams.append("&");
+ }
+ urlParams.append(kv.getKey()).append("=").append(kv.getValue());
+ }
+ return urlParams.toString();
+ }
+
+ /**
+ * 刷新
+ */
+ private void refreshOAuth2ContextAccessToken() {
+ if (oAuth2ClientContext.getAccessToken().getExpiresIn() < 1800) {
+ LOG.debug("accessToken时间小于1800s,刷新token");
+ HttpHeaders httpHeaders = new HttpHeaders();
+ httpHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+ MultiValueMap queryParams = new LinkedMultiValueMap<>();
+ queryParams.add("grant_type", "refresh_token");
+ queryParams.add("refresh_token", oAuth2ClientContext.getAccessToken().getRefreshToken().getValue());
+ queryParams.add("client_id", oauthClientProperties.getClientId());
+ queryParams.add("client_secret", oauthClientProperties.getClientSecret());
+ HttpEntity> httpEntity = new HttpEntity<>(queryParams, httpHeaders);
+ RestTemplate restTemplate = getRestTemplate();
+ try {
+ String result = getResponse(restTemplate.postForEntity(oauthClientProperties.getAccessTokenUri(), httpEntity, String.class));
+ if (!StringUtils.isBlank(result)) {
+ Map tokenMap = JSON.parseObject(result, Map.class);
+ oAuth2ClientContext.setAccessToken(DefaultOAuth2AccessToken.valueOf(tokenMap));
+ }
+ } catch (Exception e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+
+ /**
+ * 获取accessToken
+ *
+ * @return
+ */
+ private String getOAuth2ContextAccessToken() {
+ return oAuth2ClientContext.getAccessToken().getValue();
+ }
+
+}
\ No newline at end of file
diff --git a/cloud-common/src/main/java/com/cm/common/pojo/vos/push/PushMessageVO.java b/cloud-common/src/main/java/com/cm/common/pojo/vos/push/PushMessageVO.java
new file mode 100644
index 0000000..91d5d95
--- /dev/null
+++ b/cloud-common/src/main/java/com/cm/common/pojo/vos/push/PushMessageVO.java
@@ -0,0 +1,50 @@
+package com.cm.common.pojo.vos.push;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * When you feel like quitting. Think about why you started
+ * 当你想要放弃的时候,想想当初你为何开始
+ *
+ * @ClassName: PushMessageDTO
+ * @Description: 推送消息
+ * @Author: WangGeng
+ * @Date: 2019/10/13 7:32 下午
+ * @Version: 1.0
+ **/
+@ApiModel
+public class PushMessageVO {
+
+ @ApiModelProperty(name = "title", value = "标题")
+ private String title;
+ @ApiModelProperty(name = "content", value = "内容")
+ private String content;
+
+ public String getTitle() {
+ return title == null ? "" : title.trim();
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getContent() {
+ return content == null ? "" : content.trim();
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder sb = new StringBuilder("{");
+ sb.append("\"title\":")
+ .append("\"").append(title).append("\"");
+ sb.append(",\"content\":")
+ .append("\"").append(content).append("\"");
+ sb.append('}');
+ return sb.toString();
+ }
+}
diff --git a/cloud-common/src/main/java/com/cm/common/token/app/entity/AppTokenUser.java b/cloud-common/src/main/java/com/cm/common/token/app/entity/AppTokenUser.java
index f60168a..c05ef2d 100644
--- a/cloud-common/src/main/java/com/cm/common/token/app/entity/AppTokenUser.java
+++ b/cloud-common/src/main/java/com/cm/common/token/app/entity/AppTokenUser.java
@@ -20,9 +20,9 @@ public class AppTokenUser {
private String username;
private String phone;
private String email;
- private List appTokenUserRoles;
- private List appTokenUserPositions;
- private List appTokenUserDepartments;
+ private List roles;
+ private List positions;
+ private List departments;
public String getId() {
return id == null ? "" : id.trim();
@@ -72,28 +72,28 @@ public class AppTokenUser {
this.email = email;
}
- public List getAppTokenUserRoles() {
- return appTokenUserRoles;
+ public List getRoles() {
+ return roles;
}
- public void setAppTokenUserRoles(List appTokenUserRoles) {
- this.appTokenUserRoles = appTokenUserRoles;
+ public void setRoles(List roles) {
+ this.roles = roles;
}
- public List getAppTokenUserPositions() {
- return appTokenUserPositions;
+ public List getPositions() {
+ return positions;
}
- public void setAppTokenUserPositions(List appTokenUserPositions) {
- this.appTokenUserPositions = appTokenUserPositions;
+ public void setPositions(List positions) {
+ this.positions = positions;
}
- public List getAppTokenUserDepartments() {
- return appTokenUserDepartments;
+ public List getDepartments() {
+ return departments;
}
- public void setAppTokenUserDepartments(List appTokenUserDepartments) {
- this.appTokenUserDepartments = appTokenUserDepartments;
+ public void setDepartments(List departments) {
+ this.departments = departments;
}
@Override
@@ -111,12 +111,12 @@ public class AppTokenUser {
.append("\"").append(phone).append("\"");
sb.append(",\"email\":")
.append("\"").append(email).append("\"");
- sb.append(",\"appTokenUserRoles\":")
- .append(appTokenUserRoles);
- sb.append(",\"appTokenUserPositions\":")
- .append(appTokenUserPositions);
- sb.append(",\"appTokenUserDepartments\":")
- .append(appTokenUserDepartments);
+ sb.append(",\"roles\":")
+ .append(roles);
+ sb.append(",\"positions\":")
+ .append(positions);
+ sb.append(",\"departments\":")
+ .append(departments);
sb.append('}');
return sb.toString();
}
diff --git a/cloud-security/pom.xml b/cloud-security/pom.xml
index a92a02c..10927ec 100644
--- a/cloud-security/pom.xml
+++ b/cloud-security/pom.xml
@@ -5,12 +5,12 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
4.0.0
cloud-security
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/cloud-token-in/pom.xml b/cloud-token-in/pom.xml
index d5f8a32..94cc529 100644
--- a/cloud-token-in/pom.xml
+++ b/cloud-token-in/pom.xml
@@ -5,13 +5,13 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
接收系统校验
4.0.0
cloud-token-in
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/cloud-token-out/pom.xml b/cloud-token-out/pom.xml
index 10ab231..3e8ec64 100644
--- a/cloud-token-out/pom.xml
+++ b/cloud-token-out/pom.xml
@@ -5,13 +5,13 @@
cm-cloud
com.cm
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
发送系统校验
4.0.0
cloud-token-out
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
diff --git a/pom.xml b/pom.xml
index 12b7041..e41c051 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.cm
cm-cloud
- 1.0.0.RELEASE
+ 1.0.1-SNAPSHOT
cloud-common
cloud-security