From 35712d1804826daa1a020b801fe48e0d8433ad1f Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Wed, 10 Dec 2025 16:25:39 +0800 Subject: [PATCH] =?UTF-8?q?12=E6=9C=8810=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=E9=87=91=E8=B1=86=E6=A8=A1=E5=9D=97=E5=92=8C=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E5=8F=B0=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/bean/BeanAuditController.java | 143 ++++- .../controller/bean/BeanConsumeController.java | 605 +++++++++++++++++++-- .../controller/bean/BeanRechargeController.java | 298 +++++++++- .../demo/controller/bean/BeanUserController.java | 203 ++++++- .../demo/controller/coin/WorkbenchController.java | 4 - .../serviceImpl/coin/ExportExcelServiceImpl.java | 56 +- 6 files changed, 1194 insertions(+), 115 deletions(-) diff --git a/src/main/java/com/example/demo/controller/bean/BeanAuditController.java b/src/main/java/com/example/demo/controller/bean/BeanAuditController.java index 9d45ce8..91a0dab 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanAuditController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanAuditController.java @@ -1,23 +1,22 @@ package com.example.demo.controller.bean; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.domain.vo.bean.BeanAuditInfo; -import com.example.demo.domain.vo.bean.BeanRechargeInfo; import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.bean.BeanAuditService; +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.*; -import java.util.List; - /** * @program: gold-java * @ClassName BeanAuditController - * @description: + * @description: 金豆审核 * @author: Double * @create: 2025−08-01 11:03 * @Version 1.0 @@ -33,65 +32,169 @@ public class BeanAuditController { @Autowired private BeanAuditService beanAuditService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //审核查找 @PostMapping("/selectBy") - public Result selectBy(@RequestBody Page page) { + public Result selectBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(page.getBeanAuditInfo(), 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); } else { if (page.getBeanAuditInfo().getStatus() == null) { - return Result.error("状态不能为空"); + String errorMsg = languageTranslationUtil.translate("状态不能为空", lang); + return Result.error(errorMsg); } - return Result.success(beanAuditService.selectBy(page.getPageNum(), page.getPageSize(), page.getBeanAuditInfo())); + Result result = Result.success(beanAuditService.selectBy(page.getPageNum(), page.getPageSize(), page.getBeanAuditInfo())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanAuditInfos(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error("请检查筛选数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); + return Result.error(errorMsg); } } @PostMapping("/status1") - public Result updateStatus1(@RequestBody BeanAuditInfo beanAuditInfo) { + public Result updateStatus1(@RequestBody BeanAuditInfo beanAuditInfo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(beanAuditInfo, languageCode); + } + if (ObjectUtils.isEmpty(beanAuditInfo.getId())) { - return Result.error("id不能为空"); + String errorMsg = languageTranslationUtil.translate("id不能为空", lang); + return Result.error(errorMsg); } return beanAuditService.updateStatus1(beanAuditInfo); } catch (Exception e) { e.printStackTrace(); - return Result.error("更新失败,查看id"); + String errorMsg = languageTranslationUtil.translate("更新失败,查看id", lang); + return Result.error(errorMsg); } } @PostMapping("/status2") - public Result updateStatus2(@RequestBody BeanAuditInfo beanAuditInfo) { + public Result updateStatus2(@RequestBody BeanAuditInfo beanAuditInfo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(beanAuditInfo, languageCode); + } + if (ObjectUtils.isEmpty(beanAuditInfo.getId())) { - return Result.error("id不能为空"); + String errorMsg = languageTranslationUtil.translate("id不能为空", lang); + return Result.error(errorMsg); } if (ObjectUtils.isEmpty(beanAuditInfo.getReason())) { - return Result.error("审核意见不能为空"); + String errorMsg = languageTranslationUtil.translate("审核意见不能为空", lang); + return Result.error(errorMsg); } beanAuditService.updateStatus2(beanAuditInfo); - return Result.success(); + String successMsg = languageTranslationUtil.translate("操作成功", lang); + return Result.success(successMsg); } catch (Exception e) { - return Result.error("更新失败,查看id"); + String errorMsg = languageTranslationUtil.translate("更新失败,查看id", lang); + return Result.error(errorMsg); } } //金豆统计 @PostMapping("/statsBean") - public Result statsBean(@RequestBody BeanAuditInfo beanAuditInfo) { + public Result statsBean(@RequestBody BeanAuditInfo beanAuditInfo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(beanAuditInfo, languageCode); + } + GoldBean goldBean = beanAuditService.statsBean(beanAuditInfo); return Result.success(goldBean); } catch (Exception e) { - return Result.error("请检查数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查数据的格式", lang); + return Result.error(errorMsg); + } + } + + /** + * 转换Bean审核信息的多语言字段 + */ + private void translateBeanAuditInfos(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (BeanAuditInfo info : pageInfo.getList()) { + // 翻译市场名称 + if (info.getMarket() != null) { + info.setMarket(languageTranslationUtil.translate(info.getMarket(), 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(BeanAuditInfo beanAuditInfo, String languageCode) { + if (beanAuditInfo != null) { + // 转换市场名称 + if (beanAuditInfo.getMarket() != null && !beanAuditInfo.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + beanAuditInfo.getMarket(), languageCode); + beanAuditInfo.setMarket(chineseMarket); + } } } } diff --git a/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java b/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java index aa8d631..8d955c6 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanConsumeController.java @@ -7,6 +7,8 @@ import com.example.demo.domain.vo.bean.BeanRecharge; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.bean.BeanConsumeService; +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; @@ -18,7 +20,7 @@ import java.util.List; /** * @program: gold-java * @ClassName BeanConsumeController - * @description: + * @description: 金豆消耗 * @author: Ethan * @create: 2025−07-30 11:30 * @Version 1.0 @@ -32,122 +34,647 @@ public class BeanConsumeController { @Autowired private BeanConsumeService beanConsumeService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //获取消费用户分部信息 @PostMapping("/getDept") - public Result getDept(){ - + public Result getDept(@RequestHeader(defaultValue = "zh_CN") String lang){ + try { List deptList = beanConsumeService.getDept(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的分部名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedDeptNamesToChinese(deptList, languageCode); + } + + // 对分部名称进行多语言转换 + translateDeptNames(deptList, lang); + return Result.success(deptList); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取分部信息失败", lang); + return Result.error(errorMsg); + } } //获取直播消费用户分部信息 @PostMapping("/getLiveDept") - public Result getLiveDept(){ - + public Result getLiveDept(@RequestHeader(defaultValue = "zh_CN") String lang){ + try { List deptList = beanConsumeService.getLiveDept(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的分部名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedLiveDeptNamesToChinese(deptList, languageCode); + } + + // 对分部名称进行多语言转换 + translateLiveDeptNames(deptList, lang); + return Result.success(deptList); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取直播分部信息失败", lang); + return Result.error(errorMsg); + } } - //减少金豆 @PostMapping("/reduce") - public Result reduce(@RequestBody BeanConsume consume) { + public Result reduce(@RequestBody BeanConsume consume, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedConsumeFieldsToChinese(consume, languageCode); + } + return beanConsumeService.reduce(consume); } catch (Exception e) { - return Result.error("减少失败"); + String errorMsg = languageTranslationUtil.translate("减少失败", lang); + return Result.error(errorMsg); } } + //筛选查询直播消费记录 @Log("查询直播消费记录") @PostMapping("/selectLiveBy") - public Result selectLiveBy(@RequestBody Page page){ + public Result selectLiveBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedLiveFieldsToChinese(page.getBeanConsumeLive(), 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); } else { + Result result = Result.success(beanConsumeService.selectLiveBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeLive())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanConsumeLives(pageInfo, lang); + } - return Result.success(beanConsumeService.selectLiveBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeLive())); + return result; } } catch (Exception e) { e.printStackTrace(); - //返回堆栈信息 - return Result.error(e.toString()); - }} - //筛选查询铁粉消费记录 + String errorMsg = languageTranslationUtil.translate("查询直播消费记录失败", lang); + return Result.error(errorMsg); + } + } + + //筛选查询铁粉消费记录 @Log("查询铁粉消费记录") @PostMapping("/selectFanBy") - public Result selectFanBy(@RequestBody Page page){ + public Result selectFanBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFanFieldsToChinese(page.getBeanConsumeFan(), 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); } else { + Result result = Result.success(beanConsumeService.selectFanBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeFan())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanConsumeFans(pageInfo, lang); + } - return Result.success(beanConsumeService.selectFanBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeFan())); + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.toString()); - }} + String errorMsg = languageTranslationUtil.translate("查询铁粉消费记录失败", lang); + return Result.error(errorMsg); + } + } //筛选查询文章消费记录 @Log("查询文章消费记录") @PostMapping("/selectArticleBy") - public Result selectArticleBy(@RequestBody Page page){ + public Result selectArticleBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedArticleFieldsToChinese(page.getBeanConsumeArticle(), 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); } else { + Result result = Result.success(beanConsumeService.selectArticleBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeArticle())); - return Result.success(beanConsumeService.selectArticleBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeArticle())); + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanConsumeArticles(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.toString()); - }} + String errorMsg = languageTranslationUtil.translate("查询文章消费记录失败", lang); + return Result.error(errorMsg); + } + } //筛选查询小黄车消费记录 @Log("查询小黄车消费记录") @PostMapping("/selectCartBy") - public Result selectCartBy(@RequestBody Page page){ + public Result selectCartBy(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang){ try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedCartFieldsToChinese(page.getBeanConsumeCartDTO(), 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); } else { + Result result = Result.success(beanConsumeService.selectCartBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeCartDTO())); - return Result.success(beanConsumeService.selectCartBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeCartDTO())); + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanConsumeCarts(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.toString()); + String errorMsg = languageTranslationUtil.translate("查询小黄车消费记录失败", lang); + return Result.error(errorMsg); } } + //消费合计数 @PostMapping("sumConsumeGold") - public BeanConsumeGold sumConsumeGold(@RequestBody Page page) { + public BeanConsumeGold sumConsumeGold(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedSumFieldsToChinese(page, languageCode); + } - return beanConsumeService.sumConsumeGold( page); + return beanConsumeService.sumConsumeGold(page); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("计算消费合计数失败", lang); + throw new RuntimeException(errorMsg, e); + } } + //查询所有直播礼物 @PostMapping("/getLiveGift") - public Result getLiveGift(){ - return Result.success(beanConsumeService.getLiveGift()); + public Result getLiveGift(@RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List giftList = beanConsumeService.getLiveGift(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的礼物名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedGiftNamesToChinese(giftList, languageCode); + } + + // 对礼物名称进行多语言转换 + translateGiftNames(giftList, lang); + + return Result.success(giftList); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取直播礼物失败", lang); + return Result.error(errorMsg); + } } + //查询所有直播频道 @PostMapping("/getLiveChannel") - public Result getLiveChannel(){ - return Result.success(beanConsumeService.getLiveChannel()); + public Result getLiveChannel(@RequestHeader(defaultValue = "zh_CN") String lang){ + try { + List channelList = beanConsumeService.getLiveChannel(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的频道名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedChannelNamesToChinese(channelList, languageCode); + } + + // 对频道名称进行多语言转换 + translateChannelNames(channelList, lang); + + return Result.success(channelList); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取直播频道失败", lang); + return Result.error(errorMsg); + } + } + + /** + * 转换直播消费记录的多语言字段 + */ + private void translateBeanConsumeLives(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (Object obj : pageInfo.getList()) { + if (obj instanceof com.example.demo.domain.vo.bean.BeanConsumeLive) { + com.example.demo.domain.vo.bean.BeanConsumeLive live = (com.example.demo.domain.vo.bean.BeanConsumeLive) obj; + // 翻译分部名称 + if (live.getDept() != null) { + live.setDept(languageTranslationUtil.translate(live.getDept(), lang)); + } + // 翻译礼物名称 + if (live.getGift() != null) { + live.setGift(languageTranslationUtil.translate(live.getGift(), lang)); + } + // 翻译直播频道 + if (live.getLiveChannel() != null) { + live.setLiveChannel(languageTranslationUtil.translate(live.getLiveChannel(), lang)); + } + // 翻译直播名称 + if (live.getLiveName() != null) { + live.setLiveName(languageTranslationUtil.translate(live.getLiveName(), lang)); + } + } + } + } + } + + /** + * 转换铁粉消费记录的多语言字段 + */ + private void translateBeanConsumeFans(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (Object obj : pageInfo.getList()) { + if (obj instanceof com.example.demo.domain.vo.bean.BeanConsumeFan) { + com.example.demo.domain.vo.bean.BeanConsumeFan fan = (com.example.demo.domain.vo.bean.BeanConsumeFan) obj; + // 翻译分部名称 + if (fan.getDept() != null) { + fan.setDept(languageTranslationUtil.translate(fan.getDept(), lang)); + } + // 翻译频道名称 + if (fan.getChannel() != null) { + fan.setChannel(languageTranslationUtil.translate(fan.getChannel(), lang)); + } + } + } + } + } + + /** + * 转换文章消费记录的多语言字段 + */ + private void translateBeanConsumeArticles(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (Object obj : pageInfo.getList()) { + if (obj instanceof com.example.demo.domain.vo.bean.BeanConsumeArticle) { + com.example.demo.domain.vo.bean.BeanConsumeArticle article = (com.example.demo.domain.vo.bean.BeanConsumeArticle) obj; + // 翻译分部名称 + if (article.getDept() != null) { + article.setDept(languageTranslationUtil.translate(article.getDept(), lang)); + } + // 翻译文章名称 + if (article.getArticleName() != null) { + article.setArticleName(languageTranslationUtil.translate(article.getArticleName(), lang)); + } + } + } + } + } + + /** + * 转换小黄车消费记录的多语言字段 + */ + private void translateBeanConsumeCarts(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (Object obj : pageInfo.getList()) { + if (obj instanceof com.example.demo.domain.vo.bean.BeanConsumeCartVo) { + com.example.demo.domain.vo.bean.BeanConsumeCartVo cart = (com.example.demo.domain.vo.bean.BeanConsumeCartVo) obj; + // 翻译分部名称 + if (cart.getMarket() != null) { + cart.setMarket(languageTranslationUtil.translate(cart.getMarket(), lang)); + } + // 翻译产品名称 + if (cart.getProductName() != null) { + cart.setProductName(languageTranslationUtil.translate(cart.getProductName(), lang)); + } + } + } + } + } + + /** + * 转换分部名称为指定语言 + */ + private void translateDeptNames(List deptNames, String lang) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(deptNames.get(i), lang); + deptNames.set(i, translatedName); + } + } + } + + /** + * 转换直播分部名称为指定语言 + */ + private void translateLiveDeptNames(List deptNames, String lang) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(deptNames.get(i), lang); + deptNames.set(i, translatedName); + } + } + } + + /** + * 转换礼物名称为指定语言 + */ + private void translateGiftNames(List giftNames, String lang) { + if (giftNames != null && !giftNames.isEmpty()) { + for (int i = 0; i < giftNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(giftNames.get(i), lang); + giftNames.set(i, translatedName); + } + } + } + + /** + * 转换频道名称为指定语言 + */ + private void translateChannelNames(List channelNames, String lang) { + if (channelNames != null && !channelNames.isEmpty()) { + for (int i = 0; i < channelNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(channelNames.get(i), lang); + channelNames.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 convertTranslatedConsumeFieldsToChinese(BeanConsume consume, String languageCode) { + if (consume != null) { + // 转换备注信息 + if (consume.getRemark() != null && !consume.getRemark().isEmpty()) { + String chineseRemark = translationService.findChineseSimplifiedByTranslation( + consume.getRemark(), languageCode); + consume.setRemark(chineseRemark); + } + } + } + + /** + * 将直播消费查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedLiveFieldsToChinese(com.example.demo.domain.vo.bean.BeanConsumeLive beanConsumeLive, String languageCode) { + if (beanConsumeLive != null) { + // 转换分部名称 + if (beanConsumeLive.getDept() != null && !beanConsumeLive.getDept().isEmpty()) { + String chineseDept = translationService.findChineseSimplifiedByTranslation( + beanConsumeLive.getDept(), languageCode); + beanConsumeLive.setDept(chineseDept); + } + + // 转换礼物名称 + if (beanConsumeLive.getGift() != null && !beanConsumeLive.getGift().isEmpty()) { + String chineseGift = translationService.findChineseSimplifiedByTranslation( + beanConsumeLive.getGift(), languageCode); + beanConsumeLive.setGift(chineseGift); + } + + // 转换直播频道 + if (beanConsumeLive.getLiveChannel() != null && !beanConsumeLive.getLiveChannel().isEmpty()) { + String chineseChannel = translationService.findChineseSimplifiedByTranslation( + beanConsumeLive.getLiveChannel(), languageCode); + beanConsumeLive.setLiveChannel(chineseChannel); + } + + // 转换直播名称 + if (beanConsumeLive.getLiveName() != null && !beanConsumeLive.getLiveName().isEmpty()) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + beanConsumeLive.getLiveName(), languageCode); + beanConsumeLive.setLiveName(chineseName); + } + } + } + + /** + * 将铁粉消费查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedFanFieldsToChinese(com.example.demo.domain.vo.bean.BeanConsumeFan beanConsumeFan, String languageCode) { + if (beanConsumeFan != null) { + // 转换分部名称 + if (beanConsumeFan.getDept() != null && !beanConsumeFan.getDept().isEmpty()) { + String chineseDept = translationService.findChineseSimplifiedByTranslation( + beanConsumeFan.getDept(), languageCode); + beanConsumeFan.setDept(chineseDept); + } + + // 转换频道名称 + if (beanConsumeFan.getChannel() != null && !beanConsumeFan.getChannel().isEmpty()) { + String chineseChannel = translationService.findChineseSimplifiedByTranslation( + beanConsumeFan.getChannel(), languageCode); + beanConsumeFan.setChannel(chineseChannel); + } + } + } + + /** + * 将文章消费查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedArticleFieldsToChinese(com.example.demo.domain.vo.bean.BeanConsumeArticle beanConsumeArticle, String languageCode) { + if (beanConsumeArticle != null) { + // 转换分部名称 + if (beanConsumeArticle.getDept() != null && !beanConsumeArticle.getDept().isEmpty()) { + String chineseDept = translationService.findChineseSimplifiedByTranslation( + beanConsumeArticle.getDept(), languageCode); + beanConsumeArticle.setDept(chineseDept); + } + + // 转换文章名称 + if (beanConsumeArticle.getArticleName() != null && !beanConsumeArticle.getArticleName().isEmpty()) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + beanConsumeArticle.getArticleName(), languageCode); + beanConsumeArticle.setArticleName(chineseName); + } + } + } + + /** + * 将小黄车消费查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedCartFieldsToChinese(com.example.demo.domain.DTO.BeanConsumeCartDTO beanConsumeCartDTO, String languageCode) { + if (beanConsumeCartDTO != null) { + // 转换产品名称 + if (beanConsumeCartDTO.getProductName() != null && !beanConsumeCartDTO.getProductName().isEmpty()) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + beanConsumeCartDTO.getProductName(), languageCode); + beanConsumeCartDTO.setProductName(chineseName); + } + + // 转换直播名称 + if (beanConsumeCartDTO.getLiveName() != null && !beanConsumeCartDTO.getLiveName().isEmpty()) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + beanConsumeCartDTO.getLiveName(), languageCode); + beanConsumeCartDTO.setLiveName(chineseName); + } + + // 转换来源名称 + if (beanConsumeCartDTO.getSourceName() != null && !beanConsumeCartDTO.getSourceName().isEmpty()) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + beanConsumeCartDTO.getSourceName(), languageCode); + beanConsumeCartDTO.setSourceName(chineseName); + } + } + } + + /** + * 将分部名称转换为中文简体 + */ + private void convertTranslatedDeptNamesToChinese(List deptNames, String languageCode) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + deptNames.get(i), languageCode); + deptNames.set(i, chineseName); + } + } + } + + /** + * 将直播分部名称转换为中文简体 + */ + private void convertTranslatedLiveDeptNamesToChinese(List deptNames, String languageCode) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + deptNames.get(i), languageCode); + deptNames.set(i, chineseName); + } + } + } + + /** + * 将礼物名称转换为中文简体 + */ + private void convertTranslatedGiftNamesToChinese(List giftNames, String languageCode) { + if (giftNames != null && !giftNames.isEmpty()) { + for (int i = 0; i < giftNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + giftNames.get(i), languageCode); + giftNames.set(i, chineseName); + } + } + } + + /** + * 将频道名称转换为中文简体 + */ + private void convertTranslatedChannelNamesToChinese(List channelNames, String languageCode) { + if (channelNames != null && !channelNames.isEmpty()) { + for (int i = 0; i < channelNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + channelNames.get(i), languageCode); + channelNames.set(i, chineseName); + } + } + } + + /** + * 将合计数查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedSumFieldsToChinese(Page page, String languageCode) { + if (page != null) { + // 转换直播消费条件 + if (page.getBeanConsumeLive() != null) { + convertTranslatedLiveFieldsToChinese(page.getBeanConsumeLive(), languageCode); + } + + // 转换铁粉消费条件 + if (page.getBeanConsumeFan() != null) { + convertTranslatedFanFieldsToChinese(page.getBeanConsumeFan(), languageCode); + } + + // 转换文章消费条件 + if (page.getBeanConsumeArticle() != null) { + convertTranslatedArticleFieldsToChinese(page.getBeanConsumeArticle(), languageCode); + } + } } } diff --git a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java index a27c8d5..4fcd49c 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanRechargeController.java @@ -1,5 +1,6 @@ package com.example.demo.controller.bean; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo; import com.example.demo.domain.vo.bean.BeanRecharge; import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo; @@ -7,6 +8,7 @@ import com.example.demo.domain.vo.bean.GoldBean; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.bean.BeanRechargeService; +import com.example.demo.service.coin.TranslationService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -17,8 +19,8 @@ import java.util.List; /** * @program: gold-java - * @ClassName BeanRechrageController - * @description: + * @ClassName BeanRechargeController + * @description: 金豆充值 * @author: Double * @create: 2025−07-29 16:46 * @Version 1.0 @@ -34,89 +36,331 @@ public class BeanRechargeController { @Autowired private BeanRechargeService beanRechargeService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //添加金豆 @PostMapping("/add") - public Result add(@RequestBody BeanRecharge recharge) { + public Result add(@RequestBody BeanRecharge recharge, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(recharge, languageCode); + } + return beanRechargeService.add(recharge); } catch (Exception e) { - return Result.error("添加失败"); + String errorMsg = languageTranslationUtil.translate("添加失败", lang); + return Result.error(errorMsg); } } //系统充值 @PostMapping("/selectBySystem") - public Result selectBySystem(@RequestBody Page page) { + public Result selectBySystem(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedSystemFieldsToChinese(page.getBeanSystemRechargeInfo(), 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); } else { - return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo())); + Result result = Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanSystemRechargeInfos(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error("请检查筛选数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); + return Result.error(errorMsg); } } //系统金豆统计 @PostMapping("/statsSystemBean") - public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo) { + public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedSystemFieldsToChinese(beanSystemRechargeInfo, languageCode); + } + GoldBean goldBean = beanRechargeService.statsSystemBean(beanSystemRechargeInfo); return Result.success(goldBean); } catch (Exception e) { e.printStackTrace(); - return Result.error("请检查数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查数据的格式", lang); + return Result.error(errorMsg); } } //获取系统充值地区 @PostMapping("/systemMarket") - public Result systemMarket() - { - List list = beanRechargeService.systemMarket(); - return Result.success(list); + public Result systemMarket(@RequestHeader(defaultValue = "zh_CN") String lang) { + try { + List list = beanRechargeService.systemMarket(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedSystemMarketNamesToChinese(list, languageCode); + } + + // 对地区名称进行多语言转换 + translateSystemMarketNames(list, lang); + + return Result.success(list); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取地区信息失败", lang); + return Result.error(errorMsg); + } } //线上充值 @PostMapping("/selectByOnline") - public Result selectByOnline(@RequestBody Page page) { + public Result selectByOnline(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedOnlineFieldsToChinese(page.getBeanOnlineRechargeInfo(), 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); } else { - return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo())); + Result result = Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanOnlineRechargeInfos(pageInfo, lang); + } + + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error("请检查筛选数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查筛选数据的格式", lang); + return Result.error(errorMsg); } } //线上金豆统计 @PostMapping("/statsOnlineBean") - public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo) { + public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedOnlineFieldsToChinese(beanOnlineRechargeInfo, languageCode); + } + GoldBean goldBean = beanRechargeService.statsOnlineBean(beanOnlineRechargeInfo); return Result.success(goldBean); } catch (Exception e) { - return Result.error("请检查数据的格式"); + String errorMsg = languageTranslationUtil.translate("请检查数据的格式", lang); + return Result.error(errorMsg); } } //获取线上充值地区 @PostMapping("/onlineMarket") - public Result onlineMarket() - { - List list = beanRechargeService.onlineMarket(); - return Result.success(list); + public Result onlineMarket(@RequestHeader(defaultValue = "zh_CN") String lang) { + try { + List list = beanRechargeService.onlineMarket(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的地区名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedOnlineMarketNamesToChinese(list, languageCode); + } + + // 对地区名称进行多语言转换 + translateOnlineMarketNames(list, lang); + + return Result.success(list); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取地区信息失败", lang); + return Result.error(errorMsg); + } + } + + /** + * 转换Bean系统充值信息的多语言字段 + */ + private void translateBeanSystemRechargeInfos(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (BeanSystemRechargeInfo info : pageInfo.getList()) { + // 翻译市场名称 + if (info.getMarket() != null) { + info.setMarket(languageTranslationUtil.translate(info.getMarket(), lang)); + } + } + } + } + + /** + * 转换Bean线上充值信息的多语言字段 + */ + private void translateBeanOnlineRechargeInfos(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (BeanOnlineRechargeInfo info : pageInfo.getList()) { + // 翻译市场名称 + if (info.getMarket() != null) { + info.setMarket(languageTranslationUtil.translate(info.getMarket(), lang)); + } + } + } + } + + /** + * 转换系统市场名称为指定语言 + */ + private void translateSystemMarketNames(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 translateOnlineMarketNames(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 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(BeanRecharge recharge, String languageCode) { + if (recharge != null) { + // 转换备注信息(如果需要的话) + if (recharge.getRemark() != null && !recharge.getRemark().isEmpty()) { + String chineseRemark = translationService.findChineseSimplifiedByTranslation( + recharge.getRemark(), languageCode); + recharge.setRemark(chineseRemark); + } + } + } + + /** + * 将系统充值查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedSystemFieldsToChinese(BeanSystemRechargeInfo beanSystemRechargeInfo, String languageCode) { + if (beanSystemRechargeInfo != null) { + // 转换市场名称 + if (beanSystemRechargeInfo.getMarket() != null && !beanSystemRechargeInfo.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + beanSystemRechargeInfo.getMarket(), languageCode); + beanSystemRechargeInfo.setMarket(chineseMarket); + } + } + } + + /** + * 将线上充值查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedOnlineFieldsToChinese(BeanOnlineRechargeInfo beanOnlineRechargeInfo, String languageCode) { + if (beanOnlineRechargeInfo != null) { + // 转换市场名称 + if (beanOnlineRechargeInfo.getMarket() != null && !beanOnlineRechargeInfo.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + beanOnlineRechargeInfo.getMarket(), languageCode); + beanOnlineRechargeInfo.setMarket(chineseMarket); + } + } + } + + /** + * 将翻译后的系统市场名称转换为中文简体 + */ + private void convertTranslatedSystemMarketNamesToChinese(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); + } + } + } + + /** + * 将翻译后的线上市场名称转换为中文简体 + */ + private void convertTranslatedOnlineMarketNamesToChinese(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); + } + } } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/demo/controller/bean/BeanUserController.java b/src/main/java/com/example/demo/controller/bean/BeanUserController.java index 097fb00..f7445e7 100644 --- a/src/main/java/com/example/demo/controller/bean/BeanUserController.java +++ b/src/main/java/com/example/demo/controller/bean/BeanUserController.java @@ -6,6 +6,8 @@ import com.example.demo.domain.vo.bean.BeanUserCard; import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.bean.BeanUserService; +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; @@ -17,7 +19,7 @@ import java.util.List; /** * @program: gold-java * @ClassName BeanUserController - * @description: + * @description: 金豆客户账户明细 * @author: Double * @create: 2025−07-29 17:03 * @Version 1.0 @@ -33,47 +35,212 @@ public class BeanUserController { @Autowired private BeanUserService beanUserService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + + @Autowired + private TranslationService translationService; + //查询用户卡片 @PostMapping("/userCard") - public Result userCard(@RequestBody BeanUserCard user) { + public Result userCard(@RequestBody BeanUserCard user, @RequestHeader(defaultValue = "zh_CN") String lang) { try { - return beanUserService.userCard(user.getJwcode().toString()); + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedUserFieldsToChinese(user, languageCode); + } + + Result result = beanUserService.userCard(user.getJwcode().toString()); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof BeanUserCard) { + BeanUserCard userCard = (BeanUserCard) result.getData(); + if (userCard.getMarket() != null) { + userCard.setMarket(languageTranslationUtil.translate(userCard.getMarket(), lang)); + } + } + + return result; } catch (Exception e) { - return Result.error("请检查输入精网号格式"); + String errorMsg = languageTranslationUtil.translate("请检查输入精网号格式", lang); + return Result.error(errorMsg); } } + //客户金豆余额 @PostMapping("/userBean") - public Result userBean(@RequestBody Page page) { + public Result userBean(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedBeanUserFieldsToChinese(page.getBeanUser(), 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); } else { + Result result = Result.success(beanUserService.selectUserBy(page.getPageNum(), page.getPageSize(), page.getBeanUser())); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { + com.github.pagehelper.PageInfo pageInfo = (com.github.pagehelper.PageInfo) result.getData(); + translateBeanUsers(pageInfo, lang); + } - return Result.success(beanUserService.selectUserBy(page.getPageNum(), page.getPageSize(), page.getBeanUser())); + return result; } } catch (Exception e) { e.printStackTrace(); - return Result.error(e.toString()); - }} - //客户金币余额合计数 - @PostMapping("/userBeanSum") - public Result userBeanSum(@RequestBody Page page) { + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg); + } + } + + //客户金币余额合计数 + @PostMapping("/userBeanSum") + public Result userBeanSum(@RequestBody Page page, @RequestHeader(defaultValue = "zh_CN") String lang) { + try { + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedBeanUserFieldsToChinese(page.getBeanUser(), languageCode); + } + + Result result = Result.success(beanUserService.sumUserGold(page)); - return Result.success(beanUserService.sumUserGold(page)); + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof BeanUserCard) { + BeanUserCard userCard = (BeanUserCard) result.getData(); + // 此处可根据需要添加对合计数据的多语言处理 + } + + return result; + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查询合计数失败", lang); + return Result.error(errorMsg); + } } + //查询客户分部 @PostMapping("/getDept") - public Result getDept() { - List deptList = beanUserService.getDept(); - return Result.success(deptList); + public Result getDept(@RequestHeader(defaultValue = "zh_CN") String lang) { + try { + List deptList = beanUserService.getDept(); + + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + + // 如果不是中文环境,先将翻译后的分部名称转换为中文简体进行处理 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedDeptNamesToChinese(deptList, languageCode); + } + + // 对分部名称进行多语言转换 + translateDeptNames(deptList, lang); + + return Result.success(deptList); + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("获取分部信息失败", lang); + return Result.error(errorMsg); + } } -} + /** + * 转换Bean用户信息的多语言字段 + */ + private void translateBeanUsers(com.github.pagehelper.PageInfo pageInfo, String lang) { + if (pageInfo != null && pageInfo.getList() != null) { + for (BeanUser user : pageInfo.getList()) { + // 翻译部门名称 + if (user.getDept() != null) { + user.setDept(languageTranslationUtil.translate(user.getDept(), lang)); + } + } + } + } + + /** + * 转换分部名称为指定语言 + */ + private void translateDeptNames(List deptNames, String lang) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String translatedName = languageTranslationUtil.translate(deptNames.get(i), lang); + deptNames.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 convertTranslatedUserFieldsToChinese(BeanUserCard user, String languageCode) { + if (user != null) { + // 转换部门信息 + if (user.getMarket() != null && !user.getMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + user.getMarket(), languageCode); + user.setMarket(chineseMarket); + } + } + } + /** + * 将Bean用户查询条件中的翻译字段转换为中文简体 + */ + private void convertTranslatedBeanUserFieldsToChinese(BeanUser beanUser, String languageCode) { + if (beanUser != null) { + // 转换部门信息 + if (beanUser.getDept() != null && !beanUser.getDept().isEmpty()) { + String chineseDept = translationService.findChineseSimplifiedByTranslation( + beanUser.getDept(), languageCode); + beanUser.setDept(chineseDept); + } + } + } + /** + * 将分部名称转换为中文简体 + */ + private void convertTranslatedDeptNamesToChinese(List deptNames, String languageCode) { + if (deptNames != null && !deptNames.isEmpty()) { + for (int i = 0; i < deptNames.size(); i++) { + String chineseName = translationService.findChineseSimplifiedByTranslation( + deptNames.get(i), languageCode); + deptNames.set(i, chineseName); + } + } + } +} diff --git a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java index 685fe87..09fcacf 100644 --- a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java @@ -38,12 +38,8 @@ public class WorkbenchController { private GeneralService generalService; @Autowired private StatisticsMapper statisticsMapper; - - // 注入 TranslationService @Autowired private TranslationService translationService; - - // 注入多语言转换工具类 @Autowired private LanguageTranslationUtil languageTranslationUtil; diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java index cd7e398..1711d3a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -199,7 +199,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanConsumeLiveNode = requestDataNode.path("beanConsumeLive"); BeanConsumeLive beanConsumeLive = objectMapper.treeToValue(beanConsumeLiveNode, BeanConsumeLive.class); page.setBeanConsumeLive(beanConsumeLive); - return beanConsumeController.selectLiveBy(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return beanConsumeController.selectLiveBy(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -215,7 +221,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanConsumeFanNode = requestDataNode.path("beanConsumeFan"); BeanConsumeFan beanConsumeFan = objectMapper.treeToValue(beanConsumeFanNode, BeanConsumeFan.class); page.setBeanConsumeFan(beanConsumeFan); - return beanConsumeController.selectFanBy(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return beanConsumeController.selectFanBy(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -231,7 +243,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanConsumeArticleNode = requestDataNode.path("beanConsumeArticle"); BeanConsumeArticle beanConsumeArticle = objectMapper.treeToValue(beanConsumeArticleNode, BeanConsumeArticle.class); page.setBeanConsumeArticle(beanConsumeArticle); - return beanConsumeController.selectArticleBy(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return beanConsumeController.selectArticleBy(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -247,7 +265,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanRechargeNode = requestDataNode.path("beanSystemRechargeInfo"); BeanSystemRechargeInfo beanSystemRechargeInfo = objectMapper.treeToValue(beanRechargeNode, BeanSystemRechargeInfo.class); page.setBeanSystemRechargeInfo(beanSystemRechargeInfo); - return beanRechargeController.selectBySystem(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return beanRechargeController.selectBySystem(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -263,7 +287,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanRechargeNode = requestDataNode.path("beanOnlineRechargeInfo"); BeanOnlineRechargeInfo beanOnlineRechargeInfo = objectMapper.treeToValue(beanRechargeNode, BeanOnlineRechargeInfo.class); page.setBeanOnlineRechargeInfo(beanOnlineRechargeInfo); - return beanRechargeController.selectByOnline(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return beanRechargeController.selectByOnline(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -279,7 +309,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanRechargeNode = requestDataNode.path("cashRecordDTO"); CashRecordDTO cashRecordDTO = objectMapper.treeToValue(beanRechargeNode, CashRecordDTO.class); page.setCashRecordDTO(cashRecordDTO); - return cashRefundController.export(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return cashRefundController.export(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -295,7 +331,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode beanRechargeNode = requestDataNode.path("cashCollection"); CashCollection cashCollection = objectMapper.treeToValue(beanRechargeNode, CashCollection.class); page.setCashCollection(cashCollection); - return cashCollectionController.export(page); + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return cashCollectionController.export(page, lang); } catch (Exception e) { throw new RuntimeException(e); }