package com.atguigu.gmall1205.item.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.fastjson.JSON;
import com.atguigu.gmall1205.bean.SkuInfo;
import com.atguigu.gmall1205.bean.SkuSaleAttrValue;
import com.atguigu.gmall1205.bean.SpuSaleAttr;
import com.atguigu.gmall1205.service.ManageService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
@Controller
public class ItemController {
@Reference
private ManageService manageService;
@RequestMapping("{skuId}.html")
public String item(@PathVariable String skuId, HttpServletRequest request){
System.out.println("商品Id"+skuId);
// 根据商品Id 查询skuInfo
// 如何来完成skuImage 图片列表显示
// 1.直接查询skuImage 表 然后将skuImage集合保存
// 2.将skuImage集合赋值给skuInfo
SkuInfo skuInfo = manageService.getSkuInfo(skuId);
// 根据skuId ,spuId 查询销售属性,销售属性值并加锁定数据
List<SpuSaleAttr> spuSaleAttrList = manageService.getSpuSaleAttrListCheckBySku(skuInfo);
// 获取销售属性值Id集合拼接字符串
List<SkuSaleAttrValue> skuSaleAttrValueList = manageService.getSkuSaleAttrValueListBySpu(skuInfo.getSpuId());
String key = "";
// key = 114|117
// json、 字符串{"114|117":"35" }
HashMap<String, String> map = new HashMap<>();
if (skuSaleAttrValueList!=null && skuSaleAttrValueList.size()>0){
// 循环拼接字符串
for (int i = 0; i < skuSaleAttrValueList.size(); i++) {
// 获取集合中的元素
SkuSaleAttrValue skuSaleAttrValue = skuSaleAttrValueList.get(i);
// 第一次拼接key = 114
// 第二次拼接key = 114|
// 第三次拼接key = 114|117
if (key.length()!=0){
key+="|";
}
key += skuSaleAttrValue.getSaleAttrValueId();
// 拼接规则,当skuId 与下一条数据的skuId不一致的时候,结束拼接,将数据放入map 中!
// 拼接到集合最后一条数据之后,则结束拼接,将数据放入map 中!
if ((i+1)==skuSaleAttrValueList.size() || !skuSaleAttrValue.getSkuId().equals(skuSaleAttrValueList.get(i+1).getSkuId())){
map.put(key,skuSaleAttrValue.getSkuId());
// 清空key
key="";
}
}
}
String valuesSkuJson = JSON.toJSONString(map);
System.out.println("valuesSkuJson:"+valuesSkuJson);
// 把valuesSkuJson 保存到作用域
request.setAttribute("valuesSkuJson",valuesSkuJson );
// 保存数据销售属性对象集合
request.setAttribute("spuSaleAttrList",spuSaleAttrList);
// 保存商品对象
request.setAttribute("skuInfo",skuInfo);
return "item";
}
}