BaseController.java 16 KB

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