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(@RequestParam(value = "invitationCode",required = false) String invitationCode) { HomePageStatisticsOut statisticsOut = new HomePageStatisticsOut(); //邀请人账号 String account = null; if(StringUtils.isNotEmpty(invitationCode)){ UserAccount userAccount = userAccountService.getOne(new LambdaQueryWrapper() .eq(UserAccount::getInvitationCode, invitationCode) ); if(ObjectUtil.isNotEmpty(userAccount)){ account = userAccount.getAccount(); } } // 今日注册 LambdaQueryWrapper todayWrapper = new LambdaQueryWrapper<>(); todayWrapper.apply("DATE(create_time) = CURDATE()"); todayWrapper.eq(StringUtils.isNotEmpty(account),UserAccount::getInvitationAccount,account); statisticsOut.setTodayRegister(userAccountService.count(todayWrapper)); // 总注册 statisticsOut.setTotalRegister(userAccountService.count(new LambdaQueryWrapper().eq(StringUtils.isNotEmpty(account),UserAccount::getInvitationAccount,account))); List userAccounts = userAccountService.list(new LambdaQueryWrapper() .eq(StringUtils.isNotEmpty(account), UserAccount::getInvitationAccount, account) ); List accounts = userAccounts.stream().map(UserAccount::getAccount).collect(Collectors.toList()); // 今日激活 LambdaQueryWrapper userPolicyTodayWrapper = new LambdaQueryWrapper<>(); userPolicyTodayWrapper .eq(UserPolicy::getApprovalStatus, 1) .in(!CollectionUtils.isEmpty(accounts),UserPolicy::getAccount,accounts) .apply("DATE(created_at) = CURDATE()"); statisticsOut.setTodayActivate(userPolicyService.count(userPolicyTodayWrapper)); // 总激活 LambdaQueryWrapper userPolicyTotalWrapper = new LambdaQueryWrapper<>(); userPolicyTotalWrapper .in(!CollectionUtils.isEmpty(accounts),UserPolicy::getAccount,accounts) .eq(UserPolicy::getApprovalStatus, 1); statisticsOut.setTotalActivate(userPolicyService.count(userPolicyTotalWrapper)); return AjaxResult.success(statisticsOut); } }