jh-admin/app/model/express/ExpressPackage.php

154 lines
6.4 KiB
PHP

<?php
/**
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.gobuysaas.com
* =========================================================
*/
namespace app\model\express;
use app\model\BaseModel;
use app\model\order\OrderCommon;
/**
* 物流配送
*/
class ExpressPackage extends BaseModel
{
/**
* 修改物流单号和物流公司
* @param $data
* @return array
*/
public function editOrderExpressDeliveryPackage($data)
{
$order_common_model = new OrderCommon();
//订单状态
$order_status = model('order')->getValue([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ] ], 'order_status');
if (empty($order_status)) {
return $this->error('', '订单不存在');
}
if (!in_array($order_status, [ $order_common_model::ORDER_PAY, $order_common_model::ORDER_DELIVERY ])) {
return $this->error('', '订单已收货或已完成');
}
//包裹信息
$package_count = model('express_delivery_package')->getCount(
[
[ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ], [ 'id', '=', $data[ 'package_id' ] ]
]
);
if ($package_count == 0) {
return $this->error('', '包裹信息不存在');
}
model('express_delivery_package')->startTrans();
try {
if ($data[ 'delivery_type' ] == 0) {
$data[ 'express_company_id' ] = 0;
$data[ 'delivery_no' ] = '';
$express_company_name = '';
$express_company_image = '';
} else {
if ($data[ 'express_company_id' ] == '') {
return $this->error('', '物流公司不能为空');
}
if ($data[ 'delivery_no' ] == '') {
return $this->error('', '物流单号不能为空');
}
//获取物流公司名称
$express_company_info = model('express_company_template')->getInfo([ [ 'company_id', '=', $data[ 'express_company_id' ] ] ], 'company_name,logo');
$express_company_name = $express_company_info[ 'company_name' ];
$express_company_image = $express_company_info[ 'logo' ];
}
$condition = [
[ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ], [ 'id', '=', $data[ 'package_id' ] ]
];
model('express_delivery_package')->update(
[
'delivery_type' => $data[ 'delivery_type' ],
'express_company_id' => $data[ 'express_company_id' ],
'express_company_name' => $express_company_name,
'delivery_no' => $data[ 'delivery_no' ],
'express_company_image' => $express_company_image
], $condition
);
$result = event('OrderDelivery', [ 'order_id' => $data[ 'order_id' ] ]); //同步云物流
// if (!empty($result[ 0 ]) && $result[ 0 ][ 'code' ] < 0) {
// model('order')->rollback();
// return $this->error();
// }
model('express_delivery_package')->commit();
return $this->success();
} catch (\Exception $e) {
model('express_delivery_package')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 获取物流包裹列表
* @param $condition
* @param string $field
*/
public function getExpressDeliveryPackageList($condition, $field = '*')
{
$list = model('express_delivery_package')->getList($condition, $field);
return $this->success($list);
}
/**
* 获取包裹信息
* @param $condition
*/
public function package($condition, $mobile = '',$trade_no='')
{
$list_result = $this->getExpressDeliveryPackageList($condition);
$list = $list_result[ 'data' ];
$trace_model = new Trace();
foreach ($list as $k => $v) {
$temp_array = explode(',', $v[ 'goods_id_array' ]);
if (!empty($temp_array)) {
foreach ($temp_array as $temp_k => $temp_v) {
$temp_str = str_replace('http://', 'http//', $temp_v);
$temp_str = str_replace('https://', 'https//', $temp_str);
$temp_item = explode(':', $temp_str);
$sku_image = str_replace('https//', 'https://', $temp_item[ '3' ]);
$sku_image = str_replace('http//', 'http://', $sku_image);
$list[ $k ][ 'goods_list' ][] = [ 'sku_name' => $temp_item[ '2' ], 'num' => $temp_item[ '1' ], 'sku_image' => $sku_image, 'sku_id' => $temp_item[ '0' ] ];
}
}
$trace_list = $trace_model->trace($v[ 'delivery_no' ], $v[ 'express_company_id' ], $v[ 'site_id' ], $mobile);
$list[ $k ][ 'trace' ] = $trace_list[ 'data' ];
$list[ $k ][ 'deviceType' ] = 'C';
$list[ $k ][ 'logisticsCode' ] = $trace_list[ 'data' ]['logisticsCode'];
$list[ $k ][ 'tradeNo' ] = $trade_no;
}
return $list;
}
/**
* 获取订单分页列表
* @param array $condition
* @param number $page
* @param string $page_size
* @param string $order
* @param string $field
*/
public function getExpressDeliveryPackagePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
{
$order_list = model('order')->pageList($condition, $field, $order, $page, $page_size);
if (!empty($order_list[ 'list' ])) {
foreach ($order_list[ 'list' ] as $k => $v) {
$order_goods_list = model('order_goods')->getList([
'order_id' => $v[ 'order_id' ]
]);
foreach ($order_goods_list as $ck => $cv) {
$order_goods_list[ $ck ][ 'num' ] = numberFormat($order_goods_list[ $ck ][ 'num' ]);
}
$order_list[ 'list' ][ $k ][ 'order_goods' ] = $order_goods_list;
}
}
return $this->success($order_list);
}
}