优化:退款成功 - 退回抵扣积分
This commit is contained in:
parent
dcd4be4234
commit
7f7a57d7a7
|
|
@ -133,6 +133,40 @@ class LegumesLogRepository extends BaseRepository{
|
||||||
|
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Common: 查询已使用积分的分配信息 尽可能查询需要的信息
|
||||||
|
* Author: wu-hui
|
||||||
|
* Time: 2024/01/03 14:27
|
||||||
|
* @param int $uid
|
||||||
|
* @param float $maxIntegral
|
||||||
|
* @param int $limit
|
||||||
|
* @return array
|
||||||
|
* @throws \think\db\exception\DataNotFoundException
|
||||||
|
* @throws \think\db\exception\DbException
|
||||||
|
* @throws \think\db\exception\ModelNotFoundException
|
||||||
|
*/
|
||||||
|
public function getUsedList(int $uid,float $maxIntegral,int $limit = 5){
|
||||||
|
$model = $this->dao->getSearch([])
|
||||||
|
->field('id,get_integral,use_integral')
|
||||||
|
->where('uid', (int)$uid)
|
||||||
|
->where('use_integral','>',0)
|
||||||
|
->where('status', 1)
|
||||||
|
->order('id DESC');
|
||||||
|
$count = $model->count();
|
||||||
|
$list = $model->limit($limit)->select()->toArray();
|
||||||
|
if($count > $limit){
|
||||||
|
$totalSurplusIntegral = array_sum(array_column($list,'use_integral'));
|
||||||
|
if($maxIntegral > $totalSurplusIntegral) {
|
||||||
|
$limit = $limit + 5;
|
||||||
|
return $this->getUsedList($uid,$maxIntegral,$limit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $list;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Common: 获取用户可用积分
|
* Common: 获取用户可用积分
|
||||||
* Author: wu-hui
|
* Author: wu-hui
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class CommissionMerchantsSettlementJob implements JobInterface{
|
||||||
|
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info('招商员佣金结算 - 开始处理: '.var_export($data,1));
|
// Log::info('招商员佣金结算 - 开始处理: '.var_export($data,1));
|
||||||
$list = app()->make(RecordRepository::class)
|
$list = app()->make(RecordRepository::class)
|
||||||
->getSearch([])
|
->getSearch([])
|
||||||
->field(['id','uid','mer_id','order_id','commission_merchants_money'])
|
->field(['id','uid','mer_id','order_id','commission_merchants_money'])
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class CommissionPromoterSettlementJob implements JobInterface{
|
||||||
|
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info('推广员佣金结算 - 开始处理: '.var_export($data,1));
|
// Log::info('推广员佣金结算 - 开始处理: '.var_export($data,1));
|
||||||
$list = app()->make(RecordRepository::class)
|
$list = app()->make(RecordRepository::class)
|
||||||
->getSearch([])
|
->getSearch([])
|
||||||
->field(['id','uid','mer_id','order_id','commission_promoter_money'])
|
->field(['id','uid','mer_id','order_id','commission_promoter_money'])
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ class GiveWeightValueJob implements JobInterface{
|
||||||
|
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info('下单赠送权重值 - 开始处理: '.var_export($data,1));
|
// Log::info('下单赠送权重值 - 开始处理: '.var_export($data,1));
|
||||||
// 获取所有用户的持有信息
|
// 获取所有用户的持有信息
|
||||||
$userList = app()->make(WeightValueRepository::class)->getUserHoldList($data['uid']);
|
$userList = app()->make(WeightValueRepository::class)->getUserHoldList($data['uid']);
|
||||||
$orderIds = StoreOrder::where('group_order_id',$data['group_order_id'])->column('order_id');// 获取订单id
|
$orderIds = StoreOrder::where('group_order_id',$data['group_order_id'])->column('order_id');// 获取订单id
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class UseLegumesIntegralJob implements JobInterface{
|
||||||
|
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info('豆豆积分使用 - 开始处理: '.var_export($data,1));
|
// Log::info('豆豆积分使用 - 开始处理: '.var_export($data,1));
|
||||||
// 获取订单信息
|
// 获取订单信息
|
||||||
$orderInfo = app()->make(StoreOrderRepository::class)
|
$orderInfo = app()->make(StoreOrderRepository::class)
|
||||||
->getSearch([])
|
->getSearch([])
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ use think\facade\Log;
|
||||||
class HandleCommissionMoneyJob implements JobInterface{
|
class HandleCommissionMoneyJob implements JobInterface{
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info("订单退款成功 - 招商员佣金&推广员佣金处理 - 开始处理: ".var_export($data,1));
|
// Log::info("订单退款成功 - 招商员佣金&推广员佣金处理 - 开始处理: ".var_export($data,1));
|
||||||
$recordInfo = Record::where('order_product_id',$data['order_product_id'])
|
$recordInfo = Record::where('order_product_id',$data['order_product_id'])
|
||||||
->field(['id','uid','mer_id','order_id','commission_merchants_money','commission_promoter_money'])
|
->field(['id','uid','mer_id','order_id','commission_merchants_money','commission_promoter_money'])
|
||||||
->with([
|
->with([
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ use think\facade\Log;
|
||||||
class HandleCommissionPartnerMoneyJob implements JobInterface{
|
class HandleCommissionPartnerMoneyJob implements JobInterface{
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info("订单退款成功 - 合伙人佣金处理 - 开始处理: ".var_export($data,1));
|
// Log::info("订单退款成功 - 合伙人佣金处理 - 开始处理: ".var_export($data,1));
|
||||||
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
||||||
// 待结算-结算时处理,已结算-减少用户已获得佣金,2、3-无处理
|
// 待结算-结算时处理,已结算-减少用户已获得佣金,2、3-无处理
|
||||||
if($platformCommissionRecord->commission_partner_status == 1){
|
if($platformCommissionRecord->commission_partner_status == 1){
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
<?php
|
||||||
|
namespace app\jobs\store\platformCommission\refundOrderHandle;
|
||||||
|
|
||||||
|
|
||||||
|
use app\common\model\store\order\StoreOrderProduct;
|
||||||
|
use app\common\model\store\platformCommission\LegumesLog;
|
||||||
|
use app\common\repositories\store\platformCommission\LegumesLogRepository;
|
||||||
|
use app\common\repositories\user\UserBillRepository;
|
||||||
|
use crmeb\interfaces\JobInterface;
|
||||||
|
use think\facade\Log;
|
||||||
|
|
||||||
|
|
||||||
|
class HandleIntegralJob implements JobInterface{
|
||||||
|
public function fire($job,$data){
|
||||||
|
try{
|
||||||
|
Log::info("订单退款成功 - 抵扣积分退回 - 开始处理: ".var_export($data,1));
|
||||||
|
// 获取订单商品信息
|
||||||
|
$orderProductInfo = StoreOrderProduct::field('uid,order_id,use_legumes_integral')->where('order_product_id',$data['order_product_id'])->find();
|
||||||
|
$useLegumesIntegral = $orderProductInfo->use_legumes_integral ?? 0;
|
||||||
|
$uid = $orderProductInfo->uid ?? 0;
|
||||||
|
if($useLegumesIntegral > 0 && $uid > 0){
|
||||||
|
// 计算退回积分
|
||||||
|
$returnIntegral = (float)sprintf("%.2f",$useLegumesIntegral * $data['refund_rate'] / 100);
|
||||||
|
// 获取退回的记录列表
|
||||||
|
$useLegumesLogList = app()->make(LegumesLogRepository::class)->getUsedList((int)$uid,(float)$returnIntegral);
|
||||||
|
// 循环处理
|
||||||
|
$returnComputeIntegral = $returnIntegral;// 计算用 退回积分
|
||||||
|
$updateData = [];
|
||||||
|
foreach($useLegumesLogList as $logInfo){
|
||||||
|
// 当前分配信息可退回积分 剩余可退回积分
|
||||||
|
$reduce = $returnComputeIntegral < $logInfo['use_integral'] ? $returnComputeIntegral : $logInfo['use_integral'];
|
||||||
|
$returnComputeIntegral = (float)sprintf("%.2f",$returnComputeIntegral - $reduce);
|
||||||
|
$updateData[] = [
|
||||||
|
'id' => $logInfo['id'],
|
||||||
|
'use_integral' => (float)sprintf("%.2f",$logInfo['use_integral'] - $reduce)
|
||||||
|
];
|
||||||
|
if($returnComputeIntegral <= 0) break;
|
||||||
|
}
|
||||||
|
if($updateData){
|
||||||
|
LegumesLog::batchUpdate(array_values($updateData));
|
||||||
|
// 获取用户可用豆豆积分
|
||||||
|
$hold_legumes_integral = app()->make(LegumesLogRepository::class)->getHoldLegumesIntegral((int)$uid);
|
||||||
|
// 添加用户账单信息变更记录
|
||||||
|
$mark = '订单退款 - 退回抵扣积分:'.$returnIntegral;
|
||||||
|
$bills[] = [
|
||||||
|
'uid' => (int)$uid,
|
||||||
|
'link_id' => $orderProductInfo->order_id ?? 0,
|
||||||
|
'pm' => 1,
|
||||||
|
'title' => '订单退款 - 退回积分',
|
||||||
|
'category' => 'integral',
|
||||||
|
'type' => 'deduction',
|
||||||
|
'number' => (float)$returnIntegral,
|
||||||
|
'balance' => $hold_legumes_integral,
|
||||||
|
'mark' => $mark,
|
||||||
|
'mer_id' => 0,
|
||||||
|
'status' => 1
|
||||||
|
];
|
||||||
|
app()->make(UserBillRepository::class)->insertAll($bills);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(\Exception $e){
|
||||||
|
$data['error_msg'] = $e->getMessage();
|
||||||
|
Log::info('订单退款成功 - 抵扣积分退回 - 失败: '.var_export($data,1));
|
||||||
|
}
|
||||||
|
$job->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function failed($data){
|
||||||
|
Log::info('订单退款成功 - 抵扣积分退回 - 失败(failed): '.var_export($data,1));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -20,7 +20,7 @@ use think\facade\Queue;
|
||||||
class HandleLegumesJob implements JobInterface{
|
class HandleLegumesJob implements JobInterface{
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info("订单退款成功 - 豆豆和积分 - 开始处理: ".var_export($data,1));
|
// Log::info("订单退款成功 - 豆豆和积分 - 开始处理: ".var_export($data,1));
|
||||||
// 获取当前抽成信息
|
// 获取当前抽成信息
|
||||||
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
||||||
// 判断:当前抽成豆豆信息是否已经结算,未结算-无操作处理(结算时处理退款内容);已结算-处理退款相关内容
|
// 判断:当前抽成豆豆信息是否已经结算,未结算-无操作处理(结算时处理退款内容);已结算-处理退款相关内容
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ use think\facade\Log;
|
||||||
class HandlePlatformCommissionRecordJob implements JobInterface{
|
class HandlePlatformCommissionRecordJob implements JobInterface{
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info("订单退款成功 - 平台抽成记录处理 - 开始处理: ".var_export($data,1));
|
// Log::info("订单退款成功 - 平台抽成记录处理 - 开始处理: ".var_export($data,1));
|
||||||
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
$platformCommissionRecord = Record::where('order_product_id',$data['order_product_id'])->find();
|
||||||
$platformCommissionRecord->refund_ratio += $data['refund_rate'];
|
$platformCommissionRecord->refund_ratio += $data['refund_rate'];
|
||||||
if($platformCommissionRecord->refund_ratio >= 100){
|
if($platformCommissionRecord->refund_ratio >= 100){
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ use think\facade\Log;
|
||||||
class HandleWeightValueJob implements JobInterface{
|
class HandleWeightValueJob implements JobInterface{
|
||||||
public function fire($job,$data){
|
public function fire($job,$data){
|
||||||
try{
|
try{
|
||||||
Log::info("订单退款成功 - 权重值相关处理 - 开始处理: ".var_export($data,1));
|
// Log::info("订单退款成功 - 权重值相关处理 - 开始处理: ".var_export($data,1));
|
||||||
|
|
||||||
$weightValueLogList = WeightValueLog::where('order_product_id',$data['order_product_id'])
|
$weightValueLogList = WeightValueLog::where('order_product_id',$data['order_product_id'])
|
||||||
->where('change_type',1)
|
->where('change_type',1)
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ namespace app\listener\platformCommission;
|
||||||
use app\common\repositories\store\order\StoreRefundProductRepository;
|
use app\common\repositories\store\order\StoreRefundProductRepository;
|
||||||
use app\jobs\store\platformCommission\refundOrderHandle\HandleCommissionMoneyJob;
|
use app\jobs\store\platformCommission\refundOrderHandle\HandleCommissionMoneyJob;
|
||||||
use app\jobs\store\platformCommission\refundOrderHandle\HandleCommissionPartnerMoneyJob;
|
use app\jobs\store\platformCommission\refundOrderHandle\HandleCommissionPartnerMoneyJob;
|
||||||
|
use app\jobs\store\platformCommission\refundOrderHandle\HandleIntegralJob;
|
||||||
use app\jobs\store\platformCommission\refundOrderHandle\HandleLegumesJob;
|
use app\jobs\store\platformCommission\refundOrderHandle\HandleLegumesJob;
|
||||||
use app\jobs\store\platformCommission\refundOrderHandle\HandlePlatformCommissionRecordJob;
|
use app\jobs\store\platformCommission\refundOrderHandle\HandlePlatformCommissionRecordJob;
|
||||||
use app\jobs\store\platformCommission\refundOrderHandle\HandleWeightValueJob;
|
use app\jobs\store\platformCommission\refundOrderHandle\HandleWeightValueJob;
|
||||||
|
|
@ -25,7 +26,7 @@ class OrderAgreeRefundEvent{
|
||||||
public function handle($data){
|
public function handle($data){
|
||||||
try{
|
try{
|
||||||
$refund = $data['refund'];
|
$refund = $data['refund'];
|
||||||
Log::info('订单进入退款成功 - 平台抽成相关处理 - 开始:'.var_export(['id' => $data['id']],1));
|
// Log::info('订单进入退款成功 - 平台抽成相关处理 - 开始:'.var_export(['id' => $data['id']],1));
|
||||||
$refundProductList = app()->make(StoreRefundProductRepository::class)
|
$refundProductList = app()->make(StoreRefundProductRepository::class)
|
||||||
->getSearch([])
|
->getSearch([])
|
||||||
->field('order_product_id,refund_price,refund_num,refund_legumes_integral')
|
->field('order_product_id,refund_price,refund_num,refund_legumes_integral')
|
||||||
|
|
@ -67,9 +68,19 @@ class OrderAgreeRefundEvent{
|
||||||
'order_product_id' => $refundProductInfo['order_product_id'],
|
'order_product_id' => $refundProductInfo['order_product_id'],
|
||||||
'refund_rate' => $refundRate
|
'refund_rate' => $refundRate
|
||||||
]);
|
]);
|
||||||
|
// 抵扣积分退回
|
||||||
|
Queue::push(HandleIntegralJob::class,[
|
||||||
|
'order_product_id' => $refundProductInfo['order_product_id'],
|
||||||
|
'refund_rate' => $refundRate
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
Log::info('订单进入退款成功 - 平台抽成相关处理 - 错误:'.$e->getMessage());
|
$error = [
|
||||||
|
'id' => $data['id'],
|
||||||
|
'msg' => $e->getMessage()
|
||||||
|
];
|
||||||
|
|
||||||
|
Log::info('订单进入退款成功 - 平台抽成相关处理 - 错误:'.var_export($error,1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -16,9 +16,9 @@ class OrderPaySuccessEvent{
|
||||||
public $groupOrder;
|
public $groupOrder;
|
||||||
|
|
||||||
public function handle($groupOrder){
|
public function handle($groupOrder){
|
||||||
try{
|
|
||||||
$groupOrder = $groupOrder['groupOrder'];
|
$groupOrder = $groupOrder['groupOrder'];
|
||||||
Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
|
try{
|
||||||
|
// Log::info('支付成功 - 平台抽成处理 - 开始: '.var_export(['uid'=>$groupOrder->uid,'group_order_id'=>$groupOrder->group_order_id],1));
|
||||||
$this->orderPaySuccessHandle($groupOrder);
|
$this->orderPaySuccessHandle($groupOrder);
|
||||||
// 订单支付成功 触发购买商品升级
|
// 订单支付成功 触发购买商品升级
|
||||||
Queue::push(UserBrokerageLevelJob::class,[
|
Queue::push(UserBrokerageLevelJob::class,[
|
||||||
|
|
@ -33,7 +33,12 @@ class OrderPaySuccessEvent{
|
||||||
'group_order_id' => $groupOrder->group_order_id
|
'group_order_id' => $groupOrder->group_order_id
|
||||||
]);
|
]);
|
||||||
}catch(\Exception $e){
|
}catch(\Exception $e){
|
||||||
Log::info('支付成功 - 平台抽成处理 - 错误: '.$e->getMessage());
|
$data = [
|
||||||
|
'uid' => $groupOrder->uid,
|
||||||
|
'group_order_id' => $groupOrder->group_order_id,
|
||||||
|
'msg' => $e->getMessage()
|
||||||
|
];
|
||||||
|
Log::info('支付成功 - 平台抽成处理 - 错误: '.var_export($data,1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue