yujian
2019-08-27 d8359ddb48dab5cc797a9d552e11fde571f4920c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?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.yeshi.fanli.dao.mybatis.integral.IntegralDetailMapper">
  <resultMap id="BaseResultMap" type="com.yeshi.fanli.entity.integral.IntegralDetail">
    <id column="td_id" property="id" jdbcType="BIGINT"/>
    <result column="td_uid" property="uid" jdbcType="BIGINT"/>
    <result column="td_money" property="money" jdbcType="INTEGER"/>
    <result column="td_title" property="title" jdbcType="VARCHAR"/>
    <result column="td_desc_info" property="descInfo" jdbcType="VARCHAR"/>
    <result column="td_remark" property="remark" jdbcType="VARCHAR"/>
    <result column="td_create_time" property="createTime" jdbcType="TIMESTAMP"/>
  </resultMap>
  
  <resultMap id="UserMonthMoneyMap" type="com.yeshi.fanli.vo.integral.IntegralMonthVO">
        <result column="expend" property="expend" jdbcType="DECIMAL" />
        <result column="income" property="income" jdbcType="DECIMAL" />
        <result column="dateFormate" property="dateFormate" jdbcType="VARCHAR" />
  </resultMap>
  
  <sql id="Base_Column_List">td_id,td_uid,td_money,td_title,td_desc_info,td_remark,td_create_time</sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select
    <include refid="Base_Column_List"/>from yeshi_ec_integral_detail where td_id = #{id,jdbcType=BIGINT}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_integral_detail where td_id = #{id,jdbcType=BIGINT}</delete>
  <insert id="insert" parameterType="com.yeshi.fanli.entity.integral.IntegralDetail" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_integral_detail (td_id,td_uid,td_money,td_title,td_desc_info,td_remark,td_create_time) values (#{id,jdbcType=BIGINT},#{uid,jdbcType=BIGINT},#{money,jdbcType=INTEGER},#{title,jdbcType=VARCHAR},#{descInfo,jdbcType=VARCHAR},#{remark,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP})</insert>
  <insert id="insertSelective" parameterType="com.yeshi.fanli.entity.integral.IntegralDetail" useGeneratedKeys="true" keyProperty="id">insert into yeshi_ec_integral_detail
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">td_id,</if>
      <if test="uid != null">td_uid,</if>
      <if test="money != null">td_money,</if>
      <if test="title != null">td_title,</if>
      <if test="descInfo != null">td_desc_info,</if>
      <if test="remark != null">td_remark,</if>
      <if test="createTime != null">td_create_time,</if>
    </trim>values
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">#{id,jdbcType=BIGINT},</if>
      <if test="uid != null">#{uid,jdbcType=BIGINT},</if>
      <if test="money != null">#{money,jdbcType=INTEGER},</if>
      <if test="title != null">#{title,jdbcType=VARCHAR},</if>
      <if test="descInfo != null">#{descInfo,jdbcType=VARCHAR},</if>
      <if test="remark != null">#{remark,jdbcType=VARCHAR},</if>
      <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
    </trim>
  </insert>
  <update id="updateByPrimaryKey" parameterType="com.yeshi.fanli.entity.integral.IntegralDetail">update yeshi_ec_integral_detail set td_uid = #{uid,jdbcType=BIGINT},td_money = #{money,jdbcType=INTEGER},td_title = #{title,jdbcType=VARCHAR},td_desc_info = #{descInfo,jdbcType=VARCHAR},td_remark = #{remark,jdbcType=VARCHAR},td_create_time = #{createTime,jdbcType=TIMESTAMP} where td_id = #{id,jdbcType=BIGINT}</update>
  <update id="updateByPrimaryKeySelective" parameterType="com.yeshi.fanli.entity.integral.IntegralDetail">update yeshi_ec_integral_detail
    <set>
      <if test="uid != null">td_uid=#{uid,jdbcType=BIGINT},</if>
      <if test="money != null">td_money=#{money,jdbcType=INTEGER},</if>
      <if test="title != null">td_title=#{title,jdbcType=VARCHAR},</if>
      <if test="descInfo != null">td_desc_info=#{descInfo,jdbcType=VARCHAR},</if>
      <if test="remark != null">td_remark=#{remark,jdbcType=VARCHAR},</if>
      <if test="createTime != null">td_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
    </set> where td_id = #{id,jdbcType=BIGINT}
  </update>
  
   <select id="selectCountByUid" resultType="java.lang.Long"  parameterType="java.lang.Long">
    SELECT count(td_id) FROM yeshi_ec_integral_detail
    WHERE td_uid = #{uid} 
     <if test="type == 1">AND td_money <![CDATA[>]]> 0</if>
     <if test="type == 2">AND td_money <![CDATA[<]]> 0</if>
  </select>
  
   <select id="selectMonthCountByUid" resultType="java.lang.Integer">
    SELECT COUNT(*) FROM 
            (SELECT * FROM yeshi_ec_integral_detail d 
             WHERE d.`td_uid`=#{uid} AND d.`td_create_time` <![CDATA[<=]]> #{date} 
                  <if test="type == 1">AND d.td_money <![CDATA[>]]> 0</if>
                   <if test="type == 2">AND d.td_money <![CDATA[<]]> 0</if>
             GROUP BY DATE_FORMAT(d.`td_create_time`,'%y-%m')
             ) a
  </select>
  
  
  <select id="selectCountByUidAndMaxCreateTime" resultType="java.lang.Long">
    SELECT count(utd_id) FROM yeshi_ec_integral_detail
    WHERE td_uid=#{uid} and `td_create_time`<![CDATA[<=]]>#{date}
          <if test="type == 1">AND td_money <![CDATA[>]]> 0</if>
          <if test="type == 2">AND td_money <![CDATA[<]]> 0</if>
 </select>
  
   <select id="selectByMaxCreateTime" resultMap="BaseResultMap">
    SELECT <include refid="Base_Column_List" /> FROM yeshi_ec_integral_detail t
    WHERE t.`td_uid`=#{uid} AND t.`td_create_time`<![CDATA[<=]]> #{date}
          <if test="type == 1">AND t.td_money <![CDATA[>]]> 0</if>
          <if test="type == 2">AND t.td_money <![CDATA[<]]> 0</if>
    ORDER BY t.`td_create_time` DESC,t.td_id DESC
    LIMIT #{count}
  </select>
  
   <select id="selectByUidWithIndexId" resultMap="BaseResultMap">
    SELECT <include refid="Base_Column_List" />    FROM yeshi_ec_integral_detail t 
    WHERE t.`td_uid`=#{uid}
        AND t.`td_create_time`<![CDATA[<=]]>(SELECT td_create_time FROM yeshi_ec_integral_detail WHERE td_id =#{id})
        <if test="type == 1">AND t.td_money <![CDATA[>]]> 0</if>
        <if test="type == 2">AND t.td_money <![CDATA[<]]> 0</if>
    ORDER BY t.`td_create_time` DESC,t.td_id DESC
    LIMIT #{count}
  </select>
  
  <select id="selectMonthMoneyByUid" resultMap="UserMonthMoneyMap">
        <foreach collection="dateFormat" index="index" item="item"
            separator="UNION ALL">
            <trim prefix="(" suffix=")">
                SELECT c.time AS dateFormate , IF(a.money IS NULL,0,a.money) AS income ,IF(b.money IS NULL,0,b.money) AS expend
                FROM (SELECT  #{item} AS `time`) c 
                LEFT JOIN (SELECT DATE_FORMAT(d.`td_create_time`,'%Y-%m') AS `time`,SUM(d.`td_money`)AS money
                               FROM `yeshi_ec_integral_detail` d
                               WHERE d.`td_uid`=#{uid} AND  d.`td_money`<![CDATA[>=]]>0 AND DATE_FORMAT(d.`td_create_time`,'%Y-%m')=#{item} 
                               <if test="type == 1">AND d.td_money <![CDATA[>]]> 0</if>
                            <if test="type == 2">AND d.td_money <![CDATA[<]]> 0</if>
                               GROUP BY DATE_FORMAT(d.`td_create_time`,'%Y-%m')
                               ) a ON a.time=c.time
 
                LEFT JOIN(SELECT DATE_FORMAT(d.`td_create_time`,'%Y-%m') AS `time`,SUM(d.`td_money`) AS money
                              FROM `yeshi_ec_integral_detail` d
                            WHERE d.`td_uid`=#{uid} AND d.`td_money` <![CDATA[<]]>0 AND DATE_FORMAT(d.`td_create_time`,'%Y-%m')=#{item} 
                                     <if test="type == 1">AND d.td_money <![CDATA[>]]> 0</if>
                                <if test="type == 2">AND d.td_money <![CDATA[<]]> 0</if>
                              GROUP BY DATE_FORMAT(d.`td_create_time`,'%Y-%m')
                              ) b ON c.time=b.time
           </trim>
       </foreach>
  </select>
  
  
</mapper>