瀏覽代碼

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

sunxbiao 1 年之前
父節點
當前提交
b1341d827e
共有 2 個文件被更改,包括 947 次插入376 次删除
  1. 77 51
      app/common/repositories/user/UserBillRepository.php
  2. 870 325
      app/entity/data/user/UserEntity.php

+ 77 - 51
app/common/repositories/user/UserBillRepository.php

@@ -509,15 +509,17 @@ class UserBillRepository extends BaseRepository
509
     public function executeByIdList(array $idList): array
509
     public function executeByIdList(array $idList): array
510
     {
510
     {
511
         $userBillEntityList = $this->getUserBillEntityListByBillIdList($idList);
511
         $userBillEntityList = $this->getUserBillEntityListByBillIdList($idList);
512
-        // 删除已经生效的 记录
512
+        // 忽略 已经生效的 记录
513
         $userBillEntityList = array_filter($userBillEntityList, function($entity) {
513
         $userBillEntityList = array_filter($userBillEntityList, function($entity) {
514
             return $entity->getStatus() != UserBillEnum::STATUS['VALID']['code'];
514
             return $entity->getStatus() != UserBillEnum::STATUS['VALID']['code'];
515
         });
515
         });
516
 
516
 
517
         if (!empty($userBillEntityList)) {
517
         if (!empty($userBillEntityList)) {
518
             $pensionUidList = [];
518
             $pensionUidList = [];
519
+            // 获取所有记录的 归属人
519
             $userIdList = array_map(function ($userBillEntity) use (&$pensionUidList) {
520
             $userIdList = array_map(function ($userBillEntity) use (&$pensionUidList) {
520
-                if ($userBillEntity->getType() == UserBillEnum::COMMISSION_TYPE['PENSION']['code']) {
521
+                // 获取 养老金记录
522
+                if ($userBillEntity->getCommissionType() == UserBillEnum::COMMISSION_TYPE['PENSION']['code']) {
521
                     $pensionUidList[] = $userBillEntity->getUid();
523
                     $pensionUidList[] = $userBillEntity->getUid();
522
                 }
524
                 }
523
                 return $userBillEntity->getUid();
525
                 return $userBillEntity->getUid();
@@ -531,7 +533,7 @@ class UserBillRepository extends BaseRepository
531
             if (!empty($userIdList)) {
533
             if (!empty($userIdList)) {
532
                 $userEntityMapByUid = $userRepository->getUserEntityMapByUidList($userIdList);
534
                 $userEntityMapByUid = $userRepository->getUserEntityMapByUidList($userIdList);
533
             }
535
             }
534
-            // 获取实名认证 映射信息
536
+            // 获取实名认证 映射信息 (养老金记录 结算时 需要确定 所属人是否已经实名认证 如果实名认证了 需要推到养老金公证处明细表里 并修改养老金记录的推送状态)
535
             /** @var UserCertificationEntity[] $userCertificationEntityMapByUid */
537
             /** @var UserCertificationEntity[] $userCertificationEntityMapByUid */
536
             $userCertificationEntityMapByUid = [];
538
             $userCertificationEntityMapByUid = [];
537
             if (!empty($pensionUidList)) {
539
             if (!empty($pensionUidList)) {
@@ -542,8 +544,8 @@ class UserBillRepository extends BaseRepository
542
             /** @var GzcLogRepository $gzcLogRepository */
544
             /** @var GzcLogRepository $gzcLogRepository */
543
             $gzcLogRepository = app()->make(GzcLogRepository::class);
545
             $gzcLogRepository = app()->make(GzcLogRepository::class);
544
 
546
 
545
-            $updateUserDataList = [];
546
-            $updateUserBillDataList = [];
547
+            $updateUserEntityList = [];
548
+            $updateUserBillEntityList = [];
547
             foreach ($userBillEntityList as $userBillEntity) {
549
             foreach ($userBillEntityList as $userBillEntity) {
548
                 if (empty($userBillEntity->getBillId()) || empty($userBillEntity->getUid())) {
550
                 if (empty($userBillEntity->getBillId()) || empty($userBillEntity->getUid())) {
549
                     // throw new ValidateException('无效的账单记录');
551
                     // throw new ValidateException('无效的账单记录');
@@ -557,63 +559,87 @@ class UserBillRepository extends BaseRepository
557
                 if (empty($userEntity) || empty($userEntity->getUid())) {
559
                 if (empty($userEntity) || empty($userEntity->getUid())) {
558
                     throw new ValidateException("未查询到用户信息({$userBillEntity->getBillId()})");
560
                     throw new ValidateException("未查询到用户信息({$userBillEntity->getBillId()})");
559
                 }
561
                 }
560
-                if ($userBillEntity->getType() == UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code']) {
562
+
563
+                // 更新 用户信息
564
+                /** @var UserEntity $updateUserEntity */
565
+                $updateUserEntity = $updateUserEntityList[$userEntity->getUid()] ?? UserEntity::newInstance();
566
+                $updateUserEntity->setUid($userEntity->getUid());
567
+                // 更新 账单 记录
568
+                /** @var UserBillEntity $updateUserBillEntity */
569
+                $updateUserBillEntity = $updateUserBillEntityList[$userBillEntity->getBillId()] ?? UserBillEntity::newInstance();
570
+                // 更新 账单记录 状态
571
+                $updateUserBillEntity
572
+                    ->setBillId($userBillEntity->getBillId())
573
+                    ->setStatus(UserBillEnum::STATUS['VALID']['code']);
574
+
575
+                if ($userBillEntity->getCommissionType() == UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code']) {
561
                     // 直推奖
576
                     // 直推奖
562
-                    if (!isset($updateUserDataList[$userEntity->getUid()]['brokerage_price'])) {
563
-                        $updateUserDataList[$userEntity->getUid()]['brokerage_price'] = $userEntity->getBrokeragePrice();
577
+                    if (is_null($updateUserEntity->getBrokeragePrice())) {
578
+                        $updateUserEntity->setBrokeragePrice($userEntity->getBrokeragePrice());
564
                     }
579
                     }
565
-                    // 更新用户 信息
580
+                    // 更新用户 佣金 信息
566
                     if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
581
                     if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
567
-                        if ($updateUserDataList[$userBillEntity->getUid()]['brokerage_price'] < $userBillEntity->getNumber()) {
582
+                        if ($updateUserEntity->getBrokeragePrice() < $userBillEntity->getNumber()) {
568
                             throw new ValidateException('用户佣金不足');
583
                             throw new ValidateException('用户佣金不足');
569
                         }
584
                         }
570
-                        $updateUserDataList[$userBillEntity->getUid()]['brokerage_price'] -= $userBillEntity->getNumber();
585
+                        $updateUserEntity->setBrokeragePrice(bcsub($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
571
                     } else {
586
                     } else {
572
-                        $updateUserDataList[$userBillEntity->getUid()]['brokerage_price'] += $userBillEntity->getNumber();
573
-                    }
574
-                    // 更新佣金记录
575
-                    $updateUserBillDataList[$userBillEntity->getBillId()] = [
576
-                        'status' => UserBillEnum::STATUS['VALID']['code']
577
-                    ];
578
-                } else if ($userBillEntity->getType() == UserBillEnum::COMMISSION_TYPE['PENSION']['code']) {
579
-                    $updateUserBillDataList[$userBillEntity->getBillId()] = [
580
-                        'status' => UserBillEnum::STATUS['VALID']['code']
581
-                    ];
582
-                    if ($userBillEntity->getGzc() == UserBillEnum::GZC_STATUS['']) {
583
-
587
+                        $updateUserEntity->setBrokeragePrice(bcadd($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
584
                     }
588
                     }
585
-                    if (isset($userCertificationEntityMapByUid[$userBillEntity->getUid()])) {
586
-                        $userCertificationEntity = $userCertificationEntityMapByUid[$userBillEntity->getUid()];
587
-
588
-                        // 创建公证处记录
589
-                        $gzcLogRepository->addGzcLog(
590
-                            $userCertificationEntity->getUid(),
591
-                            $userCertificationEntity->getUserName(),
592
-                            $userCertificationEntity->getMobile(),
593
-                            $userCertificationEntity->getUserCard(),
594
-                            $userBillEntity->getTypeShop(),
595
-                            $userBillEntity->getOrderSn(),
596
-                            $userBillEntity->getNumber()
597
-                        );
598
-                        // 更新佣金记录
599
 
589
 
590
+                } else if ($userBillEntity->getCommissionType() == UserBillEnum::COMMISSION_TYPE['PENSION']['code']) {
591
+
592
+                    if ($userBillEntity->getGzc() == UserBillEnum::GZC_STATUS['NOT_ENTERED']) {
593
+                        if (!empty($userCertificationEntityMapByUid[$userBillEntity->getUid()])) {
594
+                            $userCertificationEntity = $userCertificationEntityMapByUid[$userBillEntity->getUid()];
595
+                            // 创建公证处记录
596
+                            $gzcLogRepository->addGzcLog(
597
+                                $userCertificationEntity->getUid(),
598
+                                $userCertificationEntity->getUserName(),
599
+                                $userCertificationEntity->getMobile(),
600
+                                $userCertificationEntity->getUserCard(),
601
+                                $userBillEntity->getTypeShop(),
602
+                                $userBillEntity->getOrderSn(),
603
+                                $userBillEntity->getNumber()
604
+                            );
605
+
606
+                            // 养老金
607
+                            if (is_null($updateUserEntity->getAnnuity())) {
608
+                                $updateUserEntity->setAnnuity($userEntity->getAnnuity());
609
+                            }
610
+                            $updateUserEntity->setAnnuity(bcadd($updateUserEntity->getAnnuity(), $userBillEntity->getNumber(), 2));
611
+
612
+                            // 几笔养老金
613
+                            if (is_null($updateUserEntity->getAnnuityNum())) {
614
+                                $updateUserEntity->setAnnuityNum($userEntity->getAnnuityNum());
615
+                            }
616
+                            $updateUserEntity->setAnnuityNum(bcadd($updateUserEntity->getAnnuityNum(), 1));
617
+
618
+                            // 更新佣金记录
619
+                            $updateUserBillEntity
620
+                                ->setGzc(UserBillEnum::GZC_STATUS['ENTERED']['code'])
621
+                                ->setIsGzc(UserBillEnum::IS_GZC['NOT_STARTED']['code']);
622
+                        }
600
                     }
623
                     }
601
                 }
624
                 }
602
-                if (!empty($updateUserDataList)) {
603
-                    $updateList = [];
604
-                    foreach ($updateUserDataList as $uid => $fields) {
605
-                        $updateList[] = array_merge(['uid' => $uid], $fields);
606
-                    }
607
-                    $userRepository->batchUpdateUserDataByDataList($updateList);
608
-                }
609
 
625
 
610
-                if (!empty($updateUserBillDataList)) {
611
-                    $updateList = [];
612
-                    foreach ($updateUserBillDataList as $billId => $fields) {
613
-                        $updateList[] = array_merge(['bill_id' => $billId], $fields);
614
-                    }
615
-                    $this->batchUpdateUserBillDataByDataList($updateList);
616
-                }
626
+                $updateUserEntityList[$userEntity->getUid()] = $updateUserEntity;
627
+                $updateUserBillEntityList[$userBillEntity->getBillId()] = $updateUserBillEntity;
628
+            }
629
+            if (!empty($updateUserEntityList)) {
630
+                $userRepository->batchUpdateUserDataByDataList(
631
+                    array_map(function (UserEntity $updateUserEntity) {
632
+                        return $updateUserEntity->toUnderlineArray();
633
+                    }, $updateUserEntityList)
634
+                );
635
+            }
636
+
637
+            if (!empty($updateUserBillEntityList)) {
638
+                $this->batchUpdateUserBillDataByDataList(
639
+                    array_map(function (UserBillEntity $updateUserBillEntity) {
640
+                        return $updateUserBillEntity->toUnderlineArray();
641
+                    }, $updateUserBillEntityList)
642
+                );
617
             }
643
             }
618
         }
644
         }
619
 
645
 

文件差異過大導致無法顯示
+ 870 - 325
app/entity/data/user/UserEntity.php