From 2a70ad4623a2cb1e9a89cb53e00a248d3a02b7e8 Mon Sep 17 00:00:00 2001 From: monanxiao Date: Sat, 11 Mar 2023 18:00:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=98=9F=E5=88=97=E4=BB=BB=E5=8A=A1=E5=88=86?= =?UTF-8?q?=E4=BD=A3=E6=A1=86=E6=9E=B6=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supplychain/SupplyChainBorkerage.php | 47 +++++++++++++++++++ .../user/UserBrokerageRepository.php | 24 ++++++++++ crmeb/jobs/SupplyChainOrderBrokerAgeJob.php | 28 ++++++++++- 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 app/common/model/system/supplychain/SupplyChainBorkerage.php diff --git a/app/common/model/system/supplychain/SupplyChainBorkerage.php b/app/common/model/system/supplychain/SupplyChainBorkerage.php new file mode 100644 index 00000000..e918c263 --- /dev/null +++ b/app/common/model/system/supplychain/SupplyChainBorkerage.php @@ -0,0 +1,47 @@ + +// +---------------------------------------------------------------------- + + +namespace app\common\model\system\supplychain; + + +use app\common\model\BaseModel; + +// 供应链佣金记录表 +class SupplyChainBorkerage extends BaseModel +{ + + // 设置当前模型的数据库连接 + protected $connection = 'nongke'; + protected $table = 'fa_supply_brokerage'; + + /** + * @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_brokerage'; + } + +} diff --git a/app/common/repositories/user/UserBrokerageRepository.php b/app/common/repositories/user/UserBrokerageRepository.php index 970c58cf..1e50b73c 100644 --- a/app/common/repositories/user/UserBrokerageRepository.php +++ b/app/common/repositories/user/UserBrokerageRepository.php @@ -59,6 +59,7 @@ class UserBrokerageRepository extends BaseRepository return $this->dao->search(['type' => $type])->order('brokerage_level ASC,create_time DESC')->select(); } + // 推广分销分佣记录方法 public function inc(User $user, $type, $inc) { $nextLevel = $this->getNextLevel($user->brokerage_level); @@ -80,6 +81,29 @@ class UserBrokerageRepository extends BaseRepository return $this->checkLevel($user, $nextLevel); } + + // 供应链分润分佣记录方法 + public function supplyChain(User $user, $type, $inc) + { + $nextLevel = $this->getNextLevel($user->brokerage_level); + if (!$nextLevel) return false; + $make = app()->make(UserBillRepository::class); + $bill = $make->getWhere(['uid' => $user->uid, 'link_id' => $nextLevel->user_brokerage_id, 'category' => 'sys_brokerage', 'type' => $type]); + if ($bill) { + $bill->number = bcadd($bill->number, $inc, 2); + $bill->save(); + } else { + $make->incBill($user->uid, 'sys_brokerage', $type, [ + 'number' => $inc, + 'title' => $type, + 'balance' => 0, + 'status' => 0, + 'link_id' => $nextLevel->user_brokerage_id + ]); + } + + return $this->checkLevel($user, $nextLevel); + } public function checkLevel(User $user, UserBrokerage $nextLevel) { diff --git a/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php b/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php index ca73f597..40efa280 100644 --- a/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php +++ b/crmeb/jobs/SupplyChainOrderBrokerAgeJob.php @@ -20,6 +20,7 @@ use crmeb\interfaces\JobInterface; use think\facade\Log; /** + * * 供应链分佣队列 * */ @@ -27,7 +28,32 @@ class SupplyChainOrderBrokerAgeJob implements JobInterface { public function fire($job, $data) { - Log::info('供应链分佣'); + 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(); + } + } + + // 执行供应链佣金分账 + app()->make(UserBrokerageRepository::class)->inc($user, $data['type'], $data['inc']); + + } catch (\Exception $e) { + Log::info('分销等级同步失败: ' . var_export($data, 1) . $e->getMessage()); + } + $job->delete(); + } public function failed($data)