Browse Source

01-09 新增退款是传入price;红包退款,判断为旧订单则执行原退款流程

milestone-20251215-红包修改
lijianlin 22 hours ago
parent
commit
d9cd4c183a
  1. 1
      src/main/java/com/example/demo/domain/vo/coin/RefundUser.java
  2. 12
      src/main/java/com/example/demo/serviceImpl/Temporary/RedServiceImpl.java
  3. 15
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  4. 1
      src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java
  5. 6
      src/main/resources/mapper/RefundMapper.xml

1
src/main/java/com/example/demo/domain/vo/coin/RefundUser.java

@ -45,6 +45,7 @@ public class RefundUser implements Serializable {
@ExcelIgnore
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
private BigDecimal price; //原价
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")

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

@ -235,22 +235,16 @@ public class RedServiceImpl implements RedService {
@Override
public String checkRed(BigDecimal price,String linkId)throws Exception {
try {
// 构造 参数order_id=L125
// 构造参数
String body = "{\"order_id\":\"" + linkId + "\",\"amount\":" + price.divideToIntegralValue(BigDecimal.valueOf(100)).intValue() + "}";
// 构建 HttpRequest
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(BASE_URL_Margen+PATH_CHECK))
.header("Content-Type", "application/json")
// 透传 token避免 JWT 过期问题
// .header("Authorization", authHeader)
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
// 发送请求
HttpResponse<String> resp =
CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
// HTTP 层校验
if (resp.statusCode() != 200 ) {
log.warn("红包接口 HTTP 异常,status:{},body:{}",
@ -260,6 +254,10 @@ public class RedServiceImpl implements RedService {
// 解析返回 JSON
JsonNode root = objectMapper.readTree(resp.body());
int code = root.path("code").asInt();
if (code==0){
//旧订单
return "old";
}
if (code == 400) {
// 400 状态码表示参数错误
log.warn("该订单无法处理,status:{},body:{}",

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

@ -149,16 +149,9 @@ public class AuditServiceImpl implements AuditService {
}else if (order.getType()==2) { //退款
//对非强制退款订单进行退红包校验
if (price== null||linkId== null)
{
String logMsg="旧版订单暂不支持退款,请联系工作人员进行操作";
log.error(logMsg);
AuditContext.setFailMsg(logMsg);
return false;
}
if (order.getAuditStatus()!=4){
try {
redService.checkRed(price, linkId);
String result = redService.checkRed(price, linkId);
} catch (RedCheckException e) {
// 业务失败flag=false
int num = e.getNum();
@ -216,9 +209,11 @@ public class AuditServiceImpl implements AuditService {
GoldTistV2.addCoinNew(order.getJwcode().toString(), 59, //退款任务+永久金币-充值
(double) (order.getTaskGold()+order.getPermanentGold() ) /100,SimpleIdGenerator.generateId(),
order.getRemark(),(double) order.getPermanentGold() / 100, auditName, "退款金币充值");}
//金币退款的原价为充值的永久金币
if (order.getRefundType().equals("金币退款")){
price= BigDecimal.valueOf(order.getPermanentGold());
}
//额外扣金币抵扣红包
if (order.getAuditStatus()==4&&price!= null&&linkId!= null){
int type = 1; //红包充值累计
GoldUser user = userMapper.selectUser(order.getJwcode().toString());

1
src/main/java/com/example/demo/serviceImpl/coin/RefundServiceImpl.java

@ -179,6 +179,7 @@ public class RefundServiceImpl implements RefundService {
userGoldRecord.setPayPlatform("金币系统");
userGoldRecord.setRemark(refundUser.getRemark());
userGoldRecord.setPrice(refundUser.getPrice());
userGoldRecord.setAdminId(refundUser.getAdminId());
userGoldRecord.setType((byte) 2);
userGoldRecord.setAuditStatus(0);

6
src/main/resources/mapper/RefundMapper.xml

@ -233,7 +233,8 @@
admin_id,
audit_status,
create_time,
update_time
update_time,
price
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
@ -253,7 +254,8 @@
#{adminId},
#{auditStatus},
#{createTime},
#{updateTime}
#{updateTime},
#{price}
</trim>
</insert>

Loading…
Cancel
Save