本文共 5104 字,大约阅读时间需要 17 分钟。
在portal包下新建ProductController
类:
*Controller
:
//前台查询商品详情接口 @RequestMapping("detail.do") @ResponseBody public ServerResponsedetail(Integer productId){ return iProductService.getProductDetail(productId); }
*Service
:
//前台商品详情查询 ServerResponsegetProductDetail(Integer productId);
*ServiceImpl
:
//前台商品详情查询 public ServerResponsegetProductDetail(Integer productId){ if(productId == null){ return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc()); } Product product=productMapper.selectByPrimaryKey(productId); if(product==null){ return ServerResponse.createByErrorMessage("商品已下架或者删除"); } if(product.getStatus() != Const.ProductStatusEnum.ON_SALE.getCode()){ return ServerResponse.createByErrorMessage("商品已下架或者删除"); } ProductDetailVo productDetailVo=assembleProductDetailVo(product); return ServerResponse.createBySuccess(productDetailVo); }
其中ProductDetailVo productDetailVo=assembleProductDetailVo(product);
这一行代码在
*ServiceImpl
使用的selectByPrimaryKey
方法是使用逆向工程生成的,故不展示。 *Controller
:
//前台查询商品列表接口 @RequestMapping("list.do") @ResponseBody //商品详情列表分页 public ServerResponselist(@RequestParam(value = "keyword",required = false) String keyword, @RequestParam(value = "categoryId",required = false)Integer categoryId, @RequestParam(value = "pageNum",defaultValue = "1")int pageNum, @RequestParam(value = "pageSize",defaultValue = "10") int pageSize, @RequestParam(value = "orderBy",defaultValue = "") String orderBy){ return iProductService.getProductByKeywordCategory(keyword,categoryId,pageNum,pageSize,orderBy); }
*Service
:
//前台商品分页(根据关键字搜索) ServerResponsegetProductByKeywordCategory(String keyword,Integer categoryId,int pageNum,int pageSize,String orderBy);
*ServiceImpl
:
//前台商品分页(根据关键字搜索) public ServerResponsegetProductByKeywordCategory(String keyword,Integer categoryId,int pageNum,int pageSize,String orderBy){ if(StringUtils.isBlank(keyword) && categoryId ==null){ return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc()); } List categoryIdList=new ArrayList<>(); if(categoryId !=null){ Category category=categoryMapper.selectByPrimaryKey(categoryId); if(category == null &&StringUtils.isBlank(keyword)){ //没有该分类,并且还没有关键字,这个时候返回一个空的集合,不能返回报错 PageHelper.startPage(pageNum,pageSize); List productDetailVoList =Lists.newArrayList(); PageInfo pageInfo =new PageInfo(productDetailVoList); return ServerResponse.createBySuccess(pageInfo); } categoryIdList = iCategoryService.selectCategoryAndChildrenById(category.getId()).getData(); } if(StringUtils.isNotBlank(keyword)){ keyword =new StringBuilder().append("%").append(keyword).append("%").toString(); } PageHelper.startPage(pageNum,pageSize); //排序处理 if(StringUtils.isNotBlank(orderBy)){ if(Const.ProductListOrderBy.PRICE_ASC_DESC.contains(orderBy)){ String[] orderByArray=orderBy.split("_"); PageHelper.orderBy(orderByArray[0]+" "+orderByArray[1]); } } List productList=productMapper.selectByNameAndCategoryIds(StringUtils.isBlank(keyword)?null:keyword,categoryIdList.size()==0?null:categoryIdList); List productListVoList=Lists.newArrayList(); for(Product product : productList){ ProductListVo productListVo=assembleProductListVo(product); productListVoList.add(productListVo); } //开始分页 PageInfo pageInfo=new PageInfo(productList); pageInfo.setList(productListVoList); return ServerResponse.createBySuccess(pageInfo); }
上面我们用到了我们自己定义的两个方法,下面将对应代码展示一下
selectCategoryAndChildrenById
: public ServerResponse
> selectCategoryAndChildrenById(Integer categoryId){ //调用递归算法 Set categorySet= Sets.newHashSet(); finChildCategory(categorySet,categoryId); List categoryIdList= Lists.newArrayList(); if(categoryId !=null){ for(Category categoryItem : categorySet){ categoryIdList.add(categoryItem.getId()); } } return ServerResponse.createBySuccess(categoryIdList); }
selectByNameAndCategoryIds
:
其中orderBy=
后面对应的是我们需要排序的方式。
转载地址:http://qwcia.baihongyu.com/