?目錄:
(1)獲取價格信息
(2)獲取銷售信息
前面的表:
(1)獲取價格信息
?繼續編寫接口:ManagerService
/*** 獲取sku價格* @param skuId* @return*/
BigDecimal getSkuPrice(Long skuId);
實現類?ManagerServiceImpl
/*** 獲取sku價格* @param skuId* @return*/
@Override
public BigDecimal getSkuPrice(Long skuId) {SkuInfo skuInfo = skuInfoMapper.selectById(skuId);if(null != skuInfo) {return skuInfo.getPrice();}return new BigDecimal("0");
}
繼續編寫控制器:ProductApiController
查詢的是sku_info里面的價格
/*** 獲取sku最新價格* @param skuId* @return*/
@GetMapping("inner/getSkuPrice/{skuId}")
public BigDecimal getSkuPrice(@PathVariable Long skuId){return manageService.getSkuPrice(skuId);
}
(2)獲取銷售信息
通過spuid和skuid查詢 選中sku的銷售屬性
思路:
1、查出該商品的spu的所有銷售屬性和屬性值
2、標識出本商品對應的銷售屬性
3、點擊其他銷售屬性值的組合,跳轉到另外的sku頁面
銷售屬性跟銷售屬性值表,沒有外鍵,他們之間不是通過外鍵關聯的,他們是通過兩個字段進行關聯的?
?
選中關系表:選中了sku,然后跟銷售屬性關聯過濾?
查詢出sku對應spu的銷售屬性
第1、2條通過此sql實現:
SELECT sa.id ,sa.spu_id, sa.sale_attr_name,sa.base_sale_attr_id,sv.id sale_attr_value_id,sv.sale_attr_value_name,skv.sku_id,IF(skv.sku_id IS NULL,0,1)? is_checkedFROM spu_sale_attr saINNER JOIN spu_sale_attr_value? sv ON? sa.spu_id=sv.spu_id AND sa.base_sale_attr_id=sv.base_sale_attr_idLEFT JOIN sku_sale_attr_value skv ON skv.sale_attr_value_id= sv.id AND skv.sku_id=#{skuId}WHERE? sa.spu_id=#{spuId}ORDER BY sv.base_sale_attr_id,sv.id
此sql列出所有該spu的銷售屬性和屬性值,并關聯某skuid如果能關聯上is_check設為1,否則設為0。
在對應的實體類中【SpuSaleAttrValue】添加屬性字段
package com.atguigu.gmall.model.product;import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.List;/*** <p>* SpuSaleAttr* </p>**/
@Data
@ApiModel(description = "銷售屬性")
@TableName("spu_sale_attr")
public class SpuSaleAttr extends BaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "商品id")@TableField("spu_id")private Long spuId;@ApiModelProperty(value = "銷售屬性id")@TableField("base_sale_attr_id")private Long baseSaleAttrId;@ApiModelProperty(value = "銷售屬性名稱(冗余)")@TableField("sale_attr_name")private String saleAttrName;// 銷售屬性值對象集合@TableField(exist = false)List<SpuSaleAttrValue> spuSaleAttrValueList;}
package com.atguigu.gmall.model.product;import com.atguigu.gmall.model.base.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;/*** <p>* SpuSaleAttrValue* </p>**/
@Data
@ApiModel(description = "銷售屬性值")
@TableName("spu_sale_attr_value")
public class SpuSaleAttrValue extends BaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "商品id")@TableField("spu_id")private Long spuId;@ApiModelProperty(value = "銷售屬性id")@TableField("base_sale_attr_id")private Long baseSaleAttrId;@ApiModelProperty(value = "銷售屬性值名稱")@TableField("sale_attr_value_name")private String saleAttrValueName;@ApiModelProperty(value = "銷售屬性名稱(冗余)")@TableField("sale_attr_name")private String saleAttrName;// 是否是默認選中狀態
// @TableField("sale_attr_name")
// String isChecked;@TableField(exist = false)String isChecked;}
在SpuSaleAttrMapper 接口中添加的方法
// 根據spuId,skuId 查詢銷售屬性集合
List<SpuSaleAttr> selectSpuSaleAttrListCheckBySku(@Param("skuId") Long skuId, @Param("spuId")Long spuId);
SpuSaleAttrMapper.xml:添加
<select id="selectSpuSaleAttrListCheckBySku" resultMap="spuSaleAttrMap">SELECT sa.id ,sa.spu_id, sa.sale_attr_name,sa.base_sale_attr_id,sv.id sale_attr_value_id,sv.sale_attr_value_name,skv.sku_id,IF(skv.sku_id IS NULL,0,1) is_checkedFROM spu_sale_attr saINNER JOIN spu_sale_attr_value sv ON sa.spu_id=sv.spu_id AND sa.base_sale_attr_id=sv.base_sale_attr_idLEFT JOIN sku_sale_attr_value skv ON skv.sale_attr_value_id= sv.id AND skv.sku_id=#{skuId}WHERE sa.spu_id=#{spuId}ORDER BY sv.base_sale_attr_id,sv.id
</select>
繼續編寫接口ManageService 接口
/*** 根據spuId,skuId 查詢銷售屬性集合* @param skuId* @param spuId* @return*/
List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId);
實現類ManageServiceImpl
@Override
public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId) {return spuSaleAttrMapper.selectSpuSaleAttrListCheckBySku(skuId, spuId);
}
編寫控制器:ProductApiController
/*** 根據spuId,skuId 查詢銷售屬性集合* @param skuId* @param spuId* @return*/
@GetMapping("inner/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(@PathVariable("skuId") Long skuId,@PathVariable("spuId") Long spuId){return manageService.getSpuSaleAttrListCheckBySku(skuId, spuId);
}
?