Files
OMS/app/dealer/lib/event/trigger/aftersale.php
2025-12-28 23:13:25 +08:00

247 lines
7.1 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.
*/
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;
}
}