BaseController.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. package com.yihu.wlyy.web;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.yihu.wlyy.entity.IdEntity;
  4. import com.yihu.wlyy.util.DateUtil;
  5. import io.swagger.annotations.ApiResponse;
  6. import io.swagger.annotations.ApiResponses;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.json.JSONArray;
  9. import org.json.JSONObject;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.data.domain.Page;
  14. import org.springframework.util.ReflectionUtils;
  15. import javax.servlet.http.HttpServletRequest;
  16. import java.lang.reflect.Field;
  17. import java.text.SimpleDateFormat;
  18. import java.util.*;
  19. @ApiResponses(value = {
  20. @ApiResponse(code = 200, message = "返回的json里的status是200,成功"),
  21. @ApiResponse(code = 403, message = "返回的json里的status是403,该操作没有权限"),
  22. @ApiResponse(code = 997, message = "返回的json里的status是997,重新登陆"),
  23. @ApiResponse(code = 998, message = "返回的json里的status是998,登录超时,请重新登录"),
  24. @ApiResponse(code = 999, message = "返回的json里的status是999,帐号在别处登录,请重新登录")
  25. })
  26. public class BaseController {
  27. private static Logger logger = LoggerFactory.getLogger(BaseController.class);
  28. @Autowired
  29. protected HttpServletRequest request;
  30. /**
  31. * 獲取髮送請求用戶的uid
  32. *
  33. * @return
  34. */
  35. public String getUID() {
  36. try {
  37. String userAgent = request.getHeader("userAgent");
  38. if (StringUtils.isEmpty(userAgent)) {
  39. userAgent = request.getHeader("User-Agent");
  40. }
  41. JSONObject json = new JSONObject(userAgent);
  42. return json.getString("uid");
  43. } catch (Exception e) {
  44. return null;
  45. }
  46. }
  47. /**
  48. * 获取被代理人的code
  49. * @return
  50. */
  51. public String getRepresentedUID() {
  52. try {
  53. String userAgent = request.getHeader("userAgent");
  54. if (StringUtils.isEmpty(userAgent)) {
  55. userAgent = request.getHeader("User-Agent");
  56. }
  57. JSONObject json = new JSONObject(userAgent);
  58. return json.getString("represented");
  59. } catch (Exception e) {
  60. return null;
  61. }
  62. }
  63. /**
  64. * 获取被代理人code,若没有则返回当前登录者
  65. * @return
  66. */
  67. public String getRepUID(){
  68. try {
  69. String userAgent = request.getHeader("userAgent");
  70. if (StringUtils.isEmpty(userAgent)) {
  71. userAgent = request.getHeader("User-Agent");
  72. }
  73. JSONObject json = new JSONObject(userAgent);
  74. if(json.isNull("represented")){
  75. return json.getString("uid");
  76. }
  77. return json.getString("represented");
  78. } catch (Exception e) {
  79. return null;
  80. }
  81. }
  82. /**
  83. * 獲取髮送請求用戶的uid
  84. *
  85. * @return
  86. */
  87. public String getLastUid() {
  88. try {
  89. String userAgent = request.getHeader("userAgent");
  90. if (StringUtils.isEmpty(userAgent)) {
  91. userAgent = request.getHeader("User-Agent");
  92. }
  93. JSONObject json = new JSONObject(userAgent);
  94. return json.getString("lastUid");
  95. } catch (Exception e) {
  96. return null;
  97. }
  98. }
  99. public String getAppVersion() {
  100. try {
  101. String userAgent = request.getHeader("userAgent");
  102. if (StringUtils.isEmpty(userAgent)) {
  103. userAgent = request.getHeader("User-Agent");
  104. }
  105. JSONObject json = new JSONObject(userAgent);
  106. return json.getString("appVersion");
  107. } catch (Exception e) {
  108. return null;
  109. }
  110. }
  111. public String getOpenid() {
  112. try {
  113. String userAgent = request.getHeader("userAgent");
  114. if (StringUtils.isEmpty(userAgent)) {
  115. userAgent = request.getHeader("User-Agent");
  116. }
  117. JSONObject json = new JSONObject(userAgent);
  118. return json.getString("openid");
  119. } catch (Exception e) {
  120. return null;
  121. }
  122. }
  123. /**
  124. * 获取用户ID
  125. *
  126. * @return
  127. */
  128. public long getId() {
  129. try {
  130. String userAgent = request.getHeader("userAgent");
  131. if (StringUtils.isEmpty(userAgent)) {
  132. userAgent = request.getHeader("User-Agent");
  133. }
  134. JSONObject json = new JSONObject(userAgent);
  135. return json.getLong("id");
  136. } catch (Exception e) {
  137. return 0;
  138. }
  139. }
  140. public String getIMEI() {
  141. try {
  142. String userAgent = request.getHeader("userAgent");
  143. if (StringUtils.isEmpty(userAgent)) {
  144. userAgent = request.getHeader("User-Agent");
  145. }
  146. JSONObject json = new JSONObject(userAgent);
  147. return json.getString("imei");
  148. } catch (Exception e) {
  149. return null;
  150. }
  151. }
  152. public String getToken() {
  153. try {
  154. String userAgent = request.getHeader("userAgent");
  155. if (StringUtils.isEmpty(userAgent)) {
  156. userAgent = request.getHeader("User-Agent");
  157. }
  158. JSONObject json = new JSONObject(userAgent);
  159. return json.getString("token");
  160. } catch (Exception e) {
  161. return null;
  162. }
  163. }
  164. public void error(Exception e) {
  165. logger.error(DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")+":"+getClass().getName() + ":", e.getMessage());
  166. e.printStackTrace();
  167. }
  168. public void warn(Exception e) {
  169. logger.warn(getClass().getName() + ":", e.getMessage());
  170. e.printStackTrace();
  171. }
  172. public void infoMessage(String message) {
  173. logger.info(message);
  174. }
  175. /**
  176. * 返回接口处理结果
  177. *
  178. * @param code 结果码,成功为200
  179. * @param msg 结果提示信息
  180. * @return
  181. */
  182. public String error(int code, String msg) {
  183. try {
  184. Map<Object, Object> map = new HashMap<Object, Object>();
  185. ObjectMapper mapper = new ObjectMapper();
  186. map.put("status", code);
  187. map.put("msg", msg);
  188. return mapper.writeValueAsString(map);
  189. } catch (Exception e) {
  190. error(e);
  191. return null;
  192. }
  193. }
  194. /**
  195. * 接口处理成功
  196. *
  197. * @param msg
  198. * @return
  199. */
  200. public String success(String msg) {
  201. try {
  202. Map<Object, Object> map = new HashMap<Object, Object>();
  203. ObjectMapper mapper = new ObjectMapper();
  204. map.put("status", 200);
  205. map.put("msg", msg);
  206. return mapper.writeValueAsString(map);
  207. } catch (Exception e) {
  208. error(e);
  209. return null;
  210. }
  211. }
  212. public String write(int code, String msg) {
  213. try {
  214. Map<Object, Object> map = new HashMap<Object, Object>();
  215. ObjectMapper mapper = new ObjectMapper();
  216. map.put("status", code);
  217. map.put("msg", msg);
  218. return mapper.writeValueAsString(map);
  219. } catch (Exception e) {
  220. error(e);
  221. return null;
  222. }
  223. }
  224. /**
  225. * 返回接口处理结果
  226. *
  227. * @param code 结果码,成功为200
  228. * @param msg 结果提示信息
  229. * @return
  230. */
  231. public String write(int code, String msg, String key, List<?> list) {
  232. try {
  233. Map<Object, Object> map = new HashMap<Object, Object>();
  234. ObjectMapper mapper = new ObjectMapper();
  235. mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  236. map.put("status", code);
  237. map.put("msg", msg);
  238. map.put(key, list);
  239. String s = mapper.writeValueAsString(map);
  240. return s;
  241. } catch (Exception e) {
  242. error(e);
  243. return error(-1, "服务器异常,请稍候再试!");
  244. }
  245. }
  246. /**
  247. * 返回接口处理结果
  248. *
  249. * @param code 结果码,成功为200
  250. * @param msg 结果提示信息
  251. * @param value 结果数据
  252. * @return
  253. */
  254. public String write(int code, String msg, String key, JSONObject value) {
  255. try {
  256. JSONObject json = new JSONObject();
  257. json.put("status", code);
  258. json.put("msg", msg);
  259. json.put(key, value);
  260. return json.toString();
  261. } catch (Exception e) {
  262. error(e);
  263. return error(-1, "服务器异常,请稍候再试!");
  264. }
  265. }
  266. /**
  267. * 返回接口处理结果
  268. *
  269. * @param code 结果码,成功为200
  270. * @param msg 结果提示信息
  271. * @param value 结果数据
  272. * @return
  273. */
  274. public String write(int code, String msg, String key, JSONArray value) {
  275. try {
  276. JSONObject json = new JSONObject();
  277. json.put("status", code);
  278. json.put("msg", msg);
  279. json.put(key, value);
  280. return json.toString();
  281. } catch (Exception e) {
  282. error(e);
  283. return error(-1, "服务器异常,请稍候再试!");
  284. }
  285. }
  286. /**
  287. * 返回接口处理结果
  288. *
  289. * @param code 结果码,成功为200
  290. * @param msg 结果提示信息
  291. * @param total 总数
  292. * @param value 结果数据
  293. * @return
  294. */
  295. public String write(int code, String msg, int total, String key, JSONArray value) {
  296. try {
  297. JSONObject json = new JSONObject();
  298. json.put("status", code);
  299. json.put("msg", msg);
  300. json.put("total", total);
  301. json.put(key, value);
  302. return json.toString();
  303. } catch (Exception e) {
  304. error(e);
  305. return error(-1, "服务器异常,请稍候再试!");
  306. }
  307. }
  308. /**
  309. * 返回接口处理结果
  310. *
  311. * @param code 结果码,成功为200
  312. * @param msg 结果提示信息
  313. * @param value 结果数据
  314. * @return
  315. */
  316. public String write(int code, String msg, String key, Object value) {
  317. try {
  318. Map<Object, Object> map = new HashMap<Object, Object>();
  319. ObjectMapper mapper = new ObjectMapper();
  320. map.put("status", code);
  321. map.put("msg", msg);
  322. map.put(key, value);
  323. return mapper.writeValueAsString(map);
  324. } catch (Exception e) {
  325. error(e);
  326. return error(-1, "服务器异常,请稍候再试!");
  327. }
  328. }
  329. /**
  330. * 返回接口处理结果
  331. *
  332. * @param code 结果码,成功为200
  333. * @param msg 结果提示信息
  334. * @return
  335. */
  336. public String write(int code, String msg, String key, Page<?> list) {
  337. try {
  338. Map<Object, Object> map = new HashMap<Object, Object>();
  339. ObjectMapper mapper = new ObjectMapper();
  340. map.put("status", code);
  341. map.put("msg", msg);
  342. // 是否为第一页
  343. map.put("isFirst", list.isFirst());
  344. // 是否为最后一页
  345. map.put("isLast", list.isLast());
  346. // 总条数
  347. map.put("total", list.getTotalElements());
  348. // 总页数
  349. map.put("totalPages", list.getTotalPages());
  350. map.put(key, list.getContent());
  351. return mapper.writeValueAsString(map);
  352. } catch (Exception e) {
  353. error(e);
  354. return error(-1, "服务器异常,请稍候再试!");
  355. }
  356. }
  357. /**
  358. * 返回接口处理结果
  359. *
  360. * @param code 结果码,成功为200
  361. * @param msg 结果提示信息
  362. * @return
  363. */
  364. public String write(int code, String msg, String key, Page<?> page, JSONArray array) {
  365. try {
  366. JSONObject json = new JSONObject();
  367. json.put("status", code);
  368. json.put("msg", msg);
  369. // 是否为第一页
  370. json.put("isFirst", page == null ? false : page.isFirst());
  371. // 是否为最后一页
  372. json.put("isLast", page == null ? true : page.isLast());
  373. // 总条数
  374. json.put("total", page == null ? 0 : page.getTotalElements());
  375. // 总页数
  376. json.put("totalPages", page == null ? 0 : page.getTotalPages());
  377. json.put(key, array);
  378. return json.toString();
  379. } catch (Exception e) {
  380. error(e);
  381. return error(-1, "服务器异常,请稍候再试!");
  382. }
  383. }
  384. /**
  385. * 返回接口处理结果
  386. *
  387. * @param code 结果码,成功为200
  388. * @param msg 结果提示信息
  389. * @param value 结果数据
  390. * @return
  391. */
  392. public String write(int code, String msg, String key, Map<?, ?> value) {
  393. try {
  394. Map<Object, Object> map = new HashMap<Object, Object>();
  395. ObjectMapper mapper = new ObjectMapper();
  396. map.put("status", code);
  397. map.put("msg", msg);
  398. map.put(key, value);
  399. return mapper.writeValueAsString(map);
  400. } catch (Exception e) {
  401. error(e);
  402. return error(-1, "服务器异常,请稍候再试!");
  403. }
  404. }
  405. /**
  406. * 返回接口处理结果
  407. *
  408. * @param code 结果码,成功为200
  409. * @param msg 结果提示信息
  410. * @param value 结果数据
  411. * @return
  412. */
  413. public String write(int code, String msg, String key, String value) {
  414. try {
  415. Map<Object, Object> map = new HashMap<Object, Object>();
  416. ObjectMapper mapper = new ObjectMapper();
  417. map.put("status", code);
  418. map.put("msg", msg);
  419. map.put(key, value);
  420. return mapper.writeValueAsString(map);
  421. } catch (Exception e) {
  422. error(e);
  423. return error(-1, "服务器异常,请稍候再试!");
  424. }
  425. }
  426. /**
  427. * 返回接口处理结果
  428. *
  429. * @param code 结果码,成功为200
  430. * @param msg 结果提示信息
  431. * @return
  432. */
  433. public String write(int code, String msg, String key, IdEntity entity) {
  434. try {
  435. Map<Object, Object> map = new HashMap<Object, Object>();
  436. ObjectMapper mapper = new ObjectMapper();
  437. map.put("status", code);
  438. map.put("msg", msg);
  439. map.put(key, entity);
  440. return mapper.writeValueAsString(map);
  441. } catch (Exception e) {
  442. error(e);
  443. return error(-1, "服务器异常,请稍候再试!");
  444. }
  445. }
  446. /**
  447. * 返回接口处理结果
  448. *
  449. * @param code 结果码,成功为200
  450. * @param msg 结果提示信息
  451. * @return
  452. */
  453. public String write(int code, String msg, boolean isFirst, boolean isLast, long total, int totalPages, String key, Object values) {
  454. try {
  455. JSONObject json = new JSONObject();
  456. json.put("status", code);
  457. json.put("msg", msg);
  458. // 是否为第一页
  459. json.put("isFirst", isFirst);
  460. // 是否为最后一页
  461. json.put("isLast", isLast);
  462. // 总条数
  463. json.put("total", total);
  464. // 总页数
  465. json.put("totalPages", totalPages);
  466. json.put(key, values);
  467. return json.toString();
  468. } catch (Exception e) {
  469. logger.error("BaseController:", e.getMessage());
  470. return error(-1, "服务器异常,请稍候再试!");
  471. }
  472. }
  473. public String trimEnd(String param, String trimChars) {
  474. if (param.endsWith(trimChars)) {
  475. param = param.substring(0, param.length() - trimChars.length());
  476. }
  477. return param;
  478. }
  479. /**
  480. * 无效用户消息返回
  481. *
  482. * @param e
  483. * @param defaultCode
  484. * @param defaultMsg
  485. * @return
  486. */
  487. public String invalidUserException(Exception e, int defaultCode, String defaultMsg) {
  488. try {
  489. // if (e instanceof UndeclaredThrowableException) {
  490. // UndeclaredThrowableException ute = (UndeclaredThrowableException) e;
  491. // InvalidUserException iue = (InvalidUserException) ute.getUndeclaredThrowable();
  492. // if (iue != null) {
  493. // return error(iue.getCode(), iue.getMsg());
  494. // }
  495. // }
  496. return error(defaultCode, defaultMsg);
  497. } catch (Exception e2) {
  498. return null;
  499. }
  500. }
  501. public List<Map<String, Object>> copyBeans(Collection<? extends Object> beans, String... propertyNames) {
  502. List<Map<String, Object>> result = new ArrayList<>();
  503. for (Object bean : beans) {
  504. result.add(copyBeanProperties(bean, propertyNames));
  505. }
  506. return result;
  507. }
  508. /**
  509. * 复制特定属性。
  510. *
  511. * @param bean
  512. * @param propertyNames
  513. * @return
  514. */
  515. public Map<String, Object> copyBeanProperties(Object bean, String... propertyNames) {
  516. Map<String, Object> simplifiedBean = new HashMap<>();
  517. for (String propertyName : propertyNames) {
  518. Field field = ReflectionUtils.findField(bean.getClass(), propertyName);
  519. if (field != null) {
  520. field.setAccessible(true);
  521. Object value = ReflectionUtils.getField(field, bean);
  522. simplifiedBean.put(propertyName, value == null ? "" : value);
  523. } else {
  524. simplifiedBean.put(propertyName, "");
  525. }
  526. }
  527. return simplifiedBean;
  528. }
  529. }