淘先锋技术网

首页 1 2 3 4 5 6 7
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";
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述