jh-admin/addon/alilife/model/Category.php

159 lines
5.4 KiB
PHP

<?php
/**
* SaaSMall商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 成都SAAS云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.gobuysaas.com
* =========================================================
*/
namespace addon\alilife\model;
use addon\aliapp\model\MinCode;
use app\model\BaseModel;
use extend\Tree;
use think\facade\Cache;
class Category extends BaseModel
{
/**
* 获取类目列表
* @param array $condition
* @param bool $field
* @param string $order
* @param int $page
* @param int $list_rows
* @param string $alias
* @param array $join
* @return array
*/
public function getCategoryPageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [])
{
$data = model('shopalilife_category')->pageList($condition, $field, $order, $page, $list_rows, $alias, $join);
return $this->success($data);
}
/**
* 获取类目通过上级类目ID
* @param $level
* @param int $pid
* @return array
*/
public function getCategoryByParent($site_id,$level,$pid = 0,$cat_type=1,$type='allcategory')
{
$condition=[
['site_id','=',$site_id],
['cat_level','=',$level],
['api_type','=',$type]
];
if($pid){
$condition[]=['cat_pid','=',$pid];
}
if($cat_type){
$condition[]=['cat_type','=',$cat_type];
}
$list = model('shopalilife_category')->getList($condition, '*', '', '', null, 'cat_id');
$data = $this->success($list);
Cache::tag('aliCategory')->set("aliCategory_{$level}_{$pid}", $data);
return $data;
}
public function getCategory($site_id,$type='allcategory',$cat_type=1){
$condition=[
['site_id','=',$site_id],
['api_type','=',$type],
['cat_type','=',$cat_type],
];
$items = model('shopalilife_category')->getColumn($condition, '*', 'cat_id', '', null, 'cat_id');
$config=[
'id' => 'cat_id', // id名称
'pid' => 'cat_pid', // pid名称
'title' => 'cat_name', // 标题名称
'child' => 'children', // 子元素键名
'step' => 3,
];
$tree =new Tree($config);
$lists=$tree::toLayer($items);
$temp=[];
foreach ($lists as $item) {
if ($item['cat_level'] == 1) {
$temp[] = $item;
}
}
return $temp;
}
/**
* 同步商品类目
*/
public function syncCategory($site_id,$item_type=1,$type='allcategory')
{
if($type=='allcategory'){
$api='alipay.open.app.item.allcategory.query';
$key='alipay_open_app_item_allcategory_query_response';
}else{
$api='alipay.open.app.localitem.allcategory.query';
$key='alipay_open_app_localitem_allcategory_query_response';
}
$res = ( new MinCode($site_id) )->requestApi($api,['item_type'=>$item_type]);
$res=$res[$key];
if ($res[ 'code' ] != 10000) return $res;
if (!empty($res[ 'cats' ])) {
model('shopalilife_category')->delete([['site_id','=',$site_id],['api_type','=',$type],['cat_type','=',$item_type]]);
$data = [];
foreach ($res[ 'cats' ] as $item) {
foreach ($item['cat_and_parent'] as $value){
$data[$value['cat_id']]=[
'site_id' => $site_id,
'cat_id' => $value['cat_id'],
'cat_pid' => $value['f_cat_id']??'',
'cat_name' => $value['cat_name'],
'cat_level' => $value['cat_level'],
'qualification_status' => $value['qualification_status']??'',
'cat_type' => $item_type,
'api_type' => $type,
'create_time' => time(),
];
}
}
model('shopalilife_category')->addList(array_values($data));
return $this->success(1);
}else{
return $this->error(-1,'未发现有可用分类信息');
}
}
/***
* 获取模版信息
* @param $site_id
* @param $cat_id
* @param $type
* @return void
*/
public function getCatTemplate($site_id,$cat_id,$type='allcategory',$item_type=''){
$data=['category_id'=>$cat_id];
if($type=='allcategory'){
$api='alipay.open.app.item.template.query';
$key='alipay_open_app_item_template_query_response';
}else{
$api='alipay.open.app.localitem.template.query';
$key='alipay_open_app_localitem_template_query_response';
$data['item_type']=$item_type;
}
$res = ( new MinCode($site_id) )->requestApi($api,$data);
$res=$res[$key];
return $res;
}
/**
* 获取分类信息
* @param $third_cat_id
* @param $site_id
*/
public function getCategoryInfo($third_cat_id, $site_id=0)
{
$info = model('shopalilife_category')->getInfo([['site_id','=',$site_id],[ 'cat_id', '=', $third_cat_id ] ]);
if (empty($info)) return $info;
return $info;
}
}