From 189756284a9ded833f1da2eaddaa605439391014 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 27 Mar 2026 11:26:06 +0800 Subject: [PATCH 01/17] =?UTF-8?q?20260327=E6=B6=88=E8=80=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/password/ExcelProcessor.java | 55 +++++++++++----------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/example/demo/password/ExcelProcessor.java b/src/main/java/com/example/demo/password/ExcelProcessor.java index f0921d9..36c08be 100644 --- a/src/main/java/com/example/demo/password/ExcelProcessor.java +++ b/src/main/java/com/example/demo/password/ExcelProcessor.java @@ -19,44 +19,43 @@ public class ExcelProcessor { String inputFilePath = "D:\\地区导出.xls"; // 输入文件路径 String outputFilePath = "D:\\output.xlsx"; // 输出文件路径 - try (FileInputStream fis = new FileInputStream(new File(inputFilePath)); - Workbook workbook = new HSSFWorkbook(fis); - FileOutputStream fos = new FileOutputStream(new File(outputFilePath))) { + try (FileInputStream fis = new FileInputStream(inputFilePath); + HSSFWorkbook oldWorkbook = new HSSFWorkbook(fis)) { - Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 + Sheet sheet = oldWorkbook.getSheetAt(0); RestTemplate restTemplate = new RestTemplate(); - // 创建新的输出工作簿 - Workbook outputWorkbook = new XSSFWorkbook(); - Sheet outputSheet = outputWorkbook.createSheet("Result"); - Row headerRow = outputSheet.createRow(0); - headerRow.createCell(0).setCellValue("jwcode"); - headerRow.createCell(1).setCellValue("name"); - headerRow.createCell(2).setCellValue("country"); + // 2. 单独创建新xlsx + 输出流(必须放一起自动关闭) + try (FileOutputStream fos = new FileOutputStream(outputFilePath); + XSSFWorkbook outputWorkbook = new XSSFWorkbook()) { - int outputRowIndex = 1; + Sheet outputSheet = outputWorkbook.createSheet("Result"); + Row headerRow = outputSheet.createRow(0); + headerRow.createCell(0).setCellValue("jwcode"); + headerRow.createCell(1).setCellValue("name"); + headerRow.createCell(2).setCellValue("country"); - // 遍历输入文件的每一行 - for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 假设第一行是标题 - Row row = sheet.getRow(i); - if (row == null) continue; + int outputRowIndex = 1; - String jwcode = row.getCell(1).getStringCellValue(); // 假设 jwcode 在第一列 - System.out.println("Processing jwcode: " + jwcode); + for (int i = 1; i <= sheet.getLastRowNum(); i++) { + Row row = sheet.getRow(i); + if (row == null) continue; - // 调用接口 - Map result = callApi(jwcode, restTemplate); + String jwcode = row.getCell(1).getStringCellValue(); + Map result = callApi(jwcode, restTemplate); - // 写入结果到新 Excel 文件 - Row outputRow = outputSheet.createRow(outputRowIndex++); - outputRow.createCell(0).setCellValue(jwcode); - outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知")); - outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知")); + Row outputRow = outputSheet.createRow(outputRowIndex++); + outputRow.createCell(0).setCellValue(jwcode); + outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知")); + outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知")); + } + + // 3. 写入 + 强制刷盘 + outputWorkbook.write(fos); + fos.flush(); } - // 保存输出文件 - outputWorkbook.write(fos); - System.out.println("Processing completed. Output file saved to: " + outputFilePath); + System.out.println("文件生成成功:" + outputFilePath); } catch (Exception e) { e.printStackTrace(); From 0e4aa60bff3a903ca7f2b03938cbe7484ff608cf Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 27 Mar 2026 11:29:53 +0800 Subject: [PATCH 02/17] =?UTF-8?q?20260327=E6=B6=88=E8=80=97=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/password/ExcelProcessor.java | 55 +++++++++++----------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/example/demo/password/ExcelProcessor.java b/src/main/java/com/example/demo/password/ExcelProcessor.java index 36c08be..f0921d9 100644 --- a/src/main/java/com/example/demo/password/ExcelProcessor.java +++ b/src/main/java/com/example/demo/password/ExcelProcessor.java @@ -19,43 +19,44 @@ public class ExcelProcessor { String inputFilePath = "D:\\地区导出.xls"; // 输入文件路径 String outputFilePath = "D:\\output.xlsx"; // 输出文件路径 - try (FileInputStream fis = new FileInputStream(inputFilePath); - HSSFWorkbook oldWorkbook = new HSSFWorkbook(fis)) { + try (FileInputStream fis = new FileInputStream(new File(inputFilePath)); + Workbook workbook = new HSSFWorkbook(fis); + FileOutputStream fos = new FileOutputStream(new File(outputFilePath))) { - Sheet sheet = oldWorkbook.getSheetAt(0); + Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 RestTemplate restTemplate = new RestTemplate(); - // 2. 单独创建新xlsx + 输出流(必须放一起自动关闭) - try (FileOutputStream fos = new FileOutputStream(outputFilePath); - XSSFWorkbook outputWorkbook = new XSSFWorkbook()) { + // 创建新的输出工作簿 + Workbook outputWorkbook = new XSSFWorkbook(); + Sheet outputSheet = outputWorkbook.createSheet("Result"); + Row headerRow = outputSheet.createRow(0); + headerRow.createCell(0).setCellValue("jwcode"); + headerRow.createCell(1).setCellValue("name"); + headerRow.createCell(2).setCellValue("country"); - Sheet outputSheet = outputWorkbook.createSheet("Result"); - Row headerRow = outputSheet.createRow(0); - headerRow.createCell(0).setCellValue("jwcode"); - headerRow.createCell(1).setCellValue("name"); - headerRow.createCell(2).setCellValue("country"); + int outputRowIndex = 1; - int outputRowIndex = 1; + // 遍历输入文件的每一行 + for (int i = 1; i <= sheet.getLastRowNum(); i++) { // 假设第一行是标题 + Row row = sheet.getRow(i); + if (row == null) continue; - for (int i = 1; i <= sheet.getLastRowNum(); i++) { - Row row = sheet.getRow(i); - if (row == null) continue; + String jwcode = row.getCell(1).getStringCellValue(); // 假设 jwcode 在第一列 + System.out.println("Processing jwcode: " + jwcode); - String jwcode = row.getCell(1).getStringCellValue(); - Map result = callApi(jwcode, restTemplate); + // 调用接口 + Map result = callApi(jwcode, restTemplate); - Row outputRow = outputSheet.createRow(outputRowIndex++); - outputRow.createCell(0).setCellValue(jwcode); - outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知")); - outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知")); - } - - // 3. 写入 + 强制刷盘 - outputWorkbook.write(fos); - fos.flush(); + // 写入结果到新 Excel 文件 + Row outputRow = outputSheet.createRow(outputRowIndex++); + outputRow.createCell(0).setCellValue(jwcode); + outputRow.createCell(1).setCellValue(result.getOrDefault("name", "未知")); + outputRow.createCell(2).setCellValue(result.getOrDefault("country", "未知")); } - System.out.println("文件生成成功:" + outputFilePath); + // 保存输出文件 + outputWorkbook.write(fos); + System.out.println("Processing completed. Output file saved to: " + outputFilePath); } catch (Exception e) { e.printStackTrace(); From 2b226425987eaf7d81fba5ddcc6d0254c9dcc94d Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 27 Mar 2026 11:33:07 +0800 Subject: [PATCH 03/17] =?UTF-8?q?20260327=20=E5=AF=BC=E5=87=BA=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/Export/ExportServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/Export/ExportServiceImpl.java b/src/main/java/com/example/demo/Export/ExportServiceImpl.java index 857e770..ecc0213 100644 --- a/src/main/java/com/example/demo/Export/ExportServiceImpl.java +++ b/src/main/java/com/example/demo/Export/ExportServiceImpl.java @@ -145,7 +145,7 @@ public class ExportServiceImpl implements ExportService { } else if (dto instanceof FundDTO fundDTO){ fundDTO.setAccount(Integer.valueOf(account)); fundDTO.setUrl(""); - fundDTO.setFileName(generateFileName("资金明细", adminName, lang)); + fundDTO.setFileName(generateFileName("资金流水明细", adminName, lang)); fundDTO.setDataNum(0); } else if(dto instanceof UserWalletRecordDTO userWalletRecordDTO){ userWalletRecordDTO.setAccount(Integer.valueOf(account)); @@ -434,7 +434,7 @@ public class ExportServiceImpl implements ExportService { @Override public Result addExportPerformance(PerformanceDTO dto) { - return addExport(dto, "业绩明细", "performance:queue:export_queue", "performanceDTO", dto.getLang()); + return addExport(dto, "业绩归属明细", "performance:queue:export_queue", "performanceDTO", dto.getLang()); } @Override From e70cf983e2756c27a2d442a978dd7e5c4c5f7ce3 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 27 Mar 2026 13:37:12 +0800 Subject: [PATCH 04/17] =?UTF-8?q?20260327=20=E9=92=B1=E5=8C=85=E4=BD=99?= =?UTF-8?q?=E9=A2=9D=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/cash/CashCollectionController.java | 43 +++++++++++++++++----- .../example/demo/domain/vo/cash/UserWalletVO.java | 7 ++++ .../demo/mapper/cash/CashCollectionMapper.java | 10 ++++- .../demo/service/cash/CashCollectionService.java | 2 +- .../cash/CashCollectionServiceImpl.java | 7 ++-- .../serviceImpl/coin/ExportExcelServiceImpl.java | 36 +++++++++++++++++- .../serviceImpl/coin/GoldDetailServiceImpl.java | 26 ------------- .../resources/cashMapper/CashCollectionMapper.xml | 26 ++++++++++++- 8 files changed, 113 insertions(+), 44 deletions(-) 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 8555932..f4960be 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -368,17 +368,17 @@ public class CashCollectionController { String market = null; Integer pageNum = null; Integer pageSize = null; + String sortField = null; + String sortOrder = null; + Integer sortWalletId = null; if (params.containsKey("jwcode")) { Object jwcodeObj = params.get("jwcode"); - if (jwcodeObj != null) { - String jwcodeStr = jwcodeObj.toString(); - if (!jwcodeStr.isEmpty()) { - try { - jwcode = ((Number) jwcodeObj).intValue(); - } catch (Exception e) { - // 如果转换失败,保持为 null - } + if (jwcodeObj != null && !jwcodeObj.toString().isEmpty()) { + try { + jwcode = ((Number) jwcodeObj).intValue(); + } catch (Exception e) { + // 如果转换失败,保持为 null } } } @@ -412,6 +412,31 @@ public class CashCollectionController { } } + if (params.containsKey("sortField")) { + Object sortFieldObj = params.get("sortField"); + if (sortFieldObj != null && !sortFieldObj.toString().isEmpty()) { + sortField = sortFieldObj.toString(); + } + } + + if (params.containsKey("sortOrder")) { + Object sortOrderObj = params.get("sortOrder"); + if (sortOrderObj != null && !sortOrderObj.toString().isEmpty()) { + sortOrder = sortOrderObj.toString(); + } + } + + if (params.containsKey("sortWalletId")) { + Object sortWalletIdObj = params.get("sortWalletId"); + if (sortWalletIdObj != null) { + try { + sortWalletId = ((Number) sortWalletIdObj).intValue(); + } catch (Exception e) { + // 如果转换失败,保持为 null + } + } + } + if (pageNum == null) { pageNum = 1; } @@ -419,7 +444,7 @@ public class CashCollectionController { pageSize = 10; } - PageInfo result = cashCollectionService.selectUserWallets(jwcode, market, pageNum, pageSize); + PageInfo result = cashCollectionService.selectUserWallets(jwcode, market, pageNum, pageSize, sortField, sortOrder, sortWalletId); // 对返回结果进行多语言转换 if (result != null && result.getList() != null) { diff --git a/src/main/java/com/example/demo/domain/vo/cash/UserWalletVO.java b/src/main/java/com/example/demo/domain/vo/cash/UserWalletVO.java index 91b9e71..413f66a 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/UserWalletVO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/UserWalletVO.java @@ -26,4 +26,11 @@ public class UserWalletVO { private BigDecimal currentPermanentGold; // 当前永久金币数量 private List walletList; // 钱包列表(仅用于查询结果) + + @ExcelIgnore + private String sortField; // 排序字段 + @ExcelIgnore + private String sortOrder; // 排序顺序 + @ExcelIgnore + private Integer sortWalletId; // 用于排序的钱包 ID(指定按哪个钱包排序) } diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java index 7756c78..3804c42 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -120,9 +120,15 @@ public interface CashCollectionMapper { // 查询符合条件的精网号列表(用于分页,每个精网号算一条记录) List selectDistinctJwcodes(@Param("jwcode") Integer jwcode, - @Param("market") String market); + @Param("market") String market, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder, + @Param("sortWalletId") Integer sortWalletId); // 根据精网号列表查询用户的所有钱包信息 List selectUserWalletsByJwcodes(@Param("jwcodeList") List jwcodeList, - @Param("market") String market); + @Param("market") String market, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder, + @Param("sortWalletId") Integer sortWalletId); } 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 d7d1694..e6a03dd 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -55,5 +55,5 @@ public interface CashCollectionService { Integer pageNum, Integer pageSize, Integer jwcode, Integer walletId); // 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区)(分页) - PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize); + PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize, String sortField, String sortOrder, Integer sortWalletId); } 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 e0be2aa..8d18921 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -614,10 +614,10 @@ public class CashCollectionServiceImpl implements CashCollectionService { // 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区)(分页) @Override - public PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize) { + public PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize, String sortField, String sortOrder, Integer sortWalletId) { // 第一步:先查询符合条件的精网号列表(分页) PageHelper.startPage(pageNum, pageSize); - List jwcodeList = cashCollectionMapper.selectDistinctJwcodes(jwcode, market); + List jwcodeList = cashCollectionMapper.selectDistinctJwcodes(jwcode, market, sortField, sortOrder, sortWalletId); PageInfo jwcodePageInfo = new PageInfo<>(jwcodeList); // 如果没有符合条件的记录,直接返回空结果 @@ -632,7 +632,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { } // 第二步:根据精网号列表查询用户的钱包信息(不分页,返回这些精网号的所有钱包) - List allWallets = cashCollectionMapper.selectUserWalletsByJwcodes(jwcodeList, market); + List allWallets = cashCollectionMapper.selectUserWalletsByJwcodes(jwcodeList, market, sortField, sortOrder, sortWalletId); // 第三步:将钱包信息按精网号分组组装 Map userWalletMap = new LinkedHashMap<>(); @@ -672,6 +672,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { return resultPageInfo; } + /** * 校验钱包 ID 和到账地区的对应关系 * @param walletId 钱包 ID 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 f932e74..09d94ac 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -544,6 +544,9 @@ public class ExportExcelServiceImpl implements ExportExcelService { String market = null; Integer pageNum = userWalletDTONode.path("page").asInt(1); Integer pageSize = userWalletDTONode.path("pageSize").asInt(20); + String sortField = null; + String sortOrder = null; + Integer sortWalletId = null; JsonNode jwcodeNode = userWalletDTONode.path("jwcode"); if (!jwcodeNode.isMissingNode() && !jwcodeNode.isNull()) { @@ -566,6 +569,37 @@ public class ExportExcelServiceImpl implements ExportExcelService { } } + // 获取排序字段 + JsonNode sortFieldNode = userWalletDTONode.path("sortField"); + if (!sortFieldNode.isMissingNode() && !sortFieldNode.isNull()) { + String sortFieldStr = sortFieldNode.asText(); + if (!sortFieldStr.isEmpty()) { + sortField = sortFieldStr.trim(); + } + } + + // 获取排序顺序 + JsonNode sortOrderNode = userWalletDTONode.path("sortOrder"); + if (!sortOrderNode.isMissingNode() && !sortOrderNode.isNull()) { + String sortOrderStr = sortOrderNode.asText(); + if (!sortOrderStr.isEmpty()) { + sortOrder = sortOrderStr.trim(); + } + } + + // 获取用于排序的钱包 ID + JsonNode sortWalletIdNode = userWalletDTONode.path("sortWalletId"); + if (!sortWalletIdNode.isMissingNode() && !sortWalletIdNode.isNull()) { + String sortWalletIdStr = sortWalletIdNode.asText(); + if (!sortWalletIdStr.isEmpty()) { + try { + sortWalletId = Integer.parseInt(sortWalletIdStr.trim()); + } catch (NumberFormatException e) { + log.warn("排序钱包 ID 格式错误:{}", sortWalletIdStr); + } + } + } + // 从请求数据中获取语言设置 String lang = "zh_CN"; JsonNode langNode = rootNode.path("lang"); @@ -574,7 +608,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { } // 调用查询接口 - PageInfo result = cashCollectionService.selectUserWallets(jwcode, market, pageNum, pageSize); + PageInfo result = cashCollectionService.selectUserWallets(jwcode, market, pageNum, pageSize, sortField, sortOrder, sortWalletId); // 翻译处理 List flatList = new ArrayList<>(); diff --git a/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java index e39e6ee..9a75402 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java @@ -212,32 +212,6 @@ public class GoldDetailServiceImpl implements GoldDetailService { return Result.success(); } - /** - * 将类型数字转换为中文描述 - */ - private String convertTypeToString(Integer type) { - if (type == null) return ""; - switch (type) { - case 0: return "充值"; - case 1: return "消耗"; - case 2: return "退款"; - default: return "其他"; - } - } - - /** - * 填充金币明细数据的类型描述 - */ - private void fillTypeDescriptions(List goldDetails) { - if (goldDetails != null && !goldDetails.isEmpty()) { - for (GoldDetail detail : goldDetails) { - if (detail.getType() != null) { - detail.setTypeDesc(convertTypeToString(detail.getType())); - } - } - } - } - //更新用户消费次数 @Override public Result updateConsumeNum() { diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index ed027ef..6b97e4f 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -481,7 +481,18 @@ AND wr.wallet_id IS NOT NULL - ORDER BY u.jwcode + + + ORDER BY ( + SELECT COALESCE(wr2.current_permanent_gold, 0) + FROM user_region_wallet wr2 + WHERE wr2.jwcode = u.jwcode AND wr2.wallet_id = #{sortWalletId} + ) ${sortOrder}, u.jwcode + + + ORDER BY u.jwcode + + @@ -508,7 +519,18 @@ AND wr.wallet_id IS NOT NULL - ORDER BY u.jwcode, wr.wallet_id + + + ORDER BY ( + SELECT COALESCE(wr2.current_permanent_gold, 0) + FROM user_region_wallet wr2 + WHERE wr2.jwcode = u.jwcode AND wr2.wallet_id = #{sortWalletId} + ) ${sortOrder}, u.jwcode, wr.wallet_id + + + ORDER BY u.jwcode, wr.wallet_id + + From 73484872f08064d6ad602633b40b51dfeb7a09a3 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 28 Mar 2026 10:53:41 +0800 Subject: [PATCH 05/17] =?UTF-8?q?20260328=20=E9=92=B1=E5=8C=85=E9=80=80?= =?UTF-8?q?=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceImpl/cash/CashRefundServiceImpl.java | 31 +--------------------- 1 file changed, 1 insertion(+), 30 deletions(-) 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 698ad2e..3a64f97 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -199,36 +199,7 @@ public class CashRefundServiceImpl implements RefundService { throw new Exception("请选择所属地区"); } if(cashRecordRefund.getWalletId() != null) { - String payType = cashRecordRefund.getPayType(); - Integer wallet = null; - if (payType == null || payType.trim().isEmpty()) { - throw new SystemException("未穿输支付方式"); - } - if (payType.equals("Stripe") || payType.equals("PaymentAsia")) { - wallet = 2; - } - if (payType.equals("FirstData") || payType.equals("Grabpay") || payType.equals("Nets") || payType.equals("PayPal") || payType.equals("IOS")) { - wallet = 5; - } - if (payType.equals("Stripe2")) { - wallet = 3; - } - if (payType.equals("Ipay88")) { - wallet = 4; - } - if (payType.equals("E-Transfer")) { - wallet = 6; - } - if (payType.equals("paysolution")) { - wallet = 8; - } - String payType1 = languageTranslationUtil.translate("银行转账", lang); - String payType2 = languageTranslationUtil.translate("现金", lang); - String payType3 = languageTranslationUtil.translate("支票", lang); - String payType4 = languageTranslationUtil.translate("刷卡", lang); - if (payType.equals(payType1) || payType.equals(payType2) || payType.equals(payType3) || payType.equals(payType4)) { - wallet = cashRecordRefund.getWalletId(); - } + Integer wallet = cashRecordRefund.getWalletId(); UserRegionWallet userRegionWallet = walletMapper.selectWallet(cashRecordRefund.getJwcode(), wallet); User user = userMapper.selectUserByJwcode(cashRecordRefund.getJwcode()); if (user.getCurrentFreeJune().add(user.getCurrentFreeDecember()).compareTo(BigDecimal.valueOf(cashRecordRefund.getPartRefundFree())) < 0) { From fdc5daa5e158d0e763b17a684bf7380468d6607b Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 28 Mar 2026 17:05:09 +0800 Subject: [PATCH 06/17] =?UTF-8?q?20260328=20=E9=92=B1=E5=8C=85=E6=B6=88?= =?UTF-8?q?=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java index 3de69fc..e899be3 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -142,12 +142,16 @@ public class RedServiceImpl implements RedService { return "{\"success\":false,\"msg\":\"网络异常\"}"; } } - @Override + @Override public String sendConsumeJwcode(Integer jwcode, List redIds,String orderId) { try { - String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"coupon_ids",redIds,"order_id",orderId)); + java.util.Map paramMap = new java.util.HashMap<>(); + paramMap.put("jwcode", jwcode); + paramMap.put("coupon_ids", redIds); + paramMap.put("order_id", orderId); + String body = JSON.toJSONString(paramMap); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换 + .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL 记得换 .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); From 28f295d74a98c9115f1f45f152d585873fa21f60 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 28 Mar 2026 17:11:25 +0800 Subject: [PATCH 07/17] =?UTF-8?q?20260328=20=E9=92=B1=E5=8C=85=E6=B6=88?= =?UTF-8?q?=E8=80=971?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java index e899be3..da698f2 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -145,13 +145,9 @@ public class RedServiceImpl implements RedService { @Override public String sendConsumeJwcode(Integer jwcode, List redIds,String orderId) { try { - java.util.Map paramMap = new java.util.HashMap<>(); - paramMap.put("jwcode", jwcode); - paramMap.put("coupon_ids", redIds); - paramMap.put("order_id", orderId); - String body = JSON.toJSONString(paramMap); + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"coupon_ids",redIds,"order_id",orderId)); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL 记得换 + .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换 .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); From 5f6f1cd3d7e11ce0843a5e8f750dbbad042a5302 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Mon, 30 Mar 2026 15:05:31 +0800 Subject: [PATCH 08/17] =?UTF-8?q?3.26=20=E5=85=8D=E8=B4=B9=E9=87=91?= =?UTF-8?q?=E5=B8=81=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java | 1 + .../com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 0e59467..4caf9ee 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -920,6 +920,7 @@ public class MysqlServiceImpl implements MysqlService { case 7 -> 4; // 其他 → 西南钱包 case 10 -> 8; case 15 -> 3; + case 16 -> 6; default -> 1; }; } 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 3a64f97..6e5c4cd 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -476,6 +476,13 @@ public class CashRefundServiceImpl implements RefundService { user.setCurrentPermanentGold(BigDecimal.valueOf(-userGoldRecord.getPermanentGold())); //当前永久金币 user.setCurrentFreeJune(BigDecimal.valueOf(-userGoldRecord.getFreeJune())); //当前六月免费金币 user.setCurrentFreeDecember(BigDecimal.valueOf(-userGoldRecord.getFreeDecember())); //当前十二月免费金币 + User usergold = userMapper.selectUserByJwcode(userGoldRecord.getJwcode()); + if(usergold.getCurrentFreeJune().add(user.getCurrentFreeJune()).compareTo(BigDecimal.ZERO)<0){ + throw new RuntimeException("当前六月免费金币不足"); + } + if (usergold.getCurrentFreeDecember().add(user.getCurrentFreeDecember()).compareTo(BigDecimal.ZERO)<0){ + throw new RuntimeException("当前十二月免费金币不足"); + } auditMapper.updateUserGold(user); // 钱包更新 - 按原始充值流水 wallet_id 优先级顺序原路退回(1-10,越小优先级越高) From 573c16914d4c30992f642b44c0fb82788fc10b8c Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Tue, 31 Mar 2026 13:30:06 +0800 Subject: [PATCH 09/17] =?UTF-8?q?20260331=20=E9=80=80=E6=AC=BE=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/controller/cash/CashCollectionController.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 f4960be..afa9fad 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -677,6 +677,13 @@ public class CashCollectionController { cashRecord.getPaymentCurrencyOrig(), languageCode); cashRecord.setPaymentCurrencyOrig(chinesePaymentCurrencyOrig); } + + // 转换数量单位 + if (cashRecord.getNumUnit() != null && !cashRecord.getNumUnit().isEmpty()) { + String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( + cashRecord.getNumUnit(), languageCode); + cashRecord.setNumUnit(chineseNumUnit); + } } } From 03fbac8a778b6d950dbda70521b202dae31d5e3b Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 2 Apr 2026 16:40:08 +0800 Subject: [PATCH 10/17] =?UTF-8?q?04-02=20=E9=80=80=E6=AC=BE=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=90=8C=E6=AD=A5=E5=B1=95=E7=A4=BA=E5=88=B0=E8=B5=84?= =?UTF-8?q?=E9=87=91=E6=B5=81=E6=B0=B4=E8=B4=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceImpl/cash/CashRefundServiceImpl.java | 66 ++++++++-------- src/main/resources/application-test.yml | 7 +- src/main/resources/cashMapper/CashRefundMapper.xml | 88 ++++++++++++++++++---- 3 files changed, 109 insertions(+), 52 deletions(-) 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 698ad2e..fed4005 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -947,41 +947,6 @@ public class CashRefundServiceImpl implements RefundService { } List list = cashRefundMapper.selectfunds(fundsDTO); - // 2. 收集 status == 6 的记录 ID - List needQueryIds = new ArrayList<>(); - for (FundsDTO dto : list) { - if (dto.getStatus() != null && dto.getStatus() == 6) { - needQueryIds.add(dto.getId()); - } - } - - // 3. 批量查询 refundDetail 信息(用于负数处理) - if (!needQueryIds.isEmpty()) { - List detailList = cashRefundMapper.selectRefundCount(needQueryIds); - - Map detailMap = new HashMap<>(); - for (FundsDTO detail : detailList) { - // 假设 detail.getRelatedId() 对应主表的 id - detailMap.put(detail.getRelatedId(), detail); - } - - // 回填 refundAmount(取负)和 refundCurrency - for (FundsDTO dto : list) { - if (dto.getStatus() != null && dto.getStatus() == 6) { - FundsDTO detail = detailMap.get(dto.getId()); - if (detail != null) { - BigDecimal amount = detail.getRefundAmount(); - if (amount != null) { - dto.setRefundAmount(amount.negate()); // 转为负数 - } else { - dto.setRefundAmount(null); // 或设为 BigDecimal.ZERO - } - dto.setRefundCurrency(detail.getRefundCurrency()); - } - } - } - } - // 4. 收集所有需要转换的 regionId 和 currencyId Set regionIds = new HashSet<>(); Set currencyIds = new HashSet<>(); @@ -1033,6 +998,37 @@ public class CashRefundServiceImpl implements RefundService { // 8. 返回分页结果 return new PageInfo<>(list); } + + /** + * 复制 FundsDTO 对象(浅拷贝) + */ + private FundsDTO copyFundsDTO(FundsDTO source) { + FundsDTO target = new FundsDTO(); + target.setId(source.getId()); + target.setPayTime(source.getPayTime()); + target.setOrderCode("TK" + source.getOrderCode()); + target.setReceivedMarket(source.getReceivedMarket()); + target.setPerformanceMarket(source.getPerformanceMarket()); + target.setName(source.getName()); + target.setJwcode(source.getJwcode()); + target.setIncomeType(source.getIncomeType()); + target.setGoodNum(source.getGoodNum()); + target.setPayType(source.getPayType()); + target.setReceivedCurrency(source.getReceivedCurrency()); + target.setPaymentAmount(source.getPaymentAmount()); + target.setHandlingCharge(source.getHandlingCharge()); + target.setReceivedAmount(source.getReceivedAmount()); + target.setMarket(source.getMarket()); + target.setMarketName(source.getMarketName()); + target.setMarkets(source.getMarkets()); + target.setPerformanceMarkets(source.getPerformanceMarkets()); + target.setPaymentCurrency(source.getPaymentCurrency()); + target.setPaymentCurrencyName(source.getPaymentCurrencyName()); + target.setReceivedCurrencyName(source.getReceivedCurrencyName()); + target.setStatus(source.getStatus()); + target.setStatusName(source.getStatusName()); + return target; + } /** * 计算用户指定钱包列表的总可用余额 * @param jwcode 用户标识 diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 90ae516..2204de4 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -81,9 +81,10 @@ spring: data: redis: database: 0 - host: localhost - port: 6379 - password: 123456 + host: 54.255.212.181 + port: 10703 + password: Ngc0FYUTA6h3wC5J + lettuce: pool: diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 724ad84..4bff9d2 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -446,6 +446,7 @@ + From fa0da36a533ae6432ab1d56b5dfc2a23df8e9c04 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 3 Apr 2026 14:11:58 +0800 Subject: [PATCH 12/17] =?UTF-8?q?20260403=20=E4=BA=A4=E6=98=93=E5=B8=81?= =?UTF-8?q?=E7=A7=8D=EF=BC=88=E5=85=85=E5=80=BC=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/domain/entity/UserWalletRecord.java | 3 ++- .../java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java | 1 + src/main/resources/cashMapper/CashCollectionMapper.xml | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/domain/entity/UserWalletRecord.java b/src/main/java/com/example/demo/domain/entity/UserWalletRecord.java index b751d6a..60e4365 100644 --- a/src/main/java/com/example/demo/domain/entity/UserWalletRecord.java +++ b/src/main/java/com/example/demo/domain/entity/UserWalletRecord.java @@ -14,7 +14,8 @@ public class UserWalletRecord { private Integer id; // 主键 ID private Integer jwcode; // 精网号 private Integer walletId; // 钱包 ID - private Integer type; // 交易类型(0=充值,1=消耗,2=退款) + private Integer type; // 交易类型(0=充值,1=消耗,2=退款,3=软件购买) + private String transactionCurrency; // 交易币种 private Integer amount; // 交易金额 private String orderCode; // 交易单号 private String description; // 交易说明 diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java index f89bff7..f8e98fa 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashAuditServiceImpl.java @@ -143,6 +143,7 @@ public class CashAuditServiceImpl implements CashAuditService { walletRecord.setJwcode(order.getJwcode()); walletRecord.setWalletId(walletId); walletRecord.setType(0); // 0=充值 + walletRecord.setTransactionCurrency("金币"); walletRecord.setAmount(order.getPermanentGold()); walletRecord.setOrderCode(orderCode); walletRecord.setDescription(order.getPayType()); diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index 8b1f67a..6c6721a 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -418,8 +418,8 @@ - INSERT INTO user_wallet_record (jwcode, wallet_id, type, amount, order_code, description, status, create_time) - VALUES (#{jwcode}, #{walletId}, #{type}, #{amount}, #{orderCode}, #{description}, #{status}, NOW()) + INSERT INTO user_wallet_record (jwcode, wallet_id, type, transaction_currency, amount, order_code, description, status, create_time) + VALUES (#{jwcode}, #{walletId}, #{type}, #{transactionCurrency}, #{amount}, #{orderCode}, #{description}, #{status}, NOW()) @@ -438,6 +438,7 @@ uwr.wallet_id, w.wallet_name as walletName, uwr.type, + uwr.transaction_currency, uwr.amount/100 as amount, uwr.order_code as orderCode, uwr.description, From 0841876f4df19cebb0f915cd840bc55bfc91c6eb Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 3 Apr 2026 14:23:34 +0800 Subject: [PATCH 13/17] =?UTF-8?q?20260403=20=E4=BA=A4=E6=98=93=E5=B8=81?= =?UTF-8?q?=E7=A7=8D=EF=BC=88=E6=B6=88=E8=80=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 4 +++- src/main/resources/mapper/ConsumeMapper.xml | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java index 73e8405..966c759 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -238,12 +238,14 @@ public class ConsumeServiceImpl implements ConsumeService { UserWalletRecord userWalletRecord = new UserWalletRecord(); userWalletRecord.setJwcode(consumeUser.getJwcode()); userWalletRecord.setWalletId(wallet.getWalletId()); + userWalletRecord.setType(1); // 1=消耗 + userWalletRecord.setTransactionCurrency("金币"); // 交易币种 userWalletRecord.setAmount(-deductAmount.intValue()); userWalletRecord.setOrderCode(userGoldRecord.getOrderCode()); userWalletRecord.setDescription("购买" + consumeUser.getGoodsName()); // 设置需要扣除的永久金币金额 updateWallet.setPermanentGold(deductAmount); - // 调用Mapper方法更新钱包余额 + // 调用 Mapper 方法更新钱包余额 consumeMapper.updateRegionWallet(updateWallet); consumeMapper.addRegionWalletRecord(userWalletRecord); } diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml index 9aaf3d0..8fb8754 100644 --- a/src/main/resources/mapper/ConsumeMapper.xml +++ b/src/main/resources/mapper/ConsumeMapper.xml @@ -376,13 +376,14 @@ WHERE id = #{id} - - + + INSERT INTO user_wallet_record jwcode, wallet_id, type, + transaction_currency, amount, order_code, description, @@ -394,6 +395,7 @@ #{jwcode}, #{walletId}, 1, + #{transactionCurrency}, #{amount}, #{orderCode}, #{description}, From ebefe887e73379ecf94c9c9af22bf59549a50b79 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 3 Apr 2026 14:56:45 +0800 Subject: [PATCH 14/17] =?UTF-8?q?20260403=20=E4=BA=A4=E6=98=93=E5=B8=81?= =?UTF-8?q?=E7=A7=8D=EF=BC=88=E9=80=80=E6=AC=BE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java | 1 + .../java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java | 1 + src/main/resources/mapper/WalletMapper.xml | 5 +++-- 3 files changed, 5 insertions(+), 2 deletions(-) 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 31b010f..247acd1 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -558,6 +558,7 @@ public class CashRefundServiceImpl implements RefundService { // 5. 插入退款流水(amount 存负数,表示扣减) UserWalletRecord refundRecord = new UserWalletRecord(); refundRecord.setType(2); // 充值退款类型 + refundRecord.setTransactionCurrency("金币"); // 交易币种 refundRecord.setJwcode(userGoldRecord.getJwcode()); refundRecord.setWalletId(walletId); refundRecord.setAmount(refundAmount.negate().intValue()); // 🔥 负数扣款 diff --git a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java index 00e6305..d2d096f 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -252,6 +252,7 @@ public class AuditServiceImpl implements AuditService { refundRecord.setJwcode(order.getJwcode()); refundRecord.setWalletId(walletId); refundRecord.setType(2); // 退款类型 + refundRecord.setTransactionCurrency("金币"); // 交易币种 refundRecord.setAmount(refundAmount.intValue()); // 🔥 退款存正数 refundRecord.setOrderCode(order.getOrderCode()); if(refundModel==0){ diff --git a/src/main/resources/mapper/WalletMapper.xml b/src/main/resources/mapper/WalletMapper.xml index cd25c87..171d937 100644 --- a/src/main/resources/mapper/WalletMapper.xml +++ b/src/main/resources/mapper/WalletMapper.xml @@ -2,8 +2,8 @@ - insert into user_wallet_record(jwcode, wallet_id, type, amount, order_code, description, status) - values(#{jwcode}, #{walletId}, #{type}, #{amount}, #{orderCode}, #{description}, 1) + insert into user_wallet_record(jwcode, wallet_id, type, transaction_currency, amount, order_code, description, status) + values(#{jwcode}, #{walletId}, #{type}, #{transactionCurrency}, #{amount}, #{orderCode}, #{description}, 1) insert into user_region_wallet(jwcode, wallet_id, current_permanent_gold) @@ -45,6 +45,7 @@ select jwcode, wallet_id, type, + transaction_currency, amount, order_code, description, From f2e0373ea17600840c73141a1212432d20a255f6 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 3 Apr 2026 16:31:30 +0800 Subject: [PATCH 15/17] =?UTF-8?q?20260403=20=E7=BF=BB=E8=AF=91=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E5=B8=81=E7=A7=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/controller/cash/CashCollectionController.java | 4 ++++ src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java | 1 + 2 files changed, 5 insertions(+) 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 92879d0..6c2a197 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -799,6 +799,10 @@ public class CashCollectionController { String statusText = vo.getStatus() == 0 ? "正常" : "已退款"; vo.setStatusText(languageTranslationUtil.translate(statusText, lang)); } + // 翻译交易币种 + if (vo.getTransactionCurrency() != null) { + vo.setTransactionCurrency(languageTranslationUtil.translate(vo.getTransactionCurrency(), lang)); + } } } } diff --git a/src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java b/src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java index b474db5..7048c5b 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/UserWalletRecordVO.java @@ -26,6 +26,7 @@ public class UserWalletRecordVO { @ExcelIgnore private Integer type; // 交易类型(0=充值,1=消耗,2=退款) private String typeText; // 交易类型文本(多语言) + private String transactionCurrency; // 交易币种 private Integer amount; // 交易金额 private String orderCode; // 交易单号 private String description; // 交易说明 From f475af6314ba69ee8ac70a9ab3932b4e1122ce1c Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 3 Apr 2026 16:46:39 +0800 Subject: [PATCH 16/17] =?UTF-8?q?4.3=20=E4=BF=AE=E6=94=B9=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java index 4caf9ee..25ddd75 100644 --- a/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java +++ b/src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java @@ -313,7 +313,10 @@ public class MysqlServiceImpl implements MysqlService { data.operation_platform = rs.getString("operation_platform"); data.goods_name = rs.getString("goods_name"); data.uid = rs.getString("id"); - data.linkId = rs.getString("uid"); + // 👇👇👇 新增:去掉 linkId 首尾空格 👇👇👇 + String rawLinkId = rs.getString("uid"); + data.linkId = (rawLinkId != null) ? rawLinkId.trim() : null; + // 👆👆👆 新增结束 👆👆👆 // 预生成订单号(避免在循环中重复生成) String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); From f12b375365e292eeb6dfa5c58c5b55ac616c18ce Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Fri, 3 Apr 2026 17:01:30 +0800 Subject: [PATCH 17/17] =?UTF-8?q?20260403=20=E4=BF=AE=E5=A4=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java | 1 - src/main/java/com/example/demo/service/cash/CashCollectionService.java | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java index 2b5701f..9a72e61 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -128,7 +128,6 @@ public interface CashCollectionMapper { @Param("sortField") String sortField, @Param("sortOrder") String sortOrder, @Param("sortWalletId") Integer sortWalletId); - @Param("market") String market); // 添加流水--其他收入 void addExFund(@Param("addFundsDTO") CashCollection addFundsDTO); } 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 aecf56b..d8c9a0e 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -53,8 +53,7 @@ public interface CashCollectionService { Integer pageNum, Integer pageSize, Integer jwcode, Integer walletId); // 根据精网号和地区查询用户的所有钱包 ID 和金币数量(包含用户名和地区)(分页) - PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize); + PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize, String sortField, String sortOrder, Integer sortWalletId); // 添加流水--其他收入 String addExFund(CashCollection addFundsDTO); - PageInfo selectUserWallets(Integer jwcode, String market, Integer pageNum, Integer pageSize, String sortField, String sortOrder, Integer sortWalletId); }