Browse Source

12.16 工作台中间部分全部完成

detached
lv123 5 months ago
parent
commit
0c9074795c
  1. 10
      src/main/java/com/example/demo/controller/AuditController.java
  2. 23
      src/main/java/com/example/demo/controller/StatisticsController.java
  3. 8
      src/main/java/com/example/demo/domain/entity/Detail.java
  4. 11
      src/main/java/com/example/demo/domain/vo/Meium.java
  5. 17
      src/main/java/com/example/demo/domain/vo/SumCoin.java
  6. 25
      src/main/java/com/example/demo/domain/vo/UserConsumeCoin.java
  7. 254
      src/main/java/com/example/demo/mapper/StatisticsMapper.java
  8. 5
      src/main/java/com/example/demo/mapper/UserMapper.java
  9. 31
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  10. 77
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  11. 100
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  12. 2
      src/main/java/com/example/demo/sevice/UserSevice.java

10
src/main/java/com/example/demo/controller/AuditController.java

@ -51,11 +51,11 @@ public class AuditController {
BigDecimal taskCoin = detail.getTaskCoin();
BigDecimal freeCoin = detail.getFreeCoin();
User user = userMapper.selectByJwcode(detail.getJwcode());
user.setBuyJb(user.getBuyJb().add(rechargeCoin));
user.setCoreJb(user.getCoreJb().add(taskCoin));
user.setFree6(user.getFree6().add(freeCoin));
userMapper.update(user);
// User user = userMapper.selectByJwcode(detail.getJwcode());
// user.setBuyJb(user.getBuyJb().add(rechargeCoin));
// user.setCoreJb(user.getCoreJb().add(taskCoin));
// user.setFree6(user.getFree6().add(freeCoin));
// userMapper.update(user);
}
return Result.success();
}

23
src/main/java/com/example/demo/controller/StatisticsController.java

@ -1,10 +1,9 @@
package com.example.demo.controller;
import com.example.demo.domain.vo.Meium;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.Statistics;
import com.example.demo.domain.vo.UserVo;
import com.example.demo.domain.vo.*;
import com.example.demo.mapper.StatisticsMapper;
import com.example.demo.serviceImpl.StatisticsServiceImpl;
import com.example.demo.serviceImpl.UserServiceImpl;
import com.example.demo.sevice.StatisticsService;
import lombok.RequiredArgsConstructor;
@ -14,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.Date;
@RestController
@ -26,6 +26,10 @@ public class StatisticsController {
private final StatisticsService statisticsService;
@Autowired
UserServiceImpl userService;
@Autowired
private StatisticsMapper statisticsMapper;
@Autowired
private StatisticsServiceImpl statisticsServiceImpl;
@PostMapping("/a")
@ -96,4 +100,15 @@ public class StatisticsController {
return Result.success(statisticsService.getMediu());
}
@PostMapping("/getMediuConsumeCoin2")
public Result getMediuConsumeCoin2(@RequestBody SumCoin sumCoin){
System.out.println(sumCoin.getSearchStartTime()+" -------------searchStartTime----");
return Result.success(statisticsMapper.getMediuConsumeCoin2(sumCoin));
}
@PostMapping("/getCoinTime")
public Result getCoinTime(@RequestBody SumCoin sumcoin){
System.out.println(sumcoin.getSearchStartTime()+" -------------searchStartTime----");
return Result.success(statisticsServiceImpl.getCoinTime(sumcoin));
}
}

8
src/main/java/com/example/demo/domain/entity/Detail.java

@ -61,4 +61,12 @@ public class Detail implements Serializable {
private BigDecimal allCoin;
private String token;
private BigDecimal free6;
private BigDecimal free12;
private BigDecimal allGold;
}

11
src/main/java/com/example/demo/domain/vo/Meium.java

@ -1,11 +1,14 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.HashMap;
@ -23,8 +26,12 @@ public class Meium implements Serializable {
private String area;
private String store;
private BigDecimal totalRechargeSum;
private LocalDateTime searchStartTime;
private LocalDateTime searchEndTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date searchStartTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date searchEndTime;
private String updateType;
private String type;
private String token; // 新增的token字段

17
src/main/java/com/example/demo/domain/vo/SumCoin.java

@ -1,9 +1,14 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
@Data
@NoArgsConstructor
@ -51,8 +56,14 @@ public class SumCoin {
private BigDecimal yearSumFreeCoin;
//全年累计消耗金币数--下面 消耗任务金币
private BigDecimal yearSumTaskCoin;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date searchStartTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date searchEndTime;
private String updateType;
//中间-11个月 每月充值金币
private BigDecimal rechargeSumCoin;
//中间-11个月 每月免费金币
@ -60,6 +71,8 @@ public class SumCoin {
//中间-11个月 每月任务金币
private BigDecimal taskSumCoin;
private String month;
private String dayofweek;
private String day;
private Integer jwcode;

25
src/main/java/com/example/demo/domain/vo/UserConsumeCoin.java

@ -0,0 +1,25 @@
package com.example.demo.domain.vo;
import com.example.demo.domain.entity.Detail;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
public class UserConsumeCoin {
private String jwcode;
private BigDecimal free6;
private BigDecimal free12;
private BigDecimal rechargeSumCoin;
//中间-11个月 每月免费金币
private BigDecimal freeSumCoin;
//中间-11个月 每月任务金币
private BigDecimal taskSumCoin;
private BigDecimal allGold;
//
}

254
src/main/java/com/example/demo/mapper/StatisticsMapper.java

@ -9,7 +9,6 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@ -185,6 +184,8 @@ public interface StatisticsMapper {
// "ORDER BY DATE_FORMAT(create_time, '%Y-%m') DESC "})
// List<SumCoin> getMediuPayCoin();
// 本年 ---充值
@Select({
"SELECT m.month,",
" COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
@ -195,7 +196,7 @@ public interface StatisticsMapper {
" FROM (",
" SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
" UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '充值'",
@ -204,6 +205,7 @@ public interface StatisticsMapper {
})
List<SumCoin> getMediuPayCoin();
//本年--消费
@Select({
"SELECT m.month,",
" COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
@ -214,7 +216,7 @@ public interface StatisticsMapper {
" FROM (",
" SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
" UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month AND d.update_type = '消费'",
@ -222,6 +224,183 @@ public interface StatisticsMapper {
"ORDER BY m.month DESC"
})
List<SumCoin> getMediuConsumeCoin();
// 本月 ---充值
// @Select({
// "SELECT DATE(d.create_time) as day,",
// " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
// " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
// " COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
// "FROM detail d",
// "WHERE d.update_type = '充值'",
// " AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
// "GROUP BY DATE(d.create_time)",
// "ORDER BY DATE(d.create_time)"
// })
// List<SumCoin> getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"SELECT m.day,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
" FROM (",
" SELECT a.N + b.N * 10 AS n",
" FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,",
" (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b",
" ) numbers",
" WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"SELECT m.day,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
" FROM (",
" SELECT a.N + b.N * 10 AS n",
" FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,",
" (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b",
" ) numbers",
" WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuCounsumeCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
//本周--充值
@Select({
"SELECT",
" CASE DAYOFWEEK(m.day)",
" WHEN 2 THEN '星期一'",
" WHEN 3 THEN '星期二'",
" WHEN 4 THEN '星期三'",
" WHEN 5 THEN '星期四'",
" WHEN 6 THEN '星期五'",
" WHEN 7 THEN '星期六'",
" WHEN 1 THEN '星期天'",
" END AS dayofweek,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL n DAY AS day",
" FROM (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) numbers",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuPayCoinweek();
//本周--消费
@Select({
"SELECT",
" CASE DAYOFWEEK(m.day)",
" WHEN 2 THEN '星期一'",
" WHEN 3 THEN '星期二'",
" WHEN 4 THEN '星期三'",
" WHEN 5 THEN '星期四'",
" WHEN 6 THEN '星期五'",
" WHEN 7 THEN '星期六'",
" WHEN 1 THEN '星期天'",
" END AS dayofweek,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) + INTERVAL n DAY AS day",
" FROM (SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6) numbers",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuConsumeCoinweek();
//今天--消费充值
@Select({
"SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,",
" NOW() AS currentTimestamp,",
" SUM(recharge_coin) AS rechargeSumCoin,",
" SUM(free_coin) AS freeSumCoin,",
" SUM(task_coin) AS taskSumCoin",
"FROM `detail`",
"WHERE DATE(create_time) = CURDATE() AND update_type = '充值'"
})
List<SumCoin> getMediuPayCoinday();
@Select({
"SELECT DATE_FORMAT(create_time, '%Y-%m-%d') AS day,",
" NOW() AS currentTimestamp,",
" SUM(recharge_coin) AS rechargeSumCoin,",
" SUM(free_coin) AS freeSumCoin,",
" SUM(task_coin) AS taskSumCoin",
"FROM `detail`",
"WHERE DATE(create_time) = CURDATE() AND update_type = '消费'"
})
List<SumCoin> getMediuConsumeCoinday();
//给定时间段--消费充值
@Select({
"SELECT m.day,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
" FROM (",
" SELECT a.N + b.N * 10 AS n",
" FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,",
" (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b",
" ) numbers",
" WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '充值'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuPayCoin1(SumCoin sumCoin);
@Select({
"SELECT m.day,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_ADD(#{searchStartTime}, INTERVAL n DAY) AS day",
" FROM (",
" SELECT a.N + b.N * 10 AS n",
" FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a,",
" (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b",
" ) numbers",
" WHERE DATE_ADD(#{searchStartTime}, INTERVAL n DAY) <= #{searchEndTime}",
") m",
"LEFT JOIN detail d ON DATE(d.create_time) = m.day AND d.update_type = '消费'",
"GROUP BY m.day",
"ORDER BY m.day"
})
List<SumCoin> getMediuConsumeCoin2(SumCoin sumCoin);
@Select({"SELECT today.jwcode," ,
"today.rechargeSumCoin AS todayRecharge," ,
@ -267,47 +446,26 @@ public interface StatisticsMapper {
@Select({
"SELECT m.month,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.recharge_coin ELSE 0 END), 0) AS rechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.free_coin ELSE 0 END), 0) AS freeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '充值' THEN d.task_coin ELSE 0 END), 0) AS taskSumCoin",
"FROM (",
" SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
" FROM (",
" SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
" UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and detail.create_time between #{searchStartTime} and #{searchEndTime}",
"</if>",
"GROUP BY m.month",
"ORDER BY m.month DESC"
})
List<SumCoin> getMediu();
@Select({
"SELECT m.month,",
"SELECT m.week,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.recharge_coin ELSE 0 END), 0) AS xrechargeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.free_coin ELSE 0 END), 0) AS xfreeSumCoin,",
" COALESCE(SUM(CASE WHEN d.update_type = '消费' THEN d.task_coin ELSE 0 END), 0) AS xtaskSumCoin",
"FROM (",
" SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n MONTH), '%Y-%m') AS month",
" SELECT DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL n WEEK), '%Y-%u') AS week",
" FROM (",
" SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3",
" UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7",
" UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10",
" UNION ALL SELECT 4 UNION ALL SELECT 5",
" ) AS numbers",
") AS m",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%m') = m.month",
"LEFT JOIN detail d ON DATE_FORMAT(d.create_time, '%Y-%u') = m.week",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and detail.create_time between #{searchStartTime} and #{searchEndTime}",
"AND d.create_time BETWEEN #{searchStartTime} AND #{searchEndTime}",
"</if>",
"GROUP BY m.month",
"ORDER BY m.month DESC"
"GROUP BY m.week",
"ORDER BY m.week DESC"
})
List<SumCoin> getMediu2();
@ -325,13 +483,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by freeSumCoin desc",
"</script>"
})
List<Meium> getBuyAndFree(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getBuyAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -345,13 +503,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by rechargeSumCoin desc",
"</script>"
})
List<Meium> getBuyAndRecharge(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getBuyAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -365,13 +523,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by taskSumCoin desc",
"</script>"
})
List<Meium> getBuyAndTask(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getBuyAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -385,13 +543,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by totalRechargeSum desc",
"</script>"
})
List<Meium> getBuy(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getBuy(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -405,13 +563,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by freeSumCoin asc",
"</script>"
})
List<Meium> getPayAndFree(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getPayAndFree(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -425,13 +583,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by rechargeSumCoin asc",
"</script>"
})
List<Meium> getPayAndRecharge(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getPayAndRecharge(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -445,13 +603,13 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by taskSumCoin asc",
"</script>"
})
List<Meium> getPayAndTask(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getPayAndTask(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({
"<script>",
"SELECT ad.area,",
@ -465,11 +623,11 @@ public interface StatisticsMapper {
"FROM detail d",
"right JOIN admin ad ON ad.admin_id = d.admin_id",
"<if test='searchStartTime != null and searchEndTime != null'>",
"and d.create_time between #{searchStartTime} and #{searchEndTime}",
"AND DATE(d.create_time) BETWEEN DATE(#{searchStartTime}) AND DATE(#{searchEndTime})",
"</if>",
"GROUP BY ad.area, ad.store",
"order by totalRechargeSum asc",
"</script>"
})
List<Meium> getPay(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
}

5
src/main/java/com/example/demo/mapper/UserMapper.java

@ -82,10 +82,7 @@ public interface UserMapper {
})
int update(User user);
@Select({
"select * from user where jwcode=#{jwcode}"
})
User selectByJwcode(String jwcode);// //去掉免费金币先去6个月再去12月
// //去掉免费金币先去6个月再去12月
// @Update({
// "<script>",
// "update user",

31
src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java

@ -35,13 +35,13 @@ public class ConsumeServiceImpl implements ConsumeService {
@Autowired
ConsumeMapper consumeMapper;
private final UserMapper userMapper;
private final UserServiceImpl userService;
@CacheEvict(value = "consume", allEntries = true)
@Override
//新增消费记录
public int insert(Detail detail) throws Exception {
BigDecimal paidGold1 =detail.getFreeCoin();
BigDecimal freeGold1 =detail.getRechargeCoin();
BigDecimal paidGold1 =detail.getRechargeCoin();
BigDecimal freeGold1 =detail.getFreeCoin();
BigDecimal taskGold1 =detail.getTaskCoin();
String jwcode = detail.getJwcode();
User user = userMapper.get(jwcode);
@ -85,11 +85,26 @@ public class ConsumeServiceImpl implements ConsumeService {
//消费完成后需要将用户的三币从user表中去掉
//消费记录添加完成
// if(result==1){
// userMapper.updateFreecoin(detail.getFreeCoin());
// userMapper.updateRechargeCoin(detail.getRechargeCoin());
// userMapper.updateTaskCoin(detail.getTaskCoin());
// }
if(result==1){
userService.updateFreecoin(detail);
// BigDecimal paidGold1 =detail.getRechargeCoin();
// BigDecimal freeGold1 =detail.getFreeCoin();
// BigDecimal taskGold1 =detail.getTaskCoin();
BigDecimal newbuyjb = user.getBuyJb().subtract(paidGold1);
user.setBuyJb(newbuyjb);
BigDecimal newtask = user.getCoreJb().subtract(taskGold1);
user.setCoreJb(newtask);
System.out.println(user.getFree6()+"-------1---");
System.out.println(user.getFree12()+"-------2---");
System.out.println(user.getFree6()+"----------");
System.out.println(user.getFree6()+"-------1---");
// 更新用户对象以反映新的余额
result = userMapper.update(user);
}
return result;

77
src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java

@ -1,6 +1,9 @@
package com.example.demo.serviceImpl;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import com.example.demo.Util.CheckIfNullUtil;
import com.example.demo.domain.vo.Meium;
import com.example.demo.domain.vo.Statistics;
@ -14,8 +17,12 @@ import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.List;
@RequiredArgsConstructor
@ -162,7 +169,73 @@ public class StatisticsServiceImpl implements StatisticsService {
@Override
public List<SumCoin> getMediu() {
return statisticsMapper.getMediu();
return List.of();
}
public List<SumCoin> getCoinTime( SumCoin sumcoin) {
System.out.println(sumcoin+"-------sumcoin----");
Date searchStartTime=sumcoin.getSearchStartTime();
Date searchEndTime=sumcoin.getSearchEndTime();
String updateType=sumcoin.getUpdateType();
// //提供开始时间与结束时间
//// if(searchStartTime!=null && searchEndTime!=null){
// //计算两个时间点之间的差值
// long daysBetween = ChronoUnit.DAYS.between(searchStartTime, searchEndTime);
// 提供开始时间与结束时间
// 使用 Calendar 清除时间和时区的影响
Calendar startCal = Calendar.getInstance();
startCal.setTime(searchStartTime);
startCal.set(Calendar.HOUR_OF_DAY, 0);
startCal.set(Calendar.MINUTE, 0);
startCal.set(Calendar.SECOND, 0);
startCal.set(Calendar.MILLISECOND, 0);
Calendar endCal = Calendar.getInstance();
endCal.setTime(searchEndTime);
endCal.set(Calendar.HOUR_OF_DAY, 0);
endCal.set(Calendar.MINUTE, 0);
endCal.set(Calendar.SECOND, 0);
endCal.set(Calendar.MILLISECOND, 0);
// 计算两个时间点之间的天数差异
long diffInMillies = endCal.getTimeInMillis() - startCal.getTimeInMillis();
long daysBetween = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
// // 计算两个时间点之间的天数差异
// long daysBetween = ChronoUnit.DAYS.between(searchStartTime, searchEndTime);
// //
if(daysBetween>100){
if("消费".equals(updateType)){
return statisticsMapper.getMediuConsumeCoin();
}else if("充值".equals(updateType)){
return statisticsMapper.getMediuPayCoin();
}
//
// }else if(daysBetween<=7 && daysBetween>=2){
// if("消费".equals(updateType)){
// return statisticsMapper.getMediuConsumeCoinweek();
// }else if("充值".equals(updateType)){
// return statisticsMapper.getMediuPayCoinweek();
// }
// //本天
}else {
if ("消费".equals(updateType)) {
return statisticsMapper.getMediuCounsumeCoinyue(searchStartTime,searchEndTime);
} else if ("充值".equals(updateType)) {
return statisticsMapper.getMediuPayCoinyue(searchStartTime,searchEndTime);
}
}
return null;
}

100
src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java

@ -1,19 +1,23 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Detail;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.UserConsumeCoin;
import com.example.demo.domain.vo.UserVo;
import com.example.demo.mapper.UserMapper;
import com.example.demo.sevice.UserSevice;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.math.BigDecimal;
import java.util.List;
@Transactional
@Service
@ -36,4 +40,100 @@ public class UserServiceImpl implements UserSevice {
List<User> list= userMapper.selectAll(user);
return new PageInfo<>(list);
}
//设置免费金币
// public User updateFreecoin(Detail userConsumeCoin) {
//
// String jwcode = userConsumeCoin.getJwcode();
// User user = userMapper.get(jwcode);
//
// //前端三币之和allGold
// BigDecimal allGold = userConsumeCoin.getAllGold();
// //数据表
// BigDecimal sum = user.getFree6().add(user.getFree12()).add(user.getCoreJb()).add(user.getBuyJb());
// //前端提供免费金币任务充值金币
// BigDecimal freeSumCoin = userConsumeCoin.getFreeCoin().abs();
//// BigDecimal rechargeSumCoin = userConsumeCoin.getRechargeSumCoin();
//// BigDecimal taskSumCoin = userConsumeCoin.getTaskSumCoin();
// System.out.println(freeSumCoin+"---------freecoin");
// if(allGold.compareTo(sum)<=0 ){
// if (freeSumCoin == null) {
// // 根据业务需求处理 null
// System.out.println("000000000000000000");
// return null; // 或者抛出异常或者设置默认行为
// }else{
//// 如果返回 -1则调用 compareTo BigDecimal 小于参数
//// 如果返回 0则两者相等
//// 如果返回 1则调用 compareTo BigDecimal 大于参数
// if(user.getFree6().compareTo(freeSumCoin)==1){
// //rechargeSumCoin小直接减
// BigDecimal newFree6 = user.getFree6().subtract(freeSumCoin);
// System.out.println(newFree6+"_____newFree61---");
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// user.setFree6(newFree6);
// System.out.println("1111111111111");
// return user;
// }else if(user.getFree6().compareTo(freeSumCoin)==-1){
// BigDecimal subtract = freeSumCoin.subtract(user.getFree6());//还差多少免费金币
// BigDecimal subtract1 = user.getFree12().subtract(subtract);
// user.setFree12(subtract1);
// user.setFree6(BigDecimal.ZERO);
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// System.out.println("22222222222222222");
// return user;
// }else if(user.getFree6().compareTo(freeSumCoin)==0){
// user.setFree6(BigDecimal.ZERO);
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// System.out.println("33333333333333333333");
// return user;
// }
//
// }
//
//
// }
// System.out.println("金币数不够,请前去去充值");
//
// return null;
//
// }
public User updateFreecoin(Detail userConsumeCoin) {
// 获取用户消费的免费金币并取绝对值确保为正数
BigDecimal newfree = userConsumeCoin.getFreeCoin().abs();
String jwcode = userConsumeCoin.getJwcode();
User user = userMapper.get(jwcode);
BigDecimal free6 = user.getFree6();
BigDecimal free12 = user.getFree12();
// 先尝试从 free6 中扣除
if (free6.compareTo(newfree) >= 0) {
// free6 足够支付新消费的免费金币
free6 = free6.subtract(newfree);
user.setFree6(free6);
System.out.println("只花了free6 ");
} else {
// free6 不足以支付需要从 free12 中扣除剩余部分
BigDecimal remaining = newfree.subtract(free6);
free6 = BigDecimal.ZERO;
free12 = free12.subtract(remaining);
user.setFree6(free6);
user.setFree12(free12);
System.out.println("花了free6 和free12.");
}
// 更新用户对象以反映新的余额
int result = userMapper.update(user);
if (result != 1) {
throw new RuntimeException("无法实现用户表金币更新");
}
return user;
}
}

2
src/main/java/com/example/demo/sevice/UserSevice.java

@ -2,8 +2,10 @@ package com.example.demo.sevice;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.UserConsumeCoin;
import com.example.demo.domain.vo.UserVo;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import java.util.List;

Loading…
Cancel
Save