MessageController.php 13 KB

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