diff --git a/app/Classes/Modules/Orders/ControllersLogic/ListOrderTrackingLogic.php b/app/Classes/Modules/Orders/ControllersLogic/ListOrderTrackingLogic.php index f78a7560..d7bbb63a 100644 --- a/app/Classes/Modules/Orders/ControllersLogic/ListOrderTrackingLogic.php +++ b/app/Classes/Modules/Orders/ControllersLogic/ListOrderTrackingLogic.php @@ -5,13 +5,15 @@ namespace App\Classes\Modules\Orders\ControllersLogic; use App\Classes\General\Abstracts\AbstractControllerLogic; use App\Classes\Modules\Orders\Services\ListsOrderTracking; +use App\Classes\ValueObjects\Constants\RoleTypes; use App\Http\Resources\OrderTrackingResource; use App\Models\Order; -use ErrorException; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Artisan; +use Illuminate\Support\Facades\Crypt; use Illuminate\Support\Facades\Log; +use Illuminate\Contracts\Encryption\DecryptException; class ListOrderTrackingLogic extends AbstractControllerLogic { @@ -42,6 +44,17 @@ class ListOrderTrackingLogic extends AbstractControllerLogic $query = null; $filters = json_decode($request->input('filters'), true); $trackingNo = $filters['tracking_no']; + + try { + $trackingNo = Crypt::decryptString($trackingNo); + $trackingNo = str_replace('_01', '', $trackingNo); + } catch (DecryptException $e) { + Log::info('Decryption failed, string might already be decrypted or invalid.'); + if(!in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN])){ + abort(404); + } + } + if (preg_match('/^\d{9}$/', $trackingNo)) { $order = Order::where('reference', $trackingNo)->first(); if($order){ @@ -54,7 +67,10 @@ class ListOrderTrackingLogic extends AbstractControllerLogic } } else{ - $query = $this->listsOrderTracking->execute($this->listsOrderTracking->deserializeFilters($request->input('filters'))); + Artisan::call('process-yd-by-traking-no-data-command', [ + 'trackingNo' => $trackingNo + ]); + $query = $this->listsOrderTracking->execute(array_merge($this->listsOrderTracking->deserializeFilters($request->input('filters')), ['tracking_no' => $trackingNo])); } return $this->collectionResponse(OrderTrackingResource::collection($query)); diff --git a/app/Http/Resources/OrderPackagesReceivedResource.php b/app/Http/Resources/OrderPackagesReceivedResource.php index a5667c9d..c68d803b 100644 --- a/app/Http/Resources/OrderPackagesReceivedResource.php +++ b/app/Http/Resources/OrderPackagesReceivedResource.php @@ -20,7 +20,7 @@ class OrderPackagesReceivedResource extends JsonResource return [ 'id' => $this->id, - 'reference' => $this->reference, + // 'reference' => $this->reference, 'reference_contract' => (int) $this->type, 'type' => (int) $this->type, 'status' => (int) $this->status, diff --git a/app/Http/Resources/OrderTrackingResource.php b/app/Http/Resources/OrderTrackingResource.php index af6db571..1bcc32f5 100644 --- a/app/Http/Resources/OrderTrackingResource.php +++ b/app/Http/Resources/OrderTrackingResource.php @@ -2,7 +2,11 @@ namespace App\Http\Resources; +use App\Classes\ValueObjects\Constants\PackingListType; +use App\Classes\ValueObjects\Constants\RoleTypes; +use App\Models\PackingList; use Illuminate\Http\Resources\Json\JsonResource; +use Illuminate\Support\Facades\Log; class OrderTrackingResource extends JsonResource { @@ -15,11 +19,26 @@ class OrderTrackingResource extends JsonResource */ public function toArray($request) { + $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $packingList = PackingList::where('reference', $this->tracking_no)->where('type', PackingListType::SHIPPING_PACKING_LIST)->first(); + + $tracking = $this->tracking; + $remark = $this->remark; + $tracking_english = $this->tracking_english; + $remark_english = $this->remark_english; + if($tracking === '第三方提货') { + $tracking = '安排派送中'; + $tracking_english = 'Arranging Delivery'; + $remark = ''; + $remark_english = ''; + } + return [ 'id' => $this->id, - // 'tracking_no' => $this->tracking_no, - 'tracking' => $this->tracking . ($this->remark ? " (" . $this->remark . ")" : ''), - 'tracking_english' => $this->tracking_english . ($this->remark_english ? " (" . $this->remark_english . ")" : ''), + 'tracking_no' => $exceptionUsers ? $this->tracking_no : '', + 'order_id' => $packingList->owner->reference, + 'tracking' => $tracking . ($remark ? " (" . $remark . ")" : ''), + 'tracking_english' => $tracking_english . ($remark_english ? " (" . $remark_english . ")" : ''), 'tracking_time' => $this->tracking_time, ]; } diff --git a/app/Http/Resources/PackageBaseResource.php b/app/Http/Resources/PackageBaseResource.php index 935fbb07..b15e3f7d 100644 --- a/app/Http/Resources/PackageBaseResource.php +++ b/app/Http/Resources/PackageBaseResource.php @@ -2,9 +2,11 @@ namespace App\Http\Resources; +use App\Classes\ValueObjects\Constants\RoleTypes; use App\Models\Order; use App\Models\PackingList; use Illuminate\Http\Resources\Json\JsonResource; +use Illuminate\Support\Facades\Crypt; class PackageBaseResource extends JsonResource { @@ -16,6 +18,8 @@ class PackageBaseResource extends JsonResource */ public function toArray($request) { + $exceptionUsers = in_array(Auth()->user()->type, [RoleTypes::SHADOW_ADMIN, RoleTypes::SUPER_ADMIN]); + $data = [ 'id' => $this->id, 'type' => $this->type, @@ -45,7 +49,9 @@ class PackageBaseResource extends JsonResource } if($this->include_packing_list_reference){ - $data['reference'] = $this->packingList->reference; + $data['reference'] = $exceptionUsers ? $this->packingList->reference : ''; + $data['reference_hash'] = hash('sha256', $this->packingList->reference); + $data['reference_encrypted'] = Crypt::encryptString($this->packingList->reference); } return $data; diff --git a/app/Http/Resources/PackingListForPackagesReceivedResource.php b/app/Http/Resources/PackingListForPackagesReceivedResource.php index f54a3766..6fab0a0d 100644 --- a/app/Http/Resources/PackingListForPackagesReceivedResource.php +++ b/app/Http/Resources/PackingListForPackagesReceivedResource.php @@ -9,6 +9,8 @@ use App\Classes\ValueObjects\Constants\RoleTypes; use App\Models\Order; use App\Models\PackingList; use Illuminate\Http\Resources\Json\JsonResource; +use Illuminate\Support\Facades\Crypt; +use Illuminate\Support\Facades\Log; class PackingListForPackagesReceivedResource extends JsonResource { @@ -25,7 +27,8 @@ class PackingListForPackagesReceivedResource extends JsonResource $data = [ 'id' => $this->id, 'claimant_id' => $this->claimant_id, - 'reference' => $this->reference, + // 'reference' => $this->reference, + // 'reference_encrypted' => Crypt::encryptString($this->reference), 'status' => $this->status, 'transport' => new TransportResource($this->transports()->first()), 'type' => $this->type, diff --git a/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue b/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue index ce49fbac..46e695e7 100644 --- a/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue +++ b/resources/assets/vue/components/orders/elements/OrderPackagesComponent.vue @@ -24,20 +24,32 @@ -