bug
jiangping
2023-11-07 64b432916af9c9218ab3f3eca614e26c542142ae
server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java
@@ -5,6 +5,10 @@
import doumeemes.core.model.PageWrap;
import doumeemes.core.utils.Utils;
import doumeemes.dao.business.model.Company;
import doumeemes.dao.business.model.CompanyUser;
import doumeemes.dao.ext.dto.ActivityLoginDTO;
import doumeemes.dao.ext.vo.ActivityLoginVO;
import doumeemes.dao.ext.vo.StagingLoginVO;
import doumeemes.dao.system.SystemLoginLogMapper;
import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
import doumeemes.dao.system.join.SystemLoginLogJoinMapper;
@@ -88,7 +92,7 @@
        Wrapper<SystemLoginLog> wrapper = new QueryWrapper<>(systemLoginLog);
        return systemLoginLogMapper.selectList(wrapper);
    }
    @Override
    public PageData<SystemLoginLog> findPage(PageWrap<QuerySystemLoginLogDTO> pageWrap) {
        IPage<SystemLoginLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -96,7 +100,9 @@
        MPJLambdaWrapper<SystemLoginLog> mpjLambdaWrapper = new MPJLambdaWrapper<>();
        mpjLambdaWrapper.selectAll(SystemLoginLog.class);
        mpjLambdaWrapper.leftJoin(Company.class,Company::getId,SystemLoginLog::getCompanyId);
        mpjLambdaWrapper.leftJoin(CompanyUser.class,CompanyUser::getId,SystemLoginLog::getCompanyUserId);
        mpjLambdaWrapper.selectAs(Company::getName, SystemLoginLog::getCompanyName);
        mpjLambdaWrapper.selectAs(CompanyUser::getName, SystemLoginLog::getCompanyUserName);
        // 登录用户名
        if (StringUtils.isNotBlank(pageWrap.getModel().getLoginUsername())) {
            mpjLambdaWrapper.like(SystemLoginLog::getLoginUsername, pageWrap.getModel().getLoginUsername());
@@ -134,4 +140,67 @@
        Wrapper<SystemLoginLog> wrapper = new QueryWrapper<>(systemLoginLog);
        return systemLoginLogMapper.selectCount(wrapper);
    }
    @Override
    public StagingLoginVO getStagingLoginVO(){
        StagingLoginVO stagingLoginVO = new StagingLoginVO();
        //今日活跃用户:统计当天登录用户数,一个系统用户在不同的企业登录,算两个用户;一个用户在一个企业内多次登录,算一个用户
        stagingLoginVO.setDayActiveUserNum(
            systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
                    .select(" COMPANY_USER_ID ")
                    .isNotNull(" COMPANY_ID ")
                    .isNotNull(" COMPANY_USER_ID ")
                    .apply(" LOGIN_TIME like concat(CURDATE(),'%') ")
                    .groupBy(" COMPANY_ID , COMPANY_USER_ID ")
            ).size()
        );
        //今日活跃企业:统计当天登录的企业数,一个企业的不同用户登录,算一个企业数;
        stagingLoginVO.setDayActiveCompanyNum(
                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
                        .select(" COMPANY_ID ")
                        .isNotNull(" COMPANY_ID ")
                        .isNotNull(" COMPANY_USER_ID ")
                        .apply(" LOGIN_TIME like concat(CURDATE(),'%') ")
                        .groupBy(" COMPANY_ID ")
                ).size()
        );
        //统计本月(自然月)登录的企业数,逻辑同上;
        stagingLoginVO.setMonthActiveCompanyNum(
                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
                        .select(" COMPANY_ID ")
                        .isNotNull(" COMPANY_ID ")
                        .isNotNull(" COMPANY_USER_ID ")
                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
                        .groupBy(" COMPANY_ID ")
                ).size()
        );
        //本月登录2次及以上企业数:统计本月(自然月)登录2次及以上的企业数,逻辑同上;
        stagingLoginVO.setMonthTwoCompanyNum(
                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
                        .select(" COMPANY_ID ")
                        .isNotNull(" COMPANY_ID ")
                        .isNotNull(" COMPANY_USER_ID ")
                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
                        .groupBy(" COMPANY_ID ")
                        .having(" count(1) > 1 ")
                ).size()
        );
        //本月登录2次及以上企业数(羚羊):统计本月(自然月)登录2次及以上(登录来源于羚羊平台)的企业数,逻辑同上;
        stagingLoginVO.setMonthTwoCompanyLYNum(
                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
                        .select(" COMPANY_ID ")
                        .isNotNull(" COMPANY_ID ")
                        .isNotNull(" COMPANY_USER_ID ")
                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
                        .eq("ORGIN",2)
                        .groupBy(" COMPANY_ID ")
                        .having(" count(1) > 1 ")
                ).size()
        );
        return stagingLoginVO;
    }
}