|
|
@@ -1,5 +1,6 @@
|
|
|
package com.sckw.payment.service;
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.github.pagehelper.PageHelper;
|
|
|
import com.github.pagehelper.PageInfo;
|
|
|
import com.sckw.core.common.enums.NumberConstant;
|
|
|
@@ -32,6 +33,8 @@ import com.sckw.redis.config.RedisLockUtil;
|
|
|
import com.sckw.redis.constant.RedisConstant;
|
|
|
import com.sckw.system.api.RemoteSystemService;
|
|
|
import com.sckw.system.api.model.dto.res.UserCacheResDto;
|
|
|
+import io.seata.spring.annotation.GlobalTransactional;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
@@ -70,6 +73,9 @@ public class KwpSettlementWalletService {
|
|
|
@DubboReference(version = "1.0.0", group = "design", check = false)
|
|
|
private TradeOrderInfoService tradeOrderInfoService;
|
|
|
private final KwpSettlementLogisticsTrackMapper kwpSettlementLogisticsTrackMapper;
|
|
|
+ @Resource
|
|
|
+ private KwpLedgerTradeService ledgerTradeService;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 物流-电子钱包付款(货到付款)结算记录-列表
|
|
|
@@ -258,12 +264,14 @@ public class KwpSettlementWalletService {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 销售-付款确认-货到付款
|
|
|
+ * 采购-付款确认-货到付款
|
|
|
*
|
|
|
- * @author Aick Spt
|
|
|
+ * @author xucaiqin
|
|
|
* @date 2023-07-27 16:13
|
|
|
*/
|
|
|
+ @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
|
|
|
public String confirmTradePayment(WalletPayReq walletPayReq) {
|
|
|
+ log.info("采购-付款确认-货到付款:{}", JSONObject.toJSONString(walletPayReq));
|
|
|
String key = String.format(RedisConstant.SETTLEMENT_KEY, walletPayReq.getId());
|
|
|
if (redisLockUtil.tryLock(key)) {
|
|
|
try {
|
|
|
@@ -314,6 +322,7 @@ public class KwpSettlementWalletService {
|
|
|
if (subtract.compareTo(new BigDecimal("0.0")) < NumberConstant.ZERO) {
|
|
|
throw new BusinessException("付款金额不能大于待付款金额");
|
|
|
}
|
|
|
+ /*新增记录*/
|
|
|
//新增电子钱包结算记录
|
|
|
KwpSettlementWallet kwpSettlementWallet = new KwpSettlementWallet();
|
|
|
kwpSettlementWallet.setId(new IdWorker(NumberConstant.ONE).nextId());
|
|
|
@@ -333,7 +342,8 @@ public class KwpSettlementWalletService {
|
|
|
kwpSettlementWallet.setUpdateTime(LocalDateTime.now());
|
|
|
kwpSettlementWallet.setDelFlag(Global.UN_DELETED);
|
|
|
settlementWalletMapper.insert(kwpSettlementWallet);
|
|
|
-
|
|
|
+ //货到付款-更新对账单已付金额
|
|
|
+ ledgerTradeService.updateActualPrice(byId.getLedgerId(), price);
|
|
|
//更新交易结算单状态和金额
|
|
|
KwpSettlementTrade kwpSettlementTrade = new KwpSettlementTrade();
|
|
|
kwpSettlementTrade.setId(byId.getId());
|
|
|
@@ -465,7 +475,9 @@ public class KwpSettlementWalletService {
|
|
|
* @param id 结算单id
|
|
|
* @return
|
|
|
*/
|
|
|
+ @GlobalTransactional(name = "default_tx_group", rollbackFor = Exception.class)
|
|
|
public String confirmTradeCollection(Long id) {
|
|
|
+ log.info("销售预付款确认,结算单id:{}", id);
|
|
|
String key = String.format(RedisConstant.SETTLEMENT_KEY, id);
|
|
|
|
|
|
if (redisLockUtil.tryLock(key)) {
|
|
|
@@ -477,6 +489,10 @@ public class KwpSettlementWalletService {
|
|
|
if (StringUtils.isNotBlank(byId.getTrading()) && !byId.getTrading().startsWith(TradingEnum.PRE_PAY.getValue())) {
|
|
|
throw new BusinessException("只支持预付款交易方式进行预付款确认操作");
|
|
|
}
|
|
|
+ List<KwpLedgerTradeOrder> kwpLedgerTradeOrders = tradeOrderService.queryList(byId.getLedgerId());
|
|
|
+ if (CollectionUtils.isEmpty(kwpLedgerTradeOrders)) {
|
|
|
+ throw new BusinessException("未找到关联的贸易订单");
|
|
|
+ }
|
|
|
//更新交易结算单状态和金额
|
|
|
KwpSettlementTrade kwpSettlementTrade = new KwpSettlementTrade();
|
|
|
kwpSettlementTrade.setId(byId.getId());
|
|
|
@@ -485,6 +501,8 @@ public class KwpSettlementWalletService {
|
|
|
kwpSettlementTrade.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
kwpSettlementTrade.setUpdateTime(LocalDateTime.now());
|
|
|
kwpSettlementTradeService.updateById(kwpSettlementTrade);
|
|
|
+ //预付款-更新对账单已付金额
|
|
|
+ ledgerTradeService.updateActualPrice(byId.gettLedgerId(), byId.getTotalPrice());
|
|
|
//新增电子钱包结算记录
|
|
|
KwpSettlementWallet kwpSettlementWallet = new KwpSettlementWallet();
|
|
|
kwpSettlementWallet.setId(new IdWorker(1).nextId());
|
|
|
@@ -505,8 +523,16 @@ public class KwpSettlementWalletService {
|
|
|
kwpSettlementWallet.setDelFlag(Global.UN_DELETED);
|
|
|
settlementWalletMapper.insert(kwpSettlementWallet);
|
|
|
settlementTradeTrackService.save(KwpSettlementTradeTrack.build(byId.getId(), SettlementTrackEnum.PRE_PAY.getStatus()));
|
|
|
+ //dubbo更新销售订单状态为-已结算
|
|
|
+ for (KwpLedgerTradeOrder kwpLedgerTradeOrder : kwpLedgerTradeOrders) {
|
|
|
+ UpdateOrderStatusParam updateOrderStatusParam = new UpdateOrderStatusParam();
|
|
|
+ updateOrderStatusParam.setTOrderId(kwpLedgerTradeOrder.getTOrderId());
|
|
|
+ updateOrderStatusParam.setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_7.getValue()));
|
|
|
+ updateOrderStatusParam.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ updateOrderStatusParam.setUpdateByName(LoginUserHolder.getUserName());
|
|
|
+ tradeOrderInfoService.updateOrderStatus(updateOrderStatusParam);
|
|
|
+ }
|
|
|
//todo-xcq 调用中台接口
|
|
|
- //todo-xcq 调用订单接口,更新订单状态
|
|
|
return "确认回款成功";
|
|
|
} finally {
|
|
|
redisLockUtil.unlock(key);
|
|
|
@@ -603,6 +629,7 @@ public class KwpSettlementWalletService {
|
|
|
// return data.get(NumberConstant.ZERO);
|
|
|
// return BigDecimal.valueOf(data.get(NumberConstant.ZERO).getMoney() / 100.0);
|
|
|
}
|
|
|
+
|
|
|
private BigDecimal getWalletBalance(List<LedgerUnitDto> listById, String trading) {
|
|
|
Long uid = null;
|
|
|
Long filter = null;
|
|
|
@@ -631,11 +658,12 @@ public class KwpSettlementWalletService {
|
|
|
|
|
|
/**
|
|
|
* 查询结算记录
|
|
|
- * @param id 结算单id
|
|
|
- * @param status 订单类型 1-物流 2-贸易
|
|
|
+ *
|
|
|
+ * @param id 结算单id
|
|
|
+ * @param status 订单类型 1-物流 2-贸易
|
|
|
* @param payType 支付方式 1-预付款、2-货到付款
|
|
|
*/
|
|
|
- public List<SettlementWalletDto> queryList(Long id, int status,Integer payType) {
|
|
|
+ public List<SettlementWalletDto> queryList(Long id, int status, Integer payType) {
|
|
|
SettlementWalletReq settlementWalletReq = new SettlementWalletReq();
|
|
|
settlementWalletReq.setPayType(payType);
|
|
|
settlementWalletReq.setOrderType(status);
|