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/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 f5e0181..8d7f250 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,7 @@ public interface RedService { void addAmount(Integer jwcode,BigDecimal sum, Integer type); String sendJwcode(Integer jwcode); + + BigDecimal selectRedSum(Integer jwcode); 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 251133c..35f9c42 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) { @@ -159,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")); 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 0d21d36..e7f5cb5 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){ 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