InteractiveController.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Discussion;
  4. use App\Services\AuthService;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Http\Response;
  7. class InteractiveController extends Controller
  8. {
  9. /**
  10. * Display a listing of the resource.
  11. *
  12. * @return Response
  13. */
  14. public function index()
  15. {
  16. //
  17. }
  18. /**
  19. * Store a newly created resource in storage.
  20. *
  21. * @return Response
  22. */
  23. public function store(Request $request)
  24. {
  25. //
  26. }
  27. /**
  28. * 获取某个资源,某个用户的权限
  29. *
  30. * @return Response
  31. */
  32. public function show(Request $request, string $res_id)
  33. {
  34. //
  35. $user = AuthService::current($request);
  36. $data = [];
  37. switch ($request->input('res_type')) {
  38. case 'article':
  39. /* qa */
  40. $data['qa'] = [
  41. 'can_create' => false,
  42. 'can_reply' => false,
  43. ];
  44. if ($user && ArticleController::userCanEditId($user['user_uid'], $res_id)) {
  45. $data['qa']['can_create'] = true;
  46. $data['qa']['can_reply'] = true;
  47. }
  48. $data['qa']['count'] = Discussion::where('res_id', $res_id)
  49. ->where('type', 'qa')
  50. ->where('status', 'close')
  51. ->count();
  52. /* help */
  53. $data['help'] = [
  54. 'can_create' => false,
  55. 'can_reply' => false,
  56. ];
  57. if ($user) {
  58. $data['help']['can_reply'] = true;
  59. if (ArticleController::userCanEditId($user['user_uid'], $res_id)) {
  60. $data['help']['can_create'] = true;
  61. }
  62. }
  63. $data['help']['count'] = Discussion::where('res_id', $res_id)
  64. ->where('type', 'help')
  65. ->where('status', 'active')
  66. ->count();
  67. /* discussion */
  68. $data['discussion'] = [
  69. 'can_create' => false,
  70. 'can_reply' => false,
  71. ];
  72. if ($user) {
  73. $data['discussion']['can_reply'] = true;
  74. $data['discussion']['can_create'] = true;
  75. }
  76. $data['discussion']['count'] = Discussion::where('res_id', $res_id)
  77. ->where('type', 'discussion')
  78. ->where('status', 'active')
  79. ->count();
  80. break;
  81. }
  82. return $this->ok($data);
  83. }
  84. /**
  85. * Update the specified resource in storage.
  86. *
  87. * @return Response
  88. */
  89. public function update(Request $request, Discussion $discussion)
  90. {
  91. //
  92. }
  93. /**
  94. * Remove the specified resource from storage.
  95. *
  96. * @return Response
  97. */
  98. public function destroy(Discussion $discussion)
  99. {
  100. //
  101. }
  102. }