|
|
@@ -12,14 +12,19 @@ namespace app\common\repositories\user;
|
|
12
|
12
|
|
|
13
|
13
|
|
|
14
|
14
|
use app\common\dao\BaseDao;
|
|
|
15
|
+use app\common\dao\shared\SharedProsperityBalanceLogDao;
|
|
15
|
16
|
use app\common\dao\user\UserBillDao;
|
|
16
|
17
|
use app\common\enum\CommonEnum;
|
|
|
18
|
+use app\common\enum\shared\SharedProsperityBalanceLogEnum;
|
|
17
|
19
|
use app\common\enum\user\UserBillEnum;
|
|
18
|
20
|
use app\common\enum\user\UserCertificationEnum;
|
|
19
|
21
|
use app\common\model\user\UserBill;
|
|
20
|
22
|
use app\common\repositories\BaseRepository;
|
|
21
|
23
|
use app\common\repositories\gzc\GzcLogRepository;
|
|
|
24
|
+use app\common\repositories\shared\SharedProsperityUserRepository;
|
|
22
|
25
|
use app\common\repositories\store\order\StoreOrderRepository;
|
|
|
26
|
+use app\entity\data\shared\SharedProsperityBalanceLogEntity;
|
|
|
27
|
+use app\entity\data\shared\SharedProsperityUserEntity;
|
|
23
|
28
|
use app\entity\data\user\UserBillEntity;
|
|
24
|
29
|
use app\entity\data\user\UserCertificationEntity;
|
|
25
|
30
|
use app\entity\data\user\UserEntity;
|
|
|
@@ -544,6 +549,15 @@ class UserBillRepository extends BaseRepository
|
|
544
|
549
|
if (!empty($userIdList)) {
|
|
545
|
550
|
$userEntityMapByUid = $userRepository->getUserEntityMapByUidList($userIdList);
|
|
546
|
551
|
}
|
|
|
552
|
+
|
|
|
553
|
+ // 获取所有用户是否有 共富身份
|
|
|
554
|
+ /** @var SharedProsperityUserRepository $sharedProsperityUserRepository */
|
|
|
555
|
+ $sharedProsperityUserRepository = app()->make(SharedProsperityUserRepository::class);
|
|
|
556
|
+ $sharedProsperityUserEntityMapUserId = [];
|
|
|
557
|
+ if (!empty($sharedProsperityUserIdList)) {
|
|
|
558
|
+ $sharedProsperityUserEntityMapUserId = $sharedProsperityUserRepository->getSharedProsperityUserEntityMapByUserIdList($userIdList);
|
|
|
559
|
+ }
|
|
|
560
|
+
|
|
547
|
561
|
// 获取实名认证 映射信息 (养老金记录 结算时 需要确定 所属人是否已经实名认证 如果实名认证了 需要推到养老金公证处明细表里 并修改养老金记录的推送状态)
|
|
548
|
562
|
/** @var UserCertificationEntity[] $userCertificationEntityMapByUid */
|
|
549
|
563
|
$userCertificationEntityMapByUid = [];
|
|
|
@@ -555,7 +569,13 @@ class UserBillRepository extends BaseRepository
|
|
555
|
569
|
/** @var GzcLogRepository $gzcLogRepository */
|
|
556
|
570
|
$gzcLogRepository = app()->make(GzcLogRepository::class);
|
|
557
|
571
|
|
|
|
572
|
+ // 需要更新的 用户信息-基础信息- 会员身份信息
|
|
558
|
573
|
$updateUserEntityList = [];
|
|
|
574
|
+ // 需要更新的 共富体系身份信息
|
|
|
575
|
+ $updateSharedProsperityUserEntityList = [];
|
|
|
576
|
+ // 共富区 佣金收入支出记录
|
|
|
577
|
+ /** @var SharedProsperityBalanceLogEntity[] $insertSharedProsperityBalanceLogEntityList */
|
|
|
578
|
+ $insertSharedProsperityBalanceLogEntityList = [];
|
|
559
|
579
|
$updateUserBillEntityList = [];
|
|
560
|
580
|
foreach ($userBillEntityList as $userBillEntity) {
|
|
561
|
581
|
if (empty($userBillEntity->getBillId()) || empty($userBillEntity->getUid())) {
|
|
|
@@ -566,15 +586,16 @@ class UserBillRepository extends BaseRepository
|
|
566
|
586
|
throw new ValidateException("该账单记录已更新,请勿重复操作({$userBillEntity->getBillId()})");
|
|
567
|
587
|
}
|
|
568
|
588
|
|
|
|
589
|
+ // 判断用户是否存在
|
|
569
|
590
|
$userEntity = $userEntityMapByUid[$userBillEntity->getUid()];
|
|
570
|
591
|
if (empty($userEntity) || empty($userEntity->getUid())) {
|
|
571
|
592
|
throw new ValidateException("未查询到用户信息({$userBillEntity->getBillId()})");
|
|
572
|
593
|
}
|
|
573
|
594
|
|
|
574
|
|
- // 更新 用户信息
|
|
575
|
|
- /** @var UserEntity $updateUserEntity */
|
|
576
|
|
- $updateUserEntity = $updateUserEntityList[$userEntity->getUid()] ?? UserEntity::newInstance();
|
|
577
|
|
- $updateUserEntity->setUid($userEntity->getUid());
|
|
|
595
|
+ // 要更新的用户信息
|
|
|
596
|
+ $updateUserEntity = null;
|
|
|
597
|
+ // 要更新的 共富用户信息
|
|
|
598
|
+ $updateSharedProsperityUserEntity = null;
|
|
578
|
599
|
// 更新 账单 记录
|
|
579
|
600
|
/** @var UserBillEntity $updateUserBillEntity */
|
|
580
|
601
|
$updateUserBillEntity = $updateUserBillEntityList[$userBillEntity->getBillId()] ?? UserBillEntity::newInstance();
|
|
|
@@ -583,22 +604,97 @@ class UserBillRepository extends BaseRepository
|
|
583
|
604
|
->setBillId($userBillEntity->getBillId())
|
|
584
|
605
|
->setStatus(UserBillEnum::STATUS['VALID']['code'])
|
|
585
|
606
|
->setTakeTime(time());
|
|
|
607
|
+ // 直推佣金 锁客佣金 平台奖励佣金 分享佣金
|
|
|
608
|
+ if (in_array($userBillEntity->getCommissionType(), [
|
|
|
609
|
+ UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code'],
|
|
|
610
|
+ UserBillEnum::COMMISSION_TYPE['LOCKED_CUSTOMER']['code'],
|
|
|
611
|
+ UserBillEnum::COMMISSION_TYPE['PLATFORM_REWARD']['code'],
|
|
|
612
|
+ UserBillEnum::COMMISSION_TYPE['SHARE_EARNINGS']['code']
|
|
|
613
|
+ ])) {
|
|
|
614
|
+ // 首先判断 是否有共富会员身份
|
|
|
615
|
+ $sharedProsperityUserEntity = $sharedProsperityUserEntityMapUserId[$userBillEntity->getUid()] ?? null;
|
|
|
616
|
+ // 如果拥有共富身份 并且非 会员专区 专属奖励 则发放到 共富身份中
|
|
|
617
|
+ if (
|
|
|
618
|
+ $userBillEntity->getMerId() != CommonEnum::DESIGN_MERCHANT_ID['MemberZone']['code']
|
|
|
619
|
+ && !empty($sharedProsperityUserEntity)
|
|
|
620
|
+ && $sharedProsperityUserEntity instanceof SharedProsperityUserEntity
|
|
|
621
|
+ && !empty($sharedProsperityUserEntity->getId())
|
|
|
622
|
+ ) {
|
|
|
623
|
+ // 更新 共富用户信息
|
|
|
624
|
+ /** @var SharedProsperityUserEntity $updateSharedProsperityUserEntity */
|
|
|
625
|
+ $updateSharedProsperityUserEntity = $updateSharedProsperityUserEntityList[$userBillEntity->getUid()] ?? SharedProsperityUserEntity::newInstance();
|
|
|
626
|
+ $updateSharedProsperityUserEntity
|
|
|
627
|
+ ->setId($sharedProsperityUserEntity->getId())
|
|
|
628
|
+ ->setUserId($sharedProsperityUserEntity->getUserId());
|
|
|
629
|
+ // 佣金
|
|
|
630
|
+ if (is_null($updateSharedProsperityUserEntity->getBalance())) {
|
|
|
631
|
+ $updateSharedProsperityUserEntity->setBalance($sharedProsperityUserEntity->getBalance());
|
|
|
632
|
+ }
|
|
586
|
633
|
|
|
587
|
|
- if ($userBillEntity->getCommissionType() == UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code']) {
|
|
588
|
|
- // 直推奖
|
|
589
|
|
- if (is_null($updateUserEntity->getBrokeragePrice())) {
|
|
590
|
|
- $updateUserEntity->setBrokeragePrice($userEntity->getBrokeragePrice());
|
|
591
|
|
- }
|
|
592
|
|
- // 更新用户 佣金 信息
|
|
593
|
|
- if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
|
|
594
|
|
- if ($updateUserEntity->getBrokeragePrice() < $userBillEntity->getNumber()) {
|
|
595
|
|
- throw new ValidateException('用户佣金不足');
|
|
|
634
|
+ switch ($userBillEntity->getCommissionType()) {
|
|
|
635
|
+ case UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code']:
|
|
|
636
|
+ $sharedProsperityBalanceLogType = SharedProsperityBalanceLogEnum::TYPE['DIRECT_REFERRAL']['code'];
|
|
|
637
|
+ break;
|
|
|
638
|
+
|
|
|
639
|
+ case UserBillEnum::COMMISSION_TYPE['LOCKED_CUSTOMER']['code']:
|
|
|
640
|
+ $sharedProsperityBalanceLogType = SharedProsperityBalanceLogEnum::TYPE['LOCKED_CUSTOMER']['code'];
|
|
|
641
|
+ break;
|
|
|
642
|
+
|
|
|
643
|
+ case UserBillEnum::COMMISSION_TYPE['PLATFORM_REWARD']['code']:
|
|
|
644
|
+ $sharedProsperityBalanceLogType = SharedProsperityBalanceLogEnum::TYPE['PLATFORM_REWARD']['code'];
|
|
|
645
|
+ break;
|
|
|
646
|
+
|
|
|
647
|
+ case UserBillEnum::COMMISSION_TYPE['SHARE_EARNINGS']['code']:
|
|
|
648
|
+ $sharedProsperityBalanceLogType = SharedProsperityBalanceLogEnum::TYPE['SHARE_EARNINGS']['code'];
|
|
|
649
|
+ break;
|
|
|
650
|
+
|
|
|
651
|
+ default:
|
|
|
652
|
+ $sharedProsperityBalanceLogType = null;
|
|
|
653
|
+ break;
|
|
|
654
|
+ }
|
|
|
655
|
+ $sharedProsperityBalanceLogEntity = SharedProsperityBalanceLogEntity::newInstance()
|
|
|
656
|
+ ->setUserId($sharedProsperityUserEntity->getUserId())
|
|
|
657
|
+ ->setType($sharedProsperityBalanceLogType)
|
|
|
658
|
+ ->setLevel($sharedProsperityUserEntity->getPartnerLevel())
|
|
|
659
|
+ ->setNumber($userBillEntity->getNumber())
|
|
|
660
|
+ ->setStatus(SharedProsperityBalanceLogEnum::STATUS['VALID']['code'])
|
|
|
661
|
+ ;
|
|
|
662
|
+
|
|
|
663
|
+ // 更新用户 佣金 信息
|
|
|
664
|
+ if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
|
|
|
665
|
+ if ($updateSharedProsperityUserEntity->getBalance() < $userBillEntity->getNumber()) {
|
|
|
666
|
+ throw new ValidateException('用户佣金不足');
|
|
|
667
|
+ }
|
|
|
668
|
+ $updateSharedProsperityUserEntity->setBalance(bcsub($updateSharedProsperityUserEntity->getBalance(), $userBillEntity->getNumber(), 2));
|
|
|
669
|
+
|
|
|
670
|
+ $sharedProsperityBalanceLogEntity->setPm(SharedProsperityBalanceLogEnum::PM['EXPEND']['code']);
|
|
|
671
|
+ } else {
|
|
|
672
|
+ $updateSharedProsperityUserEntity->setBalance(bcadd($updateSharedProsperityUserEntity->getBalance(), $userBillEntity->getNumber(), 2));
|
|
|
673
|
+
|
|
|
674
|
+ $sharedProsperityBalanceLogEntity->setPm(SharedProsperityBalanceLogEnum::PM['INCOME']['code']);
|
|
596
|
675
|
}
|
|
597
|
|
- $updateUserEntity->setBrokeragePrice(bcsub($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
|
|
|
676
|
+ // 插入 共富区 佣金记录 变动表
|
|
|
677
|
+ $insertSharedProsperityBalanceLogEntityList[] = $sharedProsperityBalanceLogEntity
|
|
|
678
|
+ ->setAfter($updateSharedProsperityUserEntity->getBalance());
|
|
598
|
679
|
} else {
|
|
599
|
|
- $updateUserEntity->setBrokeragePrice(bcadd($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
|
|
|
680
|
+ // 更新 用户信息
|
|
|
681
|
+ /** @var UserEntity $updateUserEntity */
|
|
|
682
|
+ $updateUserEntity = $updateUserEntityList[$userEntity->getUid()] ?? UserEntity::newInstance();
|
|
|
683
|
+ $updateUserEntity->setUid($userEntity->getUid());
|
|
|
684
|
+ // 直推奖
|
|
|
685
|
+ if (is_null($updateUserEntity->getBrokeragePrice())) {
|
|
|
686
|
+ $updateUserEntity->setBrokeragePrice($userEntity->getBrokeragePrice());
|
|
|
687
|
+ }
|
|
|
688
|
+ // 更新用户 佣金 信息
|
|
|
689
|
+ if ($userBillEntity->getPm() == UserBillEnum::PM['EXPEND']['code']) {
|
|
|
690
|
+ if ($updateUserEntity->getBrokeragePrice() < $userBillEntity->getNumber()) {
|
|
|
691
|
+ throw new ValidateException('用户佣金不足');
|
|
|
692
|
+ }
|
|
|
693
|
+ $updateUserEntity->setBrokeragePrice(bcsub($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
|
|
|
694
|
+ } else {
|
|
|
695
|
+ $updateUserEntity->setBrokeragePrice(bcadd($updateUserEntity->getBrokeragePrice(), $userBillEntity->getNumber(), 2));
|
|
|
696
|
+ }
|
|
600
|
697
|
}
|
|
601
|
|
-
|
|
602
|
698
|
} else if ($userBillEntity->getCommissionType() == UserBillEnum::COMMISSION_TYPE['PENSION']['code']) {
|
|
603
|
699
|
|
|
604
|
700
|
if ($userBillEntity->getGzc() == UserBillEnum::GZC_STATUS['NOT_ENTERED']['code']) {
|
|
|
@@ -614,7 +710,10 @@ class UserBillRepository extends BaseRepository
|
|
614
|
710
|
$userBillEntity->getLinkId(),
|
|
615
|
711
|
$userBillEntity->getNumber()
|
|
616
|
712
|
);
|
|
617
|
|
-
|
|
|
713
|
+ // 更新 用户信息
|
|
|
714
|
+ /** @var UserEntity $updateUserEntity */
|
|
|
715
|
+ $updateUserEntity = $updateUserEntityList[$userEntity->getUid()] ?? UserEntity::newInstance();
|
|
|
716
|
+ $updateUserEntity->setUid($userEntity->getUid());
|
|
618
|
717
|
// 养老金
|
|
619
|
718
|
if (is_null($updateUserEntity->getAnnuity())) {
|
|
620
|
719
|
$updateUserEntity->setAnnuity($userEntity->getAnnuity());
|
|
|
@@ -635,7 +734,12 @@ class UserBillRepository extends BaseRepository
|
|
635
|
734
|
}
|
|
636
|
735
|
}
|
|
637
|
736
|
|
|
638
|
|
- $updateUserEntityList[$userEntity->getUid()] = $updateUserEntity;
|
|
|
737
|
+ if (!empty($updateUserEntity)) {
|
|
|
738
|
+ $updateUserEntityList[$userEntity->getUid()] = $updateUserEntity;
|
|
|
739
|
+ }
|
|
|
740
|
+ if (!empty($updateSharedProsperityUserEntity)) {
|
|
|
741
|
+ $updateSharedProsperityUserEntityList[$updateSharedProsperityUserEntity->getUserId()] = $updateSharedProsperityUserEntity;
|
|
|
742
|
+ }
|
|
639
|
743
|
$updateUserBillEntityList[$userBillEntity->getBillId()] = $updateUserBillEntity;
|
|
640
|
744
|
}
|
|
641
|
745
|
if (!empty($updateUserEntityList)) {
|
|
|
@@ -646,6 +750,21 @@ class UserBillRepository extends BaseRepository
|
|
646
|
750
|
);
|
|
647
|
751
|
}
|
|
648
|
752
|
|
|
|
753
|
+ if (!empty($updateSharedProsperityUserEntityList)) {
|
|
|
754
|
+ $sharedProsperityUserRepository->batchUpdateSharedProsperityUserDataByDataList(
|
|
|
755
|
+ array_map(function (SharedProsperityUserEntity $updateSharedProsperityUserEntity) {
|
|
|
756
|
+ return $updateSharedProsperityUserEntity->toUnderlineArray();
|
|
|
757
|
+ }, $updateSharedProsperityUserEntityList)
|
|
|
758
|
+ );
|
|
|
759
|
+ }
|
|
|
760
|
+ if (!empty($insertSharedProsperityBalanceLogEntityList)) {
|
|
|
761
|
+ /** @var SharedProsperityBalanceLogDao $balanceDao */
|
|
|
762
|
+ $balanceDao = app()->make(SharedProsperityBalanceLogDao::class);
|
|
|
763
|
+ $balanceDao->insertAll(array_map(function ($insertSharedProsperityBalanceLogEntity) {
|
|
|
764
|
+ return $insertSharedProsperityBalanceLogEntity->toUnderlineArray();
|
|
|
765
|
+ }, $insertSharedProsperityBalanceLogEntityList));
|
|
|
766
|
+ }
|
|
|
767
|
+
|
|
649
|
768
|
if (!empty($updateUserBillEntityList)) {
|
|
650
|
769
|
$this->batchUpdateUserBillDataByDataList(
|
|
651
|
770
|
array_map(function (UserBillEntity $updateUserBillEntity) {
|