UserController.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace App\Http\Controllers\Api\mini;
  3. use App\Models\Project;
  4. use App\Models\ProjectRole;
  5. use App\Models\ProjectUser;
  6. use App\Models\User;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Auth;
  9. use Illuminate\Support\Facades\Hash;
  10. use Illuminate\Support\Facades\Log;
  11. class UserController extends BaseController
  12. {
  13. protected $model;
  14. public function __construct()
  15. {
  16. $this->model = new User();
  17. }
  18. public function search(Request $request)
  19. {
  20. $items = $this->model->with('project_users');
  21. $tmp_items = collect(['keyword']);
  22. foreach($tmp_items as $tmp_item) {
  23. if($request->has($tmp_item) && !empty($request->input($tmp_item))) {
  24. // $items = $items->where('name', 'like', '%' . $request->input($tmp_item) . '%')->orWhere('phone', 'like', '%' . $request->input($tmp_item) . '%');
  25. $items = $items->where('name', '=', $request->input($tmp_item))->orWhere('phone', '=', $request->input($tmp_item));
  26. }
  27. }
  28. $select_items = collect(['id']);
  29. foreach($select_items as $tmp_item) {
  30. if($request->has($tmp_item) && !empty($request->input($tmp_item))) {
  31. $items = $items->where($tmp_item, '=', $request->input($tmp_item));
  32. }
  33. }
  34. $items = $items->limit(1)->get();
  35. foreach($items as $item) {
  36. $item->project = $item->projects->implode('name', ',');
  37. $item->project = $item->project ? $item->project : '暂未添加项目';
  38. foreach ($item->project_users as $project_user) {
  39. $project = Project::find($project_user->project_id);
  40. $project_user->project_name = $project ? $project->name : '';
  41. $role = ProjectRole::find($project_user->project_role_id);
  42. $project_user->role_name = $role ? $role->name : '';
  43. }
  44. }
  45. return $this->success(['msg' => '操作成功', 'data' => $items]);
  46. }
  47. public function update(Request $request)
  48. {
  49. $user = Auth::guard('mini')->user();
  50. $user->update($request->only('avatar', 'name', 'phone'));
  51. return $this->success(['data' => $user]);
  52. }
  53. public function changePassword(Request $request)
  54. {
  55. $user = Auth::guard('mini')->user();
  56. if(!$user) return $this->error(['msg' => '找不到用户']);
  57. if(Hash::check($request->input('new'), $user->password)) {
  58. $res = $user->update(['password' => bcrypt($user->password)]);
  59. if($res) return $this->success();
  60. }
  61. return $this->error(['msg' => '原密码错误']);
  62. }
  63. public function getTopRole()
  64. {
  65. $user = Auth::guard('mini')->user();
  66. $project_role = $user->getTopRole();
  67. return $this->success(['data' => $project_role]);
  68. }
  69. public function getRight(Request $request)
  70. {
  71. $user = Auth::guard('mini')->user();
  72. $project_user = ProjectUser::where([
  73. 'user_id' => $user->id,
  74. 'project_id' => $request->input('id')
  75. ])->first();
  76. $right = ['managerMember' => false, 'createInner' => false, 'createOut' => false];
  77. if($project_user) {
  78. $project_role = ProjectRole::find($project_user->project_role_id);
  79. if($project_role) {
  80. $right['managerMember'] = !in_array($project_role->key, ['work', 'machine', 'assist']);
  81. $right['createInner'] = $project_role->key == 'machine';
  82. $right['createOut'] = $project_role->key == 'work';
  83. }
  84. }
  85. return $this->success(['data' => $right]);
  86. }
  87. }