diff --git a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java index d3a303a..e2266ce 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -78,7 +78,7 @@ public class CashCollectionController { convertTranslatedFieldsToChinese(cashCollection, languageCode); } - String result = cashCollectionService.add(cashCollection); + String result = cashCollectionService.add(cashCollection,lang); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { @@ -88,9 +88,9 @@ public class CashCollectionController { } //新增赠送免费金币 @PostMapping("/addFreeCoin") - public Result addFreeCoin(@RequestBody CashCollection cashCollection) { + public Result addFreeCoin(@RequestBody CashCollection cashCollection, @RequestHeader(defaultValue = "zh_CN") String lang) { try { - return Result.success(cashCollectionService.addFreeCoin(cashCollection)); + return Result.success(cashCollectionService.addFreeCoin(cashCollection, lang)); } catch (Exception e) { return Result.error(e.getMessage()); } @@ -120,7 +120,7 @@ public class CashCollectionController { convertTranslatedRecordFieldsToChinese(cashRecord, languageCode); } - String result = cashCollectionService.reSubmit(cashRecord); + String result = cashCollectionService.reSubmit(cashRecord, lang); String successMsg = languageTranslationUtil.translate(result, lang); return Result.success(successMsg); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/cash/CashRefundController.java b/src/main/java/com/example/demo/controller/cash/CashRefundController.java index 1a1115a..ad91766 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -141,7 +141,7 @@ public class CashRefundController { } cashRecordRefund.setStatus(10); - int resultCode = refundService.add(cashRecordRefund); + int resultCode = refundService.add(cashRecordRefund, lang); String successMsg = languageTranslationUtil.translate("提交成功", lang); return Result.success(successMsg); } catch (Exception e) { @@ -252,7 +252,7 @@ public class CashRefundController { } else if (cashRecordDone.getStatus() == 11) { try { - int result = refundService.update(cashRecordDone); + int result = refundService.update(cashRecordDone, lang); String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("操作失败", lang); return Result.success(msg); } catch (Exception e) { @@ -274,7 +274,7 @@ public class CashRefundController { @PostMapping("/review") public Result review(@RequestBody CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang){ try { - int result = refundService.review(cashRecordDone); + int result = refundService.review(cashRecordDone, lang); String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("操作失败", lang); return Result.success(msg); } catch (Exception e) { @@ -310,7 +310,7 @@ public class CashRefundController { try { // 原有业务逻辑:执行最终审核 - int result = refundService.finalreview(cashRecordDone); + int result = refundService.finalreview(cashRecordDone, lang); String msg = result > 0 ? languageTranslationUtil.translate("操作成功", lang) : languageTranslationUtil.translate("审核失败", lang); return Result.success(msg); } catch (Exception e) { @@ -350,7 +350,7 @@ public class CashRefundController { } cashRecordRefund.setStatus(20); - int resultCode = refundService.add(cashRecordRefund); + int resultCode = refundService.add(cashRecordRefund,lang); String successMsg = languageTranslationUtil.translate("提交成功", lang); return Result.success(successMsg); } catch (Exception e) { diff --git a/src/main/java/com/example/demo/controller/cash/MessageController.java b/src/main/java/com/example/demo/controller/cash/MessageController.java index 127f114..764e21e 100644 --- a/src/main/java/com/example/demo/controller/cash/MessageController.java +++ b/src/main/java/com/example/demo/controller/cash/MessageController.java @@ -1,12 +1,14 @@ package com.example.demo.controller.cash; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.domain.DTO.IdRequest; import com.example.demo.domain.entity.Admin; import com.example.demo.domain.vo.cash.Status; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.cash.MessageService; import com.example.demo.service.coin.MarketService; +import com.example.demo.service.coin.TranslationService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -25,7 +27,7 @@ import java.util.List; * @ClassName MessageController * @description: * @author: huangqizhen - * @create: 2025−11-14 22:12 + * @create: 2025−11−14 22:12 * @Version 1.0 **/ @RestController @@ -38,31 +40,100 @@ public class MessageController { private MessageService messageService; @Autowired private MarketService marketService; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + @Autowired + private TranslationService translationService; + @PostMapping - public Result getMessage(@RequestBody Status status) throws Exception { + public Result getMessage(@RequestBody Status status, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); -// 解析 token 获取用户信息 + // 解析 token 获取用户信息 Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); List userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); List markets = marketService.getMarketIds(userMarkets); -// 权限校验逻辑 + // 解析语言代码 + String languageCode = parseLanguageCode(lang); + // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 + if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + convertTranslatedFieldsToChinese(status, languageCode); + } + + // 权限校验逻辑 if (markets.contains("9") || markets.contains("9999")) { - markets=null; + markets = null; } - return Result.success(messageService.getMessage(markets, status.getStatus())); + + List messages = messageService.getMessage(markets, status.getStatus()); + // 对返回结果进行多语言转换 + translateMessages(messages, lang); + return Result.success(messages); } + @PostMapping("/update") - public Result update(@RequestBody IdRequest idRequest) throws Exception { + public Result update(@RequestBody IdRequest idRequest, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { try { Integer id = idRequest.getId(); messageService.update(id); return Result.success(); } catch (Exception e) { - return Result.error("更新失败"); + String errorMsg = languageTranslationUtil.translate("更新失败", lang); + return Result.error(errorMsg); + } + } + + /** + * 转换消息列表的多语言字段 + */ + private void translateMessages(List messages, String lang) { + if (messages != null && !messages.isEmpty()) { + for (com.example.demo.domain.vo.coin.Messages message : messages) { + // 翻译标题 + if (message.getTitle() != null && !message.getTitle().isEmpty()) { + message.setTitle(languageTranslationUtil.translate(message.getTitle(), lang)); + } + // 翻译描述 + if (message.getDesc() != null && !message.getDesc().isEmpty()) { + message.setDesc(languageTranslationUtil.translate(message.getDesc(), lang)); + } + // 翻译市场名称 + if (message.getMarketName() != null && !message.getMarketName().isEmpty()) { + message.setMarketName(languageTranslationUtil.translate(message.getMarketName(), 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(Status status, String languageCode) { + if (status != null) { + // 如果状态相关的字段需要翻译,可以在这里处理 + // 目前 Status 类中主要是状态码,一般不需要翻译 } } } diff --git a/src/main/java/com/example/demo/controller/coin/ExportController.java b/src/main/java/com/example/demo/controller/coin/ExportController.java index 30468c1..8fe9993 100644 --- a/src/main/java/com/example/demo/controller/coin/ExportController.java +++ b/src/main/java/com/example/demo/controller/coin/ExportController.java @@ -50,8 +50,6 @@ public class ExportController { @Autowired private RedisLockUtil redisLockUtil; @Autowired - private GoldDetailService goldDetailService; - @Autowired private ExportService exportService; @Autowired private TranslationService translationService; diff --git a/src/main/java/com/example/demo/service/cash/CashCollectionService.java b/src/main/java/com/example/demo/service/cash/CashCollectionService.java index 48dc232..56e960b 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -23,13 +23,13 @@ import java.util.List; public interface CashCollectionService { //新增收款订单 - String add(CashCollection cashCollection); + String add(CashCollection cashCollection,String lang); //赠送免费金币 - String addFreeCoin(CashCollection cashCollection); + String addFreeCoin(CashCollection cashCollection,String lang); //撤回未审核的收款订单 String cancel(String orderCode); //编辑并重新提交收款订单 - String reSubmit(CashRecord cashRecord); + String reSubmit(CashRecord cashRecord,String lang); //多条件查询收款订单列表 PageInfo selectCollection(Integer pageNum, Integer pageSize, CashCollection cashCollection); //补全手续费等 diff --git a/src/main/java/com/example/demo/service/cash/RefundService.java b/src/main/java/com/example/demo/service/cash/RefundService.java index 389b237..238a826 100644 --- a/src/main/java/com/example/demo/service/cash/RefundService.java +++ b/src/main/java/com/example/demo/service/cash/RefundService.java @@ -18,19 +18,19 @@ public interface RefundService { //多条件查询(qi'yong) PageInfo select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); //添加 - int add(CashRecordRefund cashRecordRefund) throws Exception; + int add(CashRecordRefund cashRecordRefund, String lang) throws Exception; //修改 - int update(CashRecordDone cashRecordDone) throws Exception; + int update(CashRecordDone cashRecordDone, String lang) throws Exception; // int withdraw(CashRecordDone cashRecordDone); //审核 - int review(CashRecordDone cashRecordDone) throws Exception; + int review(CashRecordDone cashRecordDone, String lang) throws Exception; // 执行 int executor(CashRecordDone cashRecordDone) throws Exception; //修改原数据状态 int updateStatus(CashRecordDone cashRecordDone); - int finalreview(CashRecordDone cashRecordDone); + int finalreview(CashRecordDone cashRecordDone, String lang); PageInfo financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); PageInfo exSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index eefd525..1751c1e 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -1,6 +1,7 @@ package com.example.demo.serviceImpl.cash; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.config.RabbitMQConfig; import com.example.demo.domain.DTO.PerformanceDTO; import com.example.demo.domain.entity.*; @@ -23,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -54,10 +56,12 @@ public class CashCollectionServiceImpl implements CashCollectionService { private MarketMapper marketMapper; @Autowired private RabbitTemplate rabbitTemplate; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; //新增收款订单 @Override - public String add(CashCollection cashCollection) { + public String add(CashCollection cashCollection,@RequestHeader(defaultValue = "zh_CN") String lang) { if (cashCollection.getJwcode() == null) { throw new IllegalArgumentException("精网号不能为空"); } @@ -135,17 +139,19 @@ public class CashCollectionServiceImpl implements CashCollectionService { message.setJwcode(cashRecord.getJwcode()); message.setName(cashRecord.getName()); message.setStatus(cashRecord.getStatus()); - message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核"); - message.setTitle("现金收款--新增收款"); + message.setDesc(cashRecord.getJwcode()+languageTranslationUtil.translate("用户的现金收款申请待审核,请前往审核", lang)); + message.setTitle(languageTranslationUtil.translate("现金收款--新增收款", lang)); message.setType(1); message.setTypeId(cashRecord.getId()); message.setMarket(Integer.valueOf(cashRecord.getMarket())); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, lang)); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message); return "添加成功"; } @Override - public String addFreeCoin(CashCollection cashCollection) { + public String addFreeCoin(CashCollection cashCollection,@RequestHeader(defaultValue = "zh_CN") String lang) { if (cashCollection.getJwcode() == null) { throw new IllegalArgumentException("精网号不能为空"); } @@ -186,11 +192,13 @@ public class CashCollectionServiceImpl implements CashCollectionService { message.setJwcode(cashRecord.getJwcode()); message.setName(cashRecord.getName()); message.setStatus(cashRecord.getStatus()); - message.setDesc(cashRecord.getJwcode()+"用户的现金收款申请待审核,请前往审核"); - message.setTitle("现金收款--赠送免费金币"); + message.setDesc(cashRecord.getJwcode()+languageTranslationUtil.translate("用户的现金收款申请待审核,请前往审核", lang)); + message.setTitle(languageTranslationUtil.translate("现金收款--赠送免费金币", lang)); message.setType(1); message.setTypeId(cashRecord.getId()); message.setMarket(Integer.valueOf(cashRecord.getMarket())); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, lang)); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_COLLECTION_EXCHANGE, "cash.collection.save", message); return "添加成功"; } @@ -213,7 +221,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { //编辑并重新提交收款订单 @Override - public String reSubmit(CashRecord cashRecord) { + public String reSubmit(CashRecord cashRecord,@RequestHeader(defaultValue = "zh_CN") String lang) { if (cashRecord.getJwcode() == null) { throw new IllegalArgumentException("精网号不能为空"); } @@ -272,8 +280,8 @@ public class CashCollectionServiceImpl implements CashCollectionService { message.setId(cashRecord.getId()); message.setOrderCode(cashRecord.getOrderCode()); message.setStatus(0); // 重新提交后状态变为待审核 - message.setStatusDescription("线下财务待审核"); - message.setMessage("收款订单已重新提交"); + message.setStatusDescription(languageTranslationUtil.translate("线下财务待审核", lang)); + message.setMessage(languageTranslationUtil.translate("收款订单已重新提交", lang)); message.setSubmitterId(cashRecord.getSubmitterId()); message.setTimestamp(LocalDateTime.now()); diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 9df81be..c835afa 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -1,4 +1,5 @@ package com.example.demo.serviceImpl.cash; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.Util.SimpleIdGenerator; import com.example.demo.domain.entity.Admin; import com.example.demo.Util.BusinessException; @@ -23,6 +24,7 @@ import com.github.pagehelper.PageInfo; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestHeader; import java.math.BigDecimal; import java.math.RoundingMode; @@ -59,6 +61,8 @@ public class CashRefundServiceImpl implements RefundService { private OperationLogMapper operationLogMapper; @Autowired private CashCollectionMapper cashCollectionMapper; + @Autowired + private LanguageTranslationUtil languageTranslationUtil; @Override public PageInfo select(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { @@ -168,7 +172,7 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int add(CashRecordRefund cashRecordRefund) throws Exception { + public int add(CashRecordRefund cashRecordRefund, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { if(cashRecordRefund.getJwcode()==null){ throw new Exception("未输入精网号") ; } @@ -205,11 +209,13 @@ public class CashRefundServiceImpl implements RefundService { message.setJwcode(cashRecordRefund.getJwcode()); message.setName(cashRecordRefund.getName()); message.setStatus(cashRecordRefund.getStatus()); - message.setDesc(cashRecordRefund.getJwcode()+"用户的客服退款申请待审核,前往处理"); - message.setTitle("现金退款--新增退款"); + message.setDesc(cashRecordRefund.getJwcode()+languageTranslationUtil.translate("用户的客服退款申请待审核,前往处理", lang)); + message.setTitle(languageTranslationUtil.translate("现金退款--新增退款", lang)); message.setType(0); message.setTypeId(cashRecordRefund.getId()); message.setMarket(Integer.valueOf(cashRecordRefund.getMarket())); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, lang)); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); return Result.success("提交成功").getCode(); @@ -217,7 +223,7 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int update(CashRecordDone cashRecordDone) throws Exception { + public int update(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { if (cashRecordDone.getJwcode()== null) { throw new RuntimeException("未输入精网号"); } @@ -247,11 +253,13 @@ public class CashRefundServiceImpl implements RefundService { message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode() + "用户的退款申请待审核,前往处理"); - message.setTitle("现金退款--当地退款审核(编辑后提交)"); + message.setDesc(cashRecordDTO.getJwcode() + languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang)); + message.setTitle(languageTranslationUtil.translate("现金退款--当地退款审核(编辑后提交)", lang)); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, lang)); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); } return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode(); @@ -263,7 +271,7 @@ public class CashRefundServiceImpl implements RefundService { } @Override - public int review(CashRecordDone cashRecordDone) throws Exception { + public int review(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) throws Exception { if(cashRecordDone.getStatus()== 12|| cashRecordDone.getStatus()== 22){ if(cashRecordDone.getOrderCode()== null){ throw new RuntimeException("未输入订单号"); @@ -284,11 +292,13 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=12|| cashRecordDTO.getStatus()!=22?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情"); - message.setTitle("现金退款--当地退款审核"); + message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=12|| cashRecordDTO.getStatus()!=22?languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang):languageTranslationUtil.translate("用户的现金退款申请已被驳回,前往查看详情", lang)); + message.setTitle(languageTranslationUtil.translate("现金退款--当地退款审核", lang)); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, lang)); rabbitTemplate.convertAndSend(RabbitMQConfig.CASH_REFUND_EXCHANGE, "cash.refund.save", message); @@ -327,7 +337,7 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); } @Override - public int finalreview(CashRecordDone cashRecordDone) { + public int finalreview(CashRecordDone cashRecordDone, @RequestHeader(defaultValue = "zh_CN") String lang) { if(cashRecordDone.getPermanentGold()== null){ cashRecordDone.setPermanentGold(0); } @@ -392,11 +402,13 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); message.setJwcode(cashRecordDTO.getJwcode()); message.setName(cashRecordDTO.getName()); message.setStatus(cashRecordDTO.getStatus()); - message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=32?"用户的退款申请待审核,前往处理":"用户的现金退款申请已被驳回,前往查看详情"); - message.setTitle("现金退款--执行人退款提交"); + message.setDesc(cashRecordDTO.getJwcode()+cashRecordDTO.getStatus()!=32?languageTranslationUtil.translate("用户的退款申请待审核,前往处理", lang):languageTranslationUtil.translate("用户的现金退款申请已被驳回,前往查看详情", lang)); + message.setTitle(languageTranslationUtil.translate("现金退款--执行人退款提交", lang)); message.setType(1); message.setTypeId(cashRecordDTO.getId()); message.setMarket(cashRecordDTO.getMarket()); + String marketName = marketMapper.getMarketNameById(String.valueOf(message.getMarket())); + message.setMarketName(languageTranslationUtil.translate(marketName, "zh_CN")); } return (result > 0 ? Result.success("提交成功") : Result.error("提交失败")).getCode();