Files
OMS/app/tbo2o/controller/admin/store/cat.php
2026-01-04 19:08:31 +08:00

171 lines
6.0 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 tbo2o_ctl_admin_store_cat extends desktop_controller {
var $name = "淘宝门店类目";
var $workground = "tbo2o_center";
/**
* index
* @return mixed 返回值
*/
public function index(){
$obj_cat_op = kernel::single('tbo2o_cat_operation');
$this->path[]=array('text'=>'淘宝门店类目列表');
$this->pagedata['cat'] = $obj_cat_op->getRegionById();
$this->page('admin/store/cat/cat_treeList.html');
}
/**
* 获取ChildNode
* @return mixed 返回结果
*/
public function getChildNode(){
$obj_cat_op = kernel::single('tbo2o_cat_operation');
$this->pagedata['cat'] = $obj_cat_op->getRegionById($_POST['catId']);
$this->display('admin/store/cat/cat_sub_treeList.html');
}
/**
* syncTbStoreCat
* @param mixed $syncType syncType
* @return mixed 返回值
*/
public function syncTbStoreCat($syncType=''){
$syncType = $syncType ? $syncType : $_GET['syncType'];
$refresh = false;
switch($syncType){
case 'taobao':
$title = '淘宝门店类目';
$url = 'index.php?app=tbo2o&ctl=admin_store_cat&act=getTbStoreCat';
$refresh = true;
break;
}
$this->pagedata['title'] = $title;
$this->pagedata['url'] = $url;
$this->pagedata['refresh'] = $refresh;
$_POST['time'] = time();
if ($_POST) {
$inputhtml = '';
$post = http_build_query($_POST);
$post = explode('&', $post);
foreach ($post as $p) {
list($name,$value) = explode('=', $p);
$params = array(
'type' => 'hidden',
'name' => $name,
'value' => $value
);
$inputhtml .= utils::buildTag($params,'input');
}
$this->pagedata['inputhtml'] = $inputhtml;
}
$this->display('admin/store/cat/sync_store_cat.html');
}
/**
* 获取淘宝门店类目数据更新类目表
* @return json obj
*/
public function getTbStoreCat(){
//淘宝类目接口
$cat_param = array("remark"=>"");
$rt_cat = kernel::single('tbo2o_event_trigger_store')->storecategoryGet($cat_param);
$data = json_decode($rt_cat["data"],true);
//打接口失败
if ($data["succ"][0]["response"]["flag"] != "success"){
$this->splash('error',null,'同步淘宝类目失败');
}
//淘宝门店类目表
$mdlTbo2oStoreCat = app::get('tbo2o')->model('store_cat');
$storeCategory = json_decode($data["succ"][0]["response"]["storeCategory"],true);
if(empty($storeCategory) || !$storeCategory){
$this->splash('error',null,'同步淘宝类目失败,无返回数据。');
}
//先清除所有门店类目
$clear_sql = "truncate table ".kernel::database()->prefix."tbo2o_store_cat";
$mdlTbo2oStoreCat->db->exec($clear_sql);
//获取多层类目信息
$result_arr = array();
foreach ($storeCategory as $var_c){
$haschild = 0;
if (isset($var_c["subCategorys"])){
$haschild = 1;
}
$result_arr[] = $this->combineStoreInfoArr($var_c["id"],$var_c["name"],"",$var_c["id"],1,$haschild);
//开始递归获取类目信息
$this->getStoreInfo($var_c["subCategorys"],$var_c["id"],$var_c["id"],2,$result_arr);
}
//新建淘宝类目
foreach ($result_arr as $rs_a){
$mdlTbo2oStoreCat->insert($rs_a);
}
$rate = 100;
$totalResults = count($result_arr);
$downloadStatus = 'finish';
$this->splash('success',null,$msg,'redirect',array('errormsg'=>$errormsg,'totalResults'=>$totalResults,'downloadRate'=>intval($rate),'downloadStatus'=>$downloadStatus));
}
//组类目insert数组元素
private function combineStoreInfoArr($cat_id,$cat_name,$p_stc_id,$cat_path,$cat_grade,$haschild){
return array(
"cat_id" => $cat_id,
"cat_name" => $cat_name,
"p_stc_id" => $p_stc_id,
"cat_path" => $cat_path,
"cat_grade" => $cat_grade,
"haschild" => $haschild,
);
}
//递归获取类目多级信息
private function getStoreInfo($subCategorys,$p_stc_id,$cat_path,$cat_grade,&$result_arr){
if(empty($subCategorys)){
return;
}
$cur_cat_grade = $cat_grade+1;
foreach ($subCategorys as $var_c){
$cur_path = $cat_path.",".$var_c["id"];
$haschild = 0;
if (isset($var_c["subCategorys"])){
$haschild = 1;
}
$result_arr[] = $this->combineStoreInfoArr($var_c["id"],$var_c["name"],$p_stc_id,$cur_path,$cat_grade,$haschild);
if(isset($var_c["subCategorys"])){
$this->getStoreInfo($var_c["subCategorys"],$var_c["id"],$cur_path,$cur_cat_grade,$result_arr);
}
}
}
function selTbo2oStoreCat(){
$path = $_GET['path'];
$depth = $_GET['depth'];
$params = array('depth'=>$depth);
$ret = kernel::single('tbo2o_cat_select')->get_cat_select($path,$params);
if($ret){
echo '&nbsp;-&nbsp;'.$ret;exit;
}else{
echo '';exit;
}
}
}