1.从数据库查询sku详情页面所需要的sku所有数据后
2.在item页面,为每一个销售属性值所关联的skuIds
3.为每一个销售属性值设置attr,通过
th:attr="skus=${vals.skuIds},class=${#lists.contains
(#strings.listSplit(vals.skuIds,','),item.info.skuId)?'sku_attr_value checked':'sku_attr_value'}">
4.这样之后所有的销售属性值上都会带有所关联的所有skuIds
5.由于当前的sku是由每一个不同的销售属性值决定的,也就是说一个sku有且仅有一个销售属性值与之对应。
6.所以我们在销售属性值那里,判断(我们之前已经为每一个销售属性值关联了skuid),哪个销售属性值里边包括当前sku详情页面的skuId,就将它回显(设置为红色框框)。
页面效果:
每一个销售属性值里边有所关联的skuId
sql:
SELECT
ssav.attr_id attrId,
ssav.attr_name attrName,
ssav.attr_value,
GROUP_CONCAT(DISTINCT info.sku_id) sku_ids
FROM pms_sku_info
info
LEFT JOIN pms_sku_sale_attr_value
ssav
ON info.sku_id = ssav.sku_id
WHERE info.spu_id = 3
GROUP BY ssav.attr_id,ssav.attr_name,ssav.attr_value
查出来的表信息: