ProjectController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace App\Http\Controllers\Api\mini;
  3. use App\Models\Project;
  4. use App\Models\ProjectUser;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Database\Eloquent\Builder;
  7. class ProjectController extends BaseController
  8. {
  9. protected $model;
  10. public function __construct()
  11. {
  12. $this->model = new Project();
  13. }
  14. public function addUser(Request $request)
  15. {
  16. $item = ProjectUser::where([
  17. 'project_id' => $request->input('project_id'),
  18. 'user_id' => $request->input('user_id'),
  19. // 'project_role_id' => $request->input('project_role_id')
  20. ])->first();
  21. if($item) return $this->error('该成员已添加');
  22. $res = ProjectUser::create([
  23. 'project_id' => $request->input('project_id'),
  24. 'user_id' => $request->input('user_id'),
  25. 'project_role_id' => $request->input('project_role_id')
  26. ]);
  27. if(!$res) return $this->error('添加失败');
  28. return $this->success('操作成功');
  29. }
  30. public function updateUser(Request $request)
  31. {
  32. $res = ProjectUser::where('id', '=', $request->input('id'))->update([
  33. 'project_id' => $request->input('project_id'),
  34. 'user_id' => $request->input('user_id'),
  35. 'project_role_id' => $request->input('project_role_id')
  36. ]);
  37. if(!$res) return $this->error('操作失败');
  38. return $this->success('操作成功');
  39. }
  40. public function create(Request $request)
  41. {
  42. if(empty($request->input('name'))) return $this->error(['msg' => '项目名称不能为空']);
  43. if($item = $this->model->where('name', $request->input('name'))->first()) return $this->error(['msg' => '项目名称已存在']);
  44. $res = $this->model->create([
  45. 'name' => $request->input('name')
  46. ]);
  47. if(!$res) return $this->error(['msg' => '创建失败']);
  48. return $this->success(['msg' => '创建成功']);
  49. }
  50. public function get(Request $request)
  51. {
  52. $items = $this->model;
  53. $tmp_items = collect(['name']);
  54. foreach($tmp_items as $tmp_item) {
  55. if($request->has($tmp_item) && !empty($request->input($tmp_item))) {
  56. $items = $items->where($tmp_item, 'like', '%' . $request->input($tmp_item) . '%');
  57. }
  58. }
  59. $items = $items->paginate();
  60. foreach($items as $item) {
  61. $item->date = substr($item->created_at, 0, 10);
  62. $item->manager = $item->getManager();
  63. }
  64. return $this->success(['msg' => '创建成功', 'data' => $items->items()]);
  65. }
  66. public function getAll(Request $request)
  67. {
  68. if($request->input('type') == 'drop_menu') {
  69. $items = $this->model->select('name as text', 'id as value')->get();
  70. $items = $items->prepend(collect(['text' => '请选择项目', 'value' => '']));
  71. return $this->success(['data' => $items]);
  72. }
  73. $items = $this->model->get();
  74. return $this->success(['msg' => '创建成功', 'data' => $items]);
  75. }
  76. public function detail(Request $request)
  77. {
  78. $project = $this->model->find($request->input('id'));
  79. $project->role = $project->getUserProjectRole();
  80. return $this->success(['msg' => '操作成功', 'data' => $project]);
  81. }
  82. public function getUsers(Request $request)
  83. {
  84. // $list = ProjectUser::where('project_id', $request->input('id'))->join('users', 'project_users.user_id', '=', 'users.id')->join('project_roles', 'project_users.project_role_id', '=', 'project_roles.id')->select('project_users.*', 'users.avatar', 'users.name as user', 'project_roles.name as role_name');
  85. $list = ProjectUser::where('project_id', $request->input('id'))->with(['projectRole', 'user']);
  86. if($request->has('keyword')) {
  87. $keyword = '%' . $request->input('keyword') . '%';
  88. $list = $list->whereHas('user', function (Builder $query) use($keyword) {
  89. $query->where('phone', 'like', $keyword)->orWhere('name', 'like', $keyword);
  90. });
  91. }
  92. $list = $list->get();
  93. return $this->success(['msg' => '操作成功', 'data' => $list]);
  94. }
  95. public function deleteUser(Request $request)
  96. {
  97. $res = ProjectUser::where('id', '=', $request->input('id'))->delete();
  98. if($res) return $this->success(['msg' => '操作成功']);
  99. return $this->error();
  100. }
  101. }