Преглед на файлове

优化用户下单方法-进行中

sunxbiao преди 1 година
родител
ревизия
c10e574c38
променени са 1 файла, в които са добавени 44 реда и са изтрити 6 реда
  1. 44 6
      app/common/repositories/store/order/StoreOrderRepository.php

+ 44 - 6
app/common/repositories/store/order/StoreOrderRepository.php

@@ -10662,7 +10662,7 @@ class StoreOrderRepository extends BaseRepository
10662 10662
         // 商品属性
10663 10663
         /** @var ProductAttrValueRepository $productAttrValueRepository */
10664 10664
         $productAttrValueRepository = app()->make(ProductAttrValueRepository::class);
10665
-        // 目前还未搞清这个表的意义
10665
+        //
10666 10666
         /** @var SeckillRepository $seckillRepository */
10667 10667
         $seckillRepository = app()->make(SeckillRepository::class);
10668 10668
         // 商户设置秒杀商品关联表
@@ -10691,8 +10691,13 @@ class StoreOrderRepository extends BaseRepository
10691 10691
         // 获取  商品 对应的 运费模板 de 配送区域表
10692 10692
         /** @var ShippingTemplateRegionRepository $shippingTemplateRegionRepository */
10693 10693
         $shippingTemplateRegionRepository = app()->make(ShippingTemplateRegionRepository::class);
10694
+
10694 10695
         /** @var UserRepository $UserRepository */
10695
-        $UserRepository = app()->make(UserRepository::class);
10696
+        $userRepository = app()->make(UserRepository::class);
10697
+        /** @var StoreOrderRepository $storeOrderRepository */
10698
+        $storeOrderRepository = app()->make(StoreOrderRepository::class);
10699
+        /** @var StoreGroupOrderRepository $storeGroupOrderRepository */
10700
+        $storeGroupOrderRepository = app()->make(StoreGroupOrderRepository::class);
10696 10701
 
10697 10702
         // 记录 用户 在指定商家的 优惠券
10698 10703
         $storeCouponUserEntityListByMerIdMap = [];
@@ -10976,8 +10981,10 @@ class StoreOrderRepository extends BaseRepository
10976 10981
                 ->setDouhuomallStatus(StoreOrderEnum::DOHUOMALL_STATUS['NotSubmittedToWeiweiBao']['code'])
10977 10982
                 ->setFzonePaytype($storeOrderCreateRequestEntity->getFzonePayType())
10978 10983
                 ->setConPri($serviceMoney);
10984
+            $storeOrderEntityList[] = $storeOrderEntity;
10979 10985
         }
10980 10986
 
10987
+        // 验证支付方式
10981 10988
         /** @var FzonePayTypeEntity $fzonePayTypeEntity */
10982 10989
         $fzonePayTypeEntity = FzonePayTypeEntity::newInstance($storeOrderCreateRequestEntity->getFzonePayType());
10983 10990
         if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['B1-VR+Score']['code']) {
@@ -10985,7 +10992,37 @@ class StoreOrderRepository extends BaseRepository
10985 10992
                 throw new ValidateException('支付失败,VR或积分不足!');
10986 10993
             }
10987 10994
         } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['B2-Cash+Score']['code']) {
10995
+            if ($fzonePayTypeEntity->getOther() > $userEntity->getScore()) {
10996
+                throw new ValidateException('支付失败,积分不足!');
10997
+            }
10998
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['B3-VR+Jingdou']['code']) {
10999
+            if ($fzonePayTypeEntity->getPrice() > $userEntity->getVr() || $fzonePayTypeEntity->getOther() > $userEntity->getJingdou()) {
11000
+                throw new ValidateException('支付失败,VR或京豆不足!');
11001
+            }
11002
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['B4-Cash+Jingdou']['code']) {
11003
+            if ($fzonePayTypeEntity->getPrice() > $userEntity->getVr() || $fzonePayTypeEntity->getOther() > $userEntity->getJingdou()) {
11004
+                throw new ValidateException('支付失败,京豆不足!');
11005
+            }
11006
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['B5-VR']['code']) {
11007
+            if ($fzonePayTypeEntity->getPrice() > $userEntity->getVr()) {
11008
+                throw new ValidateException('支付失败,VR不足!');
11009
+            }
11010
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['A1-VR']['code']) {
11011
+            if ($fzonePayTypeEntity->getPrice() > $userEntity->getVr()) {
11012
+                throw new ValidateException('支付失败,VR不足!');
11013
+            }
11014
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['A2-Cash']['code']) {
10988 11015
 
11016
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['A3-Cash+VR']['code']) {
11017
+            if ($fzonePayTypeEntity->getOther() > $userEntity->getVr()) {
11018
+                throw new ValidateException('支付失败,VR不足!');
11019
+            }
11020
+        } else if ($fzonePayTypeEntity->getType() == StoreOrderEnum::FZONE_PAY_TYPE['C1-Fugou']['code']) {
11021
+            if ($fzonePayTypeEntity->getOther() > $userEntity->getFugou()) {
11022
+                throw new ValidateException('支付失败,复购金不足!');
11023
+            }
11024
+        } else {
11025
+            throw new ValidateException('支付失败,支付方式错误!');
10989 11026
         }
10990 11027
 
10991 11028
         /** @var StoreGroupOrderEntity $storeGroupOrderEntity */
@@ -11003,11 +11040,12 @@ class StoreOrderRepository extends BaseRepository
11003 11040
             ->setCost($totalCost)
11004 11041
             ->setPayType($storeOrderCreateRequestEntity->getPayType())
11005 11042
             ->setFzonePaytype($storeOrderCreateRequestEntity->getFzonePayType());
11043
+        $storeGroupOrderCreateResultModel = $storeGroupOrderRepository->create($storeGroupOrderEntity->toUnderlineArray());
11044
+        $storeGroupOrderEntity->setGroupOrderId($storeGroupOrderCreateResultModel->group_order_id);
11006 11045
 
11007
-        // TODO 保存后 将保存后的ID 存入到订单表中
11008
-        // foreach ($storeOrderEntityList as $storeOrderEntity) {
11009
-        //     $storeOrderEntity->setGroupOrderId();
11010
-        // }
11046
+        foreach ($storeOrderEntityList as $storeOrderEntity) {
11047
+             $storeOrderEntity->setGroupOrderId($storeGroupOrderEntity->getGroupOrderId());
11048
+         }
11011 11049
 
11012 11050
 
11013 11051