BaseController.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804
  1. package cn.stylefeng.guns.zjxlUtil;
  2. import org.json.JSONArray;
  3. import org.json.JSONObject;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import io.swagger.annotations.ApiResponse;
  6. import io.swagger.annotations.ApiResponses;
  7. import org.apache.commons.lang3.StringUtils;
  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.text.NumberFormat;
  16. import java.text.SimpleDateFormat;
  17. import java.util.*;
  18. import java.util.regex.Matcher;
  19. import java.util.regex.Pattern;
  20. /***
  21. * @ClassName: BaseController
  22. * @Description:
  23. * @Auther: shi kejing
  24. * @Date: 2020/11/2 10:27
  25. */
  26. @ApiResponses(value = {
  27. @ApiResponse(code = 200, message = "返回的json里的status是200,成功"),
  28. @ApiResponse(code = 403, message = "返回的json里的status是403,该操作没有权限"),
  29. @ApiResponse(code = 997, message = "返回的json里的status是997,重新登陆"),
  30. @ApiResponse(code = 998, message = "返回的json里的status是998,登录超时,请重新登录"),
  31. @ApiResponse(code = 999, message = "返回的json里的status是999,帐号在别处登录,请重新登录")
  32. })
  33. public class BaseController {
  34. private static Logger logger = LoggerFactory.getLogger("error_logger");
  35. @Autowired
  36. protected HttpServletRequest request;
  37. /**
  38. * 獲取髮送請求用戶的uid
  39. * @return
  40. */
  41. public String getUID() {
  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("uid");
  49. // return "xh1D2017031502222";// wjw00000001000e6badcfa163e424589/wjw00000001000e6badcfa163e424525
  50. } catch (Exception e) {
  51. return null;
  52. }
  53. }
  54. /**
  55. * 获取被代理人的code
  56. * @return
  57. */
  58. public String getRepresentedUID() {
  59. try {
  60. String userAgent = request.getHeader("userAgent");
  61. if (StringUtils.isEmpty(userAgent)) {
  62. userAgent = request.getHeader("User-Agent");
  63. }
  64. JSONObject json = new JSONObject(userAgent);
  65. return json.getString("represented");
  66. } catch (Exception e) {
  67. return null;
  68. }
  69. }
  70. /**
  71. * 获取平台端
  72. * @return
  73. */
  74. public Integer getPlatform() {
  75. try {
  76. String userAgent = request.getHeader("userAgent");
  77. if (StringUtils.isEmpty(userAgent)) {
  78. userAgent = request.getHeader("User-Agent");
  79. }
  80. JSONObject json = new JSONObject(userAgent);
  81. return json.getInt("platform");
  82. } catch (Exception e) {
  83. return null;
  84. }
  85. }
  86. /**
  87. * 获取被代理人code,若没有则返回当前登录者
  88. * @return
  89. */
  90. public String getRepUID(){
  91. try {
  92. String userAgent = request.getHeader("userAgent");
  93. if (StringUtils.isEmpty(userAgent)) {
  94. userAgent = request.getHeader("User-Agent");
  95. }
  96. JSONObject json = new JSONObject(userAgent);
  97. if(json.isNull("represented")){
  98. return json.getString("uid");
  99. }
  100. return json.getString("represented");
  101. } catch (Exception e) {
  102. return null;
  103. }
  104. }
  105. /**
  106. * 獲取髮送請求用戶的uid
  107. *
  108. * @return
  109. */
  110. public String getLastUid() {
  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. String id = json.getString("lastUid");
  118. if(StringUtils.isNoneBlank(id)){
  119. return id;
  120. }else{
  121. return json.getString("uid");
  122. }
  123. } catch (Exception e) {
  124. return null;
  125. }
  126. }
  127. public String getAppVersion() {
  128. try {
  129. String userAgent = request.getHeader("userAgent");
  130. if (StringUtils.isEmpty(userAgent)) {
  131. userAgent = request.getHeader("User-Agent");
  132. }
  133. JSONObject json = new JSONObject(userAgent);
  134. return json.getString("appVersion");
  135. } catch (Exception e) {
  136. return null;
  137. }
  138. }
  139. public String getOpenid() {
  140. try {
  141. String userAgent = request.getHeader("userAgent");
  142. if (StringUtils.isEmpty(userAgent)) {
  143. userAgent = request.getHeader("User-Agent");
  144. }
  145. JSONObject json = new JSONObject(userAgent);
  146. return json.getString("openid");
  147. } catch (Exception e) {
  148. return null;
  149. }
  150. }
  151. /**
  152. * 获取用户ID
  153. *
  154. * @return
  155. */
  156. public long getId() {
  157. try {
  158. String userAgent = request.getHeader("userAgent");
  159. if (StringUtils.isEmpty(userAgent)) {
  160. userAgent = request.getHeader("User-Agent");
  161. }
  162. JSONObject json = new JSONObject(userAgent);
  163. return json.getLong("id");
  164. } catch (Exception e) {
  165. return 0;
  166. }
  167. }
  168. public String getIMEI() {
  169. try {
  170. String userAgent = request.getHeader("userAgent");
  171. if (StringUtils.isEmpty(userAgent)) {
  172. userAgent = request.getHeader("User-Agent");
  173. }
  174. JSONObject json = new JSONObject(userAgent);
  175. return json.getString("imei");
  176. } catch (Exception e) {
  177. return null;
  178. }
  179. }
  180. public String getToken() {
  181. try {
  182. String userAgent = request.getHeader("userAgent");
  183. if (StringUtils.isEmpty(userAgent)) {
  184. userAgent = request.getHeader("User-Agent");
  185. }
  186. JSONObject json = new JSONObject(userAgent);
  187. return json.getString("token");
  188. } catch (Exception e) {
  189. return null;
  190. }
  191. }
  192. // /**
  193. // * 获取当前用户的角色code
  194. // * @return
  195. // */
  196. // public String getCurrentRoleCode(){
  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. // String currentUserRole = json.getJSONObject("currentUserRole").getString("code");
  204. // if(StringUtils.isNotEmpty(currentUserRole)){
  205. //
  206. // Hospital hospital = hospitalDao.findByCode(currentUserRole);
  207. // if(hospital!=null&&hospital.getLevel()==3){
  208. // return hospital.getTown();
  209. // }
  210. // }
  211. // return currentUserRole;
  212. // } catch (Exception e) {
  213. // return null;
  214. // }
  215. // }
  216. /**
  217. * 获取当前用户的角色级别
  218. * @return
  219. */
  220. public String getCurrentRoleLevel(){
  221. try {
  222. String userAgent = request.getHeader("userAgent");
  223. if (StringUtils.isEmpty(userAgent)) {
  224. userAgent = request.getHeader("User-Agent");
  225. }
  226. JSONObject json = new JSONObject(userAgent);
  227. return json.getJSONObject("currentUserRole").get("level")+"";
  228. } catch (Exception e) {
  229. return null;
  230. }
  231. }
  232. /**
  233. * 获取当前用户的角色是否是管理员
  234. * @return
  235. */
  236. public String getCurrentRoleIsManange(){
  237. try {
  238. String userAgent = request.getHeader("userAgent");
  239. if (StringUtils.isEmpty(userAgent)) {
  240. userAgent = request.getHeader("User-Agent");
  241. }
  242. JSONObject json = new JSONObject(userAgent);
  243. return json.getJSONObject("currentUserRole").getString("isManage");
  244. } catch (Exception e) {
  245. return null;
  246. }
  247. }
  248. public void error(Exception e) {
  249. logger.error(DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")+":"+getClass().getName() + ":", e.getMessage());
  250. e.printStackTrace();
  251. }
  252. public void warn(Exception e) {
  253. logger.warn(getClass().getName() + ":", e.getMessage());
  254. e.printStackTrace();
  255. }
  256. public void infoMessage(String message) {
  257. logger.info(message);
  258. }
  259. /**
  260. * 返回接口处理结果
  261. *
  262. * @param code 结果码,成功为200
  263. * @param msg 结果提示信息
  264. * @return
  265. */
  266. public String error(int code, String msg) {
  267. try {
  268. Map<Object, Object> map = new HashMap<Object, Object>();
  269. ObjectMapper mapper = new ObjectMapper();
  270. map.put("status", code);
  271. map.put("msg", msg);
  272. return mapper.writeValueAsString(map);
  273. } catch (Exception e) {
  274. error(e);
  275. return null;
  276. }
  277. }
  278. /**
  279. * 接口处理成功
  280. *
  281. * @param msg
  282. * @return
  283. */
  284. public String success(String msg) {
  285. try {
  286. Map<Object, Object> map = new HashMap<Object, Object>();
  287. ObjectMapper mapper = new ObjectMapper();
  288. map.put("status", 200);
  289. map.put("msg", msg);
  290. return mapper.writeValueAsString(map);
  291. } catch (Exception e) {
  292. error(e);
  293. return null;
  294. }
  295. }
  296. public String write(int code, String msg) {
  297. try {
  298. Map<Object, Object> map = new HashMap<Object, Object>();
  299. ObjectMapper mapper = new ObjectMapper();
  300. map.put("status", code);
  301. map.put("msg", msg);
  302. return mapper.writeValueAsString(map);
  303. } catch (Exception e) {
  304. error(e);
  305. return null;
  306. }
  307. }
  308. /**
  309. * 返回接口处理结果
  310. *
  311. * @param code 结果码,成功为200
  312. * @param msg 结果提示信息
  313. * @return
  314. */
  315. public String write(int code, String msg, String key, List<?> list) {
  316. try {
  317. Map<Object, Object> map = new HashMap<Object, Object>();
  318. ObjectMapper mapper = new ObjectMapper();
  319. mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  320. map.put("status", code);
  321. map.put("msg", msg);
  322. map.put(key, list);
  323. String s = mapper.writeValueAsString(map);
  324. return s;
  325. } catch (Exception e) {
  326. error(e);
  327. return error(-1, "服务器异常,请稍候再试!");
  328. }
  329. }
  330. /**
  331. * 返回接口处理结果
  332. *
  333. * @param code 结果码,成功为200
  334. * @param msg 结果提示信息
  335. * @param value 结果数据
  336. * @return
  337. */
  338. public String write(int code, String msg, String key, JSONObject value) {
  339. try {
  340. JSONObject json = new JSONObject();
  341. json.put("status", code);
  342. json.put("msg", msg);
  343. json.put(key, value);
  344. return json.toString();
  345. } catch (Exception e) {
  346. error(e);
  347. return error(-1, "服务器异常,请稍候再试!");
  348. }
  349. }
  350. /**
  351. * 返回接口处理结果
  352. *
  353. * @param code 结果码,成功为200
  354. * @param msg 结果提示信息
  355. * @param value 结果数据
  356. * @return
  357. */
  358. public String write(int code, String msg, String key, JSONArray value,String key2, JSONObject value2) {
  359. try {
  360. JSONObject json = new JSONObject();
  361. json.put("status", code);
  362. json.put("msg", msg);
  363. json.put(key, value);
  364. json.put(key2, value2);
  365. return json.toString();
  366. } catch (Exception e) {
  367. error(e);
  368. return error(-1, "服务器异常,请稍候再试!");
  369. }
  370. }
  371. /**
  372. * 返回接口处理结果
  373. *
  374. * @param code 结果码,成功为200
  375. * @param msg 结果提示信息
  376. * @param value 结果数据
  377. * @return
  378. */
  379. public String write(int code, String msg, String key, JSONArray value) {
  380. try {
  381. JSONObject json = new JSONObject();
  382. json.put("status", code);
  383. json.put("msg", msg);
  384. json.put(key, value);
  385. return json.toString();
  386. } catch (Exception e) {
  387. error(e);
  388. return error(-1, "服务器异常,请稍候再试!");
  389. }
  390. }
  391. /**
  392. * 返回接口处理结果
  393. *
  394. * @param code 结果码,成功为200
  395. * @param msg 结果提示信息
  396. * @param total 总数
  397. * @param value 结果数据
  398. * @return
  399. */
  400. public String write(int code, String msg, int total, String key, JSONArray value) {
  401. try {
  402. JSONObject json = new JSONObject();
  403. json.put("status", code);
  404. json.put("msg", msg);
  405. json.put("total", total);
  406. json.put(key, value);
  407. return json.toString();
  408. } catch (Exception e) {
  409. error(e);
  410. return error(-1, "服务器异常,请稍候再试!");
  411. }
  412. }
  413. /**
  414. * 返回接口处理结果
  415. *
  416. * @param code 结果码,成功为200
  417. * @param msg 结果提示信息
  418. * @return
  419. */
  420. public String write(int code, String msg, int total, String key, List<?> list) {
  421. try {
  422. Map<Object, Object> map = new HashMap<Object, Object>();
  423. ObjectMapper mapper = new ObjectMapper();
  424. mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
  425. map.put("status", code);
  426. map.put("msg", msg);
  427. map.put("total", total);
  428. map.put(key, list);
  429. String s = mapper.writeValueAsString(map);
  430. return s;
  431. } catch (Exception e) {
  432. error(e);
  433. return error(-1, "服务器异常,请稍候再试!");
  434. }
  435. }
  436. /**
  437. * 返回接口处理结果
  438. *
  439. * @param code 结果码,成功为200
  440. * @param msg 结果提示信息
  441. * @param value 结果数据
  442. * @return
  443. */
  444. public String write(int code, String msg, String key, Object value) {
  445. try {
  446. Map<Object, Object> map = new HashMap<Object, Object>();
  447. ObjectMapper mapper = new ObjectMapper();
  448. map.put("status", code);
  449. map.put("msg", msg);
  450. map.put(key, value);
  451. return mapper.writeValueAsString(map);
  452. } catch (Exception e) {
  453. error(e);
  454. return error(-1, "服务器异常,请稍候再试!");
  455. }
  456. }
  457. /**
  458. * 返回接口处理结果
  459. *
  460. * @param code 结果码,成功为200
  461. * @param msg 结果提示信息
  462. * @return
  463. */
  464. public String write(int code, String msg, String key, Page<?> list) {
  465. try {
  466. Map<Object, Object> map = new HashMap<Object, Object>();
  467. ObjectMapper mapper = new ObjectMapper();
  468. map.put("status", code);
  469. map.put("msg", msg);
  470. // 是否为第一页
  471. map.put("isFirst", list.isFirst());
  472. // 是否为最后一页
  473. map.put("isLast", list.isLast());
  474. // 总条数
  475. map.put("total", list.getTotalElements());
  476. // 总页数
  477. map.put("totalPages", list.getTotalPages());
  478. map.put(key, list.getContent());
  479. return mapper.writeValueAsString(map);
  480. } catch (Exception e) {
  481. error(e);
  482. return error(-1, "服务器异常,请稍候再试!");
  483. }
  484. }
  485. /**
  486. * 返回接口处理结果
  487. *
  488. * @param code 结果码,成功为200
  489. * @param msg 结果提示信息
  490. * @return
  491. */
  492. public String write(int code, String msg, String key, Page<?> page, JSONArray array) {
  493. try {
  494. JSONObject json = new JSONObject();
  495. json.put("status", code);
  496. json.put("msg", msg);
  497. // 是否为第一页
  498. json.put("isFirst", page == null ? false : page.isFirst());
  499. // 是否为最后一页
  500. json.put("isLast", page == null ? true : page.isLast());
  501. // 总条数
  502. json.put("total", page == null ? 0 : page.getTotalElements());
  503. // 总页数
  504. json.put("totalPages", page == null ? 0 : page.getTotalPages());
  505. json.put(key, array);
  506. return json.toString();
  507. } catch (Exception e) {
  508. error(e);
  509. return error(-1, "服务器异常,请稍候再试!");
  510. }
  511. }
  512. /**
  513. * 返回接口处理结果
  514. *
  515. * @param code 结果码,成功为200
  516. * @param msg 结果提示信息
  517. * @param value 结果数据
  518. * @return
  519. */
  520. public String write(int code, String msg, String key, Map<?, ?> value) {
  521. try {
  522. Map<Object, Object> map = new HashMap<Object, Object>();
  523. ObjectMapper mapper = new ObjectMapper();
  524. map.put("status", code);
  525. map.put("msg", msg);
  526. map.put(key, value);
  527. return mapper.writeValueAsString(map);
  528. } catch (Exception e) {
  529. error(e);
  530. return error(-1, "服务器异常,请稍候再试!");
  531. }
  532. }
  533. /**
  534. * 返回接口处理结果
  535. *
  536. * @param code 结果码,成功为200
  537. * @param msg 结果提示信息
  538. * @param value 结果数据
  539. * @return
  540. */
  541. public String write(int code, String msg, String key, String value) {
  542. try {
  543. Map<Object, Object> map = new HashMap<Object, Object>();
  544. ObjectMapper mapper = new ObjectMapper();
  545. map.put("status", code);
  546. map.put("msg", msg);
  547. map.put(key, value);
  548. return mapper.writeValueAsString(map);
  549. } catch (Exception e) {
  550. error(e);
  551. return error(-1, "服务器异常,请稍候再试!");
  552. }
  553. }
  554. /**
  555. * 返回接口处理结果
  556. *
  557. * @param code 结果码,成功为200
  558. * @param msg 结果提示信息
  559. * @return
  560. */
  561. public String write(int code, String msg, String key, IdEntity entity) {
  562. try {
  563. Map<Object, Object> map = new HashMap<Object, Object>();
  564. ObjectMapper mapper = new ObjectMapper();
  565. map.put("status", code);
  566. map.put("msg", msg);
  567. map.put(key, entity);
  568. return mapper.writeValueAsString(map);
  569. } catch (Exception e) {
  570. error(e);
  571. return error(-1, "服务器异常,请稍候再试!");
  572. }
  573. }
  574. /**
  575. * 返回接口处理结果
  576. *
  577. * @param code 结果码,成功为200
  578. * @param msg 结果提示信息
  579. * @return
  580. */
  581. public String write(int code, String msg, boolean isFirst, boolean isLast, long total, int totalPages, String key, Object values) {
  582. try {
  583. JSONObject json = new JSONObject();
  584. json.put("status", code);
  585. json.put("msg", msg);
  586. // 是否为第一页
  587. json.put("isFirst", isFirst);
  588. // 是否为最后一页
  589. json.put("isLast", isLast);
  590. // 总条数
  591. json.put("total", total);
  592. // 总页数
  593. json.put("totalPages", totalPages);
  594. json.put(key, values);
  595. return json.toString();
  596. } catch (Exception e) {
  597. logger.error("BaseController:", e.getMessage());
  598. return error(-1, "服务器异常,请稍候再试!");
  599. }
  600. }
  601. public String trimEnd(String param, String trimChars) {
  602. if (param.endsWith(trimChars)) {
  603. param = param.substring(0, param.length() - trimChars.length());
  604. }
  605. return param;
  606. }
  607. /**
  608. * 无效用户消息返回
  609. *
  610. * @param e
  611. * @param defaultCode
  612. * @param defaultMsg
  613. * @return
  614. */
  615. public String invalidUserException(Exception e, int defaultCode, String defaultMsg) {
  616. try {
  617. // if (e instanceof UndeclaredThrowableException) {
  618. // UndeclaredThrowableException ute = (UndeclaredThrowableException) e;
  619. // InvalidUserException iue = (InvalidUserException) ute.getUndeclaredThrowable();
  620. // if (iue != null) {
  621. // return error(iue.getCode(), iue.getMsg());
  622. // }
  623. // }
  624. return error(defaultCode, defaultMsg);
  625. } catch (Exception e2) {
  626. return null;
  627. }
  628. }
  629. public List<Map<String, Object>> copyBeans(Collection<? extends Object> beans, String... propertyNames) {
  630. List<Map<String, Object>> result = new ArrayList<>();
  631. for (Object bean : beans) {
  632. result.add(copyBeanProperties(bean, propertyNames));
  633. }
  634. return result;
  635. }
  636. /**
  637. * 复制特定属性。
  638. *
  639. * @param bean
  640. * @param propertyNames
  641. * @return
  642. */
  643. public Map<String, Object> copyBeanProperties(Object bean, String... propertyNames) {
  644. Map<String, Object> simplifiedBean = new HashMap<>();
  645. for (String propertyName : propertyNames) {
  646. Field field = ReflectionUtils.findField(bean.getClass(), propertyName);
  647. if (field != null) {
  648. field.setAccessible(true);
  649. Object value = ReflectionUtils.getField(field, bean);
  650. simplifiedBean.put(propertyName, value == null ? "" : value);
  651. } else {
  652. simplifiedBean.put(propertyName, "");
  653. }
  654. }
  655. return simplifiedBean;
  656. }
  657. /**
  658. * 数据保留两位小数,**.0 去掉小数点
  659. * @param obj
  660. * @return
  661. */
  662. public String getNumberFormat(Object obj){
  663. if(obj != null){
  664. Double d = Double.valueOf(obj.toString());
  665. NumberFormat df = NumberFormat.getInstance();
  666. df.setGroupingUsed(false);
  667. df.setMaximumFractionDigits(2);
  668. return df.format(d);
  669. }else {
  670. return "";
  671. }
  672. }
  673. public String write(int code, String errorMsg, int page, int rows, long total, List<?> list) {
  674. try {
  675. Map<Object, Object> map = new HashMap<Object, Object>();
  676. ObjectMapper mapper = new ObjectMapper();
  677. map.put("successFlg", code == 0);
  678. map.put("errorMsg", errorMsg);
  679. // 是否为第一页
  680. map.put("errorCode", code);
  681. // 是否为最后一页
  682. map.put("currPage", page);
  683. // 分页大小
  684. map.put("pageSize", rows);
  685. // 总条数
  686. map.put("totalCount", total);
  687. // 总页数
  688. map.put("totalPage", Math.ceil((double)total/(rows)));
  689. // 结果集
  690. map.put("detailModelList", list);
  691. return mapper.writeValueAsString(map);
  692. } catch (Exception e) {
  693. error(e);
  694. return error(-1, "服务器异常,请稍候再试!");
  695. }
  696. }
  697. /**
  698. * 判断是否是观察者模式
  699. * @return
  700. */
  701. public boolean getObserverStatus () {
  702. String userAgent = request.getHeader("userAgent");
  703. if (StringUtils.isEmpty(userAgent)) {
  704. userAgent = request.getHeader("User-Agent");
  705. }
  706. logger.debug("userAgent:" + userAgent);
  707. JSONObject json = new JSONObject(userAgent);
  708. String observer = json.has("observer") ? json.getString("observer") : "";
  709. //如果是观察者直接返回true
  710. if (!org.springframework.util.StringUtils.isEmpty(observer) && observer.equals("1")) {
  711. return true;
  712. }else{
  713. return false;
  714. }
  715. }
  716. //获取ip地址
  717. public String getIpAddr() {
  718. String ip = request.getHeader("x-forwarded-for");
  719. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  720. ip = request.getHeader("Proxy-Client-IP");
  721. }
  722. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  723. ip = request.getHeader("WL-Proxy-Client-IP");
  724. }
  725. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  726. ip = request.getRemoteAddr();
  727. }
  728. if ("0:0:0:0:0:0:0:1".equals(ip)) {
  729. ip = "127.0.0.1";
  730. }
  731. if (ip.split(",").length > 1) {
  732. ip = ip.split(",")[0];
  733. }
  734. return ip;
  735. }
  736. //获取手机型号
  737. public String getPhoneType(){
  738. String userAgent = request.getHeader("User-Agent");
  739. Pattern pattern = Pattern.compile(";\\s?(\\S*?\\s?\\S*?)\\s?(Build)?/");
  740. Matcher matcher = pattern.matcher(userAgent);
  741. String model = null;
  742. if (matcher.find()) {
  743. model = matcher.group(1).trim();
  744. }else{
  745. model = "未知型号";
  746. }
  747. return model;
  748. }
  749. }