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 083afd6..4667b68 100644 --- a/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java @@ -253,28 +253,38 @@ public class RedServiceImpl implements RedService { } // 解析返回 JSON JsonNode root = objectMapper.readTree(resp.body()); + JsonNode dataNode = root.get("data"); int code = root.path("code").asInt(); - if (code==0){ - //旧订单 - return "old"; - } + boolean flag = root.path("data").path("flag").asBoolean(); + int num = root.path("data").path("num").asInt(); // 获取 num if (code == 400) { + // 400 状态码表示参数错误 log.warn("该订单无法处理,status:{},body:{}", resp.statusCode(), resp.body()); - throw new RuntimeException("该订单无法自动处理,请联系工作人员"); + throw new RuntimeException("该订单无法自动处理,请联系管理员"); } - boolean flag = root.path("data").path("flag").asBoolean(); - int num = root.path("data").path("num").asInt(); // 获取 num + // 业务判断 - if (code == 200 && flag) { - return "success"; - } else { // flag 为 false - throw new RedCheckException( - "红包校验失败,orderId=" + linkId, num); + if (code == 200 ) { + if (dataNode.asInt() == 1) { + throw new RuntimeException("该订单不符合退款条件,请手动处理!"); + } + if (dataNode.asInt() == 0){ + return "old"; + } + if (flag) { + return "success"; + } else { + throw new RedCheckException( + "红包校验失败,orderId=" + linkId, num); + } + }else { + throw new RuntimeException("系统异常,请联系管理员"); } + } catch (IOException | InterruptedException e) { log.error("调用红包接口失败,orderId:{}", linkId, e); throw new RuntimeException("调用红包接口异常", e); 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 aea3187..9c0a7bd 100644 --- a/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java @@ -159,7 +159,6 @@ public class AuditServiceImpl implements AuditService { "红包退票失败,orderId=%s,还需扣除金币数=%d", linkId, num ); - log.error(logMsg); updateOrder.setAuditStatus(4); updateOrder.setRedDiff(BigDecimal.valueOf(num* 100L)); @@ -258,11 +257,13 @@ public class AuditServiceImpl implements AuditService { consumeUser.setPrice(order.getPrice()); // 执行金币抵扣红包 redService.updateRed(consumeUser); - //link扣除已有红包 - redService.consumeRed(linkId); // 执行审核更新 redMapper.update(order.getJwcode(),type,order.getPrice()); } + + if (!redService.checkRed(price, linkId).equals("old")){ + //link扣除已有红包 + redService.consumeRed(linkId);} } }