Преглед изворни кода

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

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 509
     public function executeByIdList(array $idList): array
510 510
     {
511 511
         $userBillEntityList = $this->getUserBillEntityListByBillIdList($idList);
512
-        // 删除已经生效的 记录
512
+        // 忽略 已经生效的 记录
513 513
         $userBillEntityList = array_filter($userBillEntityList, function($entity) {
514 514
             return $entity->getStatus() != UserBillEnum::STATUS['VALID']['code'];
515 515
         });
516 516
 
517 517
         if (!empty($userBillEntityList)) {
518 518
             $pensionUidList = [];
519
+            // 获取所有记录的 归属人
519 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 523
                     $pensionUidList[] = $userBillEntity->getUid();
522 524
                 }
523 525
                 return $userBillEntity->getUid();
@@ -531,7 +533,7 @@ class UserBillRepository extends BaseRepository
531 533
             if (!empty($userIdList)) {
532 534
                 $userEntityMapByUid = $userRepository->getUserEntityMapByUidList($userIdList);
533 535
             }
534
-            // 获取实名认证 映射信息
536
+            // 获取实名认证 映射信息 (养老金记录 结算时 需要确定 所属人是否已经实名认证 如果实名认证了 需要推到养老金公证处明细表里 并修改养老金记录的推送状态)
535 537
             /** @var UserCertificationEntity[] $userCertificationEntityMapByUid */
536 538
             $userCertificationEntityMapByUid = [];
537 539
             if (!empty($pensionUidList)) {
@@ -542,8 +544,8 @@ class UserBillRepository extends BaseRepository
542 544
             /** @var GzcLogRepository $gzcLogRepository */
543 545
             $gzcLogRepository = app()->make(GzcLogRepository::class);
544 546
 
545
-            $updateUserDataList = [];
546
-            $updateUserBillDataList = [];
547
+            $updateUserEntityList = [];
548
+            $updateUserBillEntityList = [];
547 549
             foreach ($userBillEntityList as $userBillEntity) {
548 550
                 if (empty($userBillEntity->getBillId()) || empty($userBillEntity->getUid())) {
549 551
                     // throw new ValidateException('无效的账单记录');
@@ -557,63 +559,87 @@ class UserBillRepository extends BaseRepository
557 559
                 if (empty($userEntity) || empty($userEntity->getUid())) {
558 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 581
                     if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
567
-                        if ($updateUserDataList[$userBillEntity->getUid()]['brokerage_price'] < $userBillEntity->getNumber()) {
582
+                        if ($updateUserEntity->getBrokeragePrice() < $userBillEntity->getNumber()) {
568 583
                             throw new ValidateException('用户佣金不足');
569 584
                         }
570
-                        $updateUserDataList[$userBillEntity->getUid()]['brokerage_price'] -= $userBillEntity->getNumber();
585
+                        $updateUserEntity->setBrokeragePrice(bcsub($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
571 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