• 千峰商城-springboot项目搭建-64-商品详情数据库实现及业务层和控制层实现


    点击首页推荐的商品、轮播图商品广告、商品列表页面点击商品,就会进入到商品的详情页面。
    一、流程分析
    点击推荐商品    ———商品ID———>                 商品详情                            ————商品ID————>         商品详情
                                                          <———商品详情————      接口
    轮播图广告    ————商品ID———>                                                           ————商品ID————>         商品详情
                                                          <———商品参数————       参数接口
                                                          <———商品评论————       评论接口
    1.获取商品ID
    2.根据id查询商品详情(商品基本信息、商品套餐、商品图片、商品参数、商品评价)
    3.将商品详情返回给前端
    二、接口实现
    1.商品详情接口
    商品基本信息、商品套餐、商品图片
    SQL:
    1. #根据商品id查询商品基本信息
    2. SELECT * FROM product WHERE product_id=1;
    3. SELECT * FROM product p
    4. INNER JOIN product_img i
    5. INNER JOIN product_sku s
    6. ON p.product_id=i.item_id
    7. AND p.product_id=s.product_id
    8. WHERE p.product_id=3;
    9. SELECT * FROM product p
    10. INNER JOIN product_img i
    11. ON p.product_id=i.item_id
    12. WHERE p.product_id=3;
    13. #子查询:根据商品id查询当前商品的套餐
    14. SELECT * FROM product WHERE product_id=3;
    15. #根据商品id查询当前商品的图片
    16. SELECT * FROM product_img WHERE item_id=3;
    17. #根据商品id查询当前商品的套餐
    18. SELECT * FROM product_sku WHERE product_id=3;

     因为上述子查询的三个查询都是单表查询,所以可以通过tkMapper完成。

    三、业务层实现

     ProductService

    1. public interface ProductService {
    2. public ResultVO listRecommendProducts();
    3. public ResultVO getProductBasicInfo(String productId);
    4. }

     ProductServiceImpl

    1. @Service
    2. public class ProductServiceImpl implements ProductService {
    3. @Autowired
    4. private ProductMapper productMapper;
    5. @Autowired
    6. private ProductImgMapper productImgMapper;
    7. @Autowired
    8. private ProductSkuMapper productSkuMapper;
    9. public ResultVO listRecommendProducts() {
    10. List productVOS = productMapper.selectRecommendProducts();
    11. ResultVO resultVO = new ResultVO(ResStatus.OK, "success", productVOS);
    12. return resultVO;
    13. }
    14. @Transactional(propagation = Propagation.SUPPORTS)
    15. public ResultVO getProductBasicInfo(String productId) {
    16. //1.商品信息
    17. Example example = new Example(Product.class);
    18. Example.Criteria criteria = example.createCriteria();
    19. criteria.andEqualTo("productId",productId);
    20. criteria.andEqualTo("productStatus",1);//状态为1表示上架商品
    21. List products = productMapper.selectByExample(example);
    22. if (products.size()>0){
    23. //2,商品图片
    24. Example example1 = new Example(ProductImg.class);
    25. Example.Criteria criteria1 = example1.createCriteria();
    26. criteria1.andEqualTo("itemId",productId);
    27. List productImgs = productImgMapper.selectByExample(example1);
    28. //3.商品套餐
    29. Example example2 = new Example(ProductSku.class);
    30. Example.Criteria criteria2 = example2.createCriteria();
    31. criteria2.andEqualTo("productId",productId);
    32. criteria2.andEqualTo("status",1);
    33. List productSkus = productSkuMapper.selectByExample(example2);
    34. HashMap basicInfo = new HashMap<>();
    35. basicInfo.put("product",products.get(0));
    36. basicInfo.put("productImgs",productImgs);
    37. basicInfo.put("productSkus",productSkus);
    38. return new ResultVO(ResStatus.OK,"success",basicInfo);
    39. }else {
    40. return new ResultVO(ResStatus.NO,"查询的商品不存在",null);
    41. }
    42. }
    43. }

    四、控制层实现

     ProductController

    1. @RestController
    2. @CrossOrigin
    3. @RequestMapping("/product")
    4. @Api(value = "提供商品信息相关的接口",tags = "商品管理")
    5. public class ProductController {
    6. @Autowired
    7. private ProductService productService;
    8. @ApiOperation("商品基本信息查询接口")
    9. @GetMapping("/detail-info/{pid}")
    10. public ResultVO getProductBasicInfo(@PathVariable("pid") String pid){
    11. return productService.getProductBasicInfo(pid);
    12. }
    13. }
     测试:
  • 相关阅读:
    【Java 设计模式】创建者模式 之单例模式
    电脑重装系统如何在 Win11查看显卡型号信息
    Ubuntu plt画图 新罗马字体&网格&marker&刻度朝内
    解决&nbsp;不生效的问题
    牛奶功效有什么牛小仓日常生活中喜爱的饮食之一
    RocketMQ专题02
    gpf_maskf分配掩码描述
    【操作系统】本地ping出现一般故障解决方案
    uniapp 对video视频组件嵌套倍速按钮
    使用前端JS函数进行处理 四舍五入保留后两位小数
  • 原文地址:https://blog.csdn.net/LYly_B/article/details/125896553