diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInsuranceInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInsuranceInfo.java
index 784375354..988ada1b9 100644
--- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInsuranceInfo.java
+++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderInsuranceInfo.java
@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import com.jsowell.common.annotation.Excel;
import com.jsowell.common.core.domain.BaseEntity;
+import lombok.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -13,6 +14,11 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author jsowell
* @date 2025-09-05
*/
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
public class OrderInsuranceInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
@@ -39,51 +45,17 @@ public class OrderInsuranceInfo extends BaseEntity {
@Excel(name = "保险支付金额")
private BigDecimal tradeAmount;
+ /**
+ * 退款状态(0-否;1-是)
+ */
+ @Excel(name = "退款状态")
+ private String refundStatus;
+
/**
* 删除标识(0-否;1-是)
*/
private String delFlag;
- public void setId(Long id) {
- this.id = id;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setInsuranceTransactionCode(String insuranceTransactionCode) {
- this.insuranceTransactionCode = insuranceTransactionCode;
- }
-
- public String getInsuranceTransactionCode() {
- return insuranceTransactionCode;
- }
-
- public void setOrderCode(String orderCode) {
- this.orderCode = orderCode;
- }
-
- public String getOrderCode() {
- return orderCode;
- }
-
- public void setTradeAmount(BigDecimal tradeAmount) {
- this.tradeAmount = tradeAmount;
- }
-
- public BigDecimal getTradeAmount() {
- return tradeAmount;
- }
-
- public void setDelFlag(String delFlag) {
- this.delFlag = delFlag;
- }
-
- public String getDelFlag() {
- return delFlag;
- }
-
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)
@@ -91,6 +63,7 @@ public class OrderInsuranceInfo extends BaseEntity {
.append("insuranceTransactionCode", getInsuranceTransactionCode())
.append("orderCode", getOrderCode())
.append("tradeAmount", getTradeAmount())
+ .append("refundStatus", getRefundStatus())
.append("createTime", getCreateTime())
.append("createBy", getCreateBy())
.append("updateTime", getUpdateTime())
diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
index c7af105d9..c654f0d37 100644
--- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
+++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java
@@ -188,6 +188,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
@Autowired
private MemberAdapayRecordService memberAdapayRecordService;
+ @Autowired
+ private IOrderInsuranceInfoService orderInsuranceInfoService;
+
@Autowired
private ClearingBillInfoService clearingBillInfoService;
@@ -869,6 +872,10 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// 白名单支付或者ETC支付
logger.debug("订单:{}使用:{},不退保险费", orderBasicInfo.getOrderCode(), OrderPayModeEnum.getPayModeDescription(payMode));
}
+ // 修改保险订单表的退款状态
+ OrderInsuranceInfo insuranceInfo = orderInsuranceInfoService.getInsuranceInfoByOrderCode(orderBasicInfo.getOrderCode());
+ insuranceInfo.setRefundStatus(Constants.ONE);
+ orderInsuranceInfoService.updateOrderInsuranceInfo(insuranceInfo);
}
/**
@@ -2651,15 +2658,24 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return resultList;
}
- // 如果保险金额大于0,新增一条分账信息
+ // 如果保险金额大于0,并且没有退款,新增一条分账信息
if (orderBasicInfo.getInsuranceAmount().compareTo(BigDecimal.ZERO) > 0) {
- SplitData insuranceSplit = new SplitData();
- insuranceSplit.setMemberId(Constants.ZERO);
- insuranceSplit.setAmount(String.valueOf(orderBasicInfo.getInsuranceAmount()));
- insuranceSplit.setFeeFlag(Constants.N);
- insuranceSplit.setElecAmount(BigDecimal.ZERO);
- insuranceSplit.setServiceAmount(BigDecimal.ZERO);
- resultList.add(insuranceSplit);
+ // 查询该订单的保险退款信息
+ OrderInsuranceInfo insuranceInfo = orderInsuranceInfoService.getInsuranceInfoByOrderCode(orderCode);
+ if (insuranceInfo != null) {
+ String refundStatus = insuranceInfo.getRefundStatus();
+ if (Constants.ZERO.equals(refundStatus)) {
+ // 退款状态为0,未退款
+ SplitData insuranceSplit = new SplitData();
+ insuranceSplit.setMemberId(Constants.ZERO);
+ insuranceSplit.setAmount(String.valueOf(orderBasicInfo.getInsuranceAmount()));
+ insuranceSplit.setFeeFlag(Constants.N);
+ insuranceSplit.setElecAmount(BigDecimal.ZERO);
+ insuranceSplit.setServiceAmount(BigDecimal.ZERO);
+
+ resultList.add(insuranceSplit);
+ }
+ }
}
// 下面进行根据adapayMemberId进行金额累加
@@ -5244,10 +5260,22 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.settleAmount(BigDecimal.ZERO)
.startType(dto.getStartType())
.build();
- if (dto.getInsuranceAmount() != null) {
- if (dto.getInsuranceAmount().compareTo(BigDecimal.ZERO) > 0) {
- orderBasicInfo.setInsuranceAmount(dto.getInsuranceAmount());
- }
+ // 保险金额不为 null 并且 > 0
+ if (dto.getInsuranceAmount() != null && dto.getInsuranceAmount().compareTo(BigDecimal.ZERO) > 0) {
+ orderBasicInfo.setInsuranceAmount(dto.getInsuranceAmount());
+ CompletableFuture.runAsync(() -> {
+ try {
+ // 异步创建保险订单,将信息插入保险订单表
+ OrderInsuranceInfo insuranceInfo = OrderInsuranceInfo.builder()
+ .orderCode(orderCode)
+ .tradeAmount(dto.getInsuranceAmount())
+ .refundStatus(Constants.ZERO)
+ .build();
+ orderInsuranceInfoService.insertOrderInsuranceInfo(insuranceInfo);
+ } catch (Exception e) {
+ logger.error("异步创建保险订单 error", e);
+ }
+ }, executor);
}
if (StringUtils.equals(OrderTypeEnum.MERGE_CHARGE_ORDER.getValue(), dto.getOrderType())) {
// 并充订单
diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInsuranceInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInsuranceInfoServiceImpl.java
index b5a00d71d..fae51b35d 100644
--- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInsuranceInfoServiceImpl.java
+++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInsuranceInfoServiceImpl.java
@@ -62,7 +62,7 @@ public class OrderInsuranceInfoServiceImpl implements IOrderInsuranceInfoService
*/
@Override
public int updateOrderInsuranceInfo(OrderInsuranceInfo orderInsuranceInfo) {
- orderInsuranceInfo.setUpdateTime(DateUtils.getNowDate());
+ // orderInsuranceInfo.setUpdateTime(DateUtils.getNowDate());
return orderInsuranceInfoMapper.updateOrderInsuranceInfo(orderInsuranceInfo);
}
diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderInsuranceInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderInsuranceInfoMapper.xml
index 7c49fe255..21ff15abe 100644
--- a/jsowell-pile/src/main/resources/mapper/pile/OrderInsuranceInfoMapper.xml
+++ b/jsowell-pile/src/main/resources/mapper/pile/OrderInsuranceInfoMapper.xml
@@ -9,6 +9,7 @@
+
@@ -17,12 +18,12 @@
- select id, insurance_transaction_code, order_code, trade_amount, create_time, create_by, update_time, update_by, del_flag from order_insurance_info
+ select id, insurance_transaction_code, order_code, trade_amount, refund_status, create_time, create_by, update_time, update_by, del_flag from order_insurance_info
- id, insurance_transaction_code, order_code, trade_amount, create_time, create_by, update_time, update_by, del_flag
+ id, insurance_transaction_code, order_code, trade_amount, trade_amount, create_time, create_by, update_time, update_by, del_flag