<?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.stylefeng.guns.modular.system.dao.UserRedPacketRecordMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.stylefeng.guns.modular.system.model.UserRedPacketRecord">
|
<id column="id" property="id"/>
|
<result column="money" property="money"/>
|
<result column="insertTime" property="insertTime"/>
|
<result column="companyId" property="companyId"/>
|
<result column="state" property="state"/>
|
<result column="endTime" property="endTime"/>
|
<result column="orderId" property="orderId"/>
|
<result column="orderType" property="orderType"/>
|
<result column="userId" property="userId"/>
|
<result column="redPacketActivityId" property="redPacketActivityId"/>
|
</resultMap>
|
|
|
|
<select id="queryRedEnvelopes" resultType="map">
|
select
|
da.time,
|
sum(da.receivePeople) as receivePeople,
|
sum(da.receive) as receive,
|
sum(da.receiveMoney) as receiveMoney,
|
sum(da.usePeople) as usePeople,
|
sum(da.`use`) as `use`,
|
sum(da.useMoney) as useMoney
|
from (
|
select
|
aa.time,
|
count(aa.userId) as receivePeople,
|
sum(aa.receive) as receive,
|
sum(aa.receiveMoney) as receiveMoney,
|
0 as usePeople,
|
0 as `use`,
|
0 as useMoney
|
from (
|
select
|
DATE_FORMAT(a.insertTime, '%Y-%m-%d') as time,
|
a.userId,
|
count(a.id) as receive,
|
sum(a.money) as receiveMoney
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
where 1 = 1
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d'), a.userId
|
) as aa GROUP BY aa.time
|
|
union all
|
|
select
|
aa.time,
|
0,
|
0,
|
0,
|
count(aa.userId) as usePeople,
|
sum(aa.`use`) as `use`,
|
sum(aa.useMoney) as useMoney
|
from (
|
select
|
DATE_FORMAT(a.insertTime, '%Y-%m-%d') as time,
|
a.userId,
|
count(a.id) as `use`,
|
sum(a.money) as useMoney
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
where a.state= 2
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d'), a.userId
|
) as aa GROUP BY aa.time
|
) as da GROUP BY da.time order by da.time desc
|
<if test="null != offset and null != limit">
|
limit #{offset}, #{limit}
|
</if>
|
</select>
|
|
|
|
<select id="queryRedEnvelopesCount" resultType="int">
|
select count(time) from (
|
select
|
count(da.time) as time
|
from (
|
select
|
aa.time,
|
sum(aa.userId) as receivePeople,
|
sum(aa.receive) as receive,
|
sum(aa.receiveMoney) as receiveMoney,
|
0 as usePeople,
|
0 as `use`,
|
0 as useMoney
|
from (
|
select
|
DATE_FORMAT(a.insertTime, '%Y-%m-%d') as time,
|
a.userId,
|
count(a.id) as receive,
|
sum(a.money) as receiveMoney
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
where 1 = 1
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d'), a.userId
|
) as aa GROUP BY aa.time
|
|
union all
|
|
select
|
aa.time,
|
0,
|
0,
|
0,
|
count(aa.userId) as usePeople,
|
sum(aa.`use`) as `use`,
|
sum(aa.useMoney) as useMoney
|
from (
|
select
|
DATE_FORMAT(a.insertTime, '%Y-%m-%d') as time,
|
a.userId,
|
count(a.id) as `use`,
|
sum(a.money) as useMoney
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
where a.state= 2
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
GROUP BY DATE_FORMAT(a.insertTime, '%Y-%m-%d'), a.userId
|
) as aa GROUP BY aa.time
|
) as da GROUP BY da.time
|
) as w
|
</select>
|
|
|
<select id="queryRedEnvelopesInfo" resultType="map">
|
select
|
DATE_FORMAT(a.insertTime, '%Y-%m-%d %H:%i:%s') as time,
|
a.userId as userId,
|
d.nickName as `name`,
|
d.phone as phone,
|
a.money as money,
|
if(a.state = 1, '未使用', if(a.state = 2, '已使用', '已过期')) as state,
|
DATE_FORMAT(a.endTime, '%Y-%m-%d %H:%i:%s') as endTime
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
left join t_user d on (a.userId = d.id)
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
order by a.insertTime desc
|
<if test="null != offset and null != limit">
|
limit #{offset}, #{limit}
|
</if>
|
</select>
|
|
<select id="queryRedEnvelopesInfoCount" resultType="int">
|
select
|
count(a.id)
|
from t_user_red_packet_record a
|
left join t_user_activity_redenvelope b on (a.redPacketActivityId = b.id)
|
left join t_user_activity c on (b.userActivityId = c.id)
|
left join t_user d on (a.userId = d.id)
|
<if test="null != name and '' != name">
|
and c.`name` like CONCAT('%', #{name}, '%')
|
</if>
|
<if test="null != start and '' != start and null != end and '' != end">
|
and DATE_FORMAT(a.insertTime, '%Y-%m-%d') between #{start} and #{end}
|
</if>
|
<if test="null != companyId">
|
and c.companyId = #{companyId}
|
</if>
|
</select>
|
</mapper>
|