shop++改造之ResponseEntity的坑


后台shop++購物車請求的數據是一個Map結構的數據,業務需要要在類似的購物車中加一個套餐。

那么套餐里面就包含商品信息了,覺得不用他的Map了於是封裝了兩個類:

套餐信息顯示類,商品信息顯示類

請求返回數據都正常,但是js就是解析不了后台返回來的數據。也不報錯。
主要原因是SetMealView 類的setMeal原來是一個SetMeal對象,后來改成了String就可以了。
/**
* @Auther: lanhaifeng
* @Date: 2018/12/3 0003 09:10
* @Description:套餐信息顯示類
*/
public class SetMealView {

private String setMeal;//套餐名稱

private List<ProductDateilView> viewList=new ArrayList<ProductDateilView>();//套餐商品信息


public SetMealView() {
}

public SetMealView(String setMeal, List<ProductDateilView> viewList) {
this.setMeal = setMeal;
this.viewList = viewList;
}

public String getSetMeal() {
return setMeal;
}

public void setSetMeal(String setMeal) {
this.setMeal = setMeal;
}

public List<ProductDateilView> getViewList() {
return viewList;
}

public void setViewList(List<ProductDateilView> viewList) {
this.viewList = viewList;
}
}

/**
* @Auther: lanhaifeng
* @Date: 2018/12/3 0003 08:58
* @Description:商品信息顯示類,不想搞那么多Map
* 所以封裝一下
*/
public class ProductDateilView {
private long skuId;//商品詳細編號
private String skuName;//商品詳細名稱
private String skuPath;//連接地址
private int stock;//庫存數量
private String specificationValues;////型號
private String brand;//品牌名稱
private long productCategory_id;//商品類別編號
private String skuThumbnail;//商品圖標
private BigDecimal price;//價格
private int quantity;//數量
private BigDecimal subtotal;//價格小計

public long getSkuId() {
return skuId;
}

public void setSkuId(long skuId) {
this.skuId = skuId;
}

public String getSkuName() {
return skuName;
}

public void setSkuName(String skuName) {
this.skuName = skuName;
}

public String getSkuPath() {
return skuPath;
}

public void setSkuPath(String skuPath) {
this.skuPath = skuPath;
}

public int getStock() {
return stock;
}

public void setStock(int stock) {
this.stock = stock;
}

public String getSpecificationValues() {
return specificationValues;
}

public void setSpecificationValues(String specificationValues) {
this.specificationValues = specificationValues;
}

public String getBrand() {
return brand;
}

public void setBrand(String brand) {
this.brand = brand;
}

public long getProductCategory_id() {
return productCategory_id;
}

public void setProductCategory_id(long productCategory_id) {
this.productCategory_id = productCategory_id;
}

public String getSkuThumbnail() {
return skuThumbnail;
}

public void setSkuThumbnail(String skuThumbnail) {
this.skuThumbnail = skuThumbnail;
}

public BigDecimal getPrice() {
return price;
}

public void setPrice(BigDecimal price) {
this.price = price;
}

public int getQuantity() {
return quantity;
}

public void setQuantity(int quantity) {
this.quantity = quantity;
}

public BigDecimal getSubtotal() {
return subtotal;
}

public void setSubtotal(BigDecimal subtotal) {
this.subtotal = subtotal;
}
}

那么請求數據的時候在原來獲取購物車的基礎上進行了改造。
/**
* 查詢詳細的購物清單
* @param currentCart
* @return
*/
public Map<String, Object> getSkuDetail( @CurrentCart Cart currentCart){
Map<String, Object> data = new HashMap<>();
//查詢購物車所有數據信息
Setting setting = SystemUtils.getSetting();
if (currentCart != null && !currentCart.isEmpty()) {
data.put("quantity", currentCart.getQuantity(false));
data.put("rewardPoint", currentCart.getRewardPoint());
data.put("effectivePrice", currentCart.getEffectivePrice());
data.put("discount", currentCart.getDiscount());
//List<Map<String, Object>> cartItems = new ArrayList<>();//存套餐外的商品
List<ProductDateilView> cartItems = new ArrayList<>();//存套餐外的商品
List<SetMealView> setmealist = new ArrayList<>();//setmealist保存套餐內的商品
//這里做一個小小的改動,要對套餐進行一個分組
for (CartItem cartItem : currentCart) {
ProductDateilView productDateilView=new ProductDateilView();
//Map<String, Object> item = new HashMap<>();
Sku sku = cartItem.getSku();
Product product=sku.getProduct();
//item.put("skuId", sku.getId());
productDateilView.setSkuId(sku.getId());
//item.put("skuName", sku.getName());
productDateilView.setSkuName(sku.getName());
//item.put("skuPath", sku.getPath());
productDateilView.setSkuPath(sku.getPath());
//item.put("stock",sku.getStock());//庫存
productDateilView.setStock(sku.getStock());
//item.put("specificationValues",sku.getSpecificationValues().get(0).getValue());//型號
productDateilView.setSpecificationValues(sku.getSpecificationValues().get(0).getValue());
if(null!=product.getBrand()){
String brand=(product.getBrand().getName()!=null ||product.getBrand().getName().equals(""))?product.getBrand().getName():"自營";
//item.put("brand",brand);//品牌
productDateilView.setBrand(brand);
}else {
//item.put("brand","自營");//品牌
productDateilView.setBrand("自營");
}
//item.put("productCategory_id",product.getProductCategory().getId());//產品類別
productDateilView.setProductCategory_id(product.getProductCategory().getId());
//item.put("skuThumbnail", sku.getThumbnail() != null ? sku.getThumbnail() : setting.getDefaultThumbnailProductImage());
productDateilView.setSkuThumbnail(sku.getThumbnail() != null ? sku.getThumbnail() : setting.getDefaultThumbnailProductImage());
//item.put("price", cartItem.getPrice());
productDateilView.setPrice(cartItem.getPrice());
//item.put("quantity", cartItem.getQuantity());
productDateilView.setQuantity(cartItem.getQuantity());
//item.put("subtotal", cartItem.getSubtotal());
productDateilView.setSubtotal(cartItem.getSubtotal());
if(cartItem.getSetmeal_id()>0){ //判斷如果是套餐
//cartItems.add(item);
SetMeal setMeal=setMealService.find(cartItem.getSetmeal_id());
//item.put("setMeal", setMeal);
boolean isExits=false;
for (SetMealView se: setmealist) {
if(se.getSetMeal().equals(setMeal.getsName())){
se.getViewList().add(productDateilView);
isExits=true;
break;
}
}
if(isExits==false){
List<ProductDateilView> list=new ArrayList<>();
list.add(productDateilView);
setmealist.add(new SetMealView(setMeal.getsName(),list));
}
}else {
cartItems.add(productDateilView);
}
}
data.put("cartItems", cartItems);
data.put("setmealist", setmealist);
}
return data;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM