bztang-admin/app/backend/modules/refund/controllers/DetailController.php

175 lines
5.1 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\backend\modules\refund\controllers;
use app\common\exceptions\AppException;
use app\common\models\goods\ReturnAddress;
use Illuminate\Support\Facades\Redis;
use app\common\components\BaseController;
use app\common\models\refund\RefundApply;
/**
* 退款申请详情
* Created by PhpStorm.
* Author:
* Date: 2017/4/13
* Time: 下午3:04
*/
class DetailController extends BaseController
{
protected $refundApply;
public function consultRecord()
{
$order_id = intval(request()->input('order_id'));
}
/**
* @return \Illuminate\Http\JsonResponse
* @throws AppException
*/
public function express()
{
//refund.detail.express
$refund_value = request()->input('refund_value');
if ($refund_value == 20) {
return $this->returnLogistics();
} elseif ($refund_value == 30) {
return $this->resendLogistics();
}
return $this->errorJson('不存在物流');
}
public function returnLogistics()
{
$this->refundApply = $refundApply = RefundApply::find(request()->input('refund_id'));
if(!$refundApply){
throw new AppException('未找到该售后信息');
}
if(!$refundApply->returnExpress) {
throw new AppException('未找到该售后快递单号');
}
$cacheKey = 'backend_refundExpressId_'.$refundApply->id.'_' . $refundApply->returnExpress->express_sn;
$result = Redis::get($cacheKey);
if ($result) {
$result = json_decode($result, true);
return $this->successJson('用户发货物流信息Cache', $result);
}
switch ($refundApply->returnExpress->way_id) {
case 1:
if(app('plugins')->isEnabled('jd-take-parts')) {
$dispatch = \Yunshop\JdTakeParts\services\RefundService::receiveTraceGet($refundApply);
break;
}
default:
$dispatch = $this->getLogistics($refundApply->returnExpress);
}
$dispatch['goods'] = [];
$dispatch['thumb'] = $refundApply->returnExpress->images;
$result[] = $dispatch;
Redis::setex($cacheKey, 120, json_encode($result));
return $this->successJson('用户发货物流信息',$result);
}
public function resendLogistics()
{
$this->refundApply = $refundApply = RefundApply::find(request()->input('refund_id'));
if(!$refundApply){
throw new AppException('未找到该售后信息');
}
if($refundApply->hasManyResendExpress->isEmpty()) {
throw new AppException('未找到该售后快递');
}
$cacheKey = 'backend_refundExpressId_'.$refundApply->id.'_' . $refundApply->hasManyResendExpress->count();
$result = Redis::get($cacheKey);
if ($result) {
$result = json_decode($result, true);
return $this->successJson('商户发货物流信息Cache', $result);
}
$result = [];
foreach ($refundApply->hasManyResendExpress as $resendExpress) {
$dispatch = $this->getLogistics($resendExpress);
$dispatch['goods'] = $resendExpress->pack_goods?: [];
$dispatch['thumb'] = $resendExpress->pack_goods?$resendExpress->pack_goods[0]['goods_thumb'] : '';
$result[] = $dispatch;
}
Redis::setex($cacheKey, 120, json_encode($result));
return $this->successJson('商户发货物流信息', $result);
}
protected function getLogistics($expressModel)
{
// return $this->testData($expressModel);
//买家寄回物流信息
$phoneLastFour = '';
if ($expressModel->express_code == 'SF') {
$returnAddress = ReturnAddress::find($this->refundApply->refund_address);
if (empty($returnAddress->mobile)) {
throw new AppException('SF查询物流联系电话不能为空');
}
$phoneLastFour = substr($returnAddress->mobile,-4);
}
$express = (new \app\common\models\order\Express())->getExpress($expressModel->express_code, $expressModel->express_sn,$phoneLastFour);
$dispatch['express_sn'] = $expressModel->express_sn;
$dispatch['company_name'] = $expressModel->express_company_name;
$dispatch['data'] = $express['data'];
$dispatch['thumb'] = '';
$dispatch['tel'] = '95533';
$dispatch['status_name'] = $express['status_name'];
return $dispatch;
}
protected function testData($expressModel)
{
$dispatch['express_sn'] = $expressModel->express_sn;
$dispatch['company_name'] = $expressModel->express_company_name;
$data = [];
for ($i = rand(8,20);$i > 1; $i--) {
$data[] = [
'context' => '物流信息到达:'.$i,
'ftime' => '202111231+'.$i,
];
}
$dispatch['data'] = $data;
$dispatch['thumb'] = '';
$dispatch['tel'] = '95533';
$dispatch['status_name'] = '测试状态:'.rand(0,100);
return $dispatch;
}
}