mirror of
https://gitee.com/ShopeX/OMS
synced 2026-05-03 13:35:50 +08:00
247 lines
7.1 KiB
PHP
247 lines
7.1 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
|
||
class dealer_event_trigger_aftersale {
|
||
|
||
|
||
|
||
/**
|
||
* push
|
||
* @param mixed $plat_aftersale_id ID
|
||
* @return mixed 返回值
|
||
*/
|
||
public function push($plat_aftersale_id){
|
||
|
||
$modelAftersale = app::get('dealer')->model('platform_aftersale');
|
||
|
||
$aftersales = $modelAftersale->db_dump(array('plat_aftersale_id'=>$plat_aftersale_id),'*');
|
||
|
||
|
||
//判断备注
|
||
list($checkRs, $checkMsg) =$this->_checkUnpush($aftersales);
|
||
if ($checkRs == false) {
|
||
$modelAftersale->update(['sync_status' => '3', 'sync_msg'=>$checkMsg], ['plat_aftersale_id'=>$plat_aftersale_id]);
|
||
|
||
return true;
|
||
}
|
||
|
||
list($checkRs, $checkMsg) =$this->_checkPush($aftersales);
|
||
|
||
if ($checkRs == false) {
|
||
$modelAftersale->update(['sync_status' => '2', 'sync_msg'=>$checkMsg], ['plat_aftersale_id'=>$plat_aftersale_id]);
|
||
|
||
return true;
|
||
}
|
||
$return_type = $aftersales['return_type'];
|
||
|
||
$status = $aftersales['status'];
|
||
$itemsMdl = app::get('dealer')->model('platform_aftersale_items');
|
||
|
||
if(in_array($return_type,array('return')) && in_array($status,array('WAIT_BUYER_RETURN_GOODS','SUCCESS')) || in_array($return_type,array('refund','apply'))){
|
||
|
||
|
||
$pushDatas = $this->formatPushParams($aftersales);
|
||
|
||
|
||
if(empty($pushDatas)) return false;
|
||
|
||
$count = count($pushDatas);
|
||
$i=0;
|
||
foreach($pushDatas as $k=>$data){
|
||
|
||
if($i>1){
|
||
$data['refund_id'] = $data['refund_id'].'-'.$k;
|
||
}
|
||
|
||
$method = 'shop.aftersalev2.add';
|
||
$data['method'] = $method;
|
||
|
||
$data['from_platform'] = 'yjdf';
|
||
|
||
$rs = kernel::single('erpapi_router_response')->set_node_id($data['node_id'])->set_api_name($method)->dispatch($data);
|
||
|
||
$sync_status='1';
|
||
if($rs['rsp']!='succ'){
|
||
$sync_status='2';
|
||
}
|
||
|
||
$updateData = array(
|
||
|
||
'sync_status' => $sync_status,
|
||
'sync_msg' => $rs['msg'],
|
||
);
|
||
|
||
$itemsMdl->update($updateData, ['plat_aftersale_id' => $plat_aftersale_id,'erp_order_id'=>$k]);
|
||
$modelAftersale->update($updateData, ['plat_aftersale_id' => $plat_aftersale_id]);
|
||
|
||
$i++;
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
private function _checkUnpush($aftersales)
|
||
{
|
||
|
||
if($aftersales['reason']){
|
||
|
||
if (preg_match("/运费/", $aftersales['reason'])) {
|
||
|
||
return [false,'退运费'];
|
||
|
||
}
|
||
}
|
||
|
||
return [true];
|
||
}
|
||
/**
|
||
* 校验推送
|
||
*
|
||
* @return void
|
||
* @author
|
||
**/
|
||
private function _checkPush($aftersales)
|
||
{
|
||
|
||
|
||
|
||
return [true];
|
||
}
|
||
|
||
public function formatPushParams($aftersales){
|
||
|
||
|
||
$plat_aftersale_id = $aftersales['plat_aftersale_id'];
|
||
|
||
$extendMdl = app::get('dealer')->model('platform_aftersale_extend');
|
||
|
||
$extends = $extendMdl->db_dump(array('plat_aftersale_id'=>$plat_aftersale_id),'json_data');
|
||
|
||
$json_data = json_decode($extends['json_data'],true);
|
||
|
||
$itemsMdl = app::get('dealer')->model('platform_aftersale_items');
|
||
|
||
$items = $itemsMdl->getlist('*',array('plat_aftersale_id'=>$plat_aftersale_id));
|
||
$return_item_list = array();
|
||
|
||
$erp_order_ids = array();
|
||
foreach($items as $v){
|
||
if($v['erp_order_id']>0){
|
||
$return_item_list[$v['erp_order_id']][] = $v;
|
||
$erp_order_ids[$v['erp_order_id']] = $v['erp_order_id'];
|
||
}
|
||
|
||
}
|
||
|
||
$ordobjMdl = app::get('ome')->model('order_objects');
|
||
|
||
$ordobjs = $ordobjMdl->getlist('*',array('order_id'=>$erp_order_ids));
|
||
|
||
$erp_ordobj = array();
|
||
foreach($ordobjs as $v){
|
||
|
||
$erp_ordobj[$v['order_id']][$v['line_no']] = $v;
|
||
}
|
||
|
||
|
||
$orditemMdl = app::get('ome')->model('order_items');
|
||
|
||
$orditems = $orditemMdl->getlist('*',array('order_id'=>$erp_order_ids));
|
||
|
||
$erp_orditems = array();
|
||
|
||
foreach($orditems as $v){
|
||
$erp_orditems[$v['order_id']][$v['obj_id']][$v['bn']] = $v;
|
||
|
||
}
|
||
|
||
$aftersale_data = array();
|
||
foreach($return_item_list as $erp_order_id=>$rev){
|
||
$return_item = array();
|
||
$refund_fee = 0;
|
||
foreach($rev as $rv){
|
||
$erp_order_bn = $rv['erp_order_bn'];
|
||
|
||
$erp_order_id = $rv['erp_order_id'];
|
||
|
||
$erp_orditem = $erp_orditems[$erp_order_id][$rv['erp_obj_id']][$rv['bn']];
|
||
|
||
$divide_order_fee = $erp_orditem['divide_order_fee'];
|
||
|
||
$nums = $erp_orditem['nums'];
|
||
|
||
$price = sprintf('%.3f',$divide_order_fee/$nums);
|
||
|
||
$return_item[] = array(
|
||
'oid' => $rv['oid'],
|
||
'num' => $rv['num'],
|
||
'price' => $price,
|
||
'bn' => $rv['bn'],
|
||
'amount' => $price*$rv['num'],
|
||
'sendNum' => $erp_orditem['sendnum'],
|
||
'order_item_id' => $erp_orditem['item_id'],
|
||
'product_id' => $erp_orditem['product_id'],
|
||
'name' => $erp_orditem['name'],
|
||
);
|
||
|
||
$refund_fee+=$price*$rv['num'];
|
||
}
|
||
$tmp_aftersale_data = $json_data;
|
||
|
||
$tmp_aftersale_data['platform_order_bn'] = $json_data['tid'];
|
||
$tmp_aftersale_data['betc_id'] = $aftersales['betc_id'];
|
||
$tmp_aftersale_data['cos_id'] = $aftersales['cos_id'];
|
||
$tmp_aftersale_data['platform_aftersale_bn'] = $json_data['refund_id'];
|
||
$tmp_aftersale_data['refund_fee']=$refund_fee;
|
||
$refund_item_list = $tmp_aftersale_data['refund_item_list'];
|
||
|
||
$refund_item_list = json_decode($refund_item_list,true);
|
||
unset($tmp_aftersale_data['refund_item_list']);
|
||
|
||
$tmp_aftersale_data['tid'] = $erp_order_bn;
|
||
|
||
$tmp_aftersale_data['refund_item_list']['return_item'] = $return_item;
|
||
|
||
|
||
$tmp_aftersale_data['refund_item_list'] = json_encode($tmp_aftersale_data['refund_item_list']);
|
||
|
||
|
||
$aftersale_data[$erp_order_id] = $tmp_aftersale_data;
|
||
|
||
}
|
||
|
||
return $aftersale_data;
|
||
|
||
}
|
||
|
||
|
||
/**
|
||
* 推送smart售后
|
||
*
|
||
* @return void
|
||
* @author
|
||
**/
|
||
public function pushAftersaleSmart($plat_aftersale_id){
|
||
|
||
$data = $this->formatAftersaleParams($plat_aftersale_id);
|
||
$result = kernel::single('erpapi_router_request')->set('smart', $shop_id)->aftersale_add($data);
|
||
|
||
}
|
||
|
||
/**
|
||
* 推送smart售后请求参数格式化
|
||
*
|
||
* @return void
|
||
* @author
|
||
**/
|
||
public function formatAftersaleParams($plat_aftersale_id){
|
||
|
||
return $data;
|
||
}
|
||
} |