会员等级
将前端的六个模块的代码复制到自己的前端代码中
新增一个会员
查询品牌表中所有信息
CategoryBrandRelationController
/**
* 1.Controller:处理请求,接收和校验数据
* 2.Service接收controller传来的数据,进行业务处理
* 3.controller接收service处理完的数据,封装页面指定的vo
* @param catId
* @return
*/
@GetMapping("/brands/list")
public R relationBrandsList(@RequestParam(value = "catId",required = true)Long catId){
List<BrandEntity> vos = categoryBrandRelationService.getBrandsCatId(catId);
final List<BrandVo> collect = vos.stream().map(item -> {
final BrandVo brandVo = new BrandVo();
brandVo.setBrandId(item.getBrandId());
brandVo.setBrandName(item.getName());
return brandVo;
}).collect(Collectors.toList());
return R.ok().put("data",collect);
}
* 1.Controller:处理请求,接收和校验数据 * 2.Service接收controller传来的数据,进行业务处理 * 3.controller接收service处理完的数据,封装页面指定的vo
CategoryBrandRelationServiceImpl
@Autowired CategoryBrandRelationDao relationDao; @Autowired BrandService brandService;
@Override
public List<BrandEntity> getBrandsCatId(Long catId) {
List<CategoryBrandRelationEntity> catelogId = relationDao.selectList(new QueryWrapper<CategoryBrandRelationEntity>().eq("catelog_id", catId));
//获取每一个品牌的详细信息
List<BrandEntity> collect = catelogId.stream().map(item -> {
Long brandId = item.getBrandId();
BrandEntity byId = brandService.getById(brandId);
return byId;
}).collect(Collectors.toList());
return collect;
}
效果 选择分类后有相应的品牌可以选择
获取分类下所有属性和分组
@Data
public class AttrGroupWithAttrsVo {
/**
* 分组id
*/
@TableId
private Long attrGroupId;
/**
* 组名
*/
private String attrGroupName;
/**
* 排序
*/
private Integer sort;
/**
* 描述
*/
private String descript;
/**
* 组图标
*/
private String icon;
/**
* 所属分类id
*/
private Long catelogId;
private List<AttrEntity> attrs;
}
AttrGroupController
@GetMapping("/{catelogId}/withattr")
public R getAttrGroupWithAttrs(@PathVariable("catelogId")Long catelogId){
//1.查出当前分类下的所有属性分组
List<AttrGroupWithAttrsVo> vos = attrGroupService.getAttrGroupWithAttrsByCatelogId(catelogId);
//2.查询每个属性分组的所有属性
return R.ok().put("data",vos);
}
AttrGroupServiceImpl
/**
* 根据分类id查出所有的分组以及这些组里面的属性
* @param catelogId
* @return
*/
@Override
public List<AttrGroupWithAttrsVo> getAttrGroupWithAttrsByCatelogId(Long catelogId) {
//查询分组信息
List<AttrGroupEntity> attrGroupEntities = this.list(new QueryWrapper<AttrGroupEntity>().eq("catelog_id", catelogId));
//查询所有属性
final List<AttrGroupWithAttrsVo> collect = attrGroupEntities.stream().map(group -> {
final AttrGroupWithAttrsVo attrsVo = new AttrGroupWithAttrsVo();
BeanUtils.copyProperties(group, attrsVo);
final List<AttrEntity> attrs = attrService.getRelationAttr(attrsVo.getAttrGroupId());
attrsVo.setAttrs(attrs);
return attrsVo;
}).collect(Collectors.toList());
return collect;
}
暂时取消校验
每一个属性分组一定要至少一个关联,否则会报错,太坑了
在 showBaseAttrs()方法中添加判断
录入数据
复制控制台的数据
逆向生成bean,下载生成的bean并放到vo包下
Class类名写错了是SpusaveVo
修改逆向生成个别属性类型
@Data
public class Attr {
private Long attrId;
private String attrName;
private String attrValue;
}
@Data
public class SpuSaveVo {
private String spuName;
private String spuDescription;
private Long catalogId;
private Long brandId;
private BigDecimal weight;
private int publishStatus;
private List<String> decript;
private List<String> images;
private Bounds bounds;
private List<BaseAttrs> baseAttrs;
private List<Skus> skus;
}
@Data
public class Skus {
private List<Attr> attr;
private String skuName;
private BigDecimal price;
private String skuTitle;
private String skuSubtitle;
private List<Images> images;
private List<String> descar;
private int fullCount;
private BigDecimal discount;
private int countStatus;
private BigDecimal fullPrice;
private BigDecimal reducePrice;
private int priceStatus;
private List<MemberPrice> memberPrice;
}
@Data
public class MemberPrice {
private Long id;
private String name;
private BigDecimal price;
}
@Data
public class BaseAttrs {
private Long attrId;
private String attrValues;
private int showDesc;
}
@Data
public class Bounds {
private BigDecimal buyBounds;
private BigDecimal growBounds;
}
@Data
public class Images {
private String imgUrl;
private int defaultImg;
}
新增商品
SpuInfoController
/**
* 保存
*/
@RequestMapping("/save")
//@RequiresPermissions("product:spuinfo:save")
public R save(@RequestBody SpuSaveVo vo){
// spuInfoService.save(spuInfo);
spuInfoService.saveSpuInfo(vo);
return R.ok();
}
保存Spu的描述图片 SpuInfoDescServiceImpl
@Override
public void saveSpuInfoDesc(SpuInfoDescEntity descEntity) {
this.baseMapper.insert(descEntity);
}
保存spu的图片集
批量保存图片---saveBatch需要的是传入SpuImagesEntity的集合
保存图片
SpuImagesServiceImpl
@Override
public void saveImages(Long id, List<String> images) {
if(images==null ||images.size()