BaseController.java 20 KB

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