2019-09-06 23:53:10 +08:00

228 lines
8.3 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace wstmart\app\model;
use wstmart\common\model\Tags as T;
use think\Db;
/**
* ============================================================================
* 默认类
*/
class Index extends Base{
/**
* 楼层
*/
public function pageQuery(){
$limit = (int)input('post.currPage');//楼层页码
if($limit>9)return;
$cacheData = cache('MO_CATS_ADS'.$limit);
if($cacheData)return $cacheData;
$rs = Db::name('goods_cats')->where(['dataFlag'=>1,'isShow'=>1,'parentId'=>0,'isFloor'=>1])->field('catId,catName')->order('catSort asc')->limit($limit,1)->select();//按设定排序获取分类名称,异步下拉加载,传输楼层的层楼
if($rs){
$rs= $rs[0];//用select就选第一个其实可以改成find
$t = new T();
$rs['ads'] = $t->listAds('mo-ads-'.$limit,'1');//获取手机版楼层页面的广告图
$rs['goods'] = Db::name('goods')->alias('g')->join('__RECOMMENDS__ r','g.goodsId=r.dataId')
->where(['r.goodsCatId'=>$rs['catId'],'g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'r.dataSrc'=>0,'r.dataType'=>1])
->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')->order('r.dataSort asc')->limit(6)->select();
if(empty($rs['goods'])){
$rs['goods'] = Db::name('goods')->alias('g')
->where(['g.goodsCatIdPath'=>['like',$rs['catId'].'_%'],'g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'g.isHot'=>1])
->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')
->order('saleNum desc,goodsId asc')->limit(6)->select();
}
$rs['currPage'] = $limit;
}
cache('MO_CATS_ADS'.$limit,$rs,86400);
return $rs;
}
/**
* 猜你喜欢
*/
public function guess_like(){
$userId=(int)session('WST_USER.userId');
//$userId=50;
$page = (int)input('post.page/d');
$cacheData = cache('APP_CATS_LIKE_'.$page.'_'.$userId);
if($cacheData)return $cacheData;
$pagesize = input('pagesize/d');
$childId=[];
$parentId=[];
//$goods_result["Rows"]= '';//Db::name('goods')->alias('g')->join('__RECOMMENDS__ r','g.goodsId=r.dataId')
//->where(['g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'r.dataSrc'=>0,'r.dataType'=>1])
//->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')->order('rand()')->paginate($pagesize)->toArray();
//用户登录状态
// if($userId){
// //查找登录账号浏览过的记录
// $goods_ids=db('page_view')->where('userId',$userId)->field('count(goodsId)num,goodsId')
// ->group('goodsId')->order('num desc')->limit('18')->select();
// if($goods_ids){
// foreach($goods_ids as $key=>$value){
// $childId[]=$value['goodsId'];
// }
// //根据查找到的商品分类,寻找最顶级商品分类
// $goods_parents=$this->getParentIs($childId);
// foreach($goods_parents as $k=>$v){
// $parentId[]=$v;
// }
// }
// }
//用户未登录或顶级商品分类过少时进行全表查询
if(!$userId || count($parentId)<3){
$goods_ids=db('page_view')->where('1=1')->field('count(goodsId)num,goodsId')
->group('goodsId')->order('num desc,id desc')->limit('18')->select();
foreach($goods_ids as $key=>$value){
$childId[]=$value['goodsId'];
}
////根据查找到的商品分类,寻找最顶级商品分类
$goods_parents=$this->getParentIs($childId);
foreach($goods_parents as $k=>$v){
$parentId[]=$v;
}
}
//根据父级分类查找所有子级商品
$goods_child=$this->getChild('',$parentId);
$pagesize = input('pagesize/d');
//展现顶级分类下所有子级分类的商品
$goods_result=db('goods')->whereIn('goodsCatId',$goods_child)->order('visitNum desc')
->where(['isSale'=>1,'dataFlag'=>1,'goodsStatus'=>1,'isHot'=>1])
->field('goodsId,goodsName,goodsImg,shopPrice,saleNum')
->paginate($pagesize)->toArray();
// if(empty($goods_result["Rows"])){
// $goods_result = Db::name('goods')->alias('g')
// ->where(['g.isSale'=>1,'g.dataFlag'=>1,'g.goodsStatus'=>1,'g.isHot'=>1])
// ->field('g.goodsId,g.goodsName,g.goodsImg,g.shopPrice,g.saleNum')
// ->order('rand()')->paginate($pagesize)->toArray();
// }
cache('APP_CATS_LIKE_'.$page.'_'.$userId,$goods_result,3600);
return $goods_result;
}
/**
* 热卖推荐
*/
public function getHotGoods(){
$page = (int)input('page',1);
$cacheData = cache('QLG_HOT_GOODS_'.$page);
if($cacheData)return $cacheData;
$rs = Db::name('goods')
->where(['isSale'=>1,'dataFlag'=>1,'goodsStatus'=>1])
->field('goodsId,goodsName,goodsImg,shopPrice,saleNum,discountRate')
->order('discountRate DESC,goodsId DESC')
->paginate(input('pageSize/d',10))->toArray();
cache('QLG_HOT_GOODS_'.$page,$rs,3600);
return $rs;
}
/**
* 迭代获取下级
* 获取一个分类下的所有子级分类id
*/
public function getChild($data,$pid){
if(!$pid){
return;
}
$childId = db('goods_cats')->where("dataFlag=1")->whereIn('parentId',$pid)->field('catId,parentId')->select();
//获取该分类id下的所有子级分类id
foreach($childId as $key=>$value){
$child[]=$value['catId'];
}
static $ids = array();
foreach($childId as $k=>$v){
//dump($childId);
$ids[] = $v['catId'];//将找到的下级分类id放入静态数组
//再找下当前id是否还存在下级id
$this->getChild($childId, $v['catId']);
}
return $ids;
}
/**
* 根据子分类获取其父级分类
*/
public function getParentIs($id,$data = array()){
$data[] = $id;
$parentId = db('goods_cats')->where("dataFlag=1")->whereIn('catId',$id)->field('parentId')->select();
foreach($parentId as $key=>$value){
$parent[]=$value['parentId'];
}
if(!isset($parent)){
krsort($data);
//判断是否有值为0的数组元素
foreach ($data as $k => $v) {
foreach ($v as $key => $value) {
if(!$value){
unset($v[$key]);
}
}
if(!$v){
unset($data[$k]);
}
}
$da=array_unique(current($data));
return $da;
}else{
return $this->getParentIs($parent,$data);
}
}
//获取所有小广告位
public function getIndexAds(){
$cacheData = cache('APP_CATS_ADS');
if($cacheData)return $cacheData;
$where['positionCode'] = ['LIKE','%mo-ads-index-%'];
$where['positionType'] = 3;
$where['dataFlag'] = 1;
$positions_list = Db::name('ad_positions')->where($where)->field('positionId,positionName')->cache(true,86400)->select();
unset($where['positionCode'] );
$date = date('Y-m-d');
$where['adStartDate'] = ['<=',$date];
$where['adEndDate'] = ['>=',$date];
$list=[];
foreach($positions_list as &$v){
$where['adPositionId'] = $v['positionId'];
$list[$v['positionId']]['name'] = $v['positionName'];
$ads_list = Db::name('ads')->where($where)->field('adFile,adURL,targetType')->cache(true,86400)->select();
$list[$v['positionId']]['list'] = $ads_list;
}
cache('APP_CATS_ADS',$list,86400);
return $list;
}
//获取首页轮播图
public function getIndexTopImg(){
$cacheData = cache('APP_TOP_IMG');
if($cacheData)return $cacheData;
$ads_list=[];
$ads_list = listAds('mo-ads-index',9,86400);
cache('APP_TOP_IMG',$ads_list,86400);
return $ads_list;
}
//获取首页横图
public function getIndexCrossImg(){
$cacheData = cache('APP_CROSS_IMG');
if($cacheData)return $cacheData;
$ads_list=[];
$ads_list['cross_top'] = listAds('mo-index-cross-top',6,86400);
$ads_list['cross_bottom'] = listAds('mo-index-cross-down',6,86400);
cache('APP_CROSS_IMG',$ads_list,86400);
return $ads_list;
}
/**
* 获取系统消息
*/
function getSysMsg($msg='',$order=''){
$data = [];
$userId = (int)session('WST_USER.userId');
if($msg!=''){
$data['message']['num'] = Db::name('messages')->where(['receiveUserId'=>$userId,'msgStatus'=>0,'dataFlag'=>1])->count();
}
if($order!=''){
$data['order']['waitPay'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>-2,'dataFlag'=>1])->count();
$data['order']['waitSend'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>0,'dataFlag'=>1])->count();
$data['order']['waitReceive'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>1,'dataFlag'=>1])->count();
$data['order']['waitAppraise'] = Db::name('orders')->where(['userId'=>$userId,'orderStatus'=>2,'isAppraise'=>0,'dataFlag'=>1])->count();
$data['order']['cancelNum'] = 0;//Db::name('orders')->where('userId='.$userId.' AND (orderStatus=-1 OR orderStatus=-3)')->count();
}
return $data;
}
}