|
@@ -10,30 +10,74 @@
|
|
|
<result column="buyerCount" property="buyerCount"/>
|
|
<result column="buyerCount" property="buyerCount"/>
|
|
|
</resultMap>
|
|
</resultMap>
|
|
|
|
|
|
|
|
- <select id="getSalesStatistics" parameterType="com.fs.company.param.SalesStatCIDParam" resultMap="SalesStatMap">
|
|
|
|
|
|
|
+ <select id="getSalesStatisticsCID" resultMap="SalesStatMap">
|
|
|
SELECT
|
|
SELECT
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN ec.create_time BETWEEN #{param.startAddTime} AND #{param.endAddTime}
|
|
|
|
|
- THEN ec.id
|
|
|
|
|
- END) AS fansCount,
|
|
|
|
|
- IFNULL(SUM(CASE
|
|
|
|
|
- WHEN log.order_time BETWEEN #{param.startOrderTime} AND #{param.endOrderTime}
|
|
|
|
|
- THEN log.amount
|
|
|
|
|
- END), 0) AS totalAmount,
|
|
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN log.order_time BETWEEN #{param.startOrderTime} AND #{param.endOrderTime}
|
|
|
|
|
- THEN log.package_order_code
|
|
|
|
|
- END) AS orderCount,
|
|
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN log.order_time BETWEEN #{param.startOrderTime} AND #{param.endOrderTime}
|
|
|
|
|
- THEN log.user_id
|
|
|
|
|
- END) AS buyerCount
|
|
|
|
|
|
|
+ cu.user_id AS userId,
|
|
|
|
|
+ cu.nick_name AS nickName,
|
|
|
|
|
+ d.dept_name AS deptName,
|
|
|
|
|
+ COALESCE(fc.fans_count, 0) AS fansCount,
|
|
|
|
|
+ COALESCE(oc.total_amount, 0) AS totalAmount,
|
|
|
|
|
+ COALESCE(oc.order_count, 0) AS orderCount,
|
|
|
|
|
+ COALESCE(oc.buyer_count, 0) AS buyerCount
|
|
|
FROM company_user cu
|
|
FROM company_user cu
|
|
|
- INNER JOIN qw_user qu ON qu.company_user_id = cu.user_id
|
|
|
|
|
- INNER JOIN qw_external_contact ec ON ec.qw_user_id = qu.id
|
|
|
|
|
- LEFT JOIN fs_user fu ON ec.fs_user_id = fu.user_id
|
|
|
|
|
- LEFT JOIN fs_user_information_collection_personal_log log ON log.user_id = fu.user_id
|
|
|
|
|
- WHERE cu.user_id = #{param.userId}
|
|
|
|
|
- AND cu.del_flag = '0'
|
|
|
|
|
|
|
+ LEFT JOIN company_dept d ON cu.dept_id = d.dept_id AND d.del_flag = '0'
|
|
|
|
|
+
|
|
|
|
|
+ -- 进粉统计(始终关联,内部按条件动态过滤)
|
|
|
|
|
+ LEFT JOIN (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ qu.company_user_id,
|
|
|
|
|
+ COUNT(DISTINCT ec.id) AS fans_count
|
|
|
|
|
+ FROM qw_user qu
|
|
|
|
|
+ INNER JOIN qw_external_contact ec ON ec.qw_user_id = qu.id
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ <if test="param.startAddTime != null and param.endAddTime != null">
|
|
|
|
|
+ AND ec.create_time BETWEEN #{param.startAddTime} AND #{param.endAddTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY qu.company_user_id
|
|
|
|
|
+ ) fc ON fc.company_user_id = cu.user_id
|
|
|
|
|
+
|
|
|
|
|
+ -- 订单统计(始终关联,内部按条件动态过滤)
|
|
|
|
|
+ LEFT JOIN (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ log.company_user_id,
|
|
|
|
|
+ SUM(o.pay_price) AS total_amount,
|
|
|
|
|
+ COUNT(DISTINCT o.order_code) AS order_count,
|
|
|
|
|
+ COUNT(DISTINCT o.user_id) AS buyer_count
|
|
|
|
|
+ FROM fs_store_order o
|
|
|
|
|
+ INNER JOIN (
|
|
|
|
|
+ SELECT DISTINCT
|
|
|
|
|
+ package_order_code,
|
|
|
|
|
+ company_user_id,
|
|
|
|
|
+ user_id
|
|
|
|
|
+ FROM fs_user_information_collection_personal_log
|
|
|
|
|
+ WHERE 1 = 1
|
|
|
|
|
+ <if test="param.startOrderTime != null and param.endOrderTime != null">
|
|
|
|
|
+ AND order_time BETWEEN #{param.startOrderTime} AND #{param.endOrderTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) log ON o.order_code = log.package_order_code
|
|
|
|
|
+ WHERE o.is_pay = 1
|
|
|
|
|
+ AND o.refund_status = 0
|
|
|
|
|
+ GROUP BY log.company_user_id
|
|
|
|
|
+ ) oc ON oc.company_user_id = cu.user_id
|
|
|
|
|
+
|
|
|
|
|
+ WHERE cu.del_flag = '0'
|
|
|
|
|
+ <if test="param.companyId != null">
|
|
|
|
|
+ AND cu.company_id = #{param.companyId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="param.deptId != null">
|
|
|
|
|
+ AND (cu.dept_id = #{param.deptId}
|
|
|
|
|
+ OR cu.dept_id IN (
|
|
|
|
|
+ SELECT t.dept_id FROM company_dept t
|
|
|
|
|
+ WHERE t.del_flag = '0' AND FIND_IN_SET(#{param.deptId}, t.ancestors)
|
|
|
|
|
+ ))
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="param.userId != null">
|
|
|
|
|
+ AND cu.user_id = #{param.userId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="param.companyUserNickName != null and param.companyUserNickName.trim() != ''">
|
|
|
|
|
+ AND cu.nick_name LIKE CONCAT('%', #{param.companyUserNickName}, '%')
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY cu.user_id, cu.nick_name, d.dept_name
|
|
|
|
|
+ ORDER BY cu.user_id
|
|
|
</select>
|
|
</select>
|
|
|
</mapper>
|
|
</mapper>
|