尚品汇-(十七)

发布于:2024-07-13 ⋅ 阅读:(126) ⋅ 点赞:(0)

 前面的表:

(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_checked

   FROM spu_sale_attr sa

   INNER JOIN spu_sale_attr_value  sv ON  sa.spu_id=sv.spu_id AND sa.base_sale_attr_id=sv.base_sale_attr_id

   LEFT 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_checked
        FROM spu_sale_attr sa
        INNER JOIN spu_sale_attr_value  sv ON  sa.spu_id=sv.spu_id AND sa.base_sale_attr_id=sv.base_sale_attr_id
        LEFT 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);
}

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到