Message.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. namespace app\admin\controller\system;
  3. use app\admin\model\Massager;
  4. use app\admin\model\User;
  5. use app\common\controller\Backend;
  6. use think\Exception;
  7. use think\Validate;
  8. /**
  9. * 系统消息
  10. *
  11. * @icon fa fa-circle-o
  12. */
  13. class Message extends Backend
  14. {
  15. /**
  16. * Message模型对象
  17. * @var \app\admin\model\system\Message
  18. */
  19. protected $model = null;
  20. protected $noNeedRight = ["send_message"];
  21. public function _initialize()
  22. {
  23. parent::_initialize();
  24. $this->model = new \app\admin\model\system\Message;
  25. $this->view->assign("identityTypeList", $this->model->getIdentityTypeList());
  26. }
  27. /**
  28. * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
  29. * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
  30. * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改
  31. */
  32. /**
  33. * 查看
  34. */
  35. public function index()
  36. {
  37. //当前是否为关联查询
  38. $this->relationSearch = true;
  39. //设置过滤方法
  40. $this->request->filter(['strip_tags', 'trim']);
  41. if ($this->request->isAjax()) {
  42. //如果发送的来源是Selectpage,则转发到Selectpage
  43. if ($this->request->request('keyField')) {
  44. return $this->selectpage();
  45. }
  46. list($where, $sort, $order, $offset, $limit) = $this->buildparams();
  47. $list = $this->model
  48. ->with(['user', 'massager'])
  49. ->where($where)
  50. ->order($sort, $order)
  51. ->paginate($limit);
  52. foreach ($list as $row) {
  53. $row->visible(['id', 'identity_type', 'title', 'content', 'is_read', 'updatetime']);
  54. $row->visible(['user']);
  55. $row->getRelation('user')->visible(['nickname']);
  56. $row->visible(['massager']);
  57. $row->getRelation('massager')->visible(['name']);
  58. }
  59. $result = array("total" => $list->total(), "rows" => $list->items());
  60. return json($result);
  61. }
  62. return $this->view->fetch();
  63. }
  64. public function send_message()
  65. {
  66. if ($this->request->post()) {
  67. $params = $this->request->post('row/a');
  68. $validate = (new Validate([
  69. "identity_type" => "require",
  70. "group_type" => "require",
  71. "user_group" => "require",
  72. "message" => "require",
  73. ]));
  74. $valid = $validate->check($params);
  75. if (!$valid)
  76. $this->error($validate->getError());
  77. $messages = [];
  78. $identity_type = $params["identity_type"];
  79. if ($identity_type == "user") {
  80. if ($params["group_type"] === "ALL") {
  81. $users = (new User())->where("status", "normal")->field("id")->select();
  82. } else {
  83. if ($params["user_ids"]) {
  84. $users = (new User())->where("id", "in", explode(",", $params["user_ids"]))->field("id")->select();
  85. } else {
  86. if ($params["user_group"] === "ALL") {
  87. $this->error("请指定用户");
  88. }
  89. $users = (new User())
  90. ->where("status", "normal")
  91. ->where("grouping", $params["user_group"])
  92. ->field("id")
  93. ->select();
  94. }
  95. }
  96. foreach ($users as $user) {
  97. array_push($messages, [
  98. "identity_type" => \E_IDENTITY_TYPE::User,
  99. "to_user_id" => $user["id"],
  100. "to_massager_id" => null,
  101. "title" => "系统消息",
  102. "content" => $params["message"],
  103. "is_read" => 0,
  104. "createtime" => time(),
  105. "updatetime" => time()
  106. ]);
  107. }
  108. } else {
  109. if ($params["group_type"] === "ALL") {
  110. $massagers = (new Massager())->where("status", "normal")->field("id")->select();
  111. } else {
  112. $massagers = (new Massager())->where("status", "normal")
  113. ->where("id", "in", explode(",", $params["massager_ids"]))
  114. ->field("id")
  115. ->select();
  116. }
  117. foreach ($massagers as $massager) {
  118. array_push($messages, [
  119. "identity_type" => \E_IDENTITY_TYPE::Massager,
  120. "to_user_id" => null,
  121. "to_massager_id" => $massager["id"],
  122. "title" => "系统消息",
  123. "content" => $params["message"],
  124. "is_read" => 0,
  125. "createtime" => time(),
  126. "updatetime" => time()
  127. ]);
  128. }
  129. }
  130. (new \app\admin\model\system\Message())->insertAll($messages);
  131. $this->success();
  132. }
  133. return $this->view->fetch();
  134. }
  135. }