From 8c7605fe82d9e7dbc057df4227e4eecdaf4efe06 Mon Sep 17 00:00:00 2001 From: jianlin Date: Thu, 3 Jul 2025 12:59:39 +0800 Subject: [PATCH] 7-3aop --- pom.xml | 4 +++ .../com/example/demo/Util/ExecutionTimeAspect.java | 29 ++++++++++++++++++++++ .../com/example/demo/domain/vo/WorkbenchCard.java | 1 + .../demo/domain/vo/WorkbenchMarketGraph.java | 29 ++++++++++++++++++++++ .../demo/serviceImpl/WorkbenchServiceImpl.java | 23 +++++++++-------- 5 files changed, 75 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/example/demo/Util/ExecutionTimeAspect.java create mode 100644 src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java diff --git a/pom.xml b/pom.xml index 69366c5..8d20ec8 100644 --- a/pom.xml +++ b/pom.xml @@ -57,6 +57,10 @@ org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot spring-boot-starter-validation diff --git a/src/main/java/com/example/demo/Util/ExecutionTimeAspect.java b/src/main/java/com/example/demo/Util/ExecutionTimeAspect.java new file mode 100644 index 0000000..201ee1b --- /dev/null +++ b/src/main/java/com/example/demo/Util/ExecutionTimeAspect.java @@ -0,0 +1,29 @@ +package com.example.demo.Util; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; + +/** + * @program: gold-java + * @ClassName ExecutionTimeAspect + * @description: + * @author: Ethan + * @create: 2025−07-03 10:50 + * @Version 1.0 + **/ + +@Aspect +@Component +public class ExecutionTimeAspect { + + @Around("execution(* com.example.demo.serviceImpl.WorkbenchServiceImpl.*(..))") + public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + long start = System.currentTimeMillis(); + Object proceed = joinPoint.proceed(); + long executionTime = System.currentTimeMillis() - start; + System.out.println("执行时间 " + joinPoint.getSignature() + ": " + executionTime + " ms"); + return proceed; + } +} diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchCard.java b/src/main/java/com/example/demo/domain/vo/WorkbenchCard.java index 8453b45..0b03299 100644 --- a/src/main/java/com/example/demo/domain/vo/WorkbenchCard.java +++ b/src/main/java/com/example/demo/domain/vo/WorkbenchCard.java @@ -24,6 +24,7 @@ import java.util.List; public class WorkbenchCard implements Serializable { private String token; //用户token private List marketCards; // 地区卡片数据 + private List marketGraphs; // 地区图表数据 private List markets; // 地区列表 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private Date startDate; // 起始时间 diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java new file mode 100644 index 0000000..f2a15b4 --- /dev/null +++ b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java @@ -0,0 +1,29 @@ +package com.example.demo.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @program: gold-java + * @ClassName WorkbenchMarketGraph + * @description: + * @author: Ethan + * @create: 2025−07-03 10:16 + * @Version 1.0 + **/ + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class WorkbenchMarketGraph implements Serializable { + private String market;//地区 + //图表 + private Integer SumRechargePermanent; //合计充值永久金币 + private Integer SumRechargeFree; //合计充值免费金币 + private Integer SumConsumePermanent; //合计消费永久金币 + private Integer SumConsumeFree; //合计消费免费金币 + private Integer SumConsumeTask; //合计消费任务金币 +} diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java index 35c8833..e0d846d 100644 --- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java @@ -3,6 +3,7 @@ package com.example.demo.serviceImpl; import com.example.demo.domain.entity.Statistics; import com.example.demo.domain.vo.WorkbenchCard; import com.example.demo.domain.vo.WorkbenchMarketCard; +import com.example.demo.domain.vo.WorkbenchMarketGraph; import com.example.demo.mapper.StatisticsMapper; import com.example.demo.mapper.WorkBenchMapper; import com.example.demo.service.GeneralService; @@ -73,7 +74,7 @@ public class WorkbenchServiceImpl implements WorkbenchService { // 收集并行流结果为列表 .collect(Collectors.toList()); - return new WorkbenchCard(token, marketCards, markets, date, date); + return new WorkbenchCard(token, marketCards,new ArrayList<>(), markets, date, date); /* List marketCards = new ArrayList<>(); // 遍历每个 marketCard 并填充数据 for (String market : markets) { @@ -188,19 +189,19 @@ public class WorkbenchServiceImpl implements WorkbenchService { @Override public WorkbenchCard getGraph(String token, Date startDate, Date endDate, List markets) { - List marketCards = new ArrayList<>(); + List marketGraphs = new ArrayList<>(); for (String market : markets) { - WorkbenchMarketCard cards = new WorkbenchMarketCard(); - cards.setMarket(market); - cards.setSumRechargePermanent(calculateSum(market, "money",startDate,endDate)); - cards.setSumRechargeFree(calculateSum(market, "rFree",startDate,endDate)); - cards.setSumConsumePermanent(calculateSum(market, "cPermanent",startDate,endDate)); - cards.setSumConsumeFree(calculateSum(market, "cFree",startDate,endDate)); - cards.setSumConsumeTask(calculateSum(market, "cTask",startDate,endDate)); - marketCards.add( cards); + WorkbenchMarketGraph graphs = new WorkbenchMarketGraph(); + graphs.setMarket(market); + graphs.setSumRechargePermanent(calculateSum(market, "money",startDate,endDate)); + graphs.setSumRechargeFree(calculateSum(market, "rFree",startDate,endDate)); + graphs.setSumConsumePermanent(calculateSum(market, "cPermanent",startDate,endDate)); + graphs.setSumConsumeFree(calculateSum(market, "cFree",startDate,endDate)); + graphs.setSumConsumeTask(calculateSum(market, "cTask",startDate,endDate)); + marketGraphs.add( graphs); } - return new WorkbenchCard(token, marketCards,markets,startDate,endDate); + return new WorkbenchCard(token, new ArrayList<>(),marketGraphs,markets,startDate,endDate); } /*