调试供应链订单退款

This commit is contained in:
luofei 2024-02-03 11:16:43 +08:00
parent d3ef2fa0bf
commit ca226a4d2a
2 changed files with 25 additions and 18 deletions

View File

@ -9,6 +9,7 @@ use app\common\model\store\order\StoreOrder;
use app\common\model\system\merchant\FinancialRecord;
use app\common\model\system\merchant\Merchant;
use app\common\model\user\User;
use app\common\model\user\UserBill;
use app\common\repositories\system\merchant\MerchantRepository;
use crmeb\utils\Curl;
use think\facade\Log;
@ -32,7 +33,7 @@ class CommissionDao
// 订单为自提且佣金大于0
$financeDao->user = $order->user;
$financeDao->order = $order;
$financeDao->platformOut($commission, 'commission_to_store');
$financeDao->platformOut($commission, 'commission_to_store', $order['mer_id']);
app()->make(MerchantRepository::class)->addLockMoney($order['mer_id'], 'order', $order['order_id'], $commission);
}
$consumption = StoreConsumption::where('status', 1)->where('type', StoreConsumption::TYPE_FIRST_ORDER_COMMISSION)->find();
@ -54,8 +55,8 @@ class CommissionDao
$commission = bcmul($order['pay_price'], 0.03, 2);
$financeDao->user = $user;
$financeDao->order = $order;
$financeDao->platformOut($commission, 'commission_to_promoter');
app()->make(MerchantRepository::class)->addLockMoney($order['mer_id'], 'order', $order['order_id'], $commission);
$financeDao->platformOut($commission, 'commission_to_promoter', $merchantId);
app()->make(MerchantRepository::class)->addLockMoney($merchantId, 'order', $order['order_id'], $commission);
$redPack = bcmul($order['pay_price'], $consumption['config']['red_pack_rate'], 2);
if ($redPack > 0) {
try {
@ -161,32 +162,28 @@ class CommissionDao
if ($refunded > 0) {
return;
}
$commission = bcmul($refundOrder->order['pay_price'], 0.01, 2);
$financeDao = new FinancialDao();
if ($commission > 0 && $refundOrder->order['order_type'] == 1 && $refundOrder->order['source'] != 105) {
// 订单为自提且佣金大于0下单的店铺退佣金
$financeDao->user = $refundOrder->order->user;
$financeDao->order = $refundOrder->order;
$financeDao->platformIn($commission, 'commission_to_store_refund', $refundOrder->order['mer_id']);
app()->make(MerchantRepository::class)->subLockMoney($refundOrder->order['mer_id'], 'order', $refundOrder->order['order_id'], $commission);
}
// 退佣金和红包
$financeRecord = FinancialRecord::where('order_id', $refundOrder->order['order_id'])
->whereIn('financial_type', ['commission_to_store', 'commission_to_courier', 'commission_to_promoter'])
->field('user_id uid,user_info nickname')->select()->toArray();
->field('user_id uid,user_info nickname,number,mer_id,financial_type')->select()->toArray();
if (empty($financeRecord)) {
return;
}
$redPack = bcmul($refundOrder->order['pay_price'], 0.07, 2);
$financeDao = new FinancialDao();
foreach ($financeRecord as $item) {
$financeDao->user = $item;
$financeDao->order = $refundOrder->order;
$financeDao->platformIn($item['number'], $item['financial_type'] . '_refund');
(new StoreConsumptionUserDao())->refundByCommission($item['uid'], $refundOrder->order->order_id, $redPack);
$financeDao->platformIn($item['number'], $item['financial_type'] . '_refund', $item['mer_id']);
if ($item['mer_id'] > 0) {
app()->make(MerchantRepository::class)->subLockMoney($item['mer_id'], 'order', $refundOrder->order['order_id'], $item['number']);
}
}
$financeDao->save();
// TODO 服务团队退红包
// $redPacks = UserBill::whereIn('');
// (new StoreConsumptionUserDao())->refundByCommission($item['uid'], $refundOrder->order->order_id, $redPack);
$promotionCode = User::where('uid', $refundOrder['uid'])->value('promotion_code');
if ($promotionCode) {
$curl = new Curl();

View File

@ -42,6 +42,8 @@ class StoreConsumptionUserDao extends BaseDao
/** @var float $consumptionTotalAmount 红包总金额 */
public $consumptionTotalAmount;
/** @var int $orderType 订单类型1 groupOrder2 order */
public $orderType = 2;
protected function getModel(): string
{
@ -99,6 +101,7 @@ class StoreConsumptionUserDao extends BaseDao
$storeActivityOrderDao = new StoreActivityOrderDao();
$storeActivityOrder = $storeActivityOrderDao->save($groupOrder, $spreadUserId, $isFirstOrder);
if ($consumption['type'] == StoreConsumption::TYPE_OWNER_CONSUMPTION && $storeActivityOrder['status'] == StoreActivityOrder::STATUS_VALID && $storeActivityOrder['red_pack'] == 0) {
$this->orderType = 1;
$this->send($consumption, $scope['rate'], $userId, $groupOrder['group_order_id'], $orderValidAmount, StoreConsumptionUser::STATUS_UNUSED);
$this->send($consumption, $scope['rate_two'], $userId, $groupOrder['group_order_id'], $orderValidAmount, StoreConsumptionUser::STATUS_UNUSED, StoreConsumptionUser::TYPE_TWO);
$storeActivityOrderDao->repeal($groupOrder['group_order_id']);
@ -153,6 +156,7 @@ class StoreConsumptionUserDao extends BaseDao
$spreadOrderIds = "{$spreadGroupOrder['group_order_id']}," . $spreadOrderIds;
// 使用了红包订单有效金额需要乘以80%
$orderValidAmount = $spreadGroupOrder['red_pack'] > 0 ? bcmul($orderValidAmount, 0.8, 2) : $orderValidAmount;
$this->orderType = 1;
$this->send($spreadConsumption, $spreadScope['rate'], $spreadUserId, $spreadOrderIds, $orderValidAmount);
$storeActivityOrderDao->batchRepeal(explode(',', $spreadOrderIds));
}
@ -252,12 +256,18 @@ class StoreConsumptionUserDao extends BaseDao
// 写入红包日志
/** @var $userBillRepository UserBillRepository */
$userBillRepository = app()->make(UserBillRepository::class);
$mark = ['order_amount' => $amount, 'coupon_user_id' => $model['coupon_user_id']];
if ($this->orderType == 2) {
$mark['order_id'] = $groupOrderIds;
} else {
$mark['group_order_id'] = $groupOrderIds;
}
$userBillRepository->incBill($userId, 'red_pack', "red_pack_{$type}", [
'link_id' => $model['coupon_user_id'],
'status' => 1,
'title' => '获得' . $title,
'number' => $couponPrice,
'mark' => '获得' . $title . $couponPrice . ",订单金额:{$amount}",
'mark' => json_encode($mark, JSON_UNESCAPED_UNICODE),
'balance' => 0
]);
}