以下区域不属于官方网站,用花生棒自己做内网网站,二手书网站建设报告,有哪些网站可以自己做加视频#xff08;1#xff09;数据库表结构
根据以上的需求#xff0c;以此将SKU关联的数据库表结构设计为如下#xff1a; base_attr_value#xff1a;前面学的平台属性值表
我们进行关联#xff0c;可以从分类导向平台#xff0c;通过平台过滤商品 #xff08;2#xf…1数据库表结构
根据以上的需求以此将SKU关联的数据库表结构设计为如下 base_attr_value前面学的平台属性值表
我们进行关联可以从分类导向平台通过平台过滤商品 2平台属性添加 按照提供的属性进行添加更改
修改AB:改为价格 修改尺寸 修改长度为机身存储 机身内存就是机身存储重复了可以删除这个机身存储 添加cpu型号 商品spu管理 添加销售属性信息 3保存skuInfo前期准备 点击添加sku需要两个数据
或获取图片的接口、和获取销售属性的接口 先删除没用的测试数据rrr 图片加载功能
spu图片查询接口 功能分析图片列表是根据spuId得来涉及到的数据库表spu_image
添加接口实现类
/*** 根据spuId 查询spuImageList* param spuId* return*/
ListSpuImage getSpuImageList(Long spuId);实现类
Override
public ListSpuImage getSpuImageList(Long spuId) {QueryWrapperSpuImage queryWrapper new QueryWrapper();queryWrapper.eq(spu_id, spuId);return spuImageMapper.selectList(queryWrapper);
}创建新的控制器
Api(tags 商品SKU接口)
RestController
RequestMapping(admin/product)
public class SkuManageController {Autowiredprivate ManageService manageService;/*** 根据spuId 查询spuImageList* param spuId* return*/GetMapping(spuImageList/{spuId})public ResultListSpuImage getSpuImageList(PathVariable(spuId) Long spuId) {ListSpuImage spuImageList manageService.getSpuImageList(spuId);return Result.ok(spuImageList);}
}销售属性查询接口 SpuSaleAttr 销售属性实体类
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)ListSpuSaleAttrValue spuSaleAttrValueList;} 销售属性
/*** 根据spuId 查询销售属性集合* param spuId* return*/
ListSpuSaleAttr getSpuSaleAttrList(Long spuId);实现类
Override
public ListSpuSaleAttr getSpuSaleAttrList(Long spuId) {return spuSaleAttrMapper.selectSpuSaleAttrList(spuId);
}SpuSaleAttrMapper
Mapper
public interface SpuSaleAttrMapper extends BaseMapperSpuSaleAttr {// 根据spuId 查询销售属性集合ListSpuSaleAttr selectSpuSaleAttrList(Long spuId);}创建SpuSaleAttrMapper.xml
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper SYSTEM http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.atguigu.gmall.product.mapper.SpuSaleAttrMapperresultMap idspuSaleAttrMap typecom.atguigu.gmall.model.product.SpuSaleAttr autoMappingtrueid propertyid columnid/id!--一对多--collection propertyspuSaleAttrValueList ofTypecom.atguigu.gmall.model.product.SpuSaleAttrValue autoMappingtrueid propertyid columnsale_attr_value_id/id/collection/resultMapsql idspuSaleAttr
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
/sql
select idselectSpuSaleAttrList resultMapspuSaleAttrMapselectinclude refidspuSaleAttr/includefrom spu_sale_attr sa inner join spu_sale_attr_value svon sa.spu_idsv.spu_id and sa.base_sale_attr_idsv.base_sale_attr_idwhere sa.spu_id#{spu_id}
/select
/mapper创建新的控制器SkuManagerController: Autowired
private ManagerService/*** 根据spuId 查询销售属性和销售属性值集合* param spuId* return*/
GetMapping(spuSaleAttrList/{spuId})
public ResultListSpuSaleAttr getSpuSaleAttrList(PathVariable(spuId) Long spuId) {ListSpuSaleAttr spuSaleAttrList manageService.getSpuSaleAttrList(spuId);return Result.ok(spuSaleAttrList);
}3sku点击保存按钮
实体类
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.math.BigDecimal;
import java.util.List;/*** p* SkuInfo* /p**/
Data
ApiModel(description SkuInfo)
TableName(sku_info)
public class SkuInfo extends BaseEntity {public SkuInfo(){}public SkuInfo(Long skuId){setId(skuId);}// 判断去重的话自动调用equals 方法。public boolean equals(SkuInfo skuInfo){return getId().equals(skuInfo.getId());}private static final long serialVersionUID 1L;ApiModelProperty(value 商品id)TableField(spu_id)private Long spuId;ApiModelProperty(value 价格)TableField(price)private BigDecimal price;ApiModelProperty(value sku名称)TableField(sku_name)private String skuName;ApiModelProperty(value 商品规格描述)TableField(sku_desc)private String skuDesc;ApiModelProperty(value 重量)TableField(weight)private String weight;ApiModelProperty(value 品牌(冗余))TableField(tm_id)private Long tmId;ApiModelProperty(value 三级分类id冗余))TableField(category3_id)private Long category3Id;ApiModelProperty(value 默认显示图片(冗余))TableField(sku_default_img)private String skuDefaultImg;ApiModelProperty(value 是否销售1是 0否)TableField(is_sale)private Integer isSale;TableField(exist false)ListSkuImage skuImageList;TableField(exist false)ListSkuAttrValue skuAttrValueList;TableField(exist false)ListSkuSaleAttrValue skuSaleAttrValueList;
} 需要用到四张表
创建对应数据库表实体类以及接口mapper
SkuInfoMapper
Mapper
public interface SkuInfoMapper extends BaseMapperSkuInfo {
}SkuImageMapper
Mapper
public interface SkuImageMapper extends BaseMapperSkuImage {
}SkuAttrValueMapper
Mapper
public interface SkuAttrValueMapper extends BaseMapperSkuAttrValue {
}SkuSaleAttrValueMapper
Mapper
public interface SkuSaleAttrValueMapper extends BaseMapperSkuSaleAttrValue {}编写接口与实现
/*** 保存数据* param skuInfo*/
void saveSkuInfo(SkuInfo skuInfo);判断集合是否为空可以这样
if (skuImageList ! null skuImageList.size() 0) 需要先添加sku_info表生成skuid下面的表插入会用到 图片值 平台属性值 销售属性值 实现类
Override
Transactional(rollbackFor Exception.class)
public void saveSkuInfo(SkuInfo skuInfo) {/*skuInfo 库存单元表 --- spuInfoskuImage 库存单元图片表 --- spuImage!skuSaleAttrValue sku销售属性值表{sku与销售属性值的中间表} --- skuInfo spuSaleAttrValueskuAttrValue sku与平台属性值的中间表 --- skuInfo baseAttrValue*/skuInfoMapper.insert(skuInfo);//保存图片ListSkuImage skuImageList skuInfo.getSkuImageList();if (skuImageList ! null skuImageList.size() 0) {// 循环遍历for (SkuImage skuImage : skuImageList) {skuImage.setSkuId(skuInfo.getId());skuImageMapper.insert(skuImage);}}//保存销售属性ListSkuSaleAttrValue skuSaleAttrValueList skuInfo.getSkuSaleAttrValueList();// 调用判断集合方法if (!CollectionUtils.isEmpty(skuSaleAttrValueList)) {for (SkuSaleAttrValue skuSaleAttrValue : skuSaleAttrValueList) {skuSaleAttrValue.setSkuId(skuInfo.getId());skuSaleAttrValue.setSpuId(skuInfo.getSpuId());skuSaleAttrValueMapper.insert(skuSaleAttrValue);}}//保存平台属性ListSkuAttrValue skuAttrValueList skuInfo.getSkuAttrValueList();if (!CollectionUtils.isEmpty(skuAttrValueList)) {for (SkuAttrValue skuAttrValue : skuAttrValueList) {skuAttrValue.setSkuId(skuInfo.getId());skuAttrValueMapper.insert(skuAttrValue);}}
}继续在控制器添加代码SkuManageController
/*** 保存sku* param skuInfo* return*/
PostMapping(saveSkuInfo)
public Result saveSkuInfo(RequestBody SkuInfo skuInfo) {// 调用服务层manageService.saveSkuInfo(skuInfo);return Result.ok();
}sku信息表 图片表 sku平台属性关联表 sku销售属性值表 它来自spu销售属性值表