|
|
<?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 AND u.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 AND u.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> <!--40天内单个地区的图表数据 按天--> <select id="getDayStatistics" resultType="com.example.demo.domain.vo.coin.WorkbenchMarketGraph"> select market,recharge as sumRechargePermanent,money as sumMoney, (recharge - money) as sumRechargeFree, consume_permanent as sumConsumePermanent, (consume_free_june + consume_free_december) as sumConsumeFree, consume_task as sumConsumeTask, current_datetime as currentDate from statistics where market=#{market} and DATE(current_datetime) >= #{startDate} AND DATE(current_datetime) < #{endDate} order by current_datetime desc
</select> <!--40天以上单个地区的图表数据 按月 首尾截断--> <select id="getMonthStatistics" resultType="com.example.demo.domain.vo.coin.WorkbenchMarketGraph"> select DATE_FORMAT(current_datetime, '%Y-%m') as month, market, sum(recharge) as sumRechargePermanent, sum(money) as sumMoney, sum(recharge - money) as sumRechargeFree, sum(consume_permanent) as sumConsumePermanent, sum(consume_free_june + consume_free_december) as sumConsumeFree, sum(consume_task) as sumConsumeTask, current_datetime as currentMonth from statistics where market = #{market} and current_datetime >= #{startDate} and current_datetime < #{endDate} group by month order by month </select> <!--获取各地区--> <select id="getRevenue" resultType="com.example.demo.domain.vo.coin.WorkbenchRevenue"> SELECT m.name AS market, SUM(CASE WHEN r.id = 2 THEN cr.received_amount ELSE 0 END) AS hkd, SUM(CASE WHEN r.id = 3 THEN cr.received_amount ELSE 0 END) AS sgd, SUM(CASE WHEN r.id = 4 THEN cr.received_amount ELSE 0 END) AS myr, SUM(CASE WHEN r.id = 5 THEN cr.received_amount ELSE 0 END) AS thb, SUM(CASE WHEN r.id = 6 THEN cr.received_amount ELSE 0 END) AS cad, SUM(CASE WHEN r.id = 7 THEN cr.received_amount ELSE 0 END) AS vdn, SUM(CASE WHEN r.id = 8 THEN cr.received_amount ELSE 0 END) AS krw, ROUND( SUM(cr.received_amount * r.num), 2) AS totalSGD FROM cash_record cr JOIN market m ON cr.received_market = m.id JOIN rate r ON cr.received_currency = r.id WHERE cr.received_currency IN (2,3,4,5,6,7,8) -- 只统计这7种币 AND m.name IN <foreach item="market" collection="markets" open="(" separator="," close=")">#{market}</foreach> AND cr.audit_time BETWEEN #{startDate} AND #{endDate} AND cr.order_type=1 AND cr.status IN (1,3,4) GROUP BY m.name; </select></mapper>
|