3.商品审核与上下架
3.1 需求分析
商品新增后,审核状态为0(未审核),默认为下架状态。审核商品,需要校验是否是被删除的商品,如果未删除则修改审核状态为1,并自动上架
下架商品,需要校验是否是被删除的商品,如果未删除则修改上架状态为0
上架商品,需要审核状态为1,如果为1,则更改上下架状态为1
3.2 实现思路
(1)按照ID查询SPU信息
(2)判断修改审核、上架下架状态
(3)保存SPU
3.3 代码实现
3.3.1 商品审核
需要校验是否是被删除的商品,如果未删除则修改审核状态为1,并自动上架
(1)SpuService新增方法
/**
* 审核
* @param id
*/
public void audit(String id);
(2)SpuServiceImpl实现方法
@Override
@Transactional
public void audit(String id) {
//查询spu对象
Spu spu = spuMapper.selectByPrimaryKey(id);
if (spu == null){
throw new RuntimeException("当前商品不存在");
}
//判断当前spu是否处于删除状态
if ("1".equals(spu.getIsDelete())){
throw new RuntimeException("当前商品处于删除状态");
}
//不处于删除状态,修改审核状态为1,上下架状态为1
spu.setStatus("1");
spu.setIsMarketable("1");
//执行修改操作
spuMapper.updateByPrimaryKeySelective(spu);
}
(2)SpuController新增方法
@PutMapping("/audit/{id}")
public Result audit(@PathVariable("id") String id){
spuService.audit(id);
return new Result(true,StatusCode.OK,"商品审核成功");
}
3.3.2 下架商品
校验是否是被删除的商品,如果未删除则修改上架状态为0
(1)SpuService新增方法
/**
* 下架商品
* @param id
*/
public void pull(String id);
(2)SpuServiceImpl实现方法
//商品下架
@Override
@Transactional
public void pull(String id) {
//查询spu
Spu spu = spuMapper.selectByPrimaryKey(id);
if (spu == null){
throw new RuntimeException("当前商品不存在");
}
//判断当前商品是否处于删除状态
if ("1".equals(spu.getIsDelete())){
throw new RuntimeException("当前商品处于删除状态");
}
//商品处于未删除状态的话,则修改上下架状态为已下架(0)
spu.setIsMarketable("0");
spuMapper.updateByPrimaryKeySelective(spu);
}
(2)SpuController新增方法
@PutMapping("/pull/{id}")
public Result pull(@PathVariable("id") String id){
spuService.pull(id);
return new Result(true,StatusCode.OK,"商品下架成功");
}
3.3.3 上架商品
必须是通过审核的商品才能上架
(1)SpuService新增方法
/**
* 上架商品
* @param id
*/
public void put(String id);
(2)SpuServiceImpl 实现此方法
@Override
@Transactional
public void put(String id) {
Spu spu = spuMapper.selectByPrimaryKey(id);
if (spu == null){
throw new RuntimeException("当前商品不存在");
}
//商品审核状态必须为已审核(1)
if (!spu.getStatus().equals("1")){
throw new RuntimeException("当前商品未审核");
}
spu.setIsMarketable("1");
spuMapper.updateByPrimaryKeySelective(spu);
}
(3)SpuController新增方法
@PutMapping("/put/{id}")
public Result put(@PathVariable("id") String id){
spuService.put(id);
return new Result(true,StatusCode.OK,"商品上架成功");
}