diff --git a/app/common/model/store/platformCommission/Record.php b/app/common/model/store/platformCommission/Record.php index 38adee1..60dc864 100644 --- a/app/common/model/store/platformCommission/Record.php +++ b/app/common/model/store/platformCommission/Record.php @@ -5,6 +5,8 @@ namespace app\common\model\store\platformCommission; use app\common\model\BaseModel; +use app\common\model\system\merchant\Merchant; +use app\common\model\user\User; use think\model\concern\SoftDelete; class Record extends BaseModel @@ -23,11 +25,22 @@ class Record extends BaseModel - - - - - - - + /** + * Common: 关联用户表 + * Author: wu-hui + * Time: 2023/12/22 17:53 + * @return \think\model\relation\HasOne + */ + public function user(){ + return $this->hasOne(User::class, 'uid', 'uid'); + } + /** + * Common: 关联商户表 + * Author: wu-hui + * Time: 2023/12/22 17:53 + * @return \think\model\relation\HasOne + */ + public function mer(){ + return $this->hasOne(Merchant::class,'mer_id','mer_id'); + } } diff --git a/app/common/repositories/store/platformCommission/RecordRepository.php b/app/common/repositories/store/platformCommission/RecordRepository.php index 73022bd..72f3e2a 100644 --- a/app/common/repositories/store/platformCommission/RecordRepository.php +++ b/app/common/repositories/store/platformCommission/RecordRepository.php @@ -6,9 +6,7 @@ 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{ @@ -39,71 +37,67 @@ class RecordRepository extends BaseRepository{ }) + $default; } /** - * Common: 支付成功 平台抽成处理 + * Common: 抽成记录 - 统计 * Author: wu-hui - * Time: 2023/12/22 17:15 - * @param $groupOrder - * @return bool + * Time: 2023/12/22 17:37 + * @param $params + * @return array */ - 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), - ]; + public function getRecordStatistics($params):array{ + $orderQuery = $this->dao->getSearch([]) + ->when((int)$params['uid'] > 0,function($query) use ($params){ + $query->where('uid', (int)$params['uid']); + }) + ->when((int)$params['mer_id'] > 0,function($query) use ($params){ + $query->where('mer_id', (int)$params['mer_id']); + }); + // 信息统计 + return [ + 'order_total_price' => $orderQuery->sum('order_total_price'), + 'order_product_total_price' => $orderQuery->sum('order_product_total_price'), + 'total_platform_commission_money' => $orderQuery->sum('platform_commission_money'), + 'total_commission_platform_money' => $orderQuery->sum('commission_platform_money'), + 'total_commission_partner_money' => $orderQuery->sum('commission_partner_money'), + 'total_commission_merchants_money' => $orderQuery->sum('commission_merchants_money'), + 'total_commission_promoter_money' => $orderQuery->sum('commission_promoter_money'), + 'total_commission_integral_release_money' => $orderQuery->sum('commission_integral_release_money'), + ]; + } + /** + * Common: 抽成记录 - 信息列表 + * Author: wu-hui + * Time: 2023/12/22 17:55 + * @param array $params + * @param int $page + * @param int $limit + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function getRecordList(array $params,int $page,int $limit):array{ + $query = $this->dao->getSearch([]) + ->when((int)$params['uid'] > 0,function($query) use ($params){ + $query->where('uid', (int)$params['uid']); + }) + ->when((int)$params['mer_id'] > 0,function($query) use ($params){ + $query->where('mer_id', (int)$params['mer_id']); + }) + ->with([ + 'mer' => function($query){ + $query->field('mer_id,mer_name,mer_avatar')->bind(['mer_name','mer_avatar']); + }, + 'user' => function($query){ + $query->field('uid,nickname,avatar')->bind(['nickname','avatar']); } - } - } + ]) + ->order('create_time DESC'); + $count = $query->count(); + $list = $query->page($page,$limit)->select(); - $this->dao->insertAll($insertData); - return true; + return compact('count','list'); } - - - - - - - - - - - - - } diff --git a/app/controller/admin/store/marketing/PlatformCommission.php b/app/controller/admin/store/marketing/PlatformCommission.php index 66789b7..80e40fb 100644 --- a/app/controller/admin/store/marketing/PlatformCommission.php +++ b/app/controller/admin/store/marketing/PlatformCommission.php @@ -55,8 +55,44 @@ class PlatformCommission extends BaseController{ return app('json')->success('保存成功'); } + /** + * Common: 抽成记录 - 获取统计 + * Author: wu-hui + * Time: 2023/12/22 17:49 + * @return mixed + */ + public function recordTitle(){ + $params = $this->request->params(['uid','mer_id']); + $data = $this->repository->getRecordStatistics((array)$params); + return app('json')->success([ + // ['className' => 'el-icon-coin','count' => $data['order_total_price'],'name' => '订单总金额'], + // ['className' => 'el-icon-coin','count' => $data['order_product_total_price'],'name' => '商品总金额'], + ['className' => 'el-icon-coin','count' => $data['total_platform_commission_money'],'name' => '平台抽成总金额'], + ['className' => 'el-icon-coin','count' => $data['total_commission_platform_money'],'name' => '平台分佣总金额'], + ['className' => 'el-icon-coin','count' => $data['total_commission_partner_money'],'name' => '合伙人分佣总金额'], + ['className' => 'el-icon-coin','count' => $data['total_commission_merchants_money'],'name' => '招商员分佣总金额'], + ['className' => 'el-icon-coin','count' => $data['total_commission_promoter_money'],'name' => '推广员分佣总金额'], + ['className' => 'el-icon-coin','count' => $data['total_commission_integral_release_money'],'name' => '积分释放总金额'], + ]); + } + /** + * Common: 抽成记录 - 获取信息列表 + * Author: wu-hui + * Time: 2023/12/22 17:55 + * @return mixed + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function recordList(){ + [$page, $limit] = $this->getPage(); + $params = $this->request->params(['uid','mer_id']); + $data = $this->repository->getRecordList((array)$params,(int)$page,(int)$limit); + + return app('json')->success($data); + } diff --git a/app/listener/platformCommission/OrderPaySuccessEvent.php b/app/listener/platformCommission/OrderPaySuccessEvent.php index a2ba6c3..b43d0e9 100644 --- a/app/listener/platformCommission/OrderPaySuccessEvent.php +++ b/app/listener/platformCommission/OrderPaySuccessEvent.php @@ -2,6 +2,8 @@ namespace app\listener\platformCommission; +use app\common\model\store\platformCommission\Record; +use app\common\model\system\merchant\Merchant; use app\common\repositories\store\platformCommission\RecordRepository; use think\facade\Log; @@ -12,8 +14,61 @@ class OrderPaySuccessEvent{ $groupOrder = $groupOrder['groupOrder']; Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1)); - app()->make(RecordRepository::class)->orderPaySuccessHandle($groupOrder); + $this->orderPaySuccessHandle($groupOrder); + } + /** + * Common: 支付成功 - 平台抽成处理 + * Author: wu-hui + * Time: 2023/12/22 17:25 + * @param $groupOrder + * @return bool + */ + public function orderPaySuccessHandle($groupOrder):bool{ + // 判断:是否开启平台抽成 + $set = app()->make(RecordRepository::class)->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), + ]; + } + } + } + + Record::insertAll($insertData); + return true; } + } \ No newline at end of file diff --git a/route/admin/marketing.php b/route/admin/marketing.php index 32ae429..78d7638 100644 --- a/route/admin/marketing.php +++ b/route/admin/marketing.php @@ -433,8 +433,13 @@ Route::group(function () { Route::post('config', '.platformCommission/saveConfig')->name('platformCommissionConfigSave')->option([ '_alias' => '设置保存', ]); - - + // 抽成记录 + Route::get('record_title','.platformCommission/recordTitle')->name('platformCommissionRecordTitle')->option([ + '_alias' => '抽成统计', + ]); + Route::get('record_list', '.platformCommission/recordList')->name('platformCommissionRecordList')->option([ + '_alias' => '抽成记录', + ]);