完善后端物流状态显示
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\TeamEnum;
|
||||
use app\common\enum\VerificationEnum;
|
||||
use app\common\logic\expressage\Kd100Logic;
|
||||
use app\common\logic\GoodsVirtualLogic;
|
||||
use app\common\logic\OrderLogLogic;
|
||||
use app\common\logic\OrderRefundLogic;
|
||||
use app\common\model\DevRegion;
|
||||
use app\common\model\Express;
|
||||
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\PrinterConfig;
|
||||
use app\common\model\team\Team;
|
||||
use app\common\model\team\TeamFound;
|
||||
use app\common\model\team\TeamJoin;
|
||||
use app\common\model\user\UserLevel;
|
||||
use app\common\model\order\Verification;
|
||||
use app\common\server\ConfigServer;
|
||||
use app\common\server\ExportExcelServer;
|
||||
use app\common\server\UrlServer;
|
||||
use app\common\server\YlyPrinter;
|
||||
use app\shop\logic\printer\PrinterLogic;
|
||||
use think\facade\Cache;
|
||||
use expressage\Kd100;
|
||||
use expressage\Kdniao;
|
||||
use think\facade\Db;
|
||||
use think\Exception;
|
||||
use think\facade\Cache;
|
||||
use think\facade\Db;
|
||||
use think\Model;
|
||||
|
||||
|
||||
/**
|
||||
* 订单管理-逻辑
|
||||
* Class GoodsLogic
|
||||
@ -166,7 +166,7 @@ class OrderLogic extends Logic
|
||||
$count = $order
|
||||
->alias('o')
|
||||
->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')
|
||||
->where($where)
|
||||
->group('o.id')
|
||||
@ -176,9 +176,9 @@ class OrderLogic extends Logic
|
||||
->alias('o')
|
||||
->field($field)
|
||||
->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')
|
||||
->with(['order_goods', 'procurement'])
|
||||
->with(['order_goods', 'user'])
|
||||
->where($where)
|
||||
->append([
|
||||
'delivery_address', 'pay_status_text', 'order_source_text',
|
||||
@ -194,7 +194,7 @@ class OrderLogic extends Logic
|
||||
|
||||
foreach ($lists as &$list) {
|
||||
$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) {
|
||||
$order_good['image'] = UrlServer::getFileUrl($order_good['image']);
|
||||
}
|
||||
@ -262,14 +262,14 @@ class OrderLogic extends Logic
|
||||
|
||||
$order = new Order();
|
||||
$result = $order
|
||||
->with(['procurement', 'order_goods', 'invoice'])
|
||||
->with(['user', 'order_goods', 'invoice'])
|
||||
->where('id', $id)
|
||||
->append(['delivery_address', 'pay_status_text', 'order_status_text', 'pay_way_text', 'order_type_text', 'verification_status_text'])
|
||||
->find();
|
||||
$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']);
|
||||
$result['procurement'] = $user;
|
||||
$result['user'] = $user;
|
||||
foreach ($result['order_goods'] as &$order_goods) {
|
||||
$order_goods['goods_image'] = empty($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)
|
||||
{
|
||||
$express_data = array();
|
||||
|
||||
$orderModel = new Order();
|
||||
$order = $orderModel->alias('o')
|
||||
@ -336,47 +337,66 @@ class OrderLogic extends Logic
|
||||
->join('delivery d', 'd.order_id = o.id')
|
||||
->where(['o.id' => $order_id])
|
||||
->find();
|
||||
$express = ConfigServer::get('express', 'way', '', '');
|
||||
$key = ConfigServer::get($express, 'appkey');
|
||||
$app = ConfigServer::get($express, 'appsecret');
|
||||
|
||||
if (empty($express) || $order['shipping_status'] != 1 || empty($app) || empty($key)) {
|
||||
return $traces[] = ['暂无物流信息'];
|
||||
}
|
||||
//快递配置设置为快递鸟时
|
||||
if ($express === 'kdniao') {
|
||||
$expressage = (new Kdniao($app, $key, true));
|
||||
$shipping_field = 'codebird';
|
||||
} else {
|
||||
$expressage = (new Kd100($app, $key, true));
|
||||
$shipping_field = 'code100';
|
||||
}
|
||||
$result = Kd100Logic::detail($order_id);
|
||||
if (!isset($result) || (time() > $result['sel_time'])) {
|
||||
// 如果当前时间大于了api接口限制的时间,则调用api接口
|
||||
$express = ConfigServer::get('express', 'way');
|
||||
$key = ConfigServer::get($express, 'appkey');
|
||||
$app = ConfigServer::get($express, 'appsecret');
|
||||
|
||||
//快递编码
|
||||
$shipping_code = Db::name('express')
|
||||
->where(['id' => $order['shipping_id']])
|
||||
->value($shipping_field);
|
||||
|
||||
//获取物流轨迹
|
||||
if ($shipping_code === 'SF' && $express === 'kdniao') {
|
||||
$expressage->logistics($shipping_code, $order['invoice_no'], substr($order['mobile'],-4));
|
||||
}else {
|
||||
$phone = '';
|
||||
if ($shipping_code === 'shunfeng') {
|
||||
$phone = $order['mobile'];
|
||||
if (empty($express) || $order['shipping_status'] != 1 || empty($app) || empty($key)) {
|
||||
return $traces[] = ['暂无物流信息'];
|
||||
}
|
||||
//快递配置设置为快递鸟时
|
||||
if ($express === 'kdniao') {
|
||||
$expressage = (new Kdniao($app, $key, true));
|
||||
$shipping_field = 'codebird';
|
||||
} else {
|
||||
$expressage = (new Kd100($app, $key, true));
|
||||
$shipping_field = 'code100';
|
||||
}
|
||||
$expressage->logistics($shipping_code, $order['invoice_no'], $phone);
|
||||
}
|
||||
|
||||
$traces = $expressage->logisticsFormat();
|
||||
if ($traces == false) {
|
||||
$traces[] = [$expressage->getError()];
|
||||
//快递编码
|
||||
$shipping_code = Db::name('express')
|
||||
->where(['id' => $order['shipping_id']])
|
||||
->value($shipping_field);
|
||||
|
||||
//获取物流轨迹
|
||||
if ($shipping_code === 'SF' && $express === 'kdniao') {
|
||||
$expressage->logistics($shipping_code, $order['invoice_no'], substr($order['mobile'],-4));
|
||||
}else {
|
||||
$phone = '';
|
||||
if ($shipping_code === 'shunfeng') {
|
||||
$phone = $order['mobile'];
|
||||
}
|
||||
$expressage->logistics($shipping_code, $order['invoice_no'], $phone);
|
||||
}
|
||||
|
||||
$traces = $expressage->logisticsFormat();
|
||||
|
||||
$state = 0;
|
||||
if ($traces == false) {
|
||||
$traces[] = [$expressage->getError()];
|
||||
} else {
|
||||
$data = $expressage->logisticsFullInfo();
|
||||
Kd100Logic::save($order_id, $data);
|
||||
$state = $data['state'];
|
||||
|
||||
foreach ($traces as &$item) {
|
||||
$item = array_values(array_unique($item));
|
||||
}
|
||||
}
|
||||
$express_data['state'] = Kd100Logic::$EXPRESS_STATE[$state];
|
||||
$express_data['list'] = $traces;
|
||||
} else {
|
||||
foreach ($traces as &$item) {
|
||||
$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 $traces;
|
||||
return $express_data;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -777,7 +797,7 @@ class OrderLogic extends Logic
|
||||
public static function getPrintOrder($id)
|
||||
{
|
||||
return (new Order())
|
||||
->with(['procurement', 'order_goods'])
|
||||
->with(['user', 'order_goods'])
|
||||
->where('id', $id)
|
||||
->append(['delivery_address'])
|
||||
->findOrEmpty()->toArray();
|
||||
@ -953,7 +973,7 @@ class OrderLogic extends Logic
|
||||
|
||||
$lists = Order::alias('o')
|
||||
->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')
|
||||
->with(['order_goods'])
|
||||
->field($field)
|
||||
|
||||
@ -56,6 +56,8 @@
|
||||
<div class="width-160">{$detail.shipping.shipping_name | default="未知"}</div>
|
||||
<label class="layui-form-label ">快递单号:</label>
|
||||
<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/}
|
||||
<label class="layui-form-label ">配送方式:</label>
|
||||
<div class="width-160">无需快递</div>
|
||||
@ -128,7 +130,7 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $detail.shipping.traces as $k => $item}
|
||||
{foreach $detail.shipping.traces.list as $k => $item}
|
||||
<tr>
|
||||
{if is_array($item)}
|
||||
{foreach $item as $k1 => $value}
|
||||
|
||||
@ -8,6 +8,7 @@ class Expressage
|
||||
protected $debug;
|
||||
|
||||
protected $logistics_info;
|
||||
protected $logistics_full_info;
|
||||
|
||||
public function __construct($app, $key, $debug = false)
|
||||
{
|
||||
@ -16,6 +17,18 @@ class Expressage
|
||||
$this->debug = $debug;
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回完整的数据格式
|
||||
* @return bool
|
||||
*/
|
||||
public function logisticsFullInfo()
|
||||
{
|
||||
if (empty($this->logistics_full_info)) {
|
||||
return false;
|
||||
}
|
||||
return $this->logistics_full_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化
|
||||
* @return bool
|
||||
|
||||
@ -25,8 +25,8 @@ class Kd100 extends Expressage
|
||||
$result = Requests::get('http://poll.kuaidi100.com/poll/query.do?' . $params);
|
||||
$result = json_decode($result->body, true);
|
||||
if (isset($result['data'])) {
|
||||
$this->logistics_full_info = $result;
|
||||
$this->logistics_info = $result['data'];
|
||||
$this->logistics_info;
|
||||
}
|
||||
$this->error = json_encode($result, JSON_UNESCAPED_UNICODE);
|
||||
return false;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user