GetNoticeController.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package com.ljsd.controller;
  2. import com.google.gson.Gson;
  3. import com.ljsd.pojo.NoticeInfo;
  4. import com.ljsd.pojo.ResMsg;
  5. import com.ljsd.util.BaseGlobal;
  6. import com.mongodb.DBObject;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.io.IOException;
  12. import java.io.PrintWriter;
  13. import java.util.*;
  14. /**
  15. * 常驻 中 高优先级 同等优先级按最新发布的
  16. */
  17. public class GetNoticeController extends HttpServlet {
  18. private static Gson gson = new Gson();
  19. private final static String _NOTICE_INFO = "notice_info";
  20. @Override
  21. protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
  22. req.setCharacterEncoding("UTF-8");
  23. response.setCharacterEncoding("UTF-8");
  24. response.setContentType("application/json; charset=utf-8");
  25. ResMsg resMsg = new ResMsg();
  26. resMsg.setCode(1);
  27. try (PrintWriter out = response.getWriter();) {
  28. Comparator<NoticeInfo> comparator = (o1, o2) -> {
  29. if (o1.getStartTime() < o2.getStartTime()) {
  30. return -1;
  31. } else if (o1.getStartTime() == o2.getStartTime()) {
  32. return 0;
  33. } else {
  34. return 1;
  35. }
  36. };
  37. TreeSet<NoticeInfo> highLevelList = new TreeSet(comparator);
  38. TreeSet<NoticeInfo> mediumLevelList = new TreeSet(comparator);
  39. TreeSet<NoticeInfo> normalList = new TreeSet(comparator);
  40. long localtime = System.currentTimeMillis();
  41. NoticeInfo res = new NoticeInfo();
  42. res.setTitle(new String("公告".getBytes("gbk"), "utf-8"));
  43. res.setContent(new String("暂无公告...".getBytes("gbk"), "utf-8"));
  44. List<DBObject> allDBObject = BaseGlobal.getInstance().mongoDBPool.findAll(_NOTICE_INFO);
  45. for (DBObject db : allDBObject) {
  46. NoticeInfo noticeInfo = dbToNoticeInfo(db);
  47. if (noticeInfo == null) {
  48. break;
  49. }
  50. //0:常驻;1:优先级中;2:优先级高
  51. switch(noticeInfo.getLeve()){
  52. case 0 :
  53. normalList.add(noticeInfo);
  54. break;
  55. case 1 :
  56. mediumLevelList.add(noticeInfo);
  57. break;
  58. case 2 :
  59. highLevelList.add(noticeInfo);
  60. break;
  61. }
  62. }
  63. if(highLevelList.size() > 0){
  64. res = highLevelList.last();
  65. } else if(mediumLevelList.size() > 0){
  66. res = mediumLevelList.last();
  67. } else if (normalList.size() > 0) {
  68. res = normalList.last();
  69. }
  70. Map<String, String> parms = new HashMap<>();
  71. parms.put("title", res.getTitle());
  72. parms.put("content", res.getContent());
  73. resMsg.setParms(parms);
  74. out.print(gson.toJson(resMsg));
  75. } catch (Exception e) {
  76. e.printStackTrace();
  77. }
  78. }
  79. //转成NoticeInfo类型
  80. public NoticeInfo dbToNoticeInfo(DBObject db) {
  81. NoticeInfo noticeInfo = new NoticeInfo();
  82. if(db == null){
  83. return null;
  84. }
  85. noticeInfo.setTitle(db.get("title").toString());
  86. noticeInfo.setContent(db.get("content").toString());
  87. noticeInfo.setLeve(Integer.parseInt(db.get("grade").toString()));
  88. noticeInfo.setStartTime(Long.parseLong(db.get("publish_time").toString()));
  89. return noticeInfo;
  90. }
  91. }