diff --git a/app/common/repositories/system/groupData/GroupDataRepository.php b/app/common/repositories/system/groupData/GroupDataRepository.php index f00884e..d33c4c3 100644 --- a/app/common/repositories/system/groupData/GroupDataRepository.php +++ b/app/common/repositories/system/groupData/GroupDataRepository.php @@ -13,6 +13,7 @@ use app\common\repositories\store\product\ProductLabelRepository; use app\common\repositories\store\coupon\StoreCouponRepository; use app\common\repositories\store\StoreCategoryRepository; use app\common\repositories\user\MemberinterestsRepository; +use app\common\repositories\user\UserBrokerageRepository; use FormBuilder\Exception\FormBuilderException; use FormBuilder\Factory\Elm; use FormBuilder\Form; @@ -397,6 +398,18 @@ class GroupDataRepository extends BaseRepository ->getSearch(['type' =>MemberinterestsRepository::TYPE_SVIP,'status' => 1]) ->column('name as label,interests_id as value'); })->col(24)->multiple(true)->filterable(true)->appendValidate(Elm::validateArr()->message('请选择该等级会员权益')), + Elm::select('fenxiao_level_id', '分销商直升')->options(function () { + // 获取分销商等级 + return app()->make(UserBrokerageRepository::class) + ->getSearch(['type'=>0]) + ->column('brokerage_name as label,user_brokerage_id as value'); + })->col(24)->filterable(true)->appendRule('suffix',[ + 'type' => 'div', + 'style' => ['color' => '#999999'], + 'domProps' => [ + 'innerHTML' => '会员开通当前等级时,如果分销商等级低于当前等级则直接升级到该等级', + ] + ]), Elm::number('cost_price','原价')->required()->col(12)->min(0), Elm::number('price','优惠价')->required()->col(12)->min(0), Elm::number('sort','排序')->col(12)->min(0), diff --git a/app/listener/exchangeQuota/OrderVipPayEvent.php b/app/listener/exchangeQuota/OrderVipPayEvent.php index 2058886..b006616 100644 --- a/app/listener/exchangeQuota/OrderVipPayEvent.php +++ b/app/listener/exchangeQuota/OrderVipPayEvent.php @@ -9,7 +9,10 @@ use app\common\model\store\service\StoreService; use app\common\model\system\merchant\Merchant; use app\common\model\user\ExchangeQuotaRecord; use app\common\model\user\UserVipExchangeCode; +use app\common\repositories\system\CacheRepository; use app\common\repositories\user\ExchangeQuotaRepository; +use app\common\repositories\user\UserBrokerageRepository; +use app\common\repositories\user\UserRepository; use think\facade\Log; @@ -26,7 +29,8 @@ class OrderVipPayEvent{ $this->agentBrokerageHandle($order, $vipInfo); // 兑换码 - 支付开通成功处理 $this->vipExchangeCodePaymentSuccessHandle($order, $vipInfo); - + // 会员卡开通成功 - 分销商等级直升 + $this->levelUp($order, $vipInfo); }catch(\Exception $e){ @@ -199,10 +203,41 @@ class OrderVipPayEvent{ return true; } + // 会员卡开通成功 - 分销商等级直升 + public function levelUp($order, $vipInfo){ + // Log::info('会员卡开通成功 - 分销商等级直升 - 开始: '.var_export([ + // 'order_id' => $order->order_id ?? '', + // 'uid' => $order->uid ?? '', + // 'fenxiao_level_id' => $vipInfo['fenxiao_level_id'], + // ],1)); + $fenXiaoLevelId = $vipInfo['fenxiao_level_id'] ?? 0; + if($fenXiaoLevelId > 0){ + $user = app()->make(UserRepository::class)->get($order->uid); + $level = app()->make(UserBrokerageRepository::class)->get($fenXiaoLevelId); + // 根据是否为推广员 进行对应的操作 + if((int)$user->is_promoter != 1){ + // 不是推广员 开启推广员身份并且直升到当前等级 + $user->is_promoter = 1; + $user->promoter_time = date('Y-m-d H:i:s'); + $user->brokerage_level = $level->brokerage_level; + }else{ + // 是推广员 判断直升等级权重是否低于当前等级权重;低于则等级不变,高于则升级 + if($level->brokerage_level > $user->brokerage->brokerage_level){ + $user->brokerage_level = $level->brokerage_level; + } + } + // 保存修改 + $level->save(); + $user->save(); + $key = 'notice_brokerage_level_' . $user->uid; + app()->make(CacheRepository::class)->save($key, $level->brokerage_level); + } + return true; + } diff --git a/app/listener/shareholder/ShareholderListen.php b/app/listener/shareholder/ShareholderListen.php index be01a4e..fbdf572 100644 --- a/app/listener/shareholder/ShareholderListen.php +++ b/app/listener/shareholder/ShareholderListen.php @@ -12,7 +12,7 @@ class ShareholderListen extends TimerService implements ListenerInterface{ public function handle($event): void{ $this->tick(1000 * 60 * 5, function () { - Log::info('餐费积分定时任务被触发:'); + // Log::info('餐费积分定时任务被触发:'); request()->clearCache(); try{ // 积分解冻 预计解冻时间小于当前时间,且状态为冻结中