接入汇付企业开户失败待办

This commit is contained in:
jsowell
2026-07-22 16:12:40 +08:00
parent 7e27bada2d
commit e663a22303
10 changed files with 313 additions and 6 deletions

View File

@@ -121,6 +121,9 @@ public class OrderService {
@Autowired
private AdapayMemberAccountService adapayMemberAccountService;
@Autowired
private AdapayAccountTodoService adapayAccountTodoService;
@Autowired
private ClearingWithdrawInfoService clearingWithdrawInfoService;
@@ -1417,7 +1420,7 @@ public class OrderService {
}
adapayMemberAccount.setAuditState(auditState);
// 逻辑删除记录,并删除缓存
adapayMemberAccountService.updateAdapayMemberAccount(adapayMemberAccount);
adapayAccountTodoService.handleCorpMemberFailed(adapayMemberAccount);
if (StringUtils.isNotBlank(adapayMemberAccount.getMerchantId())) {
redisCache.deleteObject(CacheConstants.ADAPAY_MEMBER_ACCOUNT + adapayMemberAccount.getMerchantId());
}
@@ -1454,7 +1457,7 @@ public class OrderService {
adapayMemberAccount.setSettleAccountId(settleAccountId);
}
adapayMemberAccount.setDelFlag(DelFlagEnum.NORMAL.getValue());
adapayMemberAccountService.updateAdapayMemberAccount(adapayMemberAccount);
adapayAccountTodoService.handleCorpMemberSucceeded(adapayMemberAccount);
if (StringUtils.isNotBlank(adapayMemberAccount.getMerchantId())) {
redisCache.deleteObject(CacheConstants.ADAPAY_MEMBER_ACCOUNT + adapayMemberAccount.getMerchantId());
}

View File

@@ -219,4 +219,4 @@ sms:
todo:
operator-admin-role-id: 3
retention-days: 180
route-whitelist: invoiceDetail,financeDetail
route-whitelist: invoiceDetail,financeDetail,accountUserInfo

View File

@@ -0,0 +1,96 @@
package com.jsowell.pile.service;
import com.jsowell.common.constant.Constants;
import com.jsowell.pile.constant.AdapayAccountTodoConstants;
import com.jsowell.pile.domain.AdapayMemberAccount;
import com.jsowell.pile.domain.PileMerchantInfo;
import com.jsowell.pile.service.impl.AdapayAccountTodoServiceImpl;
import com.jsowell.system.domain.dto.TodoTaskCreateCommand;
import com.jsowell.system.service.TodoTaskAssigneeService;
import com.jsowell.system.service.TodoTaskService;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import java.lang.reflect.Field;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class AdapayAccountTodoServiceImplTest {
@Test
void failed_shouldUpdateAccountAndCreateAdminTodo() {
Dependencies dependencies = new Dependencies();
AdapayAccountTodoServiceImpl service = dependencies.createService();
AdapayMemberAccount account = account();
PileMerchantInfo merchantInfo = new PileMerchantInfo();
merchantInfo.setDeptId("200");
when(dependencies.merchantService.selectPileMerchantInfoById(100L)).thenReturn(merchantInfo);
when(dependencies.assigneeService.findActiveOperatorAdminUserIdsByDeptTree(200L))
.thenReturn(Collections.singletonList(8L));
account.setAuditDesc("证件资料不清晰");
service.handleCorpMemberFailed(account);
verify(dependencies.accountService).updateAdapayMemberAccount(account);
ArgumentCaptor<TodoTaskCreateCommand> captor = ArgumentCaptor.forClass(TodoTaskCreateCommand.class);
verify(dependencies.todoTaskService).createTask(captor.capture());
TodoTaskCreateCommand command = captor.getValue();
assertEquals(AdapayAccountTodoConstants.TASK_TYPE_CORP_MEMBER_FAILED, command.getTaskType());
assertEquals(AdapayAccountTodoConstants.BUSINESS_TYPE, command.getBusinessType());
assertEquals("100", command.getBusinessId());
assertEquals("accountUserInfo", command.getRouteName());
assertEquals(8L, command.getAssigneeUserId());
}
@Test
void succeeded_shouldUpdateAccountAndCompleteFailureTodosAsSystem() {
Dependencies dependencies = new Dependencies();
AdapayAccountTodoServiceImpl service = dependencies.createService();
AdapayMemberAccount account = account();
service.handleCorpMemberSucceeded(account);
verify(dependencies.accountService).updateAdapayMemberAccount(account);
verify(dependencies.todoTaskService).completeByBusinessAsSystem(
AdapayAccountTodoConstants.BUSINESS_TYPE, "100", null, "adapay-callback");
}
private static AdapayMemberAccount account() {
AdapayMemberAccount account = new AdapayMemberAccount();
account.setId(1);
account.setMerchantId("100");
account.setAdapayMemberId("member-100");
account.setStatus(Constants.ONE);
return account;
}
private static void setField(Object target, String fieldName, Object value) {
try {
Field field = AdapayAccountTodoServiceImpl.class.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(target, value);
} catch (Exception exception) {
throw new RuntimeException(exception);
}
}
private static class Dependencies {
private final AdapayMemberAccountService accountService = mock(AdapayMemberAccountService.class);
private final PileMerchantInfoService merchantService = mock(PileMerchantInfoService.class);
private final TodoTaskAssigneeService assigneeService = mock(TodoTaskAssigneeService.class);
private final TodoTaskService todoTaskService = mock(TodoTaskService.class);
private AdapayAccountTodoServiceImpl createService() {
AdapayAccountTodoServiceImpl service = new AdapayAccountTodoServiceImpl();
setField(service, "adapayMemberAccountService", accountService);
setField(service, "pileMerchantInfoService", merchantService);
setField(service, "todoTaskAssigneeService", assigneeService);
setField(service, "todoTaskService", todoTaskService);
return service;
}
}
}

View File

@@ -140,6 +140,19 @@ class TodoTaskServiceImplTest {
verify(mapper, never()).insertTodoTask(any(SysTodoTask.class));
}
@Test
void completeByBusinessAsSystem_shouldAllowNullCompletedBy() {
SysTodoTaskMapper mapper = mock(SysTodoTaskMapper.class);
TodoTaskServiceImpl service = newService(mapper);
when(mapper.completeTodoByBusiness("ADAPAY_CORP_MEMBER_ACCOUNT", "100", null,
null, "adapay-callback")).thenReturn(1);
assertEquals(1, service.completeByBusinessAsSystem("ADAPAY_CORP_MEMBER_ACCOUNT", "100",
null, "adapay-callback"));
verify(mapper).completeTodoByBusiness("ADAPAY_CORP_MEMBER_ACCOUNT", "100", null,
null, "adapay-callback");
}
private static TodoTaskCreateCommand createCommand() {
return TodoTaskCreateCommand.builder()
.taskType("INVOICE_REVIEW")