mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 02:45:33 +08:00
392 lines
11 KiB
PHP
392 lines
11 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
/**
|
||
* 订单处理
|
||
*
|
||
* @category
|
||
* @package
|
||
* @author chenping<chenping@shopex.cn>
|
||
* @version $Id: Z
|
||
*/
|
||
class erpapi_shop_request_order extends erpapi_shop_request_abstract
|
||
{
|
||
/**
|
||
* 淘宝全链路
|
||
*
|
||
* @return void
|
||
* @author
|
||
* */
|
||
|
||
public function message_produce($sdf,$queue=false){}
|
||
|
||
/**
|
||
* 获取店铺订单详情
|
||
*
|
||
* @param String $order_bn 订单号
|
||
* @return void
|
||
* @author
|
||
* */
|
||
public function get_order_detial($order_bn)
|
||
{
|
||
$params['tid'] = $order_bn;
|
||
$params = $this->__forma_params_get_order_detial($params);
|
||
$title = "店铺(".$this->__channelObj->channel['name'].")获取前端店铺".$order_bn."的订单详情";
|
||
|
||
$order_type = ($this->__channelObj->channel['business_type'] == 'zx') ? 'direct' : 'agent';
|
||
|
||
$api_name = $order_type == 'direct' ? SHOP_TRADE_FULLINFO_RPC : SHOP_FENXIAO_TRADE_FULLINFO_RPC;
|
||
|
||
$rsp = $this->__caller->call($api_name,$params,array(),$title,10,$order_bn);
|
||
|
||
$result = array();
|
||
$result['rsp'] = $rsp['rsp'];
|
||
$result['err_msg'] = $rsp['err_msg'];
|
||
$result['msg_id'] = $rsp['msg_id'];
|
||
$result['res'] = $rsp['res'];
|
||
$result['data'] = json_decode($rsp['data'],1);
|
||
$result['order_type'] = $order_type;
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* __forma_params_get_order_detial
|
||
* @param mixed $params 参数
|
||
* @return mixed 返回值
|
||
*/
|
||
public function __forma_params_get_order_detial($params)
|
||
{
|
||
return $params;
|
||
}
|
||
|
||
#获取订单状态
|
||
/**
|
||
* 获取OrderStatus
|
||
* @param mixed $arrOrderBn arrOrderBn
|
||
* @return mixed 返回结果
|
||
*/
|
||
public function getOrderStatus($arrOrderBn)
|
||
{
|
||
$order_bn = implode(',', $arrOrderBn);
|
||
$params = array('tids' => $order_bn);
|
||
$title = "店铺(" . $this->__channelObj->channel['name'] . ")获取前端店铺" . $order_bn . "的订单详情";
|
||
$rsp = $this->__caller->call(SHOP_GET_ORDER_STATUS, $params, array(), $title, 10, $order_bn);
|
||
return $this->doGetOrderStatusRet($rsp);
|
||
}
|
||
|
||
protected function doGetOrderStatusRet($rsp) {
|
||
$rsp['data'] = json_decode($rsp['data'], 1);
|
||
return $rsp;
|
||
}
|
||
|
||
#订单编辑
|
||
public function updateIframe($order,$is_request=true,$ext=array()) {
|
||
// 默认本地编辑
|
||
$data = array('edit_type'=>'local');
|
||
return array('rsp'=>'success','msg'=>'本地订单编辑','data'=>$data);
|
||
}
|
||
|
||
protected function getReceivedParams($sdf) {
|
||
return [];
|
||
}
|
||
|
||
/**
|
||
* received
|
||
* @param mixed $sdf sdf
|
||
* @return mixed 返回值
|
||
*/
|
||
public function received($sdf){
|
||
$order = $sdf['order'];
|
||
list($api_name, $params) = $this->getReceivedParams($sdf);
|
||
if(empty($params)) {
|
||
return $this->succ('没有该接口');
|
||
}
|
||
$callback = array(
|
||
'class' => get_class($this),
|
||
'method' => 'callback',
|
||
);
|
||
$response = $this->__caller->call($api_name,$params,$callback,'订单接收回传',10,$order['order_bn']);
|
||
|
||
return $response;
|
||
}
|
||
|
||
/**
|
||
* reject
|
||
* @param mixed $sdf sdf
|
||
* @return mixed 返回值
|
||
*/
|
||
public function reject($sdf){}
|
||
|
||
/**
|
||
* lackApply
|
||
* @param mixed $sdf sdf
|
||
* @return mixed 返回值
|
||
*/
|
||
public function lackApply($sdf){}
|
||
|
||
#订单更新
|
||
/**
|
||
* 更新Order
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrder($order){}
|
||
|
||
/**
|
||
* 更新OrderStatus
|
||
* @param mixed $order order
|
||
* @param mixed $status status
|
||
* @param mixed $memo memo
|
||
* @param mixed $mode mode
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderStatus($order , $status='' , $memo='' , $mode='sync'){}
|
||
|
||
/**
|
||
* 更新OrderTax
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderTax($order){}
|
||
|
||
/**
|
||
* 更新OrderShipStatus
|
||
* @param mixed $order order
|
||
* @param mixed $queue queue
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderShipStatus($order,$queue = false) {}
|
||
|
||
/**
|
||
* 更新OrderPayStatus
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderPayStatus($order){}
|
||
|
||
/**
|
||
* 更新OrderMemo
|
||
* @param mixed $order order
|
||
* @param mixed $memo memo
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderMemo($order,$memo){}
|
||
|
||
/**
|
||
* 添加OrderMemo
|
||
* @param mixed $order order
|
||
* @param mixed $memo memo
|
||
* @return mixed 返回值
|
||
*/
|
||
public function addOrderMemo($order,$memo){}
|
||
|
||
/**
|
||
* 添加OrderCustomMark
|
||
* @param mixed $order order
|
||
* @param mixed $memo memo
|
||
* @return mixed 返回值
|
||
*/
|
||
public function addOrderCustomMark($order,$memo){}
|
||
|
||
#$sdf=['order_bn'=>'','confirm'=>true]
|
||
/**
|
||
* confirmModifyAdress
|
||
* @param mixed $sdf sdf
|
||
* @return mixed 返回值
|
||
*/
|
||
public function confirmModifyAdress($sdf){}
|
||
|
||
protected function __formatUpdateOrderShippingInfo($order) {
|
||
return array();
|
||
}
|
||
|
||
/**
|
||
* 更新OrderShippingInfo
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderShippingInfo($order)
|
||
{
|
||
$rs = array('rsp'=>'fail','msg'=>'','data'=>'');
|
||
if (!$order) {
|
||
$rs['msg'] = 'no order';
|
||
return $rs;
|
||
}
|
||
$params = $this->__formatUpdateOrderShippingInfo($order);
|
||
if(empty($params)) {
|
||
$rs['msg'] = 'no params';
|
||
return $rs;
|
||
}
|
||
$callback = array(
|
||
'class' => get_class($this),
|
||
'method' => 'callback',
|
||
);
|
||
$title = '店铺('.$this->__channelObj->channel['name'].')更新[交易收货人信息]:'.$params['receiver_name'].'(订单号:'.$order['order_bn'].')';
|
||
$rs = $this->__caller->call(SHOP_UPDATE_TRADE_SHIPPING_ADDRESS_RPC,$params,$callback,$title,10,$order['order_bn']);
|
||
return $rs;
|
||
}
|
||
|
||
/**
|
||
* 更新OrderConsignerinfo
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderConsignerinfo($order){}
|
||
|
||
/**
|
||
* 更新OrderSellagentinfo
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderSellagentinfo($order){}
|
||
|
||
/**
|
||
* 更新OrderLimitTime
|
||
* @param mixed $order order
|
||
* @param mixed $order_limit_time order_limit_time
|
||
* @return mixed 返回值
|
||
*/
|
||
public function updateOrderLimitTime($order,$order_limit_time){}
|
||
|
||
#获取店铺指定时间范围内的订单
|
||
/**
|
||
* 获取OrderList
|
||
* @param mixed $start_time start_time
|
||
* @param mixed $end_time end_time
|
||
* @return mixed 返回结果
|
||
*/
|
||
public function getOrderList($start_time,$end_time) {
|
||
$rs = array('rsp'=>'fail','msg'=>'','data'=>array(),'is_update_time'=>'false');
|
||
$orderModel = app::get('ome')->model('orders');
|
||
$params = array(
|
||
'start_time' => date("Y-m-d H:i:s",$start_time),
|
||
'end_time' => date("Y-m-d H:i:s",$end_time),
|
||
'page_size' => 100,
|
||
'fields' => 'tid,status,pay_status,ship_status,modified',
|
||
'page_no' => 1,
|
||
);
|
||
|
||
$channel = $this->__channelObj->channel;
|
||
|
||
|
||
$trades = array();$lastmodify = null;
|
||
do {
|
||
$title = sprintf('获取店铺%s(%s-%s内)的订单%s',$channel['name'],$params['start_time'],$params['end_time'],$params['page_no']);
|
||
|
||
$return_data = $this->__caller->call(SHOP_GET_TRADES_SOLD_RPC,$params,array(),$title,10,$channel['shop_id']);
|
||
if ($return_data['data']) $return_data['data'] = @json_decode($return_data['data'], true);
|
||
|
||
if ($return_data['rsp'] != 'succ') break;
|
||
|
||
if (($params['page_no']-1)*$params['page_size']>intval($return_data['data']['total_results'])) break;
|
||
|
||
$tids = array();
|
||
foreach((array)$return_data['data']['trades'] as $t){
|
||
$trades[$t['tid']] = $t;
|
||
|
||
$tids[] = $t['tid'];
|
||
|
||
$lastmodify = strtotime($t['modified']);
|
||
}
|
||
|
||
if ($tids) {
|
||
$erporders = $orderModel->getList('outer_lastmodify,order_bn',array('order_bn'=>$tids,'shop_id'=>$channel['shop_id']));
|
||
// 判断是否漏单
|
||
foreach ($erporders as $order) {
|
||
if ($order['outer_lastmodify']>=strtotime($trades[$order['order_bn']]['modified'])) {
|
||
unset($trades[$order['order_bn']]);
|
||
}
|
||
}
|
||
}
|
||
|
||
$params['page_no']++;
|
||
} while (true);
|
||
|
||
$return = array(
|
||
'rsp' => $return_data['rsp'] == 'succ' ? 'success' : 'fail',
|
||
'msg' => ($return_data['rsp'] == 'succ' && !$trades) ? '未发现漏单' : $return_data['msg'],
|
||
'msg_id' => $return_data['msg_id'],
|
||
'data' => $trades,
|
||
'lastmodify' => $lastmodify,
|
||
);
|
||
|
||
return $return;
|
||
}
|
||
|
||
/**
|
||
* cleanStockFreeze
|
||
* @param mixed $order order
|
||
* @return mixed 返回值
|
||
*/
|
||
public function cleanStockFreeze($order){}
|
||
|
||
/**
|
||
* oid_sync
|
||
* @param mixed $sdf sdf
|
||
* @return mixed 返回值
|
||
*/
|
||
public function oid_sync($sdf){}
|
||
|
||
/**
|
||
* serial_sync
|
||
* @param mixed $serialNumber serialNumber
|
||
* @return mixed 返回值
|
||
*/
|
||
public function serial_sync($serialNumber) {
|
||
$params = [];
|
||
$billId = [];
|
||
$billNo = '';
|
||
foreach ($serialNumber as $value) {
|
||
$billId[$value['bill_id']] = $value['bill_id'];
|
||
$billNo = $value['bill_no'];
|
||
$params[$value['bill_no']][] = $value['serial_number'];
|
||
}
|
||
$params = ['serial_number_data'=>json_encode($params)];
|
||
$title = '同步唯一码';
|
||
$obj = app::get('ome')->model('product_serial_history');
|
||
$snFilter = ['bill_id'=>$billId, 'bill_type'=>'3', 'sync|noequal'=>'succ'];
|
||
$obj->update(['sync'=>'run'], $snFilter);
|
||
$return_data = $this->__caller->call(SHOP_SERIALNUMBER_UPDATE,$params,array(),$title,10,$billNo);
|
||
if($return_data['rsp'] == 'succ') {
|
||
$obj->update(['sync'=>'succ'], $snFilter);
|
||
} else {
|
||
$obj->update(['sync'=>'fail'], $snFilter);
|
||
}
|
||
return $return_data;
|
||
}
|
||
|
||
/**
|
||
* [翱象系统]查询黑白名单快递
|
||
*
|
||
* @param array $params
|
||
* @return array
|
||
*/
|
||
public function selectOrderLogi($orderObjList)
|
||
{
|
||
$title = '查询黑白名单快递';
|
||
|
||
$original_bn = $orderObjList[0]['order_code'];
|
||
|
||
//params
|
||
$requestParams = array(
|
||
'delivery_decision' => json_encode($orderObjList),
|
||
);
|
||
|
||
//callback
|
||
$callback = array();
|
||
|
||
//request
|
||
$result = $this->__caller->call(SHOP_AOXIANG_LOGISTICS_QUERY, $requestParams, $callback, $title, 10, $original_bn);
|
||
|
||
return $result;
|
||
}
|
||
|
||
/**
|
||
* 订单确认接口
|
||
* 子类可以重写此方法实现具体的订单确认逻辑
|
||
*/
|
||
public function confirm($order){}
|
||
} |