fix:打标失败处理

This commit is contained in:
wangff
2025-11-18 18:44:10 +08:00
parent 9ae993c248
commit ac5a06bdad
8 changed files with 52 additions and 5 deletions

View File

@@ -289,4 +289,9 @@ public class RedisConstant {
public static final String HUO_MA_STORE_ID = "huo_ma_store_id"; public static final String HUO_MA_STORE_ID = "huo_ma_store_id";
public static final String HUO_MA_TOKEN= "huo_ma_token:{0}"; public static final String HUO_MA_TOKEN= "huo_ma_token:{0}";
/**
* 钱包开通失败原因 wallet_open_fail:storeId:1/2 1平安/2网商
*/
public static final String WALLET_OPEN_FAIL = "wallet_open_fail:{0}:{1}";
} }

View File

@@ -317,6 +317,7 @@ public enum ErrorCodeEnum {
WALLET_OPEN_ACCOUNT_FAIL(1620001,"钱包开通失败",null), WALLET_OPEN_ACCOUNT_FAIL(1620001,"钱包开通失败",null),
WALLET_WITH_DRAWER_FAIL(1620002,"提现失败",null), WALLET_WITH_DRAWER_FAIL(1620002,"提现失败",null),
WALLET_API_ERROR(1620003,"{0}",null),
; ;

View File

@@ -71,4 +71,7 @@ public class AccountInfoDTO {
@ApiModelProperty("工商类型 1.企业 2.个体工商户 3.小微商户(自然人)") @ApiModelProperty("工商类型 1.企业 2.个体工商户 3.小微商户(自然人)")
private Integer businessType; private Integer businessType;
@ApiModelProperty("钱包类型 1平安 2网商")
private Integer walletType;
} }

View File

@@ -17,5 +17,6 @@ public class AddTagCallbackNoticeRequest {
private Integer status; private Integer status;
@ApiModelProperty(name = "1.法人 2.非法人", required = true) @ApiModelProperty(name = "1.法人 2.非法人", required = true)
private Integer addTagType; private Integer addTagType;
@ApiModelProperty(name = "失败原因")
private String errorMsg;
} }

View File

@@ -18,4 +18,7 @@ public class StoreShopRequest {
@ApiModelProperty("门店id两者取一") @ApiModelProperty("门店id两者取一")
private String storeId; private String storeId;
@ApiModelProperty("钱包类型 1平安 2网商")
private Integer walletType;
} }

View File

@@ -36,4 +36,7 @@ public class AccountInfoVO {
@ApiModelProperty(value = "打标状态 0 未打标 1 已打标") @ApiModelProperty(value = "打标状态 0 未打标 1 已打标")
private Integer labelingStatus; private Integer labelingStatus;
@ApiModelProperty("账户升级失败原因")
private String failReason;
} }

View File

@@ -154,8 +154,13 @@ public class WalletHttpClientRest {
if (code != 200) { if (code != 200) {
String msg = (String) responseMap.get("msg"); String msg = (String) responseMap.get("msg");
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR, // TODO: 等营帐通确认错误码
"code: " + code + ", msg: " + msg); if (code == 400) {
throw new ServiceException(ErrorCodeEnum.WALLET_API_ERROR, msg);
} else {
throw new ServiceException(ErrorCodeEnum.THIRD_API_ERROR,
"code: " + code + ", msg: " + msg);
}
} }
} }
} catch (ServiceException e) { } catch (ServiceException e) {

View File

@@ -3,6 +3,7 @@ package com.cool.store.service.wallet.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants; import com.cool.store.constants.CommonConstants;
import com.cool.store.constants.RedisConstant;
import com.cool.store.dao.LineInfoDAO; import com.cool.store.dao.LineInfoDAO;
import com.cool.store.dao.RegionDao; import com.cool.store.dao.RegionDao;
import com.cool.store.dao.ShopInfoDAO; import com.cool.store.dao.ShopInfoDAO;
@@ -22,6 +23,7 @@ import com.cool.store.request.wallet.*;
import com.cool.store.service.wallet.WalletApiService; import com.cool.store.service.wallet.WalletApiService;
import com.cool.store.service.wallet.WalletService; import com.cool.store.service.wallet.WalletService;
import com.cool.store.utils.BeanUtil; import com.cool.store.utils.BeanUtil;
import com.cool.store.utils.RedisUtilPool;
import com.cool.store.utils.UUIDUtils; import com.cool.store.utils.UUIDUtils;
import com.cool.store.vo.wallet.*; import com.cool.store.vo.wallet.*;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@@ -32,8 +34,8 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.sql.Date; import java.sql.Date;
import java.text.MessageFormat;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -42,6 +44,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@@ -62,6 +65,7 @@ public class WalletServiceImpl implements WalletService {
private final RegionDao regionDao; private final RegionDao regionDao;
private final WalletPaymentOrderDAO walletPaymentOrderDAO; private final WalletPaymentOrderDAO walletPaymentOrderDAO;
private final LineInfoDAO lineInfoDAO; private final LineInfoDAO lineInfoDAO;
private final RedisUtilPool redisUtilPool;
private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); private final static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@@ -179,6 +183,11 @@ public class WalletServiceImpl implements WalletService {
AddTagDTO addTagDTO = walletApiService.addTag(tagRequest); AddTagDTO addTagDTO = walletApiService.addTag(tagRequest);
log.info("打标接口调用成功response:{}", JSONObject.toJSONString(addTagDTO)); log.info("打标接口调用成功response:{}", JSONObject.toJSONString(addTagDTO));
} }
} catch (ServiceException e) {
// 平安打标 签约人和法人一致时同步返回失败原因从msg中取
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, storeId, "1");
redisUtilPool.setString(key, e.getErrorCode().equals(1620003) ? e.getMessage() : "系统异常");
log.info("营业执照已上传,接口异常", e);
} catch (Exception e) { } catch (Exception e) {
log.error("营业执照已上传,打标失败", e); log.error("营业执照已上传,打标失败", e);
} }
@@ -195,6 +204,16 @@ public class WalletServiceImpl implements WalletService {
@Override @Override
public Boolean addTagCallback(AddTagCallbackNoticeRequest request) { public Boolean addTagCallback(AddTagCallbackNoticeRequest request) {
try {
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, request.getOutStoreId(), "1");
if (Integer.valueOf(2).equals(request.getStatus())) {
redisUtilPool.setString(key, request.getErrorMsg());
} else {
redisUtilPool.delKey(key);
}
} catch (Exception e) {
log.info("回调失败", e);
}
return Boolean.TRUE; return Boolean.TRUE;
} }
@@ -212,7 +231,14 @@ public class WalletServiceImpl implements WalletService {
public List<AccountInfoVO> getAccountList(StoreShopRequest request) { public List<AccountInfoVO> getAccountList(StoreShopRequest request) {
String storeId = getStoreId(request); String storeId = getStoreId(request);
List<AccountInfoDTO> accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId)); List<AccountInfoDTO> accountInfo = walletApiService.getAccountInfo(new OutStoreIdRequest(storeId));
return BeanUtil.toList(accountInfo, AccountInfoVO.class); return accountInfo.stream()
.filter(v -> Objects.isNull(request.getWalletType()) || request.getWalletType().equals(v.getWalletType()))
.map(v -> {
AccountInfoVO vo = BeanUtil.toBean(v, AccountInfoVO.class);
String key = MessageFormat.format(RedisConstant.WALLET_OPEN_FAIL, storeId, String.valueOf(v.getWalletType()));
vo.setFailReason(redisUtilPool.getString(key));
return vo;
}).collect(Collectors.toList());
} }
@Override @Override