FeedBackController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. <?php
  2. namespace App\Http\Controllers\Admins;
  3. use App\Modes\Area;
  4. use App\Modes\UserMsg;
  5. use App\Modes\FeedBack;
  6. use Carbon\Carbon;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. class FeedBackController extends Controller
  10. {
  11. /**
  12. * 客服服务-反馈列表
  13. * @author lyh
  14. * @date 2019/4/16
  15. * @param Request $request
  16. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  17. * @description
  18. * 查询:所在城区(省市区)、代理输入代理手机号/昵称/姓名、查询反馈类型
  19. */
  20. public function index(Request $request)
  21. {
  22. $validator = \Validator::make($param = $request->all(), [
  23. 'province' => 'exists:area,id', // 省
  24. 'city' => 'exists:area,id', // 市
  25. 'district' => 'exists:area,id', // 区
  26. 'word' => 'string|min:3',
  27. 'feedbackType' => 'exists:feedback,feedback_type'
  28. ]);
  29. if ($validator->fails()) {
  30. return showJsonErr($validator->errors()->first());
  31. }
  32. $feedback = \DB::table('feedback as main')
  33. ->join('user as u', 'u.id', '=', 'main.uid')
  34. ->select([
  35. 'u.real_name',
  36. 'u.nick_name',
  37. 'u.mobile',
  38. 'u.province',
  39. 'u.city',
  40. 'u.district',
  41. 'main.*'
  42. ])
  43. ->orderByDesc('id');
  44. if (!empty($param['province'])) {
  45. $feedback->where('province', $param['province']);
  46. }
  47. if (!empty($param['city'])) {
  48. $feedback->where('city', $param['city']);
  49. }
  50. if (!empty($param['district'])) {
  51. $feedback->where('district', $param['district']);
  52. }
  53. // 关键词查询
  54. if (!empty($param['word'])) {
  55. $feedback->where(\DB::raw("concat(real_name,mobile,nick_name)"), 'like', "%{$param['word']}%");
  56. }
  57. // 广告标题
  58. if (!empty($param['feedbackType'])) {
  59. $feedback->where('main.feedback_type', 'like', "%{$param['feedbackType']}%");
  60. }
  61. $res = $feedback->paginate(perPage());
  62. if ($res->isNotEmpty()) {
  63. collect($res->items())->each(function ($item, $key) {
  64. $item->area = Area::getArea($item->province, $item->city, $item->district);
  65. });
  66. }
  67. return showJsonSucc(1001, $res);
  68. }
  69. /**
  70. * @author lyh
  71. * @date 2019/4/16
  72. * @param Request $request
  73. * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  74. * @description
  75. */
  76. public function reply(Request $request)
  77. {
  78. $validator = \Validator::make($param = $request->all(), [
  79. 'id' => 'required|array',
  80. 'audit_remark' => 'required'
  81. ]);
  82. if ($validator->fails()) {
  83. return showJsonErr($validator->errors()->first());
  84. }
  85. foreach ($param['id'] as $id) {
  86. $feedback = FeedBack::find($id);
  87. if (empty($feedback)) {
  88. \DB::rollBack();
  89. return showJsonErr('抱歉,该反馈记录不存在');
  90. }
  91. $feedback->audit_remark = $param['audit_remark'];
  92. $feedback->audit_uid = \Auth::id();
  93. $feedback->audit_at = Carbon::now();
  94. $result = $feedback->save();
  95. if (!$result) {
  96. \DB::rollBack();
  97. return showJsonErr('处理反馈失败');
  98. }
  99. UserMsg::SendGetui(['title'=>'反馈回复','uid'=>$feedback->uid,'type'=>6,'content'=>$param['audit_remark']]);
  100. }
  101. return showJsonSucc('回复反馈成功');
  102. }
  103. }