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 + +