From 87788ab44ea57fa42be12c543d841947900e814e Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Tue, 20 Feb 2024 11:42:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=94=A8=E6=88=B7=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E5=9C=B0=E5=9D=80=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/dao/user/UserAddressDao.php | 7 ++ .../store/product/SpuRepository.php | 2 + .../user/UserAddressRepository.php | 6 ++ app/controller/api/user/UserAddress.php | 68 +++++++++++++++---- crmeb/listens/OrderDeliveryListen.php | 4 +- 5 files changed, 73 insertions(+), 14 deletions(-) diff --git a/app/common/dao/user/UserAddressDao.php b/app/common/dao/user/UserAddressDao.php index ecaa0464..f8b564ae 100644 --- a/app/common/dao/user/UserAddressDao.php +++ b/app/common/dao/user/UserAddressDao.php @@ -15,6 +15,7 @@ namespace app\common\dao\user; use app\common\dao\BaseDao; +use app\common\model\store\GeoVillage; use app\common\model\user\UserAddress as model; class UserAddressDao extends BaseDao @@ -43,4 +44,10 @@ class UserAddressDao extends BaseDao { return (($this->getModel()::getDB())->where('uid',$uid)); } + + public function villageExists($field, $value): bool + { + return ((GeoVillage::getDB())->where($field,$value)->count()) > 0; + } + } diff --git a/app/common/repositories/store/product/SpuRepository.php b/app/common/repositories/store/product/SpuRepository.php index 3417f8cc..6019da4f 100644 --- a/app/common/repositories/store/product/SpuRepository.php +++ b/app/common/repositories/store/product/SpuRepository.php @@ -485,6 +485,7 @@ class SpuRepository extends BaseRepository if ($coupon) { switch ($coupon['type']) { case 0: + case 2: $where['mer_id'] = $coupon['mer_id']; break; case 1: @@ -499,6 +500,7 @@ class SpuRepository extends BaseRepository $where['cate_pid'] = $ids; break; case 10: + case 13: break; case 12: $ids = app()->make(StoreCouponProductRepository::class)->search([ diff --git a/app/common/repositories/user/UserAddressRepository.php b/app/common/repositories/user/UserAddressRepository.php index 1920865f..0c5bb776 100644 --- a/app/common/repositories/user/UserAddressRepository.php +++ b/app/common/repositories/user/UserAddressRepository.php @@ -119,4 +119,10 @@ class UserAddressRepository extends BaseRepository { return $this->dao->getWhere(['address_id' => $id,'uid' => $uid])->append(['area']); } + + public function villageExists($field, $value) + { + return $this->dao->villageExists($field, $value); + } + } diff --git a/app/controller/api/user/UserAddress.php b/app/controller/api/user/UserAddress.php index c34f6dab..ae6601df 100644 --- a/app/controller/api/user/UserAddress.php +++ b/app/controller/api/user/UserAddress.php @@ -13,6 +13,11 @@ namespace app\controller\api\user; +use app\common\model\store\GeoArea; +use app\common\model\store\GeoCity; +use app\common\model\store\GeoProvince; +use app\common\model\store\GeoStreet; +use app\common\model\store\GeoVillage; use app\common\repositories\store\CityAreaRepository; use think\App; use crmeb\basic\BaseController; @@ -125,30 +130,69 @@ class UserAddress extends BaseController */ public function checkParams(validate $validate) { - $data = $this->request->params(['address_id', 'real_name', 'phone', 'area', 'detail', 'post_code', 'is_default']); + $data = $this->request->params(['address_id', 'real_name', 'phone', 'area', 'detail', 'post_code', 'is_default', 'brigade']); $validate->check($data); - [$province, $city, $district, $street] = ((array)$data['area']) + [null, null, null, null]; - $last = $street ?? $district ?? $city ?? $province; + [$province, $city, $district, $street, $village] = ((array)$data['area']) + [null, null, null, null, null]; + $last = $village ?? $street ?? $district ?? $city ?? $province; if (!$last) { throw new ValidateException('请选择正确的收货地址'); } - $make = app()->make(CityAreaRepository::class); - if (!$make->existsWhere(['id' => $last['id'], 'snum' => 0])) { - throw new ValidateException('请手动选择所在地区'); + if (!$this->repository->villageExists('village_code', $last['code'])) { + throw new ValidateException('地址信息错误'); } - if ($make->search([])->where('id', 'in', array_column($data['area'], 'id'))->count() !== count($data['area'])) { - throw new ValidateException('请选择正确的收货地址'); - } - $data['province'] = $province['name']; $data['province_id'] = $province['id']; + $data['province_code'] = ''; + if (!empty($data['province_id'])) { + $province = GeoProvince::where('province_id', $data['province_id'])->find(); + if ($province) { + $data['province_code'] = $province['province_code']; + } + } $data['city'] = $city['name']; $data['city_id'] = $city['id']; + $data['city_code'] = ''; + if (!empty($data['city_id'])) { + $city = GeoCity::where('city_id', $data['city_id'])->find(); + if ($city) { + $data['city_code'] = $city['city_code']; + } + } $data['district'] = $district['name']; $data['district_id'] = $district['id']; + $data['district_code'] = ''; + if (!empty($data['district_id'])) { + $district = GeoArea::where('area_id', $data['district_id'])->find(); + if ($district) { + $data['district_code'] = $district['area_code']; + } + } if (isset($street)) { - $data['street'] = $street['name']; - $data['street_id'] = $street['id']; + $data['street'] = $street['name'] ?? ''; + $data['street_id'] = $street['id'] ?? 0; + $data['street_code'] = ''; + if (!empty($data['street_id'])) { + $street = GeoStreet::where('street_id', $data['street_id'])->find(); + if ($street) { + $data['street_code'] = $street['street_code']; + } + } + } + if (isset($village)) { + $data['village'] = $village['name'] ?? ''; + $data['village_id'] = $village['id'] ?? 0; + $data['village_code'] = ''; + if (!empty($data['village_id'])) { + $village = GeoVillage::where('village_id', $data['village_id'])->find(); + if ($village) { + $data['village_code'] = $village['village_code']; + } + } + } + $brigade = $data['brigade']; + if (isset($brigade)) { + $data['brigade'] = $brigade['name'] ?? ''; + $data['brigade_id'] = $brigade['id'] ?? 0; } unset($data['area']); return $data; diff --git a/crmeb/listens/OrderDeliveryListen.php b/crmeb/listens/OrderDeliveryListen.php index 2c021464..2362dfb9 100644 --- a/crmeb/listens/OrderDeliveryListen.php +++ b/crmeb/listens/OrderDeliveryListen.php @@ -16,7 +16,7 @@ class OrderDeliveryListen implements ListenerInterface $order = $event['order']; foreach ($order->orderProduct as $orderProduct) { $merchantCate = $orderProduct->product->merCateId; - if (empty($merchantCate) || $merchantCate[0]['mer_cate_id']!= env('PLATFORM_CARD_TYPE_ID')) { + if (empty($merchantCate) || $merchantCate[0]['mer_cate_id'] != env('PLATFORM_CARD_TYPE_ID')) { continue; } /** @var StoreCouponRepository $repo */ @@ -27,7 +27,7 @@ class OrderDeliveryListen implements ListenerInterface return; } $coupon->coupon_price = bcmul($orderProduct->product_num, $orderProduct->product->price); - $repo->sendCoupon($coupon, $order['uid'],StoreCouponUserRepository::SEND_TYPE_BUY); + $repo->sendCoupon($coupon, $order['uid'], StoreCouponUserRepository::SEND_TYPE_BUY); } }