BaseController.java 16 KB

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