From 24f5b511632c2fbce11b2d035f428191b26c770e Mon Sep 17 00:00:00 2001 From: lv123 Date: Sat, 14 Dec 2024 13:56:06 +0800 Subject: [PATCH] =?UTF-8?q?12.14=20=E6=96=B9=E4=BE=BF=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=8F=B0=E5=B7=A5=E4=BD=9C=EF=BC=8C=E6=B6=88=E8=B4=B9-?= =?UTF-8?q?=E9=87=91=E5=B8=81=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/config/JacksonConfig.java | 28 ++++++++++++++ .../demo/config/LocalDateTimeDeserializer.java | 28 ++++++++++++++ .../demo/config/LocalDateTimeSerializer.java | 27 +++++++++++++ .../demo/controller/StatisticsController.java | 12 ++++++ .../com/example/demo/domain/entity/Activity.java | 33 +++++++++++++--- .../java/com/example/demo/domain/vo/Meium.java | 22 +++++++++-- src/main/java/com/example/demo/domain/vo/Page.java | 6 ++- .../com/example/demo/mapper/RechargeMapper.java | 1 + .../com/example/demo/mapper/StatisticsMapper.java | 33 ++++++++-------- .../java/com/example/demo/mapper/UserMapper.java | 14 +++++++ .../demo/serviceImpl/ActivityServiceImpl.java | 11 +++--- .../demo/serviceImpl/ConsumeServiceImpl.java | 11 ++++++ .../demo/serviceImpl/StatisticsServiceImpl.java | 44 +++++++++++++++++++++- .../com/example/demo/sevice/StatisticsService.java | 7 ++++ 14 files changed, 245 insertions(+), 32 deletions(-) create mode 100644 src/main/java/com/example/demo/config/JacksonConfig.java create mode 100644 src/main/java/com/example/demo/config/LocalDateTimeDeserializer.java create mode 100644 src/main/java/com/example/demo/config/LocalDateTimeSerializer.java diff --git a/src/main/java/com/example/demo/config/JacksonConfig.java b/src/main/java/com/example/demo/config/JacksonConfig.java new file mode 100644 index 0000000..7fc9712 --- /dev/null +++ b/src/main/java/com/example/demo/config/JacksonConfig.java @@ -0,0 +1,28 @@ +package com.example.demo.config; + + +//import com.example.demo.config.LocalDateTimeSerializer; +//import com.example.demo.config.LocalDateTimeDeserializer; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.time.LocalDateTime; + + +@Configuration +public class JacksonConfig { + + @Bean + public ObjectMapper objectMapper() { + SimpleModule module = new SimpleModule(); + module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer()); + module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer()); + + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(module); + + return mapper; + } +} diff --git a/src/main/java/com/example/demo/config/LocalDateTimeDeserializer.java b/src/main/java/com/example/demo/config/LocalDateTimeDeserializer.java new file mode 100644 index 0000000..956aba1 --- /dev/null +++ b/src/main/java/com/example/demo/config/LocalDateTimeDeserializer.java @@ -0,0 +1,28 @@ +package com.example.demo.config; + + + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeDeserializer extends StdDeserializer { + + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public LocalDateTimeDeserializer() { + this(null); + } + + public LocalDateTimeDeserializer(Class vc) { + super(vc); + } + + @Override + public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + return LocalDateTime.parse(p.getValueAsString(), formatter); + } +} diff --git a/src/main/java/com/example/demo/config/LocalDateTimeSerializer.java b/src/main/java/com/example/demo/config/LocalDateTimeSerializer.java new file mode 100644 index 0000000..2f7922e --- /dev/null +++ b/src/main/java/com/example/demo/config/LocalDateTimeSerializer.java @@ -0,0 +1,27 @@ +package com.example.demo.config; + + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeSerializer extends StdSerializer { + + private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + public LocalDateTimeSerializer() { + this(null); + } + + public LocalDateTimeSerializer(Class t) { + super(t); + } + + @Override + public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider provider) throws IOException { + gen.writeString(value.format(formatter)); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/controller/StatisticsController.java b/src/main/java/com/example/demo/controller/StatisticsController.java index a197f91..7fb3968 100644 --- a/src/main/java/com/example/demo/controller/StatisticsController.java +++ b/src/main/java/com/example/demo/controller/StatisticsController.java @@ -1,6 +1,7 @@ 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; @@ -8,6 +9,7 @@ import com.example.demo.serviceImpl.UserServiceImpl; import com.example.demo.sevice.StatisticsService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -84,4 +86,14 @@ public class StatisticsController { } + //中间右侧:支付消费--部门--金币类型--时间 + @PostMapping("/getMee") + public Result getMee(@RequestBody Meium meium){ + return Result.success(statisticsService.getMee(meium)); + } + @PostMapping("/getMediu") + public Result getMediu(){ + return Result.success(statisticsService.getMediu()); + } + } diff --git a/src/main/java/com/example/demo/domain/entity/Activity.java b/src/main/java/com/example/demo/domain/entity/Activity.java index f487928..d2fdb23 100644 --- a/src/main/java/com/example/demo/domain/entity/Activity.java +++ b/src/main/java/com/example/demo/domain/entity/Activity.java @@ -2,7 +2,11 @@ package com.example.demo.domain.entity; +import com.example.demo.config.LocalDateTimeDeserializer; +import com.example.demo.config.LocalDateTimeSerializer; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -17,15 +21,34 @@ public class Activity implements Serializable { private Integer activityId; private Integer adminId; private String dept; - private Date startTime; - private Date endTime; + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime startTime; + + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime endTime; + private String activityName; private BigDecimal rechargeRatio; - private Date createTime; + + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime createTime; + private Integer activityFlag; @DateTimeFormat(pattern = "yyyy-MM-dd") private String name; private Integer status; - private Date startDate; - private Date endDate; + + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime startDate; + + @JsonSerialize(using = LocalDateTimeSerializer.class) + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + private LocalDateTime endDate; + + + private String token; // 新增的token字段 } diff --git a/src/main/java/com/example/demo/domain/vo/Meium.java b/src/main/java/com/example/demo/domain/vo/Meium.java index 7dc7f5a..a2c21cb 100644 --- a/src/main/java/com/example/demo/domain/vo/Meium.java +++ b/src/main/java/com/example/demo/domain/vo/Meium.java @@ -1,24 +1,40 @@ package com.example.demo.domain.vo; +import com.fasterxml.jackson.annotation.JsonAnySetter; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.Date; +import java.util.HashMap; +import java.util.Map; @Data @NoArgsConstructor -public class Meium { +public class Meium implements Serializable { //中间-11个月 每月充值金币 private BigDecimal rechargeSumCoin; //中间-11个月 每月免费金币 private BigDecimal freeSumCoin; //中间-11个月 每月任务金币 private BigDecimal taskSumCoin; + private String area; + private String store; private BigDecimal totalRechargeSum; - private Date searchStartTime; - private Date searchEndTime; + private LocalDateTime searchStartTime; + private LocalDateTime searchEndTime; private String updateType; private String type; + private String token; // 新增的token字段 + + // 如果有更多的未知字段,可以使用@JsonAnySetter来捕获它们 + private Map additionalProperties = new HashMap<>(); + + @JsonAnySetter + public void setAdditionalProperty(String name, Object value) { + this.additionalProperties.put(name, value); + } } diff --git a/src/main/java/com/example/demo/domain/vo/Page.java b/src/main/java/com/example/demo/domain/vo/Page.java index a539b04..decb9a9 100644 --- a/src/main/java/com/example/demo/domain/vo/Page.java +++ b/src/main/java/com/example/demo/domain/vo/Page.java @@ -2,13 +2,17 @@ package com.example.demo.domain.vo; import com.example.demo.domain.entity.*; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; import lombok.NoArgsConstructor; +import java.io.Serializable; + @Data @NoArgsConstructor -public class Page { +@JsonIgnoreProperties(ignoreUnknown = true) +public class Page implements Serializable { private Integer pageNum; private Integer pageSize; diff --git a/src/main/java/com/example/demo/mapper/RechargeMapper.java b/src/main/java/com/example/demo/mapper/RechargeMapper.java index 7849ddd..cfc2a6c 100644 --- a/src/main/java/com/example/demo/mapper/RechargeMapper.java +++ b/src/main/java/com/example/demo/mapper/RechargeMapper.java @@ -43,6 +43,7 @@ public interface RechargeMapper { "and recharge.admin_id=#{adminId}", "AND recharge.create_time BETWEEN #{startDate} AND #{endDate}", "and pay_way like concat('%',#{payWay},'%')", + "and recharge_way like concat('%',#{rechargeWay},'%')", "and area=#{area}", "and audit.status=#{status}", "", diff --git a/src/main/java/com/example/demo/mapper/StatisticsMapper.java b/src/main/java/com/example/demo/mapper/StatisticsMapper.java index 3647890..03f0148 100644 --- a/src/main/java/com/example/demo/mapper/StatisticsMapper.java +++ b/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.LocalDateTime; import java.util.Date; import java.util.List; @@ -324,13 +325,13 @@ public interface StatisticsMapper { "FROM detail d", "right JOIN admin ad ON ad.admin_id = d.admin_id", "", - "and detail.create_time between #{searchStartTime} and #{searchEndTime}", + "and d.create_time between #{searchStartTime} and #{searchEndTime}", "", "GROUP BY ad.area, ad.store", "order by freeSumCoin desc", "" }) - List getBuyAndFree( Meium meium); + List getBuyAndFree(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getBuyAndRecharge( Meium meium); + List getBuyAndRecharge(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getBuyAndTask( Meium meium); + List getBuyAndTask(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getBuy( Meium meium); + List getBuy(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getPayAndFree( Meium meium); + List getPayAndFree(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getPayAndRecharge( Meium meium); + List getPayAndRecharge(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getPayAndTask( Meium meium); + List getPayAndTask(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); @Select({ "" }) - List getPay( Meium meium); + List getPay(@Param("searchStartTime") LocalDateTime searchStartTime, @Param("searchEndTime") LocalDateTime searchEndTime); } diff --git a/src/main/java/com/example/demo/mapper/UserMapper.java b/src/main/java/com/example/demo/mapper/UserMapper.java index 66fc67a..b5a78be 100644 --- a/src/main/java/com/example/demo/mapper/UserMapper.java +++ b/src/main/java/com/example/demo/mapper/UserMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; +import java.math.BigDecimal; import java.util.List; @Mapper @@ -80,4 +81,17 @@ public interface UserMapper { "", }) int update(User user); + +// //去掉免费金币,先去6个月,再去12月 +// @Update({ +// "", +// }) +// int updatecoin(); } diff --git a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java index d242ad1..e950746 100644 --- a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java @@ -17,6 +17,7 @@ import com.github.pagehelper.PageInfo; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -81,15 +82,15 @@ public class ActivityServiceImpl implements ActivityService { public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { PageHelper.startPage(pageNum, pageSize); List list = activityMapper.select(activity); - Date nowDate = new Date(); + LocalDateTime nowDate = LocalDateTime.now(); for (Activity activity1 : list) { - Date startTime = activity1.getStartTime(); - Date endTime = activity1.getEndTime(); + LocalDateTime startTime = activity1.getStartTime(); + LocalDateTime endTime = activity1.getEndTime(); - 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 diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 349e6df..1537fa7 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -80,6 +80,17 @@ public class ConsumeServiceImpl implements ConsumeService { detail.setOrderCode(uuid); //添加表单数据 result =consumeMapper.insert(detail); + + + //消费完成后需要将用户的三币从user表中去掉 + //消费记录添加完成 +// if(result==1){ +// userMapper.updateFreecoin(detail.getFreeCoin()); +// userMapper.updateRechargeCoin(detail.getRechargeCoin()); +// userMapper.updateTaskCoin(detail.getTaskCoin()); +// } + + return result; } @Cacheable(key="#root.method.name") diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index bab255f..81de616 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -2,12 +2,14 @@ package com.example.demo.serviceImpl; import com.example.demo.Util.CheckIfNullUtil; +import com.example.demo.domain.vo.Meium; import com.example.demo.domain.vo.Statistics; import com.example.demo.domain.vo.Statisticss; import com.example.demo.domain.vo.SumCoin; import com.example.demo.mapper.StatisticsMapper; import com.example.demo.sevice.StatisticsService; 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; @@ -86,8 +88,8 @@ public class StatisticsServiceImpl implements StatisticsService { return a; } -//----------------------------------------------------------------------------------------------------// -@Cacheable(key="#root.method.name") + //----------------------------------------------------------------------------------------------------// + @Cacheable(key="#root.method.name") public SumCoin getSumCoin(){ return statisticsMapper.getSumCoin(); } @@ -126,4 +128,42 @@ public class StatisticsServiceImpl implements StatisticsService { } + +@Override + public List getMee( Meium meium) { + + + if("充值".equals(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("消费".equals(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 getMediu() { + return statisticsMapper.getMediu(); + } + + } diff --git a/src/main/java/com/example/demo/sevice/StatisticsService.java b/src/main/java/com/example/demo/sevice/StatisticsService.java index 29132cd..9333d92 100644 --- a/src/main/java/com/example/demo/sevice/StatisticsService.java +++ b/src/main/java/com/example/demo/sevice/StatisticsService.java @@ -1,9 +1,11 @@ package com.example.demo.sevice; +import com.example.demo.domain.vo.Meium; import com.example.demo.domain.vo.Statistics; import com.example.demo.domain.vo.Statisticss; import com.example.demo.domain.vo.SumCoin; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import java.util.List; @@ -22,4 +24,9 @@ public interface StatisticsService { SumCoin getMess(Integer jwcode); List getMediumAreaPay(); List getMediumAreaConsume(); + + + + List getMee(Meium meium); + List getMediu(); }