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; }