10-11-安装包上传,事务分离
This commit is contained in:
		| @ -41,40 +41,87 @@ public class SysPackageController { | |||||||
|     /** |     /** | ||||||
|      * 上传最新安装包及版本 |      * 上传最新安装包及版本 | ||||||
|      */ |      */ | ||||||
|     @Transactional |  | ||||||
|     @GetMapping("/uploadNewVersion") |     @GetMapping("/uploadNewVersion") | ||||||
|     public R<SysPackage> uploadNewVersion(String version, String type, MultipartFile file) { |     public R<SysPackage> uploadNewVersion(String version, String type, MultipartFile file) { | ||||||
|         String originalFileName = "apk/package/app-release.apk"; |         String originalFileName = "apk/package/app-release.apk"; | ||||||
|  |  | ||||||
|         //覆盖失败,先删除文件 |         // 先查询最新记录 | ||||||
|         LambdaQueryWrapper<SysPackage> lambdaQueryWrapper =new LambdaQueryWrapper<>(); |         LambdaQueryWrapper<SysPackage> lambdaQueryWrapper = new LambdaQueryWrapper<>(); | ||||||
|         lambdaQueryWrapper.orderByDesc(SysPackage::getCreateTime); |         lambdaQueryWrapper.orderByDesc(SysPackage::getCreateTime); | ||||||
|         List<SysPackage> list = sysPackageService.list(lambdaQueryWrapper); |         List<SysPackage> list = sysPackageService.list(lambdaQueryWrapper); | ||||||
|         if (list != null && !list.isEmpty()){ |  | ||||||
|             SysPackage first = list.getFirst(); |         // 分离事务:先处理文件上传 | ||||||
|  |         SysOssVo upload = sysOssService.upload(file, originalFileName); | ||||||
|  |         if (upload == null) { | ||||||
|  |             return R.fail("上传失败"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 分离事务:再处理数据库操作 | ||||||
|  |         return handleDatabaseOperations(version, type, upload, list); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Transactional | ||||||
|  |     public R<SysPackage> handleDatabaseOperations(String version, String type, SysOssVo upload, List<SysPackage> existingPackages) { | ||||||
|  |         try { | ||||||
|  |             // 先删除旧文件记录 | ||||||
|  |             if (existingPackages != null && !existingPackages.isEmpty()) { | ||||||
|  |                 SysPackage first = existingPackages.getFirst(); | ||||||
|                 Boolean b = sysOssService.deleteWithValidByIds(List.of(first.getFileId()), false); |                 Boolean b = sysOssService.deleteWithValidByIds(List.of(first.getFileId()), false); | ||||||
|             if (!b){ |                 if (!b) { | ||||||
|                     log.error("通过IDS删除文件失败"); |                     log.error("通过IDS删除文件失败"); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|         SysOssVo upload = sysOssService.upload(file, originalFileName); |             // 保存新记录 | ||||||
|         if (upload == null){ |  | ||||||
|             return R.fail("上传失败"); |  | ||||||
|         } |  | ||||||
|             SysPackage sysPackage = new SysPackage(); |             SysPackage sysPackage = new SysPackage(); | ||||||
|         sysPackage.setVersion( version); |             sysPackage.setVersion(version); | ||||||
|             sysPackage.setFileId(upload.getOssId()); |             sysPackage.setFileId(upload.getOssId()); | ||||||
|             sysPackage.setFileUrl(upload.getUrl()); |             sysPackage.setFileUrl(upload.getUrl()); | ||||||
|             sysPackage.setType(type); |             sysPackage.setType(type); | ||||||
|  |  | ||||||
|             boolean save = sysPackageService.save(sysPackage); |             boolean save = sysPackageService.save(sysPackage); | ||||||
|         if (!save){ |             if (!save) { | ||||||
|                 return R.fail("保存失败"); |                 return R.fail("保存失败"); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             return R.ok(sysPackage); |             return R.ok(sysPackage); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             log.error("数据库操作失败", e); | ||||||
|  |             throw e; // 重新抛出异常触发事务回滚 | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  | //    public R<SysPackage> uploadNewVersion(String version, String type, MultipartFile file) { | ||||||
|  | //        String originalFileName = "apk/package/app-release.apk"; | ||||||
|  | // | ||||||
|  | //        //覆盖失败,先删除文件 | ||||||
|  | //        LambdaQueryWrapper<SysPackage> lambdaQueryWrapper =new LambdaQueryWrapper<>(); | ||||||
|  | //        lambdaQueryWrapper.orderByDesc(SysPackage::getCreateTime); | ||||||
|  | //        List<SysPackage> list = sysPackageService.list(lambdaQueryWrapper); | ||||||
|  | //        if (list != null && !list.isEmpty()){ | ||||||
|  | //            SysPackage first = list.getFirst(); | ||||||
|  | //            Boolean b = sysOssService.deleteWithValidByIds(List.of(first.getFileId()), false); | ||||||
|  | //            if (!b){ | ||||||
|  | //                log.error("通过IDS删除文件失败"); | ||||||
|  | //            } | ||||||
|  | //        } | ||||||
|  | // | ||||||
|  | //        SysOssVo upload = sysOssService.upload(file, originalFileName); | ||||||
|  | //        if (upload == null){ | ||||||
|  | //            return R.fail("上传失败"); | ||||||
|  | //        } | ||||||
|  | //        SysPackage sysPackage = new SysPackage(); | ||||||
|  | //        sysPackage.setVersion( version); | ||||||
|  | //        sysPackage.setFileId(upload.getOssId()); | ||||||
|  | //        sysPackage.setFileUrl(upload.getUrl()); | ||||||
|  | //        sysPackage.setType(type); | ||||||
|  | // | ||||||
|  | //        boolean save = sysPackageService.save(sysPackage); | ||||||
|  | //        if (!save){ | ||||||
|  | //            return R.fail("保存失败"); | ||||||
|  | //        } | ||||||
|  | // | ||||||
|  | //        return R.ok(sysPackage); | ||||||
|  | //    } | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user