AnnouncementController.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. declare(strict_types=1);
  3. namespace SixDec\Message\Controller\Admin;
  4. use think\Request;
  5. /**
  6. * 系统公告后台控制器
  7. */
  8. class AnnouncementController extends BaseController
  9. {
  10. /**
  11. * 默认入口方法(兼容资源路由)
  12. */
  13. public function index()
  14. {
  15. return $this->getList(request());
  16. }
  17. /**
  18. * 获取公告列表
  19. */
  20. public function getList(Request $request)
  21. {
  22. $page = $request->param('page/d', 1);
  23. $limit = $request->param('limit/d', 10);
  24. $title = $request->param('title', '');
  25. $status = $request->param('status', '');
  26. $startTime = $request->param('start_time', '');
  27. $endTime = $request->param('end_time', '');
  28. $params = [];
  29. if (!empty($title)) {
  30. $params['title'] = $title;
  31. }
  32. if ($status !== '') {
  33. $params['status'] = $status;
  34. }
  35. if (!empty($startTime)) {
  36. $params['start_time'] = $startTime;
  37. }
  38. if (!empty($endTime)) {
  39. $params['end_time'] = $endTime;
  40. }
  41. $result = $this->announcementModel->getList($params, $page, $limit);
  42. return $this->success('获取成功', $result);
  43. }
  44. /**
  45. * 获取公告详情
  46. */
  47. public function getDetail(Request $request)
  48. {
  49. $id = $request->param('id/d', 0);
  50. if ($id <= 0) {
  51. return $this->error('参数错误');
  52. }
  53. $detail = $this->announcementModel->getDetail($id);
  54. if (!$detail) {
  55. return $this->error('公告不存在');
  56. }
  57. return $this->success('获取成功', $detail);
  58. }
  59. /**
  60. * 添加公告
  61. */
  62. public function save(Request $request)
  63. {
  64. $title = $request->param('title', '');
  65. $content = $request->param('content', '');
  66. $type = $request->param('type/d', 1);
  67. $status = $request->param('status/d', 1);
  68. $startTime = $request->param('start_time', '');
  69. $endTime = $request->param('end_time', '');
  70. $sort = $request->param('sort/d', 100);
  71. if (empty($title)) {
  72. return $this->error('标题不能为空');
  73. }
  74. if (empty($content)) {
  75. return $this->error('内容不能为空');
  76. }
  77. $data = [
  78. 'title' => $title,
  79. 'content' => $content,
  80. 'type' => $type,
  81. 'status' => $status,
  82. 'sort' => $sort,
  83. ];
  84. if (!empty($startTime)) {
  85. $data['start_time'] = strtotime($startTime);
  86. }
  87. if (!empty($endTime)) {
  88. $data['end_time'] = strtotime($endTime);
  89. }
  90. $result = $this->announcementModel->add($data);
  91. if (!$result) {
  92. return $this->error('添加失败');
  93. }
  94. return $this->success('添加成功', ['id' => $result]);
  95. }
  96. /**
  97. * 更新公告
  98. */
  99. public function update(Request $request)
  100. {
  101. $id = $request->param('id/d', 0);
  102. if ($id <= 0) {
  103. return $this->error('参数错误');
  104. }
  105. $title = $request->param('title', '');
  106. $content = $request->param('content', '');
  107. $type = $request->param('type/d', null);
  108. $status = $request->param('status/d', null);
  109. $startTime = $request->param('start_time', '');
  110. $endTime = $request->param('end_time', '');
  111. $sort = $request->param('sort/d', null);
  112. $data = [];
  113. if (!empty($title)) {
  114. $data['title'] = $title;
  115. }
  116. if (!empty($content)) {
  117. $data['content'] = $content;
  118. }
  119. if ($type !== null) {
  120. $data['type'] = $type;
  121. }
  122. if ($status !== null) {
  123. $data['status'] = $status;
  124. }
  125. if ($sort !== null) {
  126. $data['sort'] = $sort;
  127. }
  128. if (!empty($startTime)) {
  129. $data['start_time'] = strtotime($startTime);
  130. }
  131. if (!empty($endTime)) {
  132. $data['end_time'] = strtotime($endTime);
  133. }
  134. if (empty($data)) {
  135. return $this->error('没有需要更新的数据');
  136. }
  137. $result = $this->announcementModel->update($id, $data);
  138. if (!$result) {
  139. return $this->error('更新失败');
  140. }
  141. return $this->success('更新成功');
  142. }
  143. /**
  144. * 删除公告
  145. */
  146. public function delete(Request $request)
  147. {
  148. $id = $request->param('id/d', 0);
  149. if ($id <= 0) {
  150. return $this->error('参数错误');
  151. }
  152. $result = $this->announcementModel->delete($id);
  153. if (!$result) {
  154. return $this->error('删除失败');
  155. }
  156. return $this->success('删除成功');
  157. }
  158. /**
  159. * 批量删除公告
  160. */
  161. public function batchDelete(Request $request)
  162. {
  163. $ids = $request->param('ids');
  164. if (empty($ids)) {
  165. return $this->error('参数错误');
  166. }
  167. if (!is_array($ids)) {
  168. $ids = explode(',', $ids);
  169. }
  170. $result = $this->announcementModel->batchDelete($ids);
  171. if (!$result) {
  172. return $this->error('删除失败');
  173. }
  174. return $this->success('删除成功');
  175. }
  176. /**
  177. * 更新公告状态
  178. */
  179. public function updateStatus(Request $request)
  180. {
  181. $id = $request->param('id/d', 0);
  182. $status = $request->param('status/d', 0);
  183. if ($id <= 0) {
  184. return $this->error('参数错误');
  185. }
  186. $result = $this->announcementModel->update($id, ['status' => $status]);
  187. if (!$result) {
  188. return $this->error('操作失败');
  189. }
  190. return $this->success('操作成功');
  191. }
  192. }