添加:购商品支付成功后生成平台抽成记录
This commit is contained in:
parent
3d1b982e2f
commit
b5bf05b24a
|
|
@ -0,0 +1,23 @@
|
|||
<?php
|
||||
|
||||
|
||||
|
||||
|
||||
namespace app\common\dao\store\platformCommission;
|
||||
|
||||
use app\common\dao\BaseDao;
|
||||
use app\common\model\store\platformCommission\Record;
|
||||
|
||||
class RecordDao extends BaseDao{
|
||||
|
||||
protected function getModel():string{
|
||||
return Record::class;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
|
||||
|
||||
namespace app\common\model\store\platformCommission;
|
||||
|
||||
use app\common\model\BaseModel;
|
||||
use think\model\concern\SoftDelete;
|
||||
|
||||
class Record extends BaseModel
|
||||
{
|
||||
use SoftDelete;
|
||||
|
||||
protected $deleteTime = 'is_del';
|
||||
protected $defaultSoftDelete = 0;
|
||||
|
||||
public static function tablePk():string{
|
||||
return 'id';
|
||||
}
|
||||
public static function tableName():string{
|
||||
return 'platform_commission_record';
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
<?php
|
||||
|
||||
|
||||
|
||||
namespace app\common\repositories\store\platformCommission;
|
||||
|
||||
|
||||
use app\common\dao\store\platformCommission\RecordDao;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
use app\common\repositories\BaseRepository;
|
||||
use think\facade\Log;
|
||||
|
||||
class RecordRepository extends BaseRepository{
|
||||
|
||||
protected $dao;
|
||||
|
||||
public function __construct(RecordDao $dao){
|
||||
$this->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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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{
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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' => [],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
|
||||
namespace app\listener\platformCommission;
|
||||
|
||||
use app\common\repositories\store\platformCommission\RecordRepository;
|
||||
use think\facade\Log;
|
||||
|
||||
class OrderPaySuccessEvent{
|
||||
public $groupOrder;
|
||||
|
||||
public function handle($groupOrder){
|
||||
$groupOrder = $groupOrder['groupOrder'];
|
||||
Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
|
||||
|
||||
app()->make(RecordRepository::class)->orderPaySuccessHandle($groupOrder);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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){
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
]);
|
||||
|
|
|
|||
Loading…
Reference in New Issue