Merge #98 into master from cc_20260408_trans

feat:mock 处理

* cc_20260408_trans: (22 commits squashed)

  - feat:分账

  - feat:分账接口

  - feat:分账单管理

  - feat:分账管理

  - feat:分账管理

  - feat:userIdName

  - feat:提现

  - feat:调整

  - feat:accountName

  - feat:accountName

  - feat:mock

  - feat:关联门店

  - feat:待充值待认款

  - feat:待充值待认款

  - feat:payer_account_no

  - feat:payeeAccountName

  - feat:payeeAccountNo

  - feat:page

  - feat:枚举

  - feat:接口请求方式调整get->post

  - feat:mock 处理

  - Merge branch 'master' into cc_20260408_trans
    
    # Conflicts:
    #	coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java
    #	coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java

Signed-off-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>
Merged-by: 正新 <accounts_6964c7bcd2a2c377c5bbd01b@mail.teambition.com>

CR-link: https://codeup.aliyun.com/692ea314dec569489f6f167c/hangzhou/java/custom_zxjp/change/98
This commit is contained in:
正新
2026-04-14 09:55:00 +00:00
parent 9ad7fa0f5a
commit 1bbb6f7097
80 changed files with 4204 additions and 29 deletions

View File

@@ -0,0 +1,86 @@
package com.cool.store.service;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.request.*;
import com.cool.store.request.wallet.ConfirmRechargeRequest;
import com.cool.store.response.AdjustmentOrderResponse;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* 费用调整单 Service
*/
public interface AdjustmentOrderService {
/**
* 新增费用调整单
* @param request 调整单请求
* @return 是否成功
*/
Boolean add(AdjustmentOrderRequest request);
/**
* 编辑费用调整单
* @param request 调整单请求
* @return 是否成功
*/
Boolean update(AdjustmentOrderRequest request);
/**
* 删除费用调整单
* @param id 调整单ID
* @return 是否成功
*/
Boolean delete(Long id);
/**
* 根据ID查询费用调整单详情
* @param id 调整单ID
* @return 调整单详情
*/
AdjustmentOrderResponse getById(Long id);
/**
* 分页查询费用调整单
* @param request 分页查询请求
* @return 分页结果
*/
PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request);
PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request);
/**
* 生成分账单
* @param request 生成分账单请求
* @return 分账单号
*/
String generateSplitOrder(GenerateSplitOrderRequest request);
/**
* 认款
* @param request 认款请求
* @return 是否成功
*/
Boolean recognizePayment(RecognizePaymentRequest request, LoginUserInfo userInfo);
/**
* 计算金额
* @param id
* @param transferAmount
* @return
*/
Boolean calculateAmount(Long id ,String transferAmount);
/**
* 确认充值
* @return
*/
Boolean confirmRecharge(ConfirmRechargeRequest request);
}

View File

@@ -0,0 +1,79 @@
package com.cool.store.service;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dto.wallet.TradeRecordDTO;
import com.cool.store.entity.wallet.WalletTradeDO;
import com.cool.store.request.SplitOrderPageRequest;
import com.cool.store.request.SplitOrderRequest;
import com.cool.store.request.wallet.BillDetailRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.response.SplitOrderResponse;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* 分账主表 Service
*/
public interface SplitOrderService {
/**
* 新增分账单
* @param request 分账单请求
* @return 是否成功
*/
Boolean add(SplitOrderRequest request);
/**
* 编辑分账单
* @param request 分账单请求
* @return 是否成功
*/
Boolean update(SplitOrderRequest request);
/**
* 删除分账单
* @param id 分账单ID
* @return 是否成功
*/
Boolean delete(Long id);
/**
* 根据ID查询分账单详情
* @param id 分账单ID
* @return 分账单详情
*/
SplitOrderResponse getById(Long id);
/**
* 分页查询分账单
* @param request 分页查询请求
* @return 分页结果
*/
PageInfo<SplitOrderResponse> page(SplitOrderPageRequest request);
/**
* 批量更新状态
* @param ids 分账单ID列表
* @param status 目标状态
* @return 是否成功
*/
Boolean batchUpdateStatus(List<Long> ids, String status);
/**
* 确认分账
* @param id 分账单ID
* @return 是否成功
*/
Boolean confirmSplitOrder(Long id, LoginUserInfo userInfo);
TradeRecordDTO getBillDetail(Long id);
/**
* 更新数据
* @param walletTradeDO
*/
Boolean updateWalletTrade(WalletTradeDO walletTradeDO);
}

View File

@@ -0,0 +1,30 @@
package com.cool.store.service;
import com.cool.store.dao.wallet.WalletTradeDAO;
import com.cool.store.dto.wallet.WithdrawApplicationDTO;
import com.cool.store.entity.wallet.WalletTradeDO;
import com.cool.store.request.WithdrawApplicationPageRequest;
import com.cool.store.request.WithdrawApplicationRequest;
import com.github.pagehelper.PageInfo;
/**
* 提现申请 Service
*/
public interface WithdrawApplicationService {
/**
* 分页查询提现申请
*/
PageInfo<WithdrawApplicationDTO> page(WithdrawApplicationPageRequest request);
/**
* 新增提现申请
*/
Boolean add(WithdrawApplicationRequest request);
Boolean confirmWithdraw(Long id);
Boolean updateTrade(WalletTradeDO walletTradeDO);
}

View File

@@ -1,10 +1,12 @@
package com.cool.store.service.fees;
import com.cool.store.dto.wallet.AccountTransferDTO;
import com.cool.store.request.fees.WalletCancelPayRequest;
import com.cool.store.request.fees.WalletPayRequest;
import com.cool.store.request.fees.WalletRepayRequest;
import com.cool.store.vo.fees.WalletPayInfoVO;
import java.math.BigDecimal;
import java.util.List;
/**
@@ -57,4 +59,16 @@ public interface WalletPayInfoService {
* @param walletPayInfoId 支付信息
*/
void rePushReceipt(Long walletPayInfoId);
/**
* 账户间转账
* @param expenseType
* @param amount
* @param inAccNo
* @param outAccNo
* @param payNo
* @param remark
* @return
*/
AccountTransferDTO accountPay(String expenseType, BigDecimal amount, String inAccNo, String outAccNo, String payNo, String remark);
}

View File

@@ -14,9 +14,10 @@ import com.cool.store.dao.fees.ShopAllocationInfoDAO;
import com.cool.store.dao.fees.WalletPayInfoDAO;
import com.cool.store.dao.wallet.WalletTradeDAO;
import com.cool.store.dto.wallet.AccountInfoDTO;
import com.cool.store.dto.wallet.AccountTransferDTO;
import com.cool.store.dto.wallet.BatchTransferDTO;
import com.cool.store.request.wallet.BatchTransferQueryRequest;
import com.cool.store.request.wallet.BatchTransferRequest;
import com.cool.store.enums.wechat.WalletTypeEnum;
import com.cool.store.request.wallet.*;
import com.cool.store.dto.wallet.TransferDTO;
import com.cool.store.entity.FranchiseFeeDO;
import com.cool.store.entity.ShopInfoDO;
@@ -35,8 +36,6 @@ import com.cool.store.exception.ServiceException;
import com.cool.store.request.fees.WalletCancelPayRequest;
import com.cool.store.request.fees.WalletPayRequest;
import com.cool.store.request.fees.WalletRepayRequest;
import com.cool.store.request.wallet.OutStoreIdRequest;
import com.cool.store.request.wallet.TransferRequest;
import com.cool.store.request.xgj.ReceiptRequest;
import com.cool.store.service.PushService;
import com.cool.store.service.fees.WalletPayInfoService;
@@ -374,4 +373,20 @@ public class WalletPayInfoServiceImpl implements WalletPayInfoService {
request.setRemark(feeItem.getDesc());
return walletApiService.transfer(request);
}
@Override
public AccountTransferDTO accountPay(String expenseType, BigDecimal amount, String inAccNo, String outAccNo,String payNo, String remark) {
WalletFeeItemEnum feeItem = WalletFeeItemEnum.getByExpenseType(expenseType);
if (Objects.isNull(feeItem)) {
throw new ServiceException(ErrorCodeEnum.NONSUPPORT_EXPENSE_TYPE);
}
AccountTransferRequest request = new AccountTransferRequest();
request.setReqNo(payNo);
request.setInAccNo(inAccNo);
request.setOutAccNo(outAccNo);
request.setRemark(remark);
request.setAmount(amount.toPlainString());
request.setWalletType(WalletTypeEnum.ONLINE_BANK.getType());
return walletApiService.accountTransfer(request);
}
}

View File

@@ -0,0 +1,440 @@
package com.cool.store.service.impl;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.*;
import com.cool.store.dto.wallet.AccountInfoDTO;
import com.cool.store.entity.AdjustmentOrderDO;
import com.cool.store.entity.ExpenseMappingDO;
import com.cool.store.entity.SplitOrderDO;
import com.cool.store.entity.StoreDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.ExpenseSheetTypeEnum;
import com.cool.store.enums.wallet.DocStatusEnum;
import com.cool.store.enums.wallet.SplitSourceEnum;
import com.cool.store.enums.wallet.SplitTypeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.*;
import com.cool.store.request.wallet.ConfirmRechargeRequest;
import com.cool.store.request.wallet.OutStoreIdRequest;
import com.cool.store.response.AdjustmentOrderResponse;
import com.cool.store.service.AdjustmentOrderService;
import com.cool.store.service.dict.impl.DictService;
import com.cool.store.service.wallet.WalletApiService;
import com.cool.store.utils.GenerateNoUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static com.cool.store.enums.fees.AllocationPayStatusEnum.*;
import static com.cool.store.enums.wallet.DocStatusEnum.*;
/**
* 费用调整单 Service 实现类
*/
@Service
@Slf4j
public class AdjustmentOrderServiceImpl implements AdjustmentOrderService {
@Resource
private AdjustmentOrderDAO adjustmentOrderDAO;
@Resource
private SplitOrderDAO splitOrderDAO;
@Resource
private StoreDao storeDao;
@Resource
private ExpenseMappingDAO expenseMappingDAO;
@Resource
WalletApiService walletApiService;
@Resource
EnterpriseUserDAO enterpriseUserDAO;
@Resource
DictService dictService;
private static final String ADJUSTMENT_ORDER_PREFIX = "TZ";
private static final String EXPENSE_SHEET_PREFIX = "FY";
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(AdjustmentOrderRequest request) {
String userId = CurrentUserHolder.getUserId();
// 校验门店是否存在
StoreDO store = storeDao.getByStoreId(request.getStoreId());
if (store == null) {
throw new ServiceException(ErrorCodeEnum.STORE_IS_EXIST);
}
AdjustmentOrderDO adjustmentOrder = AdjustmentOrderDO.builder()
.adjustmentNo(GenerateNoUtil.generateAdjustmentNo(request.getExpenseSheetType()))
.storeId(request.getStoreId())
.businessTypeCode(request.getBusinessTypeCode())
.expenseTypeCode(request.getExpenseTypeCode())
.adjustType(request.getAdjustType())
.adjustAmount(request.getAdjustAmount())
.adjustReason(request.getAdjustReason())
.remark(request.getRemark())
.attachmentInfo(request.getAttachmentInfo())
.contractAttachmentInfo(request.getContractAttachmentInfo())
.expenseSheetType(request.getExpenseSheetType())
.settledAmount(new BigDecimal("0"))
.pendingSettlementAmount(request.getAdjustAmount())
.status(DOC_STATUS_1.getStatus())
.createUserId(userId)
.createTime(new Date())
.build();
int result = adjustmentOrderDAO.insert(adjustmentOrder);
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean update(AdjustmentOrderRequest request) {
if (request.getId() == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_ID_NOT_NULL);
}
AdjustmentOrderDO existing = adjustmentOrderDAO.getById(request.getId());
if (existing == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL);
}
// 只有待确认缴费状态才能编辑
if (!DOC_STATUS_1.getStatus().equals(existing.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
AdjustmentOrderDO update = AdjustmentOrderDO.builder()
.id(request.getId())
.storeId(request.getStoreId())
.businessTypeCode(request.getBusinessTypeCode())
.expenseTypeCode(request.getExpenseTypeCode())
.adjustType(request.getAdjustType())
.adjustAmount(request.getAdjustAmount())
.adjustReason(request.getAdjustReason())
.remark(request.getRemark())
.expenseSheetType(request.getExpenseSheetType())
.settledAmount(new BigDecimal("0"))
.pendingSettlementAmount(request.getAdjustAmount())
.contractAttachmentInfo(request.getContractAttachmentInfo())
.attachmentInfo(request.getAttachmentInfo())
.build();
int result = adjustmentOrderDAO.update(update);
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(Long id) {
if (id == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_ID_NOT_NULL);
}
AdjustmentOrderDO existing = adjustmentOrderDAO.getById(id);
if (existing == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL);
}
// 只有待确认缴费状态才能删除
if (!DOC_STATUS_1.getStatus().equals(existing.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
existing.setDeleted(1);
adjustmentOrderDAO.update(existing);
return Boolean.TRUE;
}
@Override
public AdjustmentOrderResponse getById(Long id) {
if (id == null) {
return null;
}
AdjustmentOrderDO adjustmentOrder = adjustmentOrderDAO.getById(id);
if (adjustmentOrder == null) {
return null;
}
return buildResponse(adjustmentOrder);
}
@Override
public PageInfo<AdjustmentOrderResponse> page(AdjustmentOrderPageRequest request) {
PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<AdjustmentOrderResponse> list = adjustmentOrderDAO.pageQuery(request);
dictService.fillDictField(list);
// 批量查询交易流水号
if (CollectionUtils.isNotEmpty(list)) {
List<String> adjustmentNos = list.stream()
.map(AdjustmentOrderResponse::getAdjustmentNo)
.collect(Collectors.toList());
List<ExpenseMappingDO> expenseMappings = expenseMappingDAO.listByRelatedAdjustmentNoList(adjustmentNos);
// 按调整单号分组
Map<String, List<String>> tradeNoMap = expenseMappings.stream()
.collect(Collectors.groupingBy(
ExpenseMappingDO::getRelatedAdjustmentNo,
Collectors.mapping(ExpenseMappingDO::getTradeNo, Collectors.toList())
));
Set<String> userIdList = list.stream()
.filter(x -> StringUtils.isNotBlank(x.getClaimUserId()) || StringUtils.isNotBlank(x.getCreateUserId()))
.flatMap(x -> Stream.of(x.getClaimUserId(), x.getCreateUserId()))
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(new ArrayList<>(userIdList));
// 填充交易流水号
list.forEach(response -> {
List<String> tradeNos = tradeNoMap.get(response.getAdjustmentNo());
if (CollectionUtils.isNotEmpty(tradeNos)) {
response.setTradeNoList(tradeNos);
}
if (StringUtils.isNotBlank(response.getClaimUserId())){
response.setClaimUserName(userNameMap.get(response.getClaimUserId()));
}
if (StringUtils.isNotEmpty(response.getCreateUserId())){
response.setCreateUserName(userNameMap.get(response.getCreateUserId()));
}
});
}
return new PageInfo<>(list);
}
@Override
public PageInfo<AdjustmentOrderResponse> getSpecialStatusData(AdjustmentSpecialPageRequest request) {
AdjustmentOrderPageRequest convert = AdjustmentSpecialPageRequest.convert(request);
//只查询指定的状态
List<Integer> statusList = convert.getStatusList();
List<Integer> list = Arrays.asList(DOC_STATUS_4.getStatus(), DOC_STATUS_3.getStatus());
if (CollectionUtils.isEmpty(statusList)){
statusList = list;
}else {
statusList.addAll(list);
}
convert.setStatusList(statusList);
return page(convert);
}
@Override
@Transactional(rollbackFor = Exception.class)
public String generateSplitOrder(GenerateSplitOrderRequest request) {
if (request.getId() == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_ID_NOT_NULL);
}
AdjustmentOrderDO adjustmentOrder = adjustmentOrderDAO.getById(request.getId());
if (adjustmentOrder == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL);
}
List<SplitOrderDO> splitOrderDOS = splitOrderDAO.listByRelatedDocNo(adjustmentOrder.getAdjustmentNo(), Arrays.asList(UNPAID.getStatus(), PAYING.getStatus()));
if (CollectionUtils.isNotEmpty(splitOrderDOS)){
throw new ServiceException(ErrorCodeEnum.NOT_COMPLETE_TRANS_SHEET);
}
//分账金额不能大雨待分账金额
if (adjustmentOrder.getPendingSettlementAmount().compareTo(request.getSplitAmount())<0){
throw new ServiceException(ErrorCodeEnum.PENDING_TRANS_AMOUNT);
}
// 只有认款完成状态才能生成分账单
if (!DOC_STATUS_3.getStatus().equals(adjustmentOrder.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
String userId = CurrentUserHolder.getUserId();
String splitNo = GenerateNoUtil.generateSplitNo();
// 查询门店信息
StoreDO store = storeDao.getByStoreId(adjustmentOrder.getStoreId());
if (store == null) {
throw new ServiceException(ErrorCodeEnum.STORE_IS_EXIST);
}
SplitSourceEnum splitSourceEnum = SplitSourceEnum.getSplitSourceEnum(adjustmentOrder.getExpenseSheetType());
Integer source = null;
if (splitSourceEnum!=null){
source = splitSourceEnum.getStatus();
}
OutStoreIdRequest outStoreIdRequest = new OutStoreIdRequest();
outStoreIdRequest.setOutStoreId(adjustmentOrder.getStoreId());
List<AccountInfoDTO> accountInfoList = walletApiService.getAccountInfo(outStoreIdRequest);
if (CollectionUtils.isEmpty(accountInfoList)){
throw new ServiceException(ErrorCodeEnum.NOT_EXIST_WANG_SHANG_ACCOUNT);
}
AccountInfoDTO accountInfoDTO = accountInfoList.get(0);
// 生成分账单
SplitOrderDO splitOrder = SplitOrderDO.builder()
.splitNo(splitNo)
.splitType(SplitTypeEnum.ADD_BY_HAND.getStatus())
.relatedStoreId(adjustmentOrder.getStoreId())
.payerAccountName(accountInfoDTO.getAccountName())
.payerAccountNo(accountInfoDTO.getAccountNo())
.payeeAccountName(request.getPayeeAccountName())
.payeeAccountNo(request.getPayeeAccountNo())
.expenseTypeCode(adjustmentOrder.getExpenseTypeCode())
.splitAmount(request.getSplitAmount())
.relatedDocNo(adjustmentOrder.getAdjustmentNo())
.attachmentInfo(request.getAttachmentInfo())
.remark(request.getRemark())
.status(UNPAID.getStatus())
.createUserId(userId)
.createTime(new Date())
.source(source)
.build();
splitOrderDAO.insert(splitOrder);
return splitNo;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean recognizePayment(RecognizePaymentRequest request, LoginUserInfo userInfo) {
if (request.getId() == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_ID_NOT_NULL);
}
if (CollectionUtils.isEmpty(request.getTradeNos())) {
throw new ServiceException(ErrorCodeEnum.ERROR_MESSAGE, "交易流水号列表不能为空");
}
// 查询费用调整单
AdjustmentOrderDO adjustmentOrder = adjustmentOrderDAO.getById(request.getId());
if (adjustmentOrder == null) {
throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL);
}
// 只有待充值待认款状态才能进行认款操作
if (!(DOC_STATUS_2.getStatus().equals(adjustmentOrder.getStatus())||DOC_STATUS_1.getStatus().equals(adjustmentOrder.getStatus()))) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
// 查询交易流水号是否已被使用
List<ExpenseMappingDO> existingMappings = expenseMappingDAO.listByTradeNos(request.getTradeNos());
if (CollectionUtils.isNotEmpty(existingMappings)) {
throw new ServiceException(ErrorCodeEnum.TRADE_EXIST);
}
// 批量插入映射记录
List<ExpenseMappingDO> mappingList = request.getTradeNos().stream()
.map(tradeNo -> ExpenseMappingDO.builder()
.relatedAdjustmentNo(adjustmentOrder.getAdjustmentNo())
.tradeNo(tradeNo)
.build())
.collect(Collectors.toList());
expenseMappingDAO.batchInsert(mappingList);
// 更新费用调整单状态为认款完成
AdjustmentOrderDO update = AdjustmentOrderDO.builder()
.id(request.getId())
.status(DOC_STATUS_3.getStatus())
.claimTime(new Date())
.claimUserId(userInfo.getUserId())
.build();
adjustmentOrderDAO.update(update);
log.info("费用调整单认款成功,单号:{},交易流水号:{}",
adjustmentOrder.getAdjustmentNo(), request.getTradeNos());
return Boolean.TRUE;
}
@Override
public Boolean calculateAmount(Long id, String transferAmount) {
AdjustmentOrderDO adjustmentOrderDO = adjustmentOrderDAO.getById(id);
if (adjustmentOrderDO==null){
log.info("calculateAmount:费用单/费用调整单为空");
return Boolean.FALSE;
}
BigDecimal amount = new BigDecimal(transferAmount);
adjustmentOrderDO.setSettledAmount(adjustmentOrderDO.getSettledAmount().add(amount));
adjustmentOrderDO.setPendingSettlementAmount(adjustmentOrderDO.getPendingSettlementAmount().subtract(amount));
if (adjustmentOrderDO.getPendingSettlementAmount().compareTo(new BigDecimal("0"))<=0){
adjustmentOrderDO.setStatus(DOC_STATUS_5.getStatus());
}
if (adjustmentOrderDO.getPendingSettlementAmount().compareTo(new BigDecimal("0"))>0){
adjustmentOrderDO.setStatus(DOC_STATUS_4.getStatus());
}
adjustmentOrderDAO.update(adjustmentOrderDO);
return null;
}
@Override
public Boolean confirmRecharge(ConfirmRechargeRequest request) {
AdjustmentOrderDO adjustmentOrderDO = adjustmentOrderDAO.getById(request.getId());
if (adjustmentOrderDO==null){
throw new ServiceException(ErrorCodeEnum.CHANGE_NOT_NULL);
}
adjustmentOrderDO.setAttachmentInfo(request.getAttachmentInfo());
adjustmentOrderDO.setRemark(request.getRemark());
adjustmentOrderDO.setStatus(DOC_STATUS_2.getStatus());
adjustmentOrderDO.setPayTime(new Date());
adjustmentOrderDAO.update(adjustmentOrderDO);
return Boolean.TRUE;
}
/**
* 构建响应对象
*/
private AdjustmentOrderResponse buildResponse(AdjustmentOrderDO adjustmentOrder) {
AdjustmentOrderResponse response = new AdjustmentOrderResponse();
response.setId(adjustmentOrder.getId());
response.setAdjustmentNo(adjustmentOrder.getAdjustmentNo());
response.setStoreId(adjustmentOrder.getStoreId());
response.setBusinessTypeCode(adjustmentOrder.getBusinessTypeCode());
response.setExpenseTypeCode(adjustmentOrder.getExpenseTypeCode());
response.setAdjustType(adjustmentOrder.getAdjustType());
response.setAdjustAmount(adjustmentOrder.getAdjustAmount());
response.setAdjustReason(adjustmentOrder.getAdjustReason());
response.setRemark(adjustmentOrder.getRemark());
response.setAttachmentInfo(adjustmentOrder.getAttachmentInfo());
response.setStatus(adjustmentOrder.getStatus());
response.setCreateUserId(adjustmentOrder.getCreateUserId());
response.setCreateTime(adjustmentOrder.getCreateTime());
response.setSettledAmount(adjustmentOrder.getSettledAmount());
response.setPendingSettlementAmount(adjustmentOrder.getPendingSettlementAmount());
response.setClaimUserId(adjustmentOrder.getClaimUserId());
response.setClaimTime(adjustmentOrder.getClaimTime());
response.setContractAttachmentInfo(adjustmentOrder.getContractAttachmentInfo());
response.setPayTime(adjustmentOrder.getPayTime());
// 设置门店信息
if (StringUtils.isNotBlank(adjustmentOrder.getStoreId())) {
StoreDO store = storeDao.getByStoreId(adjustmentOrder.getStoreId());
if (store != null) {
response.setStoreName(store.getStoreName());
response.setStoreNum(store.getStoreNum());
}
}
dictService.fillDictField(response);
return response;
}
}

View File

@@ -0,0 +1,335 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.constants.RedisConstant;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.SplitOrderDAO;
import com.cool.store.dao.StoreDao;
import com.cool.store.dao.AdjustmentOrderDAO;
import com.cool.store.dao.wallet.WalletTradeDAO;
import com.cool.store.dto.wallet.AccountTransferDTO;
import com.cool.store.dto.wallet.TradeRecordDTO;
import com.cool.store.entity.SplitOrderDO;
import com.cool.store.entity.StoreDO;
import com.cool.store.entity.AdjustmentOrderDO;
import com.cool.store.entity.wallet.WalletTradeDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.fees.AllocationPayStatusEnum;
import com.cool.store.enums.wallet.SplitSourceEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.SplitOrderPageRequest;
import com.cool.store.request.SplitOrderRequest;
import com.cool.store.request.wallet.BillDetailRequest;
import com.cool.store.response.SplitOrderResponse;
import com.cool.store.service.AdjustmentOrderService;
import com.cool.store.service.SplitOrderService;
import com.cool.store.service.fees.WalletPayInfoService;
import com.cool.store.service.wallet.WalletApiService;
import com.cool.store.service.wallet.WalletService;
import com.cool.store.utils.GenerateNoUtil;
import com.cool.store.utils.RedisUtil;
import com.cool.store.utils.RedisUtilPool;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static com.cool.store.enums.wallet.WalletTradeModuleEnum.STANDARD_STORE;
import static com.cool.store.enums.wallet.WalletTradeModuleEnum.TRANSFER;
/**
* 分账主表 Service 实现类
*/
@Service
@Slf4j
public class SplitOrderServiceImpl implements SplitOrderService {
@Resource
private SplitOrderDAO splitOrderDAO;
@Resource
private StoreDao storeDao;
@Resource
private AdjustmentOrderDAO adjustmentOrderDAO;
@Resource
AdjustmentOrderService adjustmentOrderService;
@Resource
WalletPayInfoService walletPayInfoService;
@Resource
WalletTradeDAO walletTradeDAO;
@Resource
RedisUtil redisUtil;
@Resource
WalletApiService walletApiService;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(SplitOrderRequest request) {
String userId = CurrentUserHolder.getUserId();
SplitOrderDO splitOrder = SplitOrderDO.builder()
.splitNo(GenerateNoUtil.generateSplitNo())
.splitType(request.getSplitType())
.relatedStoreId(request.getRelatedStoreId())
.payerAccountName(request.getPayerAccountName())
.payerAccountNo(request.getPayerAccountNo())
.payeeAccountName(request.getPayeeAccountName())
.payeeAccountNo(request.getPayeeAccountNo())
.expenseTypeCode(request.getExpenseTypeCode())
.splitAmount(request.getSplitAmount())
.relatedDocNo(request.getRelatedDocNo())
.remark(request.getRemark())
.status(AllocationPayStatusEnum.UNPAID.getStatus())
.createUserId(userId)
.createTime(new Date())
.attachmentInfo(request.getAttachmentInfo())
.source(SplitSourceEnum.ADD_BY_HAND.getStatus())
.build();
int result = splitOrderDAO.insert(splitOrder);
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean update(SplitOrderRequest request) {
if (request.getId() == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_ID_NOT_NULL);
}
SplitOrderDO existing = splitOrderDAO.getById(request.getId());
if (existing == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_NOT_NULL);
}
// 只有待分账状态才能编辑
if (!AllocationPayStatusEnum.UNPAID.getStatus().equals(existing.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
SplitOrderDO update = SplitOrderDO.builder()
.id(request.getId())
.splitType(request.getSplitType())
.relatedStoreId(request.getRelatedStoreId())
.payerAccountName(request.getPayerAccountName())
.payeeAccountNo(request.getPayerAccountNo())
.payeeAccountName(request.getPayeeAccountName())
.payeeAccountNo(request.getPayeeAccountNo())
.expenseTypeCode(request.getExpenseTypeCode())
.splitAmount(request.getSplitAmount())
.relatedDocNo(request.getRelatedDocNo())
.attachmentInfo(request.getAttachmentInfo())
.remark(request.getRemark())
.build();
int result = splitOrderDAO.update(update);
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean delete(Long id) {
if (id == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_ID_NOT_NULL);
}
SplitOrderDO existing = splitOrderDAO.getById(id);
if (existing == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_NOT_NULL);
}
// 只有待分账状态才能删除
if (!AllocationPayStatusEnum.UNPAID.getStatus().equals(existing.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
int result = splitOrderDAO.delete(id);
return result > 0;
}
@Override
public SplitOrderResponse getById(Long id) {
if (id == null) {
return null;
}
SplitOrderDO splitOrder = splitOrderDAO.getById(id);
if (splitOrder == null) {
return null;
}
return buildResponse(splitOrder);
}
@Override
public PageInfo<SplitOrderResponse> page(SplitOrderPageRequest request) {
PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<SplitOrderResponse> responses = splitOrderDAO.pageQueryWithStore(request);
return new PageInfo<>(responses);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean batchUpdateStatus(List<Long> ids, String status) {
if (CollectionUtils.isEmpty(ids) || StringUtils.isBlank(status)) {
return false;
}
int result = splitOrderDAO.batchUpdateStatus(ids, status);
return result > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean confirmSplitOrder(Long id, LoginUserInfo userInfo) {
if (id == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_ID_NOT_NULL);
}
//分账单锁
String lockKey = MessageFormat.format(RedisConstant.WALLET_TRANSFER_LOCK, id);
boolean lock = redisUtil.tryLock(lockKey, id.toString(), 1,TimeUnit.SECONDS);
if (!lock) {
throw new ServiceException(ErrorCodeEnum.TRANSFER_ING);
}
SplitOrderDO existing = splitOrderDAO.getById(id);
if (existing == null) {
throw new ServiceException(ErrorCodeEnum.TRANS_NOT_NULL);
}
// 只有待分账状态才能确认
if (!AllocationPayStatusEnum.UNPAID.getStatus().equals(existing.getStatus())) {
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
//营帐通完成分账 String expenseType, BigDecimal amount, String inAccNo, String outAccNo, String payNo, String remark
AccountTransferDTO accountTransferDTO ;
try {
accountTransferDTO = walletPayInfoService.accountPay(existing.getExpenseTypeCode(), existing.getSplitAmount(),
existing.getPayeeAccountNo(), existing.getPayerAccountNo(), existing.getSplitNo(), existing.getRemark());
}catch (Exception e){
//分账失败 释放锁
redisUtil.unlock(lockKey);
throw new ServiceException(ErrorCodeEnum.TRANSFER_ERROR);
}
existing.setConfirmer(userInfo.getUserId());
existing.setStatus(accountTransferDTO.getTradeStatus());
existing.setConfirmTime(new Date());
int result = splitOrderDAO.update(existing);
WalletTradeDO walletTradeDO = new WalletTradeDO();
walletTradeDO.setPayStatus(accountTransferDTO.getTradeStatus());
walletTradeDO.setModule(TRANSFER.getModule());
walletTradeDO.setRemark(existing.getRemark());
walletTradeDO.setPayAmount(new BigDecimal(accountTransferDTO.getAmount()));
walletTradeDO.setPayTime(new Date());
walletTradeDO.setPayNo(existing.getSplitNo());
walletTradeDO.setTradeId(String.valueOf(accountTransferDTO.getTradeId()));
walletTradeDO.setType(1);
walletTradeDAO.insertSelective(walletTradeDO);
//如果是分账完成 需要变更单据已分账金额
if (AllocationPayStatusEnum.PAID.getStatus().equals(accountTransferDTO.getTradeStatus())){
log.info("confirmSplitOrder 分账完成分账单ID{}",id);
adjustmentOrderService.calculateAmount(id,accountTransferDTO.getAmount());
}
return result > 0;
}
@Override
public TradeRecordDTO getBillDetail(Long id) {
SplitOrderDO splitOrder = splitOrderDAO.getById(id);
if (splitOrder==null){
throw new ServiceException(ErrorCodeEnum.TRANS_NOT_NULL);
}
String splitNo = splitOrder.getSplitNo();
WalletTradeDO walletTrade = walletTradeDAO.getByPayNo(splitNo);
if (walletTrade==null){
return null;
}
BillDetailRequest request = new BillDetailRequest();
request.setTradeId(Long.valueOf(walletTrade.getTradeId()));
return walletApiService.getBillDetail(request);
}
@Override
@Transactional
public Boolean updateWalletTrade(WalletTradeDO walletTradeDO) {
log.info("updateWalletTrade:{}", JSONObject.toJSONString(walletTradeDO));
if (walletTradeDO==null||StringUtils.isEmpty(walletTradeDO.getTradeId())){
return Boolean.FALSE;
}
SplitOrderDO split = splitOrderDAO.getBySplitNo(walletTradeDO.getPayNo());
//通过tradeId查询支付状态
BillDetailRequest billDetailRequest = new BillDetailRequest();
billDetailRequest.setTradeId(Long.valueOf(walletTradeDO.getTradeId()));
TradeRecordDTO billDetail = walletApiService.getBillDetail(billDetailRequest);
//修改状态
walletTradeDO.setPayStatus(billDetail.getTradeStatus());
walletTradeDAO.updateByPrimaryKeySelective(walletTradeDO);
split.setStatus(billDetail.getTradeStatus());
split.setFailReason(billDetail.getErrMsg());
splitOrderDAO.update(split);
if (AllocationPayStatusEnum.PAID.getStatus().equals(billDetail.getTradeStatus())){
log.info("confirmSplitOrder 分账完成分账单ID{}",split.getId());
adjustmentOrderService.calculateAmount(split.getId(),billDetail.getAmount());
}
return null;
}
/**
* 构建响应对象
*/
private SplitOrderResponse buildResponse(SplitOrderDO splitOrder) {
SplitOrderResponse response = new SplitOrderResponse();
response.setId(splitOrder.getId());
response.setSplitNo(splitOrder.getSplitNo());
response.setSplitType(splitOrder.getSplitType());
response.setRelatedStoreId(splitOrder.getRelatedStoreId());
response.setPayerAccountName(splitOrder.getPayerAccountName());
response.setPayeeAccountNo(splitOrder.getPayeeAccountNo());
response.setPayerAccountNo(splitOrder.getPayerAccountNo());
response.setPayeeAccountName(splitOrder.getPayeeAccountName());
response.setExpenseTypeCode(splitOrder.getExpenseTypeCode());
response.setSplitAmount(splitOrder.getSplitAmount());
response.setRelatedDocNo(splitOrder.getRelatedDocNo());
response.setRemark(splitOrder.getRemark());
response.setStatus(splitOrder.getStatus());
response.setConfirmer(splitOrder.getConfirmer());
response.setConfirmTime(splitOrder.getConfirmTime());
response.setCreateUserId(splitOrder.getCreateUserId());
response.setCreateTime(splitOrder.getCreateTime());
response.setSource(splitOrder.getSource());
// 设置门店信息
if (StringUtils.isNotBlank(splitOrder.getRelatedStoreId())) {
StoreDO store = storeDao.getByStoreId(splitOrder.getRelatedStoreId());
if (store != null) {
response.setStoreName(store.getStoreName());
response.setStoreNum(store.getStoreNum());
}
}
return response;
}
}

View File

@@ -0,0 +1,165 @@
package com.cool.store.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.RedisConstant;
import com.cool.store.context.CurrentUserHolder;
import com.cool.store.context.LoginUserInfo;
import com.cool.store.dao.WithdrawApplicationDAO;
import com.cool.store.dao.wallet.WalletTradeDAO;
import com.cool.store.dto.wallet.AccountWithdrawerDTO;
import com.cool.store.dto.wallet.TradeRecordDTO;
import com.cool.store.dto.wallet.WithdrawApplicationDTO;
import com.cool.store.entity.WithdrawApplicationDO;
import com.cool.store.entity.wallet.WalletTradeDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.fees.AllocationPayStatusEnum;
import com.cool.store.enums.wallet.TradeTypeEnum;
import com.cool.store.enums.wechat.WalletTypeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.WithdrawApplicationPageRequest;
import com.cool.store.request.WithdrawApplicationRequest;
import com.cool.store.request.wallet.AccountWithdrawerRequest;
import com.cool.store.request.wallet.BillDetailRequest;
import com.cool.store.service.WithdrawApplicationService;
import com.cool.store.service.wallet.WalletApiService;
import com.cool.store.utils.GenerateNoUtil;
import com.cool.store.utils.RedisUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.MessageFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import static com.cool.store.enums.wallet.WalletTradeModuleEnum.STANDARD_STORE;
import static com.cool.store.enums.wallet.WalletTradeModuleEnum.TRANSFER;
/**
* 提现申请 Service 实现类
*/
@Service
@Slf4j
public class WithdrawApplicationServiceImpl implements WithdrawApplicationService {
@Resource
private WithdrawApplicationDAO withdrawApplicationDAO;
@Resource
RedisUtil redisUtil;
@Resource
WalletApiService walletApiService;
@Resource
WalletTradeDAO walletTradeDAO;
private static final String WITHDRAW_ORDER_PREFIX = "TX";
@Override
public PageInfo<WithdrawApplicationDTO> page(WithdrawApplicationPageRequest request) {
PageHelper.startPage(request.getPageNum(), request.getPageSize());
List<WithdrawApplicationDTO> responses = withdrawApplicationDAO.pageQuery(request);
return new PageInfo<>(responses);
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean add(WithdrawApplicationRequest request) {
String userId = CurrentUserHolder.getUserId();
String withdrawNo = GenerateNoUtil.generateNo(WITHDRAW_ORDER_PREFIX);
WithdrawApplicationDO withdrawApplication = WithdrawApplicationDO.builder()
.withdrawNo(withdrawNo)
.accountName(request.getAccountName())
.accountNo(request.getAccountNo())
.amount(request.getAmount())
.bankCardNo(request.getBankCardNo())
.bankName(request.getBankName())
.status(AllocationPayStatusEnum.UNPAID.getStatus())
.createUserId(userId)
.createTime(new Date())
.updateTime(new Date())
.build();
int result = withdrawApplicationDAO.insert(withdrawApplication);
return result > 0;
}
@Override
public Boolean confirmWithdraw(Long id) {
LoginUserInfo user = CurrentUserHolder.getUser();
String lockKey = MessageFormat.format(RedisConstant.WALLET_WITHDRAW_LOCK, id);
boolean lock = redisUtil.tryLock(lockKey, id.toString(), 1, TimeUnit.SECONDS);
if (!lock) {
throw new ServiceException(ErrorCodeEnum.TRANSFER_ING);
}
WithdrawApplicationDO withdrawApplicationDO = withdrawApplicationDAO.getById(id);
if (Objects.isNull(withdrawApplicationDO)){
throw new ServiceException(ErrorCodeEnum.WITHDRAW_APPLY_NOT_EXIST);
}
if (!AllocationPayStatusEnum.UNPAID.getStatus().equals(withdrawApplicationDO.getStatus())){
throw new ServiceException(ErrorCodeEnum.NOT_SUPPORT_OPERATION);
}
//开始提现
AccountWithdrawerRequest request = new AccountWithdrawerRequest();
request.setAccNo(withdrawApplicationDO.getAccountNo());
request.setAmount(withdrawApplicationDO.getAmount().toPlainString());
request.setReqNo(withdrawApplicationDO.getWithdrawNo());
request.setWalletType(WalletTypeEnum.ONLINE_BANK.getType());
//AccountWithdrawerDTO accountWithdrawerDTO = walletApiService.accountWithdrawer(request);
AccountWithdrawerDTO accountWithdrawerDTO = new AccountWithdrawerDTO();
accountWithdrawerDTO.setTradeId(11222L);
accountWithdrawerDTO.setAmount("100");
accountWithdrawerDTO.setTradeStatus(1);
withdrawApplicationDO.setStatus(accountWithdrawerDTO.getTradeStatus());
withdrawApplicationDAO.update(withdrawApplicationDO);
//保存交易单
WalletTradeDO walletTrade = new WalletTradeDO();
//支付中 通过查询详情获取是否是否支付成功
walletTrade.setPayStatus(AllocationPayStatusEnum.PAYING.getStatus());
walletTrade.setModule(TRANSFER.getModule());
walletTrade.setPayNo(withdrawApplicationDO.getWithdrawNo());
walletTrade.setTradeId(String.valueOf(accountWithdrawerDTO.getTradeId()));
walletTrade.setType(TradeTypeEnum.FEE_ADJUSTMENT_ORDER.getStatus());
walletTrade.setPayUserName(user.getName());
walletTrade.setPayAmount(new BigDecimal(accountWithdrawerDTO.getAmount()));
walletTrade.setPayStatus(accountWithdrawerDTO.getTradeStatus());
walletTrade.setPayTime(new Date());
walletTrade.setCreateTime(new Date());
walletTradeDAO.insertSelective(walletTrade);
return Boolean.TRUE;
}
@Override
@Transactional
public Boolean updateTrade(WalletTradeDO walletTradeDO) {
log.info("confirmWithdraw_updateTrade:{}", JSONObject.toJSONString(walletTradeDO));
WithdrawApplicationDO withdraw = withdrawApplicationDAO.getByWithdrawNo(walletTradeDO.getPayNo());
if (Objects.isNull(withdraw)){
return Boolean.FALSE;
}
try {
//查询详情
BillDetailRequest billDetailRequest = new BillDetailRequest();
billDetailRequest.setTradeId(Long.valueOf(walletTradeDO.getTradeId()));
TradeRecordDTO billDetail = walletApiService.getBillDetail(billDetailRequest);
withdraw.setFailReason(billDetail.getErrMsg());
withdraw.setStatus(billDetail.getTradeStatus());
withdrawApplicationDAO.update(withdraw);
walletTradeDO.setPayStatus(billDetail.getTradeStatus());
walletTradeDAO.updateByPrimaryKeySelective(walletTradeDO);
}catch (Exception e){
log.info("confirmWithdraw_error:{}",e.getMessage());
}
return Boolean.TRUE;
}
}

View File

@@ -548,7 +548,7 @@ public class PreAllocationRecordServiceImpl implements PreAllocationRecordServic
Map<String, WalletAllocationDTO> allocationConfigMap = walletAllocationConfigDAO
.selectByExpenseTypeList(FranchiseBrandEnum.ZXJP.getCode(), null)
.stream()
.collect(Collectors.toMap(WalletAllocationDTO::getExpenseType, Function.identity()));
.collect(Collectors.toMap(WalletAllocationDTO::getExpenseType, Function.identity(),(existing, replacement) -> existing));
// 获取订单实际费用明细
List<ExpenseTypeAmountDTO> actualExpenseList = storeOrderOptionSnapshotDAO

View File

@@ -282,4 +282,24 @@ public class WalletApiService {
public BatchTransferDTO queryBatchTransfer(BatchTransferQueryRequest request) {
return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/trans/v1/queryBatchTransfer", request, BatchTransferDTO.class);
}
public AccountTransferDTO accountTransfer(AccountTransferRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/trans/v1/accountTransfer", request, AccountTransferDTO.class);
}
public OrgAccountDTO findOrgAccount(AccountPageRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/base/v1/findOrgAccount", request, OrgAccountDTO.class);
}
public AccountWithdrawerDTO accountWithdrawer(AccountWithdrawerRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/trans/v1/accountWithdrawer", request, AccountWithdrawerDTO.class);
}
public AccountInfoDTO getAccountByAccNo(AccountDetailRequest request){
return walletHttpClientRest.postWithSign(walletBaseUrl + "/open/crm/trans/v1/getAccountByAccNo", request, AccountInfoDTO.class);
}
}

View File

@@ -163,9 +163,16 @@ public interface WalletService {
* @param request
* @return
*/
PageInfo<TradeRecordDTO> getTradeRecordList(CoolTradeRecodePageRequest request);
PageInfo<TradeRecordDTO> getTradeRecordList(CoolTradeRecodePageRequest request,Boolean orgFlag);
/**
* 查询充值的数据
* @param request
* @return
*/
PageInfo<TradeRecordDTO> getRechargeTradeRecordList(CoolTradeRecodeRequest request);
/**
* 通过门店Code 查询存量客户开通基本信息
* @param storeCode
@@ -202,4 +209,6 @@ public interface WalletService {
* 网商充值账户查询
*/
WsPayAccountDTO wsPayAccountQuery(StoreShopRequest request);
PageInfo<AccountInfoDTO> getOrgAccountInfoList(CoolAccountPageRequest request);
}