admin
2020-04-13 dd5b15229cb15459fa7c31ccea77dac28cbfafbd
fanli/src/main/java/com/yeshi/fanli/mapping/redpack/RedPackBalanceMapper.xml
@@ -8,6 +8,19 @@
    <result column="rpb_create_time" property="createTime" jdbcType="TIMESTAMP"/>
    <result column="rpb_update_time" property="updateTime" jdbcType="TIMESTAMP"/>
  </resultMap>
  <resultMap id="VOResultMap" type="com.yeshi.fanli.vo.redpack.RedPackBalanceVO">
    <id column="rpb_uid" property="id" jdbcType="BIGINT"/>
    <result column="rpb_money" property="money" jdbcType="DECIMAL"/>
    <result column="rpb_create_time" property="createTime" jdbcType="TIMESTAMP"/>
    <result column="rpb_update_time" property="updateTime" jdbcType="TIMESTAMP"/>
    <result column="giveMoney" property="giveMoney" jdbcType="DECIMAL"/>
    <result column="useMoney" property="useMoney" jdbcType="DECIMAL"/>
    <result column="exchangeMoney" property="exchangeMoney" jdbcType="DECIMAL"/>
    <result column="totalWin" property="totalWin" jdbcType="DECIMAL"/>
  </resultMap>
  <sql id="Base_Column_List">rpb_uid,rpb_money,rpb_create_time,rpb_update_time</sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select
    <include refid="Base_Column_List"/>from yeshi_ec_red_pack_balance where rpb_uid = #{id,jdbcType=BIGINT}
@@ -37,7 +50,7 @@
    </set> where rpb_uid = #{id,jdbcType=BIGINT}
  </update>
  
  <update id="subRedPack">
   <update id="subRedPack">
     update yeshi_ec_red_pack_balance SET rpb_money = rpb_money - #{money,jdbcType=DECIMAL},rpb_update_time = NOW()
     WHERE rpb_uid = #{id,jdbcType=BIGINT}
  </update>
@@ -47,9 +60,65 @@
     WHERE rpb_uid = #{id,jdbcType=BIGINT}
  </update>
   
  <update id="resetRedPack">
     UPDATE yeshi_ec_red_pack_balance SET rpb_money = 0,rpb_update_time = NOW()
     WHERE rpb_uid = #{id,jdbcType=BIGINT}
  </update>
  <select id="selectForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long">
      SELECT <include refid="Base_Column_List"/> FROM yeshi_ec_red_pack_balance 
      WHERE rpb_uid = #{id,jdbcType=BIGINT} FOR UPDATE
  </select>
  
  <select id="query" resultMap="VOResultMap">
   SELECT b.*,IFNULL(dd.giveMoney,0)AS giveMoney,IFNULL(dd2.useMoney,0)AS useMoney ,IFNULL(dd3.exchangeMoney,0)AS exchangeMoney ,IFNULL(dd4.totalWin,0)AS totalWin  FROM `yeshi_ec_red_pack_balance` b
   LEFT JOIN (SELECT ABS(SUM(d.`rpd_money`)) AS giveMoney,d.`rpd_uid` FROM `yeshi_ec_red_pack_detail` d
           WHERE d.`rpd_type` = 'giveOthersSucceed' AND d.`rpd_uid` LIKE '${key}%'
           GROUP BY d.`rpd_uid` )dd ON dd.rpd_uid = b.`rpb_uid`
   LEFT JOIN (SELECT ABS(SUM(d.`rpd_money`)) AS useMoney,d.`rpd_uid` FROM `yeshi_ec_red_pack_detail` d
         WHERE d.`rpd_type` = 'useByShopOrder' AND d.`rpd_uid` LIKE '${key}%'
         GROUP BY d.`rpd_uid` )dd2 ON dd2.rpd_uid = b.`rpb_uid`
   LEFT JOIN (SELECT ABS(SUM(d.`rpd_money`)) AS exchangeMoney,d.`rpd_uid` FROM `yeshi_ec_red_pack_detail` d
         WHERE d.`rpd_type` = 'redExchangePass' AND d.`rpd_uid` LIKE '${key}%'
         GROUP BY d.`rpd_uid` )dd3 ON dd3.rpd_uid = b.`rpb_uid`
   LEFT JOIN (SELECT ABS(SUM(d.`rpd_money`)) AS totalWin,d.`rpd_uid` FROM `yeshi_ec_red_pack_detail` d
         WHERE d.`rpd_type` IN('newUserReward','invite','increaseReward','seriesReward','giveOthersReceive') AND d.`rpd_uid` LIKE '${key}%'
         GROUP BY d.`rpd_uid` )dd4 ON dd4.rpd_uid = b.`rpb_uid`
   WHERE b.`rpb_uid` LIKE '${key}%'
   <if test="state != null">
      AND b.rpb_state = #{state}
   </if>
   <if test="order == 0">
      ORDER BY b.rpb_money DESC
   </if>
   <if test="order == 1">
      ORDER BY dd.giveMoney DESC
   </if>
   <if test="order == 2">
      ORDER BY dd2.useMoney DESC
   </if>
   <if test="order == 3">
      ORDER BY dd3.exchangeMoney DESC
   </if>
   <if test="order == 4">
      ORDER BY dd4.totalWin DESC
   </if>
   <if test="order == 5">
      ORDER BY b.rpb_create_time
   </if>
   <if test="order == 6">
      ORDER BY b.rpb_create_time DESC
   </if>
   LIMIT #{start},#{count}
  </select>
  <select id="count" resultType="Long">
     SELECT IFNULL(COUNT(rpb_uid),0) FROM yeshi_ec_red_pack_balance
    WHERE rpb_uid LIKE '${key}%'
     <if test="state != null">
      AND rpb_state = #{state}
    </if>
  </select>
</mapper>