|
|
@@ -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
|
|