feat/task1-c-wallet
devil_gong 2018-09-07 18:27:29 +08:00
parent 1b0e0a98d2
commit 60d76d07a5
10 changed files with 130 additions and 30 deletions

View File

@ -14,7 +14,7 @@ return array(
'IS_DEVELOP' => true,
// 显示页面Trace信息
'SHOW_PAGE_TRACE' => false,
'SHOW_PAGE_TRACE' => true,
// 允许访问的模块列表
'MODULE_ALLOW_LIST' => array('Admin', 'Api', 'Home'),

View File

@ -41,7 +41,7 @@ return array(
'common_ip_name' => 'ip地址',
'common_admin_name' => '管理员',
'common_not_login_name' => '未登录',
'common_not_data_tips' => '没有数据',
'common_not_data_tips' => '没有相关数据',
'common_create_time_name' => '创建时间',
'common_reg_time_name' => '注册时间',
'common_upd_time_name' => '更新时间',

View File

@ -28,9 +28,15 @@ class SearchController extends CommonController
// 调用父类前置方法
parent::_initialize();
// 品牌id
$this->params['brand_id'] = intval(I('brand_id', 0));
// 分类id
$this->params['category_id'] = intval(I('category_id', 0));
// 筛选价格id
$this->params['screening_price_id'] = intval(I('screening_price_id', 0));
// 搜索关键字
$this->params['keywords'] = trim(I('keywords'));
@ -79,7 +85,8 @@ class SearchController extends CommonController
public function GoodsList()
{
$data = SearchService::GoodsList($this->params);
$this->ajaxReturn(L('common_operation_success'), 0, $data);
$msg = empty($data['data']) ? L('common_not_data_tips') : L('common_operation_success');
$this->ajaxReturn($msg, 0, $data);
}
}
?>

View File

@ -1,9 +1,11 @@
<!-- 商品分类 -->
<div id="goods-category" class="am-container" data-controller-name="{{$controller_name}}">
<div class="goods-category-s">
<div class="goods-category-title">
<span class="all-goods">全部分类</span>
</div>
<a href="{{:U('Home/Search/Index')}}">
<div class="goods-category-title">
<span class="all-goods">全部分类</span>
</div>
</a>
<div class="category-content" <if condition="isset($controller_name) and $controller_name neq 'Index'">style="display:none;"</if>>
<div class="category">
<ul class="category-list" id="js_climit_li">

View File

@ -27,9 +27,9 @@
</div>
<ul class="select">
<p class="title-tips">
<span>分类</span>
<strong>复古复古</strong>
<span>筛选结果</span>
<span>筛选出</span>
<strong>...</strong>
<span>条数据</span>
</p>
<li class="select-result">
<dl>
@ -45,7 +45,7 @@
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
<if condition="!empty($brand_list)">
<foreach name="brand_list" item="brand">
<dd><a href="javascript:;" data-value="{{$brand.id}}">{{$brand.name}}</a></dd>
<dd><a href="javascript:;" data-value="{{$brand.id}}" data-field="brand_id">{{$brand.name}}</a></dd>
</foreach>
<else />
<span class="not-tips">没有相关品牌</span>
@ -60,7 +60,7 @@
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
<if condition="!empty($category_list)">
<foreach name="category_list" item="category">
<dd><a href="javascript:;">{{$category.name}}</a></dd>
<dd><a href="javascript:;" data-value="{{$category.id}}" data-field="category_id">{{$category.name}}</a></dd>
</foreach>
<else />
<span class="not-tips">没有相关分类</span>
@ -74,8 +74,8 @@
<div class="dd-conent" data-selected-tag="screening-price">
<dd class="select-all selected"><a href="javascript:;">不限</a></dd>
<if condition="!empty($screening_price_list)">
<foreach name="screening_price_list" item="price">
<dd><a href="javascript:;">{{$price.name}}</a></dd>
<foreach name="screening_price_list" item="screening_price">
<dd><a href="javascript:;" data-value="{{$screening_price.id}}" data-field="screening_price_id">{{$screening_price.name}}</a></dd>
</foreach>
<else />
<span class="not-tips">没有相关价格</span>

View File

@ -159,6 +159,21 @@ class GoodsService
return $data;
}
/**
* 获取商品总数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-07
* @desc description
* @param array $params [输入参数: where, field, is_photo]
*/
public static function GoodsTotal($params = [])
{
$where = empty($params['where']) ? [] : $params['where'];
return (int) M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id')->where($where)->count('DISTINCT g.id');
}
/**
* 获取商品列表
* @author Devil
@ -180,7 +195,7 @@ class GoodsService
$m = isset($params['m']) ? intval($params['m']) : 0;
$n = isset($params['n']) ? intval($params['n']) : 10;
$data = M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id') ->field($field)->where($where)->group('g.id')->order($order_by)->limit($m, $n)->select();
$data = M('Goods')->alias('g')->join(' INNER JOIN __GOODS_CATEGORY_JOIN__ AS gci ON g.id=gci.goods_id')->field($field)->where($where)->group('g.id')->order($order_by)->limit($m, $n)->select();
if(!empty($data))
{
$images_host = C('IMAGE_HOST');

View File

@ -25,9 +25,9 @@ class SearchService
public static function GoodsCategoryList($params = [])
{
// 根据分类id获取同级列表
$category = GoodsService::GoodsCategoryRow(['id'=>$params['category_id']]);
$pid = empty($category['pid']) ? 0 : $category['pid'];
return GoodsService::GoodsCategoryList(['pid'=>$pid]);
// $category = GoodsService::GoodsCategoryRow(['id'=>$params['category_id']]);
// $pid = empty($category['pid']) ? 0 : $category['pid'];
return GoodsService::GoodsCategoryList(['pid'=>$params['category_id']]);
}
/**
@ -57,14 +57,61 @@ class SearchService
public static function GoodsList($params = [])
{
$result = [
'total' => 0,
'data' => [],
'page_total' => 0,
'total' => 450,
'data' => [],
];
$goods_where = [
'g.is_delete_time' => 0,
'g.is_delete_time' => 0,
'g.is_shelves' => 1,
];
$result['data'] = GoodsService::GoodsList(['where'=>$goods_where]);
// 品牌
if(!empty($params['brand_id']))
{
$goods_where['g.brand_id'] = intval($params['brand_id']);
}
// 分类id
if(!empty($params['category_id']))
{
$category_ids = GoodsService::GoodsCategoryItemsIds(['category_id'=>$params['category_id']]);
$category_ids[] = $params['category_id'];
$goods_where['gci.id'] = ['in', $category_ids];
}
// 筛选价格
if(!empty($params['screening_price_id']))
{
$price = M('ScreeningPrice')->field('min_price,max_price')->where(['is_enable'=>1, 'id'=>intval($params['screening_price_id'])])->find();
if(!empty($price['min_price']) && !empty($price['max_price']))
{
$goods_where['g.price'] = [
['EGT', $price['min_price']],
['LT', $price['max_price']],
];
} else if(!empty($price['min_price']))
{
$goods_where['g.price'] = ['EGT', $price['min_price']];
} else if(!empty($price['max_price']))
{
$goods_where['g.price'] = ['LT', $price['max_price']];
}
}
// 获取商品总数
$result['total'] = GoodsService::GoodsTotal(['where'=>$goods_where]);
// 获取商品列表
if($result['total'] > 0)
{
$page = intval(I('page', 1));
$n = 10;
$m = intval(($page-1)*$n);
$result['data'] = GoodsService::GoodsList(['where'=>$goods_where, 'm'=>$m, 'n'=>$n]);
$result['page_total'] = ceil($result['total']/$n);
}
return $result;
}
}

View File

@ -50,8 +50,9 @@ body{margin:0;
a:link,a:visited,a:hover{text-decoration:none; outline:none;}
a:hover, a:focus { color: #d2364c; }
/*所有超链接不要下划线*/
*, *:after, *:before{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;

View File

@ -142,7 +142,7 @@ dl#select3 .dd-conent{ left:-200%; right:0px;}
.nav.white{padding-left:0px}
/*选中效果*/
.search-list ul li:hover .i-pic.limit,.search-side li:hover .i-pic.check{box-shadow:0px 12px 12px -10px rgba(0,0,0,.4);}
.search-list ul li:hover .i-pic.limit,.search-side li:hover .i-pic.check{box-shadow:0px 12px 12px -10px rgba(0,0,0,.4); border: 1px solid #d2364c; }
}
@media only screen and (max-width: 640px) {

View File

@ -9,17 +9,20 @@ $(function()
$('#'+selected_tag_name).remove();
} else {
if ($('#'+selected_tag_name).length > 0) {
$('#'+selected_tag_name).find("a").html($(this).text());
$('#'+selected_tag_name).find('a').html($(this).find('a').text());
$('#'+selected_tag_name).find('a').attr('data-value', $(this).find('a').attr('data-value'));
} else {
var copy_html = $(this).clone();
$(".select-result dl").append(copy_html.attr("id", selected_tag_name));
}
}
get_goods_list(1);
});
$(document).on('click', '.select-result dl dd', function() {
$(this).remove();
$('#'+$(this).attr('id')+'-dl').find('.select-all').addClass('selected').siblings().removeClass('selected');
get_goods_list(1);
});
$(document).on('click', 'ul.select dd', function() {
@ -39,7 +42,7 @@ $(function()
$(this).hide();
$('.select-result .select-no').show();
$('.select-result').hide();
get_goods_list(1);
});
@ -113,15 +116,31 @@ $(function()
search_nav();
// 获取商品列表
function get_goods_list()
function get_goods_list(page)
{
var keywords = $('#search-input').val() || '';
// 请求参数处理
var data = {
keywords: $('#search-input').val() || '',
page: page || parseInt($('.search-pages-submit').attr('data-page')) || 1,
}
$('.select-result .selected a').each(function(k, v)
{
data[$(this).attr('data-field')] = $(this).attr('data-value');
});
// 清空数据
if(data.page == 1)
{
$('.data-list').html('');
}
// 请求数据
$.ajax({
url:$('.search-pages-submit').data('url'),
type:'POST',
dataType:"json",
timeout:10000,
data:{keywords: keywords},
data:data,
success:function(result)
{
if(result.code == 0 && result.data.data.length > 0)
@ -131,6 +150,8 @@ $(function()
var html = '<li class="am-animation-scale-up"><div class="i-pic limit">';
html += '<a href="'+result.data.data[i]['goods_url']+'" target="_blank">';
html += '<img src="'+result.data.data[i]['images']+'" />';
html += '</a>';
html += '<a href="'+result.data.data[i]['goods_url']+'" target="_blank">';
html += '<p class="title fl">'+result.data.data[i]['title']+'</p>';
html += '</a>';
html += '<p class="price fl"><b>¥</b><strong>'+result.data.data[i]['price']+'</strong></p>';
@ -139,10 +160,11 @@ $(function()
$('.data-list').append(html);
}
$('.search-pages-submit').attr('data-page', data.page+1);
} else {
Prompt(result.msg);
}
$('.select .title-tips strong').text(result.data.total);
},
error:function(xhr, type)
{
@ -150,6 +172,12 @@ $(function()
}
});
}
get_goods_list();
get_goods_list(1);
// 加载更多数据
$('.search-pages-submit').on('click', function()
{
get_goods_list();
});
});