This commit is contained in:
张良(004796)
2024-03-07 15:11:31 +08:00
parent 9bbf8a8b10
commit 8c4663b6da
6 changed files with 121 additions and 6 deletions

View File

@@ -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();
}
}

View File

@@ -12,7 +12,7 @@ spring:
# 主库数据源 # 主库数据源
master: master:
driverClassName: com.mysql.cj.jdbc.Driver 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 username: dk
password: dk123.com password: dk123.com
# 从库数据源 # 从库数据源
@@ -66,13 +66,13 @@ spring:
# redis 配置 # redis 配置
redis: redis:
# 地址 # 地址
host: localhost host: 124.222.254.188
# 端口默认为6379 # 端口默认为6379
port: 6379 port: 9379
# 数据库索引 # 数据库索引
database: 1 database: 1
# 密码 # 密码
password: password: 383200134
# 连接超时时间 # 连接超时时间
timeout: 10s timeout: 10s
# 是否开启ssl # 是否开启ssl

View File

@@ -0,0 +1 @@
test=TestYuYan

View File

@@ -0,0 +1 @@
test=测试语言

View File

@@ -4,22 +4,24 @@ package com.bashi.dk.controller.app;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import com.bashi.common.core.domain.AjaxResult; import com.bashi.common.core.domain.AjaxResult;
import com.bashi.common.utils.BeanConvertUtil; 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.domain.LoansSetting;
import com.bashi.dk.dto.app.req.CalLoanReq; import com.bashi.dk.dto.app.req.CalLoanReq;
import com.bashi.dk.dto.app.resp.CalLoanResp; import com.bashi.dk.dto.app.resp.CalLoanResp;
import com.bashi.dk.dto.app.resp.LoanUser; import com.bashi.dk.dto.app.resp.LoanUser;
import com.bashi.dk.kit.CalLoanManager; import com.bashi.dk.kit.CalLoanManager;
import com.bashi.dk.service.HomeSettingService;
import com.bashi.dk.service.LoansSettingService; import com.bashi.dk.service.LoansSettingService;
import com.bashi.dk.util.Loan; import com.bashi.dk.util.Loan;
import com.bashi.dk.util.PhoneRandomUtil; import com.bashi.dk.util.PhoneRandomUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Random; import java.util.Random;
@@ -32,6 +34,20 @@ public class AppHomeController {
private CalLoanManager calLoanManager; private CalLoanManager calLoanManager;
@Autowired @Autowired
private LoansSettingService loansSettingService; private LoansSettingService loansSettingService;
@Autowired
private HomeSettingService homeSettingService;
@GetMapping("/defaultLocal")
@ApiOperation(value = "获取默认语言")
public AjaxResult<String> defaultLocal(){
HomeSetting homeSetting = homeSettingService.getHomeSetting();
String defaultLocal = homeSetting.getDefaultLocal();
if(StringUtils.isEmpty(defaultLocal)){
defaultLocal = "zh_CN";
}
AjaxResult<String> success = AjaxResult.success();
success.setData(defaultLocal);
return success;
}
@PostMapping("/calLoan") @PostMapping("/calLoan")
@ApiOperation(value = "计算每月还款") @ApiOperation(value = "计算每月还款")

View File

@@ -35,6 +35,7 @@ public class HomeSetting implements Serializable {
*/ */
private String commonSeal; private String commonSeal;
private String defaultLocal;
private String chatUrl; private String chatUrl;
@TableField(exist = false) @TableField(exist = false)