diff --git a/src/main/java/com/example/demo/controller/coin/AdminController.java b/src/main/java/com/example/demo/controller/coin/AdminController.java index 1a9f9a0..c357d68 100644 --- a/src/main/java/com/example/demo/controller/coin/AdminController.java +++ b/src/main/java/com/example/demo/controller/coin/AdminController.java @@ -50,9 +50,18 @@ public class AdminController { public Result login(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将输入的翻译字段转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertLoginFieldsToChinese(admin, languageCode); + } + admin = adminService.login(admin); String token = JWTUtil.createJWT(admin); -// System.out.println(token); + // 对返回的管理员信息进行多语言转换 + translateAdminInfoForLogin(admin, lang); admin.setPassword(null); return Result.success(token, admin); @@ -133,6 +142,37 @@ public class AdminController { } /** + * 为登录接口翻译管理员信息 + */ + private void translateAdminInfoForLogin(Admin admin, String lang) { + if (admin != null) { + // 翻译市场权限信息(如果markets是逗号分隔的多个市场) + if (admin.getMarkets() != null && !admin.getMarkets().isEmpty()) { + String[] markets = admin.getMarkets().split(","); + StringBuilder translatedMarkets = new StringBuilder(); + for (int i = 0; i < markets.length; i++) { + if (i > 0) { + translatedMarkets.append(","); + } + String translatedMarket = languageTranslationUtil.translate(markets[i].trim(), lang); + translatedMarkets.append(translatedMarket); + } + admin.setMarkets(translatedMarkets.toString()); + } + // 翻译职位信息 + if (admin.getPostiton() != null && !admin.getPostiton().isEmpty()) { + String translatedPosition = languageTranslationUtil.translate(admin.getPostiton(), lang); + admin.setPostiton(translatedPosition); + } + // 翻译备注 + if (admin.getRemark() != null && !admin.getRemark().isEmpty()) { + String translatedRemark = languageTranslationUtil.translate(admin.getRemark(), lang); + admin.setRemark(translatedRemark); + } + } + } + + /** * 转换管理员信息的多语言字段 */ private void translateAdminInfo(Admin admin, String lang) { @@ -182,6 +222,29 @@ public class AdminController { } /** + * 将登录时的翻译字段转换为中文简体 + */ + private void convertLoginFieldsToChinese(Admin admin, String languageCode) { + if (admin != null) { + // 登录时通常不需要转换账号字段,因为账号是固定标识 + + // 如果需要对职位信息进行反查(如果登录时涉及到职位查询) + if (admin.getPostiton() != null && !admin.getPostiton().isEmpty()) { + String chinesePosition = translationService.findChineseSimplifiedByTranslation( + admin.getPostiton(), languageCode); + admin.setPostiton(chinesePosition); + } + + // 如果需要对备注信息进行反查 + if (admin.getRemark() != null && !admin.getRemark().isEmpty()) { + String chineseRemark = translationService.findChineseSimplifiedByTranslation( + admin.getRemark(), languageCode); + admin.setRemark(chineseRemark); + } + } + } + + /** * 将翻译后的字段转换为中文简体 */ private void convertTranslatedFieldsToChinese(Admin admin, String languageCode) {