## 订单支付时间正向、逆向处理;

This commit is contained in:
cabbage 2025-10-28 15:52:59 +08:00
parent 9b9e81e75e
commit dca8e9dc7c
4 changed files with 51 additions and 51 deletions

View File

@ -87,23 +87,23 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@DubboReference
IMemberServiceApi iMemberServiceApi;
@DubboReference
IMemberBankServiceApi memberBankServiceApi;
IMemberBankServiceApi iMemberBankServiceApi;
@DubboReference
IMemberAccountServiceApi memberAccountServiceApi;
IMemberAccountServiceApi iMemberAccountServiceApi;
@DubboReference
IAreaCurrencyServiceApi areaCurrencyServiceApi;
IAreaCurrencyServiceApi iAreaCurrencyServiceApi;
@DubboReference
ICountryServiceApi countryServiceApi;
ICountryServiceApi iCountryServiceApi;
@DubboReference
ICurrencyServiceApi currencyServiceApi;
ICurrencyServiceApi iCurrencyServiceApi;
@DubboReference
IApprovalServiceApi approvalServiceApi;
IApprovalServiceApi iApprovalServiceApi;
@DubboReference
ISystemConfigServiceApi systemConfigServiceApi;
ISystemConfigServiceApi iSystemConfigServiceApi;
@DubboReference
ICuMemberServiceLogServiceApi cuMemberServiceLogServiceApi;
ICuMemberServiceLogServiceApi iCuMemberServiceLogServiceApi;
@DubboReference
IMemberTradeServiceApi memberTradeServiceApi;
IMemberTradeServiceApi iMemberTradeServiceApi;
@DubboReference
IGradeServiceApi iGradeServiceApi;
@ -207,7 +207,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public List<CuMemberAccountExt> queryMemberAccountByCondition(CuMemberAccount cuMemberAccount) {
return memberAccountServiceApi.queryMemberAccountByCondition(cuMemberAccount).getData();
return iMemberAccountServiceApi.queryMemberAccountByCondition(cuMemberAccount).getData();
}
@Override
@ -232,13 +232,13 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
cuMemberAccount.setMemberCode(creator.getMemberCode());
// 查询专区所属币种
List<AreaCurrencyDTO> areaCurrencyDTOList = areaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrder.getOrderType(), cuMemberAccount.getPkCountry()).getData();
List<AreaCurrencyDTO> areaCurrencyDTOList = iAreaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrder.getOrderType(), cuMemberAccount.getPkCountry()).getData();
// 验证是否是跨国保单登录结算国=结算国跨国报单修改支付金额
if (!Objects.equals(cuMemberAccount.getPkCountry(), saOrder.getPkCountry())) {
// 结算国当地币 转美金 美金登录当地币
CurrencyDTO loginCountryCurrency = currencyServiceApi.getCurrency(cuMemberAccount.getPkCountry()).getData();
CurrencyDTO settleCountryCurrency = currencyServiceApi.getCurrency(saOrder.getPkCountry()).getData();
CurrencyDTO loginCountryCurrency = iCurrencyServiceApi.getCurrency(cuMemberAccount.getPkCountry()).getData();
CurrencyDTO settleCountryCurrency = iCurrencyServiceApi.getCurrency(saOrder.getPkCountry()).getData();
if (settleCountryCurrency.getInExchangeRate().compareTo(loginCountryCurrency.getInExchangeRate()) != 0) {
// 订单结算国与登录结算国汇率不相同才进行处理
payMoney = ComputeUtil.computeMultiply(ComputeUtil.computeDivide(payMoney, settleCountryCurrency.getInExchangeRate()), loginCountryCurrency.getInExchangeRate());
@ -252,7 +252,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (saOrderItems.getPkSpecialCurrency() != null) {
BigDecimal orderItemPayMoney = ComputeUtil.computeMultiply(saOrderItems.getPrice(), saOrderItems.getQuantity());
payMoney = ComputeUtil.computeSubtract(payMoney, orderItemPayMoney);
List<AreaCurrencyDTO> areaCurrencyDtoList = areaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrderItems.getPkSpecialCurrency()).getData();
List<AreaCurrencyDTO> areaCurrencyDtoList = iAreaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrderItems.getPkSpecialCurrency()).getData();
if (!handleSaOrderAmount(saOrder, orderItemList, cuMemberAccount, orderItemPayMoney, BigDecimal.ZERO, areaCurrencyDtoList)) {
return null;
}
@ -287,7 +287,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (EOrderType.REGISTER_ORDER.getValue() == saOrder.getOrderType()) {
if (cuMemberAccount.getPayAccount3Flag()) {
// 验证是否有政策币权限
List<CuMemberServiceLog> cuMemberServiceLogs = cuMemberServiceLogServiceApi.queryMaxCuMemberServiceLog(cuMemberAccount.getPkMember(), Collections.singletonList(EApprovalBusiness.POLICY_CURRENCY_YES_NO.getValue()));
List<CuMemberServiceLog> cuMemberServiceLogs = iCuMemberServiceLogServiceApi.queryMaxCuMemberServiceLog(cuMemberAccount.getPkMember(), Collections.singletonList(EApprovalBusiness.POLICY_CURRENCY_YES_NO.getValue()));
if (CollectionUtil.isNotEmpty(cuMemberServiceLogs)) {
Map<Integer, CuMemberServiceLog> cuMemberServiceLogMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberServiceLogs.size()));
cuMemberServiceLogs.forEach(serviceLog -> cuMemberServiceLogMap.put(serviceLog.getEditType(), serviceLog));
@ -474,7 +474,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
|| orderBlankRegParams.getProcessType() == EProcessType.DOUBLEAVOID.getValue()) {
//添加修改记录表数据
memberLog.setApproveStatus(EApproveStatus.FINISH.getValue());
cuMemberServiceLogServiceApi.insert(memberLog);
iCuMemberServiceLogServiceApi.insert(memberLog);
// 主要业务
//创建用户
CuMemberExt memberExt = createMember(orderBlankRegParams);
@ -495,12 +495,12 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
Set<Long> memberSet = new HashSet<>();
memberSet.add(loginUser.getUserId());
memberLog.setApproveStatus(EApproveStatus.ALREADY_SUBMIT.getValue());
cuMemberServiceLogServiceApi.insert(memberLog);
iCuMemberServiceLogServiceApi.insert(memberLog);
ApprovalSubmitDTO approvalSubmitDTO = ApprovalSubmitDTO.builder().eApprovalBusiness(EApprovalBusiness.EMPTY_ORDER)
.businessCode(code)
.signType(ESignType.getEnumByValue(orderBlankRegParams.getSignType()))
.remark(orderBlankRegParams.getRemark()).pkMemberList(memberSet).build();
R<String> submit = approvalServiceApi.submit(approvalSubmitDTO, loginUser);
R<String> submit = iApprovalServiceApi.submit(approvalSubmitDTO, loginUser);
if (!submit.isSuccess()) {
log.error("====" + submit.getData());
throw new ServiceException(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_UPDATE_PETITION));
@ -513,7 +513,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
businessCommissionDTO.setPkCountry(pkCountry);
businessCommissionDTO.setMemberAmountDTOList(orderBlankRegParams.getMemberAmountDTOList());
businessCommissionDTO.setTradeType(EApprovalBusiness.EMPTY_ORDER.getValue());
R<Boolean> b = memberTradeServiceApi.businessCommissionSubmit(businessCommissionDTO);
R<Boolean> b = iMemberTradeServiceApi.businessCommissionSubmit(businessCommissionDTO);
if (!b.getData()) {
throw new ServiceException(TransactionUtils.getContent(ConfigMsgConstants.MEMBER_UPDATE_CODE_MONEY));
}
@ -533,7 +533,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
saOrder.setOrderCode(orderCode);
// 虚拟订单
saOrder.setOrderType(EOrderType.FICTITIOUS_ORDER.getValue());
R<CurrencyDTO> currency = currencyServiceApi.getCurrency(orderBlankRegParams.getPkSettleCountry());
R<CurrencyDTO> currency = iCurrencyServiceApi.getCurrency(orderBlankRegParams.getPkSettleCountry());
saOrder.setPkRate(currency.getData().getPkId());
saOrder.setOrderAmount(orderBlankRegParams.getRegisterPrice());
saOrder.setOrderAchieve(orderBlankRegParams.getRegisterPv());
@ -605,7 +605,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
memberBank.setPhone(orderBlankRegParams.getReservedPhone());
memberBank.setIdCard(orderBlankRegParams.getIdCard());
memberBank.setPkMember(member.getPkId());
memberBankServiceApi.addBankInfo(memberBank);
iMemberBankServiceApi.addBankInfo(memberBank);
}
return saOrder;
}
@ -823,7 +823,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public String querySystemConfigByKey(Integer pkCountry, String key) {
return systemConfigServiceApi.getBonusSystemConfig(pkCountry, key).getData();
return iSystemConfigServiceApi.getBonusSystemConfig(pkCountry, key).getData();
}
@Override
@ -995,7 +995,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public Boolean regEmptyOrderApproved(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
R<CuMemberServiceLog> cuMemberServiceLogR = cuMemberServiceLogServiceApi.selectByBusinessNo(approvalBusinessResultDTO.getBusinessCode());
R<CuMemberServiceLog> cuMemberServiceLogR = iCuMemberServiceLogServiceApi.selectByBusinessNo(approvalBusinessResultDTO.getBusinessCode());
OrderBlankRegParams orderBlankRegParams = JSONUtil.toBean(cuMemberServiceLogR.getData().getNewValue(), OrderBlankRegParams.class);
// 调用空单注册方法
this.registerEmptyOrder(orderBlankRegParams);
@ -1004,14 +1004,14 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public Boolean regEmptyOrderReject(ApprovalBusinessResultDTO approvalBusinessResultDTO) {
R<CuMemberServiceLog> cuMemberServiceLogR = cuMemberServiceLogServiceApi.selectByBusinessNo(approvalBusinessResultDTO.getBusinessCode());
R<CuMemberServiceLog> cuMemberServiceLogR = iCuMemberServiceLogServiceApi.selectByBusinessNo(approvalBusinessResultDTO.getBusinessCode());
OrderBlankRegParams orderBlankRegParams = JSONUtil.toBean(cuMemberServiceLogR.getData().getNewValue(), OrderBlankRegParams.class);
CuMemberServiceLog memberLog = new CuMemberServiceLog();
memberLog.setBusinessNo(approvalBusinessResultDTO.getBusinessCode());
memberLog.setPkModified(approvalBusinessResultDTO.getLoginUser().getUserId());
memberLog.setModifiedTime(DateUtils.currentDateTime());
memberLog.setApproveStatus(EApproveStatus.REJECTED.getValue());
cuMemberServiceLogServiceApi.updateByBusinessNo(memberLog);
iCuMemberServiceLogServiceApi.updateByBusinessNo(memberLog);
List<MemberAmountDTO> memberAmountDTOList = new ArrayList<>();
MemberAmountDTO memberAmountDTO = new MemberAmountDTO();
memberAmountDTO.setPkMember(approvalBusinessResultDTO.getLoginUser().getUserId());
@ -1026,7 +1026,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
businessCommissionDTO.setPkCountry(orderBlankRegParams.getPkCountry());
businessCommissionDTO.setMemberAmountDTOList(memberAmountDTOList);
businessCommissionDTO.setTradeType(EApprovalBusiness.UPDATE_SETTLE_COUNTRY.getValue());
R<Boolean> b = memberTradeServiceApi.businessCommissionSubmit(businessCommissionDTO);
R<Boolean> b = iMemberTradeServiceApi.businessCommissionSubmit(businessCommissionDTO);
if (!b.getData()) {
throw new ServiceException(ConfigMsgConstants.MEMBER_UPDATE_CODE_MONEY);
}
@ -1035,9 +1035,9 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
@Override
public void closeOrder() {
R<Map<String, String>> configMap = systemConfigServiceApi.getSystemConfig();
R<Map<String, String>> configMap = iSystemConfigServiceApi.getSystemConfig();
Map<String, String> configDate = configMap.getData();
R<Map<Integer, BdCountry>> all = countryServiceApi.getAllCountryMap();
R<Map<Integer, BdCountry>> all = iCountryServiceApi.getAllCountryMap();
Set<Map.Entry<Integer, BdCountry>> entries = all.getData().entrySet();
for (Map.Entry<Integer, BdCountry> entry : entries) {
@ -1088,7 +1088,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
public CuMemberMyMarketVO selectMyMarket(Long pkMember, Integer pkCountry) {
//查询全国市场
CuMemberMyMarketVO cuMemberMyMarketVO = baseMapper.selectMyMarket(null, pkCountry);
CountryDTO country = countryServiceApi.getCountry(pkCountry).getData();
CountryDTO country = iCountryServiceApi.getCountry(pkCountry).getData();
//查询市场分布
List<CuMemberMyMarketDetailVO> cuMemberMyMarketDetailVOList = baseMapper.selectMyMarketDetail(pkMember, pkCountry);
cuMemberMyMarketVO.setMyMarketDetailVOList(cuMemberMyMarketDetailVOList);
@ -1221,10 +1221,10 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
cuMemberAccount.setMemberCode(creator.getMemberCode());
// 查询专区所属币种
List<AreaCurrencyDTO> areaCurrencyDTOList = areaCurrencyServiceApi.queryAreaCurrencyByCondition(ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType()), cuMemberAccount.getPkCountry()).getData();
List<AreaCurrencyDTO> areaCurrencyDTOList = iAreaCurrencyServiceApi.queryAreaCurrencyByCondition(ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType()), cuMemberAccount.getPkCountry()).getData();
// 验证会员是否存在特殊消费配置
List<AreaCurrencyDTO> memberCurrencyDTOList = areaCurrencyServiceApi.queryMemberCurrency(ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType()), cuMemberAccount.getPkMember()).getData();
List<AreaCurrencyDTO> memberCurrencyDTOList = iAreaCurrencyServiceApi.queryMemberCurrency(ESpecialArea.getRetailSpecialAreaValue(saOrder.getOrderType()), cuMemberAccount.getPkMember()).getData();
if (CollectionUtil.isNotEmpty(memberCurrencyDTOList)) {
areaCurrencyDTOList = memberCurrencyDTOList;
} else {
@ -1234,7 +1234,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (saOrderItems.getPkSpecialCurrency() != null) {
BigDecimal orderItemPayMoney = ComputeUtil.computeMultiply(saOrderItems.getPrice(), saOrderItems.getQuantity());
payMoney = ComputeUtil.computeSubtract(payMoney, orderItemPayMoney);
List<AreaCurrencyDTO> areaCurrencyDtoList = areaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrderItems.getPkSpecialCurrency()).getData();
List<AreaCurrencyDTO> areaCurrencyDtoList = iAreaCurrencyServiceApi.queryAreaCurrencyByCondition(saOrderItems.getPkSpecialCurrency()).getData();
if (!handleRetailSaOrderAmount(saOrder, cuMemberAccount, orderItemPayMoney, BigDecimal.ZERO, areaCurrencyDtoList)) {
return null;
@ -1281,7 +1281,7 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
if (EOrderType.RETAIL_REGISTER.getValue() == saOrder.getOrderType()) {
if (cuMemberAccount.getPayAccount3Flag()) {
// 验证是否有政策币权限
List<CuMemberServiceLog> cuMemberServiceLogs = cuMemberServiceLogServiceApi.queryMaxCuMemberServiceLog(cuMemberAccount.getPkMember(), Collections.singletonList(EApprovalBusiness.POLICY_CURRENCY_YES_NO.getValue()));
List<CuMemberServiceLog> cuMemberServiceLogs = iCuMemberServiceLogServiceApi.queryMaxCuMemberServiceLog(cuMemberAccount.getPkMember(), Collections.singletonList(EApprovalBusiness.POLICY_CURRENCY_YES_NO.getValue()));
if (CollectionUtil.isNotEmpty(cuMemberServiceLogs)) {
Map<Integer, CuMemberServiceLog> cuMemberServiceLogMap = new HashMap<>(ComputeUtil.mapInitCapacity(cuMemberServiceLogs.size()));
cuMemberServiceLogs.forEach(serviceLog -> cuMemberServiceLogMap.put(serviceLog.getEditType(), serviceLog));
@ -1408,6 +1408,21 @@ public class SaOrderServiceImpl extends ServiceImpl<SaOrderMapper, SaOrder> impl
}
}
if (EOrderType.RETAIL_REGISTER.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_UPGRADE.getValue() == saOrderExt.getOrderType()
|| EOrderType.RETAIL_REPURCHASE.getValue() == saOrderExt.getOrderType()) {
// 判断处理支付状态和时间
Date firstPayTime = baseMapper.getFirstPayTime(saOrderExt.getPkMember());
if (null == firstPayTime) {
cuMember.setPayTime(null);
cuMember.setPayStatus(EPayStatus.UNPAID.getValue());
} else {
if (firstPayTime.compareTo(cuMember.getPayTime()) < 0) {
cuMember.setPayTime(firstPayTime);
}
}
}
if (!iMemberServiceApi.normalRevokeOrder(pkApprove, saOrderExt, cuMember, businessCommissionDTO).getData()) {
throw new ServiceException("撤单处理会员失败");
}

View File

@ -1308,8 +1308,7 @@
where so.del_flag = 0
and so.order_status = 1
and so.pk_member = #{pkMember}
and so.order_type in (41, 42)
and so.box_num != 0
and so.order_type in (41, 42, 43)
</select>
<select id="queryRefundList" resultType="com.hzs.common.domain.third.pay.ext.TOnlineRefundExt">

View File

@ -460,12 +460,6 @@ public class EnumsInitController {
for (EPayBusinessType value : EPayBusinessType.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
/**
* 支付状态
*/
for (EPayStatus value : EPayStatus.values()) {
initList.add(this.createData(value.getKey(), value.getLabel()));
}
/**
* 支付渠道
*/

View File

@ -1,27 +1,23 @@
package com.hzs.common.core.enums;
import com.hzs.common.core.constant.EnumsPrefixConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 支付状态
*
* @author: hzs
*/
@AllArgsConstructor
@Getter
public enum EPayStatus {
/**
* 未支付
*/
UNPAID(0, "未支付", EnumsPrefixConstants.PAY_STATUS + "0"),
UNPAID(0, "未支付"),
/**
* 已支付
*/
PAID(1, "已支付", EnumsPrefixConstants.PAY_STATUS + "1"),
PAID(1, "已支付"),
;
@ -33,9 +29,5 @@ public enum EPayStatus {
* 显示标签
*/
private final String label;
/**
* 国际化翻译key值
*/
private final String key;
}