ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微信点餐SpringBoot-07:买家商品---API的实现

2020-03-08 18:39:11  阅读:273  来源: 互联网

标签:SpringBoot 微信 ResultVO private public productInfo API productInfoVO resultVO


文章目录

0. 前端代码示例

{
    "code": 0,
    "msg": "成功",
    "data": [
        {
            "name": "热榜",
            "type": 1,
            "foods": [
                {
                    "id": "123456",
                    "name": "皮蛋粥",
                    "price": 1.2,
                    "description": "好吃的皮蛋粥",
                    "icon": "http://xxx.com",
                }
            ]
        },
        {
            "name": "好吃的",
            "type": 2,
            "foods": [
                {
                    "id": "123457",
                    "name": "慕斯蛋糕",
                    "price": 10.9,
                    "description": "美味爽口",
                    "icon": "http://xxx.com",
                }
            ]
        }
    ]
}

在这里插入图片描述

1. ResultVO

用于封装API最外层的三个属性的对象:

/**
 * @author hh
 *
 * http请求返回的最外层对象
 */
@Data
public class ResultVO<T> {

    //错误码
    private Integer code;

    //提示信息
    private String message;

    //具体内容
    private T data;
}

2. ProductVO

用于封住商品类目的对象

/**
 * 商品包含类目
 */
@Data
public class ProductVO{

    //因为前端使用的是name,为了增加程序的可读性,使用categoryName
    @JsonProperty("name")
    private String categoryName;

    //类目标号
    @JsonProperty("type")
    private Integer categoryType;

    //商品
    @JsonProperty("foods")
    private List<ProductInfoVO> productInfoVOList;
}

3. ProductInfoVO

用于封装商品数据的对象:

/**
 * 商品详情
 */

@Data
public class ProductInfoVO {
    @JsonProperty("id")
    private String productId;
    @JsonProperty("name")
    private String productName;
    @JsonProperty("price")
    private BigDecimal productPrice;
    @JsonProperty("description")
    private String productDescription;
    @JsonProperty("icon")
    private String productIcon;
}

4. ResultVOUtil

用于封装返回结果和信息的工具类:

public class ResultVOUtil {

    //成功
    public static ResultVO success(Object object){
        ResultVO resultVO = new ResultVO();
        resultVO.setData(object);
        resultVO.setCode(0);
        resultVO.setMessage("成功");
        return resultVO;
    }

    //成功
    public static ResultVO success(){
        return success(null);
    }

    //失败
    public static ResultVO error(Integer code,String message){
        ResultVO resultVO = new ResultVO();
        resultVO.setCode(code);
        resultVO.setMessage(message);
        return resultVO;
    }
}

5. Controller层

编写Controller层时从最外层向里面写:
在这里插入图片描述
在这里插入图片描述

/**
 * @author hh
 *
 * 买家商品Controller层的实现,展示善品列表
 */
@RestController
@RequestMapping("/buyer/product")
public class BuyerProductController {
    @Autowired
    private ProductService productService;
    @Autowired
    private CategoryService categoryService;


    @GetMapping("/list")
    public ResultVO list(){

        //1.数据库的查询:查询所有的上架商品
        List<ProductInfo> productInfoList = productService.findUpAll();

        //2.数据库的查询:查询类目(编号)
        List<Integer> categoryTypeList = new ArrayList<>();
        for(ProductInfo productInfo:productInfoList){
            categoryTypeList.add(productInfo.getCategoryType());
        }
        List<ProductCategory> productCategoryList
                = categoryService.findByCategoryTypeIn(categoryTypeList);

        //3.数据拼装:将查询的数据拼装进各个对象中
        List<ProductVO> productVOList = new ArrayList<>();
        for(ProductCategory productCategory:productCategoryList){
            ProductVO productVO = new ProductVO();
            productVO.setCategoryName(productCategory.getCategoryName());
            productVO.setCategoryType(productCategory.getCategoryType());

            List<ProductInfoVO> productInfoVOList = new ArrayList<>();
            for(ProductInfo productInfo:productInfoList){
                if(productInfo.getCategoryType().equals(productCategory.getCategoryType())){
                    ProductInfoVO productInfoVO = new ProductInfoVO();
//                productInfoVO.setProductId(productInfo.getProductId());
//                productInfoVO.setProductName(productInfo.getProductName());
//                productInfoVO.setProductPrice(productInfo.getProductPrice());
//                productInfoVO.setProductDescription(productInfo.getProductDescription());
//                productInfoVO.setProductIcon(productInfo.getProductIcon());

                    //上面的代码太啰嗦,可以使用工具类BeanUtils
                    //将productInfo对象的属性值拷贝到productInfoVO对象的属性中
                    BeanUtils.copyProperties(productInfo,productInfoVO);
                    productInfoVOList.add(productInfoVO);
                }
            }
            productVO.setProductInfoVOList(productInfoVOList);
            productVOList.add(productVO);
        }

        return ResultVOUtil.success(productVOList);
    }
}

在这里插入图片描述

标签:SpringBoot,微信,ResultVO,private,public,productInfo,API,productInfoVO,resultVO
来源: https://blog.csdn.net/qq_42764468/article/details/104736862

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有