SystemNoticeController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Modes\Area;
  4. use App\Modes\SystemNotice;
  5. use App\Modes\User;
  6. use App\Modes\UserMsg;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. class SystemNoticeController extends Controller
  10. {
  11. /**
  12. * 公告列表
  13. * @author lyh
  14. * @date 2019/4/15
  15. * @param Request $request
  16. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  17. * @description
  18. */
  19. public function index(Request $request)
  20. {
  21. $validator = \Validator::make($param = $request->all(), [
  22. 'orderByCreatedAt' => 'string|in:desc,asc'
  23. ]);
  24. if ($validator->fails()) {
  25. return showJsonErr($validator->errors()->first());
  26. }
  27. $res = SystemNotice::orderBy('created_at', $param['orderByCreatedAt'] ?? 'desc')->paginate(perPage());
  28. if ($res->isNotEmpty()) {
  29. collect($res->items())->each(function ($item, $key) {
  30. $item->provinceMsg = Area::getName($item->province);
  31. $item->cityMsg = Area::getName($item->city);
  32. $item->districtMsg = Area::getName($item->district);
  33. $item->cerated_user = User::select(['nick_name'])->whereId($item->created_uid)->first();
  34. });
  35. }
  36. return showJsonSucc(1001, $res);
  37. }
  38. /**
  39. * 公告详情
  40. * @author lyh
  41. * @date 2019/4/15
  42. * @param Request $request
  43. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  44. * @description
  45. */
  46. public function show(Request $request)
  47. {
  48. $validator = \Validator::make($param = $request->all(), [
  49. 'id' => 'required|exists:user,id',
  50. ]);
  51. if ($validator->fails()) {
  52. return showJsonErr($validator->errors()->first());
  53. }
  54. }
  55. /**
  56. * 公告编辑
  57. * @author lyh
  58. * @date 2019/4/15
  59. * @param Request $request
  60. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  61. * @description
  62. */
  63. public function add(Request $request)
  64. {
  65. $validator = \Validator::make($param = $request->all(), [
  66. 'province' => 'exists:area,id',
  67. 'city' => 'exists:area,id',
  68. 'district' => 'integer',
  69. 'content' => 'required',
  70. 'title' => 'required'
  71. ]);
  72. if ($validator->fails()) {
  73. return showJsonErr($validator->errors()->first());
  74. }
  75. $param['created_uid'] = \Auth::id();
  76. \DB::beginTransaction();
  77. try {
  78. SystemNotice::insert($param);
  79. if (!empty($param['province'])) {
  80. $ids = User::whereProvince($param['province'])
  81. ->whereCity($param['city'] ?? 0)
  82. ->whereDistrict($param['district'] ?? 0)
  83. ->where('is_frontend', '=', 1)
  84. ->pluck('id');
  85. foreach ($ids as $id) {
  86. UserMsg::insert([
  87. 'title' => $param['title'],
  88. 'uid' => $id,
  89. 'type' => 1,
  90. 'content' => $param['content']
  91. ]);
  92. }
  93. UserMsg::SendToList(['title' => $param['title'],'content' => $param['content']],$ids);
  94. } else {
  95. $msgarr=['title'=>$param['title'],
  96. 'uid'=>0,
  97. 'type'=>14,
  98. 'content'=>$param['content']];
  99. UserMsg::SendQuntui($msgarr);
  100. }
  101. \DB::commit();
  102. return showJsonSucc('添加公告成功');
  103. } catch (\Exception $exception) {
  104. \DB::rollBack();
  105. return showJsonErr($exception->getMessage());
  106. }
  107. }
  108. }