SupportController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace App\Http\Controllers\Account;
  3. use App\Models\Answer;
  4. use App\Models\Article;
  5. use App\Models\Comment;
  6. use App\Models\Support;
  7. use App\Models\UserTag;
  8. use Illuminate\Http\Request;
  9. use App\Http\Requests;
  10. use App\Http\Controllers\Controller;
  11. use Illuminate\Support\Facades\DB;
  12. class SupportController extends Controller
  13. {
  14. /**
  15. * 创建支持记录
  16. *
  17. * @param \Illuminate\Http\Request $request
  18. * @return \Illuminate\Http\Response
  19. */
  20. public function store($source_type,$source_id,Request $request)
  21. {
  22. if($source_type === 'answer'){
  23. $source = Answer::find($source_id);
  24. }elseif($source_type === 'article'){
  25. $source = Article::find($source_id);
  26. }elseif($source_type === 'comment'){
  27. $source = Comment::find($source_id);
  28. }
  29. if(!$source){
  30. abort(404);
  31. }
  32. /*再次关注相当于是取消关注*/
  33. $support = Support::where("session_id",'=',$request->session()->getId())->where('supportable_type','=',get_class($source))->where('supportable_id','=',$source_id)->first();
  34. if($support){
  35. return response('supported');
  36. }
  37. $user_id = null;
  38. if($request->user()){
  39. $user_id = $request->user()->id;
  40. }
  41. $data = [
  42. 'session_id' => $request->session()->getId(),
  43. 'user_id' => $user_id,
  44. 'supportable_id' => $source_id,
  45. 'supportable_type' => get_class($source),
  46. ];
  47. $support = Support::create($data);
  48. if($support){
  49. $source->increment('supports');
  50. $source->user->userData->increment('supports');
  51. if($source_type=='answer'){
  52. UserTag::multiIncrement($source->user_id,$source->question->tags()->get(),'supports');
  53. }else if($source_type=='article'){
  54. UserTag::multiIncrement($source->user_id,$source->tags()->get(),'supports');
  55. }
  56. }
  57. return response('success');
  58. }
  59. public function check($source_type,$source_id,Request $request)
  60. {
  61. if($source_type === 'answer'){
  62. $source = Answer::find($source_id);
  63. }
  64. if(!$source){
  65. abort(404);
  66. }
  67. /*再次关注相当于是取消关注*/
  68. $support = Support::where("session_id",'=',$request->session()->getId())->where('supportable_type','=',get_class($source))->where('supportable_id','=',$source_id)->first();
  69. if($support){
  70. return response('failed');
  71. }
  72. return response('success');
  73. }
  74. }