From 49f243f4352c1eed3ca8add6e4630f0d4a228e54 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Thu, 4 Dec 2025 10:12:47 +0800 Subject: [PATCH 01/16] =?UTF-8?q?12=E6=9C=884=E6=97=A5=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E7=B2=BE=E7=BD=91=E5=8F=B7=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 9dc5362..d2a77f0 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -11,6 +11,7 @@ import com.example.demo.exception.SystemException; import com.example.demo.mapper.coin.ConsumeMapper; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; +import com.example.demo.service.Temporary.RedService; import com.example.demo.service.coin.ConsumeService; import com.example.demo.service.coin.MarketService; import com.github.pagehelper.PageHelper; @@ -50,6 +51,9 @@ public class ConsumeServiceImpl implements ConsumeService { @Autowired private MarketMapper marketMapper; + @Autowired + private RedService redService; + //消耗明细 @Override public PageInfo selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser){ @@ -191,7 +195,7 @@ public class ConsumeServiceImpl implements ConsumeService { user.setSumConsumeTask(BigDecimal.valueOf(-consumeUser.getTaskGold().intValue())); userMapper.updateGold(user); - + redService.sendJwcode(consumeUser.getJwcode()); // } return Result.success(); } From 642dec90ca867305e8700f7a567c6966966776cf Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 4 Dec 2025 11:16:45 +0800 Subject: [PATCH 02/16] =?UTF-8?q?12-04=20=E5=90=8C=E6=AD=A5=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E6=94=B6=E6=AC=BE=E8=AE=A2=E5=8D=95=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9ios=E5=88=B0=E8=B4=A6=E5=9C=B0=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 14df521..4b0ba19 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -373,7 +373,7 @@ public User getNameAndMarket(Integer jwcode) { case 3: cashRecord.setPayType("IOS内购"); cashRecord.setBankCode(gOrder.getIosTransactionId()); - cashRecord.setReceivedMarket("3"); + cashRecord.setReceivedMarket("4"); cashRecord.setPayload("IOS"); break; case 5: From ec2afc99fad12cef1215b8e7bc25562e13ec2884 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 4 Dec 2025 15:07:26 +0800 Subject: [PATCH 03/16] =?UTF-8?q?12-04=20=E7=B4=AF=E5=85=85=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/service/Temporary/RedService.java | 1 + .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 4 +++- src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/demo/service/Temporary/RedService.java b/src/main/java/com/example/demo/service/Temporary/RedService.java index c34495e..de60f87 100644 --- a/src/main/java/com/example/demo/service/Temporary/RedService.java +++ b/src/main/java/com/example/demo/service/Temporary/RedService.java @@ -14,6 +14,7 @@ import java.math.BigDecimal; **/ public interface RedService { BigDecimal selectSum(Integer jwcode, Integer type); + void addAmount(Integer jwcode,BigDecimal sum, Integer type); String sendJwcode(Integer jwcode); } 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 91041e7..29f0f98 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -10,6 +10,7 @@ import com.example.demo.service.Temporary.RedService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; @@ -62,7 +63,8 @@ public class RedServiceImpl implements RedService { } @Override - @Transactional(rollbackFor = Exception.class) + // @Transactional(rollbackFor = Exception.class) + @Transactional(propagation = Propagation.REQUIRES_NEW) public void addAmount(Integer jwcode, BigDecimal sum, Integer type) { // 1. 基础参数校验 validateParams(jwcode, type, sum); 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 4c5772d..2185034 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -120,7 +120,7 @@ public class AuditServiceImpl implements AuditService { //累充 - /* try { + try { BigDecimal sum = BigDecimal.valueOf( order.getPermanentGold()) .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); @@ -128,7 +128,7 @@ public class AuditServiceImpl implements AuditService { redService.addAmount(order.getJwcode(), sum, 1); // ← 直接调你写好的方法! } catch (Exception e) { log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); - }*/ + } redService.sendJwcode(order.getJwcode()); From 783ccb868c68b7d409252286325906321a6754ed Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 4 Dec 2025 16:09:18 +0800 Subject: [PATCH 04/16] =?UTF-8?q?12-04=20=E5=8F=91=E9=80=81=E7=BA=A2?= =?UTF-8?q?=E5=8C=85=EF=BC=8C=E8=BF=9E=E6=8E=A5=E6=94=B9=E6=AD=A3=E5=BC=8F?= 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 29f0f98..c4c8d26 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -90,7 +90,7 @@ public class RedServiceImpl implements RedService { String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode)); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(BASE_URLDev + PATH)) //URL记得换 + .uri(URI.create(BASE_URLProd + PATH)) //URL记得换 .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); From 68194d2c96bf9dcaf9c98407980f4764138cd37d Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Thu, 4 Dec 2025 17:14:18 +0800 Subject: [PATCH 05/16] =?UTF-8?q?12.4=20=E4=BF=AE=E6=94=B9=E5=85=85?= =?UTF-8?q?=E5=80=BCbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/config/RedTimeRuleConfig.java | 2 +- src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java | 2 +- src/main/resources/mapper/RedMapper.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/config/RedTimeRuleConfig.java b/src/main/java/com/example/demo/config/RedTimeRuleConfig.java index 4396b0b..c3ab6cc 100644 --- a/src/main/java/com/example/demo/config/RedTimeRuleConfig.java +++ b/src/main/java/com/example/demo/config/RedTimeRuleConfig.java @@ -13,7 +13,7 @@ import java.time.ZoneId; @Component public class RedTimeRuleConfig { // 充值开放时间:2025-12-04 20:00:00(北京时间) - private LocalDateTime rechargeStartTime = LocalDateTime.of(2025, 12, 4, 20, 0, 0); + private LocalDateTime rechargeStartTime = LocalDateTime.of(2025, 12, 4, 16, 0, 0); // 消费开放时间:2025-12-06 10:00:00(北京时间) private LocalDateTime consumeStartTime = LocalDateTime.of(2025, 12, 6, 10, 0, 0); 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 2185034..ef38900 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -127,7 +127,7 @@ public class AuditServiceImpl implements AuditService { redService.addAmount(order.getJwcode(), sum, 1); // ← 直接调你写好的方法! } catch (Exception e) { - log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); +// log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); } redService.sendJwcode(order.getJwcode()); diff --git a/src/main/resources/mapper/RedMapper.xml b/src/main/resources/mapper/RedMapper.xml index 56d6479..82d355c 100644 --- a/src/main/resources/mapper/RedMapper.xml +++ b/src/main/resources/mapper/RedMapper.xml @@ -4,11 +4,11 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - INSERT INTO red_account (jwcode, type, sum) + INSERT INTO red (jwcode, type, sum) VALUES ( #{jwcode}, #{type}, - #{sum}, + #{sum} ) ON DUPLICATE KEY UPDATE sum = sum + #{sum} From 9d2e6d3bafa4705fdd583d116f71dbfcb44b5639 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 4 Dec 2025 17:17:07 +0800 Subject: [PATCH 06/16] =?UTF-8?q?12-04=20=E5=8F=91=E9=80=81=E7=B2=BE?= =?UTF-8?q?=E7=BD=91=E5=8F=B7=EF=BC=8C=E4=BF=AE=E6=94=B9=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 4 +++- .../java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java | 7 ++++++- src/main/resources/application-prod.yml | 3 ++- 3 files changed, 11 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 c4c8d26..fea1165 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -9,6 +9,7 @@ import com.example.demo.mapper.Temporary.RedMapper; import com.example.demo.service.Temporary.RedService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -34,7 +35,8 @@ import java.time.format.DateTimeFormatter; @Slf4j @Service public class RedServiceImpl implements RedService { - private static final String BASE_URLProd = "http://39.101.133.168:8828/scms"; + @Value("${red.url}") + private String BASE_URLProd ; private static final String BASE_URLDev = "http://gf977328.natappfree.cc"; private static final String PATH = "/api/coupon/IssueRechargeRedPacket"; 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 ef38900..042747d 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -129,7 +129,12 @@ public class AuditServiceImpl implements AuditService { } catch (Exception e) { // log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); } - redService.sendJwcode(order.getJwcode()); + try { + redService.sendJwcode(order.getJwcode()); + log.info("精网号发送成功 | jwcode={}", order.getJwcode()); + }catch (Exception e){ + log.warn("精网号发送失败,主流程继续 | jwcode={}", order.getJwcode(), e); + } //erp增加充值数据 diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index db96594..b15146b 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -103,6 +103,7 @@ bean: url: http://api.homilychart.com/hljwgo/api/wallet/recharge consume: url: http://api.homilychart.com/hljwgo/api/wallet/pay - +red: + url: https://mp.legu168.com.cn/TestApi/haiwai_preview/scms server: port: 10705 From 52bf03c29bac67ab11f78a235357284a68e8cbc9 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Thu, 4 Dec 2025 17:20:09 +0800 Subject: [PATCH 07/16] =?UTF-8?q?12-04=20=E5=8F=91=E9=80=81=E7=B2=BE?= =?UTF-8?q?=E7=BD=91=E5=8F=B7=EF=BC=8C=E4=BF=AE=E6=94=B9=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=EF=BC=88=E5=BC=80=E5=8F=91=E4=B8=8E=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application-dev.yml | 2 ++ src/main/resources/application-test.yml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index cbc148b..8e10338 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -100,5 +100,7 @@ bean: url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge consume: url: http://39.101.133.168:8828/hljwgo/api/wallet/pay +red: + url: http://39.101.133.168:8828/scmshttp://39.101.133.168:8828/scms server: port: 10704 \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index deec043..591474d 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -100,6 +100,9 @@ bean: url: http://39.101.133.168:8828/hljwgo/api/wallet/recharge consume: url: http://39.101.133.168:8828/hljwgo/api/wallet/pay + +red: + url: http://39.101.133.168:8828/scms server: port: 8081 From 6575ca6b5f76ca0388d4960fadcca4e719e2aa2f Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 5 Dec 2025 10:15:45 +0800 Subject: [PATCH 08/16] =?UTF-8?q?12.4=20=E5=82=A8=E5=80=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 4 ++-- src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java | 2 +- src/main/resources/application-prod.yml | 2 +- 3 files changed, 4 insertions(+), 4 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 fea1165..ce16de4 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -52,9 +52,9 @@ public class RedServiceImpl implements RedService { throw new BusinessException("未接受到精网号"); } if (redMapper.selectJwcode(jwcode)==false){ - throw new BusinessException("未找到该精网号"); + return BigDecimal.valueOf(0); } - if(redMapper.selectJwcode(jwcode)) + if (type == null){ throw new BusinessException("未接受到类型"); } 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 042747d..7fc24c5 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -127,7 +127,7 @@ public class AuditServiceImpl implements AuditService { redService.addAmount(order.getJwcode(), sum, 1); // ← 直接调你写好的方法! } catch (Exception e) { -// log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); + log.warn("红包累加失败,主流程继续 | jwcode={}", order.getJwcode(), e); } try { redService.sendJwcode(order.getJwcode()); diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index b15146b..fc5e050 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -104,6 +104,6 @@ bean: consume: url: http://api.homilychart.com/hljwgo/api/wallet/pay red: - url: https://mp.legu168.com.cn/TestApi/haiwai_preview/scms + url: https://api.homilychart.com/scms server: port: 10705 From 86a1151181d216f136ab4906c4a2aa1276effa81 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 5 Dec 2025 10:39:24 +0800 Subject: [PATCH 09/16] =?UTF-8?q?12=E6=9C=884=E6=97=A5=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E7=B2=BE=E7=BD=91=E5=8F=B7=E4=BC=A0=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/demo/service/Temporary/RedService.java | 3 ++- .../demo/serviceImpl/Temporary/RedServiceImpl.java | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/service/Temporary/RedService.java b/src/main/java/com/example/demo/service/Temporary/RedService.java index de60f87..da6a150 100644 --- a/src/main/java/com/example/demo/service/Temporary/RedService.java +++ b/src/main/java/com/example/demo/service/Temporary/RedService.java @@ -15,6 +15,7 @@ import java.math.BigDecimal; public interface RedService { BigDecimal selectSum(Integer jwcode, Integer type); - void addAmount(Integer jwcode,BigDecimal sum, Integer type); + void addAmount(Integer jwcode,BigDecimal sum, Integer type); String sendJwcode(Integer jwcode); + String sendConsumeJwcode(Integer jwcode, Integer price); } 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 ce16de4..5bf1621 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -108,7 +108,27 @@ public class RedServiceImpl implements RedService { return "{\"success\":false,\"msg\":\"网络异常\"}"; } } + @Override + public String sendConsumeJwcode(Integer jwcode, Integer price) { + try { + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"price",price)); + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(BASE_URLProd + PATH)) //URL记得换 + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString(body)) + .build(); + + HttpResponse resp = CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); + if (resp.statusCode() != 200) { + log.warn("红包接口异常,status:{},body:{}", resp.statusCode(), resp.body()); + } + return resp.body(); + } catch (IOException | InterruptedException e) { + log.error("调用红包接口失败,jwcode:{}", jwcode, e); + return "{\"success\":false,\"msg\":\"网络异常\"}"; + } + } // --- 校验方法 --- private void validateParams(Integer jwcode, Integer type, BigDecimal delta) { From 0c09f2e70d67b498553485018cca6b04bb3b5f1b Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 5 Dec 2025 10:56:59 +0800 Subject: [PATCH 10/16] =?UTF-8?q?12.5=20=E7=B4=AF=E8=AE=A1=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/coin/AuditServiceImpl.java | 2 +- .../com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 7fc24c5..d54eed7 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -123,7 +123,7 @@ public class AuditServiceImpl implements AuditService { try { BigDecimal sum = BigDecimal.valueOf( order.getPermanentGold()) - .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); + .divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP) ; redService.addAmount(order.getJwcode(), sum, 1); // ← 直接调你写好的方法! } catch (Exception e) { 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 d2a77f0..8c2f3b1 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -195,6 +196,16 @@ public class ConsumeServiceImpl implements ConsumeService { user.setSumConsumeTask(BigDecimal.valueOf(-consumeUser.getTaskGold().intValue())); userMapper.updateGold(user); + //累消 + try { + BigDecimal sum = (consumeUser.getSumGold()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP ); + + redService.addAmount(consumeUser.getJwcode(),sum, 2); + }catch (Exception e){ + log.warn("消耗累加失败,主流程继续 | jwcode={}", consumeUser.getJwcode(), e); + } + + redService.sendJwcode(consumeUser.getJwcode()); // } return Result.success(); From fa719da156d73c9ba6499a5be99a34f6eb7c8d0a Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 5 Dec 2025 10:57:22 +0800 Subject: [PATCH 11/16] =?UTF-8?q?12=E6=9C=885=E6=97=A5=E6=B6=88=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 6 +++--- 1 file changed, 3 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 5bf1621..14c4bd7 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -39,7 +39,7 @@ public class RedServiceImpl implements RedService { private String BASE_URLProd ; private static final String BASE_URLDev = "http://gf977328.natappfree.cc"; private static final String PATH = "/api/coupon/IssueRechargeRedPacket"; - + private static final String CONSUME_PATH = "/api/coupon/updateCostRedPacket"; private static final HttpClient CLIENT = HttpClient.newHttpClient(); @Autowired @@ -111,9 +111,9 @@ public class RedServiceImpl implements RedService { @Override public String sendConsumeJwcode(Integer jwcode, Integer price) { try { - String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"price",price)); + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"discount",price)); HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create(BASE_URLProd + PATH)) //URL记得换 + .uri(URI.create(BASE_URLProd + CONSUME_PATH)) //URL记得换 .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body)) .build(); From b60cba10d4e8048372eebd245f32df31a0d96d6f Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 5 Dec 2025 11:02:21 +0800 Subject: [PATCH 12/16] =?UTF-8?q?12=E6=9C=885=E6=97=A5=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E7=BA=A2=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java | 2 ++ src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java index e5f33cc..39764b4 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java @@ -81,4 +81,6 @@ public class ConsumeUser implements Serializable { private List markets; // 地区列表 @ExcelIgnore private Integer flag; //是否为员工号 + @ExcelProperty("折扣金币") + private BigDecimal price; // 折扣金币 } 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 8c2f3b1..0a4fef8 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -206,7 +206,7 @@ public class ConsumeServiceImpl implements ConsumeService { } - redService.sendJwcode(consumeUser.getJwcode()); + redService.sendConsumeJwcode(consumeUser.getJwcode(),consumeUser.getPrice().intValue()-consumeUser.getSumGold().intValue()); // } return Result.success(); } From 29a01d70b9744c213eaa128d48cbea81b064925f Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 5 Dec 2025 13:42:12 +0800 Subject: [PATCH 13/16] =?UTF-8?q?12.5=20=E7=B4=AF=E8=AE=A1=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/domain/vo/coin/GoldUser.java | 2 ++ .../example/demo/service/Temporary/RedService.java | 2 ++ .../demo/serviceImpl/Temporary/RedServiceImpl.java | 39 ++++++++++++++++++++++ .../demo/serviceImpl/coin/UserServiceImpl.java | 8 +++++ src/main/resources/application-dev.yml | 2 +- 5 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java b/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java index 515f82d..bb84ffc 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java +++ b/src/main/java/com/example/demo/domain/vo/coin/GoldUser.java @@ -59,4 +59,6 @@ public class GoldUser { private Date firstRecharge; // 首充日期 @ExcelIgnore private List markets; // 地区列表 + @ExcelIgnore + private BigDecimal red; } diff --git a/src/main/java/com/example/demo/service/Temporary/RedService.java b/src/main/java/com/example/demo/service/Temporary/RedService.java index da6a150..6055e94 100644 --- a/src/main/java/com/example/demo/service/Temporary/RedService.java +++ b/src/main/java/com/example/demo/service/Temporary/RedService.java @@ -18,4 +18,6 @@ public interface RedService { void addAmount(Integer jwcode,BigDecimal sum, Integer type); String sendJwcode(Integer jwcode); String sendConsumeJwcode(Integer jwcode, Integer price); + + BigDecimal selectRedSum(Integer jwcode); } 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 14c4bd7..e66a9a8 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -7,6 +7,8 @@ import com.example.demo.domain.vo.Red; import com.example.demo.exception.SystemException; import com.example.demo.mapper.Temporary.RedMapper; import com.example.demo.service.Temporary.RedService; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -39,6 +41,8 @@ public class RedServiceImpl implements RedService { private String BASE_URLProd ; private static final String BASE_URLDev = "http://gf977328.natappfree.cc"; private static final String PATH = "/api/coupon/IssueRechargeRedPacket"; + private static final String PATHRED = "/api/coupon/getTotalDiscount"; + private static final String CONSUME_PATH = "/api/coupon/updateCostRedPacket"; private static final HttpClient CLIENT = HttpClient.newHttpClient(); @@ -130,6 +134,41 @@ public class RedServiceImpl implements RedService { } } + @Override + public BigDecimal selectRedSum(Integer jwcode) { + try { + String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode)); + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create("http://sb29dfa2.natappfree.cc" + PATHRED)) //URL记得换 + .header("Content-Type", "application/json") + .POST(HttpRequest.BodyPublishers.ofString(body)) + .build(); + + HttpResponse resp = CLIENT.send(request, HttpResponse.BodyHandlers.ofString()); + // 解析 JSON + ObjectMapper mapper = new ObjectMapper(); + JsonNode rootNode = mapper.readTree(resp.body()); + +// 提取 data 字段 + if (rootNode.has("data")) { + JsonNode dataNode = rootNode.get("data"); + System.out.println("Data: " + dataNode); + return dataNode.decimalValue(); + } + + + if (resp.statusCode() != 200) { + log.warn("网络异常", resp.statusCode(), resp.body()); + } + return BigDecimal.valueOf(0); + } catch (IOException | InterruptedException e) { + log.error("网络异常", jwcode, e); + return BigDecimal.valueOf(0); + } + } + + // --- 校验方法 --- private void validateParams(Integer jwcode, Integer type, BigDecimal delta) { if (jwcode == null || jwcode <= 0) { diff --git a/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java index 50fa851..cda2169 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/UserServiceImpl.java @@ -8,6 +8,7 @@ import com.example.demo.domain.vo.coin.GoldUser; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.mapper.coin.UserMapper; +import com.example.demo.service.Temporary.RedService; import com.example.demo.service.coin.UserService; import jakarta.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import java.math.BigDecimal; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -37,6 +39,8 @@ public class UserServiceImpl implements UserService { @Autowired private MarketMapper marketMapper; + @Autowired + private RedService redService; //查找用户部分信息 @Override @@ -52,7 +56,11 @@ public class UserServiceImpl implements UserService { if (markets.contains("9") || markets.contains("9999")){ markets=null; } + BigDecimal redSum = redService.selectRedSum(Integer.parseInt(jwcode)); + GoldUser user = userMapper.selectUserCard(jwcode,markets); + user.setRed(redSum); + return Result.success(user); } else{ diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 8e10338..9e9dc79 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -101,6 +101,6 @@ bean: consume: url: http://39.101.133.168:8828/hljwgo/api/wallet/pay red: - url: http://39.101.133.168:8828/scmshttp://39.101.133.168:8828/scms + url: http://39.101.133.168:8828/scms server: port: 10704 \ No newline at end of file From 809c92efa82924a020221991c1c4158ec2e11853 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 5 Dec 2025 13:43:41 +0800 Subject: [PATCH 14/16] =?UTF-8?q?12.5=20=E7=B4=AF=E8=AE=A1=E6=B6=88?= =?UTF-8?q?=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0a4fef8..7732b53 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -198,7 +198,7 @@ public class ConsumeServiceImpl implements ConsumeService { //累消 try { - BigDecimal sum = (consumeUser.getSumGold()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP ); + BigDecimal sum = (consumeUser.getPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP ); redService.addAmount(consumeUser.getJwcode(),sum, 2); }catch (Exception e){ From 6af54d2f50db0bc548d78fdcd44220e6c2ba3604 Mon Sep 17 00:00:00 2001 From: huangqizhen <15552608129@163.com> Date: Fri, 5 Dec 2025 14:08:20 +0800 Subject: [PATCH 15/16] =?UTF-8?q?12.5=20=E7=B4=AF=E8=AE=A1=E6=B6=88?= =?UTF-8?q?=E8=80=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/controller/coin/ConsumeController.java | 3 +-- .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/com/example/demo/controller/coin/ConsumeController.java b/src/main/java/com/example/demo/controller/coin/ConsumeController.java index 4c99aa4..63a42ab 100644 --- a/src/main/java/com/example/demo/controller/coin/ConsumeController.java +++ b/src/main/java/com/example/demo/controller/coin/ConsumeController.java @@ -190,8 +190,7 @@ public class ConsumeController { // } catch (Exception e) { e.printStackTrace(); - String translatedErrorMsg = languageTranslationUtil.translate("请查看后端报错信息", lang); - return Result.error(translatedErrorMsg); + return Result.error(e.getMessage()); } } 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 e66a9a8..7ae688a 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -198,9 +198,6 @@ public class RedServiceImpl implements RedService { } else if (type == 2) { // 消费:必须 delta < 0(或你设计为正数+方向,此处按负数扣款) - if (delta.compareTo(BigDecimal.ZERO) > 0) { - throw new BusinessException("消费金额应为负数(表示扣款)"); - } if (now.isBefore(timeRuleConfig.getConsumeStartTime())) { String openTime = timeRuleConfig.getConsumeStartTime() .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); From e74fabab566b2313192c8c678d3dc21065340487 Mon Sep 17 00:00:00 2001 From: sunjiabei Date: Fri, 5 Dec 2025 14:08:46 +0800 Subject: [PATCH 16/16] =?UTF-8?q?12=E6=9C=885=E6=97=A5=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E7=BA=A2=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/example/demo/service/Temporary/RedService.java | 2 +- .../java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java | 4 ++-- .../java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/demo/service/Temporary/RedService.java b/src/main/java/com/example/demo/service/Temporary/RedService.java index da6a150..f5e0181 100644 --- a/src/main/java/com/example/demo/service/Temporary/RedService.java +++ b/src/main/java/com/example/demo/service/Temporary/RedService.java @@ -17,5 +17,5 @@ public interface RedService { void addAmount(Integer jwcode,BigDecimal sum, Integer type); String sendJwcode(Integer jwcode); - String sendConsumeJwcode(Integer jwcode, Integer price); + String sendConsumeJwcode(Integer jwcode, BigDecimal price); } 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 14c4bd7..251133c 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -108,8 +108,8 @@ public class RedServiceImpl implements RedService { return "{\"success\":false,\"msg\":\"网络异常\"}"; } } - @Override - public String sendConsumeJwcode(Integer jwcode, Integer price) { + @Override + public String sendConsumeJwcode(Integer jwcode, BigDecimal price) { try { String body = JSON.toJSONString(java.util.Map.of("jwcode", jwcode,"discount",price)); HttpRequest request = HttpRequest.newBuilder() 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 0a4fef8..0d21d36 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/ConsumeServiceImpl.java @@ -206,7 +206,7 @@ public class ConsumeServiceImpl implements ConsumeService { } - redService.sendConsumeJwcode(consumeUser.getJwcode(),consumeUser.getPrice().intValue()-consumeUser.getSumGold().intValue()); + redService.sendConsumeJwcode(consumeUser.getJwcode(),(consumeUser.getPrice().subtract(consumeUser.getSumGold())).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)); // } return Result.success(); }