From 148ff6dbb0e1c28ffa11d71d851cf65b00b68186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 5 Feb 2025 18:19:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A0=B9=E6=8D=AE=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E6=97=B6=E5=8C=BA=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cfs/controller/TiketController.java | 4 +- .../mobilebroken/cfs/runner/InitZoneMap.java | 33 +++++++++++++++ .../common/pojo/vo/AdminTicketVO.java | 4 ++ .../common/util/LanguageUtil.java | 22 ---------- .../common/util/MultilingualUtil.java | 40 +++++++++++++++++++ .../repository/entity/Language.java | 8 +++- .../starter/advice/LoggingAspect.java | 1 + .../handler/UTCLocalDateTimeTypeHandler.java | 7 ++-- 8 files changed, 91 insertions(+), 28 deletions(-) create mode 100644 nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java delete mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/LanguageUtil.java create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java index cd2afdb1..a55ac970 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/TiketController.java @@ -7,7 +7,7 @@ import com.nflg.mobilebroken.common.pojo.PageData; import com.nflg.mobilebroken.common.pojo.request.*; import com.nflg.mobilebroken.common.pojo.vo.*; import com.nflg.mobilebroken.common.util.AppUserUtil; -import com.nflg.mobilebroken.common.util.LanguageUtil; +import com.nflg.mobilebroken.common.util.MultilingualUtil; import com.nflg.mobilebroken.repository.entity.AppUser; import com.nflg.mobilebroken.repository.entity.Ticket; import com.nflg.mobilebroken.repository.entity.TicketChat; @@ -188,7 +188,7 @@ public class TiketController extends ControllerBase { **/ @GetMapping("getTicketEvaluateSelect") public ApiResult getTicketEvaluateSelect() { - String language = LanguageUtil.getLanguage(); + String language = MultilingualUtil.getLanguage(); return ApiResult.success(dictionaryItemTranslateService.getTicketEvaluateSelect(language)); } diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java new file mode 100644 index 00000000..8ed80521 --- /dev/null +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/runner/InitZoneMap.java @@ -0,0 +1,33 @@ +package com.nflg.mobilebroken.cfs.runner; + +import cn.hutool.core.collection.CollectionUtil; +import com.nflg.mobilebroken.common.util.MultilingualUtil; +import com.nflg.mobilebroken.repository.entity.Language; +import com.nflg.mobilebroken.repository.service.ILanguageService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class InitZoneMap implements CommandLineRunner { + + @Resource + private ILanguageService languageService; + + @Override + public void run(String... args) { + log.info("初始化语言区域映射"); + List languages = languageService.getLanguages(); + if (CollectionUtil.isNotEmpty(languages)) { + Map map = languages.stream() + .collect(Collectors.toMap(Language::getCode, Language::getZone)); + MultilingualUtil.setZoneMap(map); + } + } +} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java index 2291f72a..8d4a0d47 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/vo/AdminTicketVO.java @@ -10,6 +10,7 @@ import org.ttzero.excel.annotation.IgnoreExport; import java.time.LocalDateTime; import java.util.List; +import java.util.Objects; @Data public class AdminTicketVO { @@ -137,6 +138,9 @@ public class AdminTicketVO { } public String getUrgencyDesc() { + if (Objects.isNull(urgency)) { + return ""; + } return TicketUrgency.findByValue(urgency).getDescription(); } diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/LanguageUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/LanguageUtil.java deleted file mode 100644 index 7a7ad05f..00000000 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/LanguageUtil.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.nflg.mobilebroken.common.util; - -public class LanguageUtil { - - private static final ThreadLocal threadLocal = new ThreadLocal<>(); - - public static String getLanguage() { - String language = threadLocal.get(); - if (language == null) { - language = "cn"; - } - return language; - } - - public static void setLanguage(String language) { - threadLocal.set(language); - } - - public static void clear() { - threadLocal.remove(); - } -} diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java new file mode 100644 index 00000000..ce274c91 --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/util/MultilingualUtil.java @@ -0,0 +1,40 @@ +package com.nflg.mobilebroken.common.util; + +import cn.hutool.core.map.MapUtil; + +import java.util.Map; + +public class MultilingualUtil { + + private static final ThreadLocal THREAD_LOCAL = new ThreadLocal<>(); + + private static final Map ZONE_MAP = MapUtil.newHashMap(); + + public static String getLanguage() { + String language = THREAD_LOCAL.get(); + if (language == null) { + language = "cn"; + } + return language; + } + + public static void setLanguage(String language) { + THREAD_LOCAL.set(language); + } + + public static void clear() { + THREAD_LOCAL.remove(); + } + + public static void setZoneMap(Map map) { + ZONE_MAP.putAll(map); + } + + public static String getZone(String language) { + return ZONE_MAP.get(language); + } + + public static String getZone() { + return ZONE_MAP.get(getLanguage()); + } +} diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java index e8756f22..bfa5bad6 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/entity/Language.java @@ -2,11 +2,12 @@ package com.nflg.mobilebroken.repository.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; +import java.io.Serializable; + /** *

* 字典 @@ -45,6 +46,11 @@ public class Language implements Serializable { */ private String ico; + /** + * 时区 + */ + private String zone; + /** * 排序,从大到小 */ diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java index ee702a17..4172a4d9 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/advice/LoggingAspect.java @@ -73,6 +73,7 @@ public class LoggingAspect { StackTraceElement[] stackTraceElements = ex.getStackTrace(); logRecord.setRequestResult(false); logDetail.setRequestErrMsg(stackTraceElements.length > 0 ? ex.getMessage() + ":" + stackTraceElements[0].toString() : ""); +// logger.error("未捕获的异常",ex); return ApiResult.error(STATE.Error,"操作出现错误"+ex.getMessage()); } finally { diff --git a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java index 4f4655fa..10c4fe95 100644 --- a/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java +++ b/nflg-mobilebroken-starter/src/main/java/com/nflg/mobilebroken/starter/handler/UTCLocalDateTimeTypeHandler.java @@ -1,5 +1,6 @@ package com.nflg.mobilebroken.starter.handler; +import com.nflg.mobilebroken.common.util.MultilingualUtil; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes; @@ -31,7 +32,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(ResultSet rs, String columnName) throws SQLException { LocalDateTime utcTime = rs.getObject(columnName, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; } @@ -40,7 +41,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(ResultSet rs, int columnIndex) throws SQLException { LocalDateTime utcTime = rs.getObject(columnIndex, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; } @@ -49,7 +50,7 @@ public class UTCLocalDateTimeTypeHandler extends BaseTypeHandler public LocalDateTime getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { LocalDateTime utcTime = cs.getObject(columnIndex, LocalDateTime.class); // 将 UTC 时间转换为本地时间 - return utcTime != null ? utcTime.atZone(ZoneId.of("UTC")) + return utcTime != null ? utcTime.atZone(ZoneId.of(MultilingualUtil.getZone())) .withZoneSameInstant(ZoneId.systemDefault()) .toLocalDateTime() : null; }