diff --git a/app/common/dao/user/UserDao.php b/app/common/dao/user/UserDao.php index ac200d8..0fc8b9a 100644 --- a/app/common/dao/user/UserDao.php +++ b/app/common/dao/user/UserDao.php @@ -334,7 +334,12 @@ class UserDao extends BaseDao public function syncSpreadStatus() { - return User::getDB()->where('spread_uid', '>', 0)->whereNotNull('spread_limit')->where('spread_limit', '<=', date('Y-m-d H:i:s'))->update(['spread_time' => null, 'spread_uid' => 0, 'spread_limit' => null]); + return User::getDB() + ->where('spread_uid','>',0) + ->whereNotNull('spread_limit') + ->where('spread_limit','<=',date('Y-m-d H:i:s')) + ->where('spread_fixed', 0) + ->update(['spread_time' => NULL,'spread_uid' => 0,'spread_limit' => NULL]); } public function incSpreadCount($uid) diff --git a/app/common/repositories/store/order/StoreOrderRepository.php b/app/common/repositories/store/order/StoreOrderRepository.php index 6657a99..c3ee9c9 100644 --- a/app/common/repositories/store/order/StoreOrderRepository.php +++ b/app/common/repositories/store/order/StoreOrderRepository.php @@ -490,15 +490,21 @@ class StoreOrderRepository extends BaseRepository //自动打印订单 $this->autoPrinter($order->order_id, $order->mer_id); } - if ($groupOrder->user->spread_uid) { - Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_pay_num', 'inc' => 1]); - Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_money', 'inc' => $groupOrder->pay_price]); - } - app()->make(UserRepository::class)->update($groupOrder->uid, [ + + $userUpdate = [ 'pay_count' => Db::raw('pay_count+' . count($groupOrder->orderList)), 'pay_price' => Db::raw('pay_price+' . $groupOrder->pay_price), 'svip_save_money' => Db::raw('svip_save_money+' . $svipDiscount), - ]); + ]; + + if ($groupOrder->user->spread_uid) { + Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_pay_num', 'inc' => 1]); + Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_money', 'inc' => $groupOrder->pay_price]); + // 判断:如果用户关系未固定绑定 则固定绑定 + $config = systemConfig(['extension_limit', 'extension_limit_day', 'integral_user_give']); + if($groupOrder->user->spread_fixed == 0 && $config['extension_limit'] && $config['extension_limit_day']) $userUpdate['spread_fixed'] = 1; + } + app()->make(UserRepository::class)->update($groupOrder->uid, $userUpdate); $this->giveIntegral($groupOrder); if (count($profitsharing)) { $storeOrderProfitsharingRepository->insertAll($profitsharing); diff --git a/app/common/repositories/user/UserRepository.php b/app/common/repositories/user/UserRepository.php index 096ccde..a7c7f61 100644 --- a/app/common/repositories/user/UserRepository.php +++ b/app/common/repositories/user/UserRepository.php @@ -922,8 +922,13 @@ class UserRepository extends BaseRepository public function bindSpread(User $user, int $spreadUid){ // 获取邀请人 分销商转正申请信息 $formalStatus == 1 && // $formalStatus = (int)UserBrokerageApplyFormal::where('uid', $spreadUid)->value('status'); - - if ($spreadUid && !$user->spread_uid && $user->uid != $spreadUid && ($spread = $this->dao->get($spreadUid)) && $spread->spread_uid != $user->uid && !$spread->cancel_time) { + // 判断:是否固定绑定 + if($user->spread_fixed == 0 && $user->spread_limit && $user->spread_uid > 0){ + throw new ValidateException("已存在临时上级!"); + } + // 判断:是否允许绑定 + $spread = $this->dao->get($spreadUid); + if ($spreadUid && !$user->spread_uid && $user->uid != $spreadUid && $spread && $spread->spread_uid != $user->uid && !$spread->cancel_time) { $config = systemConfig(['extension_limit', 'extension_limit_day', 'integral_user_give']); event('user.spread.before', compact('user','spreadUid')); Db::transaction(function () use ($spread, $spreadUid, $user, $config) {