MessageController.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Member;
  4. use App\Models\Message;
  5. use App\Models\User;
  6. use App\Traits\PushMessage;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. class MessageController extends Controller
  10. {
  11. use PushMessage;
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index()
  18. {
  19. return view('admin.message.index');
  20. }
  21. /**
  22. * @param Request $request
  23. * @return \Illuminate\Http\JsonResponse
  24. */
  25. public function data(Request $request)
  26. {
  27. $model = new Message();
  28. $res = $request->only(['start_time','end_time','title']);
  29. if (!empty($res)){
  30. if ($res['title']){
  31. $model = $model->where('title','like','%'.$res['title'].'%');
  32. }
  33. if ($res['start_time'] && !$res['end_time']){
  34. $model = $model->where('created_at','>=',$res['start_time']);
  35. }elseif (!$res['start_time'] && $res['end_time']){
  36. $model = $model->where('created_at','<=',$res['end_time']);
  37. }elseif ($res['start_time'] && $res['end_time']){
  38. $model = $model->whereBetween('created_at',[$res['start_time'],$res['end_time']]);
  39. }
  40. }
  41. $res = $model->orderBy('read','asc')->orderBy('id','desc')->paginate($request->get('limit',30))->toArray();
  42. $users = User::pluck('name','uuid');
  43. $member = Member::pluck('name','uuid');
  44. foreach ($res['data'] as &$d) {
  45. switch ($d['flag']){
  46. case 12:
  47. $send_name = '系统';
  48. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  49. break;
  50. case 13:
  51. $send_name = '系统';
  52. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  53. break;
  54. case 22:
  55. $send_name = $users[$d['send_uuid']]??'用户不存在';
  56. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  57. break;
  58. case 23:
  59. $send_name = $users[$d['send_uuid']]??'用户不存在';
  60. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  61. break;
  62. case 32:
  63. $send_name = $member[$d['send_uuid']]??'用户不存在';
  64. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  65. break;
  66. case 33:
  67. $send_name = $member[$d['send_uuid']]??'用户不存在';
  68. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  69. break;
  70. default:
  71. $send_name = '用户不存在';
  72. $accept_name = '用户不存在';
  73. break;
  74. };
  75. $d['send_name'] = $send_name;
  76. $d['accept_name'] = $accept_name;
  77. }
  78. $data = [
  79. 'code' => 0,
  80. 'msg' => '正在请求中...',
  81. 'count' => $res['total'],
  82. 'data' => $res['data']
  83. ];
  84. return response()->json($data);
  85. }
  86. /**
  87. * @param Request $request
  88. * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
  89. */
  90. public function getUser(Request $request)
  91. {
  92. if ($request->ajax()){
  93. //默认后台用户
  94. $model = new User();
  95. if ($request->get('user_type')==3){
  96. $model = new Member();
  97. }
  98. $keywords = $request->get('keywords');
  99. if ($keywords){
  100. $model = $model->where('name','like','%'.$keywords.'%')->orWhere('phone','like','%'.$keywords.'%');
  101. }
  102. $res = $model->orderBy('id','desc')->paginate($request->get('limit',30))->toArray();
  103. $data = [
  104. 'code' => 0,
  105. 'msg' => '正在请求中...',
  106. 'count' => $res['total'],
  107. 'data' => $res['data']
  108. ];
  109. return response()->json($data);
  110. }
  111. return view('admin.message.getUser');
  112. }
  113. /**
  114. * Show the form for creating a new resource.
  115. *
  116. * @return \Illuminate\Http\Response
  117. */
  118. public function create()
  119. {
  120. return view('admin.message.create');
  121. }
  122. /**
  123. * Store a newly created resource in storage.
  124. *
  125. * @param \Illuminate\Http\Request $request
  126. * @return \Illuminate\Http\Response
  127. */
  128. public function store(Request $request)
  129. {
  130. $this->validate($request,[
  131. 'title' => 'required|min:4|max:200',
  132. 'content' => 'required|min:4|max:400'
  133. ]);
  134. if (empty($request->get('user'))){
  135. return back()->withInput()->with(['status'=>'请选择用户']);
  136. }
  137. $data = $request->only(['title','content','user']);
  138. //后台推送给后台用户
  139. if (isset($data['user'][2]) && !empty($data['user'][2])){
  140. foreach ($data['user'][2] as $uuid){
  141. $d = [
  142. 'title' => $data['title'],
  143. 'content' => $data['content'],
  144. 'send_uuid' => auth()->user()->uuid,
  145. 'accept_uuid' => $uuid,
  146. 'flag' => 22
  147. ];
  148. $this->push($d);
  149. }
  150. }
  151. //后台推送给前台用户
  152. if (isset($data['user'][3]) && !empty($data['user'][3])){
  153. foreach ($data['user'][3] as $uuid){
  154. $d = [
  155. 'title' => $data['title'],
  156. 'content' => $data['content'],
  157. 'send_uuid' => auth()->user()->uuid,
  158. 'accept_uuid' => $uuid,
  159. 'flag' => 23
  160. ];
  161. $this->push($d);
  162. }
  163. }
  164. return back()->with(['status'=>'消息推送完成']);
  165. }
  166. /**
  167. * Display the specified resource.
  168. *
  169. * @param int $id
  170. * @return \Illuminate\Http\Response
  171. */
  172. public function show($id)
  173. {
  174. //
  175. }
  176. /**
  177. * Show the form for editing the specified resource.
  178. *
  179. * @param int $id
  180. * @return \Illuminate\Http\Response
  181. */
  182. public function edit($id)
  183. {
  184. //
  185. }
  186. /**
  187. * Update the specified resource in storage.
  188. *
  189. * @param \Illuminate\Http\Request $request
  190. * @param int $id
  191. * @return \Illuminate\Http\Response
  192. */
  193. public function update(Request $request, $id)
  194. {
  195. //
  196. }
  197. /**
  198. * Remove the specified resource from storage.
  199. *
  200. * @param int $id
  201. * @return \Illuminate\Http\Response
  202. */
  203. public function destroy(Request $request)
  204. {
  205. $ids = $request->get('ids');
  206. if (empty($ids)){
  207. return response()->json(['code'=>1,'msg'=>'请选择删除项']);
  208. }
  209. if (Message::destroy($ids)){
  210. return response()->json(['code'=>0,'msg'=>'删除成功']);
  211. }
  212. return response()->json(['code'=>1,'msg'=>'删除失败']);
  213. }
  214. public function mine(Request $request)
  215. {
  216. if ($request->ajax()){
  217. $res = Message::where('accept_uuid',auth()->user()->uuid)->orderBy('read','asc')->orderBy('id','desc')->paginate($request->get('limit',30))->toArray();
  218. $users = User::pluck('name','uuid');
  219. $member = Member::pluck('name','uuid');
  220. foreach ($res['data'] as &$d) {
  221. switch ($d['flag']){
  222. case 12:
  223. $send_name = '系统';
  224. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  225. break;
  226. case 13:
  227. $send_name = '系统';
  228. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  229. break;
  230. case 22:
  231. $send_name = $users[$d['send_uuid']]??'用户不存在';
  232. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  233. break;
  234. case 23:
  235. $send_name = $users[$d['send_uuid']]??'用户不存在';
  236. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  237. break;
  238. case 32:
  239. $send_name = $member[$d['send_uuid']]??'用户不存在';
  240. $accept_name = $users[$d['accept_uuid']]??'用户不存在';
  241. break;
  242. case 33:
  243. $send_name = $member[$d['send_uuid']]??'用户不存在';
  244. $accept_name = $member[$d['accept_uuid']]??'用户不存在';
  245. break;
  246. default:
  247. $send_name = '用户不存在';
  248. $accept_name = '用户不存在';
  249. break;
  250. };
  251. $d['send_name'] = $send_name;
  252. $d['accept_name'] = $accept_name;
  253. }
  254. $data = [
  255. 'code' => 0,
  256. 'msg' => '正在请求中...',
  257. 'count' => $res['total'],
  258. 'data' => $res['data']
  259. ];
  260. return response()->json($data);
  261. }
  262. return view('admin.message.mine');
  263. }
  264. public function read($id)
  265. {
  266. $message = Message::where('accept_uuid',auth()->user()->uuid)->find($id);
  267. if (!$message){
  268. return response()->json(['code'=>1,'msg'=>'消息不存在']);
  269. }
  270. if ($message->update(['read'=>2])){
  271. return response()->json(['code'=>0,'msg'=>'状态已更新']);
  272. }
  273. return response()->json(['code'=>1,'msg'=>'系统错误']);
  274. }
  275. }