package com.ljsd.controller; import com.google.gson.Gson; import com.ljsd.pojo.NoticeInfo; import com.ljsd.pojo.ResMsg; import com.ljsd.util.BaseGlobal; import com.mongodb.DBObject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.*; /** * 常驻 中 高优先级 同等优先级按最新发布的 */ public class GetNoticeController extends HttpServlet { private static Gson gson = new Gson(); private final static String _NOTICE_INFO = "notice_info"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); ResMsg resMsg = new ResMsg(); resMsg.setCode(1); try (PrintWriter out = response.getWriter();) { Comparator comparator = (o1, o2) -> { if (o1.getStartTime() < o2.getStartTime()) { return -1; } else if (o1.getStartTime() == o2.getStartTime()) { return 0; } else { return 1; } }; TreeSet highLevelList = new TreeSet(comparator); TreeSet mediumLevelList = new TreeSet(comparator); TreeSet normalList = new TreeSet(comparator); long localtime = System.currentTimeMillis(); NoticeInfo res = new NoticeInfo(); res.setTitle(new String("公告".getBytes("gbk"), "utf-8")); res.setContent(new String("暂无公告...".getBytes("gbk"), "utf-8")); List allDBObject = BaseGlobal.getInstance().mongoDBPool.findAll(_NOTICE_INFO); for (DBObject db : allDBObject) { NoticeInfo noticeInfo = dbToNoticeInfo(db); if (noticeInfo == null) { break; } //0:常驻;1:优先级中;2:优先级高 switch(noticeInfo.getLeve()){ case 0 : normalList.add(noticeInfo); break; case 1 : mediumLevelList.add(noticeInfo); break; case 2 : highLevelList.add(noticeInfo); break; } } if(highLevelList.size() > 0){ res = highLevelList.last(); } else if(mediumLevelList.size() > 0){ res = mediumLevelList.last(); } else if (normalList.size() > 0) { res = normalList.last(); } Map parms = new HashMap<>(); parms.put("title", res.getTitle()); parms.put("content", res.getContent()); resMsg.setParms(parms); out.print(gson.toJson(resMsg)); } catch (Exception e) { e.printStackTrace(); } } //转成NoticeInfo类型 public NoticeInfo dbToNoticeInfo(DBObject db) { NoticeInfo noticeInfo = new NoticeInfo(); if(db == null){ return null; } noticeInfo.setTitle(db.get("title").toString()); noticeInfo.setContent(db.get("content").toString()); noticeInfo.setLeve(Integer.parseInt(db.get("grade").toString())); noticeInfo.setStartTime(Long.parseLong(db.get("publish_time").toString())); return noticeInfo; } }