Browse Source

12-31 红包退款审核(未完成)

milestone-20251215-红包修改
lijianlin 1 week ago
parent
commit
95bdff5a60
  1. 11
      src/main/java/com/example/demo/controller/Temporary/RedController.java
  2. 53
      src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java
  3. 17
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

11
src/main/java/com/example/demo/controller/Temporary/RedController.java

@ -1,6 +1,7 @@
package com.example.demo.controller.Temporary;
import com.example.demo.domain.vo.Red;
import com.example.demo.domain.vo.coin.AuditRequest;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.Temporary.RedService;
import lombok.RequiredArgsConstructor;
@ -46,4 +47,14 @@ public class RedController {
}
return Result.success(redService.selectRedList(red.getJwcode()));
}
@RequestMapping("/RedTest")
public Result selectRedTest(@RequestBody AuditRequest request) throws Exception {
try {
redService.checkRed(request.getLinkId());
}
catch (Exception e) {
return Result.error(e.getMessage());
}
return Result.success(redService.checkRed(request.getLinkId()));
}
}

53
src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java

@ -17,7 +17,12 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.ConnectException;
@ -36,7 +41,6 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeoutException;
/**
* @program: GOLD
* @ClassName RedServiceImpl
@ -58,10 +62,13 @@ public class RedServiceImpl implements RedService {
private static final String BASE_URL = "http://localhost:8080";
private static final String PATHLIST = "/api/coupon/getRedPacket";
private static final String PATHLOGIN = "/api/user/toujiaoAppLogin";
private static final String PATH_REFUND = "/api/coupon/refundRedPacket";
private static final String CONSUME_PATH = "/api/coupon/updateCostRedPacket";
private static final HttpClient CLIENT = HttpClient.newHttpClient();
private final RestTemplate restTemplate = new RestTemplate();
private final ObjectMapper objectMapper = new ObjectMapper();
@Autowired
private RedMapper redMapper;
@Autowired
@ -220,26 +227,36 @@ public class RedServiceImpl implements RedService {
@Override
public String checkRed(String linkId)throws Exception {
try {
// 组装 form 表单参数
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("order_id", linkId);
int a=0;
int b=0;
if (a==200){
if(b==1){
throw new BusinessException("红包抵扣不足以退款,请联系客户后再次尝试");
}
}
if(a==400) {
throw new BusinessException("系统繁忙");
// log.warn("红包服务返回400状态码: {},响应: {}", resp.statusCode(), resp.body());
}
}catch(Exception e){
throw new BusinessException("系统异常");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request =
new HttpEntity<>(params, headers);
// 发送 POST 请求
ResponseEntity<String> response =
restTemplate.postForEntity(BASE_URLDev+PATH_REFUND, request, String.class);
// 解析返回 JSON
JsonNode root = objectMapper.readTree(response.getBody());
int code = root.path("code").asInt();
boolean flag = root.path("data").path("flag").asBoolean();
// 业务判断
if (code == 200 && flag) {
// 正常流程
updateOrderStatus(linkId);
return "success";
}
return "{\"success\":true,\"msg\":\"成功\"}";
// false 或接口异常
throw new RuntimeException("红包校验失败,orderId=" + linkId);
}
@Override
public void updateOrderStatus(String linkId) throws Exception {
try {

17
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -88,14 +88,7 @@ public class AuditServiceImpl implements AuditService {
auditMapper.updateOrder(updateOrder);
}else if (action==1) { //通过
try {
redService.checkRed(linkId);
} catch (Exception e) {
log.error("红包退票失败");
updateOrder.setAuditStatus(4);
auditMapper.updateOrder(updateOrder);
throw new RuntimeException(e);
}
//判断是充值还是退款
if (order.getType()==0){ //充值
//更新用户余额
@ -154,6 +147,14 @@ public class AuditServiceImpl implements AuditService {
order.getRemark(),0, auditName, "金币充值");
}else if (order.getType()==2) { //退款
try {
redService.checkRed(linkId);
} catch (Exception e) {
log.error("红包退票失败");
updateOrder.setAuditStatus(4);
auditMapper.updateOrder(updateOrder);
throw new RuntimeException(e);
}
//2.获取对应的订单退款订单号去掉开头"TK"即为对应原始订单
String oldOrderCode = order.getOrderCode().replaceFirst("TK_", "");
UserGoldRecord oldOrder = auditMapper.selectAllOrderByOrderCode(oldOrderCode);

Loading…
Cancel
Save