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.

137 lines
5.7 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.coin.WorkBenchMapper">
<!--起止时间内的该地区充值金币数(永久+免费)若为空则默认0-->
<select id="sumRecharge" resultType="java.lang.Integer">
select sum(
COALESCE(recharge, 0)
)
from statistics
where market = #{market}
and current_datetime
between #{startDate} and #{endDate}
</select>
<!--起止时间内的该地区充值金额(永久金币数)-->
<select id="sumMoney" resultType="java.lang.Integer">
SELECT SUM(money)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN #{startDate} and #{endDate}
</select>
<!-- 起止时间内该地区消费金币数(永久+免费+任务)-->
<select id="sumConsume" resultType="java.lang.Integer">
SELECT SUM(
COALESCE(consume_permanent, 0) +
COALESCE(consume_free_june, 0) +
COALESCE(consume_free_december, 0) +
COALESCE(consume_task, 0)
)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN
#{startDate} and #{endDate}
</select>
<!--起止时间内的该地区退款金币数(永久+免费+任务)-->
<select id="sumRefund" resultType="java.lang.Integer">
SELECT SUM(
COALESCE(refund_permanent, 0) +
COALESCE(refund_free_june, 0) +
COALESCE(refund_free_december, 0) +
COALESCE(refund_task, 0)
)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN
#{startDate} and #{endDate}
</select>
<!--起止时间内该地区充值人头数(根据精网号去重,老数据有多人共用一个精网号的问题)-->
<select id="countRechargeNum" resultType="java.lang.Integer">
SELECT COUNT(DISTINCT ugr.jwcode)
FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market}
AND ugr.pay_time BETWEEN
#{startDate} and #{endDate}
AND ugr.audit_status IN (1,3)
and ugr.flag=1
</select>
<!--给定时间范围内的该地区消费永久金币数-->
<select id="sumCPermanent" resultType="java.lang.Integer">
SELECT SUM(
COALESCE(consume_permanent, 0)
)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN
#{startDate} and #{endDate}
</select>
<!--给定时间范围内的该地区消费免费金币数-->
<select id="sumCFree" resultType="java.lang.Integer">
SELECT SUM(
COALESCE(refund_free_june, 0) +
COALESCE(refund_free_december, 0)
)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN
#{startDate} and #{endDate}
</select>
<!--给定时间范围内的该地区消费任务金币数-->
<select id="sumCTask" resultType="java.lang.Integer">
SELECT SUM(
COALESCE(refund_task, 0)
)
FROM statistics
WHERE market = #{market}
AND current_datetime BETWEEN
#{startDate} and #{endDate}
</select>
<!-- 获取指定地区在时间段内的全部统计数据 -->
<select id="getFullStatisticsByMarketAndDate" resultType="com.example.demo.domain.vo.coin.WorkbenchFullStatistics">
SELECT
SUM(s.recharge) AS totalRecharge,
SUM(s.money) AS totalMoney,
SUM(s.consume_permanent) AS totalConsumePermanent,
SUM(s.consume_free_june + s.consume_free_december) AS totalConsumeFree,
SUM(s.consume_task) AS totalConsumeTask,
SUM(s.refund_permanent + s.refund_free_june + s.refund_free_december + s.refund_task) AS totalRefund,
(
SELECT COUNT(DISTINCT ugr.jwcode)
FROM user_gold_record ugr
INNER JOIN user u ON ugr.jwcode = u.jwcode
WHERE u.market = #{market}
AND ugr.pay_time BETWEEN #{startDate} AND #{endDate}
AND ugr.audit_status IN (1, 3)
and ugr.flag=1
) AS totalRechargeNum
FROM statistics s
WHERE s.market = #{market}
AND s.current_datetime BETWEEN #{startDate} AND #{endDate};
</select>
<select id="getFullStatisticsByMarketAndDate1"
resultType="com.example.demo.domain.vo.coin.WorkbenchFullStatistics">
SELECT
s.market,
SUM(s.recharge) AS totalRecharge,
SUM(s.money) AS totalMoney,
SUM(s.consume_permanent) AS totalConsumePermanent,
SUM(s.consume_free_june + s.consume_free_december) AS totalConsumeFree,
SUM(s.consume_task) AS totalConsumeTask
FROM statistics s
WHERE s.market IN
<foreach item="market" collection="markets" open="(" separator="," close=")">#{market}</foreach>
AND s.current_datetime BETWEEN #{startDate} AND #{endDate}
GROUP BY s.market;
</select>
<!--获取用户的地区权限列表-->
<select id="getAdminMarket" resultType="java.lang.String">
select market from admin
where account = #{account}
</select>
<!--获取全部用户角色-->
<select id="getMarket" resultType="java.lang.String">
select DISTINCT name from market where type=2
</select>
</mapper>