selectField = ['id', 'user_id', 'project_id', 'created_at', 'updated_at', 'deleted_at']; $this->model = CollectionModel::class; $this->where[] = ['user_id', '=', $this->userId]; } /** * 获取用户收藏列表 * @return array * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function list(): array { $this->with = [ 'project:id,title,cover,category_id,description,price,preferential_price,front,service,deploy,status,created_at,updated_at', 'project.category:id,name', 'project.labels:id,name', ]; return $this->getPageList(); } public function detail($id) { return $this->getDetail($id); } /** * 用户收藏下拉列表 * @return mixed */ public function option() { $this->optionField = ['id', 'url']; return $this->getOption(); } /** * 创建用户收藏 * @param $params * @return mixed * @throws Exception */ public function create($params): mixed { $myCollectionModel = $this->model::where('user_id', $this->userId)->where('project_id', $params['project_id'])->first(); if ($myCollectionModel) { if (!empty($myCollectionModel['deleted_at'])) { return $this->model::where('id', $myCollectionModel['id'])->update([ 'deleted_at' => 0 ]); } $this->utils->errorThrow('您已收藏过该项目'); } $params['user_id'] = $this->userId; return $this->insert($params); } /** * 取消收藏 * @param $projectId * @return mixed */ public function unCollection($projectId) { return $this->model::where('user_id', $this->userId)->where('project_id', $projectId)->update([ 'deleted_at' => get_time() ]); } /** * 编辑用户收藏 * @param $id * @param $params * @return mixed * @throws Exception */ public function update($id, $params): mixed { return $this->save($id, $params); } /** * 删除用户收藏 * @param $ids * @return mixed|true * @throws Exception */ public function delete($ids): mixed { return $this->del($ids); } }