GroupMemberController.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\GroupMember;
  4. use App\Models\GroupInfo;
  5. use Illuminate\Http\Request;
  6. use App\Http\Resources\GroupMemberResource;
  7. use App\Http\Api\AuthApi;
  8. class GroupMemberController extends Controller
  9. {
  10. /**
  11. * Display a listing of the resource.
  12. *
  13. * @return \Illuminate\Http\Response
  14. */
  15. public function index(Request $request)
  16. {
  17. //
  18. $result=false;
  19. $indexCol = ['id','user_id','group_id','power','level','status','updated_at','created_at'];
  20. switch ($request->get('view')) {
  21. case 'group':
  22. # 获取 group 内所有 成员
  23. $user = AuthApi::current($request);
  24. if(!$user){
  25. return $this->error(__('auth.failed'));
  26. }
  27. //判断当前用户是否有指定的 group 的权限
  28. if(GroupMember::where('group_id', $request->get('id'))
  29. ->where('user_id',$user['user_uid'])
  30. ->exists()){
  31. $table = GroupMember::where('group_id', $request->get('id'));
  32. }else{
  33. return $this->error(__('auth.failed'));
  34. }
  35. break;
  36. }
  37. if(isset($_GET["search"])){
  38. $table = $table->where('title', 'like', $_GET["search"]."%");
  39. }
  40. $count = $table->count();
  41. if(isset($_GET["order"]) && isset($_GET["dir"])){
  42. $table = $table->orderBy($_GET["order"],$_GET["dir"]);
  43. }else{
  44. $table = $table->orderBy('created_at');
  45. }
  46. $table->skip($request->get('offset',0))
  47. ->take($request->get('limit',1000));
  48. $result = $table->get();
  49. //当前用户角色
  50. $power = GroupMember::where('group_id', $request->get('id'))
  51. ->where('user_id',$user['user_uid'])
  52. ->value('power');
  53. switch ($power) {
  54. case 0:
  55. $role = "owner";
  56. break;
  57. case 1:
  58. $role = "manager";
  59. break;
  60. case 2:
  61. $role = "member";
  62. break;
  63. default:
  64. $role="unknown";
  65. break;
  66. }
  67. return $this->ok([
  68. "rows"=>GroupMemberResource::collection($result),
  69. "count"=>$count,
  70. 'role'=>$role
  71. ]);
  72. }
  73. /**
  74. * Store a newly created resource in storage.
  75. *
  76. * @param \Illuminate\Http\Request $request
  77. * @return \Illuminate\Http\Response
  78. */
  79. public function store(Request $request)
  80. {
  81. //
  82. $validated = $request->validate([
  83. 'user_id' => 'required',
  84. 'group_id' => 'required',
  85. ]);
  86. //查找重复的项目
  87. if(GroupMember::where('group_id', $validated['group_id'])->where('user_id',$validated['user_id'])->exists()){
  88. return $this->error('member exists');
  89. }
  90. $newMember = new GroupMember();
  91. $newMember->id=app('snowflake')->id();
  92. $newMember->user_id = $validated['user_id'];
  93. $newMember->group_id = $validated['group_id'];
  94. $newMember->power = 2;
  95. $newMember->group_name = GroupInfo::find($validated['group_id'])->name;
  96. $newMember->save();
  97. return $this->ok(new GroupMemberResource($newMember));
  98. }
  99. /**
  100. * Display the specified resource.
  101. *
  102. * @param \App\Models\GroupMember $groupMember
  103. * @return \Illuminate\Http\Response
  104. */
  105. public function show(GroupMember $groupMember)
  106. {
  107. //
  108. }
  109. /**
  110. * Update the specified resource in storage.
  111. *
  112. * @param \Illuminate\Http\Request $request
  113. * @param \App\Models\GroupMember $groupMember
  114. * @return \Illuminate\Http\Response
  115. */
  116. public function update(Request $request, GroupMember $groupMember)
  117. {
  118. //
  119. }
  120. /**
  121. * Remove the specified resource from storage.
  122. *@param \Illuminate\Http\Request $request
  123. * @param \App\Models\GroupMember $groupMember
  124. * @return \Illuminate\Http\Response
  125. */
  126. public function destroy(Request $request, GroupMember $groupMember)
  127. {
  128. //
  129. //查看删除者有没有删除权限
  130. //查询删除者的权限
  131. $currUser = AuthApi::current($request);
  132. if(!$currUser){
  133. return $this->error(__('auth.failed'));
  134. }
  135. $power = GroupMember::where('group_id',$groupMember->group_id)
  136. ->where('user_id',$currUser["user_uid"])
  137. ->select('power')->first();
  138. if(!$power || $power->power>=2){
  139. //普通成员没有删除权限
  140. return $this->error(__('auth.failed'));
  141. }
  142. $delete = $groupMember->delete();
  143. return $this->ok($delete);
  144. }
  145. }