处理售后订单
parent
1bc12ba559
commit
41967565d1
|
|
@ -99,6 +99,10 @@ class OrderPackageService
|
|||
*/
|
||||
public function failPackage(OrderPackage $package)
|
||||
{
|
||||
if ($package->is_failed) {
|
||||
throw new BizException('已作废的货运单不能需要再作废了');
|
||||
}
|
||||
|
||||
//如果订单完成了,不能作废货运单
|
||||
if ($package->order->isCompleted()) {
|
||||
throw new BizException('订单已完成,无法作废该货运单');
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ namespace App\Admin\Services;
|
|||
use App\Exceptions\BizException;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderLog;
|
||||
use App\Services\OrderService as EndpointOrderService;
|
||||
|
||||
class OrderService
|
||||
{
|
||||
|
|
@ -40,13 +41,11 @@ class OrderService
|
|||
{
|
||||
if ($order->isPending()) {
|
||||
//操作订单状态-需要调整为统一支付方法
|
||||
$order->update([
|
||||
'status' => Order::STATUS_PAID,
|
||||
]);
|
||||
|
||||
OrderLog::create([
|
||||
'order_id'=>$order->id,
|
||||
'content'=> '改变订单状态为【已支付】',
|
||||
$orderService = new EndpointOrderService();
|
||||
$orderService->paySuccess($order, [
|
||||
'pay_sn' => date('YmdHis').sprintf('%02d', mt_rand(1, 99)),
|
||||
'pay_way' => Order::PAY_WAY_OFFLINE,
|
||||
'pay_at' => now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ class OrderController extends Controller
|
|||
{
|
||||
$order = $request->user()->orders()->findOrFail($id);
|
||||
$order->load('products');
|
||||
$order->load('packages');
|
||||
$order->load('lastPackage');
|
||||
|
||||
return OrderResource::make($order);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ class OrderResource extends JsonResource
|
|||
'created_at' => $this->created_at->toDateTimeString(),
|
||||
'expires_at' => $this->expires_at,
|
||||
|
||||
'packages' => OrderPackageResource::make($this->whenloaded('packages')->where('is_failed', false)->sortBy('created_at')->first()),
|
||||
'packages' => OrderPackageResource::make($this->whenLoaded('lastPackage')),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ class Order extends Model
|
|||
* 支付方式
|
||||
*/
|
||||
public const PAY_WAY_WXPAY = 'wxpay'; // 微信支付
|
||||
public const PAY_WAY_OFFLINE = 'offline'; // 现金支付
|
||||
|
||||
/**
|
||||
* @var array
|
||||
|
|
@ -122,6 +123,15 @@ class Order extends Model
|
|||
return $this->hasMany(OrderPackage::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 此订单的最新包裹
|
||||
*
|
||||
*/
|
||||
public function lastPackage()
|
||||
{
|
||||
return $this->hasOne(OrderPackage::class)->where('is_failed', false)->latestOfMany();
|
||||
}
|
||||
|
||||
/**
|
||||
* 属于此订单的退款任务
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@
|
|||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Admin\Services\OrderService;
|
||||
use App\Exceptions\BizException;
|
||||
use App\Helpers\Order as OrderHelper;
|
||||
use App\Models\AfterSale;
|
||||
use App\Models\AfterSaleLog;
|
||||
use App\Models\Order;
|
||||
use App\Models\OrderProduct;
|
||||
use App\Models\User;
|
||||
|
||||
|
|
@ -325,16 +327,56 @@ class AfterSaleService
|
|||
public function finance(AfterSale $afterSale, $remarks ='退款成功')
|
||||
{
|
||||
if ($this->isWaitFinance($afterSale)) {
|
||||
$order = $afterSale->order;
|
||||
if (in_array($afterSale->type, [AfterSale::TYPE_REFUND_AND_RETURN, AfterSale::TYPE_REFUND])) {
|
||||
//todo-执行实际退款操作;
|
||||
$order = $afterSale->order;
|
||||
$order->refundTasks()->create([
|
||||
'sn' => OrderHelper::serialNumber(),
|
||||
'amount' => $order->total_amount,
|
||||
'amount' => $afterSale->amount,
|
||||
'reason' => '取消订单',
|
||||
]);
|
||||
} elseif (in_array($afterSale->type, [AfterSale::TYPE_CHANGE])) {//换货流程
|
||||
//todo-执行生成新的订单,发货单操作;
|
||||
//todo -- 换货单的分润记录;
|
||||
|
||||
//复制一个订单(存商品价格,支付价格为0;)
|
||||
$changeOrder = new Order();
|
||||
$changeOrder->user_id = $order->user_id;
|
||||
$changeOrder->sn = OrderHelper::serialNumber();
|
||||
$changeOrder->products_total_amount = $afterSale->amount;
|
||||
$changeOrder->coupon_discount_amount = 0;
|
||||
$changeOrder->vip_discount_amount = 0;
|
||||
$changeOrder->reduced_amount = 0;
|
||||
$changeOrder->shipping_fee = 0;
|
||||
$changeOrder->total_amount = 0;
|
||||
|
||||
// 收货地址
|
||||
$changeOrder->consignee_name = $order->consignee_name;
|
||||
$changeOrder->consignee_telephone = $order->consignee_telephone;
|
||||
$changeOrder->consignee_zone = $order->consignee_zone;
|
||||
$changeOrder->consignee_address = $order->consignee_address;
|
||||
$changeOrder->save();
|
||||
|
||||
OrderProduct::create([
|
||||
'user_id' => $changeOrder->user_id,
|
||||
'order_id' => $changeOrder->id,
|
||||
'spu_id' => $afterSale->orderProduct->spu_id,
|
||||
'sku_id' => $afterSale->orderProduct->sku_id,
|
||||
'category_id' => $afterSale->orderProduct->category_id,
|
||||
'name' => $afterSale->orderProduct->name,
|
||||
'specs' => $afterSale->orderProduct->specs,
|
||||
'cover' => $afterSale->orderProduct->cover,
|
||||
'weight' => $afterSale->orderProduct->weight,
|
||||
'sell_price' => $afterSale->orderProduct->sell_price,
|
||||
'vip_price' => $afterSale->orderProduct->vip_price,
|
||||
'quantity' => $afterSale->num,
|
||||
'coupon_discount_amount'=> 0,
|
||||
'vip_discount_amount' => 0,
|
||||
'reduced_amount' => 0,
|
||||
'total_amount' => $afterSale->amount,
|
||||
]);
|
||||
|
||||
$orderService = new OrderService();
|
||||
$orderService->adminPay($changeOrder);//支付该订单
|
||||
}
|
||||
|
||||
AfterSaleLog::create([
|
||||
|
|
|
|||
Loading…
Reference in New Issue