2
0

GroupMemberController.php 4.9 KB

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