pagedata['logistics_type'] = [
'taobao'=>'淘宝电子面单',
'pdd'=>'拼多多电子面单',
'360buy'=>'京东快递',
'jdalpha'=>'京东电子面单',
'douyin'=>'抖音电子面单',
'kuaishou'=>'快手电子面单',
'wphvip'=>'唯品会vip',
'sf'=>'顺丰电子面单',
'xhs'=>'小红书电子面单',
'wxshipin'=>'微信视频号电子面单',
'dewu'=>'得物品牌直发电子面单',
'meituan4bulkpurchasing'=>'美团电商',
'youzan'=>'有赞电子面单',
];
$this->display('admin/express/pre_sync_tpl.html');
}
/**
* syncTpl
* @return mixed 返回值
*/
public function syncTpl() {
$logisticsType = $_GET['logisticsType'];
try {
$templateObj = kernel::single('logisticsmanager_waybill_' . $logisticsType);
$templateCfg = $templateObj->template_cfg();
} catch (Exception $e){
die('没有该类型');
}
$this->pagedata['finder_id'] = $_GET['finder_id'];
$this->pagedata['channel_type'] = $logisticsType;
$this->pagedata['template_cfg'] = $templateCfg;
if($logisticsType == 'sf') {
$this->display('admin/express/sync_tpl_sf.html');
die();
}
$this->display('admin/express/sync_tpl_cainiao.html');
}
/**
* doSyncTpl
* @return mixed 返回值
*/
public function doSyncTpl() {
$channelType = $_POST['channel_type'];
$rs = array();
$channel = app::get('logisticsmanager')->model('channel')->getList('channel_id,shop_id,name,channel_type', array('channel_type'=>$channelType, 'status'=>'true'));
if($channel) {
$msg = '';
$erpApi = kernel::single('erpapi_router_request');
$logisticsType = kernel::single('logisticsmanager_waybill_' . $channelType);
$templateCfg = $logisticsType->template_cfg();
$modelTpl = app::get('logisticsmanager')->model('express_template');
$tplIdFilter = $dealData = $allCpCode = array();
$tplIdFilter['control_type'] = $templateCfg['control_type'];
$rs = $erpApi->set('logistics', $channel[0]['channel_id'])->template_syncStandardTpl();
if($rs['rsp'] == 'succ') {
$requestResult = true;
foreach($rs['data'] as $data) {
// $logistics = $logisticsType->logistics($data['cp_code']);
// if($logistics['name']) {
$data['source'] = $channel[0]['shop_id'];
$tplIdFilter['out_template_id'][] = $data['out_template_id'];
$allCpCode[$data['cp_code']] = $data['cp_code'];
$dealData[$data['tpl_index']] = $data;
// }
}
$shopMdl = app::get('ome')->model('shop');
$hasShopId = array();
foreach($channel as $val) {
if(!$templateCfg['request_again'] && in_array($val['shop_id'], $hasShopId)) {continue;}
if(in_array($val['channel_type'], ['360buy', 'jdalpha'])){
list($jdbusinesscode,$jd_shop_id) = explode('|||',$val['shop_id']);
$val['shop_id'] = $jd_shop_id;
}
// if(!in_array($val['shop_id'], $bindShop)) continue;
if ($val['shop_id'] != '00000000' && !$shopMdl->count(['shop_id' => $val['shop_id'],'filter_sql'=>'node_id is not null and node_id!=""'])){
continue;
}
$hasShopId[] = $val['shop_id'];
$rs = $erpApi->set('logistics', $val['channel_id'])->template_syncUserTpl();
if($rs['rsp'] == 'succ') {
foreach($rs['data'] as $data) {
$data['source'] = $val['shop_id'];
$tplIdFilter['out_template_id'][] = $data['out_template_id'];
$allCpCode[$data['cp_code']] = $data['cp_code'];
$dealData[$data['tpl_index']] = $data;
}
} else {
$requestResult = false;
$msg .= "
电子面单来源:{$val['name']} {$templateCfg['template_name']}模板同步失败,{$rs['msg']}";
}
}
$tplData = $modelTpl->getList('template_id, out_template_id, template_type', $tplIdFilter);
foreach($tplData as $tVal) {
$tplIndex = '';
if(strpos($tVal['template_type'] , 'standard') !== false) {
$tplIndex = 'standard' . '-' . $tVal['out_template_id'];
} elseif(strpos($tVal['template_type'] , 'user') !== false) {
$tplIndex = 'user' . '-' . $tVal['out_template_id'];
}
if($tplIndex && $dealData[$tplIndex]) {
$dealData[$tplIndex]['template_id'] = $tVal['template_id'];
}
}
$updateTplId = array();
$printTpl = kernel::single('logisticsmanager_print_tmpl');
foreach($dealData as $dVal) {
$dVal['control_type'] = $templateCfg['control_type'];
$rs = $printTpl->save($dVal);
if($rs['rs'] == 'succ') {
$updateTplId[] = $rs['data']['template_id'];
} else {
if($dVal['template_id']) {
$updateTplId[] = $dVal['template_id'];
$msg .= "
template_id:{$dVal['template_id']} 更新失败,{$rs['msg']}";
} else {
$msg .= "
out_template_id:{$dVal['out_template_id']} 写入失败,{$rs['msg']}";
}
}
}
#删除没有涉及的菜鸟模板
if($requestResult) {
// $modelTpl->delete(array(
// 'template_id|notin' => $updateTplId,
// 'control_type' => $templateCfg['control_type'],
// 'cp_code' => $allCpCode,
// 'template_type|notin' => 'jd_user',
// ));
}
} else {
$shopData = app::get('ome')->model('shop')->db_dump(array('shop_id'=>$channel[0]['shop_id']), 'name');
$msg .= "
标准{$templateCfg['template_name']}模板获取失败(店铺:{$shopData['name']}),{$rs['msg']}。";
}
$rs['msg'] = $msg;
} else {
$rs['msg'] = '电子面单来源没有'.$channelType.'类型,无需同步';
}
if($rs['msg']) {
$rs['rsp'] = 'fail';
} else {
$rs['rsp'] = 'succ';
if($hasShopId) {
$shopData = app::get('ome')->model('shop')->getList('name', array('shop_id' => $hasShopId));
$rs['msg'] = '同步店铺(';
foreach ($shopData as $val) {
$rs['msg'] .= $val['name'] . ',';
}
$rs['msg'] = trim($rs['msg'], ',') . ')的模板完成';
}
}
echo json_encode($rs);
}
/**
* 保存Tpl
* @return mixed 返回操作结果
*/
public function saveTpl() {
$channelType = $_POST['channel_type'];
$logisticsType = kernel::single('logisticsmanager_waybill_' . $channelType);
$templateCfg = $logisticsType->template_cfg();
$modelTpl = app::get('logisticsmanager')->model('express_template');
$out_template_id = $_POST['templateCode'].'-'.$_POST['customTemplateCode'];
$tplIdFilter = array();
$tplIdFilter['control_type'] = $templateCfg['control_type'];
$tplIdFilter['out_template_id'] = $out_template_id;
$tplData = $modelTpl->db_dump($tplIdFilter, 'template_id, out_template_id, template_type');
$data = array(
'cp_code' => 'SF',
'out_template_id' => $out_template_id,
'template_name' => $_POST['temlateName'],
'template_type' => 'sf',
'template_data' => json_encode($_POST, JSON_UNESCAPED_UNICODE),
'control_type' => $templateCfg['control_type']
);
if($tplData) {
$data['template_id'] = $tplData['template_id'];
}
$printTpl = kernel::single('logisticsmanager_print_tmpl');
$rs = $printTpl->save($data);
if($rs['rs'] == 'succ') {
$this->splash('success', 'index.php?app=logisticsmanager&ctl=admin_express_template', '操作成功');
}
$this->splash('error', 'index.php?app=logisticsmanager&ctl=admin_express_template', $rs['msg']);
}
}