Browse Source

Merge branch 'master' into dev

sunxiaobiao 6 months ago
parent
commit
a6b7d5f3cb

+ 26 - 0
app/common/dao/dividend/DividendLogDao.php

@@ -4,6 +4,7 @@ namespace app\common\dao\dividend;
4 4
 
5 5
 use app\common\dao\BaseDao;
6 6
 use app\common\model\dividend\DividendLog;
7
+use app\entity\data\dividend\DividendLogEntity;
7 8
 
8 9
 class DividendLogDao extends BaseDao
9 10
 {
@@ -12,4 +13,29 @@ class DividendLogDao extends BaseDao
12 13
     {
13 14
         return DividendLog::class;
14 15
     }
16
+
17
+    /**
18
+     * @param array $idList
19
+     * @return DividendLogEntity[]
20
+     */
21
+    public function getDividendLogEntityListByIdList(array $idList): array
22
+    {
23
+        $entityList = [];
24
+        try {
25
+            /** @var DividendLog $model */
26
+            $model = $this->getModel();
27
+            $dataRes = $model::getDB()
28
+                ->whereIn('id', $idList)
29
+                ->select()
30
+                ->toArray();
31
+            if (!empty($dataRes)) {
32
+                $entityList = array_map(function ($data) {
33
+                    return DividendLogEntity::newInstance($data);
34
+                }, $dataRes);
35
+            }
36
+        } catch (\Exception $e) {
37
+
38
+        }
39
+        return $entityList;
40
+    }
15 41
 }

+ 25 - 0
app/common/repositories/dividend/DividendLogRepository.php

@@ -20,6 +20,31 @@ class DividendLogRepository extends BaseRepository
20 20
         $this->dao = $dao;
21 21
     }
22 22
 
23
+    /**
24
+     * @param int $id
25
+     * @return DividendLogEntity
26
+     */
27
+    public function getDividendLogEntityById(int $id): DividendLogEntity
28
+    {
29
+        $entityList = $this->getDividendLogEntityListByIdList([$id]);
30
+        $entity = array_shift($entityList);
31
+        if ($entity instanceof DividendLogEntity) {
32
+            return $entity;
33
+        } else {
34
+            /** @var DividendLogEntity */
35
+            return DividendLogEntity::newInstance();
36
+        }
37
+    }
38
+
39
+    /**
40
+     * @param array $idList
41
+     * @return DividendLogEntity[]
42
+     */
43
+    public function getDividendLogEntityListByIdList(array $idList): array
44
+    {
45
+        return $this->dao->getDividendLogEntityListByIdList($idList);
46
+    }
47
+
23 48
     public function create($data)
24 49
     {
25 50
         return $this->dao->create($data);

+ 128 - 0
app/controller/api/store/merchant/TaskPartnerProfits.php

@@ -1013,4 +1013,132 @@ class TaskPartnerProfits
1013 1013
 
1014 1014
         Db::name('user_sign_fugou')->insert($bill);
1015 1015
     }
1016
+
1017
+    /**
1018
+     * 补发分红
1019
+     * @param Request $request
1020
+     * @return mixed
1021
+     */
1022
+    public function resendUnissued(Request $request)
1023
+    {
1024
+        $dividendLogId = $request->param('dividendLogId', 0);
1025
+        if (empty($dividendLogId)) {
1026
+            return app('json')->fail('无效记录ID');
1027
+        }
1028
+        /** @var DividendLogRepository $dividendLogRepository */
1029
+        $dividendLogRepository = app()->make(DividendLogRepository::class);
1030
+        $dividendLogEntity = $dividendLogRepository->getDividendLogEntityById($dividendLogId);
1031
+        if (empty($dividendLogEntity->getId())) {
1032
+            return app('json')->fail('无效记录');
1033
+        }
1034
+
1035
+        $dividendLogEntityByResend = DividendLogEntity::newInstance()
1036
+            ->setType($dividendLogEntity->getType())
1037
+            ->setStartTime($dividendLogEntity->getStartTime())
1038
+            ->setEndTime($dividendLogEntity->getEndTime())
1039
+            ->setPerformance($dividendLogEntity->getPerformance())
1040
+            ->setAbatement($dividendLogEntity->getAbatement())
1041
+            ->setAllocated($dividendLogEntity->getAllocated())
1042
+            ->setRule($dividendLogEntity->getRule())
1043
+            ->setExpected(bcsub($dividendLogEntity->getExpected(), $dividendLogEntity->getArrivalPoint(), 2))
1044
+            ->setFeeWaiverUids([])
1045
+            ->setResult($dividendLogEntity->getResult())
1046
+            ->setIsTest(DividendLogEnum::IS_TEST['No']['code'])
1047
+            ->setReissueId($dividendLogEntity->getId());
1048
+
1049
+        $startTime = $dividendLogEntity->getStartTime();
1050
+        $endTime = $dividendLogEntity->getEndTime();
1051
+        $performance = $dividendLogEntity->getPerformance();
1052
+        $weekRecord = $dividendLogEntity->getAllocated();
1053
+        $feeWaiverUids = $dividendLogEntity->getFeeWaiverUids();
1054
+        $feeWaiverUids = array_column($feeWaiverUids, 'uid');
1055
+        $redEnvelope = 0.00;
1056
+        if (!empty($dividendLogEntity->getAbatement())) {
1057
+            $abatement = json_decode($dividendLogEntity->getAbatement(), true);
1058
+            if (is_array($abatement)) {
1059
+                foreach ($abatement as $item) {
1060
+                    if ($item['code'] == 'redEnvelope') {
1061
+                        $redEnvelope = $item['number'] ?? 0.00;
1062
+                    }
1063
+                }
1064
+            }
1065
+        }
1066
+
1067
+        $salesArr = $dividendLogEntity->getResult();
1068
+        foreach ($salesArr as $key => $value) {
1069
+            if (empty($value)) {
1070
+                continue;
1071
+            }
1072
+            if (count($value['dividerPeoplePv']) <= 0) {
1073
+                continue;
1074
+            }
1075
+            $fsMoneyNums = $value['fs_money_nums'];//中级合伙人级别,可分红的总佣金
1076
+            $maxValueAll = $value['maxValueAll'];//当前级别合伙人下面所有的双联盟业绩
1077
+            $sumOfOthersAll = $value['sumOfOthersAll'];//当前级别合伙人下面所有的小区(业绩小的部分)总业绩
1078
+
1079
+            //每人分红金额
1080
+            foreach ($value['dividerPeoplePv'] as $uid => $item) {
1081
+
1082
+
1083
+                $allAward = bcadd($item['myWeightMoney'], $item['myMixMoney'], 2);
1084
+                //90%给佣金,10给复购金
1085
+                $yj_90 = floor($allAward * 0.9 * 100) / 100;
1086
+                $fg_10 = floor($allAward * 0.1 * 100) / 100;
1087
+
1088
+                if (!in_array($uid, $feeWaiverUids)) {
1089
+                    // $feeWaiverUids = $dividendLogEntity->getFeeWaiverUids() ?: [];
1090
+                    // $feeWaiverUids[] = [
1091
+                    //     'uid' => $uid,
1092
+                    //     'remark' => '此次发放为补发,只发放上次未发放人员数据'
1093
+                    // ];
1094
+                    // $dividendLogEntity->setFeeWaiverUids($feeWaiverUids);
1095
+                    continue;
1096
+                }
1097
+                $dividendLogEntity->setArrivalPoint(bcadd($dividendLogEntity->getArrivalPoint() ?: '0.00', $allAward, 2));
1098
+                $arrivalInfo = $dividendLogEntity->getArrivalInfo() ?: [];
1099
+                $arrivalInfo[$uid]['allAward'] = $allAward;
1100
+                $arrivalInfo[$uid]['orderInfo'] = [];
1101
+                $dividendLogEntity->setArrivalInfo($arrivalInfo);
1102
+
1103
+
1104
+                # code...
1105
+                Db::name("user")->where("uid", $uid)->inc("total_amount_old", $yj_90)->save();
1106
+                Db::name("user")->where("uid", $uid)->inc("amount_old", $yj_90)->save();//不用冻结金额和提现额度来限制佣金发放
1107
+                Db::name("user")->where("uid", $uid)->inc("brokerage_price", $yj_90)->save();
1108
+                Db::name("user")->where("uid", $uid)->inc("fugou", $fg_10)->save();
1109
+
1110
+                $this->change_user_log($uid, 'amount_old', 1, $yj_90, "member_award", "星级分红入账" . "-" . $value['title']);//释放佣金
1111
+
1112
+                // 入账记录
1113
+                $week_data = [];
1114
+                $week_data['user_id'] = $uid;
1115
+                $week_data['user_group'] = $value['user_group'];
1116
+                $week_data['start_time'] = $startTime;
1117
+                $week_data['end_time'] = $endTime;
1118
+                $week_data['performance'] = $performance;
1119
+                $week_data['red_envelope'] = $redEnvelope;
1120
+                $week_data['reality_performance'] = $weekRecord;
1121
+                $week_data['dividend_ratio'] = $value['profit_rate'];
1122
+                $week_data['dividend'] = $fsMoneyNums;
1123
+                $week_data['performance_part'] = $item['sumOfOthers'] ?? '0.00';
1124
+                $week_data['performance_part_all'] = $sumOfOthersAll;
1125
+                $week_data['part_money'] = $item['myMixMoney'];
1126
+                $week_data['performance_total'] = bcadd($item['maxValue'] ?? '0.00', $item['sumOfOthers'] ?? '0.00', 2);
1127
+                $week_data['performance_total_all'] = ($maxValueAll + $sumOfOthersAll);
1128
+                $week_data['total_money'] = $item['myWeightMoney'];
1129
+                $week_data['brokerage'] = $yj_90;
1130
+                $week_data['fugou'] = $fg_10;
1131
+                $week_data['radio'] = 2;
1132
+                $week_data['create_time'] = date('Y-m-d H:i:s');
1133
+                Db::name("partner_profit_records")->insert($week_data);
1134
+
1135
+                $this->bill_user_log111111($uid, "合伙人分佣", $yj_90, "合伙人分佣明细入账", 11);//联创分佣明细2.0系统
1136
+                $this->fugou_user_log($uid, $fg_10, 16, 1, 1);//复购金明细入账
1137
+            }
1138
+        }
1139
+        /** @var DividendLogRepository $dividendLogRepository */
1140
+        $dividendLogRepository = app()->make(DividendLogRepository::class);
1141
+        $dividendLogRepository->createByEntity($dividendLogEntityByResend);
1142
+        return app('json')->success($salesArr);
1143
+    }
1016 1144
 }

+ 19 - 0
app/entity/data/dividend/DividendLogEntity.php

@@ -22,6 +22,7 @@ class DividendLogEntity extends DataEntity
22 22
     public $isTest = null;  // 是否为测试数据
23 23
     public $remark = null;  // 备注
24 24
     public $createTime = null;  // 创建时间
25
+    public $reissueId = null;  // 补发ID
25 26
 
26 27
     /**
27 28
      * @return mixed
@@ -322,4 +323,22 @@ class DividendLogEntity extends DataEntity
322 323
         $this->createTime = $createTime;
323 324
         return $this;
324 325
     }
326
+
327
+    /**
328
+     * @return mixed
329
+     */
330
+    public function getReissueId()
331
+    {
332
+        return $this->reissueId;
333
+    }
334
+
335
+    /**
336
+     * @param mixed $reissueId
337
+     * @return DividendLogEntity
338
+     */
339
+    public function setReissueId($reissueId): DividendLogEntity
340
+    {
341
+        $this->reissueId = $reissueId;
342
+        return $this;
343
+    }
325 344
 }

+ 1 - 0
route/api.php

@@ -1336,6 +1336,7 @@ Route::group('api/', function () {
1336 1336
     ->middleware(\app\common\middleware\CheckSiteOpenMiddleware::class);
1337 1337
 Route::get('/test/assignment', 'api.store.merchant.Taskorderguquan/assignment');
1338 1338
 Route::get('test_hehuoren', 'api.store.merchant.TaskPartnerProfits/partnerProfits');
1339
+Route::get('test_resendUnissued', 'api.store.merchant.TaskPartnerProfits/resendUnissued');
1339 1340
 Route::get('test_hehuoren_zero', 'api.store.merchant.TaskZeroLinePartnerProfits/partnerProfitsByZeroLine');
1340 1341
 Route::get('test_guquan', 'api.store.merchant.Taskorderguquan/lst6');
1341 1342
 Route::get('test_lianchuang', 'api.store.merchant.Taskorderlianc/lst2');