Browse Source

工作台接口插入优化

yufenghao 2 months ago
parent
commit
6ce277dd8b
  1. 1
      src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java
  2. 24
      src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java
  3. 109
      src/main/resources/mapper/StatisticsMapper.xml

1
src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java

@ -79,7 +79,6 @@ public class GoldDetailServiceImpl implements GoldDetailService {
public Gold sumGold(Integer pageNum, Integer pageSize, GoldDetail goldDetail) { public Gold sumGold(Integer pageNum, Integer pageSize, GoldDetail goldDetail) {
Gold gold = new Gold(); Gold gold = new Gold();
//获取订单列表 //获取订单列表
PageHelper.startPage(1, 500000);
List<GoldDetail> goldDetails = goldDetailMapper.getGoldDetail(goldDetail); List<GoldDetail> goldDetails = goldDetailMapper.getGoldDetail(goldDetail);
// List<GoldDetail> goldDetails=goldDetailMapper.getGoldDetail1(1,500000,goldDetail); // List<GoldDetail> goldDetails=goldDetailMapper.getGoldDetail1(1,500000,goldDetail);

24
src/main/java/com/example/demo/serviceImpl/coin/StatisticsServiceImpl.java

@ -39,9 +39,9 @@ public class StatisticsServiceImpl implements StatisticsService {
LocalDate today = LocalDate.now(); //取当天日期 LocalDate today = LocalDate.now(); //取当天日期
List<Statistics> list = statisticsMapper.listPart1All(today); List<Statistics> list = statisticsMapper.listPart1All(today);
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart1(list);
}
// if (!list.isEmpty()) {
// statisticsMapper.batchInsertPart1(list);
// }
} }
/* /*
@ -58,9 +58,9 @@ public class StatisticsServiceImpl implements StatisticsService {
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toInstant()); .toInstant());
List<Statistics> list = statisticsMapper.listPart2All(start, end,today); List<Statistics> list = statisticsMapper.listPart2All(start, end,today);
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart2(list);
}
// if (!list.isEmpty()) {
// statisticsMapper.batchInsertPart2(list);
// }
} }
@ -78,9 +78,9 @@ public class StatisticsServiceImpl implements StatisticsService {
.atZone(ZoneId.systemDefault()) .atZone(ZoneId.systemDefault())
.toInstant()); .toInstant());
List<Statistics> list = statisticsMapper.listYearAll(yearStart, end, today); List<Statistics> list = statisticsMapper.listYearAll(yearStart, end, today);
if (!list.isEmpty()) {
statisticsMapper.batchInsertYear(list);
}
// if (!list.isEmpty()) {
// statisticsMapper.batchInsertYear(list);
// }
} }
@ -91,9 +91,9 @@ public class StatisticsServiceImpl implements StatisticsService {
@Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行 @Scheduled(cron = "0 30 0 * * ?") // 修改为每天 00:30 执行
public void runDailyTaskPart2() { public void runDailyTaskPart2() {
List<Statistics> list = statisticsMapper.listPart2RangeAll(); List<Statistics> list = statisticsMapper.listPart2RangeAll();
if (!list.isEmpty()) {
statisticsMapper.batchInsertPart2(list);
}
// if (!list.isEmpty()) {
// statisticsMapper.batchInsertPart2(list);
// }
} }
} }

109
src/main/resources/mapper/StatisticsMapper.xml

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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.StatisticsMapper"> <mapper namespace="com.example.demo.mapper.coin.StatisticsMapper">
<insert id="batchInsertPart1">
<!-- <insert id="batchInsertPart1">
<foreach collection="list" item="s" separator=";"> <foreach collection="list" item="s" separator=";">
INSERT INTO statistics ( INSERT INTO statistics (
market, current_datetime, market, current_datetime,
@ -23,8 +23,31 @@
current_free_december = VALUES(current_free_december), current_free_december = VALUES(current_free_december),
current_task = VALUES(current_task) current_task = VALUES(current_task)
</foreach> </foreach>
</insert>-->
<insert id="batchInsertPart1">
INSERT INTO statistics (
market, current_datetime,
current_gold, daily_change,
current_permanent, current_free_june,
current_free_december, current_task
) VALUES
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.currentGold}, #{s.dailyChange},
#{s.currentPermanent}, #{s.currentFreeJune},
#{s.currentFreeDecember}, #{s.currentTask}
)
</foreach>
ON DUPLICATE KEY UPDATE
current_gold = VALUES(current_gold),
daily_change = VALUES(daily_change),
current_permanent = VALUES(current_permanent),
current_free_june = VALUES(current_free_june),
current_free_december = VALUES(current_free_december),
current_task = VALUES(current_task)
</insert> </insert>
<insert id="batchInsertPart2">
<!-- <insert id="batchInsertPart2">
<foreach collection="list" item="s" separator=";"> <foreach collection="list" item="s" separator=";">
INSERT INTO statistics ( INSERT INTO statistics (
market, current_datetime, market, current_datetime,
@ -57,8 +80,43 @@
recharge_num = VALUES(recharge_num), recharge_num = VALUES(recharge_num),
first_recharge = VALUES(first_recharge) first_recharge = VALUES(first_recharge)
</foreach> </foreach>
</insert>-->
<insert id="batchInsertPart2">
INSERT INTO statistics (
market, current_datetime,
recharge, money,
consume_permanent, consume_free_june,
consume_free_december, consume_task,
refund_permanent, refund_free_june,
refund_free_december, refund_task,
recharge_num, first_recharge
) VALUES
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.recharge}, #{s.money},
#{s.consumePermanent}, #{s.consumeFreeJune},
#{s.consumeFreeDecember}, #{s.consumeTask},
#{s.refundPermanent}, #{s.refundFreeJune},
#{s.refundFreeDecember}, #{s.refundTask},
#{s.rechargeNum}, #{s.firstRecharge}
)
</foreach>
ON DUPLICATE KEY UPDATE
recharge = VALUES(recharge),
money = VALUES(money),
consume_permanent = VALUES(consume_permanent),
consume_free_june = VALUES(consume_free_june),
consume_free_december = VALUES(consume_free_december),
consume_task = VALUES(consume_task),
refund_permanent = VALUES(refund_permanent),
refund_free_june = VALUES(refund_free_june),
refund_free_december = VALUES(refund_free_december),
refund_task = VALUES(refund_task),
recharge_num = VALUES(recharge_num),
first_recharge = VALUES(first_recharge)
</insert> </insert>
<insert id="batchInsertYear">
<!-- <insert id="batchInsertYear">
<foreach collection="list" item="s" separator=";"> <foreach collection="list" item="s" separator=";">
INSERT INTO statistics ( INSERT INTO statistics (
market, current_datetime, market, current_datetime,
@ -82,6 +140,32 @@
yearly_refund = VALUES(yearly_refund), yearly_refund = VALUES(yearly_refund),
yearly_recharge_num = VALUES(yearly_recharge_num) yearly_recharge_num = VALUES(yearly_recharge_num)
</foreach> </foreach>
</insert>-->
<insert id="batchInsertYear">
INSERT INTO statistics (
market, current_datetime,
yearly_recharge,
yearly_money,
yearly_consume,
yearly_refund,
yearly_recharge_num
) VALUES
<foreach collection="list" item="s" separator=",">
(
#{s.market}, #{s.currentDatetime},
#{s.yearlyRecharge},
#{s.yearlyMoney},
#{s.yearlyConsume},
#{s.yearlyRefund},
#{s.yearlyRechargeNum}
)
</foreach>
ON DUPLICATE KEY UPDATE
yearly_recharge = VALUES(yearly_recharge),
yearly_money = VALUES(yearly_money),
yearly_consume = VALUES(yearly_consume),
yearly_refund = VALUES(yearly_refund),
yearly_recharge_num = VALUES(yearly_recharge_num)
</insert> </insert>
<!-- 计算该天充值人数--> <!-- 计算该天充值人数-->
@ -144,6 +228,25 @@
where m.name IS NOT NULL where m.name IS NOT NULL
GROUP BY market GROUP BY market
</select> </select>
<!-- <select id="listPart1All" resultType="com.example.demo.domain.entity.Statistics">
SELECT
m.name as market,
#{today} AS current_datetime,
COALESCE(SUM(u.current_permanent_gold + u.current_free_june + u.current_free_december + u.current_task_gold), 0)
AS current_gold,
COALESCE(SUM(u.current_permanent_gold), 0) AS current_permanent,
COALESCE(SUM(u.current_free_june), 0) AS current_free_june,
COALESCE(SUM(u.current_free_december), 0) AS current_free_december,
COALESCE(SUM(u.current_task_gold), 0) AS current_task,
COALESCE(SUM(u.current_permanent_gold + u.current_free_june + u.current_free_december + u.current_task_gold), 0)
- COALESCE(s.current_gold, 0) AS daily_change
FROM user u
INNER JOIN market m ON u.market = m.id
INNER JOIN statistics s ON s.market = m.name
AND s.current_datetime = DATE_SUB(#{today}, INTERVAL 1 DAY)
WHERE m.name IS NOT NULL
GROUP BY m.name
</select>-->
<select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics"> <select id="listPart2All" resultType="com.example.demo.domain.entity.Statistics">
SELECT SELECT
m.name as market, m.name as market,

Loading…
Cancel
Save