diff --git a/pom.xml b/pom.xml index 1b4bc17..af6a606 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,11 @@ 21 + + + org.springframework.boot + spring-boot-starter-thymeleaf + @@ -44,7 +49,16 @@ org.springframework.boot spring-boot-starter-data-redis - + + org.springframework.boot + spring-boot-starter-cache + + + org.apache.commons + commons-pool2 + + + @@ -91,6 +105,11 @@ 3.0.4 test + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.17.3 + diff --git a/src/main/java/com/example/demo/DemoApplication.java b/src/main/java/com/example/demo/DemoApplication.java index 8d3e628..03172a5 100644 --- a/src/main/java/com/example/demo/DemoApplication.java +++ b/src/main/java/com/example/demo/DemoApplication.java @@ -2,9 +2,10 @@ package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; @SpringBootApplication - +@EnableCaching public class DemoApplication { public static void main(String[] args) { diff --git a/src/main/java/com/example/demo/Util/JWTUtil.java b/src/main/java/com/example/demo/Util/JWTUtil.java index 1dfea3e..7fb5671 100644 --- a/src/main/java/com/example/demo/Util/JWTUtil.java +++ b/src/main/java/com/example/demo/Util/JWTUtil.java @@ -23,7 +23,7 @@ import java.util.UUID; public class JWTUtil { //有效期为 - public static final Long JWT_TTL = 60 * 60 *1000L;// 60 * 60 *1000 一个小时 + public static final Long JWT_TTL = 1000*60 * 60 *1000L;// 60 * 60 *1000 一个小时 //设置 密钥 public static final String JWT_KEY = "bobzyh"; diff --git a/src/main/java/com/example/demo/Util/TokenPayload.java b/src/main/java/com/example/demo/Util/TokenPayload.java index 3febe81..cb1559d 100644 --- a/src/main/java/com/example/demo/Util/TokenPayload.java +++ b/src/main/java/com/example/demo/Util/TokenPayload.java @@ -11,6 +11,7 @@ import lombok.Setter; @Data @NoArgsConstructor +@JsonIgnoreProperties(ignoreUnknown = true) public class TokenPayload { @JsonProperty("token") private String token; diff --git a/src/main/java/com/example/demo/config/RedisConfig.java b/src/main/java/com/example/demo/config/RedisConfig.java new file mode 100644 index 0000000..1359656 --- /dev/null +++ b/src/main/java/com/example/demo/config/RedisConfig.java @@ -0,0 +1,45 @@ +package com.example.demo.config; + +import org.springframework.boot.autoconfigure.cache.CacheProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +@EnableCaching +@EnableConfigurationProperties(CacheProperties.class) +public class RedisConfig { + +// @Autowired +// CacheProperties cacheProperties; + + @Bean + public RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) { + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())); + config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); + + + CacheProperties.Redis redis = cacheProperties.getRedis(); + + if (redis.getTimeToLive() != null) { + config = config.entryTtl(redis.getTimeToLive()); + } + if (!redis.isCacheNullValues()) { + config = config.disableCachingNullValues(); + } + if (!redis.isUseKeyPrefix()) { + config = config.disableKeyPrefix(); + } + return config; + + } + + + +} diff --git a/src/main/java/com/example/demo/controller/UploadController.java b/src/main/java/com/example/demo/controller/UploadController.java index 423990e..d77e8e2 100644 --- a/src/main/java/com/example/demo/controller/UploadController.java +++ b/src/main/java/com/example/demo/controller/UploadController.java @@ -5,12 +5,13 @@ package com.example.demo.controller; import com.example.demo.Util.UploadUtil; import com.example.demo.domain.vo.Result; import org.springframework.beans.factory.annotation.Value; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import java.io.File; +import java.io.IOException; + @RestController @RequestMapping("/upload") @CrossOrigin @@ -18,9 +19,27 @@ public class UploadController { @Value("${upload.path}") private String path; - @PostMapping - public Result upload(MultipartFile file) { - String fileName = UploadUtil.save(file,path); - return Result.success(fileName); +// @PostMapping +// public Result upload(MultipartFile file) { +// String fileName = UploadUtil.save(file,path); +// return Result.success(fileName); +// } +@PostMapping("/upload") +public String handleFileUpload(@RequestParam("imageData") MultipartFile file) { + if (!file.isEmpty()) { + try { + // 清理文件名 + String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + // 将文件保存到服务器的某个位置 + String destinationPath = path + File.separator + fileName; + file.transferTo(new File(destinationPath)); + return "File uploaded successfully: " + fileName; + } catch (IOException e) { + e.printStackTrace(); + return "File upload failed: " + e.getMessage(); + } + } else { + return "Please select a file to upload"; } } +} 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 e4e026c..b0416d3 100644 --- a/src/main/java/com/example/demo/domain/entity/Activity.java +++ b/src/main/java/com/example/demo/domain/entity/Activity.java @@ -6,21 +6,22 @@ import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; 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; @Data -public class Activity { - private Integer activityId ; +public class Activity implements Serializable { + private Integer activityId; private Integer adminId; private String dept; - private LocalDate startTime; - private LocalDate endTime; + private Date startTime; + private Date endTime; private String activityName; private BigDecimal rechargeRatio; - private LocalDateTime createTime; + private Date createTime; private Integer activityFlag; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @DateTimeFormat(pattern = "yyyy-MM-dd") @@ -28,108 +29,4 @@ public class Activity { private Integer status; private Date startDate; private Date endDate; - - public Date getEndDate() { - return endDate; - } - - public void setEndDate(Date endDate) { - this.endDate = endDate; - } - - public Date getStartDate() { - return startDate; - } - - public void setStartDate(Date startDate) { - this.startDate = startDate; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Integer getActivityFlag() { - return activityFlag; - } - - public void setActivityFlag(Integer activityFlag) { - this.activityFlag = activityFlag; - } - - public LocalDateTime getCreateTime() { - return createTime; - } - - public void setCreateTime(LocalDateTime createTime) { - this.createTime = createTime; - } - - public BigDecimal getRechargeRatio() { - return rechargeRatio; - } - - public void setRechargeRatio(BigDecimal rechargeRatio) { - this.rechargeRatio = rechargeRatio; - } - - public String getActivityName() { - return activityName; - } - - public void setActivityName(String activityName) { - this.activityName = activityName; - } - - public LocalDate getEndTime() { - return endTime; - } - - public void setEndTime(LocalDate endTime) { - this.endTime = endTime; - } - - public LocalDate getStartTime() { - return startTime; - } - - public void setStartTime(LocalDate startTime) { - this.startTime = startTime; - } - - public String getDept() { - return dept; - } - - public void setDept(String dept) { - this.dept = dept; - } - - public Integer getAdminId() { - return adminId; - } - - public void setAdminId(Integer adminId) { - this.adminId = adminId; - } - - public Integer getActivityId() { - return activityId; - } - - public void setActivityId(Integer activityId) { - this.activityId = activityId; - } } diff --git a/src/main/java/com/example/demo/domain/entity/Detail.java b/src/main/java/com/example/demo/domain/entity/Detail.java index 90c532e..f8661b2 100644 --- a/src/main/java/com/example/demo/domain/entity/Detail.java +++ b/src/main/java/com/example/demo/domain/entity/Detail.java @@ -5,13 +5,14 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.Date; @Data @NoArgsConstructor -public class Detail { +public class Detail implements Serializable { private Integer detailId; private String name; private String jwcode; diff --git a/src/main/java/com/example/demo/domain/vo/DetailVo.java b/src/main/java/com/example/demo/domain/vo/DetailVo.java index 767b1ea..225b484 100644 --- a/src/main/java/com/example/demo/domain/vo/DetailVo.java +++ b/src/main/java/com/example/demo/domain/vo/DetailVo.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; +import java.util.Date; @Data @NoArgsConstructor @@ -32,13 +33,13 @@ public class DetailVo { // @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") // @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime createTime; + private Date createTime; //搜索消费时间 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime searchStartTime; + private Date searchStartTime; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") - private LocalDateTime searchEndTime; + private Date searchEndTime; //提交人姓名 private String adminName; diff --git a/src/main/java/com/example/demo/mapper/StatisticsMapper.java b/src/main/java/com/example/demo/mapper/StatisticsMapper.java index 9fdfa8a..80baea1 100644 --- a/src/main/java/com/example/demo/mapper/StatisticsMapper.java +++ b/src/main/java/com/example/demo/mapper/StatisticsMapper.java @@ -151,20 +151,23 @@ public interface StatisticsMapper { " SUM(CASE WHEN update_type IN ('消费', '退款') THEN recharge_coin ELSE 0 END) AS yearSumRechargeCoin,", " SUM(CASE WHEN update_type IN ('消费', '退款') THEN free_coin ELSE 0 END) AS yearSumFreeCoin,", " SUM(CASE WHEN update_type IN ('消费', '退款') THEN task_coin ELSE 0 END) AS yearSumTaskCoin", - "FROM `detail`WHERE YEAR(create_time) = YEAR(CURRENT_DATE)" , + "FROM detail WHERE YEAR(create_time) = YEAR(CURRENT_DATE)" , " AND create_time <= NOW()"}) SumCoin getYearConsumeCoin(); - @Select({"SELECT SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END) AS todayRecharge," , - "SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END) AS todayFree," + - " SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END) AS todayTask," + - " SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS dayConsumeCoin,", - " SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END) AS total_recharge_refund," , - " SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END) AS total_free_refund," , - " SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END) AS total_task_refund," , - " SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS dayRefundCoin," , - " SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END)+SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END) AS daysumCoin", - "FROM `detail` WHERE DATE(create_time) = CURDATE() - INTERVAL 1 DAY"}) + @Select({ + "SELECT IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin ELSE 0 END), 0) AS todayRecharge,", + " IFNULL(SUM(CASE WHEN update_type = '消费' THEN free_coin ELSE 0 END), 0) AS todayFree,", + " IFNULL(SUM(CASE WHEN update_type = '消费' THEN task_coin ELSE 0 END), 0) AS todayTask,", + " IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS dayConsumeCoin,", + " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin ELSE 0 END), 0) AS total_recharge_refund,", + " IFNULL(SUM(CASE WHEN update_type = '退款' THEN free_coin ELSE 0 END), 0) AS total_free_refund,", + " IFNULL(SUM(CASE WHEN update_type = '退款' THEN task_coin ELSE 0 END), 0) AS total_task_refund,", + " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS dayRefundCoin,", + " IFNULL(SUM(CASE WHEN update_type = '消费' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) +", + " IFNULL(SUM(CASE WHEN update_type = '退款' THEN recharge_coin + free_coin + task_coin ELSE 0 END), 0) AS daysumCoin", + "FROM `detail` WHERE DATE(create_time) = CURDATE() - INTERVAL 1 DAY" + }) SumCoin getDayConsumeCoin(); diff --git a/src/main/java/com/example/demo/security/SecurityConfig.java b/src/main/java/com/example/demo/security/SecurityConfig.java index aff3e1d..1562d39 100644 --- a/src/main/java/com/example/demo/security/SecurityConfig.java +++ b/src/main/java/com/example/demo/security/SecurityConfig.java @@ -59,10 +59,9 @@ public class SecurityConfig { request .requestMatchers( HttpMethod.POST, // 用户不登录就可以访问的路径 - "/user/login", "/user", "/admin/login","/upload/**").permitAll() .requestMatchers( - "/error","alipay/**" + "/error","alipay/**","/upload/**" ).permitAll() .anyRequest().authenticated() // 其它路径,必须要登录后才能访问 ); diff --git a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java index 423fbed..d242ad1 100644 --- a/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ActivityServiceImpl.java @@ -8,63 +8,98 @@ import com.example.demo.sevice.ActivityService; import com.github.pagehelper.PageHelper; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import com.github.pagehelper.PageInfo; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; +import java.util.Date; import java.util.List; @Service @Transactional @RequiredArgsConstructor +@CacheConfig(cacheNames = "activity") public class ActivityServiceImpl implements ActivityService { @Autowired ActivityMapper activityMapper; + @Override + public int add(Activity activity) { return activityMapper.add(activity); } - + @CacheEvict(value = "activity",allEntries = true) @Override public int edit(Activity activity) { activity.setActivityFlag(0); return activityMapper.edit(activity); } + @Override public List search(Activity activity) { return activityMapper.select(activity); } + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #activity.hashCode() ") + @Override - - - public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { +// public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { +//// PageHelper.startPage(pageNum, pageSize); +//// List list = activityMapper.select(activity); +//// return new PageInfo<>(list); +// // PageHelper.startPage(pageNum, pageSize); // List list = activityMapper.select(activity); -// return new PageInfo<>(list); +// 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); +// }); +// } +//} + public PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity) { PageHelper.startPage(pageNum, pageSize); List list = activityMapper.select(activity); - LocalDate nowDate = LocalDate.now(); // 获取当前的 LocalDate - list.stream() - .forEach(activity1 -> { - if (nowDate.isBefore(activity1.getStartTime())) { - // 假设 Activity 类有一个 setStatus 方法来设置状态 - activity1.setStatus(0); // 设置新的状态 - activityMapper.edit(activity1); // 保存修改后的对象 - } - else if(nowDate.isAfter(activity1.getEndTime())) { - // 假设 Activity 类有一个 setStatus 方法来设置状态 - activity1.setStatus(2); // 设置新的状态 - activityMapper.edit(activity1); // 保存修改后的对象 - } - else {activity1.setStatus(1); - activityMapper.edit(activity1); - } - }); + Date nowDate = new Date(); + + for (Activity activity1 : list) { + Date startTime = activity1.getStartTime(); + Date endTime = activity1.getEndTime(); + + 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); } -} +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java index 7e5ca60..41023fa 100644 --- a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java @@ -11,18 +11,24 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "admin") public class AdminServiceImpl implements AdminService { @Autowired private SecurityConfig securityConfig; @@ -36,27 +42,28 @@ public class AdminServiceImpl implements AdminService { public int add(Admin admin) { return adminMapper.insert(admin); } + @CacheEvict(value = "admin",allEntries = true) @Override public int edit(Admin admin) { return adminMapper.update(admin); } - + @Cacheable(key="#root.method.name") @Override public Admin findById(Integer adminId) { return adminMapper.selectById(adminId); } - + @Cacheable(key="#root.method.name") @Override public Admin findByUsername(String username) { return adminMapper.selectByName(username); } - + @Cacheable(key="#root.method.name") @Override public List search(Admin admin) { return adminMapper.select(admin); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #admin.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, Admin admin) { PageHelper.startPage(pageNum, pageSize); @@ -64,7 +71,6 @@ public class AdminServiceImpl implements AdminService { return new PageInfo<>(list); } - @Override public Admin login(Admin admin) throws Exception { System.out.println("第一步"); diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java index f3abbe3..3b5f3d9 100644 --- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java @@ -10,12 +10,18 @@ import com.example.demo.sevice.AuditService; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "audit") public class AuditServiceImpl implements AuditService { private final AuditMapper auditMapper; @@ -23,29 +29,29 @@ public class AuditServiceImpl implements AuditService { public int add(Audit audit) { return auditMapper.insert(audit); } - + @CacheEvict(value = "audit",allEntries = true) @Override public int edit(Audit audit) { return auditMapper.update(audit); } - + @Cacheable(key="#root.method.name") @Override public List search(Audit audit) { return auditMapper.select(audit); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #audit.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, Audit audit) { PageHelper.startPage(pageNum,pageSize); List list= auditMapper.select(audit); return new PageInfo<>(list); } - + @Cacheable(key="#root.method.name") @Override public List searchForDetail(ConsumeDetail consumeDetail) { return auditMapper.selectCon(consumeDetail); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #consumeDetail.hashCode() ") @Override public PageInfo searchForConsumeDetail(Integer pageNum, Integer pageSize, ConsumeDetail consumeDetail) { PageHelper.startPage(pageNum,pageSize); diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java index 5398000..a4b3f6d 100644 --- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java @@ -14,6 +14,9 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -23,11 +26,13 @@ import java.util.List; @Service @Transactional @RequiredArgsConstructor +@CacheConfig(cacheNames = "consume") public class ConsumeServiceImpl implements ConsumeService { @Autowired ConsumeMapper consumeMapper; private final UserMapper userMapper; + @Override //新增消费记录 public int insert(Detail detail) throws Exception { @@ -51,22 +56,24 @@ public class ConsumeServiceImpl implements ConsumeService { result =consumeMapper.insert(detail); return result; } + @Cacheable(key="#root.method.name") @Override public User getByUserId(Integer userId) { return consumeMapper.getByUserId(userId); } + @Cacheable(key="#root.method.name") @Override public Admin getByadminId(Integer adminId) { return consumeMapper.getByadminId(adminId); } - + @Cacheable(key="#root.method.name") @Override public List search(DetailVo detailVo) { return consumeMapper.select(detailVo); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #detailVo.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, DetailVo detailVo) { PageHelper.startPage(pageNum, pageSize); diff --git a/src/main/java/com/example/demo/serviceImpl/DetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/DetailServiceImpl.java index 39d5e6d..f2821aa 100644 --- a/src/main/java/com/example/demo/serviceImpl/DetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/DetailServiceImpl.java @@ -8,6 +8,9 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,10 +19,14 @@ import java.util.List; @Service @Transactional @RequiredArgsConstructor +@CacheConfig(cacheNames = "detail") public class DetailServiceImpl implements DetailService { + @Autowired private DetailMapper detailMapper; + + @Override public int add(Detail detail) { return detailMapper.add(detail); @@ -29,18 +36,19 @@ public class DetailServiceImpl implements DetailService { public int edit(Detail detail) { return 0; } - + @Cacheable(key="#root.method.name") @Override public Detail getDetail(int id) { return null; } + @Cacheable(key="#root.method.name") @Override public List getAllDetail(Detail detail) { return detailMapper.select(detail); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #detail.hashCode() ") @Override public PageInfo getDetailByPage(int pageNum, int pageSize, Detail detail) { PageHelper.startPage(pageNum, pageSize); diff --git a/src/main/java/com/example/demo/serviceImpl/ProductServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ProductServiceImpl.java index c92ade0..2ca842e 100644 --- a/src/main/java/com/example/demo/serviceImpl/ProductServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/ProductServiceImpl.java @@ -5,12 +5,16 @@ import com.example.demo.domain.entity.Product; import com.example.demo.mapper.ProductMapper; import com.example.demo.sevice.ProductService; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "product") public class ProductServiceImpl implements ProductService { private final ProductMapper productMapper; @Override diff --git a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java index 0056cd2..5bbce72 100644 --- a/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RateServiceImpl.java @@ -8,16 +8,19 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.*; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; - +@Transactional @Service @RequiredArgsConstructor - +@CacheConfig(cacheNames = "rate") public class RateServiceImpl implements RateService { private final RateMapper rateMapper; + + @Override public int add(Rate rate) { return rateMapper.insert(rate); @@ -25,10 +28,13 @@ public class RateServiceImpl implements RateService { @Transactional @Override + + @CacheEvict(value = "rate",allEntries = true) public int edit(Rate rate) { return rateMapper.update(rate); } - +// @CachePut(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rate.hashCode() ") + @CacheEvict(value = "rate",allEntries = true) @Override public void delete(Integer rateId) throws Exception { int result = rateMapper.deleteById(rateId); @@ -41,12 +47,12 @@ public class RateServiceImpl implements RateService { public Rate getById(Integer rateId) { return rateMapper.selectById(rateId); } - + @Cacheable(key="#root.method.name") @Override public List search(Rate rate) { return rateMapper.select(rate); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rate.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, Rate rate) { PageHelper.startPage(pageNum, pageSize); diff --git a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java index 053f8c6..76331c8 100644 --- a/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java @@ -14,14 +14,19 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.List; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "recharge") public class RechargeServiceImpl implements RechargeService { @Autowired private RechargeMapper rechargeMapper; @@ -33,6 +38,8 @@ public class RechargeServiceImpl implements RechargeService { private UserMapper userMapper; @Override @Transactional + + public int add(Recharge recharge) throws Exception { // return rechargeMapper.insert(recharge); @@ -125,29 +132,29 @@ public class RechargeServiceImpl implements RechargeService { return result; } - + @CacheEvict(value = "recharge",allEntries = true) @Override public int edit(Recharge recharge) throws Exception { recharge.setFlag(0); return rechargeMapper.update(recharge); } - @Override public Recharge findById(int id) throws Exception { return null; } - + @Cacheable(key="#root.method.name") @Override public List search(RechargeVo rechargeVo) { return rechargeMapper.select(rechargeVo); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #rechargeVo.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, RechargeVo rechargeVo) { PageHelper.startPage(pageNum, pageSize); List list= rechargeMapper.select(rechargeVo); return new PageInfo<>(list); } + @Cacheable(key="#root.method.name") @Override public int getAllByjwAndup(String jwcode) { diff --git a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java index ebb3626..53b1c4c 100644 --- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java @@ -8,6 +8,9 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,18 +20,21 @@ import java.util.List; @RequiredArgsConstructor @Transactional @Service +@CacheConfig(cacheNames = "refund") public class RefundServiceImpl implements RefundService { private final RefundMapper refundMapper; + + @Override public int add(Detail detail) { return refundMapper.insert(detail); } + @Override public int addAudit(Detail detail) { return refundMapper.insertAudit(detail); } - //自动软删除数据加更新数据 @Override public void edit(Detail newDetail) { @@ -62,7 +68,7 @@ public class RefundServiceImpl implements RefundService { public boolean existsByContactId(Integer contactId) { return refundMapper.existsByContactId(contactId); } - + @CacheEvict(value = "refund",allEntries = true) @Override public int softDelete(Integer detailId) { return refundMapper.update(detailId); @@ -72,12 +78,12 @@ public class RefundServiceImpl implements RefundService { public Detail selectByDetailId(Integer detailId) { return refundMapper.selectByDetailId(detailId); } - + @Cacheable(key="#root.method.name") @Override public List search(Detail detail) { return refundMapper.select(detail); } - + @Cacheable(key="#root.method.name + ':'+ #pageNum + '-' + #pageSize + '-' + #detail.hashCode() ") @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, Detail detail) { PageHelper.startPage(pageNum, pageSize); diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java index b52bc8f..bab255f 100644 --- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java @@ -8,6 +8,8 @@ import com.example.demo.domain.vo.SumCoin; import com.example.demo.mapper.StatisticsMapper; import com.example.demo.sevice.StatisticsService; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -17,9 +19,10 @@ import java.util.List; @RequiredArgsConstructor @Transactional @Service +@CacheConfig(cacheNames = "statistics") public class StatisticsServiceImpl implements StatisticsService { private final StatisticsMapper statisticsMapper; - + @Cacheable(key="#root.method.name") @Override public Statistics getStatistics() { Statistics statistics = new Statistics(); @@ -72,7 +75,7 @@ public class StatisticsServiceImpl implements StatisticsService { return statistics; } - + @Cacheable(key="#root.method.name") @Override public Statisticss stats() { Statisticss a = new Statisticss(); @@ -84,26 +87,26 @@ public class StatisticsServiceImpl implements StatisticsService { } //----------------------------------------------------------------------------------------------------// - +@Cacheable(key="#root.method.name") 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() { return statisticsMapper.getDayConsumeCoin(); } - + @Cacheable(key="#root.method.name") @Override public List getMediuPayCoin() { return statisticsMapper.getMediuPayCoin(); } - + @Cacheable(key="#root.method.name") @Override public List getMediuConsumeCoin() { return statisticsMapper.getMediuConsumeCoin(); @@ -111,12 +114,12 @@ public class StatisticsServiceImpl implements StatisticsService { public SumCoin getMess(Integer jwcode){ return statisticsMapper.getMess(jwcode); } - + @Cacheable(key="#root.method.name") @Override public List getMediumAreaPay() { return statisticsMapper.getMediumAreaPay(); } - + @Cacheable(key="#root.method.name") @Override public List getMediumAreaConsume() { return statisticsMapper.getMediumAreaConsume(); diff --git a/src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java index f59dad2..6120c85 100644 --- a/src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/UserDetailServiceImpl.java @@ -5,17 +5,22 @@ import com.example.demo.domain.entity.Admin; import com.example.demo.mapper.AdminMapper; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "userDetail") public class UserDetailServiceImpl implements UserDetailsService { @Autowired private AdminMapper adminMapper; + @Cacheable(key="#root.method.name") @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { Admin admin=adminMapper.selectByName(username); diff --git a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java index 569c339..aa78d43 100644 --- a/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java @@ -8,17 +8,20 @@ import com.example.demo.sevice.UserSevice; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; +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.util.List; - +@Transactional @Service @RequiredArgsConstructor +@CacheConfig(cacheNames = "user") public class UserServiceImpl implements UserSevice { private final UserMapper userMapper; - @Override public List search(UserVo userVo) throws Exception{ User sUser = userMapper.select(userVo.getJwcode()); @@ -27,7 +30,6 @@ public class UserServiceImpl implements UserSevice { } return userMapper.selectA(userVo); } - @Override public PageInfo searchForPage(Integer pageNum, Integer pageSize, User user) { PageHelper.startPage(pageNum,pageSize); diff --git a/src/main/java/com/example/demo/sevice/ActivityService.java b/src/main/java/com/example/demo/sevice/ActivityService.java index a5b51a8..e86833b 100644 --- a/src/main/java/com/example/demo/sevice/ActivityService.java +++ b/src/main/java/com/example/demo/sevice/ActivityService.java @@ -4,6 +4,8 @@ package com.example.demo.sevice; import com.example.demo.domain.entity.Activity; +import com.github.pagehelper.PageInfo; +import org.springframework.cache.annotation.Cacheable; import java.util.List; @@ -15,4 +17,6 @@ public interface ActivityService { List search(Activity activity); + @Cacheable(key="#root.method.name") + PageInfo searchForPage(Integer pageNum, Integer pageSize, Activity activity); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 990d911..0529e4e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -16,10 +16,28 @@ spring: password: 'AGX4Z3YMxiCG3GR2' application: name: demo + cache: + type: redis + redis: + time-to-live: 3600000 + use-key-prefix: true + cache-null-values: true + data: + redis: + host: 127.0.0.1 + port: 6379 + timeout: 1000 + lettuce: + pool: + max-active: 20 # 连接池最大连接数(使用负值表示没有限制) + max-wait: -1 # 最大阻塞等待时间(负数表示没有限制) + max-idle: 5 # 连接池中最大空闲连接 + min-idle: 0 # 连接池中最小空闲连接 mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl upload: - path: D:/gold1/ \ No newline at end of file + path: D:/gold1/ +