B2B2C系统 如何实现商品分类功能

B2B2C系统 如何实现商品分类功能

需要完成一个独立的B2B2C系统,系统分类和店铺商品分类是必不可少的。让我们看看商品分类是什么:商品分类是概括一定范围内的集合总体,任何集合总体都可按照一定的标志和特征归纳成若干范围较小的单元,直到划分为最小的单元。商品的分类,是指按照一定目的,为满足某种需要选择适当的分类标志和特征,将商品集合总体科学地、系统地逐次划分为不同的大类、中类、小类、品类或品目、品种,以至规格、品级等细目的过程。

下面我们以一个实际的案例,讲述一下如何设计、开发一个B2B2C系统的商品分类。

一:设计分类数据表: 商品的分类,会涉及到:catId自增ID;parentId父ID用于关联;isShow是否显示在前台展示;isFloor是否显示在首页的展示;catName名称;catSort用于首页排序展示;dataFlag删除;createTime时间。

建好后,如下图:

输入图片说明 二:后台查看,新增,编辑,删除分类: 下面我们要进行代码的编写,实现 B2B2C商城分类的增删改了,以编辑商品分类来演示一下吧,新增,删除和此类似:

public function edit(){
		$catId = input('post.id/d');
		$data = input('post.');
		WSTUnset($data,'catId,dataFlag,createTime');
		$result = $this->validate('GoodsCats.edit')->allowField(true)->save($data,['catId'=>$catId]);
		$ids = array();
		$ids = $this->getChild($catId);
		$this->where("catId in(".implode(',',$ids).")")->update(['isShow' => (int)$data['isShow'],'isFloor'=> $data['isFloor'],'commissionRate'=>(float)$data['commissionRate']]);
		if(false !== $result){
			if($data['isShow']==0){
				//删除购物车里的相关商品
				$goods = Db::name('goods')->where(["goodsCatId"=>['in',$ids],'isSale'=>1])->field('goodsId')->select();
				if(count($goods)>0){
					$goodsIds = [];
					foreach ($goods as $key =>$v){
							$goodsIds[] = $v['goodsId'];
					}
					Db::name('carts')->where(['goodsId'=>['in',$goodsIds]])->delete();
				}
			//把相关的商品下架了
		        Db::name('goods')->where("goodsCatId in(".implode(',',$ids).")")->update(['isSale' => 0]);
		        WSTClearAllCache();
			}
			return WSTReturn("修改成功", 1);
		}else{
			return WSTReturn($this->getError(),-1);
		}
	}

输入图片说明

还可进行多级新增,编辑,删除

输入图片说明

三:将后台管理的商品分类在前台展示:

获取商品分类数据,然后显示出来:

function WSTSideCategorys(){
	$data = cache('WST_SIDE_CATS');
	if(!$data){
		$cats1 = Db::table('__GOODS_CATS__')->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>0])->field("catName,catId,catImg")->order('catSort asc')->select();
		if(count($cats1)>0){
			$ids1 = [];$ids2 = [];$cats2 = [];$cats3 = [];$mcats3 = [];$mcats2 = [];
			foreach ($cats1 as $key =>$v){
				$ids1[] = $v['catId'];
			}
			$tmp2 = Db::table('__GOODS_CATS__')->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>['in',$ids1]])->field("catName,catId,parentId,catImg")->order('catSort asc')->select();
			if(count($tmp2)>0){
				foreach ($tmp2 as $key =>$v){
				    $ids2[] = $v['catId'];
			    }
			    $tmp3 = Db::table('__GOODS_CATS__')->where(['dataFlag'=>1, 'isShow' => 1,'parentId'=>['in',$ids2]])->field("catName,catId,parentId,catImg")->order('catSort asc')->select();
			if(count($tmp3)>0){
				//组装第三级
				foreach ($tmp3 as $key =>$v){
					    $mcats3[$v['parentId']][] = $v;
				    }
			    }
			//组装第二级
			foreach ($tmp2 as $key =>$v){
				if(isset($mcats3[$v['catId']]))$v['list'] = $mcats3[$v['catId']];
					$mcats2[$v['parentId']][] = $v;
				}
				//组装第一级
		foreach ($cats1 as $key =>$v){
			if(isset($mcats2[$v['catId']]))$cats1[$key]['list'] = $mcats2[$v['catId']];
		        }
			}	
			unset($ids1,$ids2,$cats2,$cats3,$mcats3,$mcats2);
		}
		cache('WST_SIDE_CATS',$cats1);
		return $cats1;
	}
	return $data;
}

根据级别的循环展示出来,第一级和第二级关联,和下次级鲜明的展示关系,配搭上品牌和广告,就显示出首页的效果了。

输入图片说明

这样我们便实现了商品分类,实现商品分类并不难,理解思路明确,就可以实现。

文中相关代码我就不另外贴了,大家有兴趣的可以在WSTMart官网下载。

转载于:https://my.oschina.net/u/2392706/blog/1582195

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值