From 700227108b13e0b3c45c55f9c08c4911e84593d8 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Thu, 12 Oct 2023 04:11:07 +0800 Subject: [PATCH] chore: cache compose --- .../util/{TimeUtils.java => TimeUtil.java} | 38 +++++++++---------- .../util/UniversalCacheKeyGeneratorUtil.java | 31 +++++++++++++++ .../main/resources/META-INF/spring.factories | 3 +- .../kicc/workflow/api/entity/Workflow.java | 4 +- .../system/controller/ConfigController.java | 2 +- .../system/controller/DictController.java | 2 +- .../system/controller/DictDataController.java | 12 +++--- 7 files changed, 61 insertions(+), 31 deletions(-) rename kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/{TimeUtils.java => TimeUtil.java} (90%) create mode 100644 kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/UniversalCacheKeyGeneratorUtil.java diff --git a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtils.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtil.java similarity index 90% rename from kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtils.java rename to kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtil.java index 6e624700..343bf817 100644 --- a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtils.java +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/TimeUtil.java @@ -11,14 +11,14 @@ import java.util.Date; * @Author: wangxiang4 * @Date: 2022/1/15 */ -public class TimeUtils { +public class TimeUtil { public static String toTimeString(long time) { - TimeUtils t = new TimeUtils(time); - int day = t.get(TimeUtils.DAY); - int hour = t.get(TimeUtils.HOUR); - int minute = t.get(TimeUtils.MINUTE); - int second = t.get(TimeUtils.SECOND); + TimeUtil t = new TimeUtil(time); + int day = t.get(TimeUtil.DAY); + int hour = t.get(TimeUtil.HOUR); + int minute = t.get(TimeUtil.MINUTE); + int second = t.get(TimeUtil.SECOND); StringBuilder sb = new StringBuilder(); if (day > 0){ sb.append(day).append("天"); @@ -78,7 +78,7 @@ public class TimeUtils { /** * 无参构造,将各字段置为 0 */ - public TimeUtils() { + public TimeUtil() { this(0, 0, 0, 0); } @@ -87,7 +87,7 @@ public class TimeUtils { * @param hour 小时 * @param minute 分钟 */ - public TimeUtils(int hour, int minute) { + public TimeUtil(int hour, int minute) { this(0, hour, minute, 0); } @@ -97,7 +97,7 @@ public class TimeUtils { * @param minute 分钟 * @param second 秒 */ - public TimeUtils(int hour, int minute, int second) { + public TimeUtil(int hour, int minute, int second) { this(0, hour, minute, second); } @@ -106,7 +106,7 @@ public class TimeUtils { * Time time = new Time("14:22:23"); * @param time 字符串格式的时间,默认采用“:”作为分隔符 */ - public TimeUtils(String time) { + public TimeUtil(String time) { this(time, null); // System.out.println(time); } @@ -115,14 +115,14 @@ public class TimeUtils { * 使用时间毫秒构建时间 * @param time */ - public TimeUtils(long time){ + public TimeUtil(long time){ this(new Date(time)); } /** * 使用日期对象构造时间 * @param date */ - public TimeUtils(Date date){ + public TimeUtil(Date date){ this(DateUtil.formatUTC(date, "HH:mm:ss")); } @@ -133,7 +133,7 @@ public class TimeUtils { * @param minute 分 * @param second 秒 */ - public TimeUtils(int day, int hour, int minute, int second) { + public TimeUtil(int day, int hour, int minute, int second) { initialize(day, hour, minute, second); } @@ -142,7 +142,7 @@ public class TimeUtils { * Time time = new Time("14-22-23", "-"); * @param time 字符串格式的时间 */ - public TimeUtils(String time, String timeSeparator) { + public TimeUtil(String time, String timeSeparator) { if(timeSeparator != null) { setTimeSeparator(timeSeparator); } @@ -184,8 +184,8 @@ public class TimeUtils { * @param time 需要加的时间 * @return 运算后的时间 */ - public TimeUtils addTime(TimeUtils time) { - TimeUtils result = new TimeUtils(); + public TimeUtil addTime(TimeUtil time) { + TimeUtil result = new TimeUtil(); int up = 0; // 进位标志 for (int i = 0; i < fields.length; i++) { int sum = fields[i] + time.fields[i] + up; @@ -200,8 +200,8 @@ public class TimeUtils { * @param time 需要减的时间 * @return 运算后的时间 */ - public TimeUtils subtractTime(TimeUtils time) { - TimeUtils result = new TimeUtils(); + public TimeUtil subtractTime(TimeUtil time) { + TimeUtil result = new TimeUtil(); int down = 0; // 退位标志 for (int i = 0, k = fields.length - 1; i < k; i++) { int difference = fields[i] + down; @@ -311,7 +311,7 @@ public class TimeUtils { return false; if (getClass() != obj.getClass()) return false; - final TimeUtils other = (TimeUtils) obj; + final TimeUtil other = (TimeUtil) obj; if (!Arrays.equals(fields, other.fields)) { return false; } diff --git a/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/UniversalCacheKeyGeneratorUtil.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/UniversalCacheKeyGeneratorUtil.java new file mode 100644 index 00000000..304f2e0b --- /dev/null +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/util/UniversalCacheKeyGeneratorUtil.java @@ -0,0 +1,31 @@ +package com.cloud.kicc.common.core.util; + +import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.lang.NonNull; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +@Component("universalCacheKeyGeneratorUtil") +public class UniversalCacheKeyGeneratorUtil implements KeyGenerator { + + @Override + @NonNull + public Object generate(Object target, Method method, Object... params) { + String separator = ":"; + StringBuilder keyBuilder = new StringBuilder(); + keyBuilder.append(target.getClass().getName()); + keyBuilder.append(separator).append(method.getName()); + // 遍历方法参数 + for (Object param : params) { + if (param != null) { + keyBuilder.append(separator).append(param); + } else { + // 如果参数为空,可以添加一个特殊标记,以区分不同情况 + keyBuilder.append(separator).append("Empty"); + } + } + return keyBuilder.toString(); + } + +} diff --git a/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories b/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories index d0a408af..ca60f0bc 100644 --- a/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories +++ b/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories @@ -2,4 +2,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.cloud.kicc.common.core.config.WebMvcConfiguration,\ com.cloud.kicc.common.core.config.RestTemplateConfiguration,\ com.cloud.kicc.common.core.config.GatewayConfigProperties,\ - com.cloud.kicc.common.core.util.SpringContextHolderUtil + com.cloud.kicc.common.core.util.SpringContextHolderUtil,\ + com.cloud.kicc.common.core.util.UniversalCacheKeyGeneratorUtil diff --git a/kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/Workflow.java b/kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/Workflow.java index 1fe0fdca..15ce5659 100644 --- a/kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/Workflow.java +++ b/kicc-platform/kicc-platform-api/kicc-workflow-api/src/main/java/com/cloud/kicc/workflow/api/entity/Workflow.java @@ -1,6 +1,6 @@ package com.cloud.kicc.workflow.api.entity; -import com.cloud.kicc.common.core.util.TimeUtils; +import com.cloud.kicc.common.core.util.TimeUtil; import com.cloud.kicc.workflow.api.vo.ActivityCommentInfoVo; import lombok.Data; import lombok.EqualsAndHashCode; @@ -98,7 +98,7 @@ public class Workflow implements Serializable { /** 获取流程运行持续时间 */ public String getDurationTime() { if (historicActivityInstance != null && historicActivityInstance.getDurationInMillis() != null) { - return TimeUtils.toTimeString(historicActivityInstance.getDurationInMillis()); + return TimeUtil.toTimeString(historicActivityInstance.getDurationInMillis()); } return ""; } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ConfigController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ConfigController.java index 85e1b2c3..00447318 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ConfigController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/ConfigController.java @@ -41,7 +41,7 @@ public class ConfigController { .eq(StrUtil.isNotBlank(config.getKey()), Config::getKey, config.getKey()) .eq(StrUtil.isNotBlank(config.getIsSys()), Config::getIsSys, config.getIsSys()) .between(StrUtil.isNotBlank(config.getBeginTime()) && StrUtil.isNotBlank(config.getEndTime()), Config::getCreateTime, config.getBeginTime(), config.getEndTime()) - .orderByDesc(Config::getId); + .orderByAsc(Config::getId); } @GetMapping("/list") diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictController.java index 9b535a59..07e6dc35 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictController.java @@ -36,7 +36,7 @@ public class DictController { .like(StrUtil.isNotBlank(dict.getName()), Dict::getName, dict.getName()) .eq(StrUtil.isNotBlank(dict.getType()), Dict::getType, dict.getType()) .eq(StrUtil.isNotBlank(dict.getStatus()), Dict::getStatus, dict.getStatus()) - .orderByDesc(Dict::getId); + .orderByAsc(Dict::getId); } @GetMapping("/list") diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java index 883c6375..b899cf8d 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/DictDataController.java @@ -2,19 +2,17 @@ package com.cloud.kicc.system.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.cloud.kicc.system.api.entity.DictData; -import com.cloud.kicc.system.api.feign.RemoteDictService; -import com.cloud.kicc.system.service.DictDataService; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.constant.CacheConstants; -import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.log.annotation.SysLog; import com.cloud.kicc.common.security.annotation.Inner; +import com.cloud.kicc.system.api.entity.DictData; +import com.cloud.kicc.system.api.feign.RemoteDictService; +import com.cloud.kicc.system.service.DictDataService; import lombok.AllArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.security.access.prepost.PreAuthorize; @@ -42,7 +40,7 @@ public class DictDataController { return new LambdaQueryWrapper() .like(StrUtil.isNotBlank(dictData.getLabel()), DictData::getLabel, dictData.getLabel()) .eq(StrUtil.isNotBlank(dictData.getDictType()), DictData::getDictType, dictData.getDictType()) - .orderByDesc(DictData::getId); + .orderByAsc(DictData::getId); } @GetMapping("/list") @@ -59,7 +57,7 @@ public class DictDataController { @Inner(false) @GetMapping("/dictType") - @Cacheable(value = CacheConstants.DICT_DETAILS, key = "#type") + @Cacheable(value = CacheConstants.DICT_DETAILS, keyGenerator = "universalCacheKeyGeneratorUtil") public R dictType(String type, String tenantId) { return R.ok(dictDataService.list(Wrappers.query().lambda() .eq(DictData::getDictType, type)