Browse Source

后端整合模块

detached
huangqizhen 5 months ago
parent
commit
e58a94cd79
  1. 15
      src/main/java/com/example/demo/domain/entity/Audit.java
  2. 3
      src/main/java/com/example/demo/domain/entity/DetailY.java
  3. 1
      src/main/java/com/example/demo/domain/vo/RechargeVo.java
  4. 2
      src/main/java/com/example/demo/mapper/DetailMapper.java
  5. 63
      src/main/java/com/example/demo/mapper/StatisticsMapper.java
  6. 83
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  7. 184
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java

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

@ -30,6 +30,21 @@ public class Audit {
private BigDecimal freeGold;
private BigDecimal paidGold;
private BigDecimal rechargeGold;
private Integer activityId;
private String activityName;
private String area;
private Integer flag;
private String name;
private String payWay;
private String remark;
private String userName;
private String orderCode;
private String rechargeWay;
private String rechargeVoucher;
private String rechargeTime;
private String username;
}

3
src/main/java/com/example/demo/domain/entity/DetailY.java

@ -64,4 +64,7 @@ public class DetailY implements Serializable {
private BigDecimal free12;
private BigDecimal allGold;
private String ActivityName;
private Integer flag;
private String reson;
}

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

@ -41,5 +41,6 @@ public class RechargeVo {
private String token;
private Integer detailId;
private String orderCode;
}

2
src/main/java/com/example/demo/mapper/DetailMapper.java

@ -38,7 +38,7 @@ public interface DetailMapper {
"<where>",
"(status is null or status='1')",
"<if test='jwcode!=null and jwcode.length>0'>and detail.jwcode=#{jwcode}</if>",
"<if test='updateType!=null and updateType.length>0'>and update_type=#{updateType}</if>",
"<if test='updateType!=null'>and update_type=#{updateType}</if>",
"<if test='startDate != null and endDate != null'>AND detail.create_time BETWEEN #{startDate} AND #{endDate}</if>",
"</where>",
"</script>"

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

@ -198,15 +198,18 @@ public interface StatisticsMapper {
@Select({
"SELECT DATE_FORMAT(create_time, '%Y-%m') AS month," +
" SUM(recharge_coin) AS rechargeSumCoin," +
" SUM(free_coin) AS freeSumCoin," +
" SUM(task_coin) AS taskSumCoin" +
" FROM detail" +
" WHERE create_time >= #{searchStartTime}" +
" AND create_time <= #{searchEndTime}" +
" AND update_type = '0'" +
"GROUP BY month ORDER BY month ASC"
"<script>",
"SELECT DATE_FORMAT(create_time, '%Y-%m') AS month," ,
" SUM(recharge_coin) AS rechargeSumCoin," ,
" SUM(free_coin) AS freeSumCoin," ,
" SUM(task_coin) AS taskSumCoin" ,
" FROM detail" ,
" WHERE update_type = '0'" ,
"<if test='searchStartTime != null and searchEndTime != null'>",
" AND create_time BETWEEN #{searchStartTime} AND #{searchEndTime}",
"</if>",
"GROUP BY month ORDER BY month ASC",
"</script>"
})
List<SumCoin> getMediuPayCoin(@Param("searchStartTime") Date StartTime, @Param("searchEndTime") Date searchEndTime);
@ -229,7 +232,7 @@ public interface StatisticsMapper {
"WHERE update_type = '1'",
"<if test='searchStartTime != null and searchEndTime != null'>",
" AND create_time BETWEEN #{searchStartTime} AND #{searchEndTime}",
"</if>",
"</if>",//之前没有加动态SQL如果前端传递空数据库会查不到
"GROUP BY month",
"ORDER BY month ASC",
"</script>"
@ -239,44 +242,44 @@ public interface StatisticsMapper {
// 本月 ---0
@Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " +
"from detail where recharge_coin>0 and datediff(create_time,#{searchStartTime})>=0 " +
"and datediff(create_time,#{searchEndTime})<=0 and update_type = '0' group by DATE_FORMAT(create_time,'%m-%d')"
"from detail where datediff(create_time,#{searchStartTime})>=0 " +
"and datediff(create_time,#{searchEndTime})<=0 and update_type = 0 group by DATE_FORMAT(create_time,'%m-%d')"
})
List<SumCoin> getMediuPayCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " +
"from detail where recharge_coin>0 and datediff(create_time,#{searchStartTime})>=0 " +
"and datediff(create_time,#{searchEndTime})<=0 and update_type = '1' group by DATE_FORMAT(create_time,'%m-%d')"
"from detail where datediff(create_time,#{searchStartTime})>=0 " +
"and datediff(create_time,#{searchEndTime})<=0 and update_type = 1 group by DATE_FORMAT(create_time,'%m-%d')"
})
List<SumCoin> getMediuCounsumeCoinyue(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@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 = '0'"
@Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " +
"from detail where create_time=#{searchEndTime} and update_type = 0 group by DATE_FORMAT(create_time,'%m-%d')"
})
List<SumCoin> getMediuPayCoinday();
List<SumCoin> getMediuPayCoinday(@Param("searchEndTime") Date searchEndTime, @Param("updateType") Integer updateType);
@Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " +
"from detail where create_time=#{searchStartTime} and update_type = 1 group by DATE_FORMAT(create_time,'%m-%d')"
})
List<SumCoin> getMediuConsumeCoinday1(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
@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 = '1'"
"IFNULL(SUM(recharge_coin), 0) AS rechargeSumCoin,",
"IFNULL(SUM(free_coin), 0) AS freeSumCoin,",
"IFNULL(SUM(task_coin), 0) AS taskSumCoin",
"FROM detail",
"WHERE DATE(create_time) = #{searchEndTime}",
"AND update_type = #{updateType}",
"GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')"
})
List<SumCoin> getMediuConsumeCoinday(@Param("searchEndTime") Date searchEndTime, @Param("updateType") Integer updateType);
List<SumCoin> getMediuConsumeCoinday();
//给定时间段--10
@Select({"select DATE_FORMAT(create_time,'%Y-%m-%d') as day,sum(recharge_coin) AS rechargeSumCoin,sum(free_coin) as freeSumCoin ,sum(task_coin) as taskSumCoin " +

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

@ -5,14 +5,17 @@ package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Audit;
import com.example.demo.domain.entity.Detail;
import com.example.demo.domain.entity.DetailY;
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.DetailYMapper;
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;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
@ -23,7 +26,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.Month;
import java.util.Date;
import java.util.List;
@Transactional
@Service
@RequiredArgsConstructor
@ -32,9 +37,11 @@ public class AuditServiceImpl implements AuditService {
private final UserMapper userMapper;
private final AuditMapper auditMapper;
private final DetailYMapper detailYMapper;
@CacheEvict(value = {"audit", "recharge"}, allEntries = true)
@Override
public int add(Audit audit) {
return auditMapper.insert(audit);
}
@ -47,6 +54,7 @@ public class AuditServiceImpl implements AuditService {
@CacheEvict(value = {"audit", "recharge","refund"}, allEntries = true)
@Override
@Transactional
public int goldedit(Audit audit) throws Exception {
int result = auditMapper.update(audit);
if (result != 1) {
@ -89,34 +97,53 @@ public class AuditServiceImpl implements AuditService {
throw new Exception("Failed to insert recharge data");
}
// int rechargeId = audit.getRechargeId();
// String jwCode= audit.getJwcode();
// String JwCode = audit.getJwcode();
// int activityId = audit.getActivityId();
// BigDecimal paidGold =audit.getPaidGold();
// BigDecimal freeGold =audit.getFreeGold();
// BigDecimal rechargeGold =audit.getRechargeGold();
// String rechargeWay =audit.getRechargeWay();
// String remark =audit.getRemark();
// int adminId =audit.getAdminId();
// Detail detail = new Detail();
// detail.setJwcode(JwCode);
// detail.setActivityId(activityId);
// detail.setRechargeCoin(rechargeGold);
// detail.setFreeCoin(freeGold);
// detail.setRechargeWay(rechargeWay);
// detail.setRemark(remark);
// detail.setUpdateType("充值");
// detail.setAdminId(adminId);
//
//
// System.out.println(uuid+"/*/*/*-/-*/-/*-/-*/-/*-/*-/-*");
// detail.setOrderCode(uuid);
// System.out.println(detail);
// result = detailMapper.add(detail);
// if (result != 1) {
// throw new Exception("Failed to insert another entity");
// }
int rechargeId = audit.getRechargeId();
String jwCode= audit.getJwcode();
String JwCode = audit.getJwcode();
int activityId = audit.getActivityId();
BigDecimal paidGold =audit.getPaidGold();
BigDecimal freeGold =audit.getFreeGold();
BigDecimal rechargeGold =audit.getRechargeGold();
String remark =audit.getRemark();
String uuid = audit.getOrderCode();
int adminId =audit.getAdminId();
String activityName = audit.getActivityName();
String area = audit.getArea();
String username = audit.getUserName();
Integer status1=audit.getStatus();
String reson = audit.getReson();
String name = audit.getName();
Integer flag = audit.getFlag();
Date createTime = audit.getCreateTime();
DetailY detailY = new DetailY();
detailY.setJwcode(JwCode);
detailY.setActivityId(activityId);
detailY.setRechargeCoin(paidGold);
detailY.setFreeCoin(freeGold);
detailY.setRemark(remark);
detailY.setUpdateType(0);
detailY.setAdminId(adminId);
detailY.setActivityName(activityName);
detailY.setArea(area);
detailY.setName(name);
detailY.setUserName(username);
detailY.setOrderCode(uuid);
detailY.setStatus(status1);
detailY.setReson(reson);
detailY.setFlag(flag);
detailY.setCreateTime(createTime);
System.out.println(uuid+"/*/*/*-/-*/-/*-/-*/-/*-/*-/-*");
detailY.setOrderCode(uuid);
System.out.println(detailY);
result = detailYMapper.add(detailY);
if (result != 1) {
throw new Exception("Failed to insert another entity");
}
}
return auditMapper.update(audit);
}

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

@ -1,9 +1,8 @@
package com.example.demo.serviceImpl;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import com.example.demo.Util.CheckIfNullUtil;
import com.example.demo.domain.vo.Meium;
@ -32,6 +31,7 @@ import java.util.List;
@CacheConfig(cacheNames = "statistics")
public class StatisticsServiceImpl implements StatisticsService {
private final StatisticsMapper statisticsMapper;
@Cacheable(key = "#root.method.name")
@Override
public Statistics getStatistics() {
@ -85,6 +85,7 @@ public class StatisticsServiceImpl implements StatisticsService {
return statistics;
}
@Cacheable(key = "#root.method.name")
@Override
public Statisticss stats() {
@ -101,11 +102,13 @@ public class StatisticsServiceImpl implements StatisticsService {
public SumCoin getSumCoin() {
return statisticsMapper.getSumCoin();
}
@Cacheable(key = "#root.method.name")
@Override
public SumCoin getYearConsumeCoin() {
return statisticsMapper.getYearConsumeCoin();
}
@Cacheable(key = "#root.method.name")
@Override
public SumCoin getDayConsumeCoin() {
@ -126,11 +129,13 @@ public class StatisticsServiceImpl implements StatisticsService {
public SumCoin getMess(Integer jwcode) {
return statisticsMapper.getMess(jwcode);
}
@Cacheable(key = "#root.method.name")
@Override
public List<SumCoin> getMediumAreaPay() {
return statisticsMapper.getMediumAreaPay();
}
@Cacheable(key = "#root.method.name")
@Override
public List<SumCoin> getMediumAreaConsume() {
@ -138,7 +143,6 @@ public class StatisticsServiceImpl implements StatisticsService {
}
@Override
public List<Meium> getMee(Meium meium) {
@ -227,15 +231,108 @@ public class StatisticsServiceImpl implements StatisticsService {
// return statisticsMapper.getMediuPayCoinyue(searchStartTime,searchEndTime);
// }
// }
// return null;
//
// }
//
// @Cacheable(key = "#root.method.name + #sumcoin.hashCode()")
// public List<SumCoin> getCoinTime(SumCoin sumcoin) {
// System.out.println(sumcoin + "-------sumcoin----");
//
// Date searchStartTime = sumcoin.getSearchStartTime();
// Date searchEndTime = sumcoin.getSearchEndTime();
// Integer updateType = sumcoin.getUpdateType();
//
// // 如果开始时间和结束时间都为空则直接返回默认统计结果
// if (searchStartTime == null && searchEndTime == null) {
// if (1 == updateType) {
// return statisticsMapper.getMediuConsumeCoin(null, null);
// } else if (0 == updateType) {
// return statisticsMapper.getMediuPayCoin(null, null);
// }
// return null; // 或者抛出异常取决于业务需求
// }
//
// // 如果只有其中一个时间为null则可能需要处理或抛出异常这里假设不允许这种情况
// if (searchStartTime == null || searchEndTime == null) {
// throw new IllegalArgumentException("开始时间和结束时间必须同时为空或不为空");
// }
//
// return null;
// // 使用 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);
//
// // 根据条件选择查询方法
// List<SumCoin> result = null;
//
// // 如果天数差大于100天
// if (daysBetween > 100) {
// if (1 == updateType) {
// result = statisticsMapper.getMediuConsumeCoin(searchStartTime, searchEndTime);
// } else if (0 == updateType) {
// result = statisticsMapper.getMediuPayCoin(searchStartTime, searchEndTime);
// }
// }
// // 如果天数差为0即同一天
// else if (daysBetween == 0) {
// if (1 == updateType) {
// result = statisticsMapper.getMediuConsumeCoinday(searchEndTime, updateType);
// } else if (0 == updateType) {
// result = statisticsMapper.getMediuPayCoinday(searchEndTime, updateType);
// }
// }
// // 如果天数差小于100天但不为0即跨月或较短时间段
// else {
// if (1 == updateType) {
// result = statisticsMapper.getMediuCounsumeCoinyue(searchStartTime, searchEndTime);
// } else if (0 == updateType) {
// result = statisticsMapper.getMediuPayCoinyue(searchStartTime, searchEndTime);
// }
// }
//
// // 如果查询结果为空或没有数据返回默认的SumCoin对象
// if (result == null || result.isEmpty()) {
// result = Collections.singletonList(createDefaultSumCoin());
// }
//
// return result;
// }
//
// // 创建默认的 SumCoin 对象
// private SumCoin createDefaultSumCoin() {
// SumCoin defaultSumCoin = new SumCoin();
//
// defaultSumCoin.setRechargeSumCoin(BigDecimal.ZERO);
// defaultSumCoin.setFreeSumCoin(BigDecimal.ZERO);
// defaultSumCoin.setTaskSumCoin(BigDecimal.ZERO);
// // 获取当前日期并设置为字符串格式
// Date currentDate = new Date();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d"); // "yyyy-M-d" 格式
// String formattedDate = sdf.format(currentDate); // 格式化日期为字符串
//
// // 设置当前日期
// defaultSumCoin.setDay(formattedDate);
// return defaultSumCoin;
// }
//}
@Cacheable(key = "#root.method.name + #sumcoin.hashCode()")
public List<SumCoin> getCoinTime(SumCoin sumcoin) {
System.out.println(sumcoin + "-------sumcoin----");
@ -244,12 +341,12 @@ public class StatisticsServiceImpl implements StatisticsService {
Date searchEndTime = sumcoin.getSearchEndTime();
Integer updateType = sumcoin.getUpdateType();
// 如果开始时间和结束时间都为空则直接返回默认统计结果
// 如果开始时间和结束时间都为空则直接返回默认统计结果即全查
if (searchStartTime == null && searchEndTime == null) {
if (1 == updateType) {
return statisticsMapper.getMediuConsumeCoin(searchStartTime,searchEndTime);
return statisticsMapper.getMediuConsumeCoin(searchStartTime, searchEndTime);//前端没有选定时间SQL会查询所有数据
} else if (0 == updateType) {
return statisticsMapper.getMediuPayCoin(searchStartTime,searchEndTime);
return statisticsMapper.getMediuPayCoin(null, null);
}
return null; // 或者抛出异常取决于业务需求
}
@ -279,22 +376,83 @@ public class StatisticsServiceImpl implements StatisticsService {
long daysBetween = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS);
// 根据条件选择查询方法
List<SumCoin> result = new ArrayList<>();
List<SumCoin> queryResult = null;
// 如果天数差大于100天
if (daysBetween > 100) {
if (1 == updateType) {
return statisticsMapper.getMediuConsumeCoin(searchStartTime, searchEndTime);
} else if (0 == updateType) {
return statisticsMapper.getMediuPayCoin(searchStartTime, searchEndTime);
}
} else {
}
// 如果天数差为0即同一天
else if (daysBetween == 0) {
if (1 == updateType) {
return statisticsMapper.getMediuCounsumeCoinyue(searchStartTime, searchEndTime);
queryResult = statisticsMapper.getMediuConsumeCoinday(searchEndTime, updateType);
} else if (0 == updateType) {
return statisticsMapper.getMediuPayCoinyue(searchStartTime, searchEndTime);
queryResult = statisticsMapper.getMediuPayCoinday(searchEndTime, updateType);
}
}
// 如果天数差小于100天但不为0即跨月或较短时间段
else {
if (1 == updateType) {
queryResult = statisticsMapper.getMediuCounsumeCoinyue(searchStartTime, searchEndTime);
} else if (0 == updateType) {
queryResult = statisticsMapper.getMediuPayCoinyue(searchStartTime, searchEndTime);
}
}
// 如果没有匹配的updateType返回null或抛出异常取决于业务需求
return null;
// 创建一个日期范围列表
List<Date> allDates = getDateRange(searchStartTime, searchEndTime);
// 将查询结果按日期映射方便查找
Map<String, SumCoin> resultMap = new HashMap<>();
if (queryResult != null) {
for (SumCoin coin : queryResult) {
resultMap.put(coin.getDay(), coin);
}
}
// 填充没有数据的日期生成完整的结果
for (Date date : allDates) {
String dateString = new SimpleDateFormat("yyyy-MM-dd").format(date);
if (!resultMap.containsKey(dateString)) {
result.add(createDefaultSumCoin(dateString));
} else {
result.add(resultMap.get(dateString));
}
}
return result;
}
// 获取日期范围的所有日期
private List<Date> getDateRange(Date startDate, Date endDate) {
List<Date> dates = new ArrayList<>();
Calendar startCal = Calendar.getInstance();
startCal.setTime(startDate);
Calendar endCal = Calendar.getInstance();
endCal.setTime(endDate);
while (!startCal.after(endCal)) {
dates.add(startCal.getTime());
startCal.add(Calendar.DAY_OF_YEAR, 1);
}
return dates;
}
// 创建默认的 SumCoin 对象并设置日期
private SumCoin createDefaultSumCoin(String date) {
SumCoin defaultSumCoin = new SumCoin();
defaultSumCoin.setRechargeSumCoin(BigDecimal.ZERO);
defaultSumCoin.setFreeSumCoin(BigDecimal.ZERO);
defaultSumCoin.setTaskSumCoin(BigDecimal.ZERO);
defaultSumCoin.setDay(date);
return defaultSumCoin;
}
}
Loading…
Cancel
Save