|
|
@@ -0,0 +1,85 @@
|
|
|
+<?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="com.fs.app.mapper.MemberReportMapper">
|
|
|
+
|
|
|
+ <resultMap type="com.fs.app.vo.MemberReportVO" id="MemberReportResult">
|
|
|
+ <result property="companyName" column="company_name" />
|
|
|
+ <result property="totalMemberCount" column="total_member_count" />
|
|
|
+ <result property="appMemberCount" column="app_member_count" />
|
|
|
+ <result property="newMemberCount" column="new_member_count" />
|
|
|
+ </resultMap>
|
|
|
+
|
|
|
+ <select id="selectMemberReportList" resultMap="MemberReportResult">
|
|
|
+ SELECT
|
|
|
+ c.company_name,
|
|
|
+ COUNT(DISTINCT m.user_id) AS total_member_count,
|
|
|
+ COUNT(DISTINCT CASE WHEN m.is_app_user = 1 THEN m.user_id END) AS app_member_count,
|
|
|
+ COUNT(DISTINCT CASE
|
|
|
+ WHEN DATE(m.create_time) BETWEEN DATE(#{query.sTime}) AND DATE(#{query.eTime})
|
|
|
+ THEN m.user_id
|
|
|
+ END) AS new_member_count
|
|
|
+ FROM his_member m
|
|
|
+ LEFT JOIN sys_company c ON m.company_id = c.company_id
|
|
|
+ <where>
|
|
|
+ <if test="query.companyId != null and query.companyId != ''">
|
|
|
+ AND m.company_id = #{query.companyId}
|
|
|
+ </if>
|
|
|
+ <if test="query.sTime != null and query.sTime != ''">
|
|
|
+ AND DATE(m.create_time) >= DATE(#{query.sTime})
|
|
|
+ </if>
|
|
|
+ <if test="query.eTime != null and query.eTime != ''">
|
|
|
+ AND DATE(m.create_time) <= DATE(#{query.eTime})
|
|
|
+ </if>
|
|
|
+ </where>
|
|
|
+ GROUP BY c.company_id, c.company_name
|
|
|
+ ORDER BY c.company_name
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="selectMemberReportListNoTime" resultType="com.fs.app.vo.MemberReportVO">
|
|
|
+ SELECT
|
|
|
+ c.company_id,
|
|
|
+ c.company_name,
|
|
|
+ COALESCE(stats.total_count, 0) AS total_member_count,
|
|
|
+ COALESCE(stats.app_count, 0) AS app_member_count
|
|
|
+ FROM company c
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ uc.company_id,
|
|
|
+ COUNT(DISTINCT uc.user_id) AS total_count,
|
|
|
+ COUNT(DISTINCT CASE WHEN u.app_open_id IS NOT NULL THEN u.user_id END) AS app_count
|
|
|
+ FROM fs_user_company_user uc
|
|
|
+ INNER JOIN fs_user u ON uc.user_id = u.user_id
|
|
|
+ where u.is_del=0 and uc.status =1
|
|
|
+ <if test="params.companyId != null and params.companyId != ''">
|
|
|
+ and uc.company_id = #{params.companyId}
|
|
|
+ </if>
|
|
|
+ GROUP BY uc.company_id
|
|
|
+ ) stats ON c.company_id = stats.company_id
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ </select>
|
|
|
+ <select id="selectMemberReportAddCountList" resultType="com.fs.app.vo.MemberReportVO">
|
|
|
+ SELECT
|
|
|
+ c.company_id,
|
|
|
+ c.company_name,
|
|
|
+ COALESCE(stats.new_member_count, 0) AS newMemberCount
|
|
|
+ FROM company c
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ uc.company_id,
|
|
|
+ COUNT(DISTINCT uc.user_id) AS new_member_count
|
|
|
+ FROM fs_user_company_user uc
|
|
|
+ INNER JOIN fs_user u ON uc.user_id = u.user_id
|
|
|
+ where u.is_del=0 and uc.status =1
|
|
|
+ and u.app_create_time >= #{params.sTime} and u.app_create_time <= #{params.eTime}
|
|
|
+ <if test="params.companyId != null and params.companyId != ''">
|
|
|
+ and uc.company_id = #{params.companyId}
|
|
|
+ </if>
|
|
|
+ GROUP BY uc.company_id
|
|
|
+ ) stats ON c.company_id = stats.company_id
|
|
|
+ </select>
|
|
|
+
|
|
|
+</mapper>
|