|
@@ -1,8 +1,10 @@
|
|
|
package org.dromara.backstage.business.payments;
|
|
package org.dromara.backstage.business.payments;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
@@ -10,7 +12,6 @@ import lombok.extern.slf4j.Slf4j;
|
|
|
import org.dromara.backstage.basics.domain.vo.PtWorkstationVo;
|
|
import org.dromara.backstage.basics.domain.vo.PtWorkstationVo;
|
|
|
import org.dromara.backstage.basics.service.IPtWorkstationService;
|
|
import org.dromara.backstage.basics.service.IPtWorkstationService;
|
|
|
import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
|
|
import org.dromara.backstage.cardCenter.domain.bo.PtSubsidyitemBo;
|
|
|
-import org.dromara.backstage.cardCenter.domain.vo.PtCardVo;
|
|
|
|
|
import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
|
|
import org.dromara.backstage.cardCenter.domain.vo.PtSubsidyitemVo;
|
|
|
import org.dromara.backstage.cardCenter.service.IPtCardService;
|
|
import org.dromara.backstage.cardCenter.service.IPtCardService;
|
|
|
import org.dromara.backstage.cardCenter.service.IPtSubsidyitemService;
|
|
import org.dromara.backstage.cardCenter.service.IPtSubsidyitemService;
|
|
@@ -25,6 +26,7 @@ import org.dromara.backstage.consumption.service.IXfCreditAccountBackService;
|
|
|
import org.dromara.backstage.consumption.service.IXfCreditAccountService;
|
|
import org.dromara.backstage.consumption.service.IXfCreditAccountService;
|
|
|
import org.dromara.backstage.consumption.service.IXfTermService;
|
|
import org.dromara.backstage.consumption.service.IXfTermService;
|
|
|
import org.dromara.backstage.consumption.service.IXfUserTotalService;
|
|
import org.dromara.backstage.consumption.service.IXfUserTotalService;
|
|
|
|
|
+import org.dromara.backstage.domain.vo.card.PtCardVo;
|
|
|
import org.dromara.backstage.payment.domain.bo.PtBagBo;
|
|
import org.dromara.backstage.payment.domain.bo.PtBagBo;
|
|
|
import org.dromara.backstage.payment.domain.bo.PurseInOutBo;
|
|
import org.dromara.backstage.payment.domain.bo.PurseInOutBo;
|
|
|
import org.dromara.backstage.payment.domain.vo.PtBagVo;
|
|
import org.dromara.backstage.payment.domain.vo.PtBagVo;
|
|
@@ -32,6 +34,7 @@ import org.dromara.backstage.payment.domain.vo.PtUserAccountVo;
|
|
|
import org.dromara.backstage.payment.service.IPtBagService;
|
|
import org.dromara.backstage.payment.service.IPtBagService;
|
|
|
import org.dromara.backstage.payment.service.IPtUserAccountService;
|
|
import org.dromara.backstage.payment.service.IPtUserAccountService;
|
|
|
import org.dromara.common.core.constant.Constants;
|
|
import org.dromara.common.core.constant.Constants;
|
|
|
|
|
+import org.dromara.common.core.constant.DefaultConstants;
|
|
|
import org.dromara.common.core.enums.CreditStatusEnum;
|
|
import org.dromara.common.core.enums.CreditStatusEnum;
|
|
|
import org.dromara.common.core.enums.CreditTypeEnum;
|
|
import org.dromara.common.core.enums.CreditTypeEnum;
|
|
|
import org.dromara.common.core.exception.payments.PaymentsException;
|
|
import org.dromara.common.core.exception.payments.PaymentsException;
|
|
@@ -69,31 +72,55 @@ public class PayBaseBusiness {
|
|
|
private final IXfCreditAccountService creditAccountService;
|
|
private final IXfCreditAccountService creditAccountService;
|
|
|
private final IXfUserTotalService userTotalService;
|
|
private final IXfUserTotalService userTotalService;
|
|
|
private final IPtSubsidyitemService subsidyItemService;
|
|
private final IPtSubsidyitemService subsidyItemService;
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 校验第三方支付是否已入账
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param bo 收支对象
|
|
|
|
|
+ */
|
|
|
|
|
+ public void checkOriginalRecord(PurseInOutBo bo) {
|
|
|
|
|
+ if (ObjUtil.isNotEmpty(bo.getCustomerSn())) {
|
|
|
|
|
+ String customerSn = bo.getCustomerSn();
|
|
|
|
|
+ XfCreditAccountBackBo backBo = new XfCreditAccountBackBo();
|
|
|
|
|
+ backBo.setOriginalId(customerSn);
|
|
|
|
|
+ List<XfCreditAccountBackVo> list = creditAccountBackService.queryList(backBo);
|
|
|
|
|
+ if (CollectionUtil.isNotEmpty(list)) {
|
|
|
|
|
+ if (list.parallelStream().anyMatch(
|
|
|
|
|
+ p -> ObjUtil.isNotEmpty(p.getCreditId()) && ObjectUtil.equals(p.getOriginalId(), customerSn))) {
|
|
|
|
|
+ log.info("[{}订单信息验证失败-[该笔支付已入账]-[{}]", bo.getCreditType().message(), JSONUtil.toJsonStr(bo));
|
|
|
|
|
+ throw new PaymentsException(MessageFormat.format("该笔支付已入账,支付流水号:{0}", customerSn));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 检查资金收支的账户信息,资金收支必须有对应的收支账户
|
|
* 检查资金收支的账户信息,资金收支必须有对应的收支账户
|
|
|
|
|
+ *
|
|
|
* @param orderBo 资金收支业务对象
|
|
* @param orderBo 资金收支业务对象
|
|
|
* @return 账户信息
|
|
* @return 账户信息
|
|
|
*/
|
|
*/
|
|
|
- public PtUserAccountVo checkUserAccount(PurseInOutBo orderBo){
|
|
|
|
|
|
|
+ public PtUserAccountVo checkUserAccount(PurseInOutBo orderBo) {
|
|
|
PtUserAccountVo userAccountVo = userAccountService.queryById(orderBo.getUserId());
|
|
PtUserAccountVo userAccountVo = userAccountService.queryById(orderBo.getUserId());
|
|
|
- if(ObjUtil.isEmpty(userAccountVo)){
|
|
|
|
|
- throw new PaymentsException(MessageFormat.format("无此账户信息,账户Id:{0}",orderBo.getUserId()));
|
|
|
|
|
|
|
+ if (ObjUtil.isEmpty(userAccountVo)) {
|
|
|
|
|
+ throw new PaymentsException(MessageFormat.format("无此账户信息,账户Id:{0}", orderBo.getUserId()));
|
|
|
}
|
|
}
|
|
|
return userAccountVo;
|
|
return userAccountVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 检查资金收支对应的卡片信息,只要开通了一卡通账户就可以资金收支,因此卡片信息是可能为空的
|
|
* 检查资金收支对应的卡片信息,只要开通了一卡通账户就可以资金收支,因此卡片信息是可能为空的
|
|
|
|
|
+ *
|
|
|
* @param orderBo 资金收支业务对象
|
|
* @param orderBo 资金收支业务对象
|
|
|
* @return 卡片信息
|
|
* @return 卡片信息
|
|
|
*/
|
|
*/
|
|
|
- public PtCardVo checkUserCard(PurseInOutBo orderBo){
|
|
|
|
|
|
|
+ public PtCardVo checkUserCard(PurseInOutBo orderBo) {
|
|
|
PtCardVo ptCardVo;
|
|
PtCardVo ptCardVo;
|
|
|
if (orderBo.getCardId() != null && orderBo.getCardId() > 0) {
|
|
if (orderBo.getCardId() != null && orderBo.getCardId() > 0) {
|
|
|
- //如果传入了cardId,根据cardId查询卡片信息
|
|
|
|
|
|
|
+ // 如果传入了cardId,根据cardId查询卡片信息
|
|
|
ptCardVo = cardService.queryById(orderBo.getCardId());
|
|
ptCardVo = cardService.queryById(orderBo.getCardId());
|
|
|
} else {
|
|
} else {
|
|
|
- //查询当前人的正常主卡
|
|
|
|
|
|
|
+ // 查询当前人的正常主卡
|
|
|
ptCardVo = cardService.queryMainCardByUserId(orderBo.getUserId());
|
|
ptCardVo = cardService.queryMainCardByUserId(orderBo.getUserId());
|
|
|
}
|
|
}
|
|
|
return ptCardVo;
|
|
return ptCardVo;
|
|
@@ -101,24 +128,26 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 检查资金收支钱包信息,资金收支必须有对应的收支钱包
|
|
* 检查资金收支钱包信息,资金收支必须有对应的收支钱包
|
|
|
|
|
+ *
|
|
|
* @param orderBo 资金收支业务对象
|
|
* @param orderBo 资金收支业务对象
|
|
|
* @return 钱包信息
|
|
* @return 钱包信息
|
|
|
*/
|
|
*/
|
|
|
- public PtBagVo checkUserBag(PurseInOutBo orderBo){
|
|
|
|
|
|
|
+ public PtBagVo checkUserBag(PurseInOutBo orderBo) {
|
|
|
PtBagVo ptBagVo = bagService.queryByUserBagCode(orderBo.getUserId(), orderBo.getBagCode());
|
|
PtBagVo ptBagVo = bagService.queryByUserBagCode(orderBo.getUserId(), orderBo.getBagCode());
|
|
|
- if(ObjUtil.isEmpty(ptBagVo)){
|
|
|
|
|
- throw new PaymentsException(MessageFormat.format("无此账户钱包信息,账户Id:{0},钱包代码:{1}",orderBo.getUserId(),orderBo.getBagCode()));
|
|
|
|
|
|
|
+ if (ObjUtil.isEmpty(ptBagVo)) {
|
|
|
|
|
+ throw new PaymentsException(MessageFormat.format("无此账户钱包信息,账户Id:{0},钱包代码:{1}", orderBo.getUserId(), orderBo.getBagCode()));
|
|
|
}
|
|
}
|
|
|
return ptBagVo;
|
|
return ptBagVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 检查资金收支消费设备信息,有些收支操作是通过专用消费机操作的,设备信息有可能为空
|
|
* 检查资金收支消费设备信息,有些收支操作是通过专用消费机操作的,设备信息有可能为空
|
|
|
|
|
+ *
|
|
|
* @param orderBo 资金收支业务对象
|
|
* @param orderBo 资金收支业务对象
|
|
|
* @return 设备信息
|
|
* @return 设备信息
|
|
|
*/
|
|
*/
|
|
|
- public XfTermVo checkTerm(PurseInOutBo orderBo){
|
|
|
|
|
- if(orderBo.getTermNo()==null || orderBo.getTermNo()==0L){
|
|
|
|
|
|
|
+ public XfTermVo checkTerm(PurseInOutBo orderBo) {
|
|
|
|
|
+ if (orderBo.getTermNo() == null || orderBo.getTermNo() == 0L) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
return termService.queryByNo(orderBo.getTermNo());
|
|
return termService.queryByNo(orderBo.getTermNo());
|
|
@@ -126,30 +155,33 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 检查资金收支消费工作站信息,有些收支操作是通过工作站操作,工作站信息有可能为空
|
|
* 检查资金收支消费工作站信息,有些收支操作是通过工作站操作,工作站信息有可能为空
|
|
|
|
|
+ *
|
|
|
* @param orderBo 资金收支业务对象
|
|
* @param orderBo 资金收支业务对象
|
|
|
* @return 工作站信息
|
|
* @return 工作站信息
|
|
|
*/
|
|
*/
|
|
|
- public PtWorkstationVo checkWorkStation(PurseInOutBo orderBo){
|
|
|
|
|
- if(orderBo.getStationId()==null || orderBo.getStationId()==0L){
|
|
|
|
|
|
|
+ public PtWorkstationVo checkWorkStation(PurseInOutBo orderBo) {
|
|
|
|
|
+ if (orderBo.getStationId() == null || orderBo.getStationId() == 0L) {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
- //这里的工作站Id实际上对应的是工作站的编号
|
|
|
|
|
- return workstationService.queryById(orderBo.getStationId());
|
|
|
|
|
|
|
+ // 这里的工作站Id实际上对应的是工作站的编号
|
|
|
|
|
+ return workstationService.queryVoByNumber(orderBo.getStationId(), DefaultConstants.TENANT_ID);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 计算收支操作后的钱包余额
|
|
* 计算收支操作后的钱包余额
|
|
|
- * @param bagVo 钱包信息
|
|
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param bagVo 钱包信息
|
|
|
* @param orderBo 收支订单业务对象
|
|
* @param orderBo 收支订单业务对象
|
|
|
*/
|
|
*/
|
|
|
- public void calculateBalance(PtBagVo bagVo,PurseInOutBo orderBo){
|
|
|
|
|
|
|
+ public void calculateBalance(PtBagVo bagVo, PurseInOutBo orderBo) {
|
|
|
if (Objects.requireNonNull(orderBo.getCreditType()) == CreditTypeEnum.COMMISSION_CHARGE) {
|
|
if (Objects.requireNonNull(orderBo.getCreditType()) == CreditTypeEnum.COMMISSION_CHARGE) {
|
|
|
- //管理费实际是不扣钱包余额的
|
|
|
|
|
|
|
+ // 管理费实际是不扣钱包余额的
|
|
|
orderBo.setBalance(bagVo.getBalance());
|
|
orderBo.setBalance(bagVo.getBalance());
|
|
|
} else {
|
|
} else {
|
|
|
orderBo.setBalance(bagVo.getBalance().add(orderBo.getReceiptMoney()));
|
|
orderBo.setBalance(bagVo.getBalance().add(orderBo.getReceiptMoney()));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 收支入账前校验收支原始记录
|
|
* 收支入账前校验收支原始记录
|
|
|
*
|
|
*
|
|
@@ -171,10 +203,11 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 资金收支时计算管理费
|
|
* 资金收支时计算管理费
|
|
|
|
|
+ *
|
|
|
* @param bo 资金收支业务对象
|
|
* @param bo 资金收支业务对象
|
|
|
* @return 管理费收支业务对象
|
|
* @return 管理费收支业务对象
|
|
|
*/
|
|
*/
|
|
|
- public PurseInOutBo computeCommission(PurseInOutBo bo) {
|
|
|
|
|
|
|
+ public PurseInOutBo computeCommission(PurseInOutBo bo) {
|
|
|
if (bo.getTakeCommission().equals(Constants.TAKE_COMMISSION)) {
|
|
if (bo.getTakeCommission().equals(Constants.TAKE_COMMISSION)) {
|
|
|
Long cardType = bo.getCardTypeId();
|
|
Long cardType = bo.getCardTypeId();
|
|
|
if (bo.getCardTypeId() == null) {
|
|
if (bo.getCardTypeId() == null) {
|
|
@@ -182,22 +215,23 @@ public class PayBaseBusiness {
|
|
|
cardType = accountVo.getCardType();
|
|
cardType = accountVo.getCardType();
|
|
|
}
|
|
}
|
|
|
bo.setCardTypeId(cardType);
|
|
bo.setCardTypeId(cardType);
|
|
|
- //如果要收管理费,则计算管理费
|
|
|
|
|
|
|
+ // 如果要收管理费,则计算管理费
|
|
|
PtBagBo bagBo = BeanUtil.copyProperties(bo, PtBagBo.class);
|
|
PtBagBo bagBo = BeanUtil.copyProperties(bo, PtBagBo.class);
|
|
|
BigDecimal commission = cardService.computeCommission(bagBo);
|
|
BigDecimal commission = cardService.computeCommission(bagBo);
|
|
|
if (commission.compareTo(BigDecimal.ZERO) > 0) {
|
|
if (commission.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- //如果管理费>0,是要入资金收支记录的
|
|
|
|
|
|
|
+ // 如果管理费>0,是要入资金收支记录的
|
|
|
PurseInOutBo commissionBo = new PurseInOutBo();
|
|
PurseInOutBo commissionBo = new PurseInOutBo();
|
|
|
BeanUtil.copyProperties(bo, commissionBo);
|
|
BeanUtil.copyProperties(bo, commissionBo);
|
|
|
commissionBo.setReceiptMoney(commission);
|
|
commissionBo.setReceiptMoney(commission);
|
|
|
commissionBo.setCreditType(CreditTypeEnum.COMMISSION_CHARGE);
|
|
commissionBo.setCreditType(CreditTypeEnum.COMMISSION_CHARGE);
|
|
|
- //个人收支入账的金额要减去收掉的管理费
|
|
|
|
|
|
|
+ // 个人收支入账的金额要减去收掉的管理费
|
|
|
bo.setReceiptMoney(bo.getReceiptMoney().subtract(commission));
|
|
bo.setReceiptMoney(bo.getReceiptMoney().subtract(commission));
|
|
|
return commissionBo;
|
|
return commissionBo;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 生成原始收支记录(收支流水备份表)
|
|
* 生成原始收支记录(收支流水备份表)
|
|
|
*
|
|
*
|
|
@@ -208,42 +242,49 @@ public class PayBaseBusiness {
|
|
|
* @param workstationVo 资金收支工作站信息
|
|
* @param workstationVo 资金收支工作站信息
|
|
|
* @return 原始收支记录
|
|
* @return 原始收支记录
|
|
|
*/
|
|
*/
|
|
|
- public XfCreditAccountBackVo createOriginalRecord(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtWorkstationVo workstationVo) {
|
|
|
|
|
|
|
+ public XfCreditAccountBackVo createOriginalRecord(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo,
|
|
|
|
|
+ PtWorkstationVo workstationVo) {
|
|
|
XfCreditAccountBackBo xfCreditaccountbackBo = new XfCreditAccountBackBo();
|
|
XfCreditAccountBackBo xfCreditaccountbackBo = new XfCreditAccountBackBo();
|
|
|
String backId = getRecordKeyId(bo, accountVo, bagVo);
|
|
String backId = getRecordKeyId(bo, accountVo, bagVo);
|
|
|
xfCreditaccountbackBo.setBackId(backId);
|
|
xfCreditaccountbackBo.setBackId(backId);
|
|
|
|
|
|
|
|
- //设置交易数据
|
|
|
|
|
|
|
+ // 设置交易数据
|
|
|
xfCreditaccountbackBo.setCreditTime(new Date());
|
|
xfCreditaccountbackBo.setCreditTime(new Date());
|
|
|
xfCreditaccountbackBo.setCreditType(bo.getCreditType().code().toString());
|
|
xfCreditaccountbackBo.setCreditType(bo.getCreditType().code().toString());
|
|
|
xfCreditaccountbackBo.setReceiptMoney(bo.getReceiptMoney());
|
|
xfCreditaccountbackBo.setReceiptMoney(bo.getReceiptMoney());
|
|
|
xfCreditaccountbackBo.setPayStyle(bo.getPayStyle());
|
|
xfCreditaccountbackBo.setPayStyle(bo.getPayStyle());
|
|
|
xfCreditaccountbackBo.setCreditStatus(CreditStatusEnum.CREATE.code());
|
|
xfCreditaccountbackBo.setCreditStatus(CreditStatusEnum.CREATE.code());
|
|
|
xfCreditaccountbackBo.setUseType(bo.getUseType().code());
|
|
xfCreditaccountbackBo.setUseType(bo.getUseType().code());
|
|
|
- xfCreditaccountbackBo.setOperatorId(bo.getOperatorId());
|
|
|
|
|
|
|
+ xfCreditaccountbackBo.setOperatorId(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
+ xfCreditaccountbackBo.setCreateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
+ xfCreditaccountbackBo.setUpdateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
|
|
|
- //设置交易人数据
|
|
|
|
|
|
|
+ // 设置交易人数据
|
|
|
xfCreditaccountbackBo.setUserId(bo.getUserId());
|
|
xfCreditaccountbackBo.setUserId(bo.getUserId());
|
|
|
|
|
|
|
|
- //设置交易卡片数据mq
|
|
|
|
|
|
|
+ // 设置交易卡片数据mq
|
|
|
if (ObjUtil.isNotEmpty(cardVo)) {
|
|
if (ObjUtil.isNotEmpty(cardVo)) {
|
|
|
xfCreditaccountbackBo.setCardNo(cardVo.getCardNo());
|
|
xfCreditaccountbackBo.setCardNo(cardVo.getCardNo());
|
|
|
}
|
|
}
|
|
|
- //设置账户钱包信息
|
|
|
|
|
|
|
+ // 设置账户钱包信息
|
|
|
xfCreditaccountbackBo.setBagType(bagVo.getBagCode());
|
|
xfCreditaccountbackBo.setBagType(bagVo.getBagCode());
|
|
|
xfCreditaccountbackBo.setCardValue(bo.getBalance());
|
|
xfCreditaccountbackBo.setCardValue(bo.getBalance());
|
|
|
|
|
|
|
|
- //设置交易设备信息
|
|
|
|
|
|
|
+ // 设置交易设备信息
|
|
|
if (ObjUtil.isNotEmpty(termVo)) {
|
|
if (ObjUtil.isNotEmpty(termVo)) {
|
|
|
xfCreditaccountbackBo.setTermNo(termVo.getTermNo());
|
|
xfCreditaccountbackBo.setTermNo(termVo.getTermNo());
|
|
|
xfCreditaccountbackBo.setTermRecordId(bo.getTermRecordId());
|
|
xfCreditaccountbackBo.setTermRecordId(bo.getTermRecordId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //设置交易工作站信息
|
|
|
|
|
|
|
+ // 设置交易工作站信息
|
|
|
if (ObjUtil.isNotEmpty(workstationVo)) {
|
|
if (ObjUtil.isNotEmpty(workstationVo)) {
|
|
|
- xfCreditaccountbackBo.setStationId(workstationVo.getStationId());
|
|
|
|
|
|
|
+ xfCreditaccountbackBo.setStationId(workstationVo.getStationNumb());
|
|
|
|
|
+ }
|
|
|
|
|
+ // 如果有第三方支付的流水号,需要记入
|
|
|
|
|
+ if (ObjUtil.isNotEmpty(bo.getCustomerSn())) {
|
|
|
|
|
+ xfCreditaccountbackBo.setOriginalId(bo.getCustomerSn());
|
|
|
}
|
|
}
|
|
|
- //原始订单入库
|
|
|
|
|
|
|
+ // 原始订单入库
|
|
|
XfCreditAccountBackVo creditAccountBackVo = creditAccountBackService.createOriginalRecord(xfCreditaccountbackBo);
|
|
XfCreditAccountBackVo creditAccountBackVo = creditAccountBackService.createOriginalRecord(xfCreditaccountbackBo);
|
|
|
if (ObjUtil.isEmpty(creditAccountBackVo)) {
|
|
if (ObjUtil.isEmpty(creditAccountBackVo)) {
|
|
|
String message = MessageUtils.message("payments.OriginalRecord.create", JSONUtil.parse(bo));
|
|
String message = MessageUtils.message("payments.OriginalRecord.create", JSONUtil.parse(bo));
|
|
@@ -263,47 +304,51 @@ public class PayBaseBusiness {
|
|
|
* @param originalId 原始收支记录Id(收支备份表主键)
|
|
* @param originalId 原始收支记录Id(收支备份表主键)
|
|
|
* @return 正式收支记录
|
|
* @return 正式收支记录
|
|
|
*/
|
|
*/
|
|
|
- public XfCreditAccountVo keepAccounts(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo, PtWorkstationVo workstationVo, String originalId) {
|
|
|
|
|
|
|
+ public XfCreditAccountVo keepAccounts(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo, PtBagVo bagVo, XfTermVo termVo,
|
|
|
|
|
+ PtWorkstationVo workstationVo, String originalId) {
|
|
|
XfCreditAccountBo xfCreditaccountbo = new XfCreditAccountBo();
|
|
XfCreditAccountBo xfCreditaccountbo = new XfCreditAccountBo();
|
|
|
String accountId = getRecordKeyId(bo, accountVo, bagVo);
|
|
String accountId = getRecordKeyId(bo, accountVo, bagVo);
|
|
|
xfCreditaccountbo.setCreditId(accountId);
|
|
xfCreditaccountbo.setCreditId(accountId);
|
|
|
|
|
|
|
|
- //设置交易数据
|
|
|
|
|
|
|
+ // 设置交易数据
|
|
|
xfCreditaccountbo.setCreditTime(DateUtil.date());
|
|
xfCreditaccountbo.setCreditTime(DateUtil.date());
|
|
|
xfCreditaccountbo.setCreditType(bo.getCreditType().code().toString());
|
|
xfCreditaccountbo.setCreditType(bo.getCreditType().code().toString());
|
|
|
xfCreditaccountbo.setReceiptMoney(bo.getReceiptMoney());
|
|
xfCreditaccountbo.setReceiptMoney(bo.getReceiptMoney());
|
|
|
xfCreditaccountbo.setPayStyle(bo.getPayStyle());
|
|
xfCreditaccountbo.setPayStyle(bo.getPayStyle());
|
|
|
xfCreditaccountbo.setUseType(bo.getUseType().code());
|
|
xfCreditaccountbo.setUseType(bo.getUseType().code());
|
|
|
|
|
|
|
|
- //设置交易账户信息
|
|
|
|
|
|
|
+ // 设置交易账户信息
|
|
|
xfCreditaccountbo.setUserId(accountVo.getUserId());
|
|
xfCreditaccountbo.setUserId(accountVo.getUserId());
|
|
|
xfCreditaccountbo.setUserNumb(accountVo.getUserNumb());
|
|
xfCreditaccountbo.setUserNumb(accountVo.getUserNumb());
|
|
|
xfCreditaccountbo.setRealName(accountVo.getRealName());
|
|
xfCreditaccountbo.setRealName(accountVo.getRealName());
|
|
|
xfCreditaccountbo.setDeptId(accountVo.getDeptId());
|
|
xfCreditaccountbo.setDeptId(accountVo.getDeptId());
|
|
|
xfCreditaccountbo.setDeptName(accountVo.getDeptName());
|
|
xfCreditaccountbo.setDeptName(accountVo.getDeptName());
|
|
|
- //设置设备信息
|
|
|
|
|
- if(ObjUtil.isNotEmpty(termVo)) {
|
|
|
|
|
|
|
+ // 设置设备信息
|
|
|
|
|
+ if (ObjUtil.isNotEmpty(termVo)) {
|
|
|
xfCreditaccountbo.setTermNo(termVo.getTermNo());
|
|
xfCreditaccountbo.setTermNo(termVo.getTermNo());
|
|
|
xfCreditaccountbo.setTermName(termVo.getTermName());
|
|
xfCreditaccountbo.setTermName(termVo.getTermName());
|
|
|
xfCreditaccountbo.setTermRecordId(bo.getTermRecordId());
|
|
xfCreditaccountbo.setTermRecordId(bo.getTermRecordId());
|
|
|
}
|
|
}
|
|
|
- if(ObjUtil.isNotEmpty(workstationVo)) {
|
|
|
|
|
- //设置工作站信息
|
|
|
|
|
|
|
+ if (ObjUtil.isNotEmpty(workstationVo)) {
|
|
|
|
|
+ // 设置工作站信息
|
|
|
xfCreditaccountbo.setStationNumb(workstationVo.getStationNumb());
|
|
xfCreditaccountbo.setStationNumb(workstationVo.getStationNumb());
|
|
|
xfCreditaccountbo.setStationName(workstationVo.getStationName());
|
|
xfCreditaccountbo.setStationName(workstationVo.getStationName());
|
|
|
}
|
|
}
|
|
|
- //设置卡片信息
|
|
|
|
|
|
|
+ // 设置卡片信息
|
|
|
xfCreditaccountbo.setCardNo(cardVo.getCardNo());
|
|
xfCreditaccountbo.setCardNo(cardVo.getCardNo());
|
|
|
xfCreditaccountbo.setCardType(cardVo.getCardType());
|
|
xfCreditaccountbo.setCardType(cardVo.getCardType());
|
|
|
xfCreditaccountbo.setCardCount(bagVo.getRechargeCount() + 1);
|
|
xfCreditaccountbo.setCardCount(bagVo.getRechargeCount() + 1);
|
|
|
xfCreditaccountbo.setCardTypeName(cardVo.getCardTypeName());
|
|
xfCreditaccountbo.setCardTypeName(cardVo.getCardTypeName());
|
|
|
xfCreditaccountbo.setMainCard(cardVo.getMainCard());
|
|
xfCreditaccountbo.setMainCard(cardVo.getMainCard());
|
|
|
- //设置钱包信息
|
|
|
|
|
|
|
+ // 设置钱包信息
|
|
|
xfCreditaccountbo.setBagType(bagVo.getBagCode());
|
|
xfCreditaccountbo.setBagType(bagVo.getBagCode());
|
|
|
xfCreditaccountbo.setCardValue(bo.getBalance());
|
|
xfCreditaccountbo.setCardValue(bo.getBalance());
|
|
|
// 设置操作员信息
|
|
// 设置操作员信息
|
|
|
- xfCreditaccountbo.setOperatorName(bo.getOperatorName());
|
|
|
|
|
- xfCreditaccountbo.setOperatorId(bo.getOperatorId());
|
|
|
|
|
|
|
+ xfCreditaccountbo.setOperatorName(ObjectUtil.isEmpty(bo.getOperatorName()) ? accountVo.getRealName() : bo.getOperatorName());
|
|
|
|
|
+ xfCreditaccountbo.setOperatorId(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
+
|
|
|
|
|
+ xfCreditaccountbo.setCreateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
+ xfCreditaccountbo.setUpdateBy(ObjectUtil.isEmpty(bo.getOperatorId()) ? bo.getUserId() : bo.getOperatorId());
|
|
|
|
|
|
|
|
xfCreditaccountbo.setOriginalId(originalId);
|
|
xfCreditaccountbo.setOriginalId(originalId);
|
|
|
|
|
|
|
@@ -317,9 +362,10 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 处理个人日统计表
|
|
* 处理个人日统计表
|
|
|
- * @param bo 收支信息
|
|
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param bo 收支信息
|
|
|
* @param accountVo 账户信息
|
|
* @param accountVo 账户信息
|
|
|
- * @param cardVo 账户卡片信息
|
|
|
|
|
|
|
+ * @param cardVo 账户卡片信息
|
|
|
*/
|
|
*/
|
|
|
public void createOrUpdateUserTotal(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo) {
|
|
public void createOrUpdateUserTotal(PurseInOutBo bo, PtUserAccountVo accountVo, PtCardVo cardVo) {
|
|
|
XfUserTotalBo xfUserTotalBo = new XfUserTotalBo();
|
|
XfUserTotalBo xfUserTotalBo = new XfUserTotalBo();
|
|
@@ -341,6 +387,7 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 更新钱包余额
|
|
* 更新钱包余额
|
|
|
|
|
+ *
|
|
|
* @param bo 收支业务对象
|
|
* @param bo 收支业务对象
|
|
|
* @return 更新后钱包余额
|
|
* @return 更新后钱包余额
|
|
|
*/
|
|
*/
|
|
@@ -351,8 +398,9 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 更新原始订单的入账状态
|
|
* 更新原始订单的入账状态
|
|
|
- * @param bo 收支信息
|
|
|
|
|
- * @param status 入账状态
|
|
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param bo 收支信息
|
|
|
|
|
+ * @param status 入账状态
|
|
|
* @param cardValue 入账后账户余额
|
|
* @param cardValue 入账后账户余额
|
|
|
*/
|
|
*/
|
|
|
public void updateOriginalOrderStatus(PurseInOutBo bo, Integer status, BigDecimal cardValue) {
|
|
public void updateOriginalOrderStatus(PurseInOutBo bo, Integer status, BigDecimal cardValue) {
|
|
@@ -361,20 +409,23 @@ public class PayBaseBusiness {
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 获取待入账的补助明细
|
|
* 获取待入账的补助明细
|
|
|
|
|
+ *
|
|
|
* @return 补助明细
|
|
* @return 补助明细
|
|
|
*/
|
|
*/
|
|
|
- public List<PtSubsidyitemVo> selectPostSubsidyItem(){
|
|
|
|
|
|
|
+ public List<PtSubsidyitemVo> selectPostSubsidyItem() {
|
|
|
return subsidyItemService.selectPostSubsidyItem();
|
|
return subsidyItemService.selectPostSubsidyItem();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 更新补助明细的到账状态
|
|
* 更新补助明细的到账状态
|
|
|
|
|
+ *
|
|
|
* @param bo 补助明细
|
|
* @param bo 补助明细
|
|
|
* @return 更新状态
|
|
* @return 更新状态
|
|
|
*/
|
|
*/
|
|
|
- public boolean updatePostSubsidyItemStatus(PtSubsidyitemBo bo){
|
|
|
|
|
|
|
+ public boolean updatePostSubsidyItemStatus(PtSubsidyitemBo bo) {
|
|
|
return subsidyItemService.updateByBo(bo);
|
|
return subsidyItemService.updateByBo(bo);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 生成资金收支备份表和收支表的32位主键Id
|
|
* 生成资金收支备份表和收支表的32位主键Id
|
|
|
*
|
|
*
|
|
@@ -392,6 +443,7 @@ public class PayBaseBusiness {
|
|
|
} else {
|
|
} else {
|
|
|
key3 = bo.getReceiptMoney().negate().multiply(a).intValue();
|
|
key3 = bo.getReceiptMoney().negate().multiply(a).intValue();
|
|
|
}
|
|
}
|
|
|
- return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getCreditType().code().toString()), Integer.parseInt(accountVo.getUserNo().toString()), key3, Integer.parseInt(bagVo.getBagCode()));
|
|
|
|
|
|
|
+ return RecordIdUtils.getRecordId(new Date(), Short.parseShort(bo.getCreditType().code().toString()),
|
|
|
|
|
+ Integer.parseInt(accountVo.getUserNo().toString()), key3, Integer.parseInt(bagVo.getBagCode()));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|