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

feat(shared-prosperity): 添加最大分享奖励比例配置功能

- 在SharedProsperityRecommendConfigDao中新增getSharedProsperityRecommendConfigEntityByMaxShareRatio方法
- 在SharedProsperityRecommendConfigRepository中新增getSharedProsperityRecommendConfigEntityByMaxShareRatio方法
- 在StoreOrderRepository中使用新的分享奖励比例配置计算PV值
- 修改共富区PV计算逻辑,同时考虑直推奖和分享奖的比例
- 更新注释说明以反映新的配置项和计算方式
shichen пре 2 месеци
родитељ
комит
1a925d575c

+ 26 - 0
app/common/dao/shared/SharedProsperityRecommendConfigDao.php

@@ -105,4 +105,30 @@ class SharedProsperityRecommendConfigDao extends BaseDao
105 105
         }
106 106
         return $entity;
107 107
     }
108
+
109
+    /**
110
+     * @return SharedProsperityRecommendConfigEntity
111
+     * @author 史晨
112
+     * @date 2026/5/11 09:54
113
+     * 获取 配置实体 根据 最大的 分享奖励比例
114
+     */
115
+    public function getSharedProsperityRecommendConfigEntityByMaxShareRatio(): SharedProsperityRecommendConfigEntity
116
+    {
117
+        $entity = SharedProsperityRecommendConfigEntity::newInstance();
118
+        try {
119
+            /** @var SharedProsperityRecommendConfig $model */
120
+            $model = $this->getModel();
121
+            $dataRes = $model::getDB()
122
+                ->order('share_ratio', 'desc')
123
+                ->limit(1)
124
+                ->select()
125
+                ->toArray();
126
+            if (!empty($dataRes)) {
127
+                $entity = SharedProsperityRecommendConfigEntity::newInstance($dataRes[0]);
128
+            }
129
+        } catch (\Exception $e) {
130
+
131
+        }
132
+        return $entity;
133
+    }
108 134
 }

+ 11 - 0
app/common/repositories/shared/SharedProsperityRecommendConfigRepository.php

@@ -112,4 +112,15 @@ class SharedProsperityRecommendConfigRepository extends BaseRepository
112 112
     {
113 113
         return $this->dao->getSharedProsperityRecommendConfigEntityByMaxRewardRatio();
114 114
     }
115
+
116
+    /**
117
+     * @return SharedProsperityRecommendConfigEntity
118
+     * @author 史晨
119
+     * @date 2026/5/11 09:54
120
+     * 获取最大的分享奖励占比
121
+     */
122
+    public function getSharedProsperityRecommendConfigEntityByMaxShareRatio(): SharedProsperityRecommendConfigEntity
123
+    {
124
+        return $this->dao->getSharedProsperityRecommendConfigEntityByMaxShareRatio();
125
+    }
115 126
 }

+ 5 - 1
app/common/repositories/store/order/StoreOrderRepository.php

@@ -11745,9 +11745,13 @@ class StoreOrderRepository extends BaseRepository
11745 11745
             // 发放共富区PV
11746 11746
             /** @var SharedProsperityRecommendConfigRepository $sharedProsperityRecommendConfigRepository */
11747 11747
             $sharedProsperityRecommendConfigRepository = app()->make(SharedProsperityRecommendConfigRepository::class);
11748
+            // 共富配置--获取最大的直推奖比例
11748 11749
             $sharedProsperityRecommendConfigEntityByMaxRewardRatio = $sharedProsperityRecommendConfigRepository->getSharedProsperityRecommendConfigEntityByMaxRewardRatio();
11750
+            // 共富配置--获取最大的分享奖比例
11751
+            $sharedProsperityRecommendConfigEntityByMaxShareRewardRatio = $sharedProsperityRecommendConfigRepository->getSharedProsperityRecommendConfigEntityByMaxShareRatio();
11749 11752
             // 利润 减去 顶格的直推奖,剩下的是PV值
11750
-            $pvProportion = bcsub('1', bcdiv($sharedProsperityRecommendConfigEntityByMaxRewardRatio->getRewardRatio(), '100', 4), 2);
11753
+            $sharPveRate = bcadd($sharedProsperityRecommendConfigEntityByMaxRewardRatio->getRewardRatio(),$sharedProsperityRecommendConfigEntityByMaxShareRewardRatio->getShareRatio(), CommonEnum::DECIMAL_PLACES_OF_THE_AMOUNT);
11754
+            $pvProportion = bcsub('1', bcdiv($sharPveRate, '100', 4), 2);
11751 11755
 
11752 11756
             $pv = bcmul($storeOrderEntity->getConPri(), $pvProportion, CommonEnum::DECIMAL_PLACES_OF_THE_AMOUNT);
11753 11757
             /** @var SharedProsperityRewardRecordRepository $sharedProsperityRewardRecordRepository */