From b5bf05b24a4421b202a3ace4b0e7be57b214c8ba Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Fri, 22 Dec 2023 17:19:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E8=B4=AD=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=E5=90=8E=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=B9=B3=E5=8F=B0=E6=8A=BD=E6=88=90=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/platformCommission/RecordDao.php | 23 ++++ .../model/store/platformCommission/Record.php | 33 ++++++ .../platformCommission/RecordRepository.php | 109 ++++++++++++++++++ .../marketing}/PlatformCommission.php | 32 +---- app/event.php | 7 +- .../OrderPaySuccessEvent.php | 19 +++ .../services/WechatTemplateMessageService.php | 2 +- route/admin/marketing.php | 5 +- 8 files changed, 199 insertions(+), 31 deletions(-) create mode 100644 app/common/dao/store/platformCommission/RecordDao.php create mode 100644 app/common/model/store/platformCommission/Record.php create mode 100644 app/common/repositories/store/platformCommission/RecordRepository.php rename app/controller/admin/{user => store/marketing}/PlatformCommission.php (67%) create mode 100644 app/listener/platformCommission/OrderPaySuccessEvent.php diff --git a/app/common/dao/store/platformCommission/RecordDao.php b/app/common/dao/store/platformCommission/RecordDao.php new file mode 100644 index 0000000..c230b03 --- /dev/null +++ b/app/common/dao/store/platformCommission/RecordDao.php @@ -0,0 +1,23 @@ +dao = $dao; + } + /** + * Common: 获取基本设置 + * Author: wu-hui + * Time: 2023/12/22 16:31 + * @return int[]|mixed + */ + public function getBaseConfig(){ + $default = [ + 'is_open' => 0, + 'commission_platform_rate' => 0, + 'commission_partner_rate' => 0, + 'commission_partner_cycle' => 0, + 'commission_merchants_rate' => 0, + 'commission_promoter_rate' => 0, + 'commission_integral_release_rate' => 0 + ]; + $config = systemConfig(array_keys($default)); + return array_filter($config,function($v){ + return $v !== ''; + }) + $default; + } + /** + * Common: 支付成功 平台抽成处理 + * Author: wu-hui + * Time: 2023/12/22 17:15 + * @param $groupOrder + * @return bool + */ + public function orderPaySuccessHandle($groupOrder):bool{ + // 判断:是否开启平台抽成 + $set = $this->getBaseConfig(); + if($set['is_open'] != 1) { + Log::info('支付成功 - 平台抽成处理 - 未开启平台抽成'); + return false; + } + // 循环处理单个商品抽成信息 + $insertData = []; + foreach($groupOrder->orderList as $orderInfo){ + foreach($orderInfo->orderProduct as $orderProductInfo){ + // 获取商户设置抽成比例 获取抽成总金额 + $platformCommissionRate = (float)Merchant::getDB()->where('mer_id', $orderInfo->mer_id)->value('platform_commission'); + // 使用商品售价进行处理 + if($orderProductInfo->total_price > 0 && $platformCommissionRate > 0){ + // 获取平台抽成中总金额 + $platformCommissionMoney = (float)sprintf("%.2f",$orderProductInfo->total_price * $platformCommissionRate / 100); + // 生成信息数组 + $insertData[] = [ + 'uid' => $orderProductInfo->uid, + 'order_id' => $orderProductInfo->order_id, + 'order_total_price' => $orderInfo->total_price, + 'order_product_id' => $orderProductInfo->order_product_id, + 'order_product_total_price' => $orderProductInfo->total_price, + 'mer_id' => $orderInfo->mer_id, + 'platform_commission_rate' => $platformCommissionRate, + 'platform_commission_money' => $platformCommissionMoney, + 'commission_platform_rate' => $set['commission_platform_rate'], + 'commission_platform_money' => (float)sprintf("%.2f",$platformCommissionMoney * $set['commission_platform_rate'] / 100), + 'commission_partner_rate' => $set['commission_partner_rate'], + 'commission_partner_money' => (float)sprintf("%.2f",$platformCommissionMoney * $set['commission_partner_rate'] / 100), + 'commission_merchants_rate' => $set['commission_merchants_rate'], + 'commission_merchants_money' => (float)sprintf("%.2f",$platformCommissionMoney * $set['commission_merchants_rate'] / 100), + 'commission_promoter_rate' => $set['commission_promoter_rate'], + 'commission_promoter_money' => (float)sprintf("%.2f",$platformCommissionMoney * $set['commission_promoter_rate'] / 100), + 'commission_integral_release_rate' => $set['commission_integral_release_rate'], + 'commission_integral_release_money' => (float)sprintf("%.2f",$platformCommissionMoney * $set['commission_integral_release_rate'] / 100), + ]; + } + } + } + + $this->dao->insertAll($insertData); + return true; + } + + + + + + + + + + + + + + + + +} diff --git a/app/controller/admin/user/PlatformCommission.php b/app/controller/admin/store/marketing/PlatformCommission.php similarity index 67% rename from app/controller/admin/user/PlatformCommission.php rename to app/controller/admin/store/marketing/PlatformCommission.php index 89176c2..66789b7 100644 --- a/app/controller/admin/user/PlatformCommission.php +++ b/app/controller/admin/store/marketing/PlatformCommission.php @@ -2,8 +2,9 @@ -namespace app\controller\admin\user; +namespace app\controller\admin\store\marketing; +use app\common\repositories\store\platformCommission\RecordRepository; use app\common\repositories\system\config\ConfigClassifyRepository; use app\common\repositories\system\config\ConfigValueRepository; use app\validate\admin\platformCommission\ConfigValidate; @@ -13,8 +14,10 @@ use think\App; class PlatformCommission extends BaseController{ protected $repository; - public function __construct(App $app){ + public function __construct(App $app,RecordRepository $repository){ parent::__construct($app); + + $this->repository = $repository; } /** @@ -24,22 +27,8 @@ class PlatformCommission extends BaseController{ * @return mixed */ public function getConfig(){ - $default = [ - 'is_open' => 0, - 'commission_platform_rate' => 0, - 'commission_partner_rate' => 0, - 'commission_partner_cycle' => 0, - 'commission_merchants_rate' => 0, - 'commission_promoter_rate' => 0, - 'commission_integral_release_rate' => 0 - ]; - $config = systemConfig(array_keys($default)); - $config = array_filter($config,function($v){ - return $v !== ''; - }) + $default; - - return app('json')->success($config); + return app('json')->success($this->repository->getBaseConfig()); } /** * Common: 编辑配置信息 @@ -71,13 +60,4 @@ class PlatformCommission extends BaseController{ - - - - - - - - - } diff --git a/app/event.php b/app/event.php index 38c1e8e..1a6c072 100644 --- a/app/event.php +++ b/app/event.php @@ -4,7 +4,6 @@ // 事件定义文件 return [ 'bind' => [], - 'listen' => [ 'AppInit' => [], 'HttpRun' => [], @@ -53,7 +52,11 @@ return [ 'pay_success_order' => [\crmeb\listens\pay\OrderPaySuccessListen::class], 'pay_success_presell' => [\crmeb\listens\pay\PresellPaySuccessListen::class], 'pay_success_meal' => [\crmeb\listens\pay\MealSuccessListen::class], + // 订单支付成功事件触发 + 'order.paySuccess' => [ + // 支付成功处理平台抽成 + 'app\listener\platformCommission\OrderPaySuccessEvent' + ], ], - 'subscribe' => [], ]; diff --git a/app/listener/platformCommission/OrderPaySuccessEvent.php b/app/listener/platformCommission/OrderPaySuccessEvent.php new file mode 100644 index 0000000..a2ba6c3 --- /dev/null +++ b/app/listener/platformCommission/OrderPaySuccessEvent.php @@ -0,0 +1,19 @@ +$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1)); + + app()->make(RecordRepository::class)->orderPaySuccessHandle($groupOrder); + } + + +} \ No newline at end of file diff --git a/crmeb/services/WechatTemplateMessageService.php b/crmeb/services/WechatTemplateMessageService.php index 9664e5d..ad2421a 100644 --- a/crmeb/services/WechatTemplateMessageService.php +++ b/crmeb/services/WechatTemplateMessageService.php @@ -72,7 +72,7 @@ class WechatTemplateMessageService { event('wechat.subscribeTemplate.before',compact('data')); $res = $this->subscribeTemplateMessage($data); - Log::info('订阅消息发送Data' . var_export($data, 1)); + // Log::info('订阅消息发送Data' . var_export($data, 1)); if(!$res || !is_array($res))return true; foreach($res as $item){ diff --git a/route/admin/marketing.php b/route/admin/marketing.php index f6bf71c..32ae429 100644 --- a/route/admin/marketing.php +++ b/route/admin/marketing.php @@ -425,7 +425,8 @@ Route::group(function () { ] ]); // 平台抽成 - Route::group('user/platformCommission', function () { + Route::group('marketing/platformCommission', function () { + // 设置处理 Route::get('config', '.platformCommission/getConfig')->name('platformCommissionConfig')->option([ '_alias' => '设置获取', ]); @@ -438,7 +439,7 @@ Route::group(function () { - })->prefix('admin.user')->option([ + })->prefix('admin.store.marketing')->option([ '_path' => '/marketing/platformCommission/index', '_auth' => true, ]);