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

点击首页推荐的商品、轮播图商品广告、商品列表页面点击商品,就会进入到商品的详情页面。
一、流程分析
点击推荐商品    ———商品ID———>                 商品详情                            ————商品ID————>         商品详情
                                                      <———商品详情————      接口
轮播图广告    ————商品ID———>                                                           ————商品ID————>         商品详情
                                                      <———商品参数————       参数接口
                                                      <———商品评论————       评论接口
1.获取商品ID
2.根据id查询商品详情(商品基本信息、商品套餐、商品图片、商品参数、商品评价)
3.将商品详情返回给前端
二、接口实现
1.商品详情接口
商品基本信息、商品套餐、商品图片
SQL:
#根据商品id查询商品基本信息
SELECT * FROM product WHERE product_id=1;

SELECT * FROM product p 
INNER JOIN product_img i
INNER JOIN product_sku s
ON p.product_id=i.item_id
AND p.product_id=s.product_id
WHERE p.product_id=3;

SELECT * FROM product p 
INNER JOIN product_img i
ON p.product_id=i.item_id
WHERE p.product_id=3;


#子查询:根据商品id查询当前商品的套餐
SELECT * FROM product WHERE product_id=3;
#根据商品id查询当前商品的图片
SELECT * FROM product_img WHERE item_id=3;
#根据商品id查询当前商品的套餐
SELECT * FROM product_sku WHERE product_id=3;

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

三、业务层实现

 ProductService

public interface ProductService {
    public ResultVO listRecommendProducts();

    public ResultVO getProductBasicInfo(String productId);

}

 ProductServiceImpl

@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductMapper productMapper;
    @Autowired
    private ProductImgMapper productImgMapper;
    @Autowired
    private ProductSkuMapper productSkuMapper;

    public ResultVO listRecommendProducts() {
        List<ProductVO> productVOS = productMapper.selectRecommendProducts();
        ResultVO resultVO = new ResultVO(ResStatus.OK, "success", productVOS);
        return resultVO;
    }


    @Transactional(propagation = Propagation.SUPPORTS)
    public ResultVO getProductBasicInfo(String productId) {
        //1.商品信息
        Example example = new Example(Product.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("productId",productId);
        criteria.andEqualTo("productStatus",1);//状态为1表示上架商品
        List<Product> products = productMapper.selectByExample(example);
        if (products.size()>0){
            //2,商品图片
            Example example1 = new Example(ProductImg.class);
            Example.Criteria criteria1 = example1.createCriteria();
            criteria1.andEqualTo("itemId",productId);
            List<ProductImg> productImgs = productImgMapper.selectByExample(example1);

            //3.商品套餐
            Example example2 = new Example(ProductSku.class);
            Example.Criteria criteria2 = example2.createCriteria();
            criteria2.andEqualTo("productId",productId);
            criteria2.andEqualTo("status",1);
            List<ProductSku> productSkus = productSkuMapper.selectByExample(example2);

            HashMap<String,Object> basicInfo = new HashMap<>();
            basicInfo.put("product",products.get(0));
            basicInfo.put("productImgs",productImgs);
            basicInfo.put("productSkus",productSkus);

            return new ResultVO(ResStatus.OK,"success",basicInfo);
        }else {
            return new ResultVO(ResStatus.NO,"查询的商品不存在",null);
        }

    }
}

四、控制层实现

 ProductController

@RestController
@CrossOrigin
@RequestMapping("/product")
@Api(value = "提供商品信息相关的接口",tags = "商品管理")
public class ProductController {

    @Autowired
    private ProductService productService;

    @ApiOperation("商品基本信息查询接口")
    @GetMapping("/detail-info/{pid}")
    public ResultVO getProductBasicInfo(@PathVariable("pid") String pid){
        return productService.getProductBasicInfo(pid);
    }
}
 测试:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
千峰是一个IT培训机构,致力于提供高质量的前端培训课程。其中,Vue是千峰的核心课程之一,也是目前前端领域最受欢迎的JavaScript框架之一。Vue具有简洁易学的特点,使得开发者可以快速构建交互式的用户界面。 Vue具有以下特点: 1. 响应式数据绑定:Vue采用了一种数据驱动的思想,可以将数据与DOM元素进行绑定,当数据改变时,对应的DOM元素会自动更新,实现页面的动态渲染。 2. 组件化开发:Vue将UI页面拆分为多个组件,每个组件都有自己的逻辑和样式,可以实现组件的高复用性,提高开发效率。 3. 虚拟DOM:Vue通过虚拟DOM技术优化了页面渲染的效率,当数据变化时,Vue会先将页面的变动进行diff算法比较,然后只更新需要更新的部分,减少了不必要的性能消耗。 4. 生态丰富:Vue有庞大的社区支持,拥有许多开源组件库,例如Element UI和Vuetify等,可以方便地集成到自己的项目中,加快开发速度。 5. 完善的文档和学习资源:Vue拥有详细的官方文档和丰富的学习资源,对于初学者来说很友好,可以帮助开发者快速入门和提升技术。 在千峰的Vue课程中,学员将学习Vue框架的使用以及相关的生态技术,包括Vue Router、VueX等,还会通过实战项目进行实践,提升实际开发能力。课程采用了理论结合实践的教学方法,注重实际项目开发经验的分享。 总之,千峰的Vue课程是一个很好的学习机会,通过学习Vue,可以快速掌握前端开发的技能,提高自己在职场上的竞争力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值