博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
18、【 商品管理模块开发】——前台商品详情、列表、搜索、动态排序功能开发...
阅读量:6241 次
发布时间:2019-06-22

本文共 5104 字,大约阅读时间需要 17 分钟。

1、接口编写:

在portal包下新建ProductController类:

img_8d31c185d753a836caf20d456e124d19.png
image.png
img_3a3ade8f55058091a9b121a63c0268f6.png
image.png

1、前台查询商品详情接口:

*Controller:

//前台查询商品详情接口    @RequestMapping("detail.do")    @ResponseBody    public ServerResponse
detail(Integer productId){ return iProductService.getProductDetail(productId); }

*Service:

//前台商品详情查询    ServerResponse
getProductDetail(Integer productId);

*ServiceImpl:

//前台商品详情查询    public ServerResponse
getProductDetail(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方法是使用逆向工程生成的,故不展示。

2、前台查询商品列表接口

*Controller:

//前台查询商品列表接口    @RequestMapping("list.do")    @ResponseBody    //商品详情列表分页    public ServerResponse
list(@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:

//前台商品分页(根据关键字搜索)     ServerResponse
getProductByKeywordCategory(String keyword,Integer categoryId,int pageNum,int pageSize,String orderBy);

*ServiceImpl:

//前台商品分页(根据关键字搜索)    public ServerResponse
getProductByKeywordCategory(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:

2、接口测试:

1、前台商品查询:
img_76318cf90f460256ceef0606cc76f23f.png
image.png
2、前台商品列表查询:

其中orderBy=后面对应的是我们需要排序的方式。

img_68f1962a8bb1d370cb63e5eaa76b9b07.png
img_2cdba84231dec109a3d9f253c02b85f6.png
image.png

转载地址:http://qwcia.baihongyu.com/

你可能感兴趣的文章
java内存模型
查看>>
python继承关系及DVD案例
查看>>
木其工作室代写程序 [原]使用Filter过滤ip禁止访问系统
查看>>
2.6 The Object Model -- Bindings
查看>>
2.4 The Object Model -- Computed Properties and Aggregate Data with @each(计算的属性和使用@each聚合数据)...
查看>>
二叉树问题(区间DP好题)
查看>>
PHP基础
查看>>
PHP奇淫技巧
查看>>
Centos中配置环境变量
查看>>
mysql中判断记录是否存在方法比较【转】
查看>>
HBase 列族的概念
查看>>
hdu2036
查看>>
基于模板匹配的马赛克检验
查看>>
Database4.exe用来导入excel
查看>>
Unable to preventDefault inside passive event listener
查看>>
java中string和int互相转化 (转)
查看>>
[LUOGU] P1220 关路灯
查看>>
【转】在控制台、WinForm项目中的嵌入mdf文件的烦恼
查看>>
【转】C51中断函数的写法
查看>>
django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)
查看>>