whereLike('label', "%{$params['label']}%"); isset($params['status']) && filled($params['status']) && $dictData->where('status', $params['status']); $dictDataPage = $dictData->where('dict_type', $params['dictType'])->paginate($params['pageSize'], [...$this->selectColumn, ...$this->selectAppendColumn], 'page', $params['pageNo']); return ['list' => $dictDataPage->items(), 'total' => $dictDataPage->total()]; } public function createDictData($data) { // 校验字典类型有效 $this->validateDictTypeExists($data['dictType']); // 校验字典数据的值的唯一性 $this->validateDictDataValueUnique($data['dictType'], $data['value']); // 插入字典类型 $dictData = self::toModel($data, DictData::class); return $dictData->create($dictData->getAttributes())->id; } public function getDictData(int $id) { return DictData::query()->select($this->selectColumn)->find($id); } public function updateDictData(array $data, int $id) { // 校验字典类型有效 $this->validateDictTypeExists($data['dictType']); // 校验字典数据的值的唯一性 $this->validateDictDataValueUnique($data['dictType'], $data['value'], $id); // 修改字典数据 $dictData = self::toModel([...$data, 'id' => $id], DictData::class); $dictData->update($dictData->getAttributes()); } public function deleteDictData(int $id) { $dictData = DictData::query()->find($id); is_null($dictData) && self::error('DICT_DATA_NOT_EXISTS', Response::HTTP_UNPROCESSABLE_ENTITY); return $dictData->delete(); } protected function validateDictTypeExists($dictType) { $isExists = DictType::query()->where('type', $dictType)->exists(); !$isExists && self::error('DICT_TYPE_NOT_EXISTS', Response::HTTP_UNPROCESSABLE_ENTITY); } protected function validateDictDataValueUnique(string $type, string $value, int $id = null) { $dictDataId = DictData::query()->where(['dict_type' => $type, 'value' => $value])->value('id'); !empty($dictDataId) && $dictDataId !== $id && self::error('DICT_DATA_DUPLICATE', Response::HTTP_UNPROCESSABLE_ENTITY); } }