GroupMemberController.php 5.0 KB

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