From 7306f63ec18366ca1437eeccf207ec6a7dbb1f38 Mon Sep 17 00:00:00 2001 From: luofei <604446095@qq.com> Date: Sat, 20 Jan 2024 18:12:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B4=BB=E5=8A=A8=E7=BB=93?= =?UTF-8?q?=E6=9D=9F=E6=97=B6=E9=97=B4=E5=88=A4=E6=96=AD=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=A6=96=E5=8D=95=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/dao/store/StoreActivityUserDao.php | 9 ++++++++ .../store/consumption/StoreConsumptionDao.php | 1 - .../consumption/StoreConsumptionUserDao.php | 22 ++++++++++--------- .../store/order/StoreOrderRepository.php | 12 +++++----- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/app/common/dao/store/StoreActivityUserDao.php b/app/common/dao/store/StoreActivityUserDao.php index ba2926d0..c51415bb 100644 --- a/app/common/dao/store/StoreActivityUserDao.php +++ b/app/common/dao/store/StoreActivityUserDao.php @@ -28,6 +28,10 @@ class StoreActivityUserDao extends BaseDao */ public function choose(int $userId, int $couponId, int $activityId) { + $consumption = StoreConsumption::where('coupon_id', $couponId)->find(); + if ($consumption['status'] != 1 || $consumption['start_time'] > time() || $consumption['end_time'] <= time()) { + throw new \Exception('当前活动已结束'); + } $model = StoreActivityUser::where('user_id', $userId)->where('value', $couponId)->where('activity_id', $activityId)->find(); if (empty($model)) { $model = new StoreActivityUser(); @@ -79,6 +83,11 @@ class StoreActivityUserDao extends BaseDao return $data->value ?? 0; } + public function getOne(int $userId, int $activityId = 1) + { + return StoreActivityUser::where('user_id', $userId)->where('activity_id', $activityId)->where('status', 1)->find(); + } + /** * 获取用户参与活动的状态 * @param int $userId 用户id diff --git a/app/common/dao/store/consumption/StoreConsumptionDao.php b/app/common/dao/store/consumption/StoreConsumptionDao.php index 3e4b673a..5e375f1e 100644 --- a/app/common/dao/store/consumption/StoreConsumptionDao.php +++ b/app/common/dao/store/consumption/StoreConsumptionDao.php @@ -33,7 +33,6 @@ class StoreConsumptionDao extends BaseDao return StoreConsumption::where('coupon_id', $id) ->where('status', StoreConsumption::STATUS_ENABLE) ->whereTime('start_time', '<=', time()) - ->whereTime('end_time', '>', time()) ->find(); } diff --git a/app/common/dao/store/consumption/StoreConsumptionUserDao.php b/app/common/dao/store/consumption/StoreConsumptionUserDao.php index d0ebcd95..01479d14 100644 --- a/app/common/dao/store/consumption/StoreConsumptionUserDao.php +++ b/app/common/dao/store/consumption/StoreConsumptionUserDao.php @@ -52,12 +52,13 @@ class StoreConsumptionUserDao extends BaseDao */ public function promoter(int $userId, $groupOrder, int $spreadUserId) { - $consumptionId = (new StoreActivityUserDao())->getValue($userId); - $consumption = (new StoreConsumptionDao())->getOne($consumptionId); - //用户没有参加 消费金活动 - if (empty($consumption['config'])) { + $activityUser = (new StoreActivityUserDao())->getOne($userId); + $consumption = (new StoreConsumptionDao())->getOne($activityUser['value'] ?? 0); + //用户没有参加 消费金活动 或 已超过任务完成时间 + if (empty($consumption['config']) || strtotime('+1 year', $activityUser['create_time']) < time()) { return false; } + $endTime = strtotime('+1 year', $activityUser['create_time']); $scope = $this->getScope($consumption, $groupOrder['pay_price']); //用户没有达到 消费金活动 任一档次 if ($scope['rate'] <= 0) { @@ -65,7 +66,7 @@ class StoreConsumptionUserDao extends BaseDao } Db::startTrans(); try { - $isFirstOrder = $this->isFirstOrder($userId, $consumption['start_time'], $consumption['end_time']); + $isFirstOrder = $this->isFirstOrder($userId, $consumption['start_time'], $endTime); $storeActivityOrderDao = new StoreActivityOrderDao(); $storeActivityOrderDao->save($groupOrder, $spreadUserId, $isFirstOrder); if ($consumption['type'] == StoreConsumption::TYPE_OWNER_CONSUMPTION) { @@ -92,15 +93,16 @@ class StoreConsumptionUserDao extends BaseDao public function guest(int $userId, $groupOrder, int $spreadUserId) { // 查询推荐人的消费金类型 - $spreadConsumptionId = (new StoreActivityUserDao())->getValue($spreadUserId); - $spreadConsumption = (new StoreConsumptionDao())->getOne($spreadConsumptionId); + $spreadActivityUser = (new StoreActivityUserDao())->getOne($spreadUserId); + $spreadConsumption = (new StoreConsumptionDao())->getOne($spreadActivityUser['value'] ?? 0); // 查询推荐人满足条件的有效订单 $spreadGroupOrderId = StoreActivityOrder::where('user_id', $spreadUserId)->where('status', StoreActivityOrder::STATUS_VALID)->value('group_order_id'); $spreadGroupOrder = StoreGroupOrder::where('group_order_id', $spreadGroupOrderId)->where('paid', 1)->find(); - if (empty($spreadGroupOrder) || empty($spreadConsumption['config'])) { - // 推荐人消费金数据或推荐人的有效订单为空,作为发起人参加活动 + if (empty($spreadGroupOrder) || empty($spreadConsumption['config']) || empty($spreadActivityUser) || strtotime('+1 year', $spreadActivityUser['create_time']) < time()) { + // 推荐人消费金数据为空 或 推荐人的有效订单为空 或推荐人已超过任务完成时间,作为发起人参加活动 return $this->promoter($userId, $groupOrder, 0); } + $endTime = strtotime('+1 year', $spreadActivityUser['create_time']); $spreadScope = $this->getScope($spreadConsumption, $spreadGroupOrder['pay_price']); if ($groupOrder['pay_price'] < $spreadScope['start']) { // 当前用户的订单不在推荐人的档位区间,作为发起人参加活动 @@ -108,7 +110,7 @@ class StoreConsumptionUserDao extends BaseDao } Db::startTrans(); try { - $isFirstOrder = $this->isFirstOrder($userId, $spreadConsumption['start_time'], $spreadConsumption['end_time']); + $isFirstOrder = $this->isFirstOrder($userId, $spreadConsumption['start_time'], $endTime); $storeActivityOrderDao = new StoreActivityOrderDao(); $storeActivityOrderDao->save($groupOrder, $spreadUserId, $isFirstOrder); if ($spreadConsumption['type'] == StoreConsumption::TYPE_PULL_CONSUMPTION && $isFirstOrder) { diff --git a/app/common/repositories/store/order/StoreOrderRepository.php b/app/common/repositories/store/order/StoreOrderRepository.php index 9f82fea9..4ddc784e 100644 --- a/app/common/repositories/store/order/StoreOrderRepository.php +++ b/app/common/repositories/store/order/StoreOrderRepository.php @@ -500,11 +500,13 @@ class StoreOrderRepository extends BaseRepository ], $order->mer_id); //自动打印订单 $this->autoPrinter($order->order_id, $order->mer_id); - // "惠农供销,谱写数字新篇章"活动首单分润,商户和村、小组合伙人 - $finance = (new CommissionDao())->firstOrderCommission($order, $finance, $financeSn . ($i++)); - $addressCode = explode(',', $order['user_address_code']); - // "惠农供销,谱写数字新篇章"活动首单分润,镇合伙人 - (new CommissionDao())->sendCommission($order, $addressCode[3], 2); + if ($order['pay_price'] > 0) { + // "惠农供销,谱写数字新篇章"活动首单分润,商户和村、小组合伙人 + $finance = (new CommissionDao())->firstOrderCommission($order, $finance, $financeSn . ($i++)); + $addressCode = explode(',', $order['user_address_code']); + // "惠农供销,谱写数字新篇章"活动首单分润,镇合伙人 + (new CommissionDao())->sendCommission($order, $addressCode[3], 2); + } } //分销判断 // if ($groupOrder->user->spread_uid) {