Browse Source

Merge remote-tracking branch 'origin/dev' into dev

detached
zhangluping 5 months ago
parent
commit
177225d8c7
  1. 6
      src/main/java/com/example/demo/controller/AuditController.java
  2. 23
      src/main/java/com/example/demo/controller/StatisticsController.java
  3. 34
      src/main/java/com/example/demo/domain/entity/Activity.java
  4. 1
      src/main/java/com/example/demo/domain/entity/Audit.java
  5. 8
      src/main/java/com/example/demo/domain/entity/Detail.java
  6. 9
      src/main/java/com/example/demo/domain/vo/Meium.java
  7. 2
      src/main/java/com/example/demo/domain/vo/RechargeVo.java
  8. 17
      src/main/java/com/example/demo/domain/vo/SumCoin.java
  9. 25
      src/main/java/com/example/demo/domain/vo/UserConsumeCoin.java
  10. 1
      src/main/java/com/example/demo/mapper/ActivityMapper.java
  11. 256
      src/main/java/com/example/demo/mapper/StatisticsMapper.java
  12. 9
      src/main/java/com/example/demo/mapper/UserMapper.java
  13. 78
      src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java
  14. 55
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  15. 34
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  16. 59
      src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
  17. 135
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  18. 100
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  19. 1
      src/main/java/com/example/demo/sevice/AuditService.java
  20. 2
      src/main/java/com/example/demo/sevice/UserSevice.java

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

@ -44,6 +44,12 @@ public class AuditController {
}
}
@PostMapping("/goldedit")
public Result goldedit(@RequestBody Audit audit) throws Exception {
auditService.goldedit(audit);
return Result.success();
}
@PostMapping("/edit")
public Result edit(@RequestBody Audit audit){

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));
}
}

34
src/main/java/com/example/demo/domain/entity/Activity.java

@ -21,34 +21,38 @@ public class Activity implements Serializable {
private Integer activityId;
private Integer adminId;
private String dept;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime startTime;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime endTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
private String activityName;
private BigDecimal rechargeRatio;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime createTime;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
private Integer activityFlag;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private String name;
private Integer status;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime startDate;
@JsonSerialize(using = LocalDateTimeSerializer.class)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime endDate;
private Date startDate;
private Date endDate;
private String token; // 新增的token字段
private String adminName;
private String freeGold;
}

1
src/main/java/com/example/demo/domain/entity/Audit.java

@ -25,5 +25,6 @@ public class Audit {
private String reson;
private Integer detailId;
private String token;
private Recharge recharge;
}

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;
}

9
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;
@ -22,9 +25,11 @@ public class Meium implements Serializable {
private BigDecimal taskSumCoin;
private String area;
private String store;
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BigDecimal totalRechargeSum;
private LocalDateTime searchStartTime;
private LocalDateTime searchEndTime;
private Date searchStartTime;
private Date searchEndTime;
private String updateType;
private String type;
private String token; // 新增的token字段

2
src/main/java/com/example/demo/domain/vo/RechargeVo.java

@ -40,4 +40,6 @@ public class RechargeVo {
private Integer auditId;
private String token;
private Integer detailId;
}

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;
//
}

1
src/main/java/com/example/demo/mapper/ActivityMapper.java

@ -63,6 +63,7 @@ public interface ActivityMapper {
"AND activity.activity_id = #{activityId}",
"</if>",
"</where>",
"ORDER BY activity.create_time DESC,activity.start_time DESC",
"</script>"
})
List<Activity> select(Activity activity);

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

@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
@ -185,6 +186,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 +198,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 +207,7 @@ public interface StatisticsMapper {
})
List<SumCoin> getMediuPayCoin();
//本年--消费
@Select({
"SELECT m.month,",
" COALESCE(SUM(d.recharge_coin), 0) AS rechargeSumCoin,",
@ -214,7 +218,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 +226,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 +448,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 +485,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 +505,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 +525,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 +545,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 +565,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 +585,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 +605,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 +625,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 asc",
"</script>"
})
List<Meium> getPay(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime);
List<Meium> getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
}

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

@ -67,6 +67,10 @@ public interface UserMapper {
"select * from user where name=#{name}"
})
User selectByName(String name);
@Select({
"select * from user where jwcode=#{jwcode}"
})
User selectByJwcode(String jwcode);
@Update({
"<script>",
@ -82,10 +86,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",

78
src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java

@ -50,24 +50,49 @@ public class ActivityServiceImpl implements ActivityService {
}
@Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #activity.hashCode() ")
@Override
public PageInfo<Activity> searchForPage(Integer pageNum, Integer pageSize, Activity activity) {
// PageHelper.startPage(pageNum, pageSize);
// List<Activity> list = activityMapper.select(activity);
// return new PageInfo<>(list);
PageHelper.startPage(pageNum, pageSize);
List<Activity> list = activityMapper.select(activity);
Date nowDate = new Date();
list.forEach(activity1 -> {
// 假设 getStartTime() getEndTime() 返回的是 java.util.Date 类型
Date startTime = activity1.getStartTime();
Date endTime = activity1.getEndTime();
// 使用 Date 类的 before after 方法进行比较
if (nowDate.before(startTime)) {
activity1.setStatus(0); // 设置状态为 0
} else if (nowDate.after(endTime)) {
activity1.setStatus(2); // 设置状态为 2
} else {
activity1.setStatus(1); // 设置状态为 1
}
// 保存修改后的对象
activityMapper.edit(activity1);
});
return new PageInfo<>(list);
}
}
// @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #activity.hashCode() ")
// @Override
// public PageInfo<Activity> searchForPage(Integer pageNum, Integer pageSize, Activity activity) {
//// PageHelper.startPage(pageNum, pageSize);
//// List<Activity> list = activityMapper.select(activity);
//// return new PageInfo<>(list);
//
// PageHelper.startPage(pageNum, pageSize);
// List<Activity> list = activityMapper.select(activity);
// Date nowDate = new Date();
// list.forEach(activity1 -> {
// // 假设 getStartTime() getEndTime() 返回的是 java.util.Date 类型
// LocalDateTime nowDate = LocalDateTime.now();
//
// for (Activity activity1 : list) {
// Date startTime = activity1.getStartTime();
// Date endTime = activity1.getEndTime();
//
// // 使用 Date 类的 before after 方法进行比较
// if (nowDate.before(startTime)) {
// if (nowDate.isBefore(startTime)) {
// activity1.setStatus(0); // 设置状态为 0
// } else if (nowDate.after(endTime)) {
// } else if (nowDate.isAfter(endTime)) {
// activity1.setStatus(2); // 设置状态为 2
// } else {
// activity1.setStatus(1); // 设置状态为 1
@ -75,32 +100,9 @@ public class ActivityServiceImpl implements ActivityService {
//
// // 保存修改后的对象
// activityMapper.edit(activity1);
// });
// }
//
// // 返回分页信息
// return new PageInfo<>(list);
// }
//}
public PageInfo<Activity> searchForPage(Integer pageNum, Integer pageSize, Activity activity) {
PageHelper.startPage(pageNum, pageSize);
List<Activity> list = activityMapper.select(activity);
LocalDateTime nowDate = LocalDateTime.now();
for (Activity activity1 : list) {
LocalDateTime startTime = activity1.getStartTime();
LocalDateTime endTime = activity1.getEndTime();
if (nowDate.isBefore(startTime)) {
activity1.setStatus(0); // 设置状态为 0
} else if (nowDate.isAfter(endTime)) {
activity1.setStatus(2); // 设置状态为 2
} else {
activity1.setStatus(1); // 设置状态为 1
}
// 保存修改后的对象
activityMapper.edit(activity1);
}
// 返回分页信息
return new PageInfo<>(list);
}
}
//}

55
src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java

@ -4,8 +4,11 @@ package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Audit;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.ConsumeDetail;
import com.example.demo.mapper.AuditMapper;
import com.example.demo.mapper.RechargeMapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.sevice.AuditService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@ -16,12 +19,17 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.Month;
import java.util.List;
@Transactional
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "audit")
public class AuditServiceImpl implements AuditService {
private final UserMapper userMapper;
private final AuditMapper auditMapper;
@CacheEvict(value = {"audit", "recharge"}, allEntries = true)
@ -36,6 +44,53 @@ public class AuditServiceImpl implements AuditService {
return auditMapper.update(audit);
}
@CacheEvict(value = {"audit", "recharge","refund"}, allEntries = true)
@Override
public int goldedit(Audit audit) throws Exception {
int result = auditMapper.update(audit);
if (result != 1) {
throw new Exception("Failed to insert recharge data");
}
Integer auditFlag = audit.getAuditFlag();
if(auditFlag == 1){
String jwcode=audit.getRecharge().getJwcode();
BigDecimal paidGold1 =audit.getRecharge().getPaidGold();
BigDecimal freeGold1 =audit.getRecharge().getFreeGold();
User user = userMapper.select(jwcode);
BigDecimal buyJb =user.getBuyJb();
buyJb = buyJb.add(paidGold1);
// 设置更新后的Sumgold回到user对象
user.setBuyJb(buyJb);
LocalDate now = LocalDate.now();
// 判断当前日期是在六月之前还是之后
Month currentMonth = now.getMonth();
boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue();
boolean isJune = currentMonth.getValue() == Month.JUNE.getValue();
boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue();
// 根据月份更新 free6 free12
if (isBeforeJune||isJune) {
// 如果是六月前更新 free6
BigDecimal free6 = user.getFree6().add(freeGold1);
user.setFree6(free6);
} else if (isAfterJune) {
// 如果是六月后更新 free12
BigDecimal free12 = user.getFree12().add(freeGold1);
user.setFree12(free12);
}
System.out.println(user+"----------------------------------------------------------");
result = userMapper.update(user);
if (result != 1) {
throw new Exception("Failed to insert recharge data");
}
}
return auditMapper.update(audit);
}
@Override
public List<Audit> search(Audit audit) {
return auditMapper.select(audit);

34
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);
@ -57,10 +57,11 @@ public class ConsumeServiceImpl implements ConsumeService {
// 判断当前日期是在六月之前还是之后
Month currentMonth = now.getMonth();
boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue();
boolean isJune = currentMonth.getValue() == Month.JUNE.getValue();
boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue();
// 根据月份更新 free6 free12
if (isBeforeJune) {
if (isBeforeJune||isJune) {
// 如果是六月前更新 free6
BigDecimal free6 = user.getFree6().add(freeGold1);
user.setFree6(free6);
@ -85,11 +86,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;

59
src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java

@ -92,7 +92,6 @@ public class RechargeServiceImpl implements RechargeService {
}
detail.setJwcode(JwCode);
detail.setActivityId(activityId);
detail.setTaskCoin(paidGold);
detail.setRechargeCoin(rechargeGold);
detail.setFreeCoin(freeGold);
detail.setRechargeWay(rechargeWay);
@ -109,35 +108,35 @@ public class RechargeServiceImpl implements RechargeService {
throw new Exception("Failed to insert another entity");
}
BigDecimal paidGold1 =recharge.getPaidGold();
BigDecimal freeGold1 =recharge.getFreeGold();
User user = userMapper.select(jwcode);
BigDecimal buyJb =user.getBuyJb();
buyJb = buyJb.add(paidGold1);
// 设置更新后的Sumgold回到user对象
user.setBuyJb(buyJb);
LocalDate now = LocalDate.now();
// 判断当前日期是在六月之前还是之后
Month currentMonth = now.getMonth();
boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue();
boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue();
// 根据月份更新 free6 free12
if (isBeforeJune) {
// 如果是六月前更新 free6
BigDecimal free6 = user.getFree6().add(freeGold1);
user.setFree6(free6);
} else if (isAfterJune) {
// 如果是六月后更新 free12
BigDecimal free12 = user.getFree12().add(freeGold1);
user.setFree12(free12);
}
System.out.println(user+"----------------------------------------------------------");
result = userMapper.update(user);
// BigDecimal paidGold1 =recharge.getPaidGold();
// BigDecimal freeGold1 =recharge.getFreeGold();
// User user = userMapper.select(jwcode);
// BigDecimal buyJb =user.getBuyJb();
//
// buyJb = buyJb.add(paidGold1);
//
//// 设置更新后的Sumgold回到user对象
// user.setBuyJb(buyJb);
// LocalDate now = LocalDate.now();
//
//// 判断当前日期是在六月之前还是之后
// Month currentMonth = now.getMonth();
// boolean isBeforeJune = currentMonth.getValue() < Month.JUNE.getValue();
// boolean isAfterJune = currentMonth.getValue() > Month.JUNE.getValue();
//
//// 根据月份更新 free6 free12
// if (isBeforeJune) {
// // 如果是六月前更新 free6
// BigDecimal free6 = user.getFree6().add(freeGold1);
// user.setFree6(free6);
// } else if (isAfterJune) {
// // 如果是六月后更新 free12
// BigDecimal free12 = user.getFree12().add(freeGold1);
// user.setFree12(free12);
// }
//
// System.out.println(user+"----------------------------------------------------------");
// result = userMapper.update(user);
if (result != 1) {
throw new Exception("Failed to insert another entity");
}

135
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
@ -129,7 +136,7 @@ public class StatisticsServiceImpl implements StatisticsService {
@Override
@Override
public List<Meium> getMee( Meium meium) {
@ -155,15 +162,135 @@ public class StatisticsServiceImpl implements StatisticsService {
return statisticsMapper.getPay(meium.getSearchStartTime(),meium.getSearchEndTime());
}
} else{ return null;}
} else
return null;
}
@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);
//
//
// //
// if(daysBetween>100 || searchStartTime==null & searchEndTime==null){
// if("消费".equals(updateType)){
// return statisticsMapper.getMediuConsumeCoin();
// }else if("充值".equals(updateType)){
// return statisticsMapper.getMediuPayCoin();
// }
//
// }else {
// if ("消费".equals(updateType)) {
// return statisticsMapper.getMediuCounsumeCoinyue(searchStartTime,searchEndTime);
// } else if ("充值".equals(updateType)) {
// return statisticsMapper.getMediuPayCoinyue(searchStartTime,searchEndTime);
// }
// }
//
//
//
//
//
//
// return null;
//
// }
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) {
if ("消费".equals(updateType)) {
return statisticsMapper.getMediuConsumeCoin();
} else if ("充值".equals(updateType)) {
return statisticsMapper.getMediuPayCoin();
}
return null; // 或者抛出异常取决于业务需求
}
// 如果只有其中一个时间为null则可能需要处理或抛出异常这里假设不允许这种情况
if (searchStartTime == null || searchEndTime == null) {
throw new IllegalArgumentException("开始时间和结束时间必须同时为空或不为空");
}
// 使用 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);
// 根据条件选择查询方法
if (daysBetween > 100) {
if ("消费".equals(updateType)) {
return statisticsMapper.getMediuConsumeCoin();
} else if ("充值".equals(updateType)) {
return statisticsMapper.getMediuPayCoin();
}
} else {
if ("消费".equals(updateType)) {
return statisticsMapper.getMediuCounsumeCoinyue(searchStartTime, searchEndTime);
} else if ("充值".equals(updateType)) {
return statisticsMapper.getMediuPayCoinyue(searchStartTime, searchEndTime);
}
}
// 如果没有匹配的updateType返回null或抛出异常取决于业务需求
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;
}
}

1
src/main/java/com/example/demo/sevice/AuditService.java

@ -11,6 +11,7 @@ import java.util.List;
public interface AuditService {
int add (Audit audit);
int edit(Audit audit);
int goldedit(Audit audit) throws Exception;
List<Audit> search(Audit audit) ;
PageInfo<Audit> searchForPage(Integer pageNum, Integer pageSize, Audit audit);
List<ConsumeDetail> searchForDetail(ConsumeDetail consumeDetail);

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