MessageController.php 11 KB

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