diff --git a/app/Endpoint/Api/Http/Controllers/AfterSaleController.php b/app/Endpoint/Api/Http/Controllers/AfterSaleController.php index 53113db9..6d684236 100644 --- a/app/Endpoint/Api/Http/Controllers/AfterSaleController.php +++ b/app/Endpoint/Api/Http/Controllers/AfterSaleController.php @@ -82,7 +82,7 @@ class AfterSaleController extends Controller */ public function show($id, Request $request) { - $afterSale = $request->user()->afterSales()->find($id); + $afterSale = $request->user()->afterSales()->findOrFail($id); return AfterSaleResource::make($afterSale); } diff --git a/app/Models/AfterSale.php b/app/Models/AfterSale.php index 4f18eb2d..6fdaf0ea 100644 --- a/app/Models/AfterSale.php +++ b/app/Models/AfterSale.php @@ -97,7 +97,7 @@ class AfterSale extends Model } /** - * 取消日志 + * 取消售后订单日志 * * @return void */ @@ -110,6 +110,20 @@ class AfterSale extends Model ]); } + /** + * 完成售后订单日志 + * + * @return void + */ + protected function createFinishLog() + { + $this->logs()->create([ + 'after_sale_id' => $this->id, + 'name' => '售后完成', + 'desc' => '售后已结束', + ]); + } + /** * {@inheritdoc} */ @@ -124,6 +138,10 @@ class AfterSale extends Model if ($afterSale->state == self::STATE_CANCEL) { $afterSale->createCancelLog(); } + //如果完成订单 + if ($afterSale->state == self::STATE_FINISH) { + $afterSale->createFinishLog(); + } }); } diff --git a/app/Services/AfterSaleService.php b/app/Services/AfterSaleService.php index e20aab24..5781a30c 100644 --- a/app/Services/AfterSaleService.php +++ b/app/Services/AfterSaleService.php @@ -224,28 +224,39 @@ class AfterSaleService { if ($this->isWaitAgree($afterSale)) { switch ($afterSale->type) { - case AfterSale::TYPE_REFUND: - if (isset($params['tracking_number'])) { - unset($params['tracking_number']); - } + case AfterSale::TYPE_REFUND_AND_RETURN: + $afterSale->update([ + 'tracking_number'=>$params['tracking_number'], + 'remarks'=> $remarks, + 'state' => AfterSale::STATE_SHIPPING, + ]); + break; + case AfterSale::TYPE_REFUND://退款订单 + $afterSale->update([ + 'remarks'=> $remarks, + 'state' => AfterSale::STATE_FINANCE, + ]); + break; + case AfterSale::TYPE_CHANGE: + $afterSale->update([ + 'remarks' => $remarks.',已为您生成新订单,请注意查收。', + 'state' => AfterSale::STATE_FINISH, + ]); + //todo - 生成新订单以及发货单; break; case AfterSale::TYPE_FILL: - if (isset($params['tracking_number'])) { - unset($params['tracking_number']); - } - break; - default: + $afterSale->update([ + 'remarks' => $remarks, + 'state' => AfterSale::STATE_FINISH, + ]); break; } - - $afterSale->update(array_merge($params, [ - 'remarks' => $remarks, - ])); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, 'name' => '客户确认', 'desc' => $remarks, ]); + return $afterSale; } else { throw new BizException('售后订单状态异常,请稍后再试'); } @@ -286,19 +297,14 @@ class AfterSaleService //todo-执行实际退款操作; - $afterSale->update([ - 'state' => $afterSale::STATE_FINISH, - 'remarks' => $remarks, - ]); AfterSaleLog::create([ 'after_sale_id' => $afterSale->id, 'name' => '财务审核', 'desc' => $remarks, ]); - AfterSaleLog::create([ - 'after_sale_id' => $afterSale->id, - 'name' => '售后完成', - 'desc' => '售后已结束', + $afterSale->update([ + 'state' => $afterSale::STATE_FINISH, + 'remarks' => $remarks, ]); } else { throw new BizException('该售后订单状态异常');