From bdcbc7300fb1eb24151d4c63693599826af95df9 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Thu, 11 Dec 2025 15:06:52 +0800 Subject: [PATCH] =?UTF-8?q?12=E6=9C=8811=E6=97=A5=E7=8E=B0=E9=87=91?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=8C=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86=EF=BC=8C=E9=A2=91?= =?UTF-8?q?=E9=81=93=E7=AE=A1=E7=90=86=EF=BC=8C=E6=B4=BB=E5=8A=A8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=9A=84=E5=A4=9A=E8=AF=AD=E8=A8=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/coin/GeneralController.java | 128 +++++--- .../controller/coin/HistoryRecordController.java | 129 ++++++-- .../demo/controller/coin/PermissionController.java | 283 ++++++++++++++++-- .../coin/RechargeActivityCenterController.java | 228 ++++++++++++--- .../demo/controller/coin/RoleController.java | 325 +++++++++++++++++++-- 5 files changed, 934 insertions(+), 159 deletions(-) diff --git a/src/main/java/com/example/demo/controller/coin/GeneralController.java b/src/main/java/com/example/demo/controller/coin/GeneralController.java index cb2fbc3..c60c9f0 100644 --- a/src/main/java/com/example/demo/controller/coin/GeneralController.java +++ b/src/main/java/com/example/demo/controller/coin/GeneralController.java @@ -1,6 +1,5 @@ package com.example.demo.controller.coin; -import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Rate; import com.example.demo.domain.vo.coin.AdminVo; import com.example.demo.domain.vo.coin.Result; @@ -33,7 +32,6 @@ public class GeneralController { @Autowired private GeneralService generalService; - // 注入多语言转换工具类 @Autowired private LanguageTranslationUtil languageTranslationUtil; @@ -42,47 +40,91 @@ public class GeneralController { // @Log("获取全部地区") @PostMapping("/market") - public Result getMarket() - { + public Result getMarket(@RequestHeader(defaultValue = "zh_CN") String lang) { List list = generalService.getMarket(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedMarketNamesToChinese(list, languageCode); + } + + // 对地区名称进行多语言转换 + translateMarketNames(list, lang); return Result.success(list); } + //获取用户地区权限列表 // @Log("获取用户地区权限列表") @PostMapping("/adminMarkets") - public Result getAdminMarkets(@RequestBody AdminVo adminVo) throws Exception { + public Result getAdminMarkets(@RequestBody AdminVo adminVo, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { String account = adminVo.getAccount(); List list = generalService.getAdminMarket(account); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedMarketNamesToChinese(list, languageCode); + } + + // 对地区名称进行多语言转换 + translateMarketNames(list, lang); return Result.success(list); } + //获取角色地区权限 // @Log("获取角色地区权限") @PostMapping("/roleMarket") - public Result getroleMarkets(@RequestBody RoleVo roleVo) throws Exception { + public Result getroleMarkets(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { List market = generalService.getRoleMarket(roleVo.getId()); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedMarketNamesToChinese(market, languageCode); + } + + // 对地区名称进行多语言转换 + translateMarketNames(market, lang); return Result.success(market); } + //获取全部的角色地区 // @Log("获取全部的角色地区") @PostMapping("/allRoleMarket") - public Result getAllRoleMarket(){ + public Result getAllRoleMarket(@RequestHeader(defaultValue = "zh_CN") String lang) { List list = generalService.getAllRoleMarket(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedMarketNamesToChinese(list, languageCode); + } + + // 对地区名称进行多语言转换 + translateMarketNames(list, lang); return Result.success(list); } + // @Log("获取平台信息") @PostMapping("/platform") - public Result getPlatform(@RequestHeader(defaultValue = "zh_CN") String lang) - { + public Result getPlatform() { List list = generalService.getPlatform(); -// // 对平台名称进行多语言转换 -// translatePlatformNames(list, lang); return Result.success(list); } + //获取商品名称 // @Log("获取商品名称") @PostMapping("/goods") - public Result getGoods(@RequestHeader(defaultValue = "zh_CN") String lang) - { + public Result getGoods(@RequestHeader(defaultValue = "zh_CN") String lang) { // 解析语言代码 String languageCode = parseLanguageCode(lang); @@ -97,20 +139,18 @@ public class GeneralController { translateGoodsNames(list, lang); return Result.success(list); } + //获取活动名称 // @Log("获取活动名称") @PostMapping("/activity") - public Result getActivity(@RequestHeader(defaultValue = "zh_CN") String lang) - { + public Result getActivity() { List list = generalService.getActivity(); -// // 对活动名称进行多语言转换 -// translateActivityNames(list, lang); return Result.success(list); } + //获取汇率 @PostMapping("/getRate") - public Result getRate(@RequestHeader(defaultValue = "zh_CN") String lang) - { + public Result getRate(@RequestHeader(defaultValue = "zh_CN") String lang) { // 解析语言代码 String languageCode = parseLanguageCode(lang); @@ -134,6 +174,18 @@ public class GeneralController { } /** + * 转换地区名称为指定语言 + */ + private void translateMarketNames(List marketNames, String lang) { + if (marketNames != null && !marketNames.isEmpty()) { + for (int i = 0; i < marketNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(marketNames.get(i), lang); + marketNames.set(i, translatedName); + } + } + } + + /** * 转换商品名称为指定语言 */ private void translateGoodsNames(List goodsNames, String lang) { @@ -145,30 +197,6 @@ public class GeneralController { } } -// /** -// * 转换平台名称为指定语言 -// */ -// private void translatePlatformNames(List platformNames, String lang) { -// if (platformNames != null && !platformNames.isEmpty()) { -// for (int i = 0; i < platformNames.size(); i++) { -// String translatedName = languageTranslationUtil.translate(platformNames.get(i), lang); -// platformNames.set(i, translatedName); -// } -// } -// } - -// /** -// * 转换活动名称为指定语言 -// */ -// private void translateActivityNames(List activityNames, String lang) { -// if (activityNames != null && !activityNames.isEmpty()) { -// for (int i = 0; i < activityNames.size(); i++) { -// String translatedName = languageTranslationUtil.translate(activityNames.get(i), lang); -// activityNames.set(i, translatedName); -// } -// } -// } - /** * 转换汇率名称为指定语言 */ @@ -182,6 +210,7 @@ public class GeneralController { } } } + /** * 解析语言代码 */ @@ -229,4 +258,17 @@ public class GeneralController { } } + /** + * 将翻译后的地区名称转换为中文简体 + */ + private void convertTranslatedMarketNamesToChinese(List marketNames, String languageCode) { + if (marketNames != null && !marketNames.isEmpty()) { + for (int i = 0; i < marketNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + marketNames.get(i), languageCode); + marketNames.set(i, chineseName); + } + } + } + } diff --git a/src/main/java/com/example/demo/controller/coin/HistoryRecordController.java b/src/main/java/com/example/demo/controller/coin/HistoryRecordController.java index 946316b..8d92efc 100644 --- a/src/main/java/com/example/demo/controller/coin/HistoryRecordController.java +++ b/src/main/java/com/example/demo/controller/coin/HistoryRecordController.java @@ -1,26 +1,20 @@ package com.example.demo.controller.coin; -import com.example.demo.Util.JWTUtil; import com.example.demo.config.interfac.Log; -import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.coin.HistoryRecord; -import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.coin.HistoryRecordService; -import jakarta.servlet.http.HttpServletRequest; +import com.example.demo.Util.LanguageTranslationUtil; +import com.example.demo.service.coin.TranslationService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import java.util.Arrays; -import java.util.List; /** * @program: gold-java @@ -40,54 +34,143 @@ public class HistoryRecordController { @Autowired private HistoryRecordService historyRecordService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //获取旧的历史记录 @Log("获取旧的历史记录") @RequestMapping("/getOldHistoryRecord") - public Result getOldHistoryRecord(@RequestBody HistoryRecord historyRecord){ + public Result getOldHistoryRecord(@RequestBody HistoryRecord historyRecord, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(); + } + //页码校验 if (ObjectUtils.isEmpty(historyRecord.getPageNum())) { - return Result.error("页码数为空!"); + String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); + return Result.error(errorMsg); } //页面大小校验 if (ObjectUtils.isEmpty(historyRecord.getPageSize())) { - return Result.error("页大小为空!"); + String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); + return Result.error(errorMsg); } if((historyRecord.getJwcode()==null|| historyRecord.getJwcode().isEmpty())&&(historyRecord.getName()==null|| historyRecord.getName().isEmpty())){ -// return Result.success(historyRecordService.getOldHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); - return Result.error("姓名,精网号不能都为空"); + String errorMsg = languageTranslationUtil.translate("姓名,精网号不能都为空", lang); + return Result.error(errorMsg); } else { - return Result.success(historyRecordService.getOldHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); + Result result = Result.success(historyRecordService.getOldHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateHistoryRecords(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.getMessage()); + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg + ": " + e.getMessage()); } } + //获取新的历史记录 @Log("获取新的历史记录") @RequestMapping("/getNewHistoryRecord") - public Result getNewHistoryRecord(@RequestBody HistoryRecord historyRecord){ + public Result getNewHistoryRecord(@RequestBody HistoryRecord historyRecord, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(); + } + //页码校验 if (ObjectUtils.isEmpty(historyRecord.getPageNum())) { - return Result.error("页码数为空!"); + String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); + return Result.error(errorMsg); } //页面大小校验 if (ObjectUtils.isEmpty(historyRecord.getPageSize())) { - return Result.error("页大小为空!"); + String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); + return Result.error(errorMsg); } if((historyRecord.getJwcode()==null|| historyRecord.getJwcode().isEmpty())&&(historyRecord.getName()==null|| historyRecord.getName().isEmpty())){ -// return Result.success(historyRecordService.getNewHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); - return Result.error("姓名,精网号不能都为空"); + String errorMsg = languageTranslationUtil.translate("姓名,精网号不能都为空", lang); + return Result.error(errorMsg); } else { - return Result.success(historyRecordService.getNewHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); + Result result = Result.success(historyRecordService.getNewHistoryRecord(historyRecord.getPageNum(), historyRecord.getPageSize(),historyRecord)); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateHistoryRecords(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.getMessage()); + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg + ": " + e.getMessage()); + } + } + + /** + * 转换历史记录的多语言字段 + */ + private void translateHistoryRecords(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (HistoryRecord record : pageInfo.getList()) { + // 翻译更新类型 + if (record.getUpdateType() != null) { + record.setUpdateType(languageTranslationUtil.translate(record.getUpdateType(), lang)); + } + // 翻译备注 + if (record.getRemark() != null) { + record.setRemark(languageTranslationUtil.translate(record.getRemark(), lang)); + } + } + } + } + + /** + * 解析语言代码 + */ + private String parseLanguageCode(String langHeader) { + if (langHeader == null || langHeader.isEmpty()) { + return "zh"; + } + // 处理类似 "en-US" 或 "zh-TW" 的情况 + if (langHeader.contains("-")) { + String[] parts = langHeader.split("-"); + // 特殊处理中文繁体 + if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) { + return "zh_TW"; + } + return parts[0].toLowerCase(); } + return langHeader.toLowerCase(); + } + + /** + * 将查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedFieldsToChinese() { + } } diff --git a/src/main/java/com/example/demo/controller/coin/PermissionController.java b/src/main/java/com/example/demo/controller/coin/PermissionController.java index 098d23d..f16c98d 100644 --- a/src/main/java/com/example/demo/controller/coin/PermissionController.java +++ b/src/main/java/com/example/demo/controller/coin/PermissionController.java @@ -1,6 +1,7 @@ package com.example.demo.controller.coin; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.AdminRole; @@ -8,9 +9,11 @@ import com.example.demo.domain.vo.coin.AdminVo; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.coin.PermissionService; +import com.example.demo.service.coin.TranslationService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -33,19 +36,55 @@ import java.util.List; @CrossOrigin public class PermissionController { private final PermissionService permissionService; -// @Log("获取职位名称列表") + + // 注入多语言转换工具类 + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + + // @Log("获取职位名称列表") @PostMapping("/getposition") - public Result getposition(@RequestBody String token){ - return Result.success(permissionService.getposition(token)); + public Result getposition(@RequestBody String token, @RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List positions = permissionService.getposition(token); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 对职位名称进行多语言转换 + translatePositions(positions, lang); + + return Result.success(positions); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取职位列表失败", lang); + return Result.error(errorMsg); + } } -// @Log("获取市场名称列表") + + // @Log("获取市场名称列表") @PostMapping("/getmarket") - public Result getmarket(@RequestBody String token){ - return Result.success(permissionService.getmarket(token)); + public Result getmarket(@RequestBody String token, @RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List markets = permissionService.getmarket(token); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 对市场名称进行多语言转换 + translateMarkets(markets, lang); + + return Result.success(markets); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取市场列表失败", lang); + return Result.error(errorMsg); + } } + @Log("获取用户列表") @PostMapping("/getPermission") - public Result getPermission(@RequestBody Page page){ + public Result getPermission(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang){ try { //解token权限 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); @@ -56,58 +95,250 @@ public class PermissionController { page.getPermission().setMarkets(list); } else{ - return Result.error("角色为空"); + String errorMsg = languageTranslationUtil.translate("角色为空", lang); + return Result.error(errorMsg); } + + Result result = Result.success(permissionService.getpermission(page.getPageNum(), page.getPageSize(), page.getPermission())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = + (com.github.pagehelper.PageInfo) result.getData(); + translatePermissions(pageInfo, lang); + } + + return result; } catch (Exception e) { e.printStackTrace(); - return Result.error("获取地区失败"); + String errorMsg = languageTranslationUtil.translate("获取地区失败", lang); + return Result.error(errorMsg); } - return Result.success(permissionService.getpermission(page.getPageNum(), page.getPageSize(), page.getPermission())); } + //新增用户 @Log("新增用户") @PostMapping("/addPermission") - public Result addPermission(@RequestBody Admin admin) throws Exception { -// System.out.println( admin); + public Result addPermission(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { try { - return Result.success(permissionService.addpermission(admin)); + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedAdminFieldsToChinese(admin, languageCode); + } + + Integer result = permissionService.addpermission(admin); + String successMsg = languageTranslationUtil.translate("添加成功", lang); + return Result.success(successMsg); } catch (Exception e) { - log.error(Arrays.toString(e.getStackTrace())); - return Result.error(e.getMessage()); + log.error(Arrays.toString(e.getStackTrace())); + String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); + return Result.error(errorMsg); } } + //编辑用户 @Log("编辑用户") @PostMapping("/updateAdmin") - public Result updateAdmin(@RequestBody AdminVo adminVo) throws Exception { + public Result updateAdmin(@RequestBody AdminVo adminVo, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { try { - return Result.success(permissionService.updateAdmin(adminVo)); + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedAdminVoFieldsToChinese(adminVo, languageCode); + } + + Result result = permissionService.updateAdmin(adminVo); + String successMsg = languageTranslationUtil.translate("更新成功", lang); + return Result.success(successMsg); } catch (Exception e) { log.error(Arrays.toString(e.getStackTrace())); - return Result.error(e.getMessage()); + String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); + return Result.error(errorMsg); } } + @Log("获取角色列表") @PostMapping("/getRole") - public Result getRole(@RequestBody String token){ - return Result.success(permissionService.getRole(token)); + public Result getRole(@RequestBody String token, @RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List roles = permissionService.getRole(token); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 对角色名称进行多语言转换 + translateRoles(roles, lang); + + return Result.success(roles); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取角色列表失败", lang); + return Result.error(errorMsg); + } } + @Log("删除用户") @PostMapping("/deleteAdmin") - public Result deleteAdmin(@RequestBody Admin admin){ - return Result.success(permissionService.deleteAdmin(admin.getId())); + public Result deleteAdmin(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh_CN") String lang){ + try { + Integer result = permissionService.deleteAdmin(admin.getId()); + String successMsg = languageTranslationUtil.translate("删除成功", lang); + return Result.success(successMsg); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("删除失败", lang); + return Result.error(errorMsg); + } } + @Log("更新用户角色") @PostMapping("/updateAdminRole") - public Result updateAdminRole(@RequestBody AdminRole adminrole){ - return Result.success(permissionService.updateAdminRole(adminrole)); + public Result updateAdminRole(@RequestBody AdminRole adminrole, @RequestHeader(defaultValue = "zh_CN") String lang){ + try { + Integer result = permissionService.updateAdminRole(adminrole); + String successMsg = languageTranslationUtil.translate("更新成功", lang); + return Result.success(successMsg); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("更新失败", lang); + return Result.error(errorMsg); + } } + @Log("更新用户权限") @PostMapping("/upadatePermission") - public Result upadatePermission(@RequestBody Admin admin) throws Exception { - return Result.success(permissionService.upadatePermission(admin)); + public Result upadatePermission(@RequestBody Admin admin, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { + try { + Integer result = permissionService.upadatePermission(admin); + String successMsg = languageTranslationUtil.translate("更新成功", lang); + return Result.success(successMsg); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("更新失败", lang); + return Result.error(errorMsg); + } + } + + /** + * 转换权限列表的多语言字段 + */ + private void translatePermissions(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (com.example.demo.domain.vo.coin.Permission permission : pageInfo.getList()) { + // 翻译市场名称 + if (permission.getMarket() != null) { + permission.setMarket(languageTranslationUtil.translate(permission.getMarket(), lang)); + } + // 翻译职位 + if (permission.getPostiton() != null) { + permission.setPostiton(languageTranslationUtil.translate(permission.getPostiton(), lang)); + } + // 翻译角色名称 + if (permission.getRoleName() != null) { + permission.setRoleName(languageTranslationUtil.translate(permission.getRoleName(), lang)); + } + } + } + } + + /** + * 转换职位名称为指定语言 + */ + private void translatePositions(List positions, String lang) { + if (positions != null && !positions.isEmpty()) { + for (int i = 0; i < positions.size(); i++) { + String translatedName = languageTranslationUtil.translate(positions.get(i), lang); + positions.set(i, translatedName); + } + } + } + + /** + * 转换市场名称为指定语言 + */ + private void translateMarkets(List markets, String lang) { + if (markets != null && !markets.isEmpty()) { + for (int i = 0; i < markets.size(); i++) { + String translatedName = languageTranslationUtil.translate(markets.get(i), lang); + markets.set(i, translatedName); + } + } } + /** + * 转换角色名称为指定语言 + */ + private void translateRoles(List roles, String lang) { + if (roles != null && !roles.isEmpty()) { + for (com.example.demo.domain.entity.Role role : roles) { + if (role.getRoleName() != null) { + role.setRoleName(languageTranslationUtil.translate(role.getRoleName(), lang)); + } + } + } + } + + /** + * 解析语言代码 + */ + private String parseLanguageCode(String langHeader) { + if (langHeader == null || langHeader.isEmpty()) { + return "zh"; + } + // 处理类似 "en-US" 或 "zh-TW" 的情况 + if (langHeader.contains("-")) { + String[] parts = langHeader.split("-"); + // 特殊处理中文繁体 + if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) { + return "zh_TW"; + } + return parts[0].toLowerCase(); + } + return langHeader.toLowerCase(); + } + + /** + * 将管理员查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedAdminFieldsToChinese(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); + } + } + } + + /** + * 将管理员VO查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedAdminVoFieldsToChinese(AdminVo adminVo, String languageCode) { + if (adminVo != null) { + // 转换职位 + if (adminVo.getPostiton() != null && !adminVo.getPostiton().isEmpty()) { + String chinesePosition = translationService.findChineseSimplifiedByTranslation( + adminVo.getPostiton(), languageCode); + adminVo.setPostiton(chinesePosition); + } + + // 转换备注 + if (adminVo.getRemark() != null && !adminVo.getRemark().isEmpty()) { + String chineseRemark = translationService.findChineseSimplifiedByTranslation( + adminVo.getRemark(), languageCode); + adminVo.setRemark(chineseRemark); + } + } + } } diff --git a/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java b/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java index 2d42566..ed77c18 100644 --- a/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java +++ b/src/main/java/com/example/demo/controller/coin/RechargeActivityCenterController.java @@ -5,6 +5,8 @@ import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.RechargeActivity; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.coin.RechargeActivityCenterService; +import com.example.demo.Util.LanguageTranslationUtil; +import com.example.demo.service.coin.TranslationService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -32,6 +34,12 @@ public class RechargeActivityCenterController { @Autowired private RechargeActivityCenterService rechargeActivityCenterService; + // 注入多语言转换工具类 + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; /** * 导出用户权限数据 @@ -43,25 +51,47 @@ public class RechargeActivityCenterController { */ @Log("条件查询充值活动") @PostMapping("/queryActivity") - public Result queryActivity(@RequestBody Page page) { + public Result queryActivity(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedQueryFieldsToChinese(page.getRechargeActivity(), languageCode); + } + //校验参数 if (ObjectUtils.isEmpty(page.getPageNum())) { - return Result.error("页码数为空!"); + String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); + return Result.error(errorMsg); } if (ObjectUtils.isEmpty(page.getPageSize())) { - return Result.error("页大小为空!"); + String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); + return Result.error(errorMsg); } if (page.getRechargeActivity() == null) { - return Result.error("查询失败:活动信息不能为空"); + String errorMsg = languageTranslationUtil.translate("查询失败:活动信息不能为空", lang); + return Result.error(errorMsg); } - return Result.success(rechargeActivityCenterService.queryActivity(page.getPageNum(), page.getPageSize(),page.getRechargeActivity())); + + Result result = Result.success(rechargeActivityCenterService.queryActivity(page.getPageNum(), page.getPageSize(), page.getRechargeActivity())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateRechargeActivities(pageInfo, lang); + } + + return result; } catch (NullPointerException e) { log.error("查询活动失败:空指针异常", e); - return Result.error("查询失败:数据为空"); + String errorMsg = languageTranslationUtil.translate("查询失败:数据为空", lang); + return Result.error(errorMsg); } catch (IllegalArgumentException e) { log.error("查询活动失败:参数异常", e); - return Result.error("查询失败:" + e.getMessage()); + String errorMsg = languageTranslationUtil.translate("查询失败:" + e.getMessage(), lang); + return Result.error(errorMsg); } } @@ -75,41 +105,60 @@ public class RechargeActivityCenterController { */ @Log("新增充值活动") @PostMapping("/addActivity") - public Result addActivity(@RequestBody RechargeActivity activity) { + public Result addActivity(@RequestBody RechargeActivity activity, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedActivityFieldsToChinese(activity, languageCode); + } + if (activity == null) { - return Result.error("添加失败:活动信息不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动信息不能为空", lang); + return Result.error(errorMsg); } if (activity.getActivityName() == null || activity.getActivityName().trim().isEmpty()) { - return Result.error("添加失败:活动名称不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动名称不能为空", lang); + return Result.error(errorMsg); } if (activity.getBusinessBelong() == null || activity.getBusinessBelong().trim().isEmpty()) { - return Result.error("添加失败:业绩归属地不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:业绩归属地不能为空", lang); + return Result.error(errorMsg); }else if (activity.getBusinessBelong().equals("活动归属地")) { if (activity.getArea() == null || activity.getArea().trim().isEmpty()) { - return Result.error("添加失败:地区不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:地区不能为空", lang); + return Result.error(errorMsg); } } if (activity.getStartTime() == null) { - return Result.error("添加失败:活动开始时间不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动开始时间不能为空", lang); + return Result.error(errorMsg); } if (activity.getEndTime() == null) { - return Result.error("添加失败:活动结束时间不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动结束时间不能为空", lang); + return Result.error(errorMsg); } if (activity.getEndTime().before(activity.getStartTime())) { - return Result.error("添加失败:活动结束时间必须晚于活动开始时间"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动结束时间必须晚于活动开始时间", lang); + return Result.error(errorMsg); } if (activity.getCreator() == null || activity.getCreator().trim().isEmpty()) { - return Result.error("添加失败:添加人不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:添加人不能为空", lang); + return Result.error(errorMsg); } rechargeActivityCenterService.addActivity(activity); - return Result.success("添加活动成功"); + String successMsg = languageTranslationUtil.translate("添加活动成功", lang); + return Result.success(successMsg); } catch (NullPointerException e) { log.error("添加活动失败:空指针异常", e); - return Result.error("添加失败:数据为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:数据为空", lang); + return Result.error(errorMsg); } catch (IllegalArgumentException e) { log.error("添加活动失败:参数异常", e); - return Result.error("添加失败:" + e.getMessage()); + String errorMsg = languageTranslationUtil.translate("添加失败:" + e.getMessage(), lang); + return Result.error(errorMsg); } } @@ -123,44 +172,64 @@ public class RechargeActivityCenterController { */ @Log("更新充值活动") @PostMapping("/updateActivity") - public Result updateActivity(@RequestBody RechargeActivity activity) { + public Result updateActivity(@RequestBody RechargeActivity activity, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedActivityFieldsToChinese(activity, languageCode); + } + if (activity == null) { - return Result.error("添加失败:活动信息不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动信息不能为空", lang); + return Result.error(errorMsg); } if (activity.getId() == null) { - return Result.error("添加失败:活动ID不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动ID不能为空", lang); + return Result.error(errorMsg); } if (activity.getActivityName() == null || activity.getActivityName().trim().isEmpty()) { - return Result.error("添加失败:活动名称不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动名称不能为空", lang); + return Result.error(errorMsg); } if (activity.getBusinessBelong() == null || activity.getBusinessBelong().trim().isEmpty()) { - return Result.error("添加失败:业绩归属地不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:业绩归属地不能为空", lang); + return Result.error(errorMsg); }else if (activity.getBusinessBelong().equals("活动归属地")) { if (activity.getArea() == null || activity.getArea().trim().isEmpty()) { - return Result.error("添加失败:地区不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:地区不能为空", lang); + return Result.error(errorMsg); } } if (activity.getStartTime() == null) { - return Result.error("添加失败:活动开始时间不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动开始时间不能为空", lang); + return Result.error(errorMsg); } if (activity.getEndTime() == null) { - return Result.error("添加失败:活动结束时间不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动结束时间不能为空", lang); + return Result.error(errorMsg); } if (activity.getEndTime().before(activity.getStartTime())) { - return Result.error("添加失败:活动结束时间必须晚于活动开始时间"); + String errorMsg = languageTranslationUtil.translate("添加失败:活动结束时间必须晚于活动开始时间", lang); + return Result.error(errorMsg); } if (activity.getCreator() == null || activity.getCreator().trim().isEmpty()) { - return Result.error("添加失败:添加人不能为空"); + String errorMsg = languageTranslationUtil.translate("添加失败:添加人不能为空", lang); + return Result.error(errorMsg); } rechargeActivityCenterService.updateActivity(activity); - return Result.success("更新活动成功"); + String successMsg = languageTranslationUtil.translate("更新活动成功", lang); + return Result.success(successMsg); } catch (NullPointerException e) { log.error("更新活动失败:空指针异常", e); - return Result.error("更新失败:数据为空"); + String errorMsg = languageTranslationUtil.translate("更新失败:数据为空", lang); + return Result.error(errorMsg); } catch (IllegalArgumentException e) { log.error("更新活动失败:参数异常", e); - return Result.error("更新失败:" + e.getMessage()); + String errorMsg = languageTranslationUtil.translate("更新失败:" + e.getMessage(), lang); + return Result.error(errorMsg); } } @@ -174,19 +243,102 @@ public class RechargeActivityCenterController { */ @Log("删除充值活动") @PostMapping("/deleteActivity") - public Result deleteActivity(@RequestBody RechargeActivity activity) { + public Result deleteActivity(@RequestBody RechargeActivity activity, @RequestHeader(defaultValue = "zh_CN") String lang) { try { if (activity.getId() == null) { - return Result.error("删除失败:活动ID不能为空"); + String errorMsg = languageTranslationUtil.translate("删除失败:活动ID不能为空", lang); + return Result.error(errorMsg); } rechargeActivityCenterService.deleteActivity(activity); - return Result.success("删除活动成功"); + String successMsg = languageTranslationUtil.translate("删除活动成功", lang); + return Result.success(successMsg); } catch (NullPointerException e) { log.error("删除活动失败:空指针异常", e); - return Result.error("删除失败:数据为空"); + String errorMsg = languageTranslationUtil.translate("删除失败:数据为空", lang); + return Result.error(errorMsg); } catch (IllegalArgumentException e) { log.error("删除活动失败:参数异常", e); - return Result.error("删除失败:" + e.getMessage()); + String errorMsg = languageTranslationUtil.translate("删除失败:" + e.getMessage(), lang); + return Result.error(errorMsg); + } + } + + /** + * 转换充值活动的多语言字段 + */ + private void translateRechargeActivities(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (RechargeActivity activity : pageInfo.getList()) { + // 翻译业务归属 + if (activity.getBusinessBelong() != null) { + activity.setBusinessBelong(languageTranslationUtil.translate(activity.getBusinessBelong(), lang)); + } + // 翻译地区名称 + if (activity.getAreaName() != null) { + activity.setAreaName(languageTranslationUtil.translate(activity.getAreaName(), lang)); + } + } + } + } + + /** + * 解析语言代码 + */ + private String parseLanguageCode(String langHeader) { + if (langHeader == null || langHeader.isEmpty()) { + return "zh"; + } + // 处理类似 "en-US" 或 "zh-TW" 的情况 + if (langHeader.contains("-")) { + String[] parts = langHeader.split("-"); + // 特殊处理中文繁体 + if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) { + return "zh_TW"; + } + return parts[0].toLowerCase(); + } + return langHeader.toLowerCase(); + } + + /** + * 将查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedQueryFieldsToChinese(RechargeActivity activity, String languageCode) { + if (activity != null) { + // 转换业务归属 + if (activity.getBusinessBelong() != null && !activity.getBusinessBelong().isEmpty()) { + String chineseBelong = translationService.findChineseSimplifiedByTranslation( + activity.getBusinessBelong(), languageCode); + activity.setBusinessBelong(chineseBelong); + } + + // 转换地区 + if (activity.getAreaName() != null && !activity.getAreaName().isEmpty()) { + String chineseArea = translationService.findChineseSimplifiedByTranslation( + activity.getAreaName(), languageCode); + activity.setAreaName(chineseArea); + } + } + } + + /** + * 将活动字段中的翻译字段转换为中文简体 + */ + private void convertTranslatedActivityFieldsToChinese(RechargeActivity activity, String languageCode) { + if (activity != null) { + // 转换业务归属 + if (activity.getBusinessBelong() != null && !activity.getBusinessBelong().isEmpty()) { + String chineseBelong = translationService.findChineseSimplifiedByTranslation( + activity.getBusinessBelong(), languageCode); + activity.setBusinessBelong(chineseBelong); + } + + // 转换地区 + if (activity.getArea() != null && !activity.getArea().isEmpty()) { + String chineseArea = translationService.findChineseSimplifiedByTranslation( + activity.getArea(), languageCode); + activity.setArea(chineseArea); + } } } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/demo/controller/coin/RoleController.java b/src/main/java/com/example/demo/controller/coin/RoleController.java index 9d1f8b0..fa98ff3 100644 --- a/src/main/java/com/example/demo/controller/coin/RoleController.java +++ b/src/main/java/com/example/demo/controller/coin/RoleController.java @@ -1,12 +1,14 @@ package com.example.demo.controller.coin; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.config.interfac.Log; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.domain.vo.coin.RoleVo; import com.example.demo.service.coin.RoleService; +import com.example.demo.service.coin.TranslationService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,63 +40,163 @@ public class RoleController { @Autowired private RoleService roleService; + // 注入多语言转换工具类 + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //新增角色 @Log("新增角色") @PostMapping("/add") - public Result addRole(@RequestBody RoleVo roleVo) { + public Result addRole(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedRoleFieldsToChinese(roleVo, languageCode); + } - return roleService.addRole(roleVo); + Result result = roleService.addRole(roleVo); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200) { + String successMsg = languageTranslationUtil.translate("创建成功", lang); + return Result.success(successMsg); + } else { + String errorMsg = languageTranslationUtil.translate(result.getMsg(), lang); + return Result.error(errorMsg); + } + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("添加失败", lang); + return Result.error(errorMsg); + } } + //新增角色二期替补 @Log("新增角色二期替补") @PostMapping("/add2") - public Result addRole2(@RequestBody RoleVo roleVo) { + public Result addRole2(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedRoleFieldsToChinese(roleVo, languageCode); + } - return roleService.addRole2(roleVo); + Result result = roleService.addRole2(roleVo); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200) { + String successMsg = languageTranslationUtil.translate("创建成功", lang); + return Result.success(successMsg); + } else { + String errorMsg = languageTranslationUtil.translate(result.getMsg(), lang); + return Result.error(errorMsg); + } + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("添加失败", lang); + return Result.error(errorMsg); + } } + //删除角色 @Log("删除角色") @PostMapping("/delete") - public Result deleteRole(@RequestBody RoleVo roleVo) { + public Result deleteRole(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + Result result = roleService.deleteRole(roleVo); - return roleService.deleteRole(roleVo); + // 对返回结果进行多语言转换 + if (result.getCode() == 200) { + String successMsg = languageTranslationUtil.translate("删除成功", lang); + return Result.success(successMsg); + } else { + String errorMsg = languageTranslationUtil.translate(result.getMsg(), lang); + return Result.error(errorMsg); + } + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("删除失败", lang); + return Result.error(errorMsg); + } } //查找全部角色 @Log("查询全部角色") @PostMapping("/selectAll") - public Result selectRole() { - return roleService.selectAllRole(); + public Result selectRole(@RequestHeader(defaultValue = "zh_CN") String lang) { + try { + Result result = roleService.selectAllRole(); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof List) { + List roleList = (List) result.getData(); + translateRoleList(roleList, lang); + } + + return result; + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查找失败", lang); + return Result.error(errorMsg); + } } + //获取上级角色的下属角色列表 @Log("获取当前角色的下属角色列表") @PostMapping("/selectSub") - public Result selectSub(@RequestBody RoleVo roleVo) { - Integer id = roleVo.getId(); - List list=roleService.selectSubRole(id); - return Result.success(list); + public Result selectSub(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + Integer id = roleVo.getId(); + List list = roleService.selectSubRole(id); + + // 对返回结果进行多语言转换 + translateRoleList(list, lang); + + return Result.success(list); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg); + } } + //获取当前角色的上级角色 -// @Log("获取当前角色的上级角色") @PostMapping("/selectFather") - public Result selectFather(@RequestBody RoleVo roleVo) { - Integer id = roleVo.getId(); - RoleVo role = roleService.selectFather(id); - return Result.success(role); + public Result selectFather(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + Integer id = roleVo.getId(); + RoleVo role = roleService.selectFather(id); + + // 对返回结果进行多语言转换 + if (role != null) { + translateSingleRole(role, lang); + } + + return Result.success(role); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg); + } } //角色明细筛选 @Log("角色明细筛选") @PostMapping("/selectBy") - public Result selectBy(@RequestBody Page page) { + public Result selectBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { //页码校验 if (ObjectUtils.isEmpty(page.getPageNum())) { - return Result.error("页码数为空!"); + String errorMsg = languageTranslationUtil.translate("页码数为空!", lang); + return Result.error(errorMsg); } //页面大小校验 if (ObjectUtils.isEmpty(page.getPageSize())) { - return Result.error("页大小为空!"); + String errorMsg = languageTranslationUtil.translate("页大小为空!", lang); + return Result.error(errorMsg); } else { //解token权限 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); @@ -103,33 +205,198 @@ public class RoleController { if (admin != null) { List list = Arrays.asList(admin.getMarkets().split(",")); page.getRoleVo().setMarkets(list); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedRoleVoFieldsToChinese(page.getRoleVo(), languageCode); + } } else{ - return Result.error("角色为空"); + String errorMsg = languageTranslationUtil.translate("角色为空", lang); + return Result.error(errorMsg); } - return Result.success(roleService.selectBy(page.getPageNum(), page.getPageSize(), page.getRoleVo())); + + Result result = Result.success(roleService.selectBy(page.getPageNum(), page.getPageSize(), page.getRoleVo())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateRolePageInfo(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.getMessage()); + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg); } } //查询所有直播渠道 @PostMapping("/getChannel") - public Result getChannel(){ - return Result.success(roleService.getChannel()); + public Result getChannel(@RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List channels = roleService.getChannel(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 对频道名称进行多语言转换 + translateChannels(channels, lang); + + return Result.success(channels); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取频道失败", lang); + return Result.error(errorMsg); + } } @Log("获取频道列表") @PostMapping("/selectChannel") - public Result selectChannel(@RequestBody RoleVo roleVo) { - Integer id = roleVo.getId(); - List list=roleService.selectSubRole(id); - return Result.success(list); + public Result selectChannel(@RequestBody RoleVo roleVo, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + Integer id = roleVo.getId(); + List list = roleService.selectSubRole(id); + + // 对返回结果进行多语言转换 + translateRoleList(list, lang); + + return Result.success(list); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg); + } } + /** + * 转换角色列表的多语言字段 + */ + private void translateRoleList(List roleList, String lang) { + if (roleList != null && !roleList.isEmpty()) { + for (RoleVo role : roleList) { + translateSingleRole(role, lang); + } + } + } + + /** + * 转换单个角色的多语言字段 + */ + private void translateSingleRole(RoleVo role, String lang) { + if (role != null) { + // 翻译角色名称 + if (role.getRoleName() != null) { + role.setRoleName(languageTranslationUtil.translate(role.getRoleName(), lang)); + } + // 翻译市场 + if (role.getMarket() != null) { + role.setMarket(languageTranslationUtil.translate(role.getMarket(), lang)); + } + // 翻译父角色名称 + if (role.getFatherName() != null) { + role.setFatherName(languageTranslationUtil.translate(role.getFatherName(), lang)); + } + // 翻译频道 + if (role.getChannel() != null) { + role.setChannel(languageTranslationUtil.translate(role.getChannel(), lang)); + } + } + } + /** + * 转换角色分页信息的多语言字段 + */ + private void translateRolePageInfo(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (RoleVo role : pageInfo.getList()) { + translateSingleRole(role, lang); + } + } + } + + /** + * 转换频道名称为指定语言 + */ + private void translateChannels(List channels, String lang) { + if (channels != null && !channels.isEmpty()) { + for (int i = 0; i < channels.size(); i++) { + String translatedName = languageTranslationUtil.translate(channels.get(i), lang); + channels.set(i, translatedName); + } + } + } + + /** + * 解析语言代码 + */ + private String parseLanguageCode(String langHeader) { + if (langHeader == null || langHeader.isEmpty()) { + return "zh"; + } + // 处理类似 "en-US" 或 "zh-TW" 的情况 + if (langHeader.contains("-")) { + String[] parts = langHeader.split("-"); + // 特殊处理中文繁体 + if ("zh".equalsIgnoreCase(parts[0]) && "TW".equalsIgnoreCase(parts[1])) { + return "zh_TW"; + } + return parts[0].toLowerCase(); + } + return langHeader.toLowerCase(); + } + + /** + * 将角色查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedRoleFieldsToChinese(RoleVo roleVo, String languageCode) { + if (roleVo != null) { + // 转换角色名称 + if (roleVo.getRoleName() != null && !roleVo.getRoleName().isEmpty()) { + String chineseRoleName = translationService.findChineseSimplifiedByTranslation( + roleVo.getRoleName(), languageCode); + roleVo.setRoleName(chineseRoleName); + } + + // 转换市场 + if (roleVo.getMarket() != null && !roleVo.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + roleVo.getMarket(), languageCode); + roleVo.setMarket(chineseMarket); + } + + // 转换频道 + if (roleVo.getChannel() != null && !roleVo.getChannel().isEmpty()) { + String chineseChannel = translationService.findChineseSimplifiedByTranslation( + roleVo.getChannel(), languageCode); + roleVo.setChannel(chineseChannel); + } + } + } + + /** + * 将角色VO查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedRoleVoFieldsToChinese(RoleVo roleVo, String languageCode) { + if (roleVo != null) { + // 转换角色名称 + if (roleVo.getRoleName() != null && !roleVo.getRoleName().isEmpty()) { + String chineseRoleName = translationService.findChineseSimplifiedByTranslation( + roleVo.getRoleName(), languageCode); + roleVo.setRoleName(chineseRoleName); + } + + // 转换市场 + if (roleVo.getMarket() != null && !roleVo.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + roleVo.getMarket(), languageCode); + roleVo.setMarket(chineseMarket); + } + } + } }