Browse Source

后端整合模块

detached
huangqizhen 5 months ago
parent
commit
d7abfc016b
  1. 3
      src/main/java/com/example/demo/domain/vo/ConsumeDetail.java
  2. 4
      src/main/java/com/example/demo/domain/vo/Meium.java
  3. 16
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  4. 1
      src/main/java/com/example/demo/mapper/RefundMapper.java
  5. 17
      src/main/java/com/example/demo/mapper/StatisticsMapper.java
  6. 3
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  7. 112
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java

3
src/main/java/com/example/demo/domain/vo/ConsumeDetail.java

@ -16,6 +16,7 @@ public class ConsumeDetail {
private String name;
private String jwcode;
private String area;
private String uarea;
private Integer activityId;
private String rechargeWay;
private String goods;
@ -32,6 +33,8 @@ public class ConsumeDetail {
private Integer status;
private String updateType;
private Integer detailFlag;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date createTime;
private Integer adminId;
private String reson;

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

@ -36,10 +36,12 @@ public class Meium implements Serializable {
private Integer updateType;
private String type;
private String token; // 新增的token字段
private String jwcode;
// 如果有更多的未知字段可以使用@JsonAnySetter来捕获它们
private Map<String, Object> additionalProperties = new HashMap<>();
private String day;
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);

16
src/main/java/com/example/demo/mapper/ConsumeMapper.java

@ -41,20 +41,20 @@ public interface ConsumeMapper {
//模糊分页查询查询消费明细
@Select({
"<script>",
"select detail_y.*,admin.name as adminName ,admin.area as area ,user.name as userName,product.name as productName from detail ",
"inner join `admin` on detail.admin_id=admin.admin_id ",
"inner join `user` on detail.jwcode= user.jwcode ",
"inner join product on detail.product_id= product.product_id ",
"select detail_y.*,admin.name as adminName,user.area as uarea,user.name as name,product.name as productName from detail_y ",
"left join `admin` on detail_y.admin_id=admin.admin_id ",
"left join `user` on detail_y.jwcode= user.jwcode ",
"left join product on detail_y.product_id= product.product_id ",
"<where>",
// "`detail_flag`=1 AND update_type = '1'",
"update_type=1",
"<if test='jwcode!=null'>and detail.jwcode =#{jwcode}</if>",
"<if test='productName!=null'>and product.name like concat('%',#{productName},'%')</if>",
"<if test='consumePlatform!=null'>and detail.consume_platform like concat('%',#{consumePlatform},'%')</if>",
"<if test='consumeType!=null'>and detail.consume_type like concat('%',#{consumeType},'%')</if>",
"<if test='productName!=null'>and product.name = #{productName}</if>",
"<if test='consumePlatform!=null'>and detail.consume_platform=#{consumePlatform}</if>",
"<if test='consumeType!=null'>and detail.consume_type= #{consumeType}</if>",
"<if test='startDate != null and endDate != null'>AND detail.create_time BETWEEN #{startDate} AND #{endDate}</if>",
"</where>",
// "ORDER BY detail.create_time DESC",
"ORDER BY detail_y.create_time DESC",
"</script>"
})
List<ConsumeDetail> select(ConsumeDetail consumeDetail);

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

@ -75,6 +75,7 @@ public interface RefundMapper {
"LEFT JOIN user u ON d.jwcode = u.jwcode",
"LEFT JOIN audit au ON d.detail_id = au.refund_id",
"WHERE d.detail_flag = 1 and update_type = 2 ",
"<if test='auditStatus!=null'>and auditStatus=#{auditStatus}</if>",
"<if test='jwcode != null'>AND d.jwcode = #{jwcode}</if>",
"<if test='refundType != null'>AND d.refund_type LIKE CONCAT('%', #{refundType}, '%')</if>",
"<if test='refundGoods != null'>AND d.refund_goods LIKE CONCAT('%', #{refundGoods}, '%')</if>",

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

@ -322,34 +322,34 @@ public interface StatisticsMapper {
SumCoin getMess(Integer jwcode);
@Select({"SELECT ad.area,ad.store," ,
@Select({"SELECT u.area " ,
" SUM(d.recharge_coin) AS totalRecharge," ,
" SUM(d.free_coin) AS totalFree," ,
" SUM(d.task_coin) AS totalTask," ,
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
"FROM detail_y d" ,
"INNER JOIN activity a ON d.activity_id = a.activity_id" ,
"INNER JOIN admin ad ON a.admin_id = ad.admin_id" ,
"INNER JOIN user u ON a.user_id = u.user_id" ,
"where d.update_type='0'",
"GROUP BY ad.store" ,
"ORDER BY ad.store ASC "
"GROUP BY u.area" ,
"ORDER BY u.area ASC "
})
List<SumCoin> getMediumAreaPay();
@Select({"SELECT ad.area,ad.store," ,
@Select({"SELECT u.area " ,
" SUM(d.recharge_coin) AS totalRecharge," ,
" SUM(d.free_coin) AS totalFree," ,
" SUM(d.task_coin) AS totalTask," ,
" (SUM(d.recharge_coin) + SUM(d.free_coin) + SUM(d.task_coin)) AS todayTotalCoin" ,
"FROM detail_y d" ,
"INNER JOIN admin ad ON ad.admin_id = d.admin_id",
"INNER JOIN user u ON u.jwcode = d.jwcode",
"WHERE d.update_type = '1'",
"GROUP BY ad.store",
"ORDER BY ad.store ASC"
"GROUP BY u.area",
"ORDER BY u.area ASC"
})
List<SumCoin> getMediumAreaConsume();
@ -528,6 +528,7 @@ public interface StatisticsMapper {
"</script>"
})
List<Meium> getPay(@Param("searchStartTime") Date searchStartTime, @Param("searchEndTime") Date searchEndTime);
}

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

@ -113,8 +113,7 @@ public class ConsumeServiceImpl implements ConsumeService {
return consumeMapper.select(consumeDetail);
}
@Cacheable(value = "myCache", key = "#root.methodName + '_' + (#detailYVo != null ? #detailYVo.hashCode() : 'null')")
@Cacheable(key = "#root.method.name + ':' + #pageNum + '-' + #pageSize + '-' + T(java.util.Objects).hashCode(#consumeDetail)")
@Override
public PageInfo<ConsumeDetail> searchForPage(Integer pageNum, Integer pageSize, ConsumeDetail consumeDetail) {
PageHelper.startPage(pageNum, pageSize);

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

@ -142,39 +142,119 @@ public class StatisticsServiceImpl implements StatisticsService {
return statisticsMapper.getMediumAreaConsume();
}
@Cacheable(key = "#root.method.name+ T(java.util.Objects).hashCode(#meium)")
// @Override
// public List<Meium> getMee(Meium meium) {
//
//
// if (0 == (meium.getUpdateType())) {
// if ("免费金币".equals(meium.getType())) {
// return statisticsMapper.getBuyAndFree(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else if ("充值金币".equals(meium.getType())) {
// return statisticsMapper.getBuyAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else if ("任务金币".equals(meium.getType())) {
// return statisticsMapper.getBuyAndTask(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else {
// return statisticsMapper.getBuy(meium.getSearchStartTime(), meium.getSearchEndTime());
// }
//
// } else if (1 == (meium.getUpdateType())) {
// if ("免费金币".equals(meium.getType())) {
// return statisticsMapper.getPayAndFree(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else if ("充值金币".equals(meium.getType())) {
// return statisticsMapper.getPayAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else if ("任务金币".equals(meium.getType())) {
// return statisticsMapper.getPayAndTask(meium.getSearchStartTime(), meium.getSearchEndTime());
// } else {
// return statisticsMapper.getPay(meium.getSearchStartTime(), meium.getSearchEndTime());
// }
//
// } else
// return null;
//
//
// }
@Override
public List<Meium> getMee(Meium meium) {
List<Meium> result = new ArrayList<>();
// 预定义所有十二个地区
List<String> allRegions = Arrays.asList("新加坡", "马来西亚", "香港", "泰国", "加拿大", "越南HCM", "公司", "市场部", "研发部", "深圳运营", "韩国");
Date searchStartTime = meium.getSearchStartTime();
Date searchEndTime = meium.getSearchEndTime();
Integer updateType = meium.getUpdateType();
if (0 == (meium.getUpdateType())) {
// 如果开始时间和结束时间都为空则直接返回默认统计结果即全查
if (searchStartTime == null && searchEndTime == null) {
if (0 == updateType) {
return statisticsMapper.getBuy(searchStartTime, searchEndTime);
} else if (1 == updateType) {
return statisticsMapper.getPay(searchStartTime, searchEndTime);
}
}
// 获取日期范围内的所有日期
// 根据 updateType 和类型选择查询方法
List<Meium> queryResult = null;
if (0 == updateType) {
if ("免费金币".equals(meium.getType())) {
return statisticsMapper.getBuyAndFree(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getBuyAndFree(searchStartTime, searchEndTime);
} else if ("充值金币".equals(meium.getType())) {
return statisticsMapper.getBuyAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getBuyAndRecharge(searchStartTime, searchEndTime);
} else if ("任务金币".equals(meium.getType())) {
return statisticsMapper.getBuyAndTask(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getBuyAndTask(searchStartTime, searchEndTime);
} else {
return statisticsMapper.getBuy(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getBuy(searchStartTime, searchEndTime);
}
} else if (1 == (meium.getUpdateType())) {
} else if (1 == updateType) {
if ("免费金币".equals(meium.getType())) {
return statisticsMapper.getPayAndFree(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getPayAndFree(searchStartTime, searchEndTime);
} else if ("充值金币".equals(meium.getType())) {
return statisticsMapper.getPayAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getPayAndRecharge(searchStartTime, searchEndTime);
} else if ("任务金币".equals(meium.getType())) {
return statisticsMapper.getPayAndTask(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getPayAndTask(searchStartTime, searchEndTime);
} else {
return statisticsMapper.getPay(meium.getSearchStartTime(), meium.getSearchEndTime());
queryResult = statisticsMapper.getPay(searchStartTime, searchEndTime);
}
}
} else
return null;
// 将查询结果按区域映射方便查找
Map<String, Meium> resultMap = new HashMap<>();
if (queryResult != null) {
for (Meium meiumData : queryResult) {
resultMap.put(meiumData.getArea(), meiumData);
}
}
// 遍历所有地区如果没有数据设置为默认值
for (String region : allRegions) {
Meium meiumData = resultMap.get(region);
if (meiumData == null) {
Meium defaultMeium = createDefaultMeium(region);
result.add(defaultMeium); // 如果没有数据创建默认值
} else {
result.add(meiumData); // 否则加入已有的查询结果
}
}
return result;
}
// 创建默认的 Meium 对象并设置地区和金币数为0
private Meium createDefaultMeium(String region) {
Meium defaultMeium = new Meium();
defaultMeium.setArea(region); // 设置区域
defaultMeium.setRechargeSumCoin(BigDecimal.ZERO); // 设置充值金币为0
defaultMeium.setFreeSumCoin(BigDecimal.ZERO); // 设置免费金币为0
defaultMeium.setTaskSumCoin(BigDecimal.ZERO); // 设置任务金币为0
defaultMeium.setTotalRechargeSum(BigDecimal.ZERO); // 设置总充值金币为0
return defaultMeium;
}
@Override
public List<SumCoin> getMediu() {
return List.of();
@ -404,7 +484,7 @@ public class StatisticsServiceImpl implements StatisticsService {
}
}
// 创建一个日期范围列表
// 创建一个日期范围列表,返回给定时间范围内的所有日期
List<Date> allDates = getDateRange(searchStartTime, searchEndTime);
// 将查询结果按日期映射方便查找
@ -415,7 +495,7 @@ public class StatisticsServiceImpl implements StatisticsService {
}
}
// 填充没有数据的日期生成完整的结果
// 填充没有数据的日期生成完整的结果.对于每个日期检查是否有查询结果如果没有数据调用 createDefaultSumCoin 方法创建一个默认的 SumCoin 对象确保所有日期都有数据
for (Date date : allDates) {
String dateString = new SimpleDateFormat("yyyy-MM-dd").format(date);
if (!resultMap.containsKey(dateString)) {

Loading…
Cancel
Save