ProjectService.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. /**
  3. * @Name
  4. * @Description
  5. * @Author 刘学玺
  6. * @Date 2024/8/27 10:52
  7. */
  8. namespace App\Http\Services\Backend\Server\Service;
  9. use App\Http\Services\Service;
  10. use App\Models\Service\Category;
  11. use App\Models\Service\Project;
  12. use App\Models\System\Dept;
  13. use App\Models\System\DictData;
  14. use App\Models\System\DictType;
  15. use Symfony\Component\HttpFoundation\Response;
  16. class ProjectService extends Service
  17. {
  18. protected array $simpleColumn = ['id', 'title', 'cover'];
  19. protected array $selectColumn = ['price', 'init_price as initPrice', 'material_price as materialPrice', 'time_long as timeLong', 'sort', 'status'];
  20. protected array $appendColumn = ['created_at as createTime'];
  21. public function getProjectList($params)
  22. {
  23. $project = Project::query();
  24. isset($params['title']) && filled($params['title']) && $project->whereLike('title', "%{$params['title']}%");
  25. isset($params['status']) && filled($params['status']) && $project->where('status', $params['status']);
  26. !empty($params['createTime']) && $project->whereIn('created_at', $params['createTime']);
  27. $projectPage = $project->paginate($params['pageSize'], [...$this->simpleColumn, ...$this->selectColumn, ...$this->appendColumn], 'page', $params['pageNo']);
  28. return ['list' => $projectPage->items(), 'total' => $projectPage->total()];
  29. }
  30. public function createProject(array $data)
  31. {
  32. $collection = collect($data);
  33. $category = $collection->forget('category');
  34. $project = self::toModel($collection, Project::class);
  35. return $project->create($project->getAttributes())->id;
  36. }
  37. public function getProject(int $id)
  38. {
  39. return Project::query()->select([...$this->simpleColumn, ...$this->selectColumn])->find($id);
  40. }
  41. public function updateProject(array $data, int $id): void
  42. {
  43. $project = self::toModel($data, Project::class);
  44. $project->where('id', $id)->update($project->getAttributes());
  45. }
  46. public function deleteProject(int $id)
  47. {
  48. $project = self::toModel(['id' => $id], Project::class);
  49. return $project->delete();
  50. }
  51. }