Loading

删除与还原商品

需求分析

商品列表中的删除商品功能,并非真正的删除(物理删除),而是采用逻辑删除将删除标记的字段设置为1.

在回收站中有还原商品的功能,将删除标记的字段设置为0

在回收站中有删除商品的功能,是真正的物理删除,将数据从数据库中删除掉。

实现思路

商品列表中的删除商品,执行逻辑删除,修改spu表is_delete字段为1

商品回收站中的还原商品,修改spu表is_delete字段为0

商品回收站中的删除商品,执行delete操作,进行物理删除

 代码实现

逻辑删除商品

修改SpuServiceImpl的delete方法

    /**
     * 删除
     * @param id
     */
    @Override
    public void delete(String id){
        Spu spu = spuMapper.selectByPrimaryKey(id);
        //检查是否下架的商品
        if(!spu.getIsMarketable().equals("0")){
            throw new RuntimeException("必须先下架再删除!");
        }
        spu.setIsDelete("1");//删除
        spu.setStatus("0");//未审核
        spuMapper.updateByPrimaryKeySelective(spu);
    }

还原被删除的商品

(1)SpuService新增方法

    /**
     * 恢复数据
     * @param id
     */
    public void restore(String id);

(2)SpuServiceImpl实现此方法

    /**
     * 恢复数据
     * @param id
     */
    @Override
    public void restore(String id) {
        Spu spu = spuMapper.selectByPrimaryKey(id);
        //检查是否删除的商品
        if(!spu.getIsDelete().equals("1")){
            throw new RuntimeException("此商品未删除!");
        }
        spu.setIsDelete("0");//未删除
        spu.setStatus("0");//未审核
        spuMapper.updateByPrimaryKeySelective(spu);
    } 

(3)SpuController新增方法

    /**
     * 恢复数据
     * @param id
     * @return
     */
    @PutMapping("/restore/{id}")
    public Result restore(@PathVariable String id){
        spuService.restore(id);
        return new Result();
    }

物理删除商品

判断必须逻辑删除商品才能物理删除

(1)SpuService 新增方法

    /**
     * 物理删除
     * @param id
     */
    public void realDelete(String id);

(2)SpuServiceImpl 实现方法

    @Override
    public void realDelete(String id) {
        Spu spu = spuMapper.selectByPrimaryKey(id);
        //检查是否删除的商品
        if(!spu.getIsDelete().equals("1")){
            throw new RuntimeException("此商品未删除!");
        }
        spuMapper.deleteByPrimaryKey(id);
        
    }

(3)SpuController新增方法

    /**
     * 物理删除
     * @param id
     * @return
     */
    @DeleteMapping("/realDelete/{id}")
    public Result realDelete(@PathVariable String id){
        spuService.realDelete(id);
        return new Result();
    }

 

posted @ 2021-08-03 09:43  1640808365  阅读(167)  评论(0编辑  收藏  举报