update - REQ-2324-增加恢复待办接口

This commit is contained in:
yangqicheng 2024-05-10 15:49:38 +08:00
parent fcb613d65a
commit 9a5dc1dfe5
4 changed files with 42 additions and 3 deletions

View File

@ -42,18 +42,19 @@ import cn.hutool.core.date.StopWatch;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @description
*
* @author cold_blade
* @date 2023/10/5
* @version 1.0
* @description
* @date 2023/10/5
*/
@Slf4j
@RestController
@ -194,6 +195,12 @@ public class PendingMessageNewController implements PendingMessageClient {
return CommonResponse.success(todoManager.completeBySubBizCode(param));
}
@Override
public CommonResponse<Boolean> rollbackTemplateCodeSubBizCode(@RequestBody @Valid CompletePendingBySubCodeRequest param) {
log.info("rollbackByTemplateCodeSubBizCode, request={}", JSON.toJSONString(param));
return CommonResponse.success(todoManager.rollbackBySubBizCode(param));
}
@Override
public CommonResponse<Boolean> revokeByTemplateCodeBizCode(CompletePendingMessageRequest param) {
log.info("revokeByTemplateCodeBizCode, request={}", JSON.toJSONString(param));

View File

@ -40,6 +40,11 @@ class TodoLogger {
logTodosUpdated(ctx, todos);
}
void logTodoRollback(TodoRequestContext ctx, List<Todo> todos) {
ctx.addLogContent("state", PendingMessageStateEnum.PROCESSING);
logTodosUpdated(ctx, todos);
}
void logTodoRevoked(TodoRequestContext ctx, List<Todo> todos) {
ctx.addLogContent("state", PendingMessageStateEnum.RETRACT);
logTodosUpdated(ctx, todos);

View File

@ -262,6 +262,24 @@ public class TodoManager {
return true;
}
/**
* 恢复待办
*/
@Transactional(rollbackFor = Exception.class)
public boolean rollbackBySubBizCode(CompletePendingBySubCodeRequest request) {
TodoRequestContext ctx = TodoRequestContext.create("rollbackBySubBizCode", request);
StateAdvanceResult advanceResult = advanceState(ctx, execAdvanceBuilder()
.eq(Todo::getTemplateCode, request.getTemplateCode())
.eq(Todo::getBizCode, request.getBizCode())
.eq(Todo::getSubBizCode, request.getSubBizCode())
.set(Todo::getState, PendingMessageStateEnum.HAS_BEEN_SENT));
if (!advanceResult.isAdvanced()) {
return false;
}
todoLogger.logTodoRollback(ctx, advanceResult.getAdvancedTodos());
return true;
}
// !! revoke
/**

View File

@ -228,6 +228,15 @@ public interface PendingMessageClient {
@PostMapping(value = "/pending-message/complete/by-sub-biz-code", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Boolean> completeByTemplateCodeSubBizCode(@RequestBody @Valid CompletePendingBySubCodeRequest param);
/**
* 通过模版编号和业务编号和子业务编号恢复代办
*
* @param param
* @return
*/
@PostMapping(value = "/pending-message/rollback/by-sub-biz-code", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<Boolean> rollbackTemplateCodeSubBizCode(@RequestBody @Valid CompletePendingBySubCodeRequest param);
/**
* 通过模版编号和业务编号撤销代办
*