From 8c4663b6da6805aaca459cb3f4b189daedaa5e38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E8=89=AF=28004796=29?= Date: Thu, 7 Mar 2024 15:11:31 +0800 Subject: [PATCH] 123 --- .../java/com/bashi/config/I18nConfig.java | 96 +++++++++++++++++++ .../src/main/resources/application-dev.yml | 8 +- .../resources/i18n/messages_gu_IN.properties | 1 + .../resources/i18n/messages_zh_CN.properties | 1 + .../dk/controller/app/AppHomeController.java | 20 +++- .../java/com/bashi/dk/domain/HomeSetting.java | 1 + 6 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 bashi-admin/src/main/java/com/bashi/config/I18nConfig.java create mode 100644 bashi-admin/src/main/resources/i18n/messages_gu_IN.properties create mode 100644 bashi-admin/src/main/resources/i18n/messages_zh_CN.properties diff --git a/bashi-admin/src/main/java/com/bashi/config/I18nConfig.java b/bashi-admin/src/main/java/com/bashi/config/I18nConfig.java new file mode 100644 index 0000000..0a8013c --- /dev/null +++ b/bashi-admin/src/main/java/com/bashi/config/I18nConfig.java @@ -0,0 +1,96 @@ +package com.bashi.config; + +import com.bashi.dk.service.HomeSettingService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.LocaleResolver; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Locale; + +/** + * i18n配置,用于处理语言本地化设置。 + * + * @author liuyanqiang + * @version 1.0.0 + * @since 2023/06/15 09:41 + **/ +@Configuration +public class I18nConfig implements LocaleResolver { + + @Autowired + private HomeSettingService homeSettingService; + + /** + * 根据请求中的Accept-Language头部解析出语言设置。 + * 如果没有指定语言或语言设置不完整,则默认为中文设置。 + * + * @param request HTTP请求对象 + * @return {@link Locale } 解析后的语言设置Locale对象 + * @author liuyanqiang + * @since 2023/06/15 09:42 + **/ + @Override + public Locale resolveLocale(HttpServletRequest request) { + // 默认语言设置为中文 + String defaultLocal = homeSettingService.getHomeSetting().getDefaultLocal(); + Locale locale = null; + // 从请求的头部获取Accept-Language标头,该标头指定了客户端期望的语言 + String language = request.getHeader("Accept-Language"); + String lang = request.getParameter("lang"); + if (StringUtils.isNotBlank(lang)) { + language = lang; + } + if(StringUtils.isBlank(language)){ + language = defaultLocal; + } + // 检查请求的语言是否非空 + if (StringUtils.isNotBlank(language)) { + // 将语言字符串拆分为语言和国家/地区代码 + String[] splitLanguage = language.split("_"); + // 检查是否有语言和国家/地区代码 + if (splitLanguage.length > 1) { + // 根据语言和国家/地区代码创建新的Locale对象 + locale = new Locale(splitLanguage[0], splitLanguage[1]); + } + } + if(locale == null){ + locale = Locale.CHINA; + } + // 返回解析得到的Locale对象作为解析后的语言设置 + return locale; + } + + /** + * 设置语言设置时的回调方法。 + * 在此实现中,不执行任何操作,忽略对语言设置的更改。 + * @param request HTTP请求对象 + * @param response HTTP响应对象 + * @param locale 语言设置的Locale对象 + * @author liuyanqiang + * @since 2023/06/15 09:43 + **/ + @Override + public void setLocale( + HttpServletRequest request, + HttpServletResponse response, + Locale locale) { + // 此方法不执行任何操作,忽略对语言设置的更改 + } + + /** + * 创建LocaleResolver bean,用于处理语言设置。 + * + * @return {@link LocaleResolver } + * @author liuyanqiang + * @since 2023/06/15 09:44 + **/ + @Bean + public LocaleResolver localeResolver() { + // 返回当前类作为LocaleResolver的实例 + return new I18nConfig(); + } +} diff --git a/bashi-admin/src/main/resources/application-dev.yml b/bashi-admin/src/main/resources/application-dev.yml index fbca8c7..208b32e 100644 --- a/bashi-admin/src/main/resources/application-dev.yml +++ b/bashi-admin/src/main/resources/application-dev.yml @@ -12,7 +12,7 @@ spring: # 主库数据源 master: driverClassName: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:4306/dk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true + url: jdbc:mysql://124.222.254.188:4306/dk?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true username: dk password: dk123.com # 从库数据源 @@ -66,13 +66,13 @@ spring: # redis 配置 redis: # 地址 - host: localhost + host: 124.222.254.188 # 端口,默认为6379 - port: 6379 + port: 9379 # 数据库索引 database: 1 # 密码 - password: + password: 383200134 # 连接超时时间 timeout: 10s # 是否开启ssl diff --git a/bashi-admin/src/main/resources/i18n/messages_gu_IN.properties b/bashi-admin/src/main/resources/i18n/messages_gu_IN.properties new file mode 100644 index 0000000..118f9e7 --- /dev/null +++ b/bashi-admin/src/main/resources/i18n/messages_gu_IN.properties @@ -0,0 +1 @@ +test=TestYuYan diff --git a/bashi-admin/src/main/resources/i18n/messages_zh_CN.properties b/bashi-admin/src/main/resources/i18n/messages_zh_CN.properties new file mode 100644 index 0000000..7c0863e --- /dev/null +++ b/bashi-admin/src/main/resources/i18n/messages_zh_CN.properties @@ -0,0 +1 @@ +test=测试语言 diff --git a/bashi-dk/src/main/java/com/bashi/dk/controller/app/AppHomeController.java b/bashi-dk/src/main/java/com/bashi/dk/controller/app/AppHomeController.java index 50f6d49..484159b 100644 --- a/bashi-dk/src/main/java/com/bashi/dk/controller/app/AppHomeController.java +++ b/bashi-dk/src/main/java/com/bashi/dk/controller/app/AppHomeController.java @@ -4,22 +4,24 @@ package com.bashi.dk.controller.app; import cn.hutool.core.util.RandomUtil; import com.bashi.common.core.domain.AjaxResult; import com.bashi.common.utils.BeanConvertUtil; +import com.bashi.common.utils.MessageUtils; +import com.bashi.dk.domain.HomeSetting; import com.bashi.dk.domain.LoansSetting; import com.bashi.dk.dto.app.req.CalLoanReq; import com.bashi.dk.dto.app.resp.CalLoanResp; import com.bashi.dk.dto.app.resp.LoanUser; import com.bashi.dk.kit.CalLoanManager; +import com.bashi.dk.service.HomeSettingService; import com.bashi.dk.service.LoansSettingService; import com.bashi.dk.util.Loan; import com.bashi.dk.util.PhoneRandomUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.aspectj.weaver.loadtime.Aj; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Random; @@ -32,6 +34,20 @@ public class AppHomeController { private CalLoanManager calLoanManager; @Autowired private LoansSettingService loansSettingService; + @Autowired + private HomeSettingService homeSettingService; + @GetMapping("/defaultLocal") + @ApiOperation(value = "获取默认语言") + public AjaxResult defaultLocal(){ + HomeSetting homeSetting = homeSettingService.getHomeSetting(); + String defaultLocal = homeSetting.getDefaultLocal(); + if(StringUtils.isEmpty(defaultLocal)){ + defaultLocal = "zh_CN"; + } + AjaxResult success = AjaxResult.success(); + success.setData(defaultLocal); + return success; + } @PostMapping("/calLoan") @ApiOperation(value = "计算每月还款") diff --git a/bashi-dk/src/main/java/com/bashi/dk/domain/HomeSetting.java b/bashi-dk/src/main/java/com/bashi/dk/domain/HomeSetting.java index 8ab015d..4d6badd 100644 --- a/bashi-dk/src/main/java/com/bashi/dk/domain/HomeSetting.java +++ b/bashi-dk/src/main/java/com/bashi/dk/domain/HomeSetting.java @@ -35,6 +35,7 @@ public class HomeSetting implements Serializable { */ private String commonSeal; + private String defaultLocal; private String chatUrl; @TableField(exist = false)