From ca425b889f3c1b5847ffc26a0229307f7f8ef43e Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Tue, 09 Dec 2025 16:11:31 +0800
Subject: [PATCH] 添加消费券 商户端添加页面diy
---
admin/app/common/model/plus/vip/Order.php | 134 +++++++++++++++++++++++---------------------
1 files changed, 71 insertions(+), 63 deletions(-)
diff --git a/admin/app/common/model/plus/vip/Order.php b/admin/app/common/model/plus/vip/Order.php
index 7bc2638..e9a5c11 100644
--- a/admin/app/common/model/plus/vip/Order.php
+++ b/admin/app/common/model/plus/vip/Order.php
@@ -140,17 +140,9 @@
if ($deadlineTime > time()) {
continue;
}
-
- // 发放推广佣金(首次购买VIP商品)
- if ($model['vip_area_type'] == 10) {
- $model['vip_area_user_id'] > 0 && User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], '推广佣金');
+ if ($model['vip_area_user_id'] != 0) {
+ User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], VipAreaTypeEnum::getTypeName()[$model['vip_area_type']]);
}
-
- // 发放推广复购佣金(非首次购买VIP商品)
- if ($model['vip_area_type'] == 20) {
- $model['vip_area_user_id'] > 0 && User::grantMoney($model['vip_area_user_id'], $model['vip_area_money'], '推广复购佣金');
- }
-
// 发放VIP专区补贴给下级用户(当下级获得推广佣金或复购佣金时)
if ($model['vip_area_type'] == 10 || $model['vip_area_type'] == 20) {
// 获取下级用户的推荐人(即上级用户)
@@ -160,15 +152,12 @@
if ($vipUser['grade']['operating_subsidy']>0){
// 获取补贴比例设置
$subsidyRate = $vipUser['grade']['operating_subsidy'];
-
// 计算VIP专区补贴
$subsidyAmount = bcmul($model['vip_area_money'], bcdiv((string)$subsidyRate, '100', 4), 2);
User::grantMoney($superiorUser['referee_id'], $subsidyAmount, 'VIP专区补贴');
-
// 记录分销订单
self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy',$model['vip_area_money']);
}
-
}
}
@@ -259,6 +248,9 @@
/**
* 创建VIP专区订单记录
+ * @param array $order 订单信息数组
+ * @param int $order_type 订单类型,默认为OrderTypeEnum::MASTER
+ * @return bool|\think\Collection 是否成功创建订单
*/
public static function createOrder($order, $order_type = OrderTypeEnum::MASTER)
{
@@ -271,36 +263,13 @@
if (!$setting['is_open']) {
return false;
}
-
- // 获取当前买家的推荐人信息
- $userModel = UserModel::detail($order['user_id']);
- if (!$userModel || !$userModel['referee_id']) {
- return false;
- }
-
- // 检查推荐人是否为VIP专区用户
- $vipUser = User::detail($userModel['referee_id']);
- if (!$vipUser) {
- return false;
- }
-
- // 获取VIP等级设置
- $vipGrade = Grade::detail($vipUser['grade_id']);
- if (!$vipGrade) {
- return false;
- }
- // 验证是否设置
- $config = Setting::getItem('basic', $order['app_id']);
- if (empty($config['become__buy_product_ids'])) {
- return false;
- }
$data = [
'user_id' => $order['user_id'],
'order_id' => $order['order_id'],
'order_type' => $order_type,
'order_price' => $order['pay_price'],
- 'vip_area_user_id' => $vipUser['user_id'],
- 'referee_id' => $userModel['referee_id'],
+ 'vip_area_user_id' => 0,
+ 'referee_id' => 0,
'vip_area_money' => 0,
'vip_area_type' => 0,
'is_settled' => 0,
@@ -310,37 +279,76 @@
$list=[];
// 计算佣金金额
$orderPrice = bcsub($order['pay_price'], $order['express_price'], 2);
- $purchase_count=(new self())->getPurchaseCount($order['user_id']);
- foreach ($order['product'] as $product){
- if (in_array($product['product_id'], $config['become__buy_product_ids'])) {
- // 获取商品数量
- $quantity = $product['total_num'];
- // 为每个商品生成分红订单
- for ($i = 0; $i < $quantity; $i++) {
- if ($purchase_count==1){
- $list[]=array_merge($data,['vip_area_type'=>10,'vip_area_money'=>$vipGrade['agent_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
- $purchase_count++;
- }else{
- if ($vipGrade['repurchase_money']>0){
- $list[]=array_merge($data,['vip_area_type'=>20,'vip_area_money'=>$vipGrade['repurchase_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
- $purchase_count++;
+ $viewpoint_money=0;
+ // 获取当前买家的推荐人信息
+ $userModel = UserModel::detail($order['user_id']);
+ if (!empty($userModel) && !empty($userModel['referee_id'])) {
+ // 检查推荐人是否为VIP专区用户
+ $vipUser = User::detail($userModel['referee_id']);
+ if ($vipUser) {
+ $data['vip_area_user_id'] = $vipUser['user_id'];
+ $data['referee_id'] = $userModel['referee_id'];
+ // 获取VIP等级设置
+ $vipGrade = Grade::detail($vipUser['grade_id']);
+ if ($vipGrade) {
+ $config = Setting::getItem('basic', $order['app_id']);
+ if (!empty($config['become__buy_product_ids'])) {
+ $purchase_count=(new self())->getPurchaseCount($order['user_id']);
+ foreach ($order['product'] as $product){
+ if ($product['is_repurchase']==1){
+ $viewpoint_money=bcadd($viewpoint_money,($product['is_viewpoint_money']?$product['viewpoint_money']:$vipGrade['viewpoint_money']),2);
+ }
+ if (in_array($product['product_id'], $config['become__buy_product_ids'])) {
+ // 获取商品数量
+ $quantity = $product['total_num'];
+ // 为每个商品生成分红订单
+ for ($i = 0; $i < $quantity; $i++) {
+ if ($purchase_count==1){
+ $list[]=array_merge($data,['vip_area_type'=>10,'vip_area_money'=>$vipGrade['agent_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
+ $purchase_count++;
+ }else{
+ if ($vipGrade['repurchase_money']>0){
+ $list[]=array_merge($data,['vip_area_type'=>20,'vip_area_money'=>$vipGrade['repurchase_money'],'is_vip'=>1,'purchase_count'=>$purchase_count]);
+ $purchase_count++;
+ }
+ }
+ }
+ }
}
+ }
+
+ // 检查并处理直推佣金
+ $directReferralsCount=0;
+ $user=UserModel::detail($order['user_id']);
+ if (!empty($user['referee_id'])){
+ // 检查推荐人是否满足直推条件(直推用户数量)
+ $directReferralsCount = UserModel::where('referee_id', '=', $user['referee_id'])->count();
+ if ($viewpoint_money>0&&(new User())->getViewpointMoneyQualification($user['referee_id'],$setting)){
+ $list[]=array_merge($data,['vip_area_type'=>60,'vip_area_money'=>$viewpoint_money]);
+ }
+ }
+ $requiredReferralCount = $setting['referee_buy_count'] ?? 0;
+ if ($vipGrade['commission']>0 && $directReferralsCount >= $requiredReferralCount){
+ // 计算平台直推佣金金额
+ $commissionAmount = bcmul($orderPrice, bcdiv($vipGrade['commission'], '100', 4), 2);
+ $list[]=array_merge($data,['vip_area_type'=>40,'vip_area_money'=>$commissionAmount]);
}
}
}
}
- $directReferralsCount=0;
- $user=UserModel::detail($order['user_id']);
- if (!empty($user['referee_id'])){
- // 检查推荐人是否满足直推条件(直推用户数量)
- $directReferralsCount = UserModel::where('referee_id', '=', $user['referee_id'])->count();
+ // 处理供应商推荐人佣金
+ if($order['supplier']['referee_id']!=0){
+ $supplierReferee=VipUserModel::detail($order['supplier']['referee_id']);
+ if ($supplierReferee){
+ $vipGradeSupplier=Grade::detail($supplierReferee['grade_id']);
+ if ($vipGradeSupplier['supplier_money']>0){
+ // 计算直推店铺交易额佣金金额
+ $supplier_money = bcmul($orderPrice, bcdiv($vipGrade['supplier_money'], '100', 4), 2);
+ $list[]=array_merge($data,['vip_area_type'=>50,'vip_area_money'=>$supplier_money,'vip_area_user_id'=>$supplierReferee['user_id'],'referee_id'=>$supplierReferee['referee_id']]);
+ }
+ }
}
- $requiredReferralCount = $setting['referee_buy_count'] ?? 0;
- if ($vipGrade['commission']>0 && $directReferralsCount >= $requiredReferralCount){
- // 计算佣金金额
- $commissionAmount = bcmul($orderPrice, bcdiv($vipGrade['commission'], '100', 4), 2);
- $list[]=array_merge($data,['vip_area_type'=>40,'vip_area_money'=>$commissionAmount]);
- }
+ log_write($list);
if (empty($list)){
return true;
}
--
Gitblit v1.9.2