REM:
1. 启动处置接口增加指定区域设备功能
This commit is contained in:
HuangXin 2020-10-30 15:46:44 +08:00
parent 09adf46ef3
commit 034881e4de
13 changed files with 72 additions and 45 deletions

View File

@ -120,6 +120,7 @@ public class DisposeTaskController {
DisposeTask task = DisposeTask.builder() DisposeTask task = DisposeTask.builder()
.deviceId(devId) .deviceId(devId)
.accountId(aId) .accountId(aId)
.areaCode(v.getAreaCode() == null ? -1 : v.getAreaCode())
.disposeCapacity(capType) .disposeCapacity(capType)
.disposeObject(Helper.ipAddressNormalize(v.getDisposeObject())) .disposeObject(Helper.ipAddressNormalize(v.getDisposeObject()))
.objectType(t) .objectType(t)
@ -172,6 +173,7 @@ public class DisposeTaskController {
// 构造处置任务参数 // 构造处置任务参数
DisposeTask task = DisposeTask.builder() DisposeTask task = DisposeTask.builder()
.deviceId(Long.parseLong(Optional.ofNullable(req.getId()).orElse("-1"))) .deviceId(Long.parseLong(Optional.ofNullable(req.getId()).orElse("-1")))
.areaCode(-1)
.accountId(userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization")) .accountId(userAccountService.getUserIdByAuthHead(Objects.requireNonNull(headers.get("Authorization"))
.get(0))) .get(0)))
.disposeCapacity(CommonEnumHandler.codeOf(DisposeCapacityType.class, .disposeCapacity(CommonEnumHandler.codeOf(DisposeCapacityType.class,
@ -248,6 +250,7 @@ public class DisposeTaskController {
DisposeTask task = DisposeTask.builder() DisposeTask task = DisposeTask.builder()
.deviceId(devId) .deviceId(devId)
.accountId(aId) .accountId(aId)
.areaCode(-1)
.disposeCapacity(capType) .disposeCapacity(capType)
.disposeObject(Helper.ipAddressNormalize(ip)) .disposeObject(Helper.ipAddressNormalize(ip))
.objectType(DisposeObjectType.IP) .objectType(DisposeObjectType.IP)

View File

@ -19,11 +19,12 @@ public interface DisposeTaskManager {
* Gets dispose task. * Gets dispose task.
* *
* @param deviceId the device id * @param deviceId the device id
* @param areaCode the area code
* @param disposeIp the dispose ip * @param disposeIp the dispose ip
* @param capType the cap type * @param capType the cap type
* @return the dispose task * @return the dispose task
*/ */
DisposeTask getDisposeTask(Long deviceId, String disposeIp, DisposeCapacityType capType); DisposeTask getDisposeTask(Long deviceId, Integer areaCode, String disposeIp, DisposeCapacityType capType);
/** /**
* Add dispose task error code. * Add dispose task error code.
@ -65,9 +66,9 @@ public interface DisposeTaskManager {
DisposeTask getDisposeTaskById(Long taskId); DisposeTask getDisposeTaskById(Long taskId);
/** /**
* Gets dispose task by id. * Gets dispose tasks.
* *
* @return the dispose task list * @return the dispose tasks
*/ */
List<DisposeTask> getDisposeTasks(); List<DisposeTask> getDisposeTasks();

View File

@ -34,13 +34,14 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
* Gets dispose task. * Gets dispose task.
* *
* @param deviceId the device id * @param deviceId the device id
* @param areaCode the area code
* @param disposeIp the dispose ip * @param disposeIp the dispose ip
* @param capType the cap type * @param capType the cap type
* @return the dispose task * @return the dispose task
*/ */
@Override @Override
public DisposeTask getDisposeTask(Long deviceId, String disposeIp, DisposeCapacityType capType) { public DisposeTask getDisposeTask(Long deviceId, Integer areaCode, String disposeIp, DisposeCapacityType capType) {
return disposeTaskMapper.getRunningTask(deviceId, capType, disposeIp); return disposeTaskMapper.getRunningTask(deviceId, areaCode, capType, disposeIp);
} }
/** /**
@ -102,9 +103,9 @@ public class DisposeTaskManagerImpl implements DisposeTaskManager {
} }
/** /**
* Gets dispose task by id. * Gets dispose tasks.
* *
* @return the dispose task list * @return the dispose tasks
*/ */
@Override @Override
public List<DisposeTask> getDisposeTasks() { public List<DisposeTask> getDisposeTasks() {

View File

@ -86,6 +86,7 @@ public interface DisposeTaskMapper {
* @return the running task * @return the running task
*/ */
DisposeTask getRunningTask(@Param("deviceId") Long deviceId, DisposeTask getRunningTask(@Param("deviceId") Long deviceId,
@Param("areaCode") Integer areaCode,
@Param("capType") DisposeCapacityType capType, @Param("capType") DisposeCapacityType capType,
@Param("disposeObject") String disposeObject); @Param("disposeObject") String disposeObject);

View File

@ -38,4 +38,9 @@ public class DisposeObject {
@NotNull(message = "objectType 处置类型不能为空", groups = ValidGroups.TaskStartReqValid.class) @NotNull(message = "objectType 处置类型不能为空", groups = ValidGroups.TaskStartReqValid.class)
@ValidBaseEnum(enumClass = DisposeObjectType.class, groups = ValidGroups.TaskStartReqValid.class) @ValidBaseEnum(enumClass = DisposeObjectType.class, groups = ValidGroups.TaskStartReqValid.class)
private Integer objectType; private Integer objectType;
/**
* The Area code.
*/
private Integer areaCode;
} }

View File

@ -52,6 +52,10 @@ public class DisposeTask implements Serializable {
* The Account id. * The Account id.
*/ */
private Long accountId; private Long accountId;
/**
* The Area code.
*/
private Integer areaCode;
/** /**
* The Dispose capacity. * The Dispose capacity.
*/ */

View File

@ -531,9 +531,12 @@ public class DeviceTaskManagerServiceImpl implements DeviceTaskManagerService {
disposeAbilityRouterService.getAllAbilityDevices().stream() disposeAbilityRouterService.getAllAbilityDevices().stream()
// 判断是否是当前设备的处置任务 // 判断是否是当前设备的处置任务
.filter(f -> v.getDeviceId() == -1 || f.getDev().getId().equals(v.getDeviceId())) .filter(f -> v.getDeviceId() == -1 || f.getDev().getId().equals(v.getDeviceId()))
// 判断是否是当前区域处置
.filter(f -> v.getAreaCode() == -1 || f.getDev().getAreaCode().equals(v.getAreaCode()))
// 当前设备是否支持该处置能力 // 当前设备是否支持该处置能力
.filter(c -> c.getDev().getDevCapacity().stream().anyMatch(m -> m.getCapacityType() == v .filter(c -> c.getDev().getDevCapacity().stream().anyMatch(m -> m.getCapacityType() == v
.getDisposeCapacity())) .getDisposeCapacity()))
// 当前设备是否支持处置该IP
.filter(c -> c.getDb().isCarryProtectIp(v.getDisposeObject())) .filter(c -> c.getDb().isCarryProtectIp(v.getDisposeObject()))
.forEach(d -> { .forEach(d -> {
log.info("Add dispose task for device: {}", d.getDev()); log.info("Add dispose task for device: {}", d.getDev());

View File

@ -40,7 +40,7 @@ public class DisposeTaskServiceImpl implements DisposeTaskService {
*/ */
@Override @Override
public MulReturnType<ErrorCode, DisposeTask> createTask(DisposeTask task) { public MulReturnType<ErrorCode, DisposeTask> createTask(DisposeTask task) {
DisposeTask exitTask = disposeTaskManager.getDisposeTask(task.getDeviceId(), DisposeTask exitTask = disposeTaskManager.getDisposeTask(task.getDeviceId(), task.getAreaCode(),
task.getDisposeObject(), task.getDisposeCapacity()); task.getDisposeObject(), task.getDisposeCapacity());
if (exitTask != null) { if (exitTask != null) {

View File

@ -107,6 +107,7 @@ CREATE TABLE `dispose_task`
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符', `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '处置任务唯一标识符',
`deviceId` int(10) NOT NULL COMMENT '处置设备唯一标识符', `deviceId` int(10) NOT NULL COMMENT '处置设备唯一标识符',
`accountId` int(10) UNSIGNED NOT NULL COMMENT '用户唯一标识符', `accountId` int(10) UNSIGNED NOT NULL COMMENT '用户唯一标识符',
`areaCode` int(11) NOT NULL DEFAULT -1 COMMENT '设备物理位置区域码',
`disposeCapacity` int(11) NOT NULL COMMENT '处置能力类型0清洗 1高防 2黑洞 3检测', `disposeCapacity` int(11) NOT NULL COMMENT '处置能力类型0清洗 1高防 2黑洞 3检测',
`disposeObject` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '处置对象', `disposeObject` varchar(4096) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '处置对象',
`objectType` int(8) NOT NULL COMMENT '处置对象类型:\r\n0IP\r\n1域名 \r\n2URL', `objectType` int(8) NOT NULL COMMENT '处置对象类型:\r\n0IP\r\n1域名 \r\n2URL',

View File

@ -5,6 +5,7 @@
<id column="id" property="id"/> <id column="id" property="id"/>
<id column="deviceId" property="deviceId"/> <id column="deviceId" property="deviceId"/>
<id column="accountId" property="accountId"/> <id column="accountId" property="accountId"/>
<result column="areaCode" property="areaCode"/>
<result column="disposeCapacity" property="disposeCapacity" javaType="com.dispose.common.DisposeCapacityType"/> <result column="disposeCapacity" property="disposeCapacity" javaType="com.dispose.common.DisposeCapacityType"/>
<result column="disposeObject" property="disposeObject"/> <result column="disposeObject" property="disposeObject"/>
<result column="objectType" property="objectType" javaType="com.dispose.common.DisposeObjectType"/> <result column="objectType" property="objectType" javaType="com.dispose.common.DisposeObjectType"/>
@ -121,6 +122,9 @@
<if test="deviceId != -1"> <if test="deviceId != -1">
AND dt.deviceId = #{deviceId} AND dt.deviceId = #{deviceId}
</if> </if>
<if test="areaCode != -1">
AND dt.areaCode = #{areaCode}
</if>
</select> </select>
<select id="getNewTask" resultType="com.dispose.pojo.entity.DisposeTask"> <select id="getNewTask" resultType="com.dispose.pojo.entity.DisposeTask">

View File

@ -76,8 +76,8 @@ public class DisposeTaskManagerTest extends InitTestEnvironment {
@Test @Test
public void a1_disposeIpRunning() { public void a1_disposeIpRunning() {
disposeTaskMapper.selectAll().forEach(v -> { disposeTaskMapper.selectAll().forEach(v -> {
DisposeTask runningResult = disposeTaskManager.getDisposeTask(v.getDeviceId(), v.getDisposeObject(), DisposeTask runningResult = disposeTaskManager.getDisposeTask(v.getDeviceId(), v.getAreaCode(),
v.getDisposeCapacity()); v.getDisposeObject(), v.getDisposeCapacity());
log.info("runningResult-->{}", runningResult); log.info("runningResult-->{}", runningResult);

View File

@ -125,25 +125,25 @@ public class DisposeTaskMapperTest extends InitTestEnvironment {
*/ */
@Test @Test
public void a3_getRunningTask() throws JsonProcessingException { public void a3_getRunningTask() throws JsonProcessingException {
DisposeTask taskList = disposeTaskMapper.getRunningTask(-1L, DisposeTask taskList = disposeTaskMapper.getRunningTask(-1L, -1,
DisposeCapacityType.CLEANUP, DisposeCapacityType.CLEANUP,
"192.168.0.1"); "192.168.0.1");
log.info("Step1: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList)); log.info("Step1: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList));
taskList = disposeTaskMapper.getRunningTask(570L, taskList = disposeTaskMapper.getRunningTask(570L, -1,
DisposeCapacityType.CLEANUP, DisposeCapacityType.CLEANUP,
"192.168.0.1"); "192.168.0.1");
log.info("Step2: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList)); log.info("Step2: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList));
taskList = disposeTaskMapper.getRunningTask(-1L, taskList = disposeTaskMapper.getRunningTask(-1L, -1,
DisposeCapacityType.HIDEPEND, DisposeCapacityType.HIDEPEND,
"192.168.0.1"); "192.168.0.1");
log.info("Step3: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList)); log.info("Step3: {}", objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(taskList));
taskList = disposeTaskMapper.getRunningTask(-1L, taskList = disposeTaskMapper.getRunningTask(-1L, -1,
DisposeCapacityType.HIDEPEND, DisposeCapacityType.HIDEPEND,
"192.168.0.12"); "192.168.0.12");

View File

@ -114,7 +114,9 @@ public class DisposeTaskServiceTest extends InitTestEnvironment {
if (ret.getFirstParam() == ErrorCode.ERR_OK) { if (ret.getFirstParam() == ErrorCode.ERR_OK) {
Assert.assertNotNull(ret.getSecondParam()); Assert.assertNotNull(ret.getSecondParam());
Assert.assertEquals(String.valueOf(ret.getSecondParam().getDisposeCapacity()), String.valueOf(DisposeCapacityType.CLEANUP)); Assert.assertEquals(String.valueOf(ret.getSecondParam()
.getDisposeCapacity()),
String.valueOf(DisposeCapacityType.CLEANUP));
} else { } else {
Assert.assertNotEquals(ret.getFirstParam().getCode(), ErrorCode.ERR_OK.getCode()); Assert.assertNotEquals(ret.getFirstParam().getCode(), ErrorCode.ERR_OK.getCode());
} }
@ -125,8 +127,11 @@ public class DisposeTaskServiceTest extends InitTestEnvironment {
MulReturnType<ErrorCode, DisposeTask> result = disposeTaskService.createTask(v); MulReturnType<ErrorCode, DisposeTask> result = disposeTaskService.createTask(v);
Assert.assertEquals(result.getFirstParam().getCode(), ErrorCode.ERR_TASKRUNNING.getCode()); Assert.assertEquals(result.getFirstParam().getCode(), ErrorCode.ERR_TASKRUNNING.getCode());
Assert.assertEquals(result.getSecondParam().getId(), disposeTaskManager.getDisposeTask(newTask.getDeviceId(), Assert.assertEquals(result.getSecondParam().getId(),
newTask.getDisposeObject(), newTask.getDisposeCapacity()).getId()); disposeTaskManager.getDisposeTask(newTask.getDeviceId(), v.getAreaCode(),
newTask.getDisposeObject(),
newTask.getDisposeCapacity())
.getId());
}); });
} }
@ -162,7 +167,8 @@ public class DisposeTaskServiceTest extends InitTestEnvironment {
if (ret.getFirstParam() == ErrorCode.ERR_OK) { if (ret.getFirstParam() == ErrorCode.ERR_OK) {
Assert.assertNotNull(ret.getSecondParam()); Assert.assertNotNull(ret.getSecondParam());
Assert.assertEquals(disposeTaskManager.getDisposeTaskById(k.getId()).getCurrentStatus(), DisposeTaskStatus.TASK_CANCELED); Assert.assertEquals(disposeTaskManager.getDisposeTaskById(k.getId())
.getCurrentStatus(), DisposeTaskStatus.TASK_CANCELED);
} else { } else {
Assert.assertNull(ret.getSecondParam()); Assert.assertNull(ret.getSecondParam());
} }
@ -219,12 +225,10 @@ public class DisposeTaskServiceTest extends InitTestEnvironment {
if (ret.getFirstParam() == ErrorCode.ERR_TASKNOTRUNNING) { if (ret.getFirstParam() == ErrorCode.ERR_TASKNOTRUNNING) {
Assert.assertNotNull(task); Assert.assertNotNull(task);
Assert.assertFalse(task.getCurrentStatus().taskIsRunning()); Assert.assertFalse(task.getCurrentStatus().taskIsRunning());
} } else if (ret.getFirstParam() == ErrorCode.ERR_DATABASE) {
else if(ret.getFirstParam() == ErrorCode.ERR_DATABASE){
Assert.assertNull(task); Assert.assertNull(task);
Assert.assertFalse(disposeTaskManager.changeDisposeTaskStatus(taskId, DisposeTaskStatus.TASK_CANCELED)); Assert.assertFalse(disposeTaskManager.changeDisposeTaskStatus(taskId, DisposeTaskStatus.TASK_CANCELED));
} } else if (ret.getFirstParam() == ErrorCode.ERR_OK) {
else if(ret.getFirstParam() == ErrorCode.ERR_OK){
Assert.assertNotNull(task); Assert.assertNotNull(task);
Assert.assertEquals(task.getCurrentStatus(), DisposeTaskStatus.TASK_CANCELED); Assert.assertEquals(task.getCurrentStatus(), DisposeTaskStatus.TASK_CANCELED);
} }