金币系统后端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
7.5 KiB

<?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.example.demo.mapper.OneMapper">
<!-- 第一个查询:getOne -->
<select id="getOne" resultType="com.example.demo.domain.work.One">
SELECT
COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
FROM detail_y
WHERE DATE(create_time) = CURDATE()
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS differr,
COALESCE((SELECT SUM(free_6 + free_12 + core_jb + buy_jb)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS sumgold,
COALESCE((SELECT SUM(buy_jb)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS rechargegold,
COALESCE((SELECT SUM(free_6)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS sfreegold,
COALESCE((SELECT SUM(free_12)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS dfreegold,
COALESCE((SELECT SUM(core_jb)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS taskgold,
COALESCE((SELECT SUM(free_6) + SUM(free_12)
FROM user_gold
left join user on user.jwcode = user_gold.jwcode
<where> <if test="areas != null">
area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>
</where>), 0) AS freegold;
</select>
<!-- 第二个查询:getTwo -->
<select id="getTwo" resultType="com.example.demo.domain.work.Two">
SELECT
COALESCE(SUM(CASE WHEN year_flag = 1 THEN total_coin ELSE 0 END), 0) AS totalgold,
COALESCE(SUM(CASE WHEN year_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS totalcoin,
COALESCE(SUM(CASE WHEN yesterday_flag = 1 THEN total_coin ELSE 0 END), 0) AS yesterdaytotal,
COALESCE(SUM(CASE WHEN yesterday_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS yesterdayrecharge,
COALESCE(SUM(CASE WHEN year_flag = 1 THEN recharge_coin ELSE 0 END), 0) AS rechargegold,
COALESCE(SUM(CASE WHEN year_flag = 1 THEN free_coin ELSE 0 END), 0) AS freegold,
COALESCE(SUM(CASE WHEN year_flag = 1 THEN task_coin ELSE 0 END), 0) AS taskgold
FROM (
SELECT
recharge_coin,
free_coin,
task_coin,
recharge_coin + free_coin + task_coin AS total_coin,
YEAR(create_time) = YEAR(CURDATE()) AS year_flag,
DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) AS yesterday_flag
FROM detail_y
WHERE update_type = 0
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{area}
</foreach>
</if>
) AS subquery
</select>
<!-- 第三个查询:getThree -->
<select id="getThree" resultType="com.example.demo.domain.work.Three">
SELECT
COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
FROM detail_y
WHERE YEAR(create_time) = YEAR(CURDATE())
AND update_type = 1
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS consumeGold,
COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
FROM detail_y
WHERE YEAR(create_time) = YEAR(CURDATE())
AND update_type = 2
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS refundcoin,
COALESCE((SELECT SUM(recharge_coin + free_coin + task_coin)
FROM detail_y
WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND update_type = 1
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS yesterdayGold,
COALESCE((SELECT SUM(recharge_coin)
FROM detail_y
WHERE DATE(create_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND update_type = 2
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS yesterdayrefund,
COALESCE((SELECT SUM(recharge_coin)
FROM detail_y
WHERE YEAR(create_time) = YEAR(CURDATE())
AND update_type = 1
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS rechargegold,
COALESCE((SELECT SUM(task_coin)
FROM detail_y
WHERE YEAR(create_time) = YEAR(CURDATE())
AND update_type = 1
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS taskgold,
COALESCE((SELECT SUM(free_coin)
FROM detail_y
WHERE YEAR(create_time) = YEAR(CURDATE())
AND update_type = 1
<if test="areas != null">
AND area IN
<foreach collection="areas" item="areas" open="(" separator="," close=")">
#{areas}
</foreach>
</if>), 0) AS freegold
</select>
</mapper>