Files
OMS/app/erpapi/lib/shop/request/order.php
2025-12-28 23:13:25 +08:00

392 lines
11 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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){}
}