diff --git a/app/common/dao/store/consumption/CommissionDao.php b/app/common/dao/store/consumption/CommissionDao.php index 91795232..9fd8e872 100755 --- a/app/common/dao/store/consumption/CommissionDao.php +++ b/app/common/dao/store/consumption/CommissionDao.php @@ -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(); diff --git a/app/common/dao/store/consumption/StoreConsumptionUserDao.php b/app/common/dao/store/consumption/StoreConsumptionUserDao.php index 4a35ebc8..4e8f83ed 100755 --- a/app/common/dao/store/consumption/StoreConsumptionUserDao.php +++ b/app/common/dao/store/consumption/StoreConsumptionUserDao.php @@ -42,6 +42,8 @@ class StoreConsumptionUserDao extends BaseDao /** @var float $consumptionTotalAmount 红包总金额 */ public $consumptionTotalAmount; + /** @var int $orderType 订单类型:1 groupOrder,2 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 ]); }