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..f6d8a9e 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -3,9 +3,14 @@ package com.example.demo.serviceImpl.coin; import cn.hutool.log.AbstractLog; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; +import com.alibaba.excel.write.handler.SheetWriteHandler; import com.alibaba.excel.write.metadata.WriteSheet; +import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; +import com.alibaba.excel.write.metadata.holder.WriteWorkbookHolder; +import com.example.demo.Util.ExcelHeaderTranslator; import com.example.demo.Util.ExcelUploadUtil; import com.example.demo.Util.JWTUtil; +import com.example.demo.Util.LanguageTranslationUtil; import com.example.demo.controller.bean.BeanConsumeController; import com.example.demo.controller.bean.BeanRechargeController; import com.example.demo.controller.cash.CashCollectionController; @@ -50,9 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.function.Function; @Service @@ -85,6 +88,12 @@ public class ExportExcelServiceImpl implements ExportExcelService { private CashRefundController cashRefundController; @Autowired private CashCollectionController cashCollectionController; + // 注入LanguageTranslationUtil + @Autowired + private LanguageTranslationUtil languageTranslationUtil; + // 注入ExcelHeaderTranslator + @Autowired + private ExcelHeaderTranslator excelHeaderTranslator; // 每页查询的数据量 private static final int PAGE_SIZE = 5000; @Autowired @@ -100,7 +109,15 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode GoldDetailNode = requestDataNode.path("goldDetail"); GoldDetail goldDetail = objectMapper.treeToValue(GoldDetailNode, GoldDetail.class); page.setGoldDetail(goldDetail); - return goldDetailController.ExcelGoldDetail(page); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + + return goldDetailController.ExcelGoldDetail(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -117,7 +134,15 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode UserNode = requestDataNode.path("user"); User user = objectMapper.treeToValue(UserNode, User.class); page.setUser(user); - return goldDetailController.ExcelGold(page); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + + return goldDetailController.ExcelGold(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -139,7 +164,15 @@ public class ExportExcelServiceImpl implements ExportExcelService { List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); rechargeUser.setMarkets(markets); page.setRechargeUser(rechargeUser); - return rechargeController.select(page); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + + return rechargeController.select(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -161,13 +194,22 @@ public class ExportExcelServiceImpl implements ExportExcelService { List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); consumeUser.setMarkets(markets); page.setConsumeUser(consumeUser); - return consumeController.select(page); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + + return consumeController.select(page, lang); } catch (Exception e) { throw new RuntimeException(e); } }); } + @Transactional @Override public Exception refundExcel(String message) throws Exception { @@ -183,7 +225,14 @@ public class ExportExcelServiceImpl implements ExportExcelService { List markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); refundUser.setMarkets(markets); page.setRefundUser(refundUser); - return refundController.select(page, String.join(",", markets)); + + // 从请求数据中获取语言设置,如果没有则使用默认值 + String lang = "zh_CN"; + JsonNode langNode = requestDataNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + return refundController.select(page, lang); } catch (Exception e) { throw new RuntimeException(e); } @@ -199,7 +248,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 +270,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 +292,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 +314,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 +336,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 +358,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 +380,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); } @@ -345,6 +436,13 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode requestDataNode = rootNode.path("requestData"); String tokenValue = requestDataNode.path("token").asText(); + // 获取语言参数 + String lang = "zh_CN"; + JsonNode langNode = rootNode.path("lang"); + if (langNode != null && !langNode.asText().isEmpty()) { + lang = langNode.asText(); + } + // 2. 验证导出记录 AiEmotionExportRecordVO record = validateExportRecord(recordId); if (record == null) return null; @@ -360,8 +458,253 @@ public class ExportExcelServiceImpl implements ExportExcelService { try { // 5. 初始化Excel写入器 Class clazz = getExportClass(exportType); // 动态获取导出类 + + // 创建Excel写入器 excelWriter = EasyExcel.write(outputStream, clazz).build(); - WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build(); + WriteSheet writeSheet; + + // 如果是充值用户,添加动态表头处理器 + if ("rechargeUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getRechargeHeaders(lang); + List columnOrder = excelHeaderTranslator.getRechargeColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是消费用户,添加动态表头处理器 + else if ("consumeUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getConsumeHeaders(lang); + List columnOrder = excelHeaderTranslator.getConsumeColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是退款用户,添加动态表头处理器 + else if ("refundUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getRefundHeaders(lang); + List columnOrder = excelHeaderTranslator.getRefundColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是直播消费用户,添加动态表头处理器 + else if ("liveUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getBeanConsumeLiveHeaders(lang); + List columnOrder = excelHeaderTranslator.getBeanConsumeLiveColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是铁粉消费用户,添加动态表头处理器 + else if ("fanUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getBeanConsumeFanHeaders(lang); + List columnOrder = excelHeaderTranslator.getBeanConsumeFanColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是文章消费用户,添加动态表头处理器 + else if ("articleUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getBeanConsumeArticleHeaders(lang); + List columnOrder = excelHeaderTranslator.getBeanConsumeArticleColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是金豆系统充值用户,添加动态表头处理器 + else if ("beanUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getBeanSystemRechargeHeaders(lang); + List columnOrder = excelHeaderTranslator.getBeanSystemRechargeColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是金豆在线充值用户,添加动态表头处理器 + else if ("onlineUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getBeanOnlineRechargeHeaders(lang); + List columnOrder = excelHeaderTranslator.getBeanOnlineRechargeColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是财务退款记录,添加动态表头处理器 + else if ("financeUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getCashRecordHeaders(lang); + List columnOrder = excelHeaderTranslator.getCashRecordColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是现金收款记录,添加动态表头处理器 + else if ("cashUser".equals(exportType)) { + Map headers = excelHeaderTranslator.getCashCollectionHeaders(lang); + List columnOrder = excelHeaderTranslator.getCashCollectionColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是金币明细,添加动态表头处理器 + else if ("goldDetail".equals(exportType)) { + Map headers = excelHeaderTranslator.getGoldDetailHeaders(lang); + List columnOrder = excelHeaderTranslator.getGoldDetailColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } + // 如果是用户表,添加动态表头处理器 + else if ("user".equals(exportType)) { + Map headers = excelHeaderTranslator.getUserHeaders(lang); + List columnOrder = excelHeaderTranslator.getUserColumnOrder(); + + // 构建自定义表头 + List> head = new ArrayList<>(); + for (String fieldName : columnOrder) { + String headerText = headers.get(fieldName); + if (headerText != null) { + List headItems = new ArrayList<>(); + headItems.add(headerText); + head.add(headItems); + } + } + + writeSheet = EasyExcel.writerSheet("Sheet1") + .head(head) + .build(); + } else { + writeSheet = EasyExcel.writerSheet("Sheet1").build(); + } // 6. 分页查询并写入数据 Page page = new Page(); @@ -370,7 +713,6 @@ public class ExportExcelServiceImpl implements ExportExcelService { Integer totalCount = 0; boolean hasMore = true; - // 在 exportExcelGeneric 方法中的适当位置添加类型转换 while (hasMore) { Result pageResult = dataFetcher.apply(page); Integer code = pageResult.getCode(); @@ -394,11 +736,65 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 在这里添加类型转换逻辑 if ("goldDetail".equals(exportType) && list.get(0) instanceof GoldDetail) { fillGoldDetailTypeDescriptions((List) list); + // 添加翻译支持 + translateGoldDetailList((List) list, lang); } // 添加退款方式转换逻辑 if ("refundUser".equals(exportType) && list.get(0) instanceof RefundUser) { fillRefundUserModelDescriptions((List) list); + // 添加翻译支持 + translateRefundUserList((List) list, lang); + } + + // 添加充值用户翻译支持 + if ("rechargeUser".equals(exportType) && list.get(0) instanceof RechargeUser) { + translateRechargeUserList((List) list, lang); + } + + // 添加消费用户翻译支持 + if ("consumeUser".equals(exportType) && list.get(0) instanceof ConsumeUser) { + translateConsumeUserList((List) list, lang); + } + + // 添加直播用户翻译支持 + if ("liveUser".equals(exportType) && list.get(0) instanceof BeanConsumeLive) { + translateBeanConsumeLiveList((List) list, lang); + } + + // 添加铁粉用户翻译支持 + if ("fanUser".equals(exportType) && list.get(0) instanceof BeanConsumeFan) { + translateBeanConsumeFanList((List) list, lang); + } + + // 添加文章用户翻译支持 + if ("articleUser".equals(exportType) && list.get(0) instanceof BeanConsumeArticle) { + translateBeanConsumeArticleList((List) list, lang); + } + + // 添加金豆充值翻译支持 + if ("beanUser".equals(exportType) && list.get(0) instanceof BeanSystemRechargeInfo) { + translateBeanSystemRechargeInfoList((List) list, lang); + } + + // 添加在线充值翻译支持 + if ("onlineUser".equals(exportType) && list.get(0) instanceof BeanOnlineRechargeInfo) { + translateBeanOnlineRechargeInfoList((List) list, lang); + } + + // 添加财务退款翻译支持 + if ("financeUser".equals(exportType) && list.get(0) instanceof CashRecordDTO) { + translateCashRecordDTOList((List) list, lang); + } + + // 添加现金收款翻译支持 + if ("cashUser".equals(exportType) && list.get(0) instanceof CashCollection) { + translateCashCollectionList((List) list, lang); + } + + // 添加用户金币余额翻译支持 + if ("goldUser".equals(exportType) && list.get(0) instanceof User) { + translateUserList((List) list, lang); } excelWriter.write(list, writeSheet); @@ -605,4 +1001,362 @@ public class ExportExcelServiceImpl implements ExportExcelService { default: return "未知退款方式"; } } + + // 各种实体类的翻译方法 + + /** + * 翻译金币明细列表 + */ + private void translateGoldDetailList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (GoldDetail item : list) { + // 翻译类型描述 + if (item.getTypeDesc() != null && !item.getTypeDesc().isEmpty()) { + item.setTypeDesc(languageTranslationUtil.translate(item.getTypeDesc(), lang)); + } + + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + } + } + + /** + * 翻译退款用户列表 + */ + private void translateRefundUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (RefundUser item : list) { + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译退款类型 + if (item.getRefundType() != null && !item.getRefundType().isEmpty()) { + item.setRefundType(languageTranslationUtil.translate(item.getRefundType(), lang)); + } + + // 翻译退款方式描述 + if (item.getRefundModelDesc() != null && !item.getRefundModelDesc().isEmpty()) { + item.setRefundModelDesc(languageTranslationUtil.translate(item.getRefundModelDesc(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译充值用户列表 + */ + private void translateRechargeUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (RechargeUser item : list) { + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译汇率名称 + if (item.getRateName() != null && !item.getRateName().isEmpty()) { + item.setRateName(languageTranslationUtil.translate(item.getRateName(), lang)); + } + + // 翻译支付方式 + if (item.getPayModel() != null && !item.getPayModel().isEmpty()) { + item.setPayModel(languageTranslationUtil.translate(item.getPayModel(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译消费用户列表 + */ + private void translateConsumeUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (ConsumeUser item : list) { + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译市场名称 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译直播消费列表 + */ + private void translateBeanConsumeLiveList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeLive item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译礼物名称 + if (item.getGift() != null && !item.getGift().isEmpty()) { + item.setGift(languageTranslationUtil.translate(item.getGift(), lang)); + } + + // 翻译频道名称 + if (item.getLiveChannel() != null && !item.getLiveChannel().isEmpty()) { + item.setLiveChannel(languageTranslationUtil.translate(item.getLiveChannel(), lang)); + } + + // 翻译直播间名称 + if (item.getLiveName() != null && !item.getLiveName().isEmpty()) { + item.setLiveName(languageTranslationUtil.translate(item.getLiveName(), lang)); + } + } + } + + /** + * 翻译铁粉消费列表 + */ + private void translateBeanConsumeFanList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeFan item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译频道名称 + if (item.getChannel() != null && !item.getChannel().isEmpty()) { + item.setChannel(languageTranslationUtil.translate(item.getChannel(), lang)); + } + + // 翻译会员类型 + if (item.getType() != null && !item.getType().isEmpty()) { + item.setType(languageTranslationUtil.translate(item.getType(), lang)); + } + } + } + + /** + * 翻译文章消费列表 + */ + private void translateBeanConsumeArticleList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanConsumeArticle item : list) { + // 翻译地区/分部 + if (item.getDept() != null && !item.getDept().isEmpty()) { + item.setDept(languageTranslationUtil.translate(item.getDept(), lang)); + } + + // 翻译类型 + if (item.getType() != null && !item.getType().isEmpty()) { + item.setType(languageTranslationUtil.translate(item.getType(), lang)); + } + + // 翻译文章/视频标题 + if (item.getArticleName() != null && !item.getArticleName().isEmpty()) { + item.setArticleName(languageTranslationUtil.translate(item.getArticleName(), lang)); + } + } + } + + /** + * 翻译金豆系统充值列表 + */ + private void translateBeanSystemRechargeInfoList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanSystemRechargeInfo item : list) { + // 翻译所属地区 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + } + } + + /** + * 翻译金豆在线充值列表 + */ + private void translateBeanOnlineRechargeInfoList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (BeanOnlineRechargeInfo item : list) { + // 翻译所属地区 + if (item.getMarket() != null && !item.getMarket().isEmpty()) { + item.setMarket(languageTranslationUtil.translate(item.getMarket(), lang)); + } + + // 翻译充值平台 + if (item.getPlatform() != null && !item.getPlatform().isEmpty()) { + item.setPlatform(languageTranslationUtil.translate(item.getPlatform(), lang)); + } + } + } + + /** + * 翻译现金退款记录列表 + */ + private void translateCashRecordDTOList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (CashRecordDTO item : list) { + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + + // 翻译退款理由 + if (item.getRefundReason() != null && !item.getRefundReason().isEmpty()) { + item.setRefundReason(languageTranslationUtil.translate(item.getRefundReason(), lang)); + } + + // 翻译驳回理由 + if (item.getRejectReason() != null && !item.getRejectReason().isEmpty()) { + item.setRejectReason(languageTranslationUtil.translate(item.getRejectReason(), lang)); + } + + // 翻译退款备注 + if (item.getRefundRemark() != null && !item.getRefundRemark().isEmpty()) { + item.setRefundRemark(languageTranslationUtil.translate(item.getRefundRemark(), lang)); + } + } + } + + /** + * 翻译现金收款列表 + */ + private void translateCashCollectionList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + + for (CashCollection item : list) { + // 翻译所属地区名称 + if (item.getMarketName() != null && !item.getMarketName().isEmpty()) { + item.setMarketName(languageTranslationUtil.translate(item.getMarketName(), lang)); + } + + // 翻译活动名称 + if (item.getActivity() != null && !item.getActivity().isEmpty()) { + item.setActivity(languageTranslationUtil.translate(item.getActivity(), lang)); + } + + // 翻译商品名称 + if (item.getGoodsName() != null && !item.getGoodsName().isEmpty()) { + item.setGoodsName(languageTranslationUtil.translate(item.getGoodsName(), lang)); + } + + // 翻译数量单位 + if (item.getNumUnit() != null && !item.getNumUnit().isEmpty()) { + item.setNumUnit(languageTranslationUtil.translate(item.getNumUnit(), lang)); + } + + // 翻译付款币种 + if (item.getPaymentCurrency() != null && !item.getPaymentCurrency().isEmpty()) { + item.setPaymentCurrency(languageTranslationUtil.translate(item.getPaymentCurrency(), lang)); + } + + // 翻译到账币种 + if (item.getReceivedCurrency() != null && !item.getReceivedCurrency().isEmpty()) { + item.setReceivedCurrency(languageTranslationUtil.translate(item.getReceivedCurrency(), lang)); + } + + // 翻译支付方式 + if (item.getPayType() != null && !item.getPayType().isEmpty()) { + item.setPayType(languageTranslationUtil.translate(item.getPayType(), lang)); + } + + // 翻译到账地区 + if (item.getReceivedMarket() != null && !item.getReceivedMarket().isEmpty()) { + item.setReceivedMarket(languageTranslationUtil.translate(item.getReceivedMarket(), lang)); + } + + // 翻译备注 + if (item.getRemark() != null && !item.getRemark().isEmpty()) { + item.setRemark(languageTranslationUtil.translate(item.getRemark(), lang)); + } + + // 翻译驳回理由 + if (item.getRejectReason() != null && !item.getRejectReason().isEmpty()) { + item.setRejectReason(languageTranslationUtil.translate(item.getRejectReason(), lang)); + } + + // 翻译到账备注 + if (item.getReceivedRemark() != null && !item.getReceivedRemark().isEmpty()) { + item.setReceivedRemark(languageTranslationUtil.translate(item.getReceivedRemark(), lang)); + } + } + } + + /** + * 翻译用户金币余额列表 + */ + private void translateUserList(List list, String lang) { + if (list == null || list.isEmpty() || "zh_CN".equalsIgnoreCase(lang) || "zh".equalsIgnoreCase(lang)) { + return; + } + for (User item : list) { + // 翻译所属地区名称 + if (item.getMarketName() != null && !item.getMarketName().isEmpty()) { + item.setMarketName(languageTranslationUtil.translate(item.getMarketName(), lang)); + } + } + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 9e9dc79..3924a98 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -90,7 +90,7 @@ spring: file: upload: - url: http://39.101.133.168:8828/hljw/api/aws/upload + url: http://api.homilychart.com/hljwgo/api/file/upload feishu: webhook: url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 591474d..a0d6dc0 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -78,9 +78,9 @@ spring: data: redis: database: 0 - host: 54.255.212.181 - port: 10703 - password: Ngc0FYUTA6h3wC5J + host: localhost + port: 6379 + password: 123456 lettuce: pool: @@ -90,7 +90,7 @@ spring: min-idle: 10 file: upload: - url: http://39.101.133.168:8828/hljw/api/aws/upload + url: http://api.homilychart.com/hljwgo/api/file/upload feishu: webhook: url: https://open.feishu.cn/open-apis/bot/v2/hook/384c78aa-8df1-498b-9c47-04e890ed9877 diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7231556..b3dca39 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -41,7 +41,7 @@ upload: file: upload: - url: http://39.101.133.168:8828/hljw/api/aws/upload + url: http://api.homilychart.com/hljwgo/api/file/upload bean: recharge: # url: http://api.homilychart.com/hljwgo/api/wallet/recharge diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 5ee0f15..3a102fd 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -173,7 +173,8 @@ crc.voucher, crc.remark, crc.payment_currency, - crc.payment_amount + crc.payment_amount, + crr.reject_reason from cash_record_refund crr left join lhl_audit la on la.id = crr.audit_id left join cash_record_collection crc on crc.id = crr.related_id @@ -250,7 +251,8 @@ la.area_servise, la.area_finance, la.area_charge, - la.head_finance + la.head_finance, + crr.reject_reason from cash_record_refund crr left join cash_record_collection crc on crc.id = crr.related_id left join lhl_audit la on la.id = crr.audit_id @@ -328,6 +330,8 @@ crc.num_unit, crr.refund_model, crr.refund_currency, + crr.permanent_gold, + crr.free_gold, crr.refund_amount, crr.refund_channels, crr.refund_voucher, @@ -340,7 +344,8 @@ la.area_servise, la.area_finance, la.area_charge, - la.head_finance + la.head_finance, + crr.reject_reason from cash_record_refund crr left join cash_record_collection crc on crc.id = crr.related_id left join lhl_audit la on la.id = crr.audit_id