From 4015a21417a4ff888d0d09defde100e785f515d5 Mon Sep 17 00:00:00 2001 From: monanxiao Date: Mon, 13 Mar 2023 19:12:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=9D=E6=AD=A5=E5=88=86?= =?UTF-8?q?=E4=BD=A3=E7=AE=97=E6=B3=95=EF=BC=8C=E5=BE=85=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=88=86=E4=BD=A3=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/supplychain/SupplyChainLevel.php | 47 ++++++++++++++++ .../system/supplychain/SupplyChainTeam.php | 53 +++++++++++++++++++ app/common/model/user/User.php | 6 +++ .../store/order/StoreOrderRepository.php | 36 +++++++++---- crmeb/jobs/SupplyChainOrderBrokerAgeJob.php | 53 +++++++++++++------ 5 files changed, 168 insertions(+), 27 deletions(-) create mode 100644 app/common/model/system/supplychain/SupplyChainLevel.php create mode 100644 app/common/model/system/supplychain/SupplyChainTeam.php diff --git a/app/common/model/system/supplychain/SupplyChainLevel.php b/app/common/model/system/supplychain/SupplyChainLevel.php new file mode 100644 index 00000000..f2f22357 --- /dev/null +++ b/app/common/model/system/supplychain/SupplyChainLevel.php @@ -0,0 +1,47 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\model\system\supplychain; + + +use app\common\model\BaseModel; + +// 供应链后台团队等级表 +class SupplyChainLevel extends BaseModel +{ + + // 设置当前模型的数据库连接 + protected $connection = 'nongke'; + protected $table = 'fa_supply_level'; + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tablePk(): string + { + return 'id'; + } + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tableName(): string + { + return 'fa_supply_level'; + } + +} diff --git a/app/common/model/system/supplychain/SupplyChainTeam.php b/app/common/model/system/supplychain/SupplyChainTeam.php new file mode 100644 index 00000000..962a2d60 --- /dev/null +++ b/app/common/model/system/supplychain/SupplyChainTeam.php @@ -0,0 +1,53 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\model\system\supplychain; + + +use app\common\model\BaseModel; + +use app\common\model\system\supplychain\SupplyChainLevel; + +// 供应链后台团队表 +class SupplyChainTeam extends BaseModel +{ + + // 设置当前模型的数据库连接 + protected $connection = 'nongke'; + protected $table = 'fa_supply_team'; + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tablePk(): string + { + return 'id'; + } + + /** + * @return string + * @author xaboy + * @day 2020-03-30 + */ + public static function tableName(): string + { + return 'fa_supply_team'; + } + + public function level() + { + return $this->hasOne(SupplyChainLevel::class, 'id', 'fa_supply_team_id'); + } +} diff --git a/app/common/model/user/User.php b/app/common/model/user/User.php index 367029a4..aaab1526 100644 --- a/app/common/model/user/User.php +++ b/app/common/model/user/User.php @@ -25,6 +25,7 @@ use app\common\repositories\user\UserExtractRepository; use app\common\repositories\user\UserHistoryRepository; use app\common\repositories\user\UserRelationRepository; use app\common\repositories\user\UserRepository; +use app\common\model\system\supplychain\SupplyChainTeam; /** * Class User @@ -176,6 +177,11 @@ class User extends BaseModel return $this->hasOne(UserBrokerage::class, 'brokerage_level', 'member_level')->where('type',1); } + public function supplyChainTeam() + { + return $this->hasOne(SupplyChainTeam::class, 'fa_supply_team_id', 'id'); + } + /** * @param $spreadUid * @author xaboy diff --git a/app/common/repositories/store/order/StoreOrderRepository.php b/app/common/repositories/store/order/StoreOrderRepository.php index 397d2bc9..400823fb 100644 --- a/app/common/repositories/store/order/StoreOrderRepository.php +++ b/app/common/repositories/store/order/StoreOrderRepository.php @@ -385,20 +385,29 @@ class StoreOrderRepository extends BaseRepository //自动打印订单 $this->autoPrinter($order->order_id, $order->mer_id); } - if ($groupOrder->user->spread_uid) { - - // 来源检测,1 服务小组 2 普通商品 - if($order->source == 1) - { - \think\facade\Log::record('供应链佣金--开始'); - Queue::push(SupplyChainOrderBrokerAgeJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_pay_num', 'inc' => 1]); - \think\facade\Log::record('供应链佣金---结束'); - }else{ - Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_pay_num', 'inc' => 1]); + // 来源检测,1 服务小组 2 普通商品 + if($order->source == 1) + { + // 验证是否服务小组人员 + if ($groupOrder->user->fa_supply_team_id) { + Queue::push(SupplyChainOrderBrokerAgeJob::class, [ + 'uid' => $groupOrder->user->uid, + 'inc' => $order->pay_price, // 订单金额 + 'order_sn' => $order->order_sn, // 订单编号 + 'order_id' => $order->order_id, // 订单ID + 'mer_id' => $order->mer_id, // 商户ID + 'brokerage_price' => $order->supply_chain_price, // 订单佣金金额 + ]); + } + + }else{ + + if ($groupOrder->user->spread_uid) { Queue::push(UserBrokerageLevelJob::class, ['uid' => $groupOrder->user->spread_uid, 'type' => 'spread_money', 'inc' => $groupOrder->pay_price]); - } + } } + app()->make(UserRepository::class)->update($groupOrder->uid, [ 'pay_count' => Db::raw('pay_count+' . count($groupOrder->orderList)), 'pay_price' => Db::raw('pay_price+' . $groupOrder->pay_price), @@ -1619,6 +1628,11 @@ class StoreOrderRepository extends BaseRepository ])->page($page, $limit)->order('pay_time DESC')->append(['refund_status'])->select(); foreach ($list as $order) { + + if ($order->order_type == 1) { + $order->append(['take', 'refund_status']); + } + if ($order->activity_type == 2) { if ($order->presellOrder) { $order->presellOrder->append(['activeStatus']); diff --git a/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php b/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php index c99354c2..d4bcd0f1 100644 --- a/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php +++ b/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php @@ -18,6 +18,9 @@ use app\common\repositories\user\UserBrokerageRepository; use app\common\repositories\user\UserRepository; use crmeb\interfaces\JobInterface; use think\facade\Log; +use app\common\model\system\supplychain\SupplyChainBorkerage; +use app\common\model\system\supplychain\SupplyChainTeam; +use app\common\model\system\supplychain\SupplyChainLevel; /** * @@ -29,26 +32,44 @@ class SupplyChainOrderBrokerAgeJob implements JobInterface public function fire($job, $data) { try { + + // 获取当前用户 $user = app()->make(UserRepository::class)->get($data['uid']); - if ($user) { - $flag = true; - if ($data['type'] == 'spread_money') { - $user->spread_pay_price = bcadd($user->spread_pay_price, $data['inc'], 2); - } else if ($data['type'] == 'spread_pay_num') { - $user->spread_pay_count = bcadd($user->spread_pay_count, $data['inc'], 0); - } else { - $flag = false; - } - if ($flag) { - $user->save(); - } - } - if ($user && $user->is_promoter) { - app()->make(UserBrokerageRepository::class)->inc($user, $data['type'], $data['inc']); + $supplyTeam = SupplyChainTeam::find($user['fa_supply_team_id']); // 获取供应链团队 + $supplyLevel = SupplyChainLevel::find($supplyTeam['supply_level_id']); // 获取供应链等级 + $price = $data['brokerage_price']; // 待分润金额 == 订单佣金金额 + + // 判断 存在数据的话,进行分润 + if($supplyTeam) + { + // 可获得金额 + $usrPrice = sprintf("%.2f", $price/100*$supplyLevel['rate']); } + + // 分润数据 + $dataArr = [ + 'user_id' => $data['uid'], // 用户ID + 'pay_price' => $data['inc'], // 订单金额 + 'order_sn' => $data['order_sn'], // 订单编号 + 'supply_sn' => $data['order_sn'], // 订单编号 + 'order_id' => $data['order_id'], // 订单ID + 'mer_id' => $data['mer_id'], // 商户ID + 'supply_level_id' => $supplyLevel['id'], // 分佣等级ID + 'brokerage_price' => $usrPrice, // 获取的佣金金额 + 'user_info' => $user['nickname'], // 用户名 + 'fa_supply_chain_id' => $supplyTeam['id'], // 供应链团队ID + ]; + + // 储存小组服务分佣记录 + $status = SupplyChainBorkerage::create($dataArr); + // 增加小组服务佣金明细 + + \think\facade\Log::record($status); + } catch (\Exception $e) { - Log::info('分销等级同步失败: ' . var_export($data, 1) . $e->getMessage()); + Log::info('小组服务佣金同步失败: ' . var_export($data, 1) . $e->getMessage()); } + $job->delete(); }