BaseController.java 17 KB

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