BaseController.java 17 KB

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