10-11-安装包上传,事务分离
This commit is contained in:
@ -41,41 +41,88 @@ public class SysPackageController {
|
||||
/**
|
||||
* 上传最新安装包及版本
|
||||
*/
|
||||
@Transactional
|
||||
@GetMapping("/uploadNewVersion")
|
||||
public R<SysPackage> uploadNewVersion(String version, String type, MultipartFile file) {
|
||||
String originalFileName = "apk/package/app-release.apk";
|
||||
|
||||
//覆盖失败,先删除文件
|
||||
LambdaQueryWrapper<SysPackage> lambdaQueryWrapper =new LambdaQueryWrapper<>();
|
||||
// 先查询最新记录
|
||||
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){
|
||||
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);
|
||||
// 分离事务:再处理数据库操作
|
||||
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);
|
||||
if (!b) {
|
||||
log.error("通过IDS删除文件失败");
|
||||
}
|
||||
}
|
||||
|
||||
// 保存新记录
|
||||
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);
|
||||
} 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