fix:新增钱包开通流程及相关接口
This commit is contained in:
@@ -19,6 +19,7 @@ import com.cool.store.response.GetStoreInfoByCodeResponse;
|
||||
import com.cool.store.response.LicenseListResponse;
|
||||
import com.cool.store.response.SubmitLicenseResponse;
|
||||
import com.cool.store.service.*;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.utils.RedisUtilPool;
|
||||
import com.cool.store.utils.StringUtil;
|
||||
import com.cool.store.utils.poi.StringUtils;
|
||||
@@ -98,6 +99,9 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
|
||||
@Resource
|
||||
UserAuthMappingService userAuthMappingService;
|
||||
|
||||
@Resource
|
||||
WalletService walletService;
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean submitBusinessLicense(BusinessLicenseRequest request, PartnerUserInfoVO user) {
|
||||
@@ -144,9 +148,15 @@ public class ApplyLicenseServiceImpl implements ApplyLicenseService {
|
||||
preparationService.buildStoreAndDecorationComplete(request.getShopId());
|
||||
preparationService.selectSiteAndBuildStoreComplete(request.getShopId());
|
||||
}
|
||||
addTagIfUploadLicense(request.getShopId());
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
private void addTagIfUploadLicense(Long shopId) {
|
||||
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
|
||||
walletService.addTagIfUploadLicense(shopId, shopInfo.getStoreId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean submitFoodLicense(FoodLicenseRequest request, PartnerUserInfoVO user) {
|
||||
log.info("submitBusinessLicense request:{}", JSONObject.toJSONString(request));
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.cool.store.service.wallet;
|
||||
|
||||
import com.cool.store.request.wallet.*;
|
||||
import com.cool.store.vo.wallet.AccountAuthenticationVO;
|
||||
import com.cool.store.vo.wallet.BankVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/13
|
||||
*/
|
||||
public interface WalletService {
|
||||
|
||||
/**
|
||||
* 平安银行钱包账号创建
|
||||
* @param request 平安钱包账户创建Request
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean accountCreate(AccountCreateRequest request);
|
||||
|
||||
/**
|
||||
* 鉴权申请
|
||||
* @param request 门店id
|
||||
* @return 是否成功
|
||||
*/
|
||||
AccountAuthenticationVO authentication(WalletShopRequest request);
|
||||
|
||||
/**
|
||||
* 账号开通
|
||||
* @param request 平安钱包账户开通Request
|
||||
* @return 是否成功
|
||||
*/
|
||||
Boolean openAccount(AccountOpenRequest request);
|
||||
|
||||
/**
|
||||
* 银行支行列表查询
|
||||
* @param request 支行信息查询Request
|
||||
* @return 银行支行信息列表
|
||||
*/
|
||||
PageInfo<BankVO> getBankList(BankListRequest request);
|
||||
|
||||
/**
|
||||
* 判断营业执照是否已经上传,已上传则调用打标接口
|
||||
* @param shopId 门店shopId
|
||||
* @param storeId 主数据门店id
|
||||
*/
|
||||
void addTagIfUploadLicense(Long shopId, String storeId);
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
package com.cool.store.service.wallet.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cool.store.dao.RegionDao;
|
||||
import com.cool.store.dao.ShopInfoDAO;
|
||||
import com.cool.store.dao.ShopStageInfoDAO;
|
||||
import com.cool.store.dto.wallet.*;
|
||||
import com.cool.store.entity.LicenseTransactDO;
|
||||
import com.cool.store.entity.RegionDO;
|
||||
import com.cool.store.entity.ShopInfoDO;
|
||||
import com.cool.store.entity.ShopStageInfoDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.point.ShopSubStageEnum;
|
||||
import com.cool.store.enums.point.ShopSubStageStatusEnum;
|
||||
import com.cool.store.enums.wallet.BankAccountTypeEnum;
|
||||
import com.cool.store.enums.wallet.BankBusinessTypeEnum;
|
||||
import com.cool.store.enums.wallet.PingAnAccountStatusEnum;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.ApplyLicenseMapper;
|
||||
import com.cool.store.request.wallet.*;
|
||||
import com.cool.store.service.wallet.WalletApiService;
|
||||
import com.cool.store.service.wallet.WalletService;
|
||||
import com.cool.store.utils.BeanUtil;
|
||||
import com.cool.store.vo.wallet.AccountAuthenticationVO;
|
||||
import com.cool.store.vo.wallet.BankVO;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 钱包 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author wangff
|
||||
* @since 2025/11/13
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class WalletServiceImpl implements WalletService {
|
||||
private final ShopInfoDAO shopInfoDAO;
|
||||
private final ShopStageInfoDAO shopStageInfoDAO;
|
||||
private final ApplyLicenseMapper applyLicenseMapper;
|
||||
private final WalletApiService walletApiService;
|
||||
private final RegionDao regionDao;
|
||||
|
||||
@Override
|
||||
public Boolean accountCreate(AccountCreateRequest request) {
|
||||
ShopInfoDO shopInfo = getAndVerifyShopAndStage(request.getShopId());
|
||||
// 调用 创建门店签约人账户接口
|
||||
RegionDO regionDO = regionDao.getRegionById(shopInfo.getRegionId());
|
||||
if (Objects.isNull(regionDO)) {
|
||||
throw new ServiceException(ErrorCodeEnum.REGION_NOT_EXIST);
|
||||
}
|
||||
CreateStoreAndAccountRequest accountRequest = CreateStoreAndAccountRequest.builder()
|
||||
.outStoreId(shopInfo.getStoreId())
|
||||
.orgCode(String.valueOf(regionDO.getId()))
|
||||
.orgName(regionDO.getName())
|
||||
.phoneNumber(request.getMobile())
|
||||
.accountType(BankAccountTypeEnum.PRIVATE.getType())
|
||||
.businessType(BankBusinessTypeEnum.PERSONAL.getType())
|
||||
.legalName(request.getUserName())
|
||||
.legalNo(request.getIdCardNo())
|
||||
.accountAliasName(request.getUserName() + "_" + shopInfo.getStoreId())
|
||||
.accountCardno(request.getBankNumber())
|
||||
.accountPhone(request.getBankMobile())
|
||||
.bankNo(request.getBankNo())
|
||||
.bankName(request.getBankName())
|
||||
.build();
|
||||
StoreAccountDTO storeAndAccount = walletApiService.createStoreAndAccount(accountRequest);
|
||||
return StringUtils.isNotBlank(storeAndAccount.getAccountId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccountAuthenticationVO authentication(WalletShopRequest request) {
|
||||
ShopInfoDO shopInfo = getAndVerifyShopAndStage(request.getShopId());
|
||||
// 调用 门店签约人账户鉴权申请接口
|
||||
AccountAuthenticationDTO authentication = walletApiService.authentication(new OutStoreIdRequest(shopInfo.getStoreId()));
|
||||
if (Objects.nonNull(authentication)) {
|
||||
return new AccountAuthenticationVO(authentication.getAccountStatus());
|
||||
}
|
||||
throw new ServiceException(ErrorCodeEnum.WALLET_OPEN_ACCOUNT_FAIL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean openAccount(AccountOpenRequest request) {
|
||||
// 校验阶段是否合法
|
||||
ShopInfoDO shopInfo = getAndVerifyShopAndStage(request.getShopId());
|
||||
|
||||
// 调用 门店签约人账户开通接口
|
||||
log.info("开通账户");
|
||||
AccountVerifyDTO accountVerifyDTO = walletApiService.openAccount(new AccountVerifyRequest(shopInfo.getStoreId(), request.getCode()));
|
||||
if (!PingAnAccountStatusEnum.OPEN.getStatus().equals(accountVerifyDTO.getAccountStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.WALLET_OPEN_ACCOUNT_FAIL);
|
||||
}
|
||||
|
||||
// 更新钱包开通阶段状态
|
||||
List<ShopSubStageStatusEnum> updateSubStageList = new ArrayList<>();
|
||||
updateSubStageList.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_61);
|
||||
// 判断一下缴费阶段是否开启,未开启则开启缴费阶段
|
||||
ShopStageInfoDO payStage = shopStageInfoDAO.getShopSubStageInfo(request.getShopId(), ShopSubStageEnum.SHOP_STAGE_7);
|
||||
if (ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_00.getShopSubStageStatus().equals(payStage.getShopSubStageStatus())) {
|
||||
updateSubStageList.add(ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_70);
|
||||
}
|
||||
shopStageInfoDAO.batchUpdateShopStageStatus(request.getShopId(), updateSubStageList);
|
||||
|
||||
// 判断营业执照是否已经上传,已上传则调用打标接口
|
||||
addTagIfUploadLicense(request.getShopId(), shopInfo.getStoreId());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<BankVO> getBankList(BankListRequest request) {
|
||||
GetBankRequest getBankRequest = new GetBankRequest();
|
||||
WalletBasicPageInfo pageParam = new WalletBasicPageInfo();
|
||||
pageParam.setCurrentPage(request.getPageNum());
|
||||
pageParam.setPageSize(request.getPageSize());
|
||||
getBankRequest.setPage(pageParam);
|
||||
getBankRequest.setHeadName(request.getHeadName());
|
||||
getBankRequest.setKeyword(request.getKeyword());
|
||||
BankListDTO bankListDTO = walletApiService.getBankList(getBankRequest);
|
||||
PageInfo<BankVO> result = new PageInfo<>();
|
||||
result.setPageNum(request.getPageNum());
|
||||
result.setPageSize(request.getPageSize());
|
||||
if (Objects.nonNull(bankListDTO)) {
|
||||
WalletBasicPageInfo pageInfo = bankListDTO.getPage();
|
||||
result.setTotal(pageInfo.getTotal());
|
||||
result.setPages(pageInfo.getCount());
|
||||
result.setList(BeanUtil.toList(bankListDTO.getPageData(), BankVO.class));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addTagIfUploadLicense(Long shopId, String storeId) {
|
||||
LicenseTransactDO licenseTransactDO = applyLicenseMapper.selectByShopId(shopId);
|
||||
// 营业执照已上传,调用打标接口
|
||||
if (Objects.nonNull(licenseTransactDO) && StringUtils.isNotBlank(licenseTransactDO.getCreditUrl())) {
|
||||
try {
|
||||
// 调用 签约人账户打标(升级)接口
|
||||
log.info("营业执照已上传,账户打标");
|
||||
AccountAddTagRequest tagRequest = AccountAddTagRequest.builder()
|
||||
.outStoreId(storeId)
|
||||
.licenseNo(licenseTransactDO.getCreditCode())
|
||||
.licenseName(licenseTransactDO.getBusinessLicense())
|
||||
// .licenseExpire(Objects.nonNull(licenseTransactDO.getValidity()) ? CoolDateUtils.DateFormat(licenseTransactDO.getValidity(), "yyyy-MM-dd") : "2999-12-31")
|
||||
.legalName(licenseTransactDO.getLicenseLegalPerson())
|
||||
.legalNo(licenseTransactDO.getLicenseLegalIdCardNo())
|
||||
.legalPhone(licenseTransactDO.getLicenseLegalMobile())
|
||||
.build();
|
||||
AddTagDTO addTagDTO = walletApiService.addTag(tagRequest);
|
||||
log.info("打标接口调用成功,response:{}", JSONObject.toJSONString(addTagDTO));
|
||||
} catch (Exception e) {
|
||||
log.error("营业执照已上传,打标失败", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询并校验门店是否存在以及阶段是否处于平安钱包未开通状态
|
||||
*/
|
||||
private ShopInfoDO getAndVerifyShopAndStage(Long shopId) {
|
||||
ShopInfoDO shopInfo = shopInfoDAO.getShopInfo(shopId);
|
||||
if (Objects.isNull(shopInfo)) {
|
||||
throw new ServiceException(ErrorCodeEnum.SHOP_NOT_EXIST);
|
||||
}
|
||||
ShopStageInfoDO stageInfo = shopStageInfoDAO.getShopSubStageInfo(shopId, ShopSubStageEnum.SHOP_STAGE_6);
|
||||
if (!ShopSubStageStatusEnum.SHOP_SUB_STAGE_STATUS_60.getShopSubStageStatus().equals(stageInfo.getShopSubStageStatus())) {
|
||||
throw new ServiceException(ErrorCodeEnum.SHOP_STAGE_NOT_OPERATE);
|
||||
}
|
||||
return shopInfo;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user