AnnouncementAction.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /*
  2. * 版权所有 (C) 2015 知启蒙(ZHIQIM) 保留所有权利。[遇见知启蒙,邂逅框架梦]
  3. *
  4. * 知启蒙WEB容器(zhiqim_httpd)在LGPL3.0协议下开源:https://www.zhiqim.com/gitcan/zhiqim/zhiqim_httpd.htm
  5. *
  6. * This file is part of [zhiqim_httpd].
  7. *
  8. * [zhiqim_httpd] is free software: you can redistribute
  9. * it and/or modify it under the terms of the GNU Lesser General Public License
  10. * as published by the Free Software Foundation, either version 3 of the
  11. * License, or (at your option) any later version.
  12. *
  13. * [zhiqim_httpd] is distributed in the hope that it will
  14. * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU Lesser General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public License
  19. * along with [zhiqim_httpd].
  20. * If not, see <http://www.gnu.org/licenses/>.
  21. */
  22. package org.zhiqim.announcement.action;
  23. import java.util.List;
  24. import org.zhiqim.announcement.dbo.ZoaAnnouncement;
  25. import org.zhiqim.announcement.dbo.ZoaAnnouncementEx;
  26. import org.zhiqim.announcement.dbo.ZoaAnnouncementReader;
  27. import org.zhiqim.httpd.HttpRequest;
  28. import org.zhiqim.httpd.HttpSessionManager;
  29. import org.zhiqim.httpd.HttpSessionUser;
  30. import org.zhiqim.httpd.HttpWebsocketConnection;
  31. import org.zhiqim.httpd.context.extend.StdSwitchAction;
  32. import org.zhiqim.httpd.validate.ones.IsIntegerValue;
  33. import org.zhiqim.httpd.validate.ones.IsLen;
  34. import org.zhiqim.httpd.validate.ones.IsNotEmpty;
  35. import org.zhiqim.kernel.paging.PageResult;
  36. import org.zhiqim.kernel.util.Ids;
  37. import org.zhiqim.kernel.util.Sqls;
  38. import org.zhiqim.orm.ORM;
  39. import org.zhiqim.orm.dbo.Selector;
  40. import org.zhiqim.orm.dbo.Updater;
  41. /**
  42. * 公告管理,支持公告的增加、修改和删除权限
  43. *
  44. * @version v1.0.0 @author duanxiaohui 2017-11-13 新建与整理
  45. */
  46. public class AnnouncementAction extends StdSwitchAction
  47. {
  48. @Override
  49. protected void validateId(HttpRequest request)
  50. {
  51. request.addValidate(new IsNotEmpty("announcementId", "请选择一个选项"));
  52. }
  53. @Override
  54. protected void validateForm(HttpRequest request)
  55. {
  56. request.addValidate(new IsLen("announcementTitle", "公告标题不能为空,[1, 60]范围", 1, 60));
  57. request.addValidate(new IsIntegerValue("announcementType", "公告类型请选择一项", 1, 3));
  58. request.addValidate(new IsLen("announcementContent", "公告内容不能为空,[1, 1000]范围", 1, 1000));
  59. }
  60. protected void item(HttpRequest request) throws Exception
  61. {
  62. long announcementId = request.getParameterLong("announcementId");
  63. ZoaAnnouncement item = ORM.table().item(ZoaAnnouncement.class, announcementId);
  64. if (item == null)
  65. {
  66. request.returnHistory("该公告不存在或数据不完整!");
  67. return;
  68. }
  69. if (ORM.table().count(ZoaAnnouncementReader.class, announcementId, request.getSessionName()) == 0)
  70. {//未读的,更新为已读
  71. ZoaAnnouncementReader reader = new ZoaAnnouncementReader();
  72. reader.setAnnouncementId(announcementId);
  73. reader.setOperatorCode(request.getSessionName());
  74. ORM.table().insert(reader);
  75. }
  76. request.setAttribute("item", item);
  77. }
  78. @Override
  79. protected void list(HttpRequest request) throws Exception
  80. {
  81. int pageNo = request.getParameterInt("page", 1);
  82. int pageSize = request.getContextAttributeInt("fmr_page_size", 20);
  83. Selector selector = new Selector();
  84. selector.addJoin(ZoaAnnouncementReader.class, new Selector("operatorCode", request.getSessionName()));
  85. selector.addMaybeLike("announcementTitle", request.getParameter("announcementTitle"));
  86. selector.addMust("announcementStatus", 0);
  87. selector.addOrderbyDesc("announcementTime");
  88. PageResult<ZoaAnnouncementEx> result = ORM.view().page(ZoaAnnouncementEx.class, pageNo, pageSize, selector);
  89. result.addConditionMap(request.getParameterMap());
  90. request.setAttribute("result", result);
  91. }
  92. @Override
  93. protected void add(HttpRequest request) throws Exception
  94. {
  95. }
  96. @Override
  97. protected void insert(HttpRequest request) throws Exception
  98. {
  99. String announcementTitle = request.getParameter("announcementTitle");
  100. int announcementType = request.getParameterInt("announcementType");
  101. String announcementContent = request.getParameter("announcementContent");
  102. ZoaAnnouncement item = new ZoaAnnouncement();
  103. item.setAnnouncementId(Ids.longId());
  104. item.setAnnouncementTitle(announcementTitle);
  105. item.setAnnouncementType(announcementType);
  106. item.setAnnouncementStatus(0);
  107. item.setAnnouncementContent(announcementContent);
  108. item.setAnnouncementTime(Sqls.nowTimestamp());
  109. item.setAnnouncementPublisher(request.getSessionName());
  110. ORM.table().insert(item);
  111. //对所有连上来的WS进行消息推送
  112. HttpSessionManager manager = request.getContext().getSessionManager();
  113. List<HttpSessionUser> list = manager.getSessionUserList();
  114. for (HttpSessionUser sessionUser : list)
  115. {
  116. List<HttpWebsocketConnection> connList = request.getContext().getWebsocketManager().get("zoa_announcement", sessionUser.getSessionId());
  117. for (HttpWebsocketConnection conn : connList)
  118. {
  119. conn.send("zoa_announcement_new");
  120. }
  121. }
  122. }
  123. @Override
  124. protected void delete(HttpRequest request) throws Exception
  125. {//实际为修改为已删除状态
  126. Updater updater = new Updater();
  127. updater.addMust("announcementId", request.getParameterLong("announcementId"));
  128. updater.addField("announcementStatus", 1);
  129. ORM.table().update(ZoaAnnouncement.class, updater);
  130. }
  131. /****************************************************************************************/
  132. //不支持修改
  133. /****************************************************************************************/
  134. @Override
  135. protected void modify(HttpRequest request) throws Exception
  136. {
  137. }
  138. @Override
  139. protected void update(HttpRequest request) throws Exception
  140. {
  141. }
  142. }