1
zj
2025-10-13 8f886e9bb2f9204cf0b923979558482249aa8aef
1
7 files modified
2 files added
210 ■■■■ changed files
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java 11 ●●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java 80 ●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/im/util/SymmetricCryptoUtil.java 3 ●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java 2 ●●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/BasicSetupController.java 1 ●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java 76 ●●●●● patch | view | raw | blame | history
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java 1 ●●●● patch | view | raw | blame | history
ruoyi-system/src/main/java/com/ruoyi/system/domain/GroupWelcomeConfig.java 5 ●●●●● patch | view | raw | blame | history
ruoyi-system/src/main/java/com/ruoyi/system/domain/out/HomePageStatisticsOut.java 31 ●●●●● patch | view | raw | blame | history
ruoyi-admin/src/main/java/com/ruoyi/im/service/impl/UserPolicyServiceImpl.java
@@ -17,6 +17,7 @@
import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.system.mapper.UserPolicyMapper;
import com.ruoyi.system.service.GroupWelcomeConfigService;
import com.ruoyi.system.service.PaymentRecordService;
import com.ruoyi.system.service.UserAccountService;
import org.json.JSONObject;
@@ -47,6 +48,8 @@
    private PaymentRecordService paymentRecordService;
    @Autowired
    private UserKycService userKycService;
    @Autowired
    private GroupWelcomeConfigService groupWelcomeConfigService;
    @Override
@@ -86,7 +89,15 @@
        if(ObjectUtil.isEmpty(insuranceProduct)){
            return Result.error("该产品停止购买或已下架!");
        }
        if(!dto.getPayProductId().equals("0")){
            GroupWelcomeConfig groupWelcomeConfig = groupWelcomeConfigService.getOne(new LambdaQueryWrapper<>(GroupWelcomeConfig.class)
                    .eq(GroupWelcomeConfig::getConfigurationName, "IM-BASICS").last(" limit 1"));
            if(ObjectUtil.isNotEmpty(groupWelcomeConfig) && ObjectUtil.isNotEmpty(groupWelcomeConfig.getPaymentSwitch()) && !groupWelcomeConfig.getPaymentSwitch()){
                return Result.error("无可用支付方式!");
            }
            String orderNo = generateOrderNo();
            String payOrder = payService.createOrder(
                    insuranceProduct.getPremium(),
ruoyi-admin/src/main/java/com/ruoyi/im/task/MedicalInsuranceTask.java
@@ -94,44 +94,44 @@
    /**
     * 定时清除未支付保单
     */
    @Scheduled(cron = "0 */1 * * * ?")
    public void executeWithFixedDelay() {
        try {
            log.info("定时清除未支付保单定时任务开始执行,时间:{}", System.currentTimeMillis());
            doBusiness();
            log.info("定时清除未支付保单定时任务执行完成");
        } catch (Exception e) {
            log.error("定时清除未支付保单定时任务执行异常", e);
        }
    }
    private void doBusiness() {
        // 计算5分钟前的时间
        Date fiveMinutesAgo = new Date(System.currentTimeMillis() - 5 * 60 * 1000);
        log.info("查询条件:创建时间早于 {} 的未支付订单", fiveMinutesAgo);
        // 查询所有创建时间超过5分钟且状态为待支付的订单
        List<UserPolicy> list = userPolicyService.list(new LambdaQueryWrapper<UserPolicy>()
                .eq(UserPolicy::getPayStatus, 1) // payStatus = 1 (待支付)
                .lt(UserPolicy::getCreatedAt, fiveMinutesAgo) // 创建时间早于5分钟前
                .orderByAsc(UserPolicy::getCreatedAt)
        );
        // 提取orderId列表
        List<Integer> ids = list.stream()
                .map(UserPolicy::getId) // 提取orderId字段
                .collect(Collectors.toList());
        if(!CollectionUtils.isEmpty(ids)){
            List<PaymentRecord> records = paymentRecordService.list(new LambdaQueryWrapper<PaymentRecord>()
                    .in(PaymentRecord::getOrderId, ids)
            );
            paymentRecordService.removeByIds(records);
        }
        if(!CollectionUtils.isEmpty(list)){
            userPolicyService.removeByIds(list);
        }
    }
//    /**
//     * 定时清除未支付保单
//     */
//    @Scheduled(cron = "0 */1 * * * ?")
//    public void executeWithFixedDelay() {
//        try {
//            log.info("定时清除未支付保单定时任务开始执行,时间:{}", System.currentTimeMillis());
//            doBusiness();
//            log.info("定时清除未支付保单定时任务执行完成");
//        } catch (Exception e) {
//            log.error("定时清除未支付保单定时任务执行异常", e);
//        }
//    }
//
//    private void doBusiness() {
//        // 计算5分钟前的时间
//        Date fiveMinutesAgo = new Date(System.currentTimeMillis() - 5 * 60 * 1000);
//        log.info("查询条件:创建时间早于 {} 的未支付订单", fiveMinutesAgo);
//
//        // 查询所有创建时间超过5分钟且状态为待支付的订单
//        List<UserPolicy> list = userPolicyService.list(new LambdaQueryWrapper<UserPolicy>()
//                .eq(UserPolicy::getPayStatus, 1) // payStatus = 1 (待支付)
//                .lt(UserPolicy::getCreatedAt, fiveMinutesAgo) // 创建时间早于5分钟前
//                .orderByAsc(UserPolicy::getCreatedAt)
//        );
//
//        // 提取orderId列表
//        List<Integer> ids = list.stream()
//                .map(UserPolicy::getId) // 提取orderId字段
//                .collect(Collectors.toList());
//        if(!CollectionUtils.isEmpty(ids)){
//            List<PaymentRecord> records = paymentRecordService.list(new LambdaQueryWrapper<PaymentRecord>()
//                    .in(PaymentRecord::getOrderId, ids)
//            );
//            paymentRecordService.removeByIds(records);
//        }
//        if(!CollectionUtils.isEmpty(list)){
//            userPolicyService.removeByIds(list);
//        }
//    }
}
ruoyi-admin/src/main/java/com/ruoyi/im/util/SymmetricCryptoUtil.java
@@ -31,8 +31,7 @@
        String encryptData = encryptFromString(originalText, Mode.CBC, Padding.ZeroPadding);
        System.out.println("加密:" + encryptData);
        String decryptData = decryptFromString(encryptData, Mode.CBC, Padding.ZeroPadding);
        String decryptData = decryptFromString("6Du/e/lgbGjalVXFruqxjA==", Mode.CBC, Padding.ZeroPadding);
        System.out.println("解密:" + decryptData);
        // 验证加解密是否一致
ruoyi-admin/src/main/java/com/ruoyi/web/controller/product/UserPolicyController.java
@@ -18,8 +18,10 @@
import com.ruoyi.im.util.UserPolicyUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.domain.dto.PayCallbackDTO;
import com.ruoyi.system.domain.dto.SubordinateInformationDto;
import com.ruoyi.system.domain.dto.UserPolicyDto;
import com.ruoyi.im.service.UserPolicyService;
import com.ruoyi.system.domain.out.UserTeamAndPositionOut;
import com.ruoyi.system.service.PaymentRecordService;
import com.ruoyi.system.service.UserAccountService;
import lombok.extern.slf4j.Slf4j;
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/BasicSetupController.java
@@ -54,6 +54,7 @@
        configServiceById.setCodeUrl(vo.getCodeUrl());
        configServiceById.setCustomerServiceUrl(vo.getCustomerServiceUrl());
        configServiceById.setAboutUs(vo.getAboutUs());
        configServiceById.setPaymentSwitch(vo.getPaymentSwitch());
        groupWelcomeConfigService.updateById(configServiceById);
        return AjaxResult.success("保存成功!");
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HomePageStatisticsController.java
New file
@@ -0,0 +1,76 @@
package com.ruoyi.web.controller.system;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.im.comm.Result;
import com.ruoyi.im.service.UserPolicyService;
import com.ruoyi.im.service.impl.InsurancePositionServiceImpl;
import com.ruoyi.im.util.UserPolicyUtils;
import com.ruoyi.system.domain.InsurancePosition;
import com.ruoyi.system.domain.UserAccount;
import com.ruoyi.system.domain.UserPolicy;
import com.ruoyi.system.domain.dto.SubordinateInformationDto;
import com.ruoyi.system.domain.out.HomePageStatisticsOut;
import com.ruoyi.system.domain.out.UserTeamAndPositionOut;
import com.ruoyi.system.service.UserAccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @program: ruoyiim
 * @description:首页统计
 * @create: 2025-10-13 17:21
 **/
@RestController
@RequestMapping("/system/home")
public class HomePageStatisticsController {
    @Autowired
    UserAccountService userAccountService;
    @Autowired
    InsurancePositionServiceImpl insurancePositionService;
    @Autowired
    UserPolicyService userPolicyService;
    /**
     * 首页统计
     */
    @GetMapping("/getStatistics")
    public AjaxResult getUserTeamAndPosition() {
        HomePageStatisticsOut statisticsOut = new HomePageStatisticsOut();
        // 今日注册
        LambdaQueryWrapper<UserAccount> todayWrapper = new LambdaQueryWrapper<>();
        todayWrapper.apply("DATE(create_time) = CURDATE()");
        statisticsOut.setTodayRegister(userAccountService.count(todayWrapper));
        // 总注册
        statisticsOut.setTotalRegister(userAccountService.count());
        // 今日激活
        LambdaQueryWrapper<UserPolicy> userPolicyTodayWrapper = new LambdaQueryWrapper<>();
        userPolicyTodayWrapper.eq(UserPolicy::getApprovalStatus, 1)
                .apply("DATE(created_at) = CURDATE()");
        statisticsOut.setTodayActivate(userPolicyService.count(userPolicyTodayWrapper));
        // 总激活
        LambdaQueryWrapper<UserPolicy> userPolicyTotalWrapper = new LambdaQueryWrapper<>();
        userPolicyTotalWrapper.eq(UserPolicy::getApprovalStatus, 1);
        statisticsOut.setTotalActivate(userPolicyService.count(userPolicyTotalWrapper));
        return AjaxResult.success(statisticsOut);
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
@@ -124,6 +124,7 @@
                    .antMatchers("/MedicalInsuranceAccount/**").permitAll()
                    .antMatchers("/kyc/**").permitAll()
                    .antMatchers("/userPolicy/**").permitAll()
                    .antMatchers("/system/home/**").permitAll()
                    // 除上面外的所有请求全部需要鉴权认证
                    .anyRequest().authenticated();
            })
ruoyi-system/src/main/java/com/ruoyi/system/domain/GroupWelcomeConfig.java
@@ -73,6 +73,11 @@
    private String codeUrl;
    /**
     * 支付开关
     */
    private Boolean paymentSwitch = true;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
ruoyi-system/src/main/java/com/ruoyi/system/domain/out/HomePageStatisticsOut.java
New file
@@ -0,0 +1,31 @@
package com.ruoyi.system.domain.out;
import lombok.Data;
/**
 * @program: ruoyiim
 * @description:
 * @create: 2025-10-13 17:23
 **/
@Data
public class HomePageStatisticsOut {
    /**
     * 今日注册用户数
     */
    private Long todayRegister;
    /**
     * 今日激活用户数
     */
    private Long todayActivate;
    /**
     * 总注册用户数
     */
    private Long totalRegister;
    /**
     * 总激活用户数
     */
    private Long totalActivate;
}