解决合并冲突
parent
f0c2fde4ac
commit
4c8225675d
|
|
@ -54,6 +54,7 @@ class OrderPackageService
|
||||||
//创建发货单数据
|
//创建发货单数据
|
||||||
$package = new OrderPackage();
|
$package = new OrderPackage();
|
||||||
$package->order_id = $order->id;
|
$package->order_id = $order->id;
|
||||||
|
$package->user_id = $order->user_id;
|
||||||
$package->consignee_name = $order->consignee_name;
|
$package->consignee_name = $order->consignee_name;
|
||||||
$package->consignee_telephone = $order->consignee_telephone;
|
$package->consignee_telephone = $order->consignee_telephone;
|
||||||
$package->consignee_zone = $order->consignee_zone;
|
$package->consignee_zone = $order->consignee_zone;
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@
|
||||||
namespace App\Endpoint\Api\Http\Controllers\Order;
|
namespace App\Endpoint\Api\Http\Controllers\Order;
|
||||||
|
|
||||||
use App\Endpoint\Api\Http\Controllers\Controller;
|
use App\Endpoint\Api\Http\Controllers\Controller;
|
||||||
|
use App\Endpoint\Api\Http\Resources\OrderPackageResource;
|
||||||
use App\Endpoint\Api\Http\Resources\OrderResource;
|
use App\Endpoint\Api\Http\Resources\OrderResource;
|
||||||
use App\Endpoint\Api\Http\Resources\OrderResourceCollection;
|
use App\Endpoint\Api\Http\Resources\OrderResourceCollection;
|
||||||
use App\Exceptions\BizException;
|
use App\Exceptions\BizException;
|
||||||
use App\Helpers\Order as OrderHelper;
|
use App\Helpers\Order as OrderHelper;
|
||||||
use App\Helpers\Paginator as PaginatorHelper;
|
use App\Helpers\Paginator as PaginatorHelper;
|
||||||
|
use App\Models\KuaidiLog;
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
use App\Services\OrderService;
|
use App\Services\OrderService;
|
||||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
|
|
@ -117,6 +119,7 @@ class OrderController extends Controller
|
||||||
{
|
{
|
||||||
$order = $request->user()->orders()->findOrFail($id);
|
$order = $request->user()->orders()->findOrFail($id);
|
||||||
$order->load('products');
|
$order->load('products');
|
||||||
|
$order->load('packages');
|
||||||
|
|
||||||
return OrderResource::make($order);
|
return OrderResource::make($order);
|
||||||
}
|
}
|
||||||
|
|
@ -206,4 +209,26 @@ class OrderController extends Controller
|
||||||
throw new BizException('订单支付失败,请重试');
|
throw new BizException('订单支付失败,请重试');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 订单包裹列表
|
||||||
|
*/
|
||||||
|
public function orderPackages($id, Request $request)
|
||||||
|
{
|
||||||
|
$order = $request->user()->orders()->findOrFail($id);
|
||||||
|
return OrderPackageResource::collection($order->packages()->where('is_failed', false)->orderBy('updated_at', 'desc')->get());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 物流包裹的明细
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function shippingInfo($id, Request $request)
|
||||||
|
{
|
||||||
|
$package = $request->user()->orderPackages()->where('is_failed', false)->findOrFail($id);
|
||||||
|
return response()->json(array_merge(OrderPackageResource::make($package)->resolve(), [
|
||||||
|
'shipping_info'=> KuaidiLog::where(['number'=>$package->shipping_number, 'code'=>$package->shipping_code])->first()?->info,
|
||||||
|
]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Endpoint\Api\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class OrderPackageResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->id,
|
||||||
|
'state' => $this->status,
|
||||||
|
'shipping_company' => $this->shipping_company,
|
||||||
|
'shipping_number' => $this->shipping_number,
|
||||||
|
'last_news' => $this->last_news,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -35,6 +35,8 @@ class OrderResource extends JsonResource
|
||||||
'completed_at' => (string) $this->completed_at?->toDateTimeString(),
|
'completed_at' => (string) $this->completed_at?->toDateTimeString(),
|
||||||
'created_at' => $this->created_at->toDateTimeString(),
|
'created_at' => $this->created_at->toDateTimeString(),
|
||||||
'expires_at' => $this->expires_at,
|
'expires_at' => $this->expires_at,
|
||||||
|
|
||||||
|
'packages' => OrderPackageResource::make($this->whenloaded('packages')->where('is_failed', false)->sortBy('created_at')->first()),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -127,5 +127,7 @@ Route::group([
|
||||||
Route::post('order/orders/{order}/pay', [OrderController::class, 'pay']);
|
Route::post('order/orders/{order}/pay', [OrderController::class, 'pay']);
|
||||||
Route::post('order/orders/{order}/confirm', [OrderController::class, 'confirm']);
|
Route::post('order/orders/{order}/confirm', [OrderController::class, 'confirm']);
|
||||||
Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']);
|
Route::post('order/orders/{order}/cancel', [OrderController::class, 'cancel']);
|
||||||
|
Route::get('order/orders/{order}/packages', [OrderController::class, 'orderPackages']);
|
||||||
|
Route::get('order/orders/{package}/shipping-info', [OrderController::class, 'shippingInfo']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ namespace App\Endpoint\Callback\Http\Controllers;
|
||||||
|
|
||||||
use App\Services\Kuaidi100Service;
|
use App\Services\Kuaidi100Service;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Arr;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
|
|
||||||
|
|
@ -17,13 +16,16 @@ class Kuaidi100Controller extends Controller
|
||||||
*/
|
*/
|
||||||
public function notify(Request $request, Kuaidi100Service $kuaidi100Service)
|
public function notify(Request $request, Kuaidi100Service $kuaidi100Service)
|
||||||
{
|
{
|
||||||
$data = $request->all();
|
$sign = $request->input('sign', '');
|
||||||
|
$params = $request->input('param', '{}');
|
||||||
|
// $params = '{"message":"变化","comOld":"","status":"polling","lastResult":{"nu":"9885738505649","message":"ok","ischeck":"0","com":"ems","condition":"00","status":"200","state":"0","data":[{"time":"2021-12-20 11:53:36","areaName":"湖北,孝感市,云梦县","status":"在途","areaCode":"CN420923000000","context":"到达【湖北省云梦县寄递事业部楚王城寄递营业部】","ftime":"2021-12-20 11:53:36"},{"time":"2021-12-20 11:50:57","areaName":"湖北,孝感市,云梦县","status":"在途","areaCode":"CN420923000000","context":"离开【湖北省云梦县寄递事业部中心营业部】,下一站【湖北省云梦县寄递事业部楚王城寄递营业部】","ftime":"2021-12-20 11:50:57"},{"time":"2021-12-20 11:39:47","areaName":"湖北,孝感市,云梦县","status":"揽收","areaCode":"CN420923000000","context":"【湖北省云梦县寄递事业部中心营业部】已收寄,揽投员:褚四明,电话:15872394578","ftime":"2021-12-20 11:39:47"}]},"comNew":"","billstatus":"change","autoCheck":"0"}';
|
||||||
|
|
||||||
|
$params = json_decode($params, true);
|
||||||
//校验回调签名
|
//校验回调签名
|
||||||
if ($kuaidi100Service->unPollSign(Arr::get($data, 'sign', ''), Arr::get($data, 'param', []))) {
|
if ($kuaidi100Service->unPollSign($sign, $params)) {
|
||||||
try {
|
try {
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
$kuaidi100Service->callback($request->input('param', []));
|
$kuaidi100Service->callback($params);
|
||||||
DB::commit();
|
DB::commit();
|
||||||
} catch (Throwable $th) {
|
} catch (Throwable $th) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ class OrderPackage extends Model
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'remarks', 'status', 'is_failed', 'checked_at',
|
'remarks', 'status', 'is_failed', 'checked_at', 'last_news',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,14 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac
|
||||||
return $this->hasMany(Order::class);
|
return $this->hasMany(Order::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 属于此用户的订单包裹
|
||||||
|
*/
|
||||||
|
public function orderPackages()
|
||||||
|
{
|
||||||
|
return $this->hasMany(OrderPackage::class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 属于此用户的商品收藏记录
|
* 属于此用户的商品收藏记录
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
namespace App\Services;
|
namespace App\Services;
|
||||||
|
|
||||||
use App\Exceptions\BizException;
|
use App\Exceptions\BizException;
|
||||||
|
use App\Helpers\Order as OrderHelper;
|
||||||
use App\Models\AfterSale;
|
use App\Models\AfterSale;
|
||||||
use App\Models\AfterSaleLog;
|
use App\Models\AfterSaleLog;
|
||||||
use App\Models\OrderProduct;
|
use App\Models\OrderProduct;
|
||||||
|
|
@ -326,6 +327,12 @@ class AfterSaleService
|
||||||
if ($this->isWaitFinance($afterSale)) {
|
if ($this->isWaitFinance($afterSale)) {
|
||||||
if (in_array($afterSale->type, [AfterSale::TYPE_REFUND_AND_RETURN, AfterSale::TYPE_REFUND])) {
|
if (in_array($afterSale->type, [AfterSale::TYPE_REFUND_AND_RETURN, AfterSale::TYPE_REFUND])) {
|
||||||
//todo-执行实际退款操作;
|
//todo-执行实际退款操作;
|
||||||
|
$order = $afterSale->order;
|
||||||
|
$order->refundTasks()->create([
|
||||||
|
'sn' => OrderHelper::serialNumber(),
|
||||||
|
'amount' => $order->total_amount,
|
||||||
|
'reason' => '取消订单',
|
||||||
|
]);
|
||||||
} elseif (in_array($afterSale->type, [AfterSale::TYPE_CHANGE])) {//换货流程
|
} elseif (in_array($afterSale->type, [AfterSale::TYPE_CHANGE])) {//换货流程
|
||||||
//todo-执行生成新的订单,发货单操作;
|
//todo-执行生成新的订单,发货单操作;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1398,6 +1398,11 @@ class Kuaidi100Service
|
||||||
$status = OrderPackage::STATUS_OTHER;
|
$status = OrderPackage::STATUS_OTHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//记录最新的物流情况
|
||||||
|
$lastNews = isset($lastRsult['data'][0]) ? $lastRsult['data'][0] : [];
|
||||||
|
$package->update([
|
||||||
|
'last_news'=> empty($lastNews) ? '' : $lastNews['context'],
|
||||||
|
]);
|
||||||
try {
|
try {
|
||||||
//更新包裹状态
|
//更新包裹状态
|
||||||
(new OrderPackageService())->updatePackageStatus($package, $status);
|
(new OrderPackageService())->updatePackageStatus($package, $status);
|
||||||
|
|
@ -1483,7 +1488,7 @@ class Kuaidi100Service
|
||||||
*/
|
*/
|
||||||
public function unPollSign(string $sign, array $params)
|
public function unPollSign(string $sign, array $params)
|
||||||
{
|
{
|
||||||
return $sign === md5(json_encode($params).config('settings.kuaidi100_secret'));
|
return $sign === strtoupper(md5(json_encode($params, JSON_UNESCAPED_UNICODE).config('settings.kuaidi100_secret')));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatusName($state = 0)
|
public function getStatusName($state = 0)
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class OrderPackageService
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 如果订单有未签收的未作废的包裹
|
// 如果订单有未作废且未签收的包裹
|
||||||
if (! $package->order->where('is_failed', false)->unchecked()->exists()) {
|
if (! $package->order->where('is_failed', false)->unchecked()->exists()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ return [
|
||||||
'article_health'=>3,
|
'article_health'=>3,
|
||||||
// 指定内容链接:关于我们,服务协议,隐私协议
|
// 指定内容链接:关于我们,服务协议,隐私协议
|
||||||
'article_about_us'=>env('APP_URL', '').'/h5/articles/1',
|
'article_about_us'=>env('APP_URL', '').'/h5/articles/1',
|
||||||
'article_user_promotion_agreement'=>env('APP_URL', '').'h5/articles/2',
|
'article_user_promotion_agreement'=>env('APP_URL', '').'/h5/articles/2',
|
||||||
'article_user_hide_agreement'=>env('APP_URL', '').'h5/articles/3',
|
'article_user_hide_agreement'=>env('APP_URL', '').'/h5/articles/3',
|
||||||
|
|
||||||
// 快递100是否开启
|
// 快递100是否开启
|
||||||
'kuaidi100_is_use' => true,
|
'kuaidi100_is_use' => true,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class AddUserIdToOrderPackagesTable extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('order_packages', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
$table->unsignedBigInteger('user_id')->comment('用户ID');
|
||||||
|
$table->string('last_news')->nullable()->comment('物流最新消息');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('order_packages', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
$table->dropColumn(['user_id', 'last_news']);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -11,6 +11,10 @@
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
} */
|
} */
|
||||||
|
img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue