| | |
| | | import com.ruoyi.im.service.InsuranceProductService; |
| | | import com.ruoyi.im.service.MedicalInsuranceAccountService; |
| | | import com.ruoyi.im.service.impl.InsurancePositionServiceImpl; |
| | | import com.ruoyi.im.util.PayService; |
| | | import com.ruoyi.im.util.RedisDistributedLock; |
| | | import com.ruoyi.im.util.UserPolicyUtils; |
| | | import com.ruoyi.system.domain.*; |
| | |
| | | |
| | | import javax.validation.Valid; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | |
| | | |
| | | @Autowired |
| | | InsuranceProductService insuranceProductService; |
| | | @Autowired |
| | | private PayService payService; |
| | | |
| | | /** |
| | | * 保险购买申请 |
| | |
| | | try { |
| | | UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper<UserAccount>() |
| | | .eq(UserAccount::getAccount,account)); |
| | | List<UserPolicy> list = userPolicyService.list(new LambdaQueryWrapper<UserPolicy>().eq(UserPolicy::getUserId, userAccount.getId())); |
| | | List<UserPolicy> list = userPolicyService.list(new LambdaQueryWrapper<UserPolicy>() |
| | | .eq(UserPolicy::getUserId, userAccount.getId()) |
| | | .eq(UserPolicy::getPayStatus,2) |
| | | ); |
| | | return Result.success(list); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | wrapper.ne(UserPolicy::getApprovalStatus, 0); |
| | | }else{ |
| | | wrapper.eq(UserPolicy::getApprovalStatus, 0); |
| | | wrapper.eq(UserPolicy::getPayStatus,3) |
| | | .or() |
| | | .eq(UserPolicy::getPayStatus,2); |
| | | } |
| | | |
| | | // 按创建时间倒序排列 |
| | |
| | | if(approvalStatus == 2 && StringUtils.isEmpty(message)){ |
| | | return AjaxResult.error("驳回理由不能为空!"); |
| | | } |
| | | if(userPolicy.getPayStatus() != 3 && userPolicy.getPayStatus() != 2){ |
| | | return AjaxResult.error("保单未支付完成,不能进行审批!"); |
| | | } |
| | | UserAccount userAccount = userAccountService.getById(userPolicy.getUserId()); |
| | | if(approvalStatus == 2){ |
| | | userPolicy.setApprovalStatus(approvalStatus); |
| | |
| | | userPolicy.setUpdatedAt(new Date()); |
| | | userPolicyService.updateById(userPolicy); |
| | | |
| | | |
| | | //每天可领 |
| | | BigDecimal amountClaimed = userPolicy.getCoverageAmount() |
| | | .divide(new BigDecimal(userPolicy.getTerm()), 4, RoundingMode.HALF_UP); |
| | | |
| | | MedicalInsuranceAccount medicalInsuranceAccount = new MedicalInsuranceAccount(); |
| | | medicalInsuranceAccount.setUserId(userPolicy.getUserId()); |
| | | medicalInsuranceAccount.setPolicyId(userPolicy.getId()); |
| | | medicalInsuranceAccount.setProductId(userPolicy.getProductId()); |
| | | medicalInsuranceAccount.setTotalQuota(userPolicy.getCoverageAmount()); |
| | | medicalInsuranceAccount.setRemainingBalance(BigDecimal.ZERO); |
| | | medicalInsuranceAccount.setAmountClaimed(userPolicy.getCoverageAmount()); |
| | | medicalInsuranceAccount.setAmountClaimed(amountClaimed); |
| | | medicalInsuranceAccount.setAlreadyReceived(BigDecimal.ZERO); |
| | | medicalInsuranceAccount.setAmountAlreadyUsed(BigDecimal.ZERO); |
| | | medicalInsuranceAccount.setEffectiveDate(userPolicy.getStartDate()); |
| | |
| | | throw new IllegalArgumentException("基准日期不能为null"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 支付回调接口 - 支付平台会调用这个接口 |
| | | */ |
| | | @PostMapping("/notify") |
| | | public String payNotify(@RequestParam Map<String, String> params) { |
| | | System.out.println("收到支付回调: " + params); |
| | | |
| | | // 验证签名 |
| | | if (!payService.verifySign(params)) { |
| | | System.out.println("签名验证失败"); |
| | | return "fail"; |
| | | } |
| | | |
| | | // 获取关键参数 |
| | | String orderNo = params.get("mchOrderNo"); |
| | | String status = params.get("status"); |
| | | String amount = params.get("amount"); |
| | | |
| | | System.out.println("订单号: " + orderNo + ", 状态: " + status + ", 金额: " + amount); |
| | | |
| | | // 这里调用您的业务处理逻辑 |
| | | handlePayResult(orderNo, Integer.valueOf(status), params); |
| | | |
| | | return "success"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 处理支付结果 - 这里您自己实现业务逻辑 |
| | | */ |
| | | private void handlePayResult(String orderNo, Integer status, Map<String, String> params) { |
| | | UserPolicy userPolicy = userPolicyService.getOne(new LambdaQueryWrapper<UserPolicy>() |
| | | .eq(UserPolicy::getOrderNo,orderNo) |
| | | ); |
| | | if(ObjectUtil.isNotEmpty(userPolicy)){ |
| | | if ("2".equals(status)) { |
| | | userPolicy.setPayStatus(status); |
| | | } else if ("3".equals(status)) { |
| | | userPolicy.setPayStatus(status); |
| | | } else if ("0010".equals(status)) { |
| | | userPolicy.setPayMsg("系统超时或异常"); |
| | | } else if ("0014".equals(status)) { |
| | | userPolicy.setPayMsg("mchId是系统分配的商户号,不能自己生成"); |
| | | } |
| | | } |
| | | } |
| | | } |