feat(StoreFinanceFlowLogic): 修改了财务流水退还逻辑,添加了商户ID参数,优化了退款流程,提高了资金流水的准确性,并更新了相关API接口。

This commit is contained in:
mkm 2024-08-20 21:09:50 +08:00
parent b31a2fff15
commit bc2ed0635a
3 changed files with 16 additions and 10 deletions

View File

@ -357,7 +357,7 @@ class DemoPayNotifyLogic extends BaseLogic
//微信日志 user_order_refund //微信日志 user_order_refund
$capitalFlowDao->userIncome('user_order_refund', 'system_back', $order['id'], $deal_money, '', 1); $capitalFlowDao->userIncome('user_order_refund', 'system_back', $order['id'], $deal_money, '', 1);
//处理财务流水退还 //处理财务流水退还
(new StoreFinanceFlowLogic())->store_finance_back($orderSn); (new StoreFinanceFlowLogic())->store_finance_back($orderSn,$order['store_id']);
self::addStock($order['id']); //微信 self::addStock($order['id']); //微信
return true; return true;
// self::afterPay($order,$extra['transaction_id']); // self::afterPay($order,$extra['transaction_id']);

View File

@ -324,7 +324,7 @@ class PayNotifyLogic extends BaseLogic
StoreOrderCartInfo::where('oid', $order['id'])->update(['status' => OrderEnum::REFUND_STATUS_FINISH]); StoreOrderCartInfo::where('oid', $order['id'])->update(['status' => OrderEnum::REFUND_STATUS_FINISH]);
//处理财务流水退还 //处理财务流水退还
(new StoreFinanceFlowLogic())->store_finance_back($orderSn); (new StoreFinanceFlowLogic())->store_finance_back($orderSn,$order['store_id']);
if (in_array($order['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) { if (in_array($order['pay_type'], [PayEnum::BALANCE_PAY, PayEnum::PURCHASE_FUNDS])) {
if ($order['pay_type'] == PayEnum::BALANCE_PAY) { //用户余额支付 if ($order['pay_type'] == PayEnum::BALANCE_PAY) { //用户余额支付
$user = User::where('id', $order['uid'])->findOrEmpty(); $user = User::where('id', $order['uid'])->findOrEmpty();
@ -393,6 +393,7 @@ class PayNotifyLogic extends BaseLogic
//增加数量 //增加数量
self::addStock($order['id']); self::addStock($order['id']);
StoreOrderCartInfo::where('oid', $order['id'])->update(['status' => OrderEnum::REFUND_STATUS_FINISH]); StoreOrderCartInfo::where('oid', $order['id'])->update(['status' => OrderEnum::REFUND_STATUS_FINISH]);
(new StoreFinanceFlowLogic())->store_finance_back($orderSn,$order['store_id']);
return true; return true;
} }

View File

@ -176,39 +176,44 @@ class StoreFinanceFlowLogic extends BaseLogic
* @throws \think\db\exception\DbException * @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException * @throws \think\db\exception\ModelNotFoundException
*/ */
public function store_finance_back($orderSn) public function store_finance_back($orderSn, $store_id)
{ {
$list=StoreFinanceFlow::where('order_sn', $orderSn) $list = StoreFinanceFlow::where('order_sn', $orderSn)
->where(['financial_pm' => 1, 'status' => 1]) ->where(['financial_pm' => 1, 'status' => 1])
->select(); ->select();
foreach ($list as $k => $value) { foreach ($list as $k => $value) {
//用户 //用户
switch ($value['type']) { switch ($value['type']) {
case 0: case 0:
if ($value['financial_type'] == 12&& $value['other_uid']>0) { if ($value['financial_type'] == 12 && $value['other_uid'] > 0) {
$user = User::where('id', $value['other_uid'])->findOrEmpty(); $user = User::where('id', $value['other_uid'])->findOrEmpty();
$capitalFlowDao = new CapitalFlowLogic($user); $capitalFlowDao = new CapitalFlowLogic($user);
$user->now_money = bcsub($user['now_money'],$value['number'], 2); $user->now_money = bcsub($user['now_money'], $value['number'], 2);
$user->save(); $user->save();
// Log::error('aa'.$a); // Log::error('aa'.$a);
// Log::error('aa'.$user['now_money']); // Log::error('aa'.$user['now_money']);
// Log::error('aa'.$value['number']); // Log::error('aa'.$value['number']);
$capitalFlowDao->userExpense('user_order_promotion_refund', 'system_back', $value['order_id'], $value['number'],'',$value['pay_type']); $capitalFlowDao->userExpense('user_order_promotion_refund', 'system_back', $value['order_id'], $value['number'], '', $value['pay_type']);
} }
break; break;
//商户 //商户
case 1: case 1:
$store = SystemStore::where('id', $store_id)->find();
$capitalFlowDao = new CapitalFlowLogic($store, 'store');
if ($value['number'] > 0 && $value['financial_type'] == 2) { if ($value['number'] > 0 && $value['financial_type'] == 2) {
SystemStore::where('id', $value['store_id'])->dec('store_money', $value['number'])->update(); SystemStore::where('id', $value['store_id'])->dec('store_money', $value['number'])->update();
$capitalFlowDao->storeExpense('store_paid_deposit_dec', 'order', $value['order_id'],$value['number']);
} }
if ($value['number'] > 0 && $value['financial_type'] == 16) { if ($value['number'] > 0 && $value['financial_type'] == 16) {
SystemStore::where('id', $value['store_id'])->dec('attrition', $value['number'])->update(); SystemStore::where('id', $value['store_id'])->dec('attrition', $value['number'])->update();
$capitalFlowDao->storeExpense('store_attrition_dec', 'order', $value['order_id'], $value['number']);
} }
break; break;
} }
} }
$find = StoreFinanceFlow::where('order_sn', $orderSn)->where('financial_type', 11)->where('status',1)->find(); $find = StoreFinanceFlow::where('order_sn', $orderSn)->where('financial_type', 11)->where('status', 1)->find();
if ($find && $find['number'] > 0) { if ($find && $find['number'] > 0) {
SystemStore::where('id', $find['store_id'])->dec('paid_deposit', $find['number'])->update(); SystemStore::where('id', $find['store_id'])->dec('paid_deposit', $find['number'])->update();
} }
@ -220,7 +225,7 @@ class StoreFinanceFlowLogic extends BaseLogic
// $value['financial_type'] = OrderEnum::PAY_BACK; // $value['financial_type'] = OrderEnum::PAY_BACK;
// $value['create_time'] = time(); // $value['create_time'] = time();
// } // }
StoreFinanceFlow::where('order_sn', $orderSn)->update(['status'=>-1]); StoreFinanceFlow::where('order_sn', $orderSn)->update(['status' => -1]);
// (new StoreFinanceFlow)->saveAll($data); // (new StoreFinanceFlow)->saveAll($data);
} }
} }