1
zj
2025-10-11 2c7b7986f347961adec433e378a1f82434c7150e
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
@@ -20,8 +20,10 @@
import com.ruoyi.system.domain.dto.PayCallbackDTO;
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.im.service.UserPolicyService;
import com.ruoyi.system.service.PaymentRecordService;
import com.ruoyi.system.service.UserAccountService;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
@@ -62,8 +64,9 @@
    @Autowired
    InsuranceProductService insuranceProductService;
    @Autowired
    private PayService payService;
    PaymentRecordService paymentRecordService;
    @Value("${pay.key}")
    private String key;
@@ -158,6 +161,30 @@
    /**
     * 保单列表
     */
    @GetMapping("/PaymentRecordList")
    public TableDataInfo PaymentRecordList(@RequestParam(value = "payOrdeNo",required = false)  String payOrdeNo,
                                           @RequestParam(value = "paymentStatus",required = false)  Integer paymentStatus) {
        startPage();
        LambdaQueryWrapper<PaymentRecord> wrapper = new LambdaQueryWrapper<>();
        // 产品名称模糊查询
        if (StringUtils.isNotEmpty(payOrdeNo)) {
            wrapper.eq(PaymentRecord::getPayOrdeNo, payOrdeNo);
        }
        if (paymentStatus != null) {
            wrapper.eq(PaymentRecord::getPaymentStatus, paymentStatus);
        }
        // 按创建时间倒序排列
        wrapper.orderByDesc(PaymentRecord::getCreateTime);
        List<PaymentRecord> list = paymentRecordService.list(wrapper);
        return getDataTable(list);
    }
    /**
     * 保单审批
     */
    @GetMapping("/examine")
@@ -192,12 +219,15 @@
            }
            //计算到期时间
            LocalDate expirationTime = calculateInsuranceEndDate(LocalDate.now(), userPolicy.getNumberDays());
            LocalDate expirationTime = calculateInsuranceEndDate(LocalDate.now(), userPolicy.getTerm());
            //保险金领取到期时间
            LocalDate insuranceBenefitExpiryDate = calculateInsuranceEndDateToDay(LocalDate.now(), userPolicy.getNumberDays());
            userPolicy.setApprovalStatus(approvalStatus);
            userPolicy.setMessage(message);
            userPolicy.setStartDate(LocalDate.now());
            userPolicy.setEndDate(expirationTime);
            userPolicy.setInsuranceBenefitExpiryDate(insuranceBenefitExpiryDate);
            userPolicy.setPolicyStatus(UserPolicy.PolicyStatus.ACTIVE);
            userPolicy.setUpdatedAt(new Date());
            userPolicyService.updateById(userPolicy);
@@ -217,6 +247,7 @@
            medicalInsuranceAccount.setAlreadyReceived(BigDecimal.ZERO);
            medicalInsuranceAccount.setAmountAlreadyUsed(BigDecimal.ZERO);
            medicalInsuranceAccount.setEffectiveDate(userPolicy.getStartDate());
            medicalInsuranceAccount.setInsuranceBenefitExpiryDate(userPolicy.getInsuranceBenefitExpiryDate());
            medicalInsuranceAccount.setExpiryDate(userPolicy.getEndDate());
            medicalInsuranceAccount.setAccountStatus(MedicalInsuranceAccount.AccountStatus.ACTIVE);
            medicalInsuranceAccount.setCreatedAt(new Date());
@@ -427,7 +458,13 @@
        userPolicy.setUpdatedAt(new Date());
        boolean updateResult = userPolicyService.updateById(userPolicy);
        PaymentRecord paymentRecord = paymentRecordService.getOne(new LambdaQueryWrapper<PaymentRecord>()
                .eq(PaymentRecord::getPayOrdeNo, callbackDTO.getOrderId())
        );
        if(ObjectUtil.isNotEmpty(paymentRecord)){
            paymentRecord.setPaymentStatus(PaymentRecord.PaymentStatus.PAID.getCode());
            paymentRecordService.updateById(paymentRecord);
        }
        if (updateResult) {
            log.info("支付成功处理完成: {}", callbackDTO.getOrderId());
            return true;
@@ -443,7 +480,13 @@
        userPolicy.setUpdatedAt(new Date());
        boolean updateResult = userPolicyService.updateById(userPolicy);
        PaymentRecord paymentRecord = paymentRecordService.getOne(new LambdaQueryWrapper<PaymentRecord>()
                .eq(PaymentRecord::getPayOrdeNo, callbackDTO.getOrderId())
        );
        if(ObjectUtil.isNotEmpty(paymentRecord)){
            paymentRecord.setPaymentStatus(PaymentRecord.PaymentStatus.EXPIRED.getCode());
            paymentRecordService.updateById(paymentRecord);
        }
        if (updateResult) {
            log.info("支付超时处理完成: {}", callbackDTO.getOrderId());
            return true;