MemberStatisticsMapper.xml 3.43 KB
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.statistics.dal.mysql.member.MemberStatisticsMapper">

    <select id="selectSummaryListByAreaId"
            resultType="cn.iocoder.yudao.module.statistics.service.member.bo.MemberAreaStatisticsRespBO">
        SELECT area_id, COUNT(1) AS userCount
        FROM member_user
        WHERE deleted = 0
        <if test="@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId() != null">
            AND tenant_id = ${@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId()}
        </if>
        GROUP BY area_id
    </select>

    <select id="selectSummaryListBySex"
            resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberSexStatisticsRespVO">
        SELECT sex, COUNT(1) AS userCount
        FROM member_user
        WHERE deleted = 0
        <if test="@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId() != null">
            AND tenant_id = ${@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId()}
        </if>
        GROUP BY sex
    </select>

    <select id="selectSummaryListByRegisterTerminal"
                         resultType="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberTerminalStatisticsRespVO">
        SELECT register_terminal as terminal, COUNT(1) AS userCount
        FROM member_user
        WHERE deleted = 0
        <if test="@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId() != null">
            AND tenant_id = ${@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId()}
        </if>
        GROUP BY register_terminal
    </select>

    <select id="selectUserCount" resultType="java.lang.Integer">
        SELECT COUNT(1)
        FROM member_user
        WHERE deleted = 0
        <if test="beginTime != null">
            AND create_time >= #{beginTime}
        </if>
        <if test="endTime != null">
            AND create_time &lt;= #{endTime}
        </if>
        <if test="@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId() != null">
            AND tenant_id = ${@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId()}
        </if>
    </select>

    <resultMap id="MemberRegisterCountRespVOMap"
               type="cn.iocoder.yudao.module.statistics.controller.admin.member.vo.MemberRegisterCountRespVO">
        <result column="statDate" property="date"/>
        <result column="count" property="count"/>
    </resultMap>

    <select id="selectListByCreateTimeBetween" resultMap="MemberRegisterCountRespVOMap">
        SELECT ${@cn.iocoder.yudao.framework.mybatis.core.util.SqlDialectUtils@castDate('create_time')} AS statDate,
               count(1)                             AS count
        FROM member_user
        WHERE create_time BETWEEN #{beginTime} AND #{endTime}
          AND deleted = 0
        <if test="@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId() != null">
            AND tenant_id = ${@cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder@getTenantId()}
        </if>
        GROUP BY ${@cn.iocoder.yudao.framework.mybatis.core.util.SqlDialectUtils@castDate('create_time')}
        ORDER BY statDate
    </select>

</mapper>