mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-08-13 09:44:08 +08:00
接入汇付企业开户失败待办
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
package com.jsowell.pile.constant;
|
||||
|
||||
/**
|
||||
* 汇付账户待办常量。
|
||||
*/
|
||||
public final class AdapayAccountTodoConstants {
|
||||
public static final String TASK_TYPE_CORP_MEMBER_FAILED = "ADAPAY_CORP_MEMBER_FAILED";
|
||||
public static final String BUSINESS_TYPE = "ADAPAY_CORP_MEMBER_ACCOUNT";
|
||||
public static final String ROUTE_NAME = "accountUserInfo";
|
||||
|
||||
private AdapayAccountTodoConstants() {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||
|
||||
/**
|
||||
* 汇付账户状态与待办联动服务。
|
||||
*/
|
||||
public interface AdapayAccountTodoService {
|
||||
void handleCorpMemberFailed(AdapayMemberAccount account);
|
||||
|
||||
void handleCorpMemberSucceeded(AdapayMemberAccount account);
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.jsowell.common.exception.ServiceException;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.pile.constant.AdapayAccountTodoConstants;
|
||||
import com.jsowell.pile.domain.AdapayMemberAccount;
|
||||
import com.jsowell.pile.domain.PileMerchantInfo;
|
||||
import com.jsowell.pile.service.AdapayAccountTodoService;
|
||||
import com.jsowell.pile.service.AdapayMemberAccountService;
|
||||
import com.jsowell.pile.service.PileMerchantInfoService;
|
||||
import com.jsowell.system.constant.TodoTaskConstants;
|
||||
import com.jsowell.system.domain.dto.TodoTaskCreateCommand;
|
||||
import com.jsowell.system.service.TodoTaskAssigneeService;
|
||||
import com.jsowell.system.service.TodoTaskService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 汇付账户状态与待办联动服务实现。
|
||||
*/
|
||||
@Service
|
||||
public class AdapayAccountTodoServiceImpl implements AdapayAccountTodoService {
|
||||
private static final Logger log = LoggerFactory.getLogger(AdapayAccountTodoServiceImpl.class);
|
||||
private static final String CALLBACK_OPERATOR = "adapay-callback";
|
||||
|
||||
@Autowired
|
||||
private AdapayMemberAccountService adapayMemberAccountService;
|
||||
|
||||
@Autowired
|
||||
private PileMerchantInfoService pileMerchantInfoService;
|
||||
|
||||
@Autowired
|
||||
private TodoTaskAssigneeService todoTaskAssigneeService;
|
||||
|
||||
@Autowired
|
||||
private TodoTaskService todoTaskService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void handleCorpMemberFailed(AdapayMemberAccount account) {
|
||||
validateAccount(account);
|
||||
adapayMemberAccountService.updateAdapayMemberAccount(account);
|
||||
createCorpMemberFailedTodos(account);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void handleCorpMemberSucceeded(AdapayMemberAccount account) {
|
||||
validateAccount(account);
|
||||
adapayMemberAccountService.updateAdapayMemberAccount(account);
|
||||
if (StringUtils.isNotBlank(account.getMerchantId())) {
|
||||
todoTaskService.completeByBusinessAsSystem(AdapayAccountTodoConstants.BUSINESS_TYPE,
|
||||
account.getMerchantId(), null, CALLBACK_OPERATOR);
|
||||
}
|
||||
}
|
||||
|
||||
private void createCorpMemberFailedTodos(AdapayMemberAccount account) {
|
||||
if (StringUtils.isBlank(account.getMerchantId())) {
|
||||
log.warn("汇付企业开户失败记录缺少运营商,无法创建待办,accountId={}, adapayMemberId={}",
|
||||
account.getId(), account.getAdapayMemberId());
|
||||
return;
|
||||
}
|
||||
PileMerchantInfo merchantInfo;
|
||||
try {
|
||||
merchantInfo = pileMerchantInfoService.selectPileMerchantInfoById(
|
||||
Long.parseLong(account.getMerchantId()));
|
||||
} catch (NumberFormatException exception) {
|
||||
log.warn("汇付企业开户失败记录运营商 ID 非法,无法创建待办,merchantId={}",
|
||||
account.getMerchantId());
|
||||
return;
|
||||
}
|
||||
if (merchantInfo == null || StringUtils.isBlank(merchantInfo.getDeptId())) {
|
||||
log.warn("汇付企业开户失败记录未找到运营商部门,无法创建待办,merchantId={}",
|
||||
account.getMerchantId());
|
||||
return;
|
||||
}
|
||||
|
||||
Long deptId;
|
||||
try {
|
||||
deptId = Long.parseLong(merchantInfo.getDeptId());
|
||||
} catch (NumberFormatException exception) {
|
||||
log.warn("汇付企业开户失败记录运营商部门 ID 非法,无法创建待办,merchantId={}, deptId={}",
|
||||
account.getMerchantId(), merchantInfo.getDeptId());
|
||||
return;
|
||||
}
|
||||
List<Long> assigneeUserIds = todoTaskAssigneeService.findActiveOperatorAdminUserIdsByDeptTree(deptId);
|
||||
if (CollectionUtils.isEmpty(assigneeUserIds)) {
|
||||
log.warn("汇付企业开户失败记录运营商部门下没有正常管理员,无法创建待办,merchantId={}, deptId={}",
|
||||
account.getMerchantId(), deptId);
|
||||
return;
|
||||
}
|
||||
|
||||
String summary = buildSummary(account.getAuditDesc());
|
||||
String routeParams = buildRouteParams(account.getMerchantId());
|
||||
for (Long assigneeUserId : assigneeUserIds) {
|
||||
String idempotentKey = AdapayAccountTodoConstants.TASK_TYPE_CORP_MEMBER_FAILED + ":"
|
||||
+ AdapayAccountTodoConstants.BUSINESS_TYPE + ":" + account.getMerchantId() + ":"
|
||||
+ assigneeUserId;
|
||||
todoTaskService.createTask(TodoTaskCreateCommand.builder()
|
||||
.taskType(AdapayAccountTodoConstants.TASK_TYPE_CORP_MEMBER_FAILED)
|
||||
.title("汇付企业开户失败")
|
||||
.summary(summary)
|
||||
.content(truncate(account.getAuditDesc(), 20000))
|
||||
.businessType(AdapayAccountTodoConstants.BUSINESS_TYPE)
|
||||
.businessId(account.getMerchantId())
|
||||
.routeName(AdapayAccountTodoConstants.ROUTE_NAME)
|
||||
.routeParams(routeParams)
|
||||
.assigneeUserId(assigneeUserId)
|
||||
.assigneeMerchantId(account.getMerchantId())
|
||||
.priority(TodoTaskConstants.PRIORITY_IMPORTANT)
|
||||
.idempotentKey(idempotentKey)
|
||||
.createBy(CALLBACK_OPERATOR)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
private String buildSummary(String auditDesc) {
|
||||
String summary = "汇付企业开户失败,请补充或修正开户资料";
|
||||
if (StringUtils.isNotBlank(auditDesc)) {
|
||||
summary += ",原因:" + auditDesc.trim();
|
||||
}
|
||||
return summary.length() <= 500 ? summary : summary.substring(0, 500);
|
||||
}
|
||||
|
||||
private String truncate(String value, int maxLength) {
|
||||
if (value == null || value.length() <= maxLength) {
|
||||
return value;
|
||||
}
|
||||
return value.substring(0, maxLength);
|
||||
}
|
||||
|
||||
private String buildRouteParams(String merchantId) {
|
||||
Map<String, Object> params = new HashMap<>(1);
|
||||
params.put("id", merchantId);
|
||||
Map<String, Object> routeParams = new HashMap<>(1);
|
||||
routeParams.put("params", params);
|
||||
return JSON.toJSONString(routeParams);
|
||||
}
|
||||
|
||||
private void validateAccount(AdapayMemberAccount account) {
|
||||
if (account == null || account.getId() == null) {
|
||||
throw new ServiceException("汇付账户记录不能为空");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user