1.Result类
package com.zhu.product.utill;
/**
* 1.构建一个格式确定下来的Result类
* 构造数据最外层
* @param <T>
*/
public class Result<T> {
/**
* 状态码
*/
private Integer code;
/**
*提示信息
*/
private String msg;
/**
* 具体类容
*/
private T data;
public Result() {
super();
}
public Result(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
@Override
public String toString() {
return "Result{" +
"code=" + code +
", msg='" + msg + '\'' +
", data=" + data +
'}';
}
}
2.ResultEnum类
package com.zhu.product.utill;
/**
*2. 然后构建一个常用的枚举类,内容可以根据项目自定义
*/
public enum ResultEnum {
//这里是可以自己定义的,方便与前端交互即可
UNKNOWN_ERROR(-1,"未知错误"),
SUCCESS(10000,"成功"),
USER_NOT_EXIST(1,"用户不存在"),
USER_IS_EXISTS(2,"用户已存在"),
DATA_IS_NULL(3,"数据为空"),
;
private Integer code;
private String msg;
ResultEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
3.ResultUtil类
package com.zhu.product.utill;
/**
* 然后就是写一个返回的工具类ResultUtil
*/
public class ResultUtil {
/**成功且带数据**/
public static Result success(Object object){
Result result = new Result();
result.setCode(ResultEnum.SUCCESS.getCode());
result.setMsg(ResultEnum.SUCCESS.getMsg());
result.setData(object);
return result;
}
/**成功但不带数据**/
public static Result success(){
return success(null);
}
/**失败**/
public static Result error(Integer code,String msg){
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}
例:前端要求返回此格式
{
"code": 10000,
"msg": "成功",
"data": [
{
"productInfoList": [
{
"id": 1,
"name": "皮蛋粥",
"price": 34.5,
"Stock": 100,
"description": "好吃哦",
"icon": "http://111.jpa",
"status": 0,
"type": 11
}
],
"name": "热榜",
"type": 11
},
{
"productInfoList": [
{
"id": 2,
"name": "豆腐",
"price": 4.3,
"Stock": 50,
"description": "很软",
"icon": "http",
"status": 0,
"type": 22
}
],
"name": "好吃的",
"type": 22
}
]
}
商品表 类目表
查询商品表–根据商品信息查出所有类目列表
根据类目别表查出对应类目的商品
定义封装类
1):外层:ProductVo
package com.zhu.product.utill;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.zhu.product.entity.ProductInfo;
import lombok.Data;
import java.util.List;
/**
*封装外层对象
*/
@Data
public class ProductVo {
/**
* 返回前端加此注解 为前端需要字段
*/
@JsonProperty("name")
private String cacategoryName;
@JsonProperty("type")
private Integer categoryType;
/**
* List里面再封装一个对象
*/
private List<ProductInfoVo> ProductInfoList;
}
2):定义内部对象ProductInfoVo
package com.zhu.product.utill;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ProductInfoVo {
@JsonProperty("id")
private Integer productId;
@JsonProperty("name")
private String productName;
@JsonProperty("price")
private BigDecimal productPrice;
/**
* 库存
*/
@JsonProperty("Stock")
private Integer productStock;
@JsonProperty("description")
private String productDescription;
/**
* 小图
*/
@JsonProperty("icon")
private String productIcon;
/**
* 商品状态 0正常 1 下架
*/
@JsonProperty("status")
private Integer productStatus;
/**
* 类目编号
*/
@JsonProperty("type")
private Integer categoryType;
}
3):组装数据 Controller
package com.zhu.product.controller;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zhu.product.entity.ProductCategory;
import com.zhu.product.entity.ProductInfo;
import com.zhu.product.enums.StatusEnum;
import com.zhu.product.service.IProductCategoryService;
import com.zhu.product.service.IProductInfoService;
import com.zhu.product.utill.ProductInfoVo;
import com.zhu.product.utill.ProductVo;
import com.zhu.product.utill.Result;
import com.zhu.product.utill.ResultUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author pacey
* @since 2019-01-15
*/
@RestController
@RequestMapping("/productInfo")
public class ProductInfoController {
@Autowired
private IProductInfoService iProductInfoService;
@Autowired
private IProductCategoryService iProductCategoryService;
/**
* 1.查询所有在架的商品
* 2.获取类目type列表
* 3.查询类目
* 4.构造数据
*/
List<Integer> typeList= new ArrayList<>();
@GetMapping
public Result getProductIndoByStatus()
{
//1.查询所有在架的商品
List<ProductInfo> productInfoList=iProductInfoService.selectList(new EntityWrapper<ProductInfo>().eq("product_status", StatusEnum.UP));
Integer type;
for (ProductInfo list :productInfoList)
{
type=list.getCategoryType();
//2.获取类目type列表
typeList.add(type);
System.out.println("11"+type);
}
for (Integer i:typeList)
{
System.out.println("x:"+i);
}
// 3.查询类目
List<ProductCategory> productCategoryList =iProductCategoryService.selectList(new EntityWrapper<ProductCategory>().in("category_type",typeList));
//4.构造数据
List<ProductVo> categoryinfo= new ArrayList<>();
//遍历类目
for (ProductCategory list:productCategoryList){
ProductVo productVo =new ProductVo();
productVo.setCacategoryName(list.getCategoryName());
productVo.setCategoryType(list.getCategoryType());
//便利商品表 获取商品信息
List<ProductInfoVo> productInfo =new ArrayList<>();
for(ProductInfo list1:productInfoList){
if(list1.getCategoryType().equals(list.getCategoryType())) {
ProductInfoVo productInfoVo = new ProductInfoVo();
//使用BeanUtils.copyProperties(,)把原对象的内容拷贝到新对象中去
BeanUtils.copyProperties(list1, productInfoVo);
productInfo.add(productInfoVo);
}
}
productVo.setProductInfoList(productInfo);
categoryinfo.add(productVo);
}
return ResultUtil.success(categoryinfo);
}
}