Springcloud学习笔记35--文件存储信息删除和批量功能(delete方式提交,接收map形式的数据,使用@RequestBody 接收)

1.Controller

复制代码
@Api(tags="bs_file_store")
@RestController
@RequestMapping("/test/bsFileStore")
@Slf4j
public class BsFileStoreController extends JeecgController<BsFileStore, IBsFileStoreService> {
    @Autowired
    private IBsFileStoreService bsFileStoreService;

     /**
      *   通过id和storeType删除
      *
      * @param id
      * @return
      */
     @AutoLog(value = "bs_file_store-通过id和storeType删除")
     @ApiOperation(value="bs_file_store-通过id删除", notes="bs_file_store-通过id和storeType删除")
     @DeleteMapping(value = "/delete")
     public Result<?> delete(@RequestParam(name="id",required=true) String id,@RequestParam(name="storeType",required=true) String storeType) {
         return bsFileStoreService.deleteByIdAndType(id,storeType)?Result.OK("删除成功"):Result.error("删除失败");

     }

     /**
      *  批量删除
      *
      * @param map
      * @return
      */
     @AutoLog(value = "bs_file_store-批量删除")
     @ApiOperation(value="bs_file_store-批量删除", notes="bs_file_store-批量删除")
     @DeleteMapping(value = "/deleteBatch")
     public Result<?> deleteBatch(Map<String,String> map) {

         return bsFileStoreService.batchDeleteByIdAndType(map)?Result.OK("批量删除成功!"):Result.error("批量删除失败");
     }
}
复制代码

2.service

复制代码
@Service
@DS("multi-datasource1")
@Slf4j
public class BsFileStoreServiceImpl extends ServiceImpl<BsFileStoreMapper, BsFileStore> implements IBsFileStoreService {
    @Autowired
    private BsFileStoreMapper bsFileStoreMapper;

    @Autowired
    private PmOsInfoMapper pmOsInfoMapper;

    @Autowired
    private PmLocalstoreInfoMapper pmLocalstoreInfoMapper;

    @Autowired
    private PmOsClustersMapper pmOsClustersMapper;

    @Autowired
    private PmOsBucketMapper pmOsBucketMapper;

    private final String LOCAL=StoreTypeEnum.LOCAL.getCode(); //loacl=2
    private final String OSS=StoreTypeEnum.OSS.getCode();//oss=1

    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean deleteByIdAndType(String id,String type){
        if(OSS.equals(type)){
            //01 获取存储名称osName
            String osName=pmOsInfoMapper.selectById(id).getOsName();
            //02 桶删除(根据存储名称删除)
            LambdaQueryWrapper<PmOsBucket> bucketLambdaQueryWrapper=new LambdaQueryWrapper<>();
            bucketLambdaQueryWrapper.eq(PmOsBucket::getOsName,osName);
            pmOsBucketMapper.delete(bucketLambdaQueryWrapper);
            //03 对象存储平台关系表删除
            LambdaQueryWrapper<PmOsClusters> wrapper=new LambdaQueryWrapper<>();
            wrapper.eq(PmOsClusters::getOsName,osName);
            pmOsClustersMapper.delete(wrapper);
            //04 对象存储表删除
            pmOsInfoMapper.deleteById(id);

        }
        if(LOCAL.equals(type)){
            pmLocalstoreInfoMapper.deleteById(id);
        }
        return true;
    }

    @Override
    public boolean batchDeleteByIdAndType(Map<String, String> map) {
        try {
            for (Map.Entry<String, String> entry : map.entrySet()) {
                deleteByIdAndType(entry.getKey(),entry.getValue() );
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new JeecgBootException("批量删除失败");

        }

        return true;
    }
}
复制代码

3.postman模拟前端测试

http://127.0.0.1:7009/test/bsFileStore/deleteBatch

 数据库表删除前:

 数据库表删除后:

 

posted @   雨后观山色  阅读(629)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示