mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 10:55:34 +08:00
1347 lines
48 KiB
PHP
1347 lines
48 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
use PHPUnit\Util\Json;
|
|
|
|
/**
|
|
* 订单中心
|
|
*/
|
|
class wap_ctl_order extends wap_controller
|
|
{
|
|
var $delivery_link = array();
|
|
|
|
function __construct($app)
|
|
{
|
|
parent::__construct($app);
|
|
|
|
//确认拒单
|
|
$this->delivery_link['doRefuse'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'doRefuse'), true);
|
|
|
|
//立即接单
|
|
$this->delivery_link['doConfirm'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'doConfirm'), true);
|
|
|
|
//发货
|
|
$this->delivery_link['doConsign'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'doConsign'), true);
|
|
|
|
//签收
|
|
$this->delivery_link['signPage'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'signPage'), true);
|
|
$this->delivery_link['doSign'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'doSign'), true);
|
|
$this->delivery_link['uploadimage'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'uploadimage'), true);
|
|
$this->delivery_link['sendMsg'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'sendMsg'), true);
|
|
$this->delivery_link['showOrderInfo'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'showOrderInfo'), true);
|
|
|
|
#打印
|
|
$this->delivery_link['doPrint'] = app::get('wap')->router()->gen_url(array('ctl'=>'logistics','act'=>'doPrint'), true);
|
|
|
|
# 补录快递单号
|
|
$this->delivery_link['doAddLogiNo'] = app::get('wap')->router()->gen_url(array('ctl'=>'logistics','act'=>'doAddLogiNo'), true);
|
|
|
|
# 呼叫快递
|
|
$this->delivery_link['onlineDelivery'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'onlineDelivery'), true);
|
|
# 取消发货
|
|
$this->delivery_link['doCancelDelivery'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'doCancelDelivery'), true);
|
|
|
|
|
|
//待发货
|
|
$this->delivery_link['orderWaitDelivery'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index?view=wait_delivery'), true);
|
|
// 待揽件
|
|
$this->delivery_link['orderWaitPickup'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index?view=wait_pickup'), true);
|
|
// 已签收
|
|
$this->delivery_link['orderDelivered'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index?view=delivered'), true);
|
|
//已揽件
|
|
$this->delivery_link['orderPicked'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index?view=picked'), true);
|
|
//已取消
|
|
$this->delivery_link['orderCancel'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index?view=cancel'), true);
|
|
|
|
$this->pagedata['delivery_link'] = $this->delivery_link;
|
|
}
|
|
|
|
/**
|
|
* 条件
|
|
*
|
|
* status 0:未处理 1:打回 2:暂停 3:已发货
|
|
*/
|
|
function _views_confirm($curr_view)
|
|
{
|
|
$base_filter = array();
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
|
|
$page = intval($_POST['page']) ? intval($_POST['page']) : 0;
|
|
$limit = 10;//每页显示数量
|
|
$offset = $limit * $page;
|
|
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super)
|
|
{
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids))
|
|
{
|
|
$this->pagedata['link_url'] = $this->delivery_link['order_index'];
|
|
$this->pagedata['error_msg'] = '操作员没有管辖的仓库';
|
|
echo $this->fetch('auth_error.html');
|
|
exit;
|
|
}
|
|
$base_filter['branch_id'] = $branch_ids;
|
|
}
|
|
|
|
$dly_overtime = 0;
|
|
|
|
//超时订单
|
|
if($curr_view == 'overtime')
|
|
{
|
|
|
|
//履约超时时间设置(分钟)
|
|
$minute = app::get('o2o')->getConf('o2o.delivery.dly_overtime');
|
|
$minute = intval($minute);
|
|
|
|
if($minute)
|
|
{
|
|
$second = $minute * 60;
|
|
$dly_overtime = time() - $second;//现在时间 减去 履约时间
|
|
}
|
|
}
|
|
|
|
//menu
|
|
$sub_menu = array(
|
|
'all' => array('label'=>app::get('base')->_('订单查看'), 'filter'=>array('status'=>array(0, 3), 'confirm'=>array(1, 3)), 'href'=>$this->delivery_link['order_index']),
|
|
'confirm' => array('label'=>app::get('base')->_('订单确认') ,'filter'=>array('status'=>0, 'confirm'=>3), 'href'=>$this->delivery_link['order_confirm']),
|
|
'consign' => array('label'=>app::get('base')->_('订单发货') ,'filter'=>array('status'=>0, 'confirm'=>1), 'href'=>$this->delivery_link['order_consign']),
|
|
'sign' => array('label'=>app::get('base')->_('签收核销') ,'filter'=>array('status'=>3, 'confirm'=>1, 'process_status'=>7, 'is_received'=>1), 'href'=>$this->delivery_link['order_sign']),
|
|
'overtime' => array('label'=>app::get('base')->_('超时订单') ,'filter'=>array('status'=>0, 'confirm'=>array(1, 3), 'create_time|lthan'=>$dly_overtime), 'href'=>$this->delivery_link['overtimeOrders']),
|
|
);
|
|
|
|
foreach($sub_menu as $k=>$v)
|
|
{
|
|
//Ajax加载下一页数据,只处理本页
|
|
if($_POST['flag'] == 'ajax' && $curr_view != $k)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (!IS_NULL($v['filter']))
|
|
{
|
|
$v['filter'] = array_merge($v['filter'], $base_filter);
|
|
}
|
|
|
|
//搜索条件
|
|
if($_POST['sel_type'] && $_POST['sel_keywords'])
|
|
{
|
|
switch ($_POST['sel_type'])
|
|
{
|
|
case 'delivery_bn':
|
|
$v['filter']['delivery_bn'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
case 'order_bn':
|
|
$v['filter']['order_bn'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
case 'ship_mobile':
|
|
$v['filter']['ship_mobile'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
case 'ship_name':
|
|
$v['filter']['ship_name'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
}
|
|
}
|
|
|
|
$count = $wapDeliveryObj->count($v['filter']);
|
|
|
|
$sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null;
|
|
$sub_menu[$k]['count'] = $count;
|
|
$sub_menu[$k]['pageSize'] = ceil($count / $limit);
|
|
|
|
$sub_menu[$k]['offset'] = $offset;
|
|
$sub_menu[$k]['limit'] = $limit;
|
|
$sub_menu[$k]['orderby'] = 'delivery_id desc';#排序
|
|
|
|
if($k == $curr_view){
|
|
$sub_menu[$k]['curr_view'] = true;
|
|
}else{
|
|
$sub_menu[$k]['curr_view'] = false;
|
|
}
|
|
}
|
|
|
|
return $sub_menu;
|
|
}
|
|
|
|
/**
|
|
* 条件
|
|
*
|
|
* status 0:未处理 1:打回 2:暂停 3:已发货
|
|
*/
|
|
function _views_tab($curr_view)
|
|
{
|
|
$base_filter = array();
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
|
|
$page = intval($_POST['page']) ? intval($_POST['page'])-1 : 0;
|
|
$limit = $_POST['pageSize'] ? $_POST['pageSize'] : 10;//每页显示数量
|
|
$offset = $limit * $page;
|
|
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super)
|
|
{
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids))
|
|
{
|
|
$this->pagedata['link_url'] = $this->delivery_link['order_index'];
|
|
$this->pagedata['error_msg'] = '操作员没有管辖的仓库';
|
|
echo $this->fetch('auth_error.html');
|
|
exit;
|
|
}
|
|
$base_filter['branch_id'] = $branch_ids;
|
|
|
|
$storeMdl = app::get("o2o")->model("store");
|
|
$storeList = $storeMdl->getList("branch_id,name", array("branch_id" => $branch_ids));
|
|
$store_list = array_column($storeList, "name", "branch_id");
|
|
$this->pagedata['store_list'] = $store_list;
|
|
}
|
|
|
|
//menu
|
|
$sub_menu = array(
|
|
'all' => array('label' => app::get('base')->_('全部'), 'filter' => array(), 'href' => $this->delivery_link['order_index']),
|
|
'wait_delivery' => array('label' => app::get('base')->_('待发货'), 'filter' => array('status' => 0), 'href' => $this->delivery_link['orderWaitDelivery']),
|
|
|
|
'picked' => array('label' => app::get('base')->_('待签收'), 'filter' => array('status' => 3, 'is_received' => array('1')), 'href' => $this->delivery_link['orderPicked']),
|
|
'delivered' => array('label' => app::get('base')->_('已签收'), 'filter' => array('status' => 3, 'is_received' => array('2')), 'href' => $this->delivery_link['orderDelivered']),
|
|
'cancel' => array('label' => app::get('base')->_('已取消'), 'filter' => array('status' => 1), 'href' => $this->delivery_link['orderCancel']),
|
|
);
|
|
|
|
foreach($sub_menu as $k=>$v)
|
|
{
|
|
//Ajax加载下一页数据,只处理本页
|
|
if($_POST['flag'] == 'ajax' && $curr_view != $k)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if (!IS_NULL($v['filter']))
|
|
{
|
|
$v['filter'] = array_merge($v['filter'], $base_filter);
|
|
}
|
|
|
|
//搜索条件
|
|
if($_POST['sel_type'] && $_POST['sel_keywords'])
|
|
{
|
|
switch ($_POST['sel_type'])
|
|
{
|
|
|
|
case 'order_bn':
|
|
$v['filter']['order_bn|foot'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
case 'ship_mobile':
|
|
$v['filter']['ship_mobile|has'] = htmlspecialchars(trim($_POST['sel_keywords']));
|
|
break;
|
|
|
|
case "channel":
|
|
$shop = app::get('ome')->model('shop')->getList('shop_id',array('shop_type'=>$_POST['sel_keywords']));
|
|
$shopIds = array_column($shop,'shop_id');
|
|
$v['filter']['shop_id'] = $shopIds;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$count = 0;
|
|
if ($k == 'wait_delivery' || $k == 'picked') {
|
|
|
|
$count = $wapDeliveryObj->count($v['filter']);
|
|
}
|
|
|
|
$sub_menu[$k]['filter'] = $v['filter'] ? $v['filter'] : null;
|
|
$sub_menu[$k]['count'] = $count;
|
|
$sub_menu[$k]['pageSize'] = ceil($count / $limit);
|
|
|
|
$sub_menu[$k]['offset'] = $offset;
|
|
$sub_menu[$k]['limit'] = $limit;
|
|
|
|
if ($curr_view == 'wait_delivery') {
|
|
$sub_menu[$k]['orderby'] = 'order_createtime asc'; #排序
|
|
} else {
|
|
$sub_menu[$k]['orderby'] = 'order_createtime desc'; #排序
|
|
}
|
|
|
|
if($k == $curr_view){
|
|
$sub_menu[$k]['curr_view'] = true;
|
|
}else{
|
|
$sub_menu[$k]['curr_view'] = false;
|
|
}
|
|
}
|
|
|
|
return $sub_menu;
|
|
}
|
|
|
|
/**
|
|
* 获取CreateTimeByDateType
|
|
* @param mixed $filter filter
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function getCreateTimeByDateType($filter)
|
|
{
|
|
$dateType = $_POST['dateType'];
|
|
switch ($dateType) {
|
|
case 'today':
|
|
$filter['create_time|than'] = strtotime(date('Y-m-d'));
|
|
$filter['create_time|lthan'] = time();
|
|
break;
|
|
case 'yesterday':
|
|
$filter['create_time|than'] = strtotime(date('Y-m-d', strtotime('-1 day')));
|
|
$filter['create_time|lthan'] = strtotime(date('Y-m-d 23:59:59', strtotime('-1 day')));
|
|
break;
|
|
case 'month':
|
|
$filter['create_time|than'] = strtotime(date('Y-m-01'));
|
|
$filter['create_time|lthan'] = time();
|
|
break;
|
|
case 'custom':
|
|
if ($_POST['start_time']) {
|
|
$filter['create_time|than'] = strtotime($_POST['start_time']);
|
|
}
|
|
if ($_POST['end_time']) {
|
|
$filter['create_time|lthan'] = strtotime($_POST['end_time'] . ' 23:59:59');
|
|
}
|
|
break;
|
|
}
|
|
|
|
$this->pagedata['dateType'] = $_POST['dateType'] ? $_POST['dateType'] : 'custom';
|
|
|
|
return $filter;
|
|
}
|
|
|
|
/**
|
|
* 订单查看
|
|
*/
|
|
function index()
|
|
{
|
|
if ($_GET['view']) {
|
|
$this->delivery_type = $_GET['view'];
|
|
$sub_menu = $this->_views_tab($this->delivery_type);
|
|
} else {
|
|
$this->delivery_type = 'all';
|
|
$sub_menu = $this->_views_tab($this->delivery_type);
|
|
}
|
|
|
|
$this->pagedata['sub_menu'] = $sub_menu;
|
|
|
|
$filter = $sub_menu[$this->delivery_type]['filter'];
|
|
|
|
$filter = $this->getCreateTimeByDateType($filter);
|
|
|
|
$title = $sub_menu[$this->delivery_type]['label'];
|
|
|
|
$offset = $sub_menu[$this->delivery_type]['offset'];
|
|
$limit = $sub_menu[$this->delivery_type]['limit'];
|
|
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
|
|
$dataList = $wapDeliveryLib->getList($filter, $offset, $limit, $sub_menu[$this->delivery_type]['orderby'], $this->delivery_type);
|
|
|
|
|
|
$this->pagedata['title'] = $title;
|
|
$this->pagedata['dataList'] = $dataList;
|
|
$this->pagedata['pageSize'] = $sub_menu[$this->delivery_type]['pageSize'];
|
|
|
|
$this->pagedata['link_url'] = $sub_menu[$this->delivery_type]['href'];
|
|
|
|
//baidu map button show or not
|
|
//$baidu_map_show = app::get('o2o')->getConf('o2o.baidumap.show');
|
|
if($baidu_map_show=="true"){
|
|
//$this->pagedata["baidu_map_show"] = true;
|
|
}
|
|
|
|
|
|
$this->pagedata['wait_receiver_url'] = $this->delivery_link['orderPicked'];
|
|
$this->pagedata['do_sign_url'] = $this->delivery_link['doSign'];
|
|
$this->pagedata['uploadimage'] = $this->delivery_link['uploadimage'];
|
|
$this->pagedata['sign_url'] = $this->delivery_link['orderDelivered'];
|
|
if(isset($_POST['page']))
|
|
{
|
|
//Ajax加载更多
|
|
$this->display('order/order_list_more.html');
|
|
}
|
|
else
|
|
{
|
|
$corpList = kernel::database()->select("select channel_id,type,name,tmpl_type from sdb_ome_dly_corp where disabled='false' and type not in ('o2o_ship','o2o_pickup')");
|
|
$this->pagedata['corpList'] = json_encode($corpList);
|
|
|
|
$shopTypeList = app::get('ome')->model('shop')->getList('shop_type');
|
|
$shopTypeListMap = ome_shop_type::get_shop_type();
|
|
$channelListTmp = array();
|
|
foreach($shopTypeList as $k=>$v){
|
|
if ($v['shop_type'] && $shopTypeListMap[$v['shop_type']]) {
|
|
$channelListTmp[$v['shop_type']] = $shopTypeListMap[$v['shop_type']];
|
|
}
|
|
}
|
|
$channel = array();
|
|
foreach($channelListTmp as $k=>$v){
|
|
$channel[] = array(
|
|
'value' => $k,
|
|
'label' => $v
|
|
);
|
|
}
|
|
|
|
$this->pagedata['channelList'] = $channel;
|
|
|
|
//门店核单拒绝原因
|
|
$reasonObj = app::get('o2o')->model('refuse_reason');
|
|
$refuse_reasons = $reasonObj->getList('*', array('disabled'=>'false'), 0, 100);
|
|
$this->pagedata['refuse_reasons'] = $refuse_reasons;
|
|
|
|
$this->display('order/order_list.html');
|
|
}
|
|
}
|
|
|
|
function getCorpList(){
|
|
$store_id = $_POST['store_id'];
|
|
|
|
$storeObj = app::get('o2o')->model('store');
|
|
$storeInfo = $storeObj->dump(array('store_id'=>$store_id), 'is_default_month_accoun');
|
|
$storeCorpList = $storeObj->db->select("SELECT * FROM sdb_o2o_store_corp WHERE store_id=" . $store_id);
|
|
$corpCodeArr = array();
|
|
$default_corp_code = '';
|
|
if ($storeCorpList) {
|
|
foreach($storeCorpList as $row) {
|
|
|
|
$corpCodeArr[] = $row['corp_code'];
|
|
|
|
if ($row['is_default'] == '1') {
|
|
// 默认的物流公司
|
|
$default_corp_code = $row['corp_code'];
|
|
}
|
|
|
|
$defaultCorp[$row['corp_code']]['product_type'] = $row['corp_product'];
|
|
$defaultCorp[$row['corp_code']]['corp_month_account'] = $row['corp_month_account'];
|
|
if ($row['corp_month_account_default'] == '小镇') {
|
|
$defaultCorp[$row['corp_code']]['default_corp_month_account'] = 'default';
|
|
} else {
|
|
$defaultCorp[$row['corp_code']]['default_corp_month_account'] = $row['corp_month_account'];
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($corpCodeArr) {
|
|
// 获取物流公司
|
|
$corpList = kernel::database()->select("select channel_id,type,name,tmpl_type from sdb_ome_dly_corp where disabled='false' and tmpl_type='electron' and `type` in ('" . implode("','", $corpCodeArr) . "')");
|
|
foreach ($corpList as $k => $row) {
|
|
$product_type_list = kernel::single('logisticsmanager_waybill_func')->corpCode2ChannelService();
|
|
$corpList[$k]['product_type'] = $product_type_list[$row['type']]['product_type'];
|
|
}
|
|
} else {
|
|
$corpList = null;
|
|
}
|
|
|
|
echo json_encode(array('rsp' => 'succ', 'storeInfo' => $storeInfo, 'corpList' => $corpList, 'default_corp_code' => $default_corp_code, 'default_corp' => $defaultCorp));exit;
|
|
}
|
|
|
|
function decryptAddress()
|
|
{
|
|
$orderId = $_POST['order_id'];
|
|
$type = $_POST['action'];
|
|
$field = 'order_bn,shop_id,shop_type,ship_tel,ship_mobile,ship_addr,ship_name,ship_area';
|
|
$data = app::get('ome')->model('orders')->db_dump(array('order_id' => $orderId), $field);
|
|
if (!$data) {
|
|
echo json_encode(array('rsp' => 'fail', 'msg' => '订单号不存在'));exit;
|
|
}
|
|
|
|
if ($data['shop_type'] == 'luban') {
|
|
$jyInfo = kernel::single('ome_bill_label')->getBillLabelInfo($orderId, 'order', 'XJJY');
|
|
if ($jyInfo) {
|
|
echo json_encode(array('rsp' => 'fail', 'msg' => '中转订单请联系客服修改直邮后再进行操作'));exit;
|
|
}
|
|
}
|
|
|
|
// mainland:北京/顺义区/后沙峪地区:3268
|
|
$ship_area_str = '';
|
|
if ($data['ship_area']) {
|
|
$ship_area = explode(":", $data['ship_area']);
|
|
$ship_area_str = str_replace("/", "", $ship_area[1]);
|
|
}
|
|
|
|
if ($type == 'show') {
|
|
// 解密
|
|
$decrypt_data = kernel::single('ome_security_router', $data['shop_type'])->decrypt(array(
|
|
'ship_tel' => $data['ship_tel'],
|
|
'ship_mobile' => $data['ship_mobile'],
|
|
'ship_addr' => $data['ship_addr'],
|
|
'shop_id' => $data['shop_id'],
|
|
'order_bn' => $data['order_bn'],
|
|
'ship_name' => $data['ship_name'],
|
|
), 'order', true);
|
|
|
|
if ($decrypt_data['rsp'] && $decrypt_data['rsp'] == 'fail') {
|
|
$errArr = json_decode($decrypt_data['err_msg'], true);
|
|
$msg = $errArr['data']['decrypt_infos'][0]['err_msg'] ? $errArr['data']['decrypt_infos'][0]['err_msg'] : '解密失败,订单已关闭或者解密额度不足';
|
|
$result = [
|
|
'rsp' => 'fail',
|
|
'err_data' => $decrypt_data,
|
|
'msg' => $msg
|
|
];
|
|
exit(json_encode($result, JSON_UNESCAPED_UNICODE));
|
|
}
|
|
|
|
$res = [
|
|
'rsp' => 'succ',
|
|
'data' => [
|
|
'ship_name' => $decrypt_data['ship_name'],
|
|
'ship_tel' => $decrypt_data['ship_tel'],
|
|
'ship_mobile' => $decrypt_data['ship_mobile'],
|
|
'ship_addr' => $ship_area_str.$decrypt_data['ship_addr']
|
|
]
|
|
];
|
|
} else {
|
|
$res = [
|
|
'rsp' => 'succ',
|
|
'data' => [
|
|
'ship_name' => $data['ship_name'],
|
|
'ship_tel' => $data['ship_tel'],
|
|
'ship_mobile' => $data['ship_mobile'],
|
|
'ship_addr' => $ship_area_str.$data['ship_addr']
|
|
]
|
|
];
|
|
}
|
|
echo json_encode($res);exit;
|
|
}
|
|
|
|
/**
|
|
* 订单确认
|
|
*/
|
|
function confirm()
|
|
{
|
|
$this->delivery_type = 'confirm';
|
|
|
|
$sub_menu = $this->_views_confirm($this->delivery_type);
|
|
$filter = $sub_menu[$this->delivery_type]['filter'];
|
|
$title = $sub_menu[$this->delivery_type]['label'];
|
|
|
|
$offset = $sub_menu[$this->delivery_type]['offset'];
|
|
$limit = $sub_menu[$this->delivery_type]['limit'];
|
|
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
|
|
$dataList = $wapDeliveryLib->getList($filter, $offset, $limit, $sub_menu[$this->delivery_type]['orderby'], $this->delivery_type);
|
|
|
|
$this->pagedata['title'] = $title;
|
|
$this->pagedata['dataList'] = $dataList;
|
|
$this->pagedata['pageSize'] = $sub_menu[$this->delivery_type]['pageSize'];
|
|
|
|
$this->pagedata['link_url'] = $sub_menu[$this->delivery_type]['href'];
|
|
|
|
//baidu map button show or not
|
|
$baidu_map_show = app::get('o2o')->getConf('o2o.baidumap.show');
|
|
if($baidu_map_show=="true"){
|
|
$this->pagedata["baidu_map_show"] = true;
|
|
}
|
|
|
|
if($offset > 0)
|
|
{
|
|
//Ajax加载更多
|
|
$this->display('order/order_list_more.html');
|
|
}
|
|
else
|
|
{
|
|
//门店核单拒绝原因
|
|
$reasonObj = app::get('o2o')->model('refuse_reason');
|
|
$refuse_reasons = $reasonObj->getList('*', array('disabled'=>'false'), 0, 100);
|
|
$this->pagedata['refuse_reasons'] = $refuse_reasons;
|
|
|
|
$this->display('order/order_list.html');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 订单发货
|
|
*/
|
|
function consign()
|
|
{
|
|
$this->delivery_type = 'consign';
|
|
|
|
$sub_menu = $this->_views_confirm($this->delivery_type);
|
|
$filter = $sub_menu[$this->delivery_type]['filter'];
|
|
$title = $sub_menu[$this->delivery_type]['label'];
|
|
|
|
$offset = $sub_menu[$this->delivery_type]['offset'];
|
|
$limit = $sub_menu[$this->delivery_type]['limit'];
|
|
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
|
|
$dataList = $wapDeliveryLib->getList($filter, $offset, $limit, $sub_menu[$this->delivery_type]['orderby'], $this->delivery_type);
|
|
|
|
$this->pagedata['title'] = $title;
|
|
$this->pagedata['dataList'] = $dataList;
|
|
$this->pagedata['pageSize'] = $sub_menu[$this->delivery_type]['pageSize'];
|
|
|
|
$this->pagedata['link_url'] = $sub_menu[$this->delivery_type]['href'];
|
|
|
|
//baidu map button show or not
|
|
$baidu_map_show = app::get('o2o')->getConf('o2o.baidumap.show');
|
|
if($baidu_map_show=="true"){
|
|
$this->pagedata["baidu_map_show"] = true;
|
|
}
|
|
|
|
if($offset > 0)
|
|
{
|
|
//Ajax加载更多
|
|
$this->display('order/order_list_more.html');
|
|
}
|
|
else
|
|
{
|
|
$this->display('order/order_list.html');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 确认拒单
|
|
*
|
|
* @param intval $delivery_id
|
|
* @return json
|
|
*/
|
|
function doRefuse()
|
|
{
|
|
$delivery_id = intval($_POST['delivery_id']);
|
|
$redirect_url = ($_POST['backUrl'] ? $_POST['backUrl'] : $this->delivery_link['order_confirm']);
|
|
if(empty($delivery_id))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'无效操作'));
|
|
exit;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump(array('delivery_id'=>$delivery_id), '*');
|
|
if(empty($deliveryInfo))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'没有相关发货单'));
|
|
exit;
|
|
}
|
|
elseif($deliveryInfo['status'] > 0 || $deliveryInfo['confirm'] != 3)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'该发货单无法继续操作'));
|
|
exit;
|
|
}
|
|
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
|
|
//组织参数
|
|
$params = array_merge(array('delivery_id'=>$delivery_id), $deliveryInfo);
|
|
|
|
$refuse_reason_id = intval($_POST['refuse_reason_id']);
|
|
if(empty($refuse_reason_id))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请选择拒单理由'));
|
|
exit;
|
|
}
|
|
|
|
//拒绝原因
|
|
$params['reason_id'] = $refuse_reason_id;
|
|
|
|
if($dlyProcessLib->refuse($params)){
|
|
|
|
//task任务更新统计数据
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
$wapDeliveryLib->taskmgr_statistic('refuse');
|
|
|
|
echo json_encode(array('res'=>'succ', 'status'=>'已拒绝', 'msg'=>'已拒绝成功'));
|
|
exit;
|
|
}else{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'门店拒绝失败'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 立即接单
|
|
*
|
|
* @return json
|
|
*/
|
|
function doConfirm()
|
|
{
|
|
$delivery_id = intval($_POST['delivery_id']);
|
|
$redirect_url = ($_POST['backUrl'] ? $_POST['backUrl'] : $this->delivery_link['order_confirm']);
|
|
if(empty($delivery_id))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'无效操作'));
|
|
exit;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump(array('delivery_id'=>$delivery_id), '*');
|
|
if(empty($deliveryInfo))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'没有相关发货单'));
|
|
exit;
|
|
}
|
|
elseif($deliveryInfo['status'] > 0 || $deliveryInfo['confirm'] != 3)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'该发货单无法继续操作'));
|
|
exit;
|
|
}
|
|
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
|
|
//组织参数
|
|
$params = array_merge(array('delivery_id'=>$delivery_id), $deliveryInfo);
|
|
|
|
if($dlyProcessLib->accept($params)){
|
|
|
|
//task任务更新统计数据
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
$wapDeliveryLib->taskmgr_statistic('confirm');
|
|
|
|
echo json_encode(array('res'=>'succ', 'status'=>'已确认', 'msg'=>'订单已接收', 'delivery_bn'=>$deliveryInfo['delivery_bn']));
|
|
exit;
|
|
}else{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'门店确认失败'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取ConfirmDeliveryItems
|
|
* @return mixed 返回结果
|
|
*/
|
|
public function getConfirmDeliveryItems(){
|
|
$delivery_id = $_POST['delivery_id'];
|
|
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
|
|
$deliveryObj = app::get('wap')->model('delivery');
|
|
$delivery = $deliveryObj->dump(array('delivery_id' => $delivery_id), 'delivery_id,delivery_bn,outer_delivery_bn,status');
|
|
|
|
$delivery_items = $wapDeliveryLib->getDeliveryItemList($delivery['outer_delivery_bn']);
|
|
|
|
echo json_encode($delivery_items);exit;
|
|
}
|
|
|
|
/**
|
|
* 立即发货
|
|
*
|
|
* @return json
|
|
*/
|
|
|
|
function doConsign()
|
|
{
|
|
$delivery_id = intval($_POST['delivery_id']);
|
|
$redirect_url = ($_POST['backUrl'] ? $_POST['backUrl'] : $this->delivery_link['order_consign']);
|
|
if(empty($delivery_id))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'无效操作'));
|
|
exit;
|
|
}
|
|
$filter = array('delivery_id'=>$delivery_id);
|
|
|
|
#管理员对应仓库
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super){
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids))
|
|
{
|
|
$error_msg = '操作员没有管辖的仓库';
|
|
|
|
echo json_encode(array('res'=>'error', 'msg'=>$error_msg));
|
|
exit;
|
|
}
|
|
|
|
$filter['branch_id'] = $branch_ids;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump($filter, '*');
|
|
|
|
|
|
$deliveryInfo['status'] = intval($deliveryInfo['status']);
|
|
|
|
if(empty($deliveryInfo))
|
|
{
|
|
$error_msg = '没有此发货单或没仓库权限,请检查';
|
|
}
|
|
elseif($deliveryInfo['confirm'] != 1)
|
|
{
|
|
//$error_msg = "该发货单还未确认,不能进行操作";
|
|
|
|
if($deliveryInfo['confirm'] == 2){
|
|
$error_msg = "该发货单已被拒绝,不能进行操作";
|
|
}
|
|
}
|
|
elseif($deliveryInfo['status'] !== 0)
|
|
{
|
|
$error_msg = '该发货单状态不正确,不能进行操作';
|
|
|
|
if($deliveryInfo['status'] == 3){
|
|
$error_msg = '该发货单已发货,不能进行操作'.$deliveryInfo['status'];
|
|
}
|
|
}
|
|
|
|
//错误提示
|
|
if($error_msg)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>$error_msg));
|
|
exit;
|
|
}
|
|
|
|
$deliveryInfo['order_number'] = 1;
|
|
|
|
//执行发货
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
$res = $dlyProcessLib->consign($deliveryInfo);
|
|
|
|
if($res){
|
|
|
|
//task任务更新统计数据
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
$wapDeliveryLib->taskmgr_statistic('consign');
|
|
|
|
echo json_encode(array('res'=>'succ', 'msg'=>'发货成功'));
|
|
exit;
|
|
}else {
|
|
echo json_encode(array('res'=>'error', 'msg'=>'发货失败'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* 重发提货校验码
|
|
*
|
|
* @return json
|
|
*/
|
|
function sendMsg()
|
|
{
|
|
//开启销单校验码才能重新生成校验码
|
|
if(app::get('o2o')->getConf('o2o.delivery.confirm.code') != "true"){
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请开启销单校验码'));
|
|
exit;
|
|
}
|
|
|
|
$delivery_bn = $_POST['delivery_bn'];
|
|
|
|
if(empty($delivery_bn))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'无效操作'));
|
|
exit;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump(array('delivery_bn'=>$delivery_bn), '*');
|
|
if(empty($deliveryInfo))
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'没有相关发货单'));
|
|
exit;
|
|
}
|
|
elseif($deliveryInfo['status'] != 3 || $deliveryInfo['confirm'] != 1 || $deliveryInfo['process_status'] != 7)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'发货单还没有发货'));
|
|
exit;
|
|
}
|
|
elseif($deliveryInfo['is_received'] == 2)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'发货单已签收完成'));
|
|
exit;
|
|
}
|
|
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
$res = $dlyProcessLib->reSendMsg($deliveryInfo);
|
|
if($res)
|
|
{
|
|
echo json_encode(array('res'=>'succ', 'msg'=>'提货校验码发送成功'));
|
|
exit;
|
|
}
|
|
else
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>'提货校验码发送失败'));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 显示订单详情
|
|
*/
|
|
function showOrderInfo()
|
|
{
|
|
$filehtml = 'order/sign_order_info.html';
|
|
|
|
$delivery_bn = $_POST['delivery_bn'];
|
|
$flag = $_POST['flag'];
|
|
$error_msg = '';
|
|
|
|
//先检查发货单号 和 管理员对应仓库
|
|
if(empty($delivery_bn))
|
|
{
|
|
$error_msg = '请填写发货单号';
|
|
|
|
$this->pagedata['error_msg'] = $error_msg;
|
|
$this->display($filehtml);
|
|
exit;
|
|
}
|
|
|
|
$filter = array('delivery_bn'=>$delivery_bn);
|
|
|
|
#管理员对应仓库
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super)
|
|
{
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids)){
|
|
$error_msg = '操作员没有管辖的仓库';
|
|
|
|
$this->pagedata['error_msg'] = $error_msg;
|
|
$this->display($filehtml);
|
|
exit;
|
|
}
|
|
|
|
$filter['branch_id'] = $branch_ids;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump($filter, '*');
|
|
|
|
if(empty($deliveryInfo))
|
|
{
|
|
$error_msg = '没有此发货单,请检查';
|
|
|
|
$this->pagedata['error_msg'] = $error_msg;
|
|
$this->display($filehtml);
|
|
exit;
|
|
}
|
|
|
|
#获取发货仓库对应的门店店铺信息
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
$branchShopInfo = $wapDeliveryLib->getBranchShopInfo($deliveryInfo['branch_id']);
|
|
|
|
$deliveryInfo['order_number'] = 1;
|
|
|
|
#合并数据
|
|
$result = array_merge($deliveryInfo, $branchShopInfo);
|
|
unset($data['wms_id'], $data['store_id'], $data['area'], $data['confirm'], $data['branch_id']);
|
|
|
|
//显示发货单信息
|
|
$result['dly_status'] = $wapDeliveryLib->formatDeliveryStatus('status', $result['status']);
|
|
$result['dly_confirm'] = $wapDeliveryLib->formatDeliveryStatus('confirm', $result['confirm']);
|
|
|
|
#获取订单信息
|
|
$result['order_info'] = $wapDeliveryLib->get_order_info($result['order_bn'], $result['is_cod']);
|
|
|
|
#获取发货单明细
|
|
$result['delivery_items'] = $wapDeliveryLib->getDeliveryItemList($result['outer_delivery_bn']);
|
|
|
|
#履约超时时间
|
|
$result['dly_overtime'] = $wapDeliveryLib->getDeliveryOvertime($result['create_time']);
|
|
|
|
//百度地图
|
|
$baidu_map_show = app::get('o2o')->getConf('o2o.baidumap.show');
|
|
if($baidu_map_show == 'true'){
|
|
$result['show_map'] = true;
|
|
}
|
|
|
|
$this->pagedata['dlyinfo'] = $result;
|
|
$this->display($filehtml);
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* 签收核销列表
|
|
*/
|
|
function sign()
|
|
{
|
|
$this->delivery_type = 'sign';
|
|
|
|
$sub_menu = $this->_views_confirm($this->delivery_type);
|
|
$filter = $sub_menu[$this->delivery_type]['filter'];
|
|
$title = $sub_menu[$this->delivery_type]['label'];
|
|
|
|
$offset = $sub_menu[$this->delivery_type]['offset'];
|
|
$limit = $sub_menu[$this->delivery_type]['limit'];
|
|
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
|
|
$dataList = $wapDeliveryLib->getList($filter, $offset, $limit, $sub_menu[$this->delivery_type]['orderby'], $this->delivery_type);
|
|
|
|
$this->pagedata['title'] = $title;
|
|
$this->pagedata['dataList'] = $dataList;
|
|
$this->pagedata['pageSize'] = $sub_menu[$this->delivery_type]['pageSize'];
|
|
|
|
$this->pagedata['link_url'] = $sub_menu[$this->delivery_type]['href'];
|
|
|
|
//baidu map button show or not
|
|
$baidu_map_show = app::get('o2o')->getConf('o2o.baidumap.show');
|
|
if($baidu_map_show=="true"){
|
|
$this->pagedata["baidu_map_show"] = true;
|
|
}
|
|
|
|
if($offset > 0)
|
|
{
|
|
//Ajax加载更多
|
|
$this->display('order/order_list_more.html');
|
|
}
|
|
else
|
|
{
|
|
$this->display('order/order_list.html');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 核销页面
|
|
*/
|
|
function signPage()
|
|
{
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
|
|
$delivery_id = intval($_GET['delivery_id']);
|
|
|
|
//发货单
|
|
if($delivery_id)
|
|
{
|
|
$deliveryInfo = $wapDeliveryObj->dump(array('delivery_id'=>$delivery_id), '*');
|
|
}
|
|
|
|
$this->pagedata['deliveryInfo'] = $deliveryInfo;
|
|
|
|
//销单校验码开关 关闭状态不显示相关校验码input/button
|
|
if(app::get('o2o')->getConf('o2o.delivery.confirm.code') == "true"){
|
|
$this->pagedata["code_html_show"] = true;
|
|
}
|
|
|
|
$this->display('order/sign.html');
|
|
}
|
|
|
|
/**
|
|
* 最终签收
|
|
*
|
|
* @return json
|
|
*/
|
|
function doSign()
|
|
{
|
|
$delivery_id = $_POST['delivery_id'];
|
|
$flag = $_POST['flag'];
|
|
$error_msg = '';
|
|
|
|
//先检查发货单号 和 管理员对应仓库
|
|
if(empty($delivery_id))
|
|
{
|
|
$error_msg = '请填写发货单号';
|
|
|
|
echo json_encode(array('error'=>true, 'message'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
//[防并发]防止重复点击
|
|
$cacheKeyName = sprintf("do_delivery_%s", $_POST['delivery_id']);
|
|
$cacheData = cachecore::fetch($cacheKeyName);
|
|
if($cacheData !== false) {
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请勿重复操作'));
|
|
exit;
|
|
}
|
|
//[防并发]判断重复请求(3秒之内不能重复)
|
|
cachecore::store($cacheKeyName, date('YmdHis', time()), 3);
|
|
|
|
|
|
$filter = array('delivery_id'=>$delivery_id);
|
|
|
|
#管理员对应仓库
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super){
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids)){
|
|
$error_msg = '操作员没有管辖的仓库';
|
|
|
|
echo json_encode(array('res'=>'error', 'message'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
$filter['branch_id'] = $branch_ids;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump($filter, '*');
|
|
|
|
if(empty($deliveryInfo))
|
|
{
|
|
$error_msg = '没有此发货单,请检查';
|
|
}
|
|
elseif($deliveryInfo['status'] != 3 || $deliveryInfo['confirm'] != 1 || $deliveryInfo['process_status'] != 7)
|
|
{
|
|
$error_msg = '发货单还没有发货';
|
|
}
|
|
elseif($deliveryInfo['is_received'] == 2)
|
|
{
|
|
$error_msg = '发货单已签收完成';
|
|
}
|
|
|
|
//错误提示
|
|
if($error_msg)
|
|
{
|
|
echo json_encode(array('res'=>'error', 'msg'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
$deliveryInfo['order_number'] = 1;
|
|
if(count($_FILES['deliveryImage']['tmp_name'])>3){
|
|
echo json_encode(array('res'=>'error','msg'=>'最多上传3张图片'));
|
|
exit;
|
|
}
|
|
|
|
|
|
//上传图片
|
|
|
|
$post = file_get_contents('php://input');
|
|
$post = json_decode($post, true);
|
|
|
|
$msg = '';
|
|
|
|
if(!$_FILES['deliveryImage']){
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请上传配送单图片'));
|
|
exit;
|
|
}
|
|
$deliveryImage = [];
|
|
// 获取图片模型
|
|
$imageModel = app::get('image')->model('image');
|
|
//上传并保存图片
|
|
if($_FILES['deliveryImage']){
|
|
$file_obj = app::get("base")->model("files");
|
|
$fileList = kernel::single('base_storager');
|
|
foreach($_FILES['deliveryImage']['tmp_name'] as $k => $v){
|
|
$img = array(
|
|
'name' => $v,
|
|
'full_path' => $_FILES['deliveryImage']['full_path'][$k],
|
|
'type' => $_FILES['deliveryImage']['type'][$k],
|
|
'tmp_name' => $_FILES['deliveryImage']['tmp_name'][$k],
|
|
'error' => $_FILES['deliveryImage']['error'][$k],
|
|
'size' => $_FILES['deliveryImage']['size'][$k],
|
|
);
|
|
|
|
$rs = kernel::single('wap_deliveryimg')->uploadImage($delivery_id, $img['tmp_name'], $img['name']);
|
|
|
|
if($rs['error']){
|
|
echo json_encode(array('res'=>'error', 'msg'=>$rs['error']));
|
|
exit;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//执行签收
|
|
$dlyProcessLib = kernel::single('wap_delivery_process');
|
|
$res = $dlyProcessLib->sign($deliveryInfo);
|
|
|
|
if($res){
|
|
|
|
echo json_encode(array('res'=>'succ', 'msg'=>'操作成功'));
|
|
exit;
|
|
}else {
|
|
echo json_encode(array('res'=>'error', 'msg'=>'操作失败 '.$msg));
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
function uploadimage()
|
|
{
|
|
$delivery_id = $_POST['delivery_id'];
|
|
$flag = $_POST['flag'];
|
|
$error_msg = '';
|
|
|
|
//先检查发货单号 和 管理员对应仓库
|
|
if(empty($delivery_id))
|
|
{
|
|
$error_msg = '请填写发货单号';
|
|
|
|
echo json_encode(array('res'=>'error', 'message'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
//[防并发]防止重复点击
|
|
$cacheKeyName = sprintf("do_delivery_%s", $_POST['delivery_id']);
|
|
$cacheData = cachecore::fetch($cacheKeyName);
|
|
if($cacheData !== false) {
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请勿重复操作'));
|
|
exit;
|
|
}
|
|
//[防并发]判断重复请求(3秒之内不能重复)
|
|
cachecore::store($cacheKeyName, date('YmdHis', time()), 3);
|
|
|
|
|
|
$filter = array('delivery_id'=>$delivery_id);
|
|
|
|
#管理员对应仓库
|
|
$is_super = kernel::single('desktop_user')->is_super();
|
|
if(!$is_super){
|
|
$branchObj = kernel::single('o2o_store_branch');
|
|
$branch_ids = $branchObj->getO2OBranchByUser(true);
|
|
if(empty($branch_ids)){
|
|
$error_msg = '操作员没有管辖的仓库';
|
|
|
|
echo json_encode(array('res'=>'error', 'message'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
$filter['branch_id'] = $branch_ids;
|
|
}
|
|
|
|
$wapDeliveryObj = app::get('wap')->model('delivery');
|
|
$deliveryInfo = $wapDeliveryObj->dump($filter, '*');
|
|
|
|
if(empty($deliveryInfo))
|
|
{
|
|
$error_msg = '没有此发货单,请检查';
|
|
}elseif($deliveryInfo['is_received'] != 2)
|
|
{
|
|
$error_msg = '发货单没有签收';
|
|
}
|
|
$wap_delivery_id = $deliveryInfo['delivery_id'];
|
|
//
|
|
$wapdeliveryimages = kernel::single('wap_deliveryimg')->getwapdeliveryImages($wap_delivery_id);
|
|
if(count($wapdeliveryimages)<=0){
|
|
|
|
$error_msg = '请上传签收图片';
|
|
}
|
|
if(count($wapdeliveryimages)>3){
|
|
|
|
$error_msg = '签收图片限定三张';
|
|
}
|
|
if((count($wapdeliveryimages)+count($_FILES['deliveryImage']['tmp_name']))>3){
|
|
$error_msg = '签收图片超过三张';
|
|
|
|
}
|
|
//错误提示
|
|
if($error_msg)
|
|
{
|
|
echo json_encode(array('res'=>'error','msg'=>$error_msg, 'redirect'=>null));
|
|
exit;
|
|
}
|
|
|
|
$deliveryInfo['order_number'] = 1;
|
|
|
|
|
|
//上传图片
|
|
|
|
$post = file_get_contents('php://input');
|
|
$post = json_decode($post, true);
|
|
|
|
$msg = '';
|
|
|
|
if(!$_FILES['deliveryImage']){
|
|
echo json_encode(array('res'=>'error', 'msg'=>'请上传配送单图片'));
|
|
exit;
|
|
}
|
|
$deliveryImage = [];
|
|
$imageModel = app::get('image')->model('image');
|
|
//上传并保存图片
|
|
if($_FILES['deliveryImage']){
|
|
$file_obj = app::get("base")->model("files");
|
|
$fileList = kernel::single('base_storager');
|
|
foreach($_FILES['deliveryImage']['tmp_name'] as $k => $v){
|
|
$img = array(
|
|
'name' => $v,
|
|
'full_path' => $_FILES['deliveryImage']['full_path'][$k],
|
|
'type' => $_FILES['deliveryImage']['type'][$k],
|
|
'tmp_name' => $_FILES['deliveryImage']['tmp_name'][$k],
|
|
'error' => $_FILES['deliveryImage']['error'][$k],
|
|
'size' => $_FILES['deliveryImage']['size'][$k],
|
|
);
|
|
|
|
$rs = kernel::single('wap_deliveryimg')->uploadImage($delivery_id, $img['tmp_name'], $img['name']);
|
|
if($rs['error']){
|
|
echo json_encode(array('res'=>'error', 'msg'=>$rs['error']));
|
|
exit;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
echo json_encode(array('res'=>'succ', 'msg'=>'上传成功'));
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* onlineDelivery
|
|
* @return mixed 返回值
|
|
*/
|
|
public function onlineDelivery() {
|
|
$delivery_id = $_REQUEST['delivery_id'];
|
|
#仓库对应_发货单列表
|
|
$wapDeliveryLib = kernel::single('wap_delivery');
|
|
$deliveryObj = app::get('wap')->model('delivery');
|
|
$delivery = $deliveryObj->dump(array('delivery_id' => $delivery_id), 'delivery_id,delivery_bn,outer_delivery_bn,status,branch_id');
|
|
|
|
|
|
$storeObj = app::get('o2o')->model('store');
|
|
$storeInfo = $storeObj->dump(array('branch_id' => $delivery['branch_id']), 'store_id');
|
|
$this->pagedata['store_id'] = $storeInfo['store_id'];
|
|
|
|
$delivery_items = $wapDeliveryLib->getDeliveryItemList($delivery['outer_delivery_bn']);
|
|
|
|
$this->pagedata['title'] = '打印配货单';
|
|
$this->pagedata['delivery_items'] = $delivery_items;
|
|
$this->pagedata['delivery_id'] = $delivery_id;
|
|
|
|
$action = $_REQUEST['action'];
|
|
$this->pagedata['action'] = $action;
|
|
$sdf = kernel::single('wap_event_trigger_cloudprint')->getPrintData($delivery_id);
|
|
|
|
if($sdf['rsp']=='fail'){
|
|
|
|
$this->pagedata['msg'] = $sdf['msg'];
|
|
$this->pagedata['order_url'] = app::get('wap')->router()->gen_url(array('ctl'=>'order','act'=>'index'), true);
|
|
$this->display('order/order_print_error.html');
|
|
exit;
|
|
}
|
|
$dly_tmpl_id = $sdf['dly_tmpl_id'];
|
|
|
|
|
|
$data = kernel::single('wap_event_trigger_cloudprint')->processprintdata($sdf);
|
|
|
|
require_once(APP_DIR.'/wap/lib/generate_template_image.php');
|
|
|
|
// 创建生成器实例
|
|
$generator = new TemplateImageGenerator();
|
|
$base64_image = $generator->getBase64Image($dly_tmpl_id, $data);
|
|
|
|
$this->pagedata['base64_image'] = $base64_image;
|
|
$this->display('order/order_print_delivery.html');
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
* 获取微信签名
|
|
*/
|
|
public function getWxSign() {
|
|
$url = $_POST['url'];
|
|
|
|
$msg = '';
|
|
$wxSign = kernel::single('monitor_wechat_token')->getWxSign($url, $msg);
|
|
if (!$wxSign) {
|
|
$msg = $msg ? $msg : '网络异常,请重试';
|
|
$this->error($msg);
|
|
}
|
|
|
|
$this->success('签名成功', $wxSign);
|
|
}
|
|
|
|
|
|
}
|