sunxiaobiao 5 mesi fa
parent
commit
e09fa0b56e

+ 27 - 2
app/common/dao/shared/SharedProsperityRecommendConfigDao.php

@@ -26,7 +26,7 @@ class SharedProsperityRecommendConfigDao extends BaseDao
26
         try {
26
         try {
27
             /** @var SharedProsperityRecommendConfig $model */
27
             /** @var SharedProsperityRecommendConfig $model */
28
             $model = $this->getModel();
28
             $model = $this->getModel();
29
-            $dataRes =  $model::getDB()
29
+            $dataRes = $model::getDB()
30
                 ->select()
30
                 ->select()
31
                 ->toArray();
31
                 ->toArray();
32
             if (!empty($dataRes)) {
32
             if (!empty($dataRes)) {
@@ -51,7 +51,32 @@ class SharedProsperityRecommendConfigDao extends BaseDao
51
         /** @var SharedProsperityRecommendConfig $model */
51
         /** @var SharedProsperityRecommendConfig $model */
52
         $model = $this->getModel();
52
         $model = $this->getModel();
53
         return $model::getDB()
53
         return $model::getDB()
54
-            ->where(['id'=>$id])
54
+            ->where(['id' => $id])
55
             ->find();
55
             ->find();
56
     }
56
     }
57
+
58
+    /**
59
+     * @param array $levelList
60
+     * @return SharedProsperityRecommendConfigEntity[]
61
+     */
62
+    public function getSharedProsperityRecommendConfigEntityListByLevelList(array $levelList): array
63
+    {
64
+        $entityList = [];
65
+        try {
66
+            /** @var SharedProsperityRecommendConfig $model */
67
+            $model = $this->getModel();
68
+            $dataRes = $model::getDB()
69
+                ->whereIn('level', $levelList)
70
+                ->select()
71
+                ->toArray();
72
+            if (!empty($dataRes)) {
73
+                $entityList = array_map(function ($data) {
74
+                    return SharedProsperityRecommendConfigEntity::newInstance($data);
75
+                }, $dataRes);
76
+            }
77
+        } catch (\Exception $e) {
78
+
79
+        }
80
+        return $entityList;
81
+    }
57
 }
82
 }

+ 16 - 2
app/common/enum/CommonEnum.php

@@ -10,6 +10,7 @@ class CommonEnum
10
         'MemberZone' => ['code' => 496, 'name' => '会员专区'],
10
         'MemberZone' => ['code' => 496, 'name' => '会员专区'],
11
         'WonderfulLiving' => ['code' => 439, 'name' => '精彩生活区'],
11
         'WonderfulLiving' => ['code' => 439, 'name' => '精彩生活区'],
12
         'Repurchase' => ['code' => 491, 'name' => '复购区'],
12
         'Repurchase' => ['code' => 491, 'name' => '复购区'],
13
+        'SharedProsperity' => ['code' => 3447, 'name' => '共富区']
13
     ];
14
     ];
14
 
15
 
15
 
16
 
@@ -113,7 +114,7 @@ class CommonEnum
113
                     'Ratio' => ['code' => 0.35, 'name' => '将商品利润中 用户身份对应分配比例 的推荐人可分配利润中 35%,当做积分值分配给推荐人']
114
                     'Ratio' => ['code' => 0.35, 'name' => '将商品利润中 用户身份对应分配比例 的推荐人可分配利润中 35%,当做积分值分配给推荐人']
114
                 ],
115
                 ],
115
                 'YangLaoJin' => [
116
                 'YangLaoJin' => [
116
-                    'Ratio' => ['code' => 0.35 * 0.5, 'name' => '将利润的35%中的5%,当做养老金分配给推荐人']
117
+                    'Ratio' => ['code' => 0.35 * 0.05, 'name' => '将利润的35%中的5%,当做养老金分配给推荐人']
117
                 ]
118
                 ]
118
             ],
119
             ],
119
             'Share' => [
120
             'Share' => [
@@ -239,7 +240,7 @@ class CommonEnum
239
                     'Ratio' => ['code' => 0.35, 'name' => '将商品利润中 用户身份对应分配比例 的推荐人可分配利润中 35%,当做积分值分配给推荐人']
240
                     'Ratio' => ['code' => 0.35, 'name' => '将商品利润中 用户身份对应分配比例 的推荐人可分配利润中 35%,当做积分值分配给推荐人']
240
                 ],
241
                 ],
241
                 'YangLaoJin' => [
242
                 'YangLaoJin' => [
242
-                    'Ratio' => ['code' => 0.35 * 0.5, 'name' => '将利润的35%中的5%,当做养老金分配给推荐人']
243
+                    'Ratio' => ['code' => 0.35 * 0.05, 'name' => '将利润的35%中的5%,当做养老金分配给推荐人']
243
                 ]
244
                 ]
244
             ],
245
             ],
245
             'Lock' => [
246
             'Lock' => [
@@ -250,6 +251,19 @@ class CommonEnum
250
                     'Ratio' => ['code' => 0.35 * 0.05 * 0.1, 'name' => '将利润的 35% 中的 5% 中的 10%,做为锁客奖励的复购部分'],
251
                     'Ratio' => ['code' => 0.35 * 0.05 * 0.1, 'name' => '将利润的 35% 中的 5% 中的 10%,做为锁客奖励的复购部分'],
251
                 ]
252
                 ]
252
             ]
253
             ]
254
+        ],
255
+        // 共富区
256
+        'SharedProsperity' => [
257
+            'Self' => [
258
+                'YangLaoJin' => [ // 钱
259
+                    'Ratio' => ['code' => 0.7 * 0.1, 'name' => '将利润(PV)的70%中的10%,当做养老金分配给下单人']
260
+                ]
261
+            ],
262
+            'Spread' => [
263
+                'YangLaoJin' => [
264
+                    'Ratio' => ['code' => 0.7 * 0.05, 'name' => '将利润(PV)的70%中的5%,当做养老金分配给推荐人']
265
+                ]
266
+            ]
253
         ]
267
         ]
254
     ];
268
     ];
255
 
269
 

+ 26 - 1
app/common/repositories/shared/SharedProsperityRecommendConfigRepository.php

@@ -68,9 +68,34 @@ class SharedProsperityRecommendConfigRepository extends BaseRepository
68
     {
68
     {
69
         $id = $params['id'];
69
         $id = $params['id'];
70
         unset($params['id']);
70
         unset($params['id']);
71
-        if (!$this->dao->update($id, $params)){
71
+        if (!$this->dao->update($id, $params)) {
72
             return false;
72
             return false;
73
         }
73
         }
74
         return true;
74
         return true;
75
     }
75
     }
76
+
77
+    /**
78
+     * @param int $level
79
+     * @return SharedProsperityRecommendConfigEntity
80
+     */
81
+    public function getSharedProsperityRecommendConfigEntityByLevel(int $level): SharedProsperityRecommendConfigEntity
82
+    {
83
+        $entityList = $this->getSharedProsperityRecommendConfigEntityListByLevelList([$level]);
84
+        $entity = array_shift($entityList);
85
+        if ($entity instanceof SharedProsperityRecommendConfigEntity) {
86
+            return $entity;
87
+        } else {
88
+            /** @var SharedProsperityRecommendConfigEntity */
89
+            return SharedProsperityRecommendConfigEntity::newInstance();
90
+        }
91
+    }
92
+
93
+    /**
94
+     * @param array $levelList
95
+     * @return SharedProsperityRecommendConfigEntity[]
96
+     */
97
+    public function getSharedProsperityRecommendConfigEntityListByLevelList(array $levelList): array
98
+    {
99
+        return $this->dao->getSharedProsperityRecommendConfigEntityListByLevelList($levelList);
100
+    }
76
 }
101
 }

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

@@ -52,6 +52,8 @@ use app\common\repositories\merchant\order\OrderMerchantRepository;
52
 use app\common\repositories\BaseRepository;
52
 use app\common\repositories\BaseRepository;
53
 use app\common\repositories\product\ProductSeckillRepository;
53
 use app\common\repositories\product\ProductSeckillRepository;
54
 use app\common\repositories\product\ShareRepository;
54
 use app\common\repositories\product\ShareRepository;
55
+use app\common\repositories\shared\SharedProsperityRecommendConfigRepository;
56
+use app\common\repositories\shared\SharedProsperityUserRepository;
55
 use app\common\repositories\store\coupon\StoreCouponProductRepository;
57
 use app\common\repositories\store\coupon\StoreCouponProductRepository;
56
 use app\common\repositories\store\coupon\StoreCouponRepository;
58
 use app\common\repositories\store\coupon\StoreCouponRepository;
57
 use app\common\repositories\store\coupon\StoreCouponUserRepository;
59
 use app\common\repositories\store\coupon\StoreCouponUserRepository;
@@ -88,6 +90,7 @@ use app\controller\api\user\Volunteer;
88
 use app\entity\data\merchant\MerchantEntity;
90
 use app\entity\data\merchant\MerchantEntity;
89
 use app\entity\data\product\ProductSeckillEntity;
91
 use app\entity\data\product\ProductSeckillEntity;
90
 use app\entity\data\product\ShareEntity;
92
 use app\entity\data\product\ShareEntity;
93
+use app\entity\data\shared\SharedProsperityUserEntity;
91
 use app\entity\data\store\CartEntity;
94
 use app\entity\data\store\CartEntity;
92
 use app\entity\data\store\StoreProductAttrValueEntity;
95
 use app\entity\data\store\StoreProductAttrValueEntity;
93
 use app\entity\data\store\StoreProductEntity;
96
 use app\entity\data\store\StoreProductEntity;
@@ -11513,6 +11516,98 @@ class StoreOrderRepository extends BaseRepository
11513
                     }
11516
                     }
11514
                 }
11517
                 }
11515
             }
11518
             }
11519
+        } else if ($storeOrderEntity->getMerId() == CommonEnum::DESIGN_MERCHANT_ID['SharedProsperity']['code']) {
11520
+            /** @var SharedProsperityUserRepository $sharedProsperityUserRepository */
11521
+            $sharedProsperityUserRepository = app()->make(SharedProsperityUserRepository::class);
11522
+            $sharedProsperityUserEntity = $sharedProsperityUserRepository->getSharedProsperityUserEntityByUserId($userEntity->getUid());
11523
+            // 如果当前 共富体系内 没有该用户信息,则需要为其创建 共富体系用户数据
11524
+            if (empty($sharedProsperityUserEntity->getId())) {
11525
+                // 生成 共富体系用户实体
11526
+                $sharedProsperityUserEntityByNewCreate = SharedProsperityUserEntity::newInstance()
11527
+                    ->setUserId($userEntity->getUid());
11528
+                // 查看分享人是否为 共富体系会员 如果是,则绑定共富体系的推荐关系,如果没有,则当前消费者则为 共富体系内的自然消费者,上级绑定为平台(因为文档内说明了,推荐人只能是共富会员)
11529
+                if (!empty($storeOrderEntity->getShareUid())) {
11530
+                    $sharedProsperityUserEntityByShareUid = $sharedProsperityUserRepository->getSharedProsperityUserEntityByUserId($storeOrderEntity->getShareUid());
11531
+                    if (!empty($sharedProsperityUserEntityByShareUid->getId())) {
11532
+                        $sharedProsperityUserEntityByNewCreate->setParentId($sharedProsperityUserEntityByShareUid->getUserId());
11533
+                    }
11534
+                }
11535
+                $sharedProsperityUserEntity = $sharedProsperityUserRepository->createByEntity($sharedProsperityUserEntityByNewCreate);
11536
+            }
11537
+
11538
+            if (empty($sharedProsperityUserEntity->getId())) {
11539
+                Db::name('log')->insert(['data' => '共富区奖励发放,用户创建失败,订单ID:' . $storeOrderEntity->getOrderId()]);
11540
+                return;
11541
+            }
11542
+
11543
+            // 为消费者 初始化 添加养老金记录
11544
+            $yanglaojin = bcmul($storeOrderEntity->getConPri(), CommonEnum::ORDER_EARNING_ALLOCATION['SharedProsperity']['Self']['YangLaoJin']['Ratio']['code'], CommonEnum::DECIMAL_PLACES_OF_THE_AMOUNT);
11545
+            /** @var UserBillRepository $userBillRepository */
11546
+            $userBillRepository = app()->make(UserBillRepository::class);
11547
+            $userBillRepository->addUserBill(
11548
+                $sharedProsperityUserEntity->getUserId(),
11549
+                UserBillEnum::COMMISSION_TYPE['PENSION']['code'],
11550
+                UserBillEnum::PM['INCOME']['code'],
11551
+                $yanglaojin,
11552
+                UserBillEnum::CATEGORY['NowMoney']['code'],
11553
+                UserBillEnum::TYPE['Commission']['code'],
11554
+                UserBillEnum::SOURCE['ONLINE']['code'],
11555
+                UserBillEnum::ORDER_TYPE['SELF_OPERATED']['code'],
11556
+                UserBillEnum::TYPE_SHOP['Platform']['code'],
11557
+                $storeOrderEntity->getOrderId(),
11558
+                '购买共富区商品获得养老金'
11559
+            );
11560
+
11561
+            // 消费股 TODO 该做这里了
11562
+
11563
+            if (!empty($sharedProsperityUserEntity->getParentId())) {
11564
+                // 如果 共富区推荐人 不是平台,则为 推荐人发放 推荐奖励
11565
+                $sharedProsperityUserEntityByParent = $sharedProsperityUserRepository->getSharedProsperityUserEntityByUserId($sharedProsperityUserEntity->getParentId());
11566
+                if (!empty($sharedProsperityUserEntityByParent->getId())) {
11567
+                    // 为 共富体系推荐人 发放养老金
11568
+                    $yanglaojinBySpreadUid = bcmul($storeOrderEntity->getConPri(), CommonEnum::ORDER_EARNING_ALLOCATION['SharedProsperity']['Spread']['YangLaoJin']['Ratio']['code'], CommonEnum::DECIMAL_PLACES_OF_THE_AMOUNT);
11569
+                    /** @var UserBillRepository $userBillRepository */
11570
+                    $userBillRepository = app()->make(UserBillRepository::class);
11571
+                    $userBillRepository->addUserBill(
11572
+                        $sharedProsperityUserEntityByParent->getUserId(),
11573
+                        UserBillEnum::COMMISSION_TYPE['PENSION']['code'],
11574
+                        UserBillEnum::PM['INCOME']['code'],
11575
+                        $yanglaojinBySpreadUid,
11576
+                        UserBillEnum::CATEGORY['NowMoney']['code'],
11577
+                        UserBillEnum::TYPE['Commission']['code'],
11578
+                        UserBillEnum::SOURCE['ONLINE']['code'],
11579
+                        UserBillEnum::ORDER_TYPE['SELF_OPERATED']['code'],
11580
+                        UserBillEnum::TYPE_SHOP['Platform']['code'],
11581
+                        $storeOrderEntity->getOrderId(),
11582
+                        '推广共富区会员消费获得养老金'
11583
+                    );
11584
+
11585
+                    // 计算 推广佣金
11586
+                    /** @var SharedProsperityRecommendConfigRepository $sharedProsperityRecommendConfigRepository */
11587
+                    $sharedProsperityRecommendConfigRepository = app()->make(SharedProsperityRecommendConfigRepository::class);
11588
+                    $sharedProsperityRecommendConfigEntityByParentPartnerLevel = $sharedProsperityRecommendConfigRepository->getSharedProsperityRecommendConfigEntityByLevel($sharedProsperityUserEntityByParent->getPartnerLevel());
11589
+                    if (!empty($sharedProsperityRecommendConfigEntityByParentPartnerLevel->getId())) {
11590
+                        $rewardRatio = bcdiv($sharedProsperityRecommendConfigEntityByParentPartnerLevel->getRewardRatio(), 100, 2);
11591
+                        $brokeragePriceBySpreadUid = bcmul($storeOrderEntity->getConPri(), $rewardRatio, CommonEnum::DECIMAL_PLACES_OF_THE_AMOUNT);
11592
+                        // 添加佣金记录
11593
+                        /** @var UserBillRepository $userBillRepository */
11594
+                        $userBillRepository = app()->make(UserBillRepository::class);
11595
+                        $userBillRepository->addUserBill(
11596
+                            $sharedProsperityUserEntityByParent->getUid(),
11597
+                            UserBillEnum::COMMISSION_TYPE['DIRECT_REFERRAL']['code'],
11598
+                            UserBillEnum::PM['INCOME']['code'],
11599
+                            $brokeragePriceBySpreadUid,
11600
+                            UserBillEnum::CATEGORY['NowMoney']['code'],
11601
+                            UserBillEnum::TYPE['Commission']['code'],
11602
+                            UserBillEnum::SOURCE['ONLINE']['code'],
11603
+                            UserBillEnum::ORDER_TYPE['SELF_OPERATED']['code'],
11604
+                            UserBillEnum::TYPE_SHOP['Platform']['code'],
11605
+                            $storeOrderEntity->getOrderId(),
11606
+                            '推广共富区商品获得佣金'
11607
+                        );
11608
+                    }
11609
+                }
11610
+            }
11516
         } else {
11611
         } else {
11517
             /** @var MerchantRepository $merchantRepository */
11612
             /** @var MerchantRepository $merchantRepository */
11518
             $merchantRepository = app()->make(MerchantRepository::class);
11613
             $merchantRepository = app()->make(MerchantRepository::class);

+ 4 - 2
app/controller/api/store/order/StoreOrder.php

@@ -109,10 +109,12 @@ class StoreOrder extends BaseController
109
     public function createOrder(StoreCartRepository $cartRepository)
109
     public function createOrder(StoreCartRepository $cartRepository)
110
     {
110
     {
111
         $uid = $this->request->uid();
111
         $uid = $this->request->uid();
112
-        if (in_array($uid, [1592, 766])) {
112
+        if (in_array($uid, [1592, 766, 6, 783, 7, 1166])) {
113
             $request = new Request();
113
             $request = new Request();
114
             $storeOrderCreateValidate = new StoreOrderCreateValidate($request);
114
             $storeOrderCreateValidate = new StoreOrderCreateValidate($request);
115
-            return $this->createOrderNew($storeOrderCreateValidate);
115
+            /** @var StoreGroupOrder $storeGroupOrderController */
116
+            $storeGroupOrderController = app()->make(StoreGroupOrder::class);
117
+            return $storeGroupOrderController->createStoreGroupOrder($storeOrderCreateValidate);
116
         }
118
         }
117
 
119
 
118
         $cartId = (array)$this->request->param('cart_id', []);
120
         $cartId = (array)$this->request->param('cart_id', []);