AnswerController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\Answer;
  4. use App\Services\CreditService;
  5. use App\Services\NotificationService;
  6. use Illuminate\Http\Request;
  7. use App\Http\Requests;
  8. class AnswerController extends AdminController
  9. {
  10. /**
  11. * 回答列表
  12. *
  13. * @return \Illuminate\Http\Response
  14. */
  15. public function index(Request $request)
  16. {
  17. $filter = $request->all();
  18. $query = Answer::query();
  19. /*提问人过滤*/
  20. if( isset($filter['user_id']) && $filter['user_id'] > 0 ){
  21. $query->where('user_id','=',$filter['user_id']);
  22. }
  23. /*问题过滤*/
  24. if( isset($filter['question_id']) && $filter['question_id'] > 0 ){
  25. $query->where('question_id','=',$filter['question_id']);
  26. }
  27. /*提问时间过滤*/
  28. if( isset($filter['date_range']) && $filter['date_range'] ){
  29. $query->whereBetween('created_at',explode(" - ",$filter['date_range']));
  30. }
  31. /*问题状态过滤*/
  32. if( isset($filter['status']) && $filter['status'] > -1 ){
  33. $query->where('status','=',$filter['status']);
  34. }
  35. $answers = $query->orderBy('created_at','desc')->paginate(20);
  36. return view("admin.answer.index")->with('answers',$answers)->with('filter',$filter);
  37. }
  38. /**
  39. * Show the form for creating a new resource.
  40. *
  41. * @return \Illuminate\Http\Response
  42. */
  43. public function create()
  44. {
  45. //
  46. }
  47. /**
  48. * Show the form for editing the specified resource.
  49. *
  50. * @param int $id
  51. * @return \Illuminate\Http\Response
  52. */
  53. public function edit($id)
  54. {
  55. //
  56. }
  57. /**
  58. * Update the specified resource in storage.
  59. *
  60. * @param \Illuminate\Http\Request $request
  61. * @param int $id
  62. * @return \Illuminate\Http\Response
  63. */
  64. public function update(Request $request, $id)
  65. {
  66. //
  67. }
  68. /*回答审核*/
  69. public function verify(Request $request)
  70. {
  71. $answerIds = $request->input('id');
  72. // 积分策略
  73. $answers = Answer::whereIn('id',$answerIds)->where('status','<>',1)->select('id','user_id','question_title')->get();
  74. if (!empty($answers)){
  75. foreach ($answers as $answer){
  76. CreditService::create($answer->user_id,'answer',Setting()->get('coins_answer'),Setting()->get('credits_answer'),$answer->id,$answer->question_title);
  77. }
  78. }
  79. Answer::whereIn('id',$answerIds)->update(['status'=>1]);
  80. return $this->success(route('admin.answer.index').'?status=0','回答审核成功');
  81. }
  82. /**
  83. *删除回答
  84. * @param int $id
  85. * @return \Illuminate\Http\Response
  86. */
  87. public function destroy(Request $request)
  88. {
  89. $answerIds = $request->input('ids');
  90. // 给文章所有者发送站内通知
  91. $ids = explode(',',$answerIds);
  92. if ($request->input('report_type') == 99){
  93. $reason = $request->input('reason');
  94. }else{
  95. $reason = trans_report_type($request->input('report_type'));
  96. }
  97. foreach ($ids as $id){
  98. $answer = Answer::find($id);
  99. // 记录到通知
  100. NotificationService::notify(Auth()->user()->id, $answer->user_id, 'remove_answer', $answer->question_title, $answer->id, $reason);
  101. Answer::destroy($id);
  102. }
  103. // Answer::destroy($request->input('id'));
  104. return $this->success(route('admin.answer.index'),'回答删除成功');
  105. }
  106. }