From 332f592161e65fd41ae37c956edc1b8b081316c9 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Mon, 19 Jan 2026 17:36:07 +0800 Subject: [PATCH 01/48] =?UTF-8?q?01-19=20=20=E5=90=8C=E6=AD=A5=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9EStripe2(sql)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/cashMapper/CashCollectionMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index a16d738..432f1de 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -230,7 +230,7 @@ success_time,ios_environment,ios_transaction_id,ios_receipt_data,firstdata_ipgTransactionId, add_time,is_synced from g_order - where is_synced=0 and state=1 and pay_style in(3,5,6,7,9) + where is_synced=0 and state=1 and pay_style in(3,5,6,7,9,10,15) and success_time>=1763136000 limit #{size} From a4f303fd8ce24edb8a34dec53c4c1357b0a2e829 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 20 Jan 2026 09:42:15 +0800 Subject: [PATCH 02/48] =?UTF-8?q?01-20=20=E5=90=8C=E6=AD=A5g=5Forder=20?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=AE=A1=E6=A0=B8=E6=97=B6=E9=97=B4=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/cashMapper/CashCollectionMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index f27df21..dbfdf6a 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -9,12 +9,12 @@ cash_record_collection(order_type,jwcode,name,market,activity, order_code,bank_code,goods_name,good_num,num_unit,permanent_gold,free_gold, payment_currency,payment_amount,received_market, - pay_type,pay_time,status,submitter_id,submitter_market,payload, + pay_type,pay_time,status,submitter_id,submitter_market,payload,audit_time, voucher,remark) values(#{orderType},#{jwcode},#{name},#{market},#{activity}, #{orderCode},#{bankCode},#{goodsName},#{goodNum},#{numUnit},#{permanentGold},#{freeGold},#{paymentCurrency}, #{paymentAmount},#{receivedMarket},#{payType},#{payTime}, - #{status},#{submitterId},#{submitterMarket},#{payload},#{voucher},#{remark}) + #{status},#{submitterId},#{submitterMarket},#{payload},#{auditTime},#{voucher},#{remark}) From 360c6a56c4616bf988c35839f99cf340fc8f93f7 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 20 Jan 2026 13:21:23 +0800 Subject: [PATCH 04/48] =?UTF-8?q?01-20=20=E5=BC=BA=E5=88=B6=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E7=9A=84=E8=A1=A5=E5=85=85=E8=AE=A2=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=BA=E5=B7=B2=E9=80=80=E6=AC=BE=EF=BC=88?= =?UTF-8?q?=E4=B8=8D=E8=AE=A9=E9=80=80=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f04f402..3de69fc 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -382,7 +382,7 @@ public class RedServiceImpl implements RedService { userGoldRecord.setTaskGold(-consumeUser.getTaskGold().intValue()); userGoldRecord.setRemark(consumeUser.getRemark()); userGoldRecord.setType((byte) 1); - userGoldRecord.setIsRefund((byte) 0); + userGoldRecord.setIsRefund((byte) 1); userGoldRecord.setPayPlatform("金币系统"); userGoldRecord.setAdminId(consumeUser.getAdminId()); userGoldRecord.setAuditStatus(1); From 6179472a6e1cc538fcdce70ab8d3492193b86a86 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Tue, 20 Jan 2026 16:55:31 +0800 Subject: [PATCH 05/48] =?UTF-8?q?01-20=20=E5=B7=A5=E4=BD=9C=E5=8F=B0?= =?UTF-8?q?=E5=9B=BE=E8=A1=A8=20=E4=BC=A0=E5=8F=82=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/controller/coin/WorkbenchController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java index 09fcacf..c95cbee 100644 --- a/src/main/java/com/example/demo/controller/coin/WorkbenchController.java +++ b/src/main/java/com/example/demo/controller/coin/WorkbenchController.java @@ -90,9 +90,9 @@ public class WorkbenchController { String languageCode = parseLanguageCode(lang); // 如果不是中文环境,将查询条件中的翻译文本转换为中文简体 - if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { - convertTranslatedFieldsToChinese(workbench, languageCode); - } + // if (!"zh".equalsIgnoreCase(languageCode) && !"zh_cn".equalsIgnoreCase(languageCode)) { + // convertTranslatedFieldsToChinese(workbench, languageCode); +//} String account = admin.getAccount(); List markets = workbenchService.getAdminMarket(account); From 2e3f6f8249774dd096ca657ea1fac99f73fa6c9f Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Wed, 21 Jan 2026 10:47:45 +0800 Subject: [PATCH 06/48] =?UTF-8?q?1.21=20=E5=AF=BC=E5=87=BA=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=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/Util/ExcelHeaderTranslator.java | 3 ++- src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java | 1 + src/main/resources/mapper/GoldDetailMapper.xml | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java index 30553a3..8b2c71e 100644 --- a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java +++ b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java @@ -493,6 +493,7 @@ public class ExcelHeaderTranslator { headers.put("taskGold", "任务金币"); headers.put("adminName", "提交人"); headers.put("auditTime", "更新时间"); + headers.put("price", "原价"); // 如果需要翻译,则翻译表头 if (!isChineseLanguage(lang)) { @@ -508,7 +509,7 @@ public class ExcelHeaderTranslator { public List getGoldDetailColumnOrder() { return Arrays.asList( "name", "jwcode", "market", "payPlatform", "typeDesc", "sumGold", - "permanentGold", "freeGold", "taskGold", "adminName", "auditTime" + "permanentGold", "freeGold", "taskGold", "adminName", "auditTime","price" ); } diff --git a/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java b/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java index 0b67e1d..1b20620 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java +++ b/src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java @@ -68,6 +68,7 @@ public class GoldDetail implements Serializable { @ExcelIgnore private String goodsName; private BigDecimal price; + @ExcelIgnore private String linkId; } diff --git a/src/main/resources/mapper/GoldDetailMapper.xml b/src/main/resources/mapper/GoldDetailMapper.xml index b1d3b7d..a123213 100644 --- a/src/main/resources/mapper/GoldDetailMapper.xml +++ b/src/main/resources/mapper/GoldDetailMapper.xml @@ -30,7 +30,9 @@ `ugr`.type, `ugr`.is_refund, `ugr`.order_code, - `ugr`.goods_name,`ugr`.price,`ugr`.link_id, + `ugr`.goods_name, + ROUND(`ugr`.price/100.0, 2) AS price, + `ugr`.link_id, Round((`ugr`.free_june + `ugr`.free_december) / 100.0, 2) AS freeGold, ROUND(`ugr`.sum_gold / 100.0, 2) AS SumGold, ROUND(`ugr`.permanent_gold / 100.0, 2) AS PermanentGold, From bfc2d63f2ce5862d195738861d73bea265181ef2 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Wed, 21 Jan 2026 10:50:33 +0800 Subject: [PATCH 07/48] =?UTF-8?q?1=E6=9C=8821=E6=97=A5.Excel=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E7=BF=BB=E8=AF=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/Util/ExcelHeaderTranslator.java | 4 +-- .../demo/controller/coin/ExportController.java | 6 ++-- .../demo/domain/vo/bean/BeanConsumeFan.java | 7 ++--- .../serviceImpl/coin/ExportExcelServiceImpl.java | 36 +++++++++++++++++++--- 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java index 8b2c71e..2c0feca 100644 --- a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java +++ b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java @@ -411,7 +411,7 @@ public class ExcelHeaderTranslator { headers.put("freeBean", "免费金豆数"); headers.put("buyBean", "付费金豆数"); headers.put("channel", "频道"); - headers.put("type", "会员类型"); + headers.put("typeDesc", "会员类型"); headers.put("consumeTime", "加入时间"); // 如果需要翻译,则翻译表头 @@ -428,7 +428,7 @@ public class ExcelHeaderTranslator { public List getBeanConsumeFanColumnOrder() { return Arrays.asList( "id", "name", "jwcode", "dept", "beanNum", "freeBean", "buyBean", - "channel", "type", "consumeTime" + "channel", "typeDesc", "consumeTime" ); } 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 c39fe10..a09afd8 100644 --- a/src/main/java/com/example/demo/controller/coin/ExportController.java +++ b/src/main/java/com/example/demo/controller/coin/ExportController.java @@ -597,10 +597,10 @@ public class ExportController { } // 转换会员类型 - if (beanConsumeFan.getType() != null && !beanConsumeFan.getType().isEmpty()) { + if (beanConsumeFan.getTypeDesc() != null && !beanConsumeFan.getTypeDesc().isEmpty()) { String chineseType = translationService.findChineseSimplifiedByTranslation( - beanConsumeFan.getType(), languageCode); - beanConsumeFan.setType(chineseType); + beanConsumeFan.getTypeDesc(), languageCode); + beanConsumeFan.setTypeDesc(chineseType); } } } diff --git a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java index 2ce82cb..87f2686 100644 --- a/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java +++ b/src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java @@ -1,8 +1,6 @@ package com.example.demo.domain.vo.bean; import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelProperty; -import com.example.demo.config.MemberTypeStringConverter; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Data; @@ -36,8 +34,9 @@ public class BeanConsumeFan implements Serializable { private String freeBean; //免费金豆 private String buyBean; //付费金豆 private String channel; //频道名称(source_name) - @ExcelProperty(value = "", converter = MemberTypeStringConverter.class) - private String type; //类型source_type 7单月,8连续包月 + @ExcelIgnore + private Integer type; //类型source_type 7单月,8连续包月 + private String typeDesc; //@ExcelProperty("支付方式") @ExcelIgnore private Integer payType; //支付方式(直播:12345,铁粉:7,文章:8) 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 989fbf5..e1df3c7 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -852,6 +852,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 添加铁粉用户翻译支持 if ("fanUser".equals(exportType) && list.get(0) instanceof BeanConsumeFan) { + fillUserMemberStatusDescriptions((List) list); translateBeanConsumeFanList((List) list, lang); } @@ -1056,6 +1057,31 @@ public class ExportExcelServiceImpl implements ExportExcelService { } /** + * 填充用户会员的状态描述 + */ + private void fillUserMemberStatusDescriptions(List fans) { + if (fans != null && !fans.isEmpty()) { + for (BeanConsumeFan fan : fans) { + if (fan.getType() != null) { + fan.setTypeDesc(fanTypeToString(fan.getType())); + } + } + } + } + + /** + * 将会员类型数字转换为中文描述 + */ + private String fanTypeToString(Integer type) { + if (type == null) return ""; + switch (type) { + case 7: return "单次付费"; + case 8: return "连续包月"; + default: return "其他"; + } + } + + /** * 填充用户数据的状态描述 */ private void fillUserStatusDescriptions(List funds) { @@ -1067,6 +1093,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { } } } + /** * 将类型数字转换为中文描述 */ @@ -1205,8 +1232,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { private String convertIsBackpackGiftToString(Integer isBackpackGift) { if (isBackpackGift == null) return ""; switch (isBackpackGift) { - case 0: return "否"; - case 1: return "是"; + case 0: return "是"; + case 1: return "否"; default: return "未知"; } } @@ -1224,6 +1251,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { } } } + /** * 将充值平台数字转换为中文描述 */ @@ -1448,8 +1476,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { } // 翻译会员类型 - if (item.getType() != null && !item.getType().isEmpty()) { - item.setType(languageTranslationUtil.translate(item.getType(), lang)); + if (item.getTypeDesc() != null && !item.getTypeDesc().isEmpty()) { + item.setTypeDesc(languageTranslationUtil.translate(item.getTypeDesc(), lang)); } } } From 1bfab9c76016dc022112632906123fc9f841bd0b Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Wed, 21 Jan 2026 13:34:28 +0800 Subject: [PATCH 08/48] =?UTF-8?q?1.21=20=E5=AF=BC=E5=87=BA=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/cashMapper/CashRefundMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index c7ed8d8..4822dec 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -441,7 +441,7 @@ and crc.jwcode = #{jwcode} - AND crc.market IN + AND crc.received_market IN #{markets} From 3f962139362f6c5c94a54728681b909423138623 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Wed, 21 Jan 2026 14:19:29 +0800 Subject: [PATCH 09/48] =?UTF-8?q?1.21=20=E4=BF=AE=E6=94=B9=E6=8E=92?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java | 4 ++++ src/main/resources/cashMapper/CashRefundMapper.xml | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java index 5c6f7b8..8ba02ec 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java @@ -67,4 +67,8 @@ public class FundsDTO { private BigDecimal permanentGold; @ExcelIgnore private BigDecimal freeGold; + @ExcelIgnore + private String sortField; + @ExcelIgnore + private String sortOrder; } diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 4822dec..4ffe6df 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -462,6 +462,14 @@ + + + ORDER BY ${sortField} ${sortOrder} + + + ORDER BY crc.create_time DESC + + From 5c834847170786e14b2fa041538573d343f4ce59 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Thu, 22 Jan 2026 18:10:18 +0800 Subject: [PATCH 21/48] =?UTF-8?q?1=E6=9C=8822=E6=97=A5=EF=BC=8C=E7=8E=B0?= =?UTF-8?q?=E9=87=91=E6=9F=A5=E8=AF=A2=E5=9C=B0=E5=8C=BA=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/cash/CashCollectionController.java | 9 +-- .../java/com/example/demo/domain/entity/User.java | 2 +- .../demo/mapper/cash/CashCollectionMapper.java | 2 + .../demo/service/cash/CashCollectionService.java | 4 +- .../cash/CashCollectionServiceImpl.java | 74 ++++++++++++++-------- .../resources/cashMapper/CashCollectionMapper.xml | 6 ++ 6 files changed, 63 insertions(+), 34 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 c96ec8c..1c0e554 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -52,14 +52,11 @@ public class CashCollectionController { //根据精网号获取姓名和地区 @PostMapping("/getNameAndMarket") public Result getNameAndMarket(@RequestBody Integer jwcode, @RequestHeader(defaultValue = "zh_CN") String lang) { - try { - return Result.success(cashCollectionService.getNameAndMarket(jwcode)); - } catch (Exception e) { - String errorMsg = languageTranslationUtil.translate(e.getMessage(), lang); - return Result.error(errorMsg); - } + // 直接返回服务层的 Result 对象 + return cashCollectionService.getNameAndMarket(jwcode); } + //获取收款活动列表 @PostMapping("/getActivityList") public Result getActivityList() diff --git a/src/main/java/com/example/demo/domain/entity/User.java b/src/main/java/com/example/demo/domain/entity/User.java index 255bbc4..ecf3bfc 100644 --- a/src/main/java/com/example/demo/domain/entity/User.java +++ b/src/main/java/com/example/demo/domain/entity/User.java @@ -27,7 +27,7 @@ public class User implements Serializable { private String name; // 客户姓名 private String market; // 所属地区 @ExcelIgnore - private String marketName; // 所属地区 + private String marketName; // 所属地区 @ExcelIgnore private BigDecimal sumPermanentGold; // 历史永久金币 @ExcelIgnore 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 0577fa7..334c30b 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -25,6 +25,8 @@ import java.util.Set; @Mapper public interface CashCollectionMapper { //ceshi + // 检查用户是否存在 + int checkUserExists(@Param("jwcode") Integer jwcode); //根据jwcode获取所属地区 String getMarketByJwcode(@Param("jwcode") Integer jwcode); //新增收款订单 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 30f5603..9cf3f9d 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -4,9 +4,9 @@ import com.example.demo.domain.DTO.PerformanceDTO; import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.entity.GOrder; import com.example.demo.domain.entity.RechargeActivity; -import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.cash.CashCollection; import com.example.demo.domain.vo.cash.PerformanceVO; +import com.example.demo.domain.vo.coin.Result; import com.github.pagehelper.PageInfo; import java.util.List; @@ -34,7 +34,7 @@ public interface CashCollectionService { //补全手续费等 String complete(CashRecord cashRecord); //根据精网号获取姓名和地区 - User getNameAndMarket(Integer jwcode); + Result getNameAndMarket(Integer jwcode); //获取活动列表 List getActivityList(); //同步g_order订单到cash_record表 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 838ed44..adec204 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -10,6 +10,7 @@ import com.example.demo.domain.vo.cash.CashCollectionMessage; import com.example.demo.domain.vo.cash.PerformanceVO; import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.Messages; +import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.cash.CashCollectionMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; @@ -355,34 +356,57 @@ public class CashCollectionServiceImpl implements CashCollectionService { } //根据精网号查询姓名和地区 -@Override -public User getNameAndMarket(Integer jwcode) { - try { - HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - String token = request.getHeader("token"); - Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); - if (admin != null) { - List list = Arrays.asList(admin.getMarkets().split(",")); - List markets = marketMapper.getMarketIds(list); - if (markets.contains("9") || markets.contains("9999")) { - markets = null; - } - GoldUser gUser = userMapper.selectUserCard(jwcode.toString(), markets); - if (gUser != null) { - User user = new User(); - user.setMarket(cashCollectionMapper.getMarketByJwcode(jwcode)); - user.setName(cashCollectionMapper.getNameByJwcode(jwcode)); - user.setMarketName(cashCollectionMapper.getMarketNameByJwcode(jwcode)); - return user; + @Override + public Result getNameAndMarket(Integer jwcode) { + try { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + List markets = marketMapper.getMarketIds(list); + + // 检查用户是否存在 + int userCount = cashCollectionMapper.checkUserExists(jwcode); + if (userCount == 0) { + return Result.error("用户为空"); + } + + if (markets.contains("9") || markets.contains("9999")) { + // 有特殊权限,可访问所有用户 + User user = new User(); + user.setMarket(cashCollectionMapper.getMarketByJwcode(jwcode)); + user.setName(cashCollectionMapper.getNameByJwcode(jwcode)); + user.setMarketName(cashCollectionMapper.getMarketNameByJwcode(jwcode)); + return Result.success(user); + } else { + // 检查用户所在市场是否在管理员权限范围内 + String userMarket = cashCollectionMapper.getMarketByJwcode(jwcode); + + if (userMarket != null && markets.contains(userMarket)) { + // 有权限访问,返回用户信息 + User user = new User(); + user.setMarket(userMarket); + user.setName(cashCollectionMapper.getNameByJwcode(jwcode)); + user.setMarketName(cashCollectionMapper.getMarketNameByJwcode(jwcode)); + return Result.success(user); + } else { + // 无权限,返回用户所属地区 + String userMarketName = cashCollectionMapper.getMarketNameByJwcode(jwcode); + return Result.errorWithData("无权限访问", java.util.Map.of("market", userMarketName)); + } + } + } else { + // admin 为 null,即权限验证失败 + String userMarketName = cashCollectionMapper.getMarketNameByJwcode(jwcode); + return Result.errorWithData("无权限访问", java.util.Map.of("market", userMarketName)); } + } catch (Exception e) { + e.printStackTrace(); + return Result.error("精网号有误!请检查"); } - } catch (Exception e) { - e.printStackTrace(); } - - // 如果没有返回有效用户信息,则抛出异常 - throw new RuntimeException("无法获取用户信息"); -} //获取收款活动列表 @Override diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index 7c8ec34..05f97a5 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -98,6 +98,12 @@ set is_synced = 1 where id = #{orderId} + + @@ -247,6 +247,7 @@ crr.free_gold, crr.audit_id, crr.related_id, + crr.reject_reason, la.area_servise, la.area_finance, la.area_charge, @@ -304,7 +305,7 @@ ORDER BY ${sortField} ${sortOrder} - ORDER BY crr.create_time DESC + ORDER BY crr.update_time DESC @@ -333,10 +334,13 @@ crr.refund_voucher, crr.refund_time, crr.executor, + crr.permanent_gold, + crr.free_gold, crr.status, crr.audit_id, crr.submitter_id, crr.related_id, + crr.refund_reason, la.area_servise, la.area_finance, la.area_charge, From fd6945381effc8a979bef355d1067f757c686377 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Fri, 23 Jan 2026 13:55:20 +0800 Subject: [PATCH 24/48] =?UTF-8?q?01-23=20=E5=B7=A5=E4=BD=9C=E5=8F=B0?= =?UTF-8?q?=E8=90=A5=E6=94=B6=E7=BB=9F=E8=AE=A1=E6=8C=89=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/WorkBenchMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/mapper/WorkBenchMapper.xml b/src/main/resources/mapper/WorkBenchMapper.xml index b45bc45..a272d4d 100644 --- a/src/main/resources/mapper/WorkBenchMapper.xml +++ b/src/main/resources/mapper/WorkBenchMapper.xml @@ -185,7 +185,7 @@ WHERE cr.received_currency IN (2,3,4,5,6,7,8) -- 只统计这7种币 AND m.name IN #{market} - AND cr.audit_time BETWEEN #{startDate} AND #{endDate} + AND cr.received_time BETWEEN #{startDate} AND #{endDate} AND cr.order_type=1 AND cr.status IN (0,1,3,4,6) GROUP BY m.name; From 21bc6f1f4c37d69472abf69b6dbb665e6c54e69c Mon Sep 17 00:00:00 2001 From: lijianlin Date: Fri, 23 Jan 2026 17:41:30 +0800 Subject: [PATCH 25/48] =?UTF-8?q?01-23=20=E7=BC=96=E8=BE=91=E6=89=8B?= =?UTF-8?q?=E7=BB=AD=E8=B4=B9=20Strip=EF=BC=8CPaypal=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=B8=8E=E6=94=B6=E6=AC=BE=E5=B8=81=E7=A7=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/serviceImpl/cash/CashCollectionServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) 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 adec204..9d5546c 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -33,6 +33,7 @@ import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; @@ -350,6 +351,11 @@ public class CashCollectionServiceImpl implements CashCollectionService { public String complete(CashRecord cashRecord) { + if (!Objects.equals(cashRecord.getPaymentCurrency(), cashRecord.getReceivedCurrency()) + && ("Stripe".equals(cashRecord.getPayType()) || "Paypal".equals(cashRecord.getPayType()))) { + return "支付币种与收款币种不一致"; + } + int rows = cashCollectionMapper.complete(cashRecord); return rows > 0 ? "编辑成功" : "编辑失败"; From 38f7e002f4611c3537acff95f4df112f5d91f08a Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 24 Jan 2026 09:47:28 +0800 Subject: [PATCH 26/48] =?UTF-8?q?1=E6=9C=8824=E6=97=A5=EF=BC=8C=E9=87=91?= =?UTF-8?q?=E8=B1=86=E6=B6=88=E8=B4=B9=E6=96=87=E7=AB=A0=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 9dc4e52..fddff0e 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -1285,8 +1285,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { if (type == null) return ""; switch (type) { case 9, 10: return "打赏"; - case 11: return "付费"; - default: return "未知"; + case 11: return "付费购买"; + default: return "其他"; } } // 各种实体类的翻译方法 From f4966bcc444c1504d050aa848824127bfaf66de8 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 24 Jan 2026 11:39:22 +0800 Subject: [PATCH 27/48] =?UTF-8?q?1=E6=9C=8824=E6=97=A5=EF=BC=8C=E8=B7=A8?= =?UTF-8?q?=E5=9C=B0=E5=8C=BA=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/cash/CashCollectionController.java | 20 ++++++++++++++++++-- .../demo/service/cash/CashCollectionService.java | 2 +- .../serviceImpl/cash/CashCollectionServiceImpl.java | 16 +++++++++++----- 3 files changed, 30 insertions(+), 8 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 1c0e554..f174ebe 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -52,11 +52,27 @@ public class CashCollectionController { //根据精网号获取姓名和地区 @PostMapping("/getNameAndMarket") public Result getNameAndMarket(@RequestBody Integer jwcode, @RequestHeader(defaultValue = "zh_CN") String lang) { - // 直接返回服务层的 Result 对象 - return cashCollectionService.getNameAndMarket(jwcode); + try { + Result result = cashCollectionService.getNameAndMarket(jwcode, lang); + + // 对返回结果进行多语言转换 + if (result.getCode() == 200 && result.getData() instanceof User) { + User user = (User) result.getData(); + // 如果服务层未处理市场名称翻译,在这里进行处理 + if (user.getMarketName() != null) { + user.setMarketName(languageTranslationUtil.translate(user.getMarketName(), lang)); + } + } + + return result; + } catch (Exception e) { + String errorMsg = languageTranslationUtil.translate("查询失败", lang); + return Result.error(errorMsg + ": " + e.getMessage()); + } } + //获取收款活动列表 @PostMapping("/getActivityList") public Result getActivityList() 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 9cf3f9d..cce5238 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -34,7 +34,7 @@ public interface CashCollectionService { //补全手续费等 String complete(CashRecord cashRecord); //根据精网号获取姓名和地区 - Result getNameAndMarket(Integer jwcode); + Result getNameAndMarket(Integer jwcode,String lang); //获取活动列表 List getActivityList(); //同步g_order订单到cash_record表 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 9d5546c..2bca386 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -363,7 +363,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { //根据精网号查询姓名和地区 @Override - public Result getNameAndMarket(Integer jwcode) { + public Result getNameAndMarket(Integer jwcode,@RequestHeader(defaultValue = "zh_CN") String lang) { try { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String token = request.getHeader("token"); @@ -376,7 +376,8 @@ public class CashCollectionServiceImpl implements CashCollectionService { // 检查用户是否存在 int userCount = cashCollectionMapper.checkUserExists(jwcode); if (userCount == 0) { - return Result.error("用户为空"); + String message = languageTranslationUtil.translate("精网号有误!请检查", lang); + return Result.error(message); } if (markets.contains("9") || markets.contains("9999")) { @@ -400,17 +401,22 @@ public class CashCollectionServiceImpl implements CashCollectionService { } else { // 无权限,返回用户所属地区 String userMarketName = cashCollectionMapper.getMarketNameByJwcode(jwcode); - return Result.errorWithData("无权限访问", java.util.Map.of("market", userMarketName)); + String translatedMarketName = languageTranslationUtil.translate(userMarketName, lang); + String message = languageTranslationUtil.translate("无权限访问", lang); + return Result.errorWithData(message, java.util.Map.of("market", translatedMarketName)); } } } else { // admin 为 null,即权限验证失败 String userMarketName = cashCollectionMapper.getMarketNameByJwcode(jwcode); - return Result.errorWithData("无权限访问", java.util.Map.of("market", userMarketName)); + String translatedMarketName = languageTranslationUtil.translate(userMarketName, lang); + String message = languageTranslationUtil.translate("无权限访问", lang); + return Result.errorWithData(message, java.util.Map.of("market", translatedMarketName)); } } catch (Exception e) { e.printStackTrace(); - return Result.error("精网号有误!请检查"); + String errorMessage = languageTranslationUtil.translate("精网号有误!请检查", lang); + return Result.error(errorMessage); } } From db0e39c4a6179e4274fb52d93870d030f540cd93 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 24 Jan 2026 16:32:17 +0800 Subject: [PATCH 28/48] =?UTF-8?q?1=E6=9C=8824=E6=97=A5=EF=BC=8C=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/Util/ExcelHeaderTranslator.java | 4 ++-- .../demo/controller/cash/CashRefundController.java | 16 ++++++++++++++++ .../example/demo/domain/vo/cash/CashRecordDTO.java | 6 +++--- .../serviceImpl/coin/ExportExcelServiceImpl.java | 20 ++++++++++++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java index 4aacd07..699ec38 100644 --- a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java +++ b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java @@ -300,7 +300,7 @@ public class ExcelHeaderTranslator { headers.put("status", "订单状态"); headers.put("remark", "备注"); headers.put("refundReason", "退款理由"); - headers.put("refundModel", "退款方式"); + headers.put("refundModelDesc", "退款方式"); // 如果需要翻译,则翻译表头 if (!isChineseLanguage(lang)) { @@ -316,7 +316,7 @@ public class ExcelHeaderTranslator { public List getCashRecordColumnOrder() { return Arrays.asList( "goodsName", "goodsNum", "numUnit", "Submitter", "id", "jwcode", "name", "market", - "status", "remark", "refundReason", "refundModel" + "status", "remark", "refundReason", "refundModelDesc" ); } 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 d3d956a..70ca611 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -543,6 +543,11 @@ public class CashRefundController { if (dto.getReceivedCurrency() != null) { dto.setReceivedCurrency(languageTranslationUtil.translate(dto.getReceivedCurrency(), lang)); } + // 翻译退款方式 + if (dto.getRefundModel() != null) { + String refundModelDesc = convertRefundModelToString(dto.getRefundModel()); + dto.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang)); + } } } } @@ -726,4 +731,15 @@ public class CashRefundController { } } + /** + * 将退款模型数字转换为中文描述 + */ + private String convertRefundModelToString(Byte refundModel) { + if (refundModel == null) return ""; + switch (refundModel) { + case 0: return "全部退款"; + case 1: return "部分退款"; + default: return "未知退款方式"; + } + } } diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java index c210608..dc38b45 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java @@ -4,7 +4,6 @@ import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.example.demo.config.MarketConverter; import com.example.demo.config.OrderStatusConverter; -import com.example.demo.config.RefundModelConverter; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; @@ -182,8 +181,9 @@ public class CashRecordDTO{ /** * 退款方式(0全额/1部分) */ - @ExcelProperty(value = "",converter = RefundModelConverter.class) - private Integer refundModel; + @ExcelIgnore + private Byte refundModel; + private String refundModelDesc; //退款方式转换 /** * 退款执行人OA号 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 fddff0e..734daed 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -875,6 +875,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { // 添加财务退款翻译支持 if ("financeUser".equals(exportType) && list.get(0) instanceof CashRecordDTO) { + fillRechargeUserIsRefund((List) list); translateCashRecordDTOList((List) list, lang); } @@ -1133,6 +1134,20 @@ public class ExportExcelServiceImpl implements ExportExcelService { } /** + * 填充财务退款用户数据的退款方式描述 + */ + private void fillRechargeUserIsRefund(List cashRecords) { + if (cashRecords != null && !cashRecords.isEmpty()) { + for (CashRecordDTO cashRecord : cashRecords) { + if (cashRecord.getRefundModel() != null) { + String modelDesc = convertRefundModelToString(cashRecord.getRefundModel()); + cashRecord.setRefundModelDesc(modelDesc); + } + } + } + } + + /** * 填充退款用户数据的退款方式描述 */ private void fillRefundUserModelDescriptions(List refundUsers) { @@ -1583,6 +1598,11 @@ public class ExportExcelServiceImpl implements ExportExcelService { if (item.getRefundRemark() != null && !item.getRefundRemark().isEmpty()) { item.setRefundRemark(languageTranslationUtil.translate(item.getRefundRemark(), lang)); } + + // 翻译退款方式 + if (item.getRefundModelDesc() != null && !item.getRefundModelDesc().isEmpty()) { + item.setRefundModelDesc(languageTranslationUtil.translate(item.getRefundModelDesc(), lang)); + } } } From e16fcb68695fe8cb159cba84f1d9ae0f119821b2 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sat, 24 Jan 2026 16:55:27 +0800 Subject: [PATCH 29/48] =?UTF-8?q?1=E6=9C=8824=E6=97=A5=EF=BC=8C=E6=9D=83?= =?UTF-8?q?=E9=99=90=E5=88=97=E8=A1=A8=E5=9C=B0=E5=8C=BA=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/coin/PermissionController.java | 33 ++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/demo/controller/coin/PermissionController.java b/src/main/java/com/example/demo/controller/coin/PermissionController.java index e8923ad..820780b 100644 --- a/src/main/java/com/example/demo/controller/coin/PermissionController.java +++ b/src/main/java/com/example/demo/controller/coin/PermissionController.java @@ -227,9 +227,10 @@ public class PermissionController { private void translatePermissions(com.github.pagehelper.PageInfo pageInfo, String lang) { if (pageInfo != null && pageInfo.getList() != null) { for (com.example.demo.domain.vo.coin.Permission permission : pageInfo.getList()) { - // 翻译市场名称 + // 翻译市场名称(支持多个市场) if (permission.getMarket() != null) { - permission.setMarket(languageTranslationUtil.translate(permission.getMarket(), lang)); + String translatedMarket = translateMultipleMarkets(permission.getMarket(), lang); + permission.setMarket(translatedMarket); } // 翻译职位 if (permission.getPostiton() != null) { @@ -244,6 +245,34 @@ public class PermissionController { } /** + * 翻译多个市场名称 + */ + private String translateMultipleMarkets(String marketStr, String lang) { + if (marketStr == null || marketStr.trim().isEmpty()) { + return marketStr; + } + + // 按逗号分割市场名称 + String[] markets = marketStr.split(","); + StringBuilder translatedMarkets = new StringBuilder(); + + for (int i = 0; i < markets.length; i++) { + String market = markets[i].trim(); + if (!market.isEmpty()) { + // 对每个市场名称进行翻译 + String translatedMarket = languageTranslationUtil.translate(market, lang); + translatedMarkets.append(translatedMarket); + // 如果不是最后一个元素,添加逗号 + if (i < markets.length - 1) { + translatedMarkets.append(","); + } + } + } + + return translatedMarkets.toString(); + } + + /** * 转换职位名称为指定语言 */ private void translatePositions(List positions, String lang) { From dac27902e16f6348eb3495a5abb5e4729afdfdd2 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Sun, 25 Jan 2026 09:06:34 +0800 Subject: [PATCH 30/48] =?UTF-8?q?1.25=20=E4=BF=AE=E6=94=B9=E4=BC=A0?= =?UTF-8?q?=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java | 2 ++ src/main/resources/cashMapper/CashRefundMapper.xml | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java index 8ba02ec..295f683 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/FundsDTO.java @@ -71,4 +71,6 @@ public class FundsDTO { private String sortField; @ExcelIgnore private String sortOrder; + @ExcelIgnore + private List localMarket; } diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index 100f3a2..a214a69 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -172,6 +172,9 @@ crc.pay_time, crc.voucher, crc.remark, + crr.refund_reason, + crr.refund_remark, + crr.reject_reason, crc.payment_currency, crc.payment_amount from cash_record_refund crr @@ -450,6 +453,9 @@ #{markets} + + and crc.market = #{localMarket} + and crc.`pay_time` BETWEEN #{startTime} AND #{endTime} From 033a93443e552943c82ce53e7ef6e3a3254ed561 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 09:52:07 +0800 Subject: [PATCH 31/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E6=94=B6?= =?UTF-8?q?=E6=AC=BE=E6=8F=90=E4=BA=A4=E5=8F=8D=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/cash/CashCollectionController.java | 14 ++++++++++++++ 1 file changed, 14 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 f174ebe..57c399a 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -492,6 +492,20 @@ public class CashCollectionController { cashCollection.getPaymentCurrency(), languageCode); cashCollection.setPaymentCurrency(chineseCurrency); } + + // 转换提交人地区 + if (cashCollection.getSubmitterMarket() != null && !cashCollection.getSubmitterMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashCollection.getSubmitterMarket(), languageCode); + cashCollection.setSubmitterMarket(chineseMarket); + } + + // 转换所属地区名称 + if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) { + String chineseMarketName = translationService.findChineseSimplifiedByTranslation( + cashCollection.getMarketName(), languageCode); + cashCollection.setMarketName(chineseMarketName); + } } } From 22c8a8f67fb28caf7e5908f9e6bda98119453873 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Sun, 25 Jan 2026 09:58:38 +0800 Subject: [PATCH 32/48] =?UTF-8?q?1.25=20=E4=BF=AE=E6=94=B9=E4=BC=A0?= =?UTF-8?q?=E5=8F=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/cashMapper/CashRefundMapper.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/resources/cashMapper/CashRefundMapper.xml b/src/main/resources/cashMapper/CashRefundMapper.xml index a214a69..17abf22 100644 --- a/src/main/resources/cashMapper/CashRefundMapper.xml +++ b/src/main/resources/cashMapper/CashRefundMapper.xml @@ -454,7 +454,10 @@ - and crc.market = #{localMarket} + AND crc.market IN + + #{localMarket} + and crc.`pay_time` BETWEEN #{startTime} AND #{endTime} From 455deb3cca544f83db3f98a7dd5c8a023f539311 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 10:10:37 +0800 Subject: [PATCH 33/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E6=94=B6?= =?UTF-8?q?=E6=AC=BE=E6=8F=90=E4=BA=A4=E5=9C=B0=E5=8C=BA=E5=8F=8D=E7=BF=BB?= =?UTF-8?q?=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 57c399a..7984bea 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -429,6 +429,13 @@ public class CashCollectionController { cashCollection.getReceivedMarket(), languageCode); cashCollection.setReceivedMarket(chineseMarket); } + + // 转换所属地区名称 + if (cashCollection.getMarketName() != null && !cashCollection.getMarketName().isEmpty()) { + String chineseMarketName = translationService.findChineseSimplifiedByTranslation( + cashCollection.getMarketName(), languageCode); + cashCollection.setMarketName(chineseMarketName); + } } } From 6240b55fe61046bb9ac0671732cab58e0b4b3952 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Sun, 25 Jan 2026 11:06:31 +0800 Subject: [PATCH 34/48] =?UTF-8?q?01-25=20=E5=85=85=E5=80=BC=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=BC=96=E8=BE=91=E6=89=8B=E7=BB=AD=E8=B4=B9,?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=9B=B4=E6=96=B0=E9=87=91=E5=B8=81=E7=9A=84?= =?UTF-8?q?=E8=B4=A7=E5=B8=81=E5=90=8D=E7=A7=B0=E4=B8=8E=E6=95=B0=E9=87=8F?= =?UTF-8?q?=EF=BC=9B=E9=87=8D=E6=96=B0=E6=8F=90=E4=BA=A4=E6=92=A4=E5=9B=9E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=97=B6=E5=AF=B9=E6=B0=B8=E4=B9=85=E9=87=91?= =?UTF-8?q?=E5=B8=81=E5=81=9A=E9=9D=9E0=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/mapper/cash/CashCollectionMapper.java | 5 ++++- .../demo/serviceImpl/cash/CashCollectionServiceImpl.java | 8 ++++++++ src/main/resources/cashMapper/CashCollectionMapper.xml | 16 ++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) 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 0577fa7..4ec2b21 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -86,5 +86,8 @@ public interface CashCollectionMapper { List selectStripeList(); List selectStripe2List(); List selectPaymentList(); - + //补全手续费后,修改金币订单 + void updateGoldOrder(@Param("cashRecordCollection")CashRecord cashRecord); + //根据订单号查询商品名称 + String selectGoodsNameByCode(String orderCode); } 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 838ed44..5c9d7a1 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -239,6 +239,8 @@ public class CashCollectionServiceImpl implements CashCollectionService { if (cashRecord.getGoodsName().equals("金币充值")) { if (cashRecord.getPermanentGold() == 0 && cashRecord.getFreeGold() == 0) { throw new IllegalArgumentException("金币数量不能为空"); + }if (cashRecord.getPermanentGold() == 0){ + throw new IllegalArgumentException("永久金币数量不能为空"); } } @@ -350,7 +352,13 @@ public class CashCollectionServiceImpl implements CashCollectionService { int rows = cashCollectionMapper.complete(cashRecord); + String goodsName = cashCollectionMapper.selectGoodsNameByCode(cashRecord.getOrderCode()); + if (goodsName .equals("金币充值")) { + cashRecord.setOrderCode(cashRecord.getOrderCode().replace("XJ_", "XJCZ_")); + //修改金币订单 + cashCollectionMapper.updateGoldOrder(cashRecord); + } return rows > 0 ? "编辑成功" : "编辑失败"; } diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index dbfdf6a..cd6ff7f 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -88,6 +88,17 @@ WHERE order_code = #{cashRecordCollection.orderCode} AND status IN (1, 3) + + + UPDATE user_gold_record + + rate_id=#{cashRecordCollection.paymentCurrency}, + + money = #{cashRecordCollection.paymentAmount} + + + WHERE order_code = #{cashRecordCollection.orderCode} + update g_order @@ -364,6 +375,10 @@ + + update cash_record_collection @@ -430,4 +445,5 @@ order_no_status=0 where order_code=#{orderNo} + \ No newline at end of file From 92bc016575b12fa66b7b7ab9f896b9d2eb411cba Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 13:54:18 +0800 Subject: [PATCH 35/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E5=8F=8D?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/cash/CashCollectionController.java | 18 ++++++++++++++++++ .../demo/controller/cash/CashRefundController.java | 14 ++++++++++++++ 2 files changed, 32 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 7984bea..dbd484f 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -351,6 +351,10 @@ public class CashCollectionController { if (collection.getPaymentCurrency() != null) { collection.setPaymentCurrency(languageTranslationUtil.translate(collection.getPaymentCurrency(), lang)); } + // 翻译数量单位 + if (collection.getNumUnit() != null) { + collection.setNumUnit(languageTranslationUtil.translate(collection.getNumUnit(), lang)); + } } } @@ -436,6 +440,13 @@ public class CashCollectionController { cashCollection.getMarketName(), languageCode); cashCollection.setMarketName(chineseMarketName); } + + // 转换数量单位 + if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) { + String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( + cashCollection.getNumUnit(), languageCode); + cashCollection.setNumUnit(chineseNumUnit); + } } } @@ -513,6 +524,13 @@ public class CashCollectionController { cashCollection.getMarketName(), languageCode); cashCollection.setMarketName(chineseMarketName); } + + // 转换数量单位 + if (cashCollection.getNumUnit() != null && !cashCollection.getNumUnit().isEmpty()) { + String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( + cashCollection.getNumUnit(), languageCode); + cashCollection.setNumUnit(chineseNumUnit); + } } } 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 70ca611..ec62d0b 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -675,6 +675,20 @@ public class CashRefundController { cashRecordRefund.getRefundCurrency(), languageCode); cashRecordRefund.setRefundCurrency(chineseCurrency); } + + // 转换所属地区 + if (cashRecordRefund.getMarketName() != null && !cashRecordRefund.getMarketName().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getMarketName(), languageCode); + cashRecordRefund.setMarketName(chineseMarket); + } + + // 转换提交人地区 + if (cashRecordRefund.getSubmitterMarket() != null && !cashRecordRefund.getSubmitterMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashRecordRefund.getSubmitterMarket(), languageCode); + cashRecordRefund.setSubmitterMarket(chineseMarket); + } } } From f58808619046b2de90ede95a0bd3c08d48a8600d Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 15:50:48 +0800 Subject: [PATCH 36/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/Util/ExcelHeaderTranslator.java | 4 +++- .../com/example/demo/domain/vo/cash/CashRecordDTO.java | 14 ++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java index 699ec38..565eba1 100644 --- a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java +++ b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java @@ -292,6 +292,8 @@ public class ExcelHeaderTranslator { headers.put("goodsName", "产品名称"); headers.put("goodsNum", "产品数量"); headers.put("numUnit", "产品单位"); + headers.put("permanentGold", "永久金币数量"); + headers.put("freeGold", "免费金币数量"); headers.put("Submitter", "提交人"); headers.put("id", "序号"); headers.put("jwcode", "精网号"); @@ -315,7 +317,7 @@ public class ExcelHeaderTranslator { */ public List getCashRecordColumnOrder() { return Arrays.asList( - "goodsName", "goodsNum", "numUnit", "Submitter", "id", "jwcode", "name", "market", + "goodsName", "goodsNum", "numUnit", "permanentGold", "freeGold", "Submitter", "id", "jwcode", "name", "market", "status", "remark", "refundReason", "refundModelDesc" ); } diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java index dc38b45..f56e414 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java @@ -31,6 +31,8 @@ public class CashRecordDTO{ private String goodsName;// 商品名称 private Integer goodsNum;// 商品数量 private String numUnit;// 商品单位 + private BigDecimal permanentGold;//永久金币 + private BigDecimal freeGold;// 免费金币 @ExcelIgnore private BigDecimal gold;//永久金币 @ExcelIgnore @@ -112,18 +114,6 @@ public class CashRecordDTO{ private String bankCode; /** - * 永久金币 - */ - @ExcelIgnore - private BigDecimal permanentGold; - - /** - * 免费金币 - */ - @ExcelIgnore - private BigDecimal freeGold; - - /** * 审核人id */ @ExcelIgnore From 29c778f5e98d9d8b1edf52a8a587675bd9301cf5 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 16:23:39 +0800 Subject: [PATCH 37/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E7=9A=84=E6=95=B0=E9=87=8F=E5=8D=95=E4=BD=8D=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/cash/CashRefundController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 ec62d0b..f46367b 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -548,6 +548,10 @@ public class CashRefundController { String refundModelDesc = convertRefundModelToString(dto.getRefundModel()); dto.setRefundModelDesc(languageTranslationUtil.translate(refundModelDesc, lang)); } + // 翻译商品单位 + if (dto.getNumUnit() != null) { + dto.setNumUnit(languageTranslationUtil.translate(dto.getNumUnit(), lang)); + } } } } @@ -640,6 +644,13 @@ public class CashRefundController { cashRecordDTO.getPaymentCurrency(), languageCode); cashRecordDTO.setPaymentCurrency(chineseCurrency); } + + // 转换商品单位 + if (cashRecordDTO.getNumUnit() != null && !cashRecordDTO.getNumUnit().isEmpty()) { + String chineseNumUnit = translationService.findChineseSimplifiedByTranslation( + cashRecordDTO.getNumUnit(), languageCode); + cashRecordDTO.setNumUnit(chineseNumUnit); + } } } From 70c5cbdb59e3db9821e65d50d1248604b05b3c02 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Sun, 25 Jan 2026 17:17:04 +0800 Subject: [PATCH 38/48] =?UTF-8?q?1.25=20=E4=BF=AE=E6=94=B9=E7=8E=B0?= =?UTF-8?q?=E9=87=91=E9=80=80=E6=AC=BE=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../demo/controller/cash/CashRefundController.java | 2 +- .../example/demo/service/cash/RefundService.java | 1 + .../serviceImpl/cash/CashRefundServiceImpl.java | 82 +++++++++++++++++++++- .../serviceImpl/coin/ExportExcelServiceImpl.java | 33 +++++++++ 4 files changed, 116 insertions(+), 2 deletions(-) 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 f46367b..1656b36 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -381,7 +381,7 @@ public class CashRefundController { return Result.error(errorMsg); } - Result result = Result.success(refundService.financeSelect(page.getPageNum(), page.getPageSize(), page.getCashRecordDTO())); + Result result = Result.success(refundService.financeSelect2(page.getPageNum(), page.getPageSize(), page.getCashRecordDTO())); // 对返回结果进行多语言转换 if (result.getCode() == 200 && result.getData() instanceof com.github.pagehelper.PageInfo) { 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 608f32c..8baa23c 100644 --- a/src/main/java/com/example/demo/service/cash/RefundService.java +++ b/src/main/java/com/example/demo/service/cash/RefundService.java @@ -32,6 +32,7 @@ public interface RefundService { int finalreview(CashRecordDone cashRecordDone, String lang); PageInfo financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO); + PageInfo financeSelect2(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/CashRefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java index 3c1e6e8..628a8ae 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashRefundServiceImpl.java @@ -361,7 +361,14 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); userGoldRecord.setType((byte) 2); userGoldRecord.setIsRefund((byte) 1); userGoldRecord.setRefundType("金币退款"); - userGoldRecord.setCrefundModel(cashRecordDone.getRefundModel()); + if (cashRecordDone.getRefundModel() == 1){ + userGoldRecord.setRefundModel(Byte.valueOf("1")); + } + else if (cashRecordDone.getRefundModel() == 0){ + userGoldRecord.setRefundModel(Byte.valueOf("0")); + } + + userGoldRecord.setJwcode(cashRecordDone.getJwcode()); userGoldRecord.setSumGold(cashRecordDone.getPermanentGold()+cashRecordDone.getFreeGold()); userGoldRecord.setPermanentGold(cashRecordDone.getPermanentGold()); @@ -418,6 +425,79 @@ CashRecordDone cashRecordDone1 = new CashRecordDone(); @Override public PageInfo financeSelect(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { + List markets = marketMapper.getMarketIds(cashRecordDTO.getMarkets()); + if (markets.contains("9") || markets.contains("9999")){ + markets=null; + } + cashRecordDTO.setMarkets(markets); + PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper +// System.out.println(goldDetail.getMarkets()); + List list = cashRefundMapper.financeSelect(cashRecordDTO); + if (list.isEmpty()) { + return new PageInfo<>(list); + } + + // 批量收集ID + Set relatedIds = new HashSet<>(); + Set marketIds = new HashSet<>(); + Set submitterIds = new HashSet<>(); + Set auditIds = new HashSet<>(); + Set executorIds = new HashSet<>(); + + list.forEach(item -> { + if (item.getRelatedId() != null) relatedIds.add(item.getRelatedId()); + if (item.getMarket() != null) marketIds.add(item.getMarket()); + if (item.getSubmitterId() != null) submitterIds.add(item.getSubmitterId()); + if (item.getAuditId() != null) auditIds.add(item.getAuditId()); + if (item.getExecutor() != null) executorIds.add(item.getExecutor()); + }); + + // 批量查询 + Map cashCollectionMap = cashCollectionMapper.selectBatchIds(relatedIds) + .stream().collect(Collectors.toMap(CashCollection::getId, Function.identity())); + + Map marketNameMap = marketMapper.getMarketByIds(marketIds) + .stream().collect(Collectors.toMap(Market::getId, Market::getName)); + + Map submitterNameMap = auditMapper.getNamesByIds(submitterIds) + .stream().collect(Collectors.toMap(Admin::getId, Admin::getAdminName)); + + Map auditMap = cashRefundMapper.getAuditBatch(auditIds) + .stream().collect(Collectors.toMap(LhlAudit::getId, Function.identity())); + Map executorNameMap = auditMapper.getNamesByJwcodes(executorIds) + .stream().collect(Collectors.toMap(Admin::getAccount, Admin::getAdminName)); + + // 处理数据 + list.forEach(item -> { + CashCollection cashCollection = cashCollectionMap.get(item.getRelatedId()); + if (cashCollection != null) { + processCashCollection(item, cashCollection); + } + + + String marketName = marketNameMap.get(item.getMarket()); + String submitter = submitterNameMap.get(item.getSubmitterId()); + LhlAudit lhlAudit = auditMap.get(item.getAuditId()); + String executorName = executorNameMap.get(String.valueOf(item.getExecutor())); + + item.setMarketName(marketName != null ? marketName : ""); + item.setSubmitter(submitter != null ? submitter : ""); + item.setExecutorName(executorName != null ? executorName : ""); + + if (lhlAudit != null) { + item.setAreaServise(lhlAudit.getAreaServise()); + item.setAreaFinance(lhlAudit.getAreaFinance()); + item.setAreaCharge(lhlAudit.getAreaCharge()); + item.setHeadFinance(lhlAudit.getHeadFinance()); + } + }); + + return new PageInfo<>(list); + } + + @Override + public PageInfo financeSelect2(Integer pageNum, Integer pageSize, CashRecordDTO cashRecordDTO) { + List markets = marketMapper.getMarketIds(cashRecordDTO.getMarkets()); PageHelper.startPage(pageNum, pageSize); //必须要直接跟mapper // System.out.println(goldDetail.getMarkets()); List list = cashRefundMapper.financeSelect(cashRecordDTO); 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 734daed..dd4344a 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -29,7 +29,9 @@ import com.example.demo.domain.vo.cash.PerformanceVO; import com.example.demo.domain.vo.coin.*; import com.example.demo.mapper.coin.ExportMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.service.coin.ExportExcelService; +import com.example.demo.service.coin.MarketService; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -43,6 +45,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.io.*; import java.util.*; @@ -88,6 +91,8 @@ public class ExportExcelServiceImpl implements ExportExcelService { private static final int PAGE_SIZE = 5000; @Autowired private ExportMapper exportMapper; + @Autowired + private MarketService marketService; @Transactional @Override @@ -352,8 +357,36 @@ public class ExportExcelServiceImpl implements ExportExcelService { JsonNode rootNode = objectMapper.readTree(message); JsonNode requestDataNode = rootNode.path("requestData"); JsonNode beanRechargeNode = requestDataNode.path("cashRecordDTO"); + String token = rootNode.path("token").asText(); CashRecordDTO cashRecordDTO = objectMapper.treeToValue(beanRechargeNode, CashRecordDTO.class); page.setCashRecordDTO(cashRecordDTO); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + List userMarkets = Arrays.asList(StringUtils.split(admin.getMarkets(), ",")); + List markets = marketService.getMarketIds(userMarkets); + + + // 获取传入的市场列表 + List requestedMarkets = page.getCashRecordDTO() != null ? page.getCashRecordDTO().getMarkets() : null; + + // 权限校验逻辑 + if (markets.contains("9") || markets.contains("9999")) { + // 特权市场:9 或 9999,跳过权限校验,直接放行传入的 markets + // 如果业务需要,也可以在这里做空值处理 + if (page.getCashRecordDTO() != null) { + // 保持 requestedMarkets 不变,原样接受 + // 可选:如果 requestedMarkets 为 null,可设为默认值或保持 null + } + } else { + // 普通用户:必须校验权限 + if (requestedMarkets == null || requestedMarkets.isEmpty()) { + page.getCashRecordDTO().setMarkets(markets); + } + if (!markets.containsAll(requestedMarkets)) { + String errorMsg = "无权限!请求的市场不在授权范围内。"; + return Result.error(errorMsg); + } + // 校验通过,保持 requestedMarkets 不变 + } // 从请求数据中获取语言设置,如果没有则使用默认值 String lang = "zh_CN"; JsonNode langNode = requestDataNode.path("lang"); From 00b49924be9fc8b310d3dce26563dad33461f0e2 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 17:34:31 +0800 Subject: [PATCH 39/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E9=80=80?= =?UTF-8?q?=E6=AC=BE=E5=AF=BC=E5=87=BA=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/Util/ExcelHeaderTranslator.java | 8 ++--- .../example/demo/domain/vo/cash/CashRecordDTO.java | 11 +++--- .../serviceImpl/coin/ExportExcelServiceImpl.java | 40 ++++++++++++++++++++++ 3 files changed, 48 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java index 565eba1..d77697f 100644 --- a/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java +++ b/src/main/java/com/example/demo/Util/ExcelHeaderTranslator.java @@ -298,8 +298,8 @@ public class ExcelHeaderTranslator { headers.put("id", "序号"); headers.put("jwcode", "精网号"); headers.put("name", "姓名"); - headers.put("market", "所属地区"); - headers.put("status", "订单状态"); + headers.put("marketName", "所属地区"); + headers.put("statusDesc", "订单状态"); headers.put("remark", "备注"); headers.put("refundReason", "退款理由"); headers.put("refundModelDesc", "退款方式"); @@ -317,8 +317,8 @@ public class ExcelHeaderTranslator { */ public List getCashRecordColumnOrder() { return Arrays.asList( - "goodsName", "goodsNum", "numUnit", "permanentGold", "freeGold", "Submitter", "id", "jwcode", "name", "market", - "status", "remark", "refundReason", "refundModelDesc" + "goodsName", "goodsNum", "numUnit", "permanentGold", "freeGold", "Submitter", "id", "jwcode", "name", "marketName", + "statusDesc", "remark", "refundReason", "refundModelDesc" ); } diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java index f56e414..94c8f5a 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashRecordDTO.java @@ -1,9 +1,6 @@ package com.example.demo.domain.vo.cash; import com.alibaba.excel.annotation.ExcelIgnore; -import com.alibaba.excel.annotation.ExcelProperty; -import com.example.demo.config.MarketConverter; -import com.example.demo.config.OrderStatusConverter; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; @@ -98,8 +95,9 @@ public class CashRecordDTO{ /** * 所属地区 */ - @ExcelProperty(value = "",converter = MarketConverter.class) + @ExcelIgnore private Integer market; + private String marketName; /** * 金币订单号 @@ -131,8 +129,9 @@ public class CashRecordDTO{ 30:总部财务待审核;32:总部财务驳回; 40:执行人待处理;41:执行人已处理,退款结束 */ - @ExcelProperty(value="",converter = OrderStatusConverter.class) + @ExcelIgnore private Integer status; + private String statusDesc; /** * 提交人id @@ -257,8 +256,6 @@ public class CashRecordDTO{ @ExcelIgnore private String executorName; @ExcelIgnore - private String marketName; - @ExcelIgnore private List statuses; @ExcelIgnore private String processInstanceId; // 流程实例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 dd4344a..18260f1 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -1337,6 +1337,34 @@ public class ExportExcelServiceImpl implements ExportExcelService { default: return "其他"; } } + + /** + * 根据状态值获取状态描述 + */ + private String getStatusDescription(Integer status) { + if (status == null) return ""; + + switch (status) { + case 0: return "线下财务待审核"; + case 1: return "线下财务审核通过待填手续费"; + case 2: return "线下财务审核驳回"; + case 3: return "link线上财务复核待填手续费"; + case 4: return "收款流程全部结束"; + case 5: return "手动撤回待编辑提交"; + case 6: return "退款"; + case 10: return "地区财务待审核"; + case 11: return "地区财务手动撤回待编辑提交"; + case 12: return "地区财务驳回"; + case 20: return "地区负责人待审核"; + case 22: return "地区负责人驳回"; + case 30: return "总部财务待审核"; + case 32: return "总部财务驳回"; + case 40: return "执行人待处理"; + case 41: return "执行人已处理,退款结束"; + default: return "未知状态(" + status + ")"; + } + } + // 各种实体类的翻译方法 /** @@ -1636,6 +1664,18 @@ public class ExportExcelServiceImpl implements ExportExcelService { if (item.getRefundModelDesc() != null && !item.getRefundModelDesc().isEmpty()) { item.setRefundModelDesc(languageTranslationUtil.translate(item.getRefundModelDesc(), lang)); } + + // 翻译所属地区名称 + if (item.getMarketName() != null && !item.getMarketName().isEmpty()) { + item.setMarketName(languageTranslationUtil.translate(item.getMarketName(), lang)); + } + + // 翻译订单状态(首先获取状态的中文描述,然后进行多语言翻译) + if (item.getStatus() != null) { + String statusDesc = getStatusDescription(item.getStatus()); + String translatedStatus = languageTranslationUtil.translate(statusDesc, lang); + item.setStatusDesc(translatedStatus); // 假设有状态描述字段 + } } } From 5fc21b82ddb219cac9bdc6e14dfb30ab5487e6c0 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 17:46:35 +0800 Subject: [PATCH 40/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E8=B5=84?= =?UTF-8?q?=E9=87=91=E5=AF=BC=E5=87=BA=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 18260f1..7cea853 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ExportExcelServiceImpl.java @@ -928,7 +928,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { } // 添加资金流水翻译支持 - if ("fundsUser".equals(exportType) && list.get(0) instanceof FundsDTO) { + if ("fundUser".equals(exportType) && list.get(0) instanceof FundsDTO) { fillUserStatusDescriptions((List) list); translateFundsList((List) list, lang); } @@ -1674,7 +1674,7 @@ public class ExportExcelServiceImpl implements ExportExcelService { if (item.getStatus() != null) { String statusDesc = getStatusDescription(item.getStatus()); String translatedStatus = languageTranslationUtil.translate(statusDesc, lang); - item.setStatusDesc(translatedStatus); // 假设有状态描述字段 + item.setStatusDesc(translatedStatus); } } } From 0ec70dd0af6be47714bffdc0d2ce8c8e9bf32964 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Sun, 25 Jan 2026 17:53:25 +0800 Subject: [PATCH 41/48] =?UTF-8?q?01-25=20=E5=90=8C=E6=AD=A5gorder=EF=BC=8C?= =?UTF-8?q?=E4=BB=8E2026=E5=B9=B4=E5=BC=80=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/cashMapper/CashCollectionMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index c6a6590..7f25eef 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -252,7 +252,7 @@ add_time,is_synced from g_order where is_synced=0 and state=1 and pay_style in(3,5,6,7,9,10,15) - and success_time>=1763136000 + and success_time>=1767196800 limit #{size} select From 0c298a30679c8cfa1ddcd6d2a5db83166117899a Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 19:46:19 +0800 Subject: [PATCH 47/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=80=80=E6=AC=BE=E5=B8=81=E7=A7=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/controller/cash/CashRefundController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 1656b36..4988f2f 100644 --- a/src/main/java/com/example/demo/controller/cash/CashRefundController.java +++ b/src/main/java/com/example/demo/controller/cash/CashRefundController.java @@ -552,6 +552,10 @@ public class CashRefundController { if (dto.getNumUnit() != null) { dto.setNumUnit(languageTranslationUtil.translate(dto.getNumUnit(), lang)); } + // 翻译退款币种 + if (dto.getRefundCurrency() != null) { + dto.setRefundCurrency(languageTranslationUtil.translate(dto.getRefundCurrency(), lang)); + } } } } @@ -651,6 +655,13 @@ public class CashRefundController { cashRecordDTO.getNumUnit(), languageCode); cashRecordDTO.setNumUnit(chineseNumUnit); } + + // 转换退款币种 + if (cashRecordDTO.getRefundCurrency() != null && !cashRecordDTO.getRefundCurrency().isEmpty()) { + String chineseCurrency = translationService.findChineseSimplifiedByTranslation( + cashRecordDTO.getRefundCurrency(), languageCode); + cashRecordDTO.setRefundCurrency(chineseCurrency); + } } } From 50da233d18769101559f7b0928d91a0e9d138115 Mon Sep 17 00:00:00 2001 From: wangguorui <2069821375@qq.com> Date: Sun, 25 Jan 2026 21:33:52 +0800 Subject: [PATCH 48/48] =?UTF-8?q?1=E6=9C=8825=E6=97=A5=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8F=90=E4=BA=A4=E4=BA=BA=E5=9C=B0=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/controller/coin/ExportController.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 b30b57c..18cf473 100644 --- a/src/main/java/com/example/demo/controller/coin/ExportController.java +++ b/src/main/java/com/example/demo/controller/coin/ExportController.java @@ -781,6 +781,13 @@ public class ExportController { cashCollection.getRejectReason(), languageCode); cashCollection.setRejectReason(chineseRejectReason); } + + // 转换提交人地区 + if (cashCollection.getSubmitterMarket() != null && !cashCollection.getSubmitterMarket().isEmpty()) { + String chineseMarket = translationService.findChineseSimplifiedByTranslation( + cashCollection.getSubmitterMarket(), languageCode); + cashCollection.setSubmitterMarket(chineseMarket); + } } }