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

文章目录

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",
                }
            ]
        }
    ]
}

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

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层时从最外层向里面写:
微信点餐SpringBoot-07:买家商品---API的实现
微信点餐SpringBoot-07:买家商品---API的实现

/**
 * @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-07:买家商品---API的实现

上一篇:spring boot整合pagehelper


下一篇:Spring-ehcache RMI形式的分布式缓存配置