summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangshuai <[email protected]>2024-08-07 15:50:02 +0800
committerzhangshuai <[email protected]>2024-08-07 15:50:02 +0800
commitf7caf6262cc42e902d4c1894e6a840cf2149a98b (patch)
treed604e9894f8f5c2b1eba682f78720d7440b8b759
parent8932734ef6352cd870b665b3d675e98a9937c00d (diff)
feat: ASW-29 Application 恢复接口开发
-rw-r--r--src/main/java/net/geedge/asw/module/app/controller/ApplicationController.java7
-rw-r--r--src/main/java/net/geedge/asw/module/app/service/IApplicationService.java2
-rw-r--r--src/main/java/net/geedge/asw/module/app/service/impl/ApplicationServiceImpl.java35
-rw-r--r--src/main/resources/db/migration/R__AZ_sys_menu.sql1
-rw-r--r--src/main/resources/db/migration/R__AZ_sys_role_menu.sql1
5 files changed, 44 insertions, 2 deletions
diff --git a/src/main/java/net/geedge/asw/module/app/controller/ApplicationController.java b/src/main/java/net/geedge/asw/module/app/controller/ApplicationController.java
index 4c65eee..d265c2c 100644
--- a/src/main/java/net/geedge/asw/module/app/controller/ApplicationController.java
+++ b/src/main/java/net/geedge/asw/module/app/controller/ApplicationController.java
@@ -112,4 +112,11 @@ public class ApplicationController {
Page page = applicationService.compare(id1, id2);
return R.ok().putData("record", page);
}
+
+
+ @PostMapping("/restore/{id}/{version}")
+ public R restore(@PathVariable("id") String id, @PathVariable("version") String version) {
+ applicationService.restore(id, version);
+ return R.ok();
+ }
}
diff --git a/src/main/java/net/geedge/asw/module/app/service/IApplicationService.java b/src/main/java/net/geedge/asw/module/app/service/IApplicationService.java
index 985fcf6..ad3ac43 100644
--- a/src/main/java/net/geedge/asw/module/app/service/IApplicationService.java
+++ b/src/main/java/net/geedge/asw/module/app/service/IApplicationService.java
@@ -22,4 +22,6 @@ public interface IApplicationService extends IService<ApplicationEntity>{
Page compare(String id1, String id2);
List<ApplicationEntity> queryLogList(String id);
+
+ void restore(String id, String version);
}
diff --git a/src/main/java/net/geedge/asw/module/app/service/impl/ApplicationServiceImpl.java b/src/main/java/net/geedge/asw/module/app/service/impl/ApplicationServiceImpl.java
index f72f3e1..32f3587 100644
--- a/src/main/java/net/geedge/asw/module/app/service/impl/ApplicationServiceImpl.java
+++ b/src/main/java/net/geedge/asw/module/app/service/impl/ApplicationServiceImpl.java
@@ -14,6 +14,7 @@ import net.geedge.asw.module.app.service.IApplicationLogService;
import net.geedge.asw.module.app.service.IApplicationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
@@ -40,6 +41,7 @@ public class ApplicationServiceImpl extends ServiceImpl<ApplicationDao, Applicat
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public ApplicationEntity saveApplication(ApplicationEntity entity) {
ApplicationEntity one = this.getOne(new LambdaQueryWrapper<ApplicationEntity>()
.eq(ApplicationEntity::getWorkspaceId, entity.getWorkspaceId())
@@ -59,6 +61,7 @@ public class ApplicationServiceImpl extends ServiceImpl<ApplicationDao, Applicat
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public ApplicationEntity updateApplication(ApplicationEntity entity) {
ApplicationEntity one = this.getOne(new LambdaQueryWrapper<ApplicationEntity>()
.eq(ApplicationEntity::getWorkspaceId, entity.getWorkspaceId())
@@ -75,13 +78,21 @@ public class ApplicationServiceImpl extends ServiceImpl<ApplicationDao, Applicat
this.updateById(entity);
// save log
+ this.saveApplcationToLog(one);
+ return entity;
+ }
+
+ private void saveApplcationToLog(ApplicationEntity one) {
ApplicationLogEntity applicationLogEntity = T.BeanUtil.toBean(one, ApplicationLogEntity.class);
+ applicationLogEntity.setUpdateTimestamp(System.currentTimeMillis());
+ applicationLogEntity.setUpdateUserId(StpUtil.getLoginIdAsString());
+ applicationLogEntity.setCreateTimestamp(System.currentTimeMillis());
+ applicationLogEntity.setCreateUserId(StpUtil.getLoginIdAsString());
applicationLogService.save(applicationLogEntity);
-
- return entity;
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void removeApplication(List<String> ids) {
// remove
this.removeBatchByIds(ids);
@@ -102,4 +113,24 @@ public class ApplicationServiceImpl extends ServiceImpl<ApplicationDao, Applicat
page.setRecords(packageList);
return page;
}
+
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void restore(String id, String version) {
+ // save current to log
+ ApplicationEntity curApplication = this.getById(id);
+ this.saveApplcationToLog(curApplication);
+ // restore
+ ApplicationLogEntity oldApplication = applicationLogService.getOne(new LambdaQueryWrapper<ApplicationLogEntity>()
+ .eq(ApplicationLogEntity::getId, id)
+ .eq(ApplicationLogEntity::getOpVersion, version));
+
+ oldApplication.setUpdateTimestamp(System.currentTimeMillis());
+ oldApplication.setUpdateUserId(StpUtil.getLoginIdAsString());
+ oldApplication.setOpVersion(curApplication.getOpVersion() + 1);
+
+ ApplicationEntity application = T.BeanUtil.toBean(oldApplication, ApplicationEntity.class);
+ this.updateById(application);
+ }
}
diff --git a/src/main/resources/db/migration/R__AZ_sys_menu.sql b/src/main/resources/db/migration/R__AZ_sys_menu.sql
index d59d889..dfd5879 100644
--- a/src/main/resources/db/migration/R__AZ_sys_menu.sql
+++ b/src/main/resources/db/migration/R__AZ_sys_menu.sql
@@ -14,6 +14,7 @@ INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2004', 'application_delete', 'buttons.delete', '2000', 'button', '', '', '', 4, 1722478572000, 1);
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2005', 'application_history', 'buttons.history', '2000', 'button', '', '', '', 5, 1722478572000, 1);
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2006', 'application_compare', 'buttons.compare', '2000', 'button', '', '', '', 6, 1722478572000, 1);
+INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('2007', 'application_restore', 'buttons.restore', '2000', 'button', '', '', '', 7, 1722478572000, 1);
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3000', 'pcaps', 'overall.pcaps', '0', 'menu', '', '/pcaps', 'asw-icon icon-Pcaps', 2, 1722478572000, 1);
INSERT INTO `sys_menu` (`id`, `name`, `i18n`, `pid`, `type`, `perms`, `route`, `icon`, `order`, `create_timestamp`, `state`) VALUES ('3001', 'pacp_view', 'buttons.view', '3000', 'button', '', '', '', 1, 1722478572000, 1);
diff --git a/src/main/resources/db/migration/R__AZ_sys_role_menu.sql b/src/main/resources/db/migration/R__AZ_sys_role_menu.sql
index 1b90857..3a241ff 100644
--- a/src/main/resources/db/migration/R__AZ_sys_role_menu.sql
+++ b/src/main/resources/db/migration/R__AZ_sys_role_menu.sql
@@ -14,6 +14,7 @@ INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2003');
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2004');
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2005');
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2006');
+INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '2007');
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3000');
INSERT INTO `sys_role_menu`(`role_id`, `menu_id`) VALUES ('admin', '3001');