14.商品服务-API-商品管理

1 SPU规格维护

1.1 获取SPU规格

请求路径(GET):/product/attr/base/listforspu/{spuId}

响应数据:

{
	"msg": "success",
	"code": 0,
	"data": [{
		"id": 43,
		"spuId": 11,
		"attrId": 7,
		"attrName": "入网型号",
		"attrValue": "LIO-AL00",
		"attrSort": null,
		"quickShow": 1
	}]
}

1、在AttrController里创建baseAttrListForSpu方法

@Autowired
ProductAttrValueService productAttrValueService;

@GetMapping("/base/listforspu/{spuId}")
public R baseAttrListForSpu(@PathVariable("spuId") Long spuId) {
    List<ProductAttrValueEntity> entityList =  productAttrValueService.baseAttrListForSpu(spuId);
    return R.ok().put("data", entityList);
}

2、实现baseAttrListForSpu方法

@Override
public List<ProductAttrValueEntity> baseAttrListForSpu(Long spuId) {
    List<ProductAttrValueEntity> entities = this.baseMapper.selectList(new QueryWrapper<ProductAttrValueEntity>().eq("spu_id", spuId));
    return entities;
}

3、重启服务测试

坑:点击规格按钮报400错误找不到页面

解决方法(转自评论区):

**方法一:**在数据库gulimall_admin执行以下sql再刷新页面:INSERT INTO sys_menu (menu_id, parent_id, name, url, perms, type, icon, order_num) VALUES (76, 37, '规格维护', 'product/attrupdate', '', 2, 'log', 0);

但是我执行了之后还是不行

**方法二:**在前端代码 src/router/index.js 文件中,定义 mainRoutes 时在 children 中定义一行路由(40 行):
{ path: '/product-attrupdate', component: _import('modules/product/attrupdate'), name: 'attr-update', meta: { title: '规格维护', isTab: true } }

image-20220429180109394

改完后,成功看到规格页面

1.2 修改商品规格

请求路径(POST):/product/attr/update/{spuId}

请求参数:

[{
	"attrId": 7,
	"attrName": "入网型号",
	"attrValue": "LIO-AL00",
	"quickShow": 1
}, {
	"attrId": 14,
	"attrName": "机身材质工艺",
	"attrValue": "玻璃",
	"quickShow": 0
}, {
	"attrId": 16,
	"attrName": "CPU型号",
	"attrValue": "HUAWEI Kirin 980",
	"quickShow": 1
}]

响应数据:

{
	"msg": "success",
	"code": 0
}

1、在AttrController中创建updateSpuAttr方法

@PostMapping("/update/{spuId}")
public R updateSpuAttr(@PathVariable("spuId") Long spuId,
                       @RequestBody List<ProductAttrValueEntity> entityList) {
    productAttrValueService.updateSpuAttr(spuId, entityList);
    return R.ok();
}

2、实现updateSpuAttr方法

雷神的方法是先删除全部再插入,会造成 id 变化。下面的方法就直接循环修改表了

@Override
public void updateSpuAttr(Long spuId, List<ProductAttrValueEntity> entityList) {
    entityList.forEach(item -> {
        productAttrValueDao.update(item, new UpdateWrapper<ProductAttrValueEntity>().eq("spu_id", spuId).eq("attr_id", item.getAttrId()));
    });
}

3、重启服务测试

先到规格参数页面里多添加几个可选值

image-20220429183502188

修改测试

image-20220429183424501

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值