Przeglądaj źródła

订单结算-共富区-结算共富奖励,消费者是用户身份购买共富区总金额>=升级限制金额自动升一星合伙人

sunxbiao 5 miesięcy temu
rodzic
commit
a7e0451979

+ 26 - 0
app/common/dao/store/order/StoreOrderDao.php

@@ -664,6 +664,32 @@ class StoreOrderDao extends BaseDao
664 664
     }
665 665
 
666 666
     /**
667
+     * @param int $uid
668
+     * @param int $merId
669
+     * @return float
670
+     */
671
+    public function getSumTotalPriceByUidAndMerId(int $uid, int $merId = 0): float
672
+    {
673
+        $res = 0.00;
674
+        try {
675
+            /** @var StoreOrder $model */
676
+            $model = $this->getModel();
677
+            $res = $model::getDB()
678
+                ->where('uid', '=', $uid)
679
+                ->when($merId != 0, function ($query) use ($merId) {
680
+                    $query->where('mer_id', '=', $merId);
681
+                })
682
+                ->where('is_settlement', '=', StoreOrderEnum::IS_SETTLEMENT['YES']['code'])
683
+                ->where('is_del', '=', StoreOrderEnum::IS_DEL['No']['code'])
684
+                ->where('is_system_del', '=', StoreOrderEnum::IS_SYSTEM_DEL['No']['code'])
685
+                ->sum("total_price");
686
+        } catch (\Exception $e) {
687
+
688
+        }
689
+        return $res;
690
+    }
691
+
692
+    /**
667 693
      * @param array $groupOrderIdList
668 694
      * @return CommonEntity[]
669 695
      */

+ 4 - 0
app/common/enum/store/StoreOrderEnum.php

@@ -6,6 +6,10 @@ use app\common\enum\CommonEnum;
6 6
 
7 7
 class StoreOrderEnum extends CommonEnum
8 8
 {
9
+    const IS_DEL = parent::IS_DEL;
10
+
11
+    const IS_SYSTEM_DEL = parent::IS_DEL;
12
+
9 13
     // 配送方式
10 14
     const DISTRIBUTION_MODE = [
11 15
         'ExpressDelivery' => ['code' => 1, 'name' => '快递'],

+ 20 - 3
app/common/repositories/shared/SharedProsperityRewardRecordRepository.php

@@ -4,9 +4,11 @@ namespace app\common\repositories\shared;
4 4
 
5 5
 use app\common\dao\shared\SharedProsperityRewardRecordDao;
6 6
 use app\common\dao\shared\SharedProsperityUserDao;
7
+use app\common\enum\CommonEnum;
7 8
 use app\common\enum\shared\SharedProsperityRewardRecordEnum;
8 9
 use app\common\repositories\BaseRepository;
9 10
 use app\common\repositories\store\order\StoreOrderRepository;
11
+use app\entity\data\shared\SharedProsperityRecommendConfigEntity;
10 12
 use app\entity\data\shared\SharedProsperityRewardRecordEntity;
11 13
 use app\entity\data\shared\SharedProsperityUserEntity;
12 14
 use think\db\exception\DbException;
@@ -202,6 +204,7 @@ class SharedProsperityRewardRecordRepository extends BaseRepository
202 204
                 $updateSharedProsperityUserEntity = $updateSharedProsperityUserEntityList[$sharedProsperityUserEntity->getUserId()] ?? SharedProsperityUserEntity::newInstance();
203 205
                 $updateSharedProsperityUserEntity
204 206
                     ->setId($sharedProsperityUserEntity->getId())
207
+                    ->setUserId($sharedProsperityUserEntity->getUserId())
205 208
                     ->setPartnerLevel($sharedProsperityUserEntity->getPartnerLevel());
206 209
 
207 210
                 // 更新 账单 记录
@@ -258,12 +261,26 @@ class SharedProsperityRewardRecordRepository extends BaseRepository
258 261
                     }
259 262
 
260 263
                     // 暂时新增加逻辑 用户购买 298 商品后,自动升级为1星合伙人,目前只有消费者 能够获得PV值,在奖励结算时,判断订单金额 是否大于 298 并且 用户身份为 用户,则升级为一星合伙人
264
+                    // 逻辑修改,如果用户的身份 是普通用户,则统计他在共富区内 所有消费的金额,是否超 每天自增的 升级限制金额,如果超过则升级为1星合伙人
261 265
                     if ($updateSharedProsperityUserEntity->getPartnerLevel() == 0 && $sharedProsperityRewardRecordEntity->getTypeShop() == SharedProsperityRewardRecordEnum::TYPE_SHOP['Platform']['code']) {
262 266
                         /** @var StoreOrderRepository $storeOrderRepository */
263 267
                         $storeOrderRepository = app()->make(StoreOrderRepository::class);
264
-                        $storeOrderEntity = $storeOrderRepository->getStoreOrderEntityByOrderSn($sharedProsperityRewardRecordEntity->getOrderSn());
265
-                        if ($storeOrderEntity->getTotalPrice() >= 298) {
266
-                            $updateSharedProsperityUserEntity->setPartnerLevel(1);
268
+                        $sumTotalPrice = $storeOrderRepository->getSumTotalPriceByUidAndMerId($updateSharedProsperityUserEntity->getUserId(), CommonEnum::DESIGN_MERCHANT_ID['SharedProsperity']['code']);
269
+                        if (!empty($sumTotalPrice)) {
270
+                            /** @var SharedProsperityRecommendConfigRepository $sharedProsperityRecommendConfigRepository */
271
+                            $sharedProsperityRecommendConfigRepository = app()->make(SharedProsperityRecommendConfigRepository::class);
272
+                            $sharedProsperityRecommendConfigEntityList = $sharedProsperityRecommendConfigRepository->getList();
273
+                            usort($sharedProsperityRecommendConfigEntityList, function (SharedProsperityRecommendConfigEntity $a, SharedProsperityRecommendConfigEntity $b) {
274
+                                return $a->getLevel() <=> $b->getLevel();  // 从小到大排序
275
+                            });
276
+                            foreach ($sharedProsperityRecommendConfigEntityList as $sharedProsperityRecommendConfigEntity) {
277
+                                if (is_null($sharedProsperityRecommendConfigEntity->getConsume())) {
278
+                                    continue;
279
+                                }
280
+                                if ($sumTotalPrice >= $sharedProsperityRecommendConfigEntity->getConsume()) {
281
+                                    $updateSharedProsperityUserEntity->setPartnerLevel($sharedProsperityRecommendConfigEntity->getLevel());
282
+                                }
283
+                            }
267 284
                         }
268 285
                     }
269 286
                 }

+ 10 - 0
app/common/repositories/store/order/StoreOrderRepository.php

@@ -10830,6 +10830,16 @@ class StoreOrderRepository extends BaseRepository
10830 10830
         return $this->dao->getStoreOrderEntityListByOrderSnList($orderSnList);
10831 10831
     }
10832 10832
 
10833
+    /**
10834
+     * @param int $uid
10835
+     * @param int $merId
10836
+     * @return float
10837
+     */
10838
+    public function getSumTotalPriceByUidAndMerId(int $uid, int $merId): float
10839
+    {
10840
+        return $this->dao->getSumTotalPriceByUidAndMerId($uid, $merId);
10841
+    }
10842
+
10833 10843
 
10834 10844
     /**
10835 10845
      * @param int $groupOrderId

+ 19 - 0
app/entity/data/shared/SharedProsperityRecommendConfigEntity.php

@@ -12,6 +12,7 @@ class SharedProsperityRecommendConfigEntity extends DataEntity
12 12
     public $rewardRatio = null;  // 推荐奖励占比
13 13
     public $profitRatio = null;  // 分红奖励占比
14 14
     public $pv = null;  // 业绩
15
+    public $consume = null;  // 业绩
15 16
     public $createTime = null;  // 创建时间
16 17
     public $updateTime = null;  // 更新时间
17 18
 
@@ -123,6 +124,24 @@ class SharedProsperityRecommendConfigEntity extends DataEntity
123 124
     /**
124 125
      * @return mixed
125 126
      */
127
+    public function getConsume()
128
+    {
129
+        return $this->consume;
130
+    }
131
+
132
+    /**
133
+     * @param mixed $consume
134
+     * @return SharedProsperityRecommendConfigEntity
135
+     */
136
+    public function setConsume($consume): SharedProsperityRecommendConfigEntity
137
+    {
138
+        $this->consume = $consume;
139
+        return $this;
140
+    }
141
+
142
+    /**
143
+     * @return mixed
144
+     */
126 145
     public function getCreateTime()
127 146
     {
128 147
         return $this->createTime;