fa864d2d7cd8621d68997cc76f9bf2845402ea3d.svn-base 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package cn.com.goldenwater.core.web;
  2. import cn.com.goldenwater.core.exception.BaseException;
  3. import cn.com.goldenwater.dcproj.constValue.CommonLabel;
  4. import cn.com.goldenwater.dcproj.dto.LoginUser;
  5. import cn.com.goldenwater.dcproj.utils.JWTTokenUtil;
  6. import cn.com.goldenwater.target.CheckException;
  7. import org.apache.commons.lang.StringUtils;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.beans.factory.annotation.Value;
  12. import org.springframework.data.redis.core.RedisTemplate;
  13. import org.springframework.web.bind.annotation.ControllerAdvice;
  14. import org.springframework.web.context.request.RequestContextHolder;
  15. import org.springframework.web.context.request.ServletRequestAttributes;
  16. import javax.servlet.http.HttpServletRequest;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. /**
  20. * 重写BaseController
  21. */
  22. @ControllerAdvice
  23. public abstract class BaseController {
  24. private Logger logger = LoggerFactory.getLogger(this.getClass());
  25. @Value("${swagger.persId}")
  26. public String swaggerPersId;
  27. @Value("${swagger.orgId}")
  28. public String swaggerOrgId;
  29. @Value("${swagger.enable}")
  30. private boolean swaggerEnable;
  31. @Autowired
  32. private RedisTemplate redisTemplate;
  33. public BaseController() {
  34. }
  35. /**
  36. * 获取用户id
  37. */
  38. public String getCurrentPersId() {
  39. if (!swaggerEnable) {
  40. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  41. String persId = request.getHeader(CommonLabel.PERSID);
  42. if (StringUtils.isNotBlank(persId)) {
  43. return persId;
  44. }
  45. String uuid = request.getHeader(CommonLabel.ACCESS_TOKEN);
  46. String accessToken = (String) redisTemplate.opsForValue().get(uuid);
  47. if (StringUtils.isNotBlank(accessToken)) {
  48. LoginUser loginUser = JWTTokenUtil.unsign(accessToken, persId);
  49. if (loginUser.getPersId().equals(persId)) {
  50. return persId;
  51. }
  52. }
  53. } else {
  54. return swaggerPersId;
  55. }
  56. throw new CheckException("当前用户信息不存在或已经失效,请重新登录!");
  57. }
  58. /**
  59. * 获取用户信息
  60. */
  61. public LoginUser getCurrentLoginUser() {
  62. if (!swaggerEnable) {
  63. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  64. String persId = request.getHeader(CommonLabel.PERSID);
  65. if (StringUtils.isBlank(persId)) {
  66. throw new CheckException("当前用户信息不全,请重新登录!");
  67. }
  68. String uuid = request.getHeader(CommonLabel.ACCESS_TOKEN);
  69. String accessToken = (String) redisTemplate.opsForValue().get(uuid);
  70. if (StringUtils.isNotBlank(accessToken)) {
  71. LoginUser loginUser = JWTTokenUtil.unsign(accessToken, persId);
  72. return loginUser;
  73. }
  74. }
  75. throw new CheckException("当前用户信息不存在或已经失效,请重新登录!");
  76. }
  77. /**
  78. * 获取机构id
  79. */
  80. public String getCurrentOrgId() {
  81. if (!swaggerEnable) {
  82. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
  83. return request.getHeader("orgId");
  84. } else {
  85. return swaggerOrgId;
  86. }
  87. }
  88. /**
  89. * 返回成功信息
  90. *
  91. * @return
  92. */
  93. public static BaseResponse buildSuccessResponse() {
  94. BaseResponse response = new BaseResponse();
  95. response.setSuccess(true);
  96. return response;
  97. }
  98. /**
  99. * 返回成功信息
  100. *
  101. * @param data
  102. * @return
  103. */
  104. public static <T> BaseResponse<T> buildSuccessResponse(T data) {
  105. BaseResponse<T> response = new BaseResponse<T>();
  106. response.setSuccess(true);
  107. if (data == null) {
  108. Map<String, Object> params = new HashMap<>(1);
  109. response.setData((T) params);
  110. return response;
  111. }
  112. if (data instanceof String || data instanceof Integer || data instanceof Double || data instanceof Short
  113. || data instanceof Character || data instanceof Boolean || data instanceof Float || data instanceof Long) {
  114. Map<String, Object> params = new HashMap<>(1);
  115. params.put("key", data);
  116. response.setData((T) params);
  117. } else {
  118. response.setData(data);
  119. }
  120. return response;
  121. }
  122. public static <T> BaseResponse<T> buildSuccessResponse(T data, String accessToken) {
  123. BaseResponse<T> response = buildSuccessResponse(data);
  124. response.setAccessToken(accessToken);
  125. return response;
  126. }
  127. /* -------------------- 构建返回结果 - 失败 -------------------- */
  128. /**
  129. * 返回失败信息
  130. *
  131. * @return
  132. */
  133. public static BaseResponse buildFailResponse() {
  134. BaseResponse response = new BaseResponse();
  135. response.setSuccess(false);
  136. return response;
  137. }
  138. /**
  139. * 返回失败信息
  140. *
  141. * @return
  142. */
  143. public static BaseResponse buildFailResponse(Exception e) {
  144. BaseResponse response = new BaseResponse();
  145. response.setSuccess(false);
  146. response.setMessage(e.getMessage());
  147. response.setThrowable(e.getClass().getName());
  148. if (e instanceof BaseException) {
  149. response.setCode(((BaseException) e).getCode());
  150. }
  151. return response;
  152. }
  153. /**
  154. * 返回失败信息
  155. *
  156. * @param message
  157. * @return
  158. */
  159. public static BaseResponse buildFailResponse(String message) {
  160. BaseResponse response = new BaseResponse();
  161. response.setSuccess(false);
  162. response.setMessage(message);
  163. return response;
  164. }
  165. /**
  166. * 返回失败信息
  167. *
  168. * @param code
  169. * @param message
  170. * @return
  171. */
  172. public static BaseResponse buildFailResponse(Integer code, String message) {
  173. BaseResponse response = new BaseResponse();
  174. response.setSuccess(false);
  175. response.setCode(code);
  176. response.setMessage(message);
  177. return response;
  178. }
  179. /**
  180. * 返回成功信息--返回提示信息
  181. *
  182. * @param code
  183. * @param message
  184. * @return
  185. */
  186. public static BaseResponse buildSuccessResponse(Integer code, String message) {
  187. BaseResponse response = new BaseResponse();
  188. response.setSuccess(true);
  189. response.setCode(code);
  190. response.setMessage(message);
  191. return response;
  192. }
  193. public static <T> BaseResponse<T> buildSuccessResponse(T data, String accessToken, int code, String message) {
  194. BaseResponse<T> response = buildSuccessResponse(data);
  195. response.setAccessToken(accessToken);
  196. response.setCode(code);
  197. response.setMessage(message);
  198. return response;
  199. }
  200. /**
  201. * 返回成功信息--带对象
  202. *
  203. * @param code
  204. * @param message
  205. * @return
  206. */
  207. public static <T> BaseResponse<T> buildSuccessResponse(Integer code, String message, T data) {
  208. BaseResponse response = new BaseResponse();
  209. response.setSuccess(true);
  210. response.setMessage(message);
  211. response = buildSuccessResponse(data);
  212. response.setCode(code);
  213. return response;
  214. }
  215. /**
  216. * 返回失败信息
  217. *
  218. * @param code
  219. * @param message
  220. * @param path
  221. * @param throwable
  222. * @return
  223. */
  224. public static BaseResponse buildFailResponse(Integer code, String message, String path, String throwable) {
  225. BaseResponse response = new BaseResponse();
  226. response.setSuccess(false);
  227. response.setCode(code);
  228. response.setMessage(message);
  229. response.setPath(path);
  230. response.setThrowable(throwable);
  231. return response;
  232. }
  233. public static BaseResponse buildSuccessOrFailResponse(Integer code, String message, Boolean flag) {
  234. BaseResponse response = new BaseResponse();
  235. response.setSuccess(flag);
  236. response.setCode(code);
  237. response.setMessage(message);
  238. return response;
  239. }
  240. }