2
0

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