repository = $repository; } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleList(Request $request) { $this->repository->pushCriteria(new UserAddressCriteria($request)); $this->repository->setPresenter(UserAddressPresenter::class); return $this->repository->searchListsPage(); } /** * @param $id * * @return \Illuminate\Database\Eloquent\Model */ public function handleProfile($id) { $this->repository->setPresenter(UserAddressPresenter::class); return $this->repository->searchBy($id); } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleStore($data) { $data['mobile_encryption'] = Crypt::encryptString($data['mobile']); $data['mobile'] = mobile_hidden($data['mobile']); $userAddress = $this->repository->create($data); $this->handleCheckUserDefault($data, $userAddress->id); return $userAddress; } /** * 检查是否默认 * @param $data * @param $cid * @return true */ public function handleCheckUserDefault($data, $cid = 0) { if ($data['is_default']) { UserAddress::query()->where('user_id', $data['user_id'])->where('is_default', ModelStatusEnum::OK)->where('id', '<>', $cid)->update(['is_default' => ModelStatusEnum::PAUSE]); return true; } // $is_default = UserAddress::query()->where('user_id', $data['user_id'])->where('is_default', ModelStatusEnum::OK)->where('status', ModelStatusEnum::OK)->exists(); // if ($is_default) return true; // UserAddress::query()->where('user_id', $data['user_id'])->where('id', '=', $cid)->update(['is_default' => ModelStatusEnum::OK]); return true; } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleUpdate($data) { $userAddress = $this->repository->update($data, $data['id']); $this->handleCheckUserDefault($userAddress, $userAddress->id); return $userAddress; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleDelete($id) { return $this->repository->where('user_id', login_user_id())->where('id', $id)->delete(); } /** * 选项 * @param Request $request * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Support\Collection|mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleSelectOptions(Request $request) { $this->repository->pushCriteria(new UserAddressCriteria($request)); return $this->repository->all(['id', 'name']); } /** * 批量删除 * @param $ids * @return mixed */ public function handleBatchDelete($ids) { return $this->repository->whereIn('id', $ids)->delete(); } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleAll(Request $request) { $this->repository->pushCriteria(new UserAddressCriteria($request)); $this->repository->setPresenter(UserAddressPresenter::class); return $this->repository->get(); } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleIds(Request $request) { $this->repository->pushCriteria(new UserAddressCriteria($request)); return $this->repository->pluck('id'); } public function handleMeDefaule($user_id) { $address_id = UserAddress::query()->where('user_id', $user_id)->where('is_default', ModelStatusEnum::OK)->where('status', ModelStatusEnum::OK)->value('id'); if (!$address_id) { $address_id = UserAddress::query()->where('user_id', $user_id)->where('status', ModelStatusEnum::OK)->orderByDesc('updated_at')->value('id') ?? 0; } if (!$address_id) return false; $this->repository->setPresenter(UserAddressPresenter::class); $model = $this->repository->find($address_id); return $model; } }