完善后端物流状态显示
This commit is contained in:
parent
8e2665e50f
commit
0f7794f9d6
48
app/common/logic/expressage/Kd100Logic.php
Normal file
48
app/common/logic/expressage/Kd100Logic.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\common\logic\expressage;
|
||||||
|
|
||||||
|
use app\common\basics\Logic;
|
||||||
|
use app\common\model\expressage\Kd100Expressage;
|
||||||
|
|
||||||
|
class Kd100Logic extends Logic
|
||||||
|
{
|
||||||
|
private static $SEL_TIME = 31 * 60; // 物流查询的时间需要大于30分钟,不然会锁单
|
||||||
|
public static $EXPRESS_STATE = array(
|
||||||
|
0 => '在途',
|
||||||
|
1 => '揽收',
|
||||||
|
2 => '疑难',
|
||||||
|
3 => '签收',
|
||||||
|
4 => '退签',
|
||||||
|
5 => '派件',
|
||||||
|
8 => '清关',
|
||||||
|
14 => '拒签',
|
||||||
|
);
|
||||||
|
/*
|
||||||
|
* 添加或更新快递信息
|
||||||
|
* */
|
||||||
|
public static function save($order_id, $data)
|
||||||
|
{
|
||||||
|
$express['order_id'] = $order_id;
|
||||||
|
$express['state'] = $data['state'];
|
||||||
|
$express['com'] = $data['com'];
|
||||||
|
$express['nu'] = $data['nu'];
|
||||||
|
$express['data'] = json_encode($data['data'], JSON_UNESCAPED_UNICODE);
|
||||||
|
$express['sel_time'] = time() + self::$SEL_TIME;
|
||||||
|
|
||||||
|
$kd100 = self::detail($order_id);
|
||||||
|
if ($kd100) {
|
||||||
|
Kd100Expressage::where(['order_id' => $order_id])->update($express);
|
||||||
|
} else {
|
||||||
|
Kd100Expressage::create($express);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取物流详情
|
||||||
|
* */
|
||||||
|
public static function detail($order_id)
|
||||||
|
{
|
||||||
|
return Kd100Expressage::where(['order_id' => $order_id])->find();
|
||||||
|
}
|
||||||
|
}
|
||||||
10
app/common/model/expressage/Kd100Expressage.php
Normal file
10
app/common/model/expressage/Kd100Expressage.php
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\common\model\expressage;
|
||||||
|
|
||||||
|
use app\common\basics\Models;
|
||||||
|
|
||||||
|
class Kd100Expressage extends Models
|
||||||
|
{
|
||||||
|
protected $table = 'ls_kd100_expressage';
|
||||||
|
}
|
||||||
@ -28,32 +28,32 @@ use app\common\enum\OrderLogEnum;
|
|||||||
use app\common\enum\PayEnum;
|
use app\common\enum\PayEnum;
|
||||||
use app\common\enum\TeamEnum;
|
use app\common\enum\TeamEnum;
|
||||||
use app\common\enum\VerificationEnum;
|
use app\common\enum\VerificationEnum;
|
||||||
|
use app\common\logic\expressage\Kd100Logic;
|
||||||
use app\common\logic\GoodsVirtualLogic;
|
use app\common\logic\GoodsVirtualLogic;
|
||||||
use app\common\logic\OrderLogLogic;
|
use app\common\logic\OrderLogLogic;
|
||||||
use app\common\logic\OrderRefundLogic;
|
use app\common\logic\OrderRefundLogic;
|
||||||
|
use app\common\model\DevRegion;
|
||||||
use app\common\model\Express;
|
use app\common\model\Express;
|
||||||
use app\common\model\order\Order;
|
use app\common\model\order\Order;
|
||||||
use app\common\model\DevRegion;
|
use app\common\model\order\Verification;
|
||||||
use app\common\model\printer\Printer;
|
use app\common\model\printer\Printer;
|
||||||
use app\common\model\printer\PrinterConfig;
|
use app\common\model\printer\PrinterConfig;
|
||||||
use app\common\model\team\Team;
|
use app\common\model\team\Team;
|
||||||
use app\common\model\team\TeamFound;
|
use app\common\model\team\TeamFound;
|
||||||
use app\common\model\team\TeamJoin;
|
use app\common\model\team\TeamJoin;
|
||||||
use app\common\model\user\UserLevel;
|
use app\common\model\user\UserLevel;
|
||||||
use app\common\model\order\Verification;
|
|
||||||
use app\common\server\ConfigServer;
|
use app\common\server\ConfigServer;
|
||||||
use app\common\server\ExportExcelServer;
|
use app\common\server\ExportExcelServer;
|
||||||
use app\common\server\UrlServer;
|
use app\common\server\UrlServer;
|
||||||
use app\common\server\YlyPrinter;
|
use app\common\server\YlyPrinter;
|
||||||
use app\shop\logic\printer\PrinterLogic;
|
use app\shop\logic\printer\PrinterLogic;
|
||||||
use think\facade\Cache;
|
|
||||||
use expressage\Kd100;
|
use expressage\Kd100;
|
||||||
use expressage\Kdniao;
|
use expressage\Kdniao;
|
||||||
use think\facade\Db;
|
|
||||||
use think\Exception;
|
use think\Exception;
|
||||||
|
use think\facade\Cache;
|
||||||
|
use think\facade\Db;
|
||||||
use think\Model;
|
use think\Model;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单管理-逻辑
|
* 订单管理-逻辑
|
||||||
* Class GoodsLogic
|
* Class GoodsLogic
|
||||||
@ -166,7 +166,7 @@ class OrderLogic extends Logic
|
|||||||
$count = $order
|
$count = $order
|
||||||
->alias('o')
|
->alias('o')
|
||||||
->Join('shop s', 's.id = o.shop_id')
|
->Join('shop s', 's.id = o.shop_id')
|
||||||
->Join('procurement u', 'u.id = o.user_id')
|
->Join('user u', 'u.id = o.user_id')
|
||||||
->Join('order_goods g', 'g.order_id = o.id')
|
->Join('order_goods g', 'g.order_id = o.id')
|
||||||
->where($where)
|
->where($where)
|
||||||
->group('o.id')
|
->group('o.id')
|
||||||
@ -176,9 +176,9 @@ class OrderLogic extends Logic
|
|||||||
->alias('o')
|
->alias('o')
|
||||||
->field($field)
|
->field($field)
|
||||||
->Join('shop s', 's.id = o.shop_id')
|
->Join('shop s', 's.id = o.shop_id')
|
||||||
->Join('procurement u', 'u.id = o.user_id')
|
->Join('user u', 'u.id = o.user_id')
|
||||||
->Join('order_goods g', 'g.order_id = o.id')
|
->Join('order_goods g', 'g.order_id = o.id')
|
||||||
->with(['order_goods', 'procurement'])
|
->with(['order_goods', 'user'])
|
||||||
->where($where)
|
->where($where)
|
||||||
->append([
|
->append([
|
||||||
'delivery_address', 'pay_status_text', 'order_source_text',
|
'delivery_address', 'pay_status_text', 'order_source_text',
|
||||||
@ -194,7 +194,7 @@ class OrderLogic extends Logic
|
|||||||
|
|
||||||
foreach ($lists as &$list) {
|
foreach ($lists as &$list) {
|
||||||
$list['pay_time'] = $list['pay_time'] == '0' ? '未支付' : date('Y-m-d H:i:s', $list['pay_time']);
|
$list['pay_time'] = $list['pay_time'] == '0' ? '未支付' : date('Y-m-d H:i:s', $list['pay_time']);
|
||||||
$list['procurement']['avatar'] = UrlServer::getFileUrl($list['procurement']['avatar']);
|
$list['user']['avatar'] = UrlServer::getFileUrl($list['user']['avatar']);
|
||||||
foreach ($list['order_goods'] as $order_good) {
|
foreach ($list['order_goods'] as $order_good) {
|
||||||
$order_good['image'] = UrlServer::getFileUrl($order_good['image']);
|
$order_good['image'] = UrlServer::getFileUrl($order_good['image']);
|
||||||
}
|
}
|
||||||
@ -262,14 +262,14 @@ class OrderLogic extends Logic
|
|||||||
|
|
||||||
$order = new Order();
|
$order = new Order();
|
||||||
$result = $order
|
$result = $order
|
||||||
->with(['procurement', 'order_goods', 'invoice'])
|
->with(['user', 'order_goods', 'invoice'])
|
||||||
->where('id', $id)
|
->where('id', $id)
|
||||||
->append(['delivery_address', 'pay_status_text', 'order_status_text', 'pay_way_text', 'order_type_text', 'verification_status_text'])
|
->append(['delivery_address', 'pay_status_text', 'order_status_text', 'pay_way_text', 'order_type_text', 'verification_status_text'])
|
||||||
->find();
|
->find();
|
||||||
$result['pay_time'] = $result['pay_time'] == 0 ? '未支付' : date('Y-m-d H:i:s', $result['pay_time']);
|
$result['pay_time'] = $result['pay_time'] == 0 ? '未支付' : date('Y-m-d H:i:s', $result['pay_time']);
|
||||||
$user = $result['procurement'];
|
$user = $result['user'];
|
||||||
$user['avatar'] = UrlServer::getFileUrl($user['avatar']);
|
$user['avatar'] = UrlServer::getFileUrl($user['avatar']);
|
||||||
$result['procurement'] = $user;
|
$result['user'] = $user;
|
||||||
foreach ($result['order_goods'] as &$order_goods) {
|
foreach ($result['order_goods'] as &$order_goods) {
|
||||||
$order_goods['goods_image'] = empty($order_goods['spec_image']) ?
|
$order_goods['goods_image'] = empty($order_goods['spec_image']) ?
|
||||||
UrlServer::getFileUrl($order_goods['image']) : UrlServer::getFileUrl($order_goods['spec_image']);
|
UrlServer::getFileUrl($order_goods['image']) : UrlServer::getFileUrl($order_goods['spec_image']);
|
||||||
@ -329,6 +329,7 @@ class OrderLogic extends Logic
|
|||||||
*/
|
*/
|
||||||
public static function getShipping($order_id)
|
public static function getShipping($order_id)
|
||||||
{
|
{
|
||||||
|
$express_data = array();
|
||||||
|
|
||||||
$orderModel = new Order();
|
$orderModel = new Order();
|
||||||
$order = $orderModel->alias('o')
|
$order = $orderModel->alias('o')
|
||||||
@ -336,7 +337,11 @@ class OrderLogic extends Logic
|
|||||||
->join('delivery d', 'd.order_id = o.id')
|
->join('delivery d', 'd.order_id = o.id')
|
||||||
->where(['o.id' => $order_id])
|
->where(['o.id' => $order_id])
|
||||||
->find();
|
->find();
|
||||||
$express = ConfigServer::get('express', 'way', '', '');
|
|
||||||
|
$result = Kd100Logic::detail($order_id);
|
||||||
|
if (!isset($result) || (time() > $result['sel_time'])) {
|
||||||
|
// 如果当前时间大于了api接口限制的时间,则调用api接口
|
||||||
|
$express = ConfigServer::get('express', 'way');
|
||||||
$key = ConfigServer::get($express, 'appkey');
|
$key = ConfigServer::get($express, 'appkey');
|
||||||
$app = ConfigServer::get($express, 'appsecret');
|
$app = ConfigServer::get($express, 'appsecret');
|
||||||
|
|
||||||
@ -369,14 +374,29 @@ class OrderLogic extends Logic
|
|||||||
}
|
}
|
||||||
|
|
||||||
$traces = $expressage->logisticsFormat();
|
$traces = $expressage->logisticsFormat();
|
||||||
|
|
||||||
|
$state = 0;
|
||||||
if ($traces == false) {
|
if ($traces == false) {
|
||||||
$traces[] = [$expressage->getError()];
|
$traces[] = [$expressage->getError()];
|
||||||
} else {
|
} else {
|
||||||
|
$data = $expressage->logisticsFullInfo();
|
||||||
|
Kd100Logic::save($order_id, $data);
|
||||||
|
$state = $data['state'];
|
||||||
|
|
||||||
foreach ($traces as &$item) {
|
foreach ($traces as &$item) {
|
||||||
$item = array_values(array_unique($item));
|
$item = array_values(array_unique($item));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $traces;
|
$express_data['state'] = Kd100Logic::$EXPRESS_STATE[$state];
|
||||||
|
$express_data['list'] = $traces;
|
||||||
|
} else {
|
||||||
|
$express_data['state'] = Kd100Logic::$EXPRESS_STATE[$result['state']];
|
||||||
|
$express_data['list'] = json_decode($result['data'], true);
|
||||||
|
foreach ($express_data['list'] as &$item) {
|
||||||
|
$item = array_values(array_unique($item));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $express_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -777,7 +797,7 @@ class OrderLogic extends Logic
|
|||||||
public static function getPrintOrder($id)
|
public static function getPrintOrder($id)
|
||||||
{
|
{
|
||||||
return (new Order())
|
return (new Order())
|
||||||
->with(['procurement', 'order_goods'])
|
->with(['user', 'order_goods'])
|
||||||
->where('id', $id)
|
->where('id', $id)
|
||||||
->append(['delivery_address'])
|
->append(['delivery_address'])
|
||||||
->findOrEmpty()->toArray();
|
->findOrEmpty()->toArray();
|
||||||
@ -953,7 +973,7 @@ class OrderLogic extends Logic
|
|||||||
|
|
||||||
$lists = Order::alias('o')
|
$lists = Order::alias('o')
|
||||||
->leftJoin('shop s', 's.id = o.shop_id')
|
->leftJoin('shop s', 's.id = o.shop_id')
|
||||||
->leftJoin('procurement u', 'u.id = o.user_id')
|
->leftJoin('user u', 'u.id = o.user_id')
|
||||||
->join('order_goods g', 'g.order_id = o.id')
|
->join('order_goods g', 'g.order_id = o.id')
|
||||||
->with(['order_goods'])
|
->with(['order_goods'])
|
||||||
->field($field)
|
->field($field)
|
||||||
|
|||||||
@ -56,6 +56,8 @@
|
|||||||
<div class="width-160">{$detail.shipping.shipping_name | default="未知"}</div>
|
<div class="width-160">{$detail.shipping.shipping_name | default="未知"}</div>
|
||||||
<label class="layui-form-label ">快递单号:</label>
|
<label class="layui-form-label ">快递单号:</label>
|
||||||
<div class="width-160">{$detail.shipping.invoice_no | default= "未知"}</div>
|
<div class="width-160">{$detail.shipping.invoice_no | default= "未知"}</div>
|
||||||
|
<label class="layui-form-label ">物流状态:</label>
|
||||||
|
<div class="width-160">{$detail.shipping.traces.state | default= "未知"}</div>
|
||||||
{else/}
|
{else/}
|
||||||
<label class="layui-form-label ">配送方式:</label>
|
<label class="layui-form-label ">配送方式:</label>
|
||||||
<div class="width-160">无需快递</div>
|
<div class="width-160">无需快递</div>
|
||||||
@ -128,7 +130,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{foreach $detail.shipping.traces as $k => $item}
|
{foreach $detail.shipping.traces.list as $k => $item}
|
||||||
<tr>
|
<tr>
|
||||||
{if is_array($item)}
|
{if is_array($item)}
|
||||||
{foreach $item as $k1 => $value}
|
{foreach $item as $k1 => $value}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ class Expressage
|
|||||||
protected $debug;
|
protected $debug;
|
||||||
|
|
||||||
protected $logistics_info;
|
protected $logistics_info;
|
||||||
|
protected $logistics_full_info;
|
||||||
|
|
||||||
public function __construct($app, $key, $debug = false)
|
public function __construct($app, $key, $debug = false)
|
||||||
{
|
{
|
||||||
@ -16,6 +17,18 @@ class Expressage
|
|||||||
$this->debug = $debug;
|
$this->debug = $debug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回完整的数据格式
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function logisticsFullInfo()
|
||||||
|
{
|
||||||
|
if (empty($this->logistics_full_info)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return $this->logistics_full_info;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 格式化
|
* 格式化
|
||||||
* @return bool
|
* @return bool
|
||||||
|
|||||||
@ -25,8 +25,8 @@ class Kd100 extends Expressage
|
|||||||
$result = Requests::get('http://poll.kuaidi100.com/poll/query.do?' . $params);
|
$result = Requests::get('http://poll.kuaidi100.com/poll/query.do?' . $params);
|
||||||
$result = json_decode($result->body, true);
|
$result = json_decode($result->body, true);
|
||||||
if (isset($result['data'])) {
|
if (isset($result['data'])) {
|
||||||
|
$this->logistics_full_info = $result;
|
||||||
$this->logistics_info = $result['data'];
|
$this->logistics_info = $result['data'];
|
||||||
$this->logistics_info;
|
|
||||||
}
|
}
|
||||||
$this->error = json_encode($result, JSON_UNESCAPED_UNICODE);
|
$this->error = json_encode($result, JSON_UNESCAPED_UNICODE);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user