mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 10:25:35 +08:00
262 lines
8.5 KiB
PHP
262 lines
8.5 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
class eccommon_ctl_platform_regions extends desktop_controller{
|
|
|
|
|
|
/**
|
|
* index
|
|
* @return mixed 返回值
|
|
*/
|
|
public function index(){
|
|
$actions = array();
|
|
$actions[] = array(
|
|
'label' => '同步平台地址库',
|
|
'href' => 'index.php?app=eccommon&ctl=platform_regions&act=syncRegion&shop_id='.$_GET['shop_id'],
|
|
'target' => "dialog::{width:400,height:200,resizeable:false,title:'同步平台地区'}",
|
|
);
|
|
|
|
/* $actions[] = array(
|
|
'label' => '获取平台市、区、镇地区库',
|
|
'href' => $this->url .'&act=syncTown&view='. $_GET['view'] .'&finder_id='.$_GET['finder_id'],
|
|
'target' => "dialog::{width:550,height:350,title:'按省级循环获取平台四级地区'}",
|
|
);
|
|
|
|
$actions[] = array(
|
|
'label' => '同步平台开普勒地区',
|
|
'href' => 'index.php?app=eccommon&ctl=platform_regions&act=syncKplRegion',
|
|
'target' => "dialog::{width:300,height:200,title:'同步平台开普勒地区'}",
|
|
); */
|
|
$params = array(
|
|
'title' => '平台地址库管理',
|
|
'actions' => $actions,
|
|
'use_buildin_new_dialog' => false,
|
|
'use_buildin_set_tag' => false,
|
|
'use_buildin_recycle' => false,
|
|
'use_buildin_export' => false,
|
|
'use_buildin_import' => false,
|
|
'use_buildin_filter'=>true,
|
|
|
|
);
|
|
$this->finder('eccommon_mdl_platform_regions', $params);
|
|
}
|
|
|
|
function _views(){
|
|
$regionsObj = $this->app->model('platform_regions');
|
|
$base_filter = array();
|
|
$sub_menu = array(
|
|
0 => array('label'=>app::get('base')->_('全部'),'filter'=>array(),'optional'=>false),
|
|
1 => array('label'=>app::get('base')->_('未匹配'),'filter'=>array('mapping' => array('0')),'optional'=>false),
|
|
2 => array('label'=>app::get('base')->_('已匹配'),'filter'=>array('mapping' => array('1')),'optional'=>false),
|
|
);
|
|
$i=0;
|
|
foreach($sub_menu as $k=>$v){
|
|
if (!IS_NULL($v['filter'])){
|
|
$v['filter'] = array_merge($v['filter'], $base_filter);
|
|
}
|
|
$sub_menu[$k]['filter'] = $v['filter']?$v['filter']:null;
|
|
$sub_menu[$k]['addon'] = $regionsObj->count($v['filter']);
|
|
$sub_menu[$k]['href'] = 'index.php?app=' . $_GET['app'] . '&ctl=' . $_GET['ctl'] . '&act=' . $_GET['act'] . '&view=' . $i++;
|
|
}
|
|
return $sub_menu;
|
|
}
|
|
|
|
/**
|
|
* syncRegion
|
|
* @return mixed 返回值
|
|
*/
|
|
public function syncRegion()
|
|
{
|
|
$this->pagedata['select_shop_id'] = $_GET['shop_id'];
|
|
$this->pagedata['platformList'] = kernel::single('eccommon_platform_regions')->platformList();
|
|
$this->pagedata['finder_id'] = $_GET['finder_id'];
|
|
$this->display('platform/regions.html');
|
|
}
|
|
|
|
/**
|
|
* doSyncRegion
|
|
* @return mixed 返回值
|
|
*/
|
|
public function doSyncRegion(){
|
|
|
|
$this->begin($this->url);
|
|
$shop_id = $_POST['shop_id'];
|
|
if ($shop_id=='') {
|
|
$this->end(false,'请选择店铺');
|
|
}
|
|
$data = array(
|
|
'shop_id' => $shop_id,
|
|
);
|
|
list($rs, $rsData) = kernel::single('eccommon_platform_regions')->sync($data);
|
|
if(!$rs) {
|
|
$this->end(false,$rsData['msg']);
|
|
}
|
|
$this->end(true,'获取成功', $this->url, ['data'=>$rsData['data']]);
|
|
|
|
}
|
|
|
|
/**
|
|
* doSyncArea
|
|
* @return mixed 返回值
|
|
*/
|
|
public function doSyncArea() {
|
|
@ini_set('memory_limit','1024M');
|
|
set_time_limit(0);
|
|
$data = $_POST;
|
|
list($rs, $rsData) = kernel::single('eccommon_platform_regions')->syncArea($data);
|
|
if($rs) {
|
|
echo json_encode(['rsp'=>'succ']);
|
|
return;
|
|
}
|
|
echo json_encode(['rsp'=>'fail', 'msg'=>$rsData['msg']]);
|
|
}
|
|
|
|
/**
|
|
* syncKplRegion
|
|
* @return mixed 返回值
|
|
*/
|
|
public function syncKplRegion(){
|
|
set_time_limit(0);
|
|
$rs = kernel::single('eccommon_platform_regions')->synckpl($data);
|
|
echo '同步成功';
|
|
}
|
|
|
|
/**
|
|
* 获取平台市、区、镇地区库
|
|
*
|
|
* @return void
|
|
*/
|
|
public function syncTown()
|
|
{
|
|
@ini_set('memory_limit','1024M');
|
|
set_time_limit(0);
|
|
|
|
//店铺编码
|
|
$this->pagedata['selectListName'] = '店铺编码';
|
|
|
|
//店铺列表
|
|
$tempList = kernel::single('eccommon_platform_regions')->platformList();
|
|
|
|
//check
|
|
if(empty($tempList)){
|
|
die('没有可拉取的平台店铺列表');
|
|
}
|
|
|
|
//format
|
|
$shopList = array();
|
|
foreach ($tempList as $key => $val)
|
|
{
|
|
$shop_bn = $val['shop_bn'];
|
|
$shop_type = $val['shop_type'];
|
|
|
|
$shopList[$shop_bn] = array(
|
|
'shop_bn' => $shop_bn,
|
|
'shop_name' => '('. $shop_type .')'.$val['name'],
|
|
);
|
|
}
|
|
|
|
$this->pagedata['shopList'] = $shopList;
|
|
|
|
//开始时间(默认为昨天)
|
|
//$start_time = date('Y-m-d', strtotime('-1 day'));
|
|
//$this->pagedata['start_time'] = $start_time;
|
|
|
|
//help帮助信息
|
|
$this->pagedata['help_msg'] = '*温馨提醒:每个平台只需要同步其中一个店铺的地区库。';
|
|
|
|
//post url
|
|
$this->pagedata['postUrl'] = $this->url .'&act=ajaxSyncTown';
|
|
|
|
//check
|
|
if(empty($shopList)){
|
|
die('没有可拉取的平台店铺列表');
|
|
}
|
|
|
|
$this->display('platform/download_datalist.html');
|
|
}
|
|
|
|
/**
|
|
* Ajax获取平台市、区、镇地区库
|
|
*
|
|
* @return void
|
|
*/
|
|
public function ajaxSyncTown()
|
|
{
|
|
set_time_limit(0);
|
|
ini_set('memory_limit', '512M');
|
|
|
|
$regionsObj = app::get('eccommon')->model('platform_regions');
|
|
|
|
if(empty($_POST['shop_bn'])){
|
|
$retArr['err_msg'] = array('请先选择店铺编码');
|
|
echo json_encode($retArr);
|
|
exit;
|
|
}
|
|
|
|
//setting
|
|
$retArr = array(
|
|
'itotal' => 0,
|
|
'isucc' => 0,
|
|
'ifail' => 0,
|
|
'total' => 0,
|
|
'err_msg' => array(),
|
|
);
|
|
|
|
//page
|
|
$page = isset($_POST['nextPage']) && $_POST['nextPage'] > 1 ? $_POST['nextPage'] : 1;
|
|
|
|
//shopInfo
|
|
$shopInfo = app::get('ome')->model('shop')->db_dump(array('shop_bn' => $_POST['shop_bn']));
|
|
if(empty($shopInfo)){
|
|
$retArr['err_msg'] = array('店铺信息不存在');
|
|
echo json_encode($retArr);
|
|
exit;
|
|
}
|
|
|
|
//filter
|
|
$filter = array(
|
|
'shop_type' => $shopInfo['shop_type'], //店铺类型
|
|
'region_grade' => 1,
|
|
);
|
|
|
|
//count
|
|
$total_num = $regionsObj->count($filter);
|
|
|
|
//params
|
|
$params = array(
|
|
'shop_bn' => $_POST['shop_bn'], //店铺编码
|
|
'page_no' => $page,
|
|
);
|
|
|
|
//request
|
|
$rs = kernel::single('eccommon_platform_regions')->syncTown($params);
|
|
if ($rs['rsp'] == 'succ') {
|
|
$retArr['itotal'] += $rs['current_num']; //本次拉取记录数
|
|
$retArr['isucc'] += $rs['current_succ_num']; //处理成功记录数
|
|
$retArr['ifail'] += $rs['current_fail_num']; //处理失败记录数
|
|
$retArr['total'] = $total_num; //数据总记录数
|
|
$retArr['next_page'] = $rs['next_page']; //下一页页码(如果为0则无需拉取)
|
|
} else {
|
|
$error_msg = $rs['error_msg'];
|
|
$retArr['err_msg'] = array($error_msg);
|
|
}
|
|
|
|
echo json_encode($retArr);
|
|
exit;
|
|
}
|
|
}
|