1.接口文档
2.AttrController中添加baseAttrListForSPU方法
/**
* 获取spu规格
* @param spuId
* @return
*/
@GetMapping("/base/listforspu/{spuId}")
public R baseAttrListForSPU(@PathVariable("spuId") Long spuId){
List<ProductAttrValueEntity> productAttrValueEntityList = productAttrValueService.baseAttrListForSPU(spuId);
return R.ok().put("data",productAttrValueEntityList);
}
3.ProductAttrValueService中添加baseAttrListForSPU方法
List<ProductAttrValueEntity> baseAttrListForSPU(Long spuId);
4.ProductAttrValueServiceImpl中添加baseAttrListForSPU方法实现
/**
* 获取spu规格
* @param spuId
* @return
*/
@Override
public List<ProductAttrValueEntity> baseAttrListForSPU(Long spuId) {
List<ProductAttrValueEntity> productAttrValueEntityList = this.baseMapper.selectList(
new QueryWrapper<ProductAttrValueEntity>().eq("spu_id", spuId));
return productAttrValueEntityList;
}
5.前端bug修改
bug:在spu管理中点击规格,前端显示404
用post测试:成功获取数据
问题分析: 前端路由问题
解决方案:在src/router/index.js的mainRoutes的children中配置spu管理–>规格的路由
// 主入口路由(需嵌套上左右整体布局)
const mainRoutes = {
path: '/',
component: _import('main'),
name: 'main',
redirect: { name: 'home' },
meta: { title: '主入口整体布局' },
children: [
// 通过meta对象设置路由展示方式
// 1. isTab: 是否通过tab展示内容, true: 是, false: 否
// 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
// 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
{ path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
{ path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } },
{ path: '/demo-echarts', component: _import('demo/echarts'), name: 'demo-echarts', meta: { title: 'demo-echarts', isTab: true } },
{ path: '/demo-ueditor', component: _import('demo/ueditor'), name: 'demo-ueditor', meta: { title: 'demo-ueditor', isTab: true } },
// 商品系统--商品维护-- spu管理 --规格
{ path: '/product-attrupdate', component: _import('modules/product/attrupdate'), name: 'attr-update', meta: { title: '规格维护', isTab: true } }
],
重启再次访问
6.修改商品规格
6.1.AttrController中添加updateSpuAttr方法
/**
* 修改商品规格
* @param spuId
* @param entities
* @return
*/
@PostMapping("/update/{spuId}")
public R updateSpuAttr(@PathVariable("spuId") Long spuId,
@RequestBody List<ProductAttrValueEntity> entities){
productAttrValueService.updateSpuAttr(spuId,entities);
return R.ok();
}
6.2.ProductAttrValueService中添加updateSpuAttr
void updateSpuAttr(Long spuId, List<ProductAttrValueEntity> entities);
6.3.ProductAttrValueServiceImpl中添加updateSpuAttr方法实现
/**
* 修改商品规格
* @param spuId
* @param entities
*/
@Transactional
@Override
public void updateSpuAttr(Long spuId, List<ProductAttrValueEntity> entities) {
//1、删除这个spuId之前对应的所有属性
this.baseMapper.delete(
new QueryWrapper<ProductAttrValueEntity>().eq("spu_id",spuId));
List<ProductAttrValueEntity> productAttrValueEntityList = entities.stream().map(item -> {
item.setSpuId(spuId);
return item;
}).collect(Collectors.toList());
this.saveBatch(productAttrValueEntityList);
}
.