From a4b3ee325c7354579d495bc74a777e494e5ec38c Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Fri, 06 Feb 2026 18:18:44 +0800
Subject: [PATCH] 商品可以价格面议 选择走访时显示输入走访企业名 分会添加活动时要总会审核 分类添加人数限制,添加活动选择了填写人数限制的分类时活动名额下显示该分类人数限制为15 同一个企业30天内只能走访一次,在30天内走访同一个企业时提示该企业已被走访xx天后才可以从新走访
---
admin/app/common/model/plus/vip/Order.php | 251 ++++++++++++++++++++++++++++++-------------------
1 files changed, 153 insertions(+), 98 deletions(-)
diff --git a/admin/app/common/model/plus/vip/Order.php b/admin/app/common/model/plus/vip/Order.php
index 7bc2638..7b68882 100644
--- a/admin/app/common/model/plus/vip/Order.php
+++ b/admin/app/common/model/plus/vip/Order.php
@@ -15,7 +15,8 @@
{
protected $name = 'vip_area_order';
protected $pk = 'id';
- public $append=['vip_area_type_text'];
+ public $append = ['vip_area_type_text'];
+
/**
* VIP专区订单类型
* @param $value
@@ -24,7 +25,7 @@
public function getVipAreaTypeTextAttr($value, $data)
{
$types = VipAreaTypeEnum::getTypeName();
- return $types[$data['vip_area_type']];
+ return $types[$data['vip_area_type']];
}
/**
@@ -83,7 +84,7 @@
->where('order_type', '=', $orderType)
->find();
}
-
+
/**
* 获取订单的所有VIP专区订单记录
*/
@@ -109,13 +110,13 @@
if ($order['order_status']['value'] != 30) {
return false;
}
-
+
// 获取该订单的所有VIP专区订单记录
$models = self::getAllDetailsByOrderId($order['order_id'], $orderType);
if ($models->isEmpty()) {
return false;
}
-
+
// 佣金结算天数
$settleDays = Setting::getItem('settlement', $order['app_id'])['settle_days'];
$success = false;
@@ -126,64 +127,59 @@
if ($model['is_settled'] == 1) {
continue;
}
-
+
// 写入结算时间
$deadlineTime = $model['settle_time'] ?: 0;
- if($deadlineTime == 0){
- $deadlineTime = $order['receipt_time'] + $settleDays * 86400;
+ if ($deadlineTime == 0) {
+ $deadlineTime = $order['receipt_time'] + $settleDays * 86400;
$model->save([
'settle_time' => $deadlineTime
]);
}
-
+
// 未到结算时间,跳过
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) {
// 获取下级用户的推荐人(即上级用户)
$superiorUser = UserModel::detail($model['vip_area_user_id']);
if ($superiorUser && $superiorUser['referee_id']) {
- $vipUser = VipUserModel::detail($superiorUser['vip_area_user_id']);
- if ($vipUser['grade']['operating_subsidy']>0){
- // 获取补贴比例设置
- $subsidyRate = $vipUser['grade']['operating_subsidy'];
+ if (UserModel::getOperatingSubsidy($superiorUser['referee_id'],Setting::getItem('basic', $order['app_id']))){
+ $vipUser = VipUserModel::detail($superiorUser['referee_id']);
+ if (!empty($vipUser)){
+ if ($vipUser['grade']['operating_subsidy'] > 0) {
+ // 获取补贴比例设置
+ $subsidyRate = $vipUser['grade']['operating_subsidy'];
+ // 计算下级收益补贴
+ $subsidyAmount = bcmul($model['vip_area_money'], bcdiv((string)$subsidyRate, '100', 4), 2);
+ User::grantMoney($superiorUser['referee_id'], $subsidyAmount, '下级收益补贴');
+ // 记录分销订单
+ self::createDistributionOrder($order, $superiorUser['referee_id'], $subsidyAmount, 'vip_subsidy', $model['vip_area_money']);
+ }
+ }
- // 计算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']);
}
}
}
-
+
// 发放平台直推佣金(满足直推条件后)
//self::grantPlatformCommission($order, $model);
-
+
// 更新VIP订单记录
$model->save([
'is_settled' => 1,
'settle_time' => time()
]);
-
+
$success = true;
}
-
+
return $success;
}
@@ -198,22 +194,22 @@
// 获取平台直推佣金设置
$setting = Setting::getItem('basic', $order['app_id']);
$requiredReferralCount = $setting['referee_buy_count'] ?? 0;
-
+
// 如果设置了直推条件且用户有推荐人
if ($requiredReferralCount > 0 && $model['vip_area_user_id'] > 0) {
// 检查推荐人是否满足直推条件(直推用户数量)
$directReferralsCount = UserModel::where('referee_id', '=', $model['vip_area_user_id'])->count();
-
+
if ($directReferralsCount >= $requiredReferralCount) {
// 计算平台直推佣金
$platformCommissionRate = $setting['platform_commission_rate'] ?? 5;
$platformCommissionAmount = bcmul($model['order_price'], bcdiv((string)$platformCommissionRate, '100', 4), 2);
-
+
// 发放平台直推佣金
User::grantMoney($model['vip_area_user_id'], $platformCommissionAmount, '平台直推佣金');
-
+
// 记录分销订单
- self::createDistributionOrder($order, $model['vip_area_user_id'], $platformCommissionAmount, 'platform_commission',$model['vip_area_money']);
+ self::createDistributionOrder($order, $model['vip_area_user_id'], $platformCommissionAmount, 'platform_commission', $model['vip_area_money']);
}
}
}
@@ -226,12 +222,12 @@
* @param $type
* @return bool
*/
- protected static function createDistributionOrder($order, $userId, $amount, $type,$subordinate_money)
+ protected static function createDistributionOrder($order, $userId, $amount, $type, $subordinate_money)
{
// 创建分销订单记录以跟踪各种类型的佣金
$distributionOrder = new self();
$vip_area_type = 0;
- switch($type) {
+ switch ($type) {
case 'vip_subsidy':
$vip_area_type = 30; // VIP专区补贴
break;
@@ -239,7 +235,7 @@
$vip_area_type = 40; // 平台直推佣金
break;
}
-
+
return $distributionOrder->save([
'user_id' => $userId,
'order_id' => $order['order_id'],
@@ -259,6 +255,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,89 +270,145 @@
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'],
+ 'settlement_price' => $order['settlement_price'],
+ 'vip_area_user_id' => 0,
+ 'referee_id' => 0,
'vip_area_money' => 0,
'vip_area_type' => 0,
'is_settled' => 0,
'settle_time' => 0,
'app_id' => $order['app_id']
];
- $list=[];
+ $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++;
+ $orderPrice = bcsub(bcsub($order['pay_price'], $order['express_price'], 2), $order['settlement_price'], 2);
+ //$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']);
+ $purchase_count = (new self())->getPurchaseCount($order['user_id']);
+ $vip_quantity=0;
+ $product_price_repurchase=0;
+ 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']) || $product['is_vip']) {
+ // 获取VIP专区商品数量
+ $vip_quantity = bcadd($vip_quantity, $product['total_num'], 2);
+ // 为每个商品生成分红订单
+ /*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++;
+ }
+ }
+ }*/
}
+ //复购专区利润
+ if($product['is_repurchase']){
+ $product_price_repurchase=bcadd($product_price_repurchase, bcsub($product['total_pay_price'], $product['total_settlement_price'], 2));
+
+ }
+ }
+ if ($vip_quantity>0){
+ if ($purchase_count == 1) {
+ $list[] = array_merge($data, ['vip_area_type' => 10, 'vip_area_money' => bcmul($vipGrade['agent_money'],$vip_quantity,2), 'is_vip' => 1, 'purchase_count' => $purchase_count]);
+ } else {
+ if ($vipGrade['repurchase_money'] > 0) {
+ $list[] = array_merge($data, ['vip_area_type' => 20, 'vip_area_money' => bcmul($vipGrade['repurchase_money'],$vip_quantity,2), 'is_vip' => 1, 'purchase_count' => $purchase_count]);
+ }
+ }
+ }
+ if ($product_price_repurchase>0){
+ //复购专区级差奖
+ if ($setting['jcaward']){
+ $refereeJc=User::getAllJcUser($userModel['user_id']);
+ foreach ($refereeJc as $v){
+ if ( (new User())->getViewpointMoneyQualification($v['user_id'], $setting)){
+ $list[] = array_merge($data, ['vip_area_type' => 70, 'vip_area_money' =>bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2),'vip_area_user_id'=>$v['user_id']]);
+ }
+
+ }
+ }
+ //复购专区平级奖
+ if ($setting['pjaward']){
+ $refereeJc=User::getAllPjUser($userModel['user_id'],$setting['pjaward_level']);
+ foreach ($refereeJc as $v){
+ if ((new User())->getViewpointMoneyQualification($v['user_id'], $setting)) {
+ $list[] = array_merge($data, ['vip_area_type' => 80, 'vip_area_money' => bcmul($product_price_repurchase, bcdiv($v['bonus_percent'], 100, 4), 2), 'vip_area_user_id' => $v['user_id']]);
+ }
+ }
+ }
+ }
+
+ // 检查并处理直推佣金
+ $directReferralsCount = 0;
+ $user = UserModel::detail($order['user_id']);
+ //见点奖
+ /* if (!empty($user['referee_id'])) {
+ 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 (!empty($user['referee_id'])) {
+ // 检查推荐人是否满足直推条件(直推用户数量)
+ $directReferralsCount = UserModel::where('referee_id', '=', $user['referee_id'])->count();
+ }
+ if ($vipGrade['commission'] > 0 && $directReferralsCount >= $requiredReferralCount && $orderPrice > 0) {
+ // 计算平台直推佣金金额
+ $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 && $orderPrice > 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]);
- }
- if (empty($list)){
+ log_write($list);
+ if (empty($list)) {
return true;
}
// 保存VIP专区订单记录
return $model->saveAll($list);
- }catch (\Exception $e){
- log_write('创建VIP专区订单失败:'.$e->getMessage());
+ } catch (\Exception $e) {
+ log_write('创建VIP专区订单失败:' . $e->getMessage());
return false;
}
}
+
public function getPurchaseCount($user_id)
{
- return self::where(['user_id'=>$user_id,'is_vip'=>1])->count()+1;
+ return self::where(['user_id' => $user_id, 'is_vip' => 1,'is_invalid'=>0])->count() + 1;
}
}
\ No newline at end of file
--
Gitblit v1.9.2