www.lightcourse.com/app/common/model/Search.php

312 lines
14 KiB
PHP
Raw Normal View History

2022-10-24 02:38:36 +00:00
<?php
namespace app\common\model;
/**
* ============================================================================
* 联课教育商城系统
* ============================================================================
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
* 网站地址: http://www.o1h.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* 数据层模型
*/
class Search extends BaseModel {
public function __get($key) {
return $this->$key;
}
/**
* 取得商品分类详细信息
* @access public
* @author o1h.cn
* @param type $get 需要的参数内容
* @param type $default_classid 默认分类id
* @return type
*/
public function getAttribute($get, $default_classid, $a_id) {
if (!empty($a_id)) {
$attr_ids = explode('_', $a_id);
}
if (!empty($get['a_id'])) {
$attr_ids = explode('_', $get['a_id']);
//过滤筛选重复的
$m = model('attribute');
$one = array_column($m->getAttributeValueList(['attr_id' => 1], 'attrvalue_id'), 'attrvalue_id');
$two = array_column($m->getAttributeValueList(['attr_id' => 2], 'attrvalue_id'), 'attrvalue_id');
$three = array_column($m->getAttributeValueList(['attr_id' => 3], 'attrvalue_id'), 'attrvalue_id');
$four = array_column($m->getAttributeValueList(['attr_id' => 4], 'attrvalue_id'), 'attrvalue_id');
$new = [];
foreach ($attr_ids as $id) {
if (in_array($id, $one)) {
$new['one'] = $id;
}
if (in_array($id, $two)) {
$new['two'] = $id;
}
if (in_array($id, $three)) {
$new['three'] = $id;
}
if (in_array($id, $four)) {
$new['four'] = $id;
}
}
$attr_ids = array_values($new);
}
$data = array();
// 获取当前的分类内容
$class_array = model('goodsclass')->getGoodsclassForCacheModel();
$data['class'] = isset($get['cate_id'])&&isset($class_array[$get['cate_id']]) ? $class_array[$get['cate_id']]:array();
if (empty($data['class']['child']) && empty($data['class']['childchild'])) {
// 根据属性查找商品
if (isset($attr_ids)) {
// 商品id数组
$goodsid_array = array();
$data['sign'] = false;
foreach ($attr_ids as $val) {
$where = array();
$where[] = array('attrvalue_id','=',$val);
if ($data['sign']) {
$where[] = array('goods_id','in', $goodsid_array);
}
$goodsattrindex_list = model('goodsattrindex')->getGoodsAttrIndexList($where, 'goods_id');
if (!empty($goodsattrindex_list)) {
$data['sign'] = true;
$tpl_goodsid_array = array();
foreach ($goodsattrindex_list as $val) {
$tpl_goodsid_array[] = $val['goods_id'];
}
$goodsid_array = $tpl_goodsid_array;
} else {
$data['goodsid_array'] = $goodsid_array = array();
$data['sign'] = false;
break;
}
}
if ($data['sign']) {
$data['goodsid_array'] = $goodsid_array;
}
}
}
// var_dump($default_classid);die;
$class = isset($class_array[$default_classid])?$class_array[$default_classid]:"";
$brand_array = array();
$initial_array = array();
$attr_array = array();
$checked_brand = array();
$checked_attr = array();
//获得分类对应的类型ID
$type_id = isset($class['type_id']) ? $class['type_id'] : '';
if (!empty($type_id)) {
//品牌列表
$typebrand_list = model('type')->getTypebrandList(array('type_id' => $type_id), 'brand_id');
if (!empty($typebrand_list)) {
$brandid_array = array();
foreach ($typebrand_list as $val) {
$brandid_array[] = $val['brand_id'];
}
$brand_array = model('brand')->getBrandPassedList(array(array('brand_id','in', $brandid_array)), 'brand_id,brand_name,brand_initial,brand_pic,brand_showtype', 0, 'brand_showtype asc,brand_recommend desc,brand_sort asc');
if (!empty($brand_array)) {
$brand_list = array();
foreach ($brand_array as $val) {
$brand_list[$val['brand_id']] = $val;
$initial_array[] = $val['brand_initial'];
}
$brand_array = $brand_list;
$initial_array = array_unique($initial_array);
sort($initial_array);
}
}
// 被选中的品牌
$brand_id = isset($get['b_id']) ? intval($get['b_id']) : "";
if ($brand_id > 0 && !empty($brand_array)) {
if (isset($brand_array[$brand_id])) {
$checked_brand[$brand_id]['brand_name'] = $brand_array[$brand_id]['brand_name'];
}
}
//属性列表
$attribute_model = model('attribute');
$attribute_list = $attribute_model->getAttributeShowList(array(array('type_id' ,'=', $type_id)), 'attr_id,attr_name');
$attributevalue_list = $attribute_model->getAttributeValueList(array('type_id' => $type_id), 'attrvalue_id,attrvalue_name,attr_id');
$attributevalue_list = array_under_reset($attributevalue_list, 'attr_id', 2);
if (!empty($attribute_list)) {
foreach ($attribute_list as $val) {
$attr_array[$val['attr_id']]['name'] = $val['attr_name'];
if(isset($attributevalue_list[$val['attr_id']])){
$tpl_array = array_under_reset($attributevalue_list[$val['attr_id']], 'attrvalue_id');
$attr_array[$val['attr_id']]['value'] = $tpl_array;
}else{
$attr_array[$val['attr_id']]['value'] = array();
}
}
}
// 被选中的属性
if (isset($attr_ids) && is_array($attr_ids) && !empty($attr_array)) {
foreach ($attr_ids as $s) {
foreach ($attr_array as $k => $d) {
if (isset($d['value'][$s])) {
$checked_attr[$k]['attr_name'] = $d['name'];
$checked_attr[$k]['attrvalue_id'] = $s;
$checked_attr[$k]['attrvalue_name'] = $d['value'][$s]['attrvalue_name'];
}
}
}
}
}
return array($data, $brand_array, $initial_array, $attr_array, $checked_brand, $checked_attr);
}
/**
* 从TAG中查找分类
* @access public
* @author o1h.cn
* @param type $keyword
* @return type
*/
public function getTagCategory($keyword = '') {
$data = array();
if ($keyword != '') {
// 跟据class_tag缓存搜索出与keyword相关的分类
$tag_list = rkcache('classtag', true);
if (!empty($tag_list) && is_array($tag_list)) {
foreach ($tag_list as $key => $val) {
$tag_value = $val['gctag_value'];
if (strpos($tag_value, $keyword)!==false) {
$data[] = $val['gc_id'];
}
}
}
}
return $data;
}
/**
* 获取父级分类,递归调用
* @access public
* @author o1h.cn
* @param type $gc_id 分类id
* @param type $goods_class 商品分类
* @param type $data 数据
* @return type
*/
private function _getParentCategory($gc_id, $goods_class, $data) {
array_unshift($data, $gc_id);
if (isset($goods_class[$gc_id]['gc_parent_id']) && $goods_class[$gc_id]['gc_parent_id'] != 0) {
return $this->_getParentCategory($goods_class[$gc_id]['gc_parent_id'], $goods_class, $data);
} else {
return $data;
}
}
/**
* 显示左侧商品分类
* @access public
* @author o1h.cn
* @param type $param 分类id
* @param type $sign 0为取得最后一级的同级分类1为不取得
* @return type
*/
public function getLeftCategory($param, $sign = 0) {
$data = array();
if (!empty($param)) {
$goods_class = model('goodsclass')->getGoodsclassForCacheModel();
foreach ($param as $val) {
$data[] = $this->_getParentCategory($val, $goods_class, array());
}
}
$tpl_data = array();
$gc_list = model('goodsclass')->get_all_category();
foreach ($data as $value) {
//$tpl_data[$val[0]][$val[1]][$val[2]] = $val[2];
if (!empty($gc_list[$value[0]])) { // 一级
$tpl_data[$value[0]]['gc_id'] = $gc_list[$value[0]]['gc_id'];
$tpl_data[$value[0]]['gc_name'] = $gc_list[$value[0]]['gc_name'];
if (isset($value[0]) && isset($value[1]) && isset($gc_list[$value[0]]['class2'][$value[1]])) { // 二级
$tpl_data[$value[0]]['class2'][$value[1]]['gc_id'] = $gc_list[$value[0]]['class2'][$value[1]]['gc_id'];
$tpl_data[$value[0]]['class2'][$value[1]]['gc_name'] = $gc_list[$value[0]]['class2'][$value[1]]['gc_name'];
if (isset($value[0]) && isset($value[1]) && isset($value[2]) && isset($gc_list[$value[0]]['class2'][$value[1]]['class3'][$value[2]])) { // 三级
$tpl_data[$value[0]]['class2'][$value[1]]['class3'][$value[2]]['gc_id'] = $gc_list[$value[0]]['class2'][$value[1]]['class3'][$value[2]]['gc_id'];
$tpl_data[$value[0]]['class2'][$value[1]]['class3'][$value[2]]['gc_name'] = $gc_list[$value[0]]['class2'][$value[1]]['class3'][$value[2]]['gc_name'];
if (!$sign) { // 取得全部三级分类
foreach ($gc_list[$value[0]]['class2'][$value[1]]['class3'] as $val) {
$tpl_data[$value[0]]['class2'][$value[1]]['class3'][$val['gc_id']]['gc_id'] = $val['gc_id'];
$tpl_data[$value[0]]['class2'][$value[1]]['class3'][$val['gc_id']]['gc_name'] = $val['gc_name'];
if ($value[2] == $val['gc_id']) {
$tpl_data[$value[0]]['class2'][$value[1]]['class3'][$val['gc_id']]['default'] = 1;
}
}
}
} else { // 取得全部二级分类
if (!$sign) { // 取得同级分类
if (!empty($gc_list[$value[0]]['class2'])) {
foreach ($gc_list[$value[0]]['class2'] as $gc2) {
$tpl_data[$value[0]]['class2'][$gc2['gc_id']]['gc_id'] = $gc2['gc_id'];
$tpl_data[$value[0]]['class2'][$gc2['gc_id']]['gc_name'] = $gc2['gc_name'];
if (!empty($gc2['class3'])) {
foreach ($gc2['class3'] as $gc3) {
$tpl_data[$value[0]]['class2'][$gc2['gc_id']]['class3'][$gc3['gc_id']]['gc_id'] = $gc3['gc_id'];
$tpl_data[$value[0]]['class2'][$gc2['gc_id']]['class3'][$gc3['gc_id']]['gc_name'] = $gc3['gc_name'];
}
}
}
}
}
}
} else { // 取得全部一级分类
if (!$sign) { // 取得同级分类
if (!empty($gc_list)) {
foreach ($gc_list as $gc1) {
$tpl_data[$gc1['gc_id']]['gc_id'] = $gc1['gc_id'];
$tpl_data[$gc1['gc_id']]['gc_name'] = $gc1['gc_name'];
if (!empty($gc1['class2'])) {
foreach ($gc1['class2'] as $gc2) {
$tpl_data[$gc1['gc_id']]['class2'][$gc2['gc_id']]['gc_id'] = $gc2['gc_id'];
$tpl_data[$gc1['gc_id']]['class2'][$gc2['gc_id']]['gc_name'] = $gc2['gc_name'];
if (!empty($gc2['class3'])) {
foreach ($gc2['class3'] as $gc3) {
$tpl_data[$gc1['gc_id']]['class2'][$gc2['gc_id']]['class3'][$gc3['gc_id']]['gc_id'] = $gc3['gc_id'];
$tpl_data[$gc1['gc_id']]['class2'][$gc2['gc_id']]['class3'][$gc3['gc_id']]['gc_name'] = $gc3['gc_name'];
}
}
}
}
}
}
}
}
}
}
return $tpl_data;
}
}
?>