ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java
@@ -19,6 +19,9 @@ import org.springframework.transaction.annotation.Transactional; import java.text.ParseException; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.Random; import java.util.concurrent.atomic.AtomicLong; @@ -40,8 +43,11 @@ if(ObjectUtil.isEmpty(userAccount)){ return Result.error("请重新登录,未查询到你的信息!"); } if(userAccount.getKycStatus() == 0){ if(userAccount.getKycStatus() == 2){ return Result.error("请先实名认证"); }else if(userAccount.getKycStatus() == 0){ return Result.error("实名认证审核中,请耐心等等"); } // 验证手机号 @@ -49,16 +55,29 @@ if(!isPhoneValid){ return Result.error("手机号格式不正确!"); } // 验证身份证 boolean isIdCardValid = ValidatorUtil.isValidIdCard(dto.getIdCard()); if(!isIdCardValid){ return Result.error("身份证格式不正确!"); // // 验证身份证 // boolean isIdCardValid = ValidatorUtil.isValidIdCard(dto.getIdCard()); // if(!isIdCardValid){ // return Result.error("身份证格式不正确!"); // } long count = count(new LambdaQueryWrapper<UserPolicy>() .eq(UserPolicy::getUserId, userAccount.getId()) .eq(UserPolicy::getPolicyStatus, UserPolicy.PolicyStatus.ACTIVE) .or() .eq(UserPolicy::getApprovalStatus, 0) .or() .eq(UserPolicy::getApprovalStatus, 1) ); if(count > 0){ return Result.error("你已申购此保险,请勿重复申购"); } InsuranceProduct insuranceProduct = insuranceProductService.getById(dto.getProductId()); if(ObjectUtil.isEmpty(insuranceProduct)){ return Result.error("该产品停止购买或已下架!"); } UserPolicy userPolicy = new UserPolicy(); userPolicy.setAccount(userAccount.getAccount()); userPolicy.setProductName(insuranceProduct.getProductName()); userPolicy.setUserId(userAccount.getId()); userPolicy.setProductId(insuranceProduct.getId()); userPolicy.setCoverageAmount(insuranceProduct.getCoverageAmount()); @@ -66,7 +85,11 @@ userPolicy.setTerm(insuranceProduct.getTerm()); userPolicy.setName(dto.getName()); userPolicy.setGender(dto.getGender()); userPolicy.setBirthDate(DateUtils.parseDate(dto.getBirthDate(),"yyyy-MM-dd HH:mm:ss")); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime = LocalDateTime.parse(dto.getBirthDate(), formatter); userPolicy.setBirthDate(dateTime.toLocalDate()); userPolicy.setOccupation(dto.getOccupation()); userPolicy.setIdCard(dto.getIdCard()); userPolicy.setPhone(dto.getPhone()); ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/InsuranceProductController.java
@@ -43,7 +43,7 @@ */ @PostMapping("/update") @Transactional(rollbackFor = Exception.class) public AjaxResult update(InsuranceProductUpdateDTO dto) { public AjaxResult update(@RequestBody InsuranceProductUpdateDTO dto) { // 1. 查询产品是否存在 InsuranceProduct insuranceProduct = insuranceProductService.getById(dto.getId()); if (insuranceProduct == null) { @@ -84,13 +84,13 @@ } // 4. 处理产品特色 if (dto.getFeatureDtoList() != null && !dto.getFeatureDtoList().isEmpty()) { if (dto.getProductFeature() != null && !dto.getProductFeature().isEmpty()) { try { // 先删除该产品原有的所有特色 deleteByProductId(insuranceProduct.getId()); // 转换DTO为实体并设置产品ID List<InsuranceFeature> features = dto.getFeatureDtoList().stream() List<InsuranceFeature> features = dto.getProductFeature().stream() .map(f -> { InsuranceFeature insuranceFeature = new InsuranceFeature(); insuranceFeature.setProductId(insuranceProduct.getId()); @@ -132,6 +132,9 @@ @GetMapping("/get") public AjaxResult get(@RequestParam(value = "id") Integer id) { InsuranceProduct insuranceProduct = insuranceProductService.getById(id); List<InsuranceFeature> features = insuranceFeatureService.list(new LambdaQueryWrapper<InsuranceFeature>() .eq(InsuranceFeature::getProductId, insuranceProduct.getId())); insuranceProduct.setProductFeature(features); return AjaxResult.success(insuranceProduct); } @@ -165,6 +168,11 @@ wrapper.orderByDesc(InsuranceProduct::getCreatedAt); List<InsuranceProduct> list = insuranceProductService.list(wrapper); list.forEach(f->{ List<InsuranceFeature> features = insuranceFeatureService.list(new LambdaQueryWrapper<InsuranceFeature>() .eq(InsuranceFeature::getProductId, f.getId())); f.setProductFeature(features); }); return getDataTable(list); } @@ -173,7 +181,7 @@ */ @PostMapping("/create") @Transactional(rollbackFor = Exception.class) public AjaxResult create(InsuranceProductUpdateDTO dto) { public AjaxResult create(@RequestBody InsuranceProductUpdateDTO dto) { // 1. 检查产品代码是否已存在 long count = insuranceProductService.count(new LambdaQueryWrapper<InsuranceProduct>().eq(InsuranceProduct::getProductCode, dto.getProductCode())); if (count > 0) { @@ -222,10 +230,10 @@ } // 4. 处理产品特色 if (dto.getFeatureDtoList() != null && !dto.getFeatureDtoList().isEmpty()) { if (dto.getProductFeature() != null && !dto.getProductFeature().isEmpty()) { try { // 转换DTO为实体并设置产品ID List<InsuranceFeature> features = dto.getFeatureDtoList().stream() List<InsuranceFeature> features = dto.getProductFeature().stream() .map(f -> { InsuranceFeature insuranceFeature = new InsuranceFeature(); insuranceFeature.setProductId(product.getId()); ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserKycController.java
@@ -90,7 +90,7 @@ userKyc.setState(approvalStatus); userKyc.setMessage(message); userKyc.setUpdatedAt(new Date()); userKycService.updateById(userKyc); UserAccount userAccount = userAccountService.getById(userKyc.getUserId()); userAccount.setKycStatus(approvalStatus); userAccountService.updateById(userAccount); ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
@@ -1,12 +1,16 @@ package com.ruoyi.web.controller.product; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.im.comm.Result; import com.ruoyi.im.service.MedicalInsuranceAccountService; import com.ruoyi.system.domain.InsuranceProduct; import com.ruoyi.system.domain.MedicalInsuranceAccount; import com.ruoyi.system.domain.UserAccount; import com.ruoyi.system.domain.UserPolicy; @@ -28,7 +32,7 @@ @RestController @RequestMapping("/userPolicy") public class UserPolicyController { public class UserPolicyController extends BaseController { @Autowired UserPolicyService userPolicyService; @@ -69,6 +73,40 @@ } /** * 保单列表 */ @GetMapping("/list") public TableDataInfo list(@RequestParam(value = "account",required = false) String account, @RequestParam(value = "approvalStatus",required = false) Integer approvalStatus, @RequestParam(value = "productName",required = false) String productName) { startPage(); LambdaQueryWrapper<UserPolicy> wrapper = new LambdaQueryWrapper<>(); // 产品名称模糊查询 if (org.apache.commons.lang3.StringUtils.isNotBlank(account)) { wrapper.like(UserPolicy::getUserId, account); } // 产品代码模糊查询 if (org.apache.commons.lang3.StringUtils.isNotBlank(productName)) { wrapper.like(UserPolicy::getProductName, productName); } // 产品状态精确查询 if (approvalStatus != null) { wrapper.eq(UserPolicy::getApprovalStatus, approvalStatus); } // 按创建时间倒序排列 wrapper.orderByDesc(UserPolicy::getCreatedAt); List<UserPolicy> list = userPolicyService.list(wrapper); return getDataTable(list); } /** * 保单审批 */ @GetMapping("/examine") ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,9 +6,9 @@ druid: # 主库数据源 master: url: jdbc:mysql://127.0.0.12:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: ad8214f321db6415 url: jdbc:mysql://156.240.108.70:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: ruoyi password: M6MhYJi6zACSR7nf # 从库数据源 slave: # 从数据源开关/默认关闭 ruoyi-system/src/main/java/com/ruoyi/system/domain/UserPolicy.java
@@ -23,8 +23,14 @@ // 系统生成的用户ID private Integer userId; // 账号(唯一) private String account; // 保险产品ID private Integer productId; // 产品名称 private String productName; // 保额 private BigDecimal coverageAmount; @@ -42,7 +48,7 @@ private Gender gender; // 出生日期 private Date birthDate; private LocalDate birthDate; // 职业 private String occupation; ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/InsuranceProductUpdateDTO.java
@@ -50,7 +50,7 @@ private String liabilityExemption; //产品特色 private List<InsuranceFeatureDto> featureDtoList; private List<InsuranceFeatureDto> productFeature; // 图片1 private String img1;