build: 构建生产版本
**前端构建:** - Flutter Web 构建产物 (build/web) - 包含主题修复和绿色对比度优化 **后端修改:** - 添加 MyBatisPlusMetaObjectHandler (自动填充字段) - 更新实体类、DTO、Controller - 优化 Jackson 配置 - 更新 application-dev.yml **构建信息:** - Maven: monisuo-1.0.jar (41MB) - Flutter: build/web (22.9s) - 环境: prod
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package com.it.rattan.monisuo.common;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 统一响应结果
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
public class Result<T> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -13,7 +13,7 @@ import org.springframework.context.annotation.Primary;
|
||||
|
||||
/**
|
||||
* Jackson 配置类
|
||||
* 解决 StackOverflowError 问题
|
||||
* 彻底解决 StackOverflowError 问题
|
||||
*/
|
||||
@Configuration
|
||||
public class JacksonConfig {
|
||||
@@ -26,9 +26,6 @@ public class JacksonConfig {
|
||||
// 设置可见性
|
||||
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
|
||||
|
||||
// 禁用循环引用检测
|
||||
mapper.disable(SerializationFeature.FAIL_ON_SELF_REFERENCES);
|
||||
|
||||
// 禁用空对象序列化失败
|
||||
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.it.rattan.monisuo.config;
|
||||
|
||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||
import org.apache.ibatis.reflection.MetaObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* MyBatis Plus 自动填充处理器
|
||||
* 自动填充 createTime 和 updateTime 字段
|
||||
*/
|
||||
@Component
|
||||
public class MyBatisPlusMetaObjectHandler implements MetaObjectHandler {
|
||||
|
||||
/**
|
||||
* 插入时自动填充
|
||||
*/
|
||||
@Override
|
||||
public void insertFill(MetaObject metaObject) {
|
||||
System.out.println("[MetaObjectHandler] 执行插入自动填充...");
|
||||
setFieldValByName("createTime", LocalDateTime.now(), metaObject);
|
||||
setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新时自动填充
|
||||
*/
|
||||
@Override
|
||||
public void updateFill(MetaObject metaObject) {
|
||||
System.out.println("[MetaObjectHandler] 执行更新自动填充...");
|
||||
setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
package com.it.rattan.monisuo.context;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 用户上下文信息
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
public class UserContext {
|
||||
|
||||
/** 用户ID */
|
||||
|
||||
@@ -305,26 +305,53 @@ public class AdminController {
|
||||
|
||||
/**
|
||||
* 审批订单
|
||||
*
|
||||
* @param params 参数说明:
|
||||
* - orderNo: 订单号
|
||||
* - status: 审批结果 (2=通过, 3=驳回)
|
||||
* - rejectReason: 驳回原因 (驳回时必填)
|
||||
* - adminRemark: 管理员备注 (可选)
|
||||
*
|
||||
* 注意: 最终订单状态根据订单类型确定
|
||||
* - 充值订单: 审批通过->状态3(已完成), 审批驳回->状态4(已驳回)
|
||||
* - 提现订单: 审批通过->状态2(已完成), 审批驳回->状态3(已驳回)
|
||||
*/
|
||||
@PostMapping("/order/approve")
|
||||
public Result<Void> approveOrder(@RequestBody Map<String, Object> params) {
|
||||
System.out.println("\n==================== 审批订单开始 ====================");
|
||||
System.out.println("[AdminController] 接收到的完整参数: " + params);
|
||||
|
||||
String orderNo = (String) params.get("orderNo");
|
||||
Integer status = (Integer) params.get("status");
|
||||
String rejectReason = (String) params.get("rejectReason");
|
||||
String adminRemark = (String) params.get("adminRemark");
|
||||
|
||||
System.out.println("[AdminController] 解析后的参数:");
|
||||
System.out.println(" - orderNo: " + orderNo);
|
||||
System.out.println(" - status: " + status);
|
||||
System.out.println(" - rejectReason: " + rejectReason);
|
||||
System.out.println(" - adminRemark: " + adminRemark);
|
||||
|
||||
if (orderNo == null || status == null) {
|
||||
System.err.println("[AdminController] 参数校验失败: orderNo或status为空");
|
||||
return Result.fail("参数错误");
|
||||
}
|
||||
|
||||
if (status != 2 && status != 3) {
|
||||
System.err.println("[AdminController] 状态参数错误: " + status);
|
||||
return Result.fail("状态参数错误");
|
||||
}
|
||||
|
||||
try {
|
||||
System.out.println("[AdminController] 开始调用 fundService.approve()...");
|
||||
fundService.approve(1L, "管理员", orderNo, status, rejectReason, adminRemark);
|
||||
System.out.println("[AdminController] fundService.approve() 调用成功");
|
||||
System.out.println("==================== 审批订单结束 ====================\n");
|
||||
return Result.success(status == 2 ? "审批通过" : "已驳回", null);
|
||||
} catch (Exception e) {
|
||||
System.err.println("[AdminController] 审批异常: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
System.out.println("==================== 审批订单异常结束 ====================\n");
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.it.rattan.monisuo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 充值请求DTO
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
public class DepositRequest {
|
||||
private BigDecimal amount;
|
||||
private String remark;
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.it.rattan.monisuo.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 提现请求DTO
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
public class WithdrawRequest {
|
||||
private BigDecimal amount;
|
||||
private String withdrawAddress;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 资金流水实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("account_flow")
|
||||
public class AccountFlow implements Serializable {
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 资金账户实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("account_fund")
|
||||
public class AccountFund implements Serializable {
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 交易账户实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("account_trade")
|
||||
public class AccountTrade implements Serializable {
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 管理员实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("sys_admin")
|
||||
public class Admin implements Serializable {
|
||||
|
||||
@@ -21,6 +24,7 @@ public class Admin implements Serializable {
|
||||
private String username;
|
||||
|
||||
/** 密码(BCrypt加密) */
|
||||
@JsonIgnore
|
||||
private String password;
|
||||
|
||||
/** 昵称 */
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 币种实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("coin")
|
||||
public class Coin implements Serializable {
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 冷钱包地址实体
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("cold_wallet")
|
||||
public class ColdWallet {
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 充提订单实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("order_fund")
|
||||
public class OrderFund implements Serializable {
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -9,7 +10,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 交易订单实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("order_trade")
|
||||
public class OrderTrade implements Serializable {
|
||||
|
||||
|
||||
@@ -2,7 +2,8 @@ package com.it.rattan.monisuo.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -10,7 +11,8 @@ import java.time.LocalDateTime;
|
||||
/**
|
||||
* 用户实体类
|
||||
*/
|
||||
@Data
|
||||
@Getter
|
||||
@Setter
|
||||
@TableName("sys_user")
|
||||
public class User implements Serializable {
|
||||
|
||||
|
||||
@@ -24,6 +24,10 @@ import java.util.*;
|
||||
* 状态定义:
|
||||
* 充值: 1=待付款, 2=待确认, 3=已完成, 4=已驳回, 5=已取消
|
||||
* 提现: 1=待审批, 2=已完成, 3=已驳回, 4=已取消
|
||||
*
|
||||
* 审批参数说明:
|
||||
* status=2 表示审批通过(充值订单最终状态为3,提现订单最终状态为2)
|
||||
* status=3 表示审批驳回(充值订单最终状态为4,提现订单最终状态为3)
|
||||
*/
|
||||
@Service
|
||||
public class FundService {
|
||||
@@ -226,88 +230,209 @@ public class FundService {
|
||||
* 管理员审批
|
||||
* 充值: 仅待确认(status=2)可审批
|
||||
* 提现: 仅待审批(status=1)可审批
|
||||
*
|
||||
* @param status 审批结果: 2=通过, 3=驳回
|
||||
*/
|
||||
@Transactional
|
||||
public void approve(Long adminId, String adminName, String orderNo, Integer status,
|
||||
String rejectReason, String adminRemark) {
|
||||
System.out.println("\n[FundService.approve] 开始处理审批");
|
||||
System.out.println("[FundService.approve] 参数: orderNo=" + orderNo + ", status=" + status +
|
||||
", adminId=" + adminId + ", adminName=" + adminName);
|
||||
|
||||
// 查询订单
|
||||
System.out.println("[FundService.approve] 步骤1: 查询订单...");
|
||||
OrderFund order = orderFundMapper.selectOne(
|
||||
new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getOrderNo, orderNo));
|
||||
|
||||
if (order == null) {
|
||||
System.err.println("[FundService.approve] 订单不存在: " + orderNo);
|
||||
throw new RuntimeException("订单不存在");
|
||||
}
|
||||
|
||||
System.out.println("[FundService.approve] 订单查询成功:");
|
||||
System.out.println(" - 订单ID: " + order.getId());
|
||||
System.out.println(" - 订单号: " + order.getOrderNo());
|
||||
System.out.println(" - 用户ID: " + order.getUserId());
|
||||
System.out.println(" - 用户名: " + order.getUsername());
|
||||
System.out.println(" - 订单类型: " + (order.getType() == 1 ? "充值" : "提现"));
|
||||
System.out.println(" - 当前状态: " + order.getStatus());
|
||||
System.out.println(" - 金额: " + order.getAmount());
|
||||
|
||||
// 充值审批: 仅待确认可审批
|
||||
if (order.getType() == 1 && order.getStatus() != 2) {
|
||||
System.err.println("[FundService.approve] 充值订单状态不正确,当前状态: " + order.getStatus() + " (需要状态2)");
|
||||
throw new RuntimeException("该充值订单不可审批,等待用户确认打款");
|
||||
}
|
||||
|
||||
// 提现审批: 仅待审批可审批
|
||||
if (order.getType() == 2 && order.getStatus() != 1) {
|
||||
System.err.println("[FundService.approve] 提现订单状态不正确,当前状态: " + order.getStatus() + " (需要状态1)");
|
||||
throw new RuntimeException("该提现订单已处理");
|
||||
}
|
||||
|
||||
// 查询资金账户
|
||||
System.out.println("[FundService.approve] 步骤2: 查询资金账户...");
|
||||
AccountFund fund = assetService.getOrCreateFundAccount(order.getUserId());
|
||||
System.out.println("[FundService.approve] 资金账户查询成功:");
|
||||
System.out.println(" - 账户ID: " + fund.getId());
|
||||
System.out.println(" - 用户ID: " + fund.getUserId());
|
||||
System.out.println(" - 余额: " + fund.getBalance());
|
||||
System.out.println(" - 冻结: " + fund.getFrozen());
|
||||
|
||||
// 根据订单类型和审批结果,确定最终的订单状态
|
||||
Integer finalStatus;
|
||||
if (order.getType() == 1) {
|
||||
// 充值订单: 2=通过->3(已完成), 3=驳回->4(已驳回)
|
||||
finalStatus = (status == 2) ? 3 : 4;
|
||||
} else {
|
||||
// 提现订单: 2=通过->2(已完成), 3=驳回->3(已驳回)
|
||||
finalStatus = status;
|
||||
}
|
||||
System.out.println("[FundService.approve] 步骤3: 确定最终状态: " + finalStatus +
|
||||
" (审批" + (status == 2 ? "通过" : "驳回") + ")");
|
||||
|
||||
if (status == 2) {
|
||||
// 审批通过
|
||||
System.out.println("[FundService.approve] 步骤4: 处理审批通过逻辑...");
|
||||
|
||||
if (order.getType() == 1) {
|
||||
// 充值通过:增加余额
|
||||
System.out.println("[FundService.approve] 处理充值通过...");
|
||||
BigDecimal balanceBefore = fund.getBalance();
|
||||
System.out.println(" - 审批前余额: " + balanceBefore);
|
||||
|
||||
fund.setBalance(fund.getBalance().add(order.getAmount()));
|
||||
fund.setTotalDeposit(fund.getTotalDeposit().add(order.getAmount()));
|
||||
fund.setUpdateTime(LocalDateTime.now());
|
||||
accountFundMapper.updateById(fund);
|
||||
|
||||
System.out.println(" - 准备更新账户余额: " + fund.getBalance());
|
||||
int updateResult = accountFundMapper.updateById(fund);
|
||||
System.out.println(" - 账户更新结果: " + updateResult + " (1=成功, 0=失败)");
|
||||
System.out.println(" - 审批后余额: " + fund.getBalance());
|
||||
|
||||
// 记录流水
|
||||
System.out.println("[FundService.approve] 创建资金流水记录...");
|
||||
assetService.createFlow(order.getUserId(), 1, order.getAmount(),
|
||||
balanceBefore, fund.getBalance(), "USDT", orderNo, "充值");
|
||||
System.out.println(" - 流水记录创建成功");
|
||||
|
||||
System.out.println("[充值审批成功] 订单号: " + orderNo + ", 用户ID: " + order.getUserId() +
|
||||
", 充值金额: " + order.getAmount() + " USDT");
|
||||
} else {
|
||||
// 提现通过:从冻结转为扣除,更新累计提现
|
||||
System.out.println("[FundService.approve] 处理提现通过...");
|
||||
if (fund.getFrozen().compareTo(order.getAmount()) < 0) {
|
||||
System.err.println("[FundService.approve] 冻结金额不足: 冻结=" + fund.getFrozen() +
|
||||
", 需要=" + order.getAmount());
|
||||
throw new RuntimeException("冻结金额不足");
|
||||
}
|
||||
|
||||
BigDecimal balanceBefore = fund.getBalance();
|
||||
BigDecimal frozenBefore = fund.getFrozen();
|
||||
System.out.println(" - 审批前余额: " + balanceBefore);
|
||||
System.out.println(" - 审批前冻结: " + frozenBefore);
|
||||
|
||||
fund.setFrozen(fund.getFrozen().subtract(order.getAmount()));
|
||||
fund.setTotalWithdraw(fund.getTotalWithdraw().add(order.getAmount()));
|
||||
fund.setUpdateTime(LocalDateTime.now());
|
||||
accountFundMapper.updateById(fund);
|
||||
|
||||
System.out.println(" - 准备更新账户冻结: " + fund.getFrozen());
|
||||
int updateResult = accountFundMapper.updateById(fund);
|
||||
System.out.println(" - 账户更新结果: " + updateResult + " (1=成功, 0=失败)");
|
||||
System.out.println(" - 审批后冻结: " + fund.getFrozen());
|
||||
|
||||
// 记录流水 (负数表示支出)
|
||||
System.out.println("[FundService.approve] 创建资金流水记录...");
|
||||
assetService.createFlow(order.getUserId(), 2, order.getAmount().negate(),
|
||||
balanceBefore, fund.getBalance(), "USDT", orderNo, "提现");
|
||||
System.out.println(" - 流水记录创建成功");
|
||||
|
||||
System.out.println("[提现审批成功] 订单号: " + orderNo + ", 用户ID: " + order.getUserId() +
|
||||
", 提现金额: " + order.getAmount() + " USDT");
|
||||
}
|
||||
|
||||
order.setConfirmTime(LocalDateTime.now());
|
||||
|
||||
} else if (status == 3) {
|
||||
// 审批驳回
|
||||
System.out.println("[FundService.approve] 步骤4: 处理审批驳回逻辑...");
|
||||
|
||||
if (rejectReason == null || rejectReason.isEmpty()) {
|
||||
System.err.println("[FundService.approve] 驳回原因为空");
|
||||
throw new RuntimeException("请填写驳回原因");
|
||||
}
|
||||
order.setRejectReason(rejectReason);
|
||||
System.out.println("[FundService.approve] 驳回原因: " + rejectReason);
|
||||
|
||||
if (order.getType() == 2) {
|
||||
// 提现驳回:解冻金额退还
|
||||
System.out.println("[FundService.approve] 处理提现驳回,解冻金额退还...");
|
||||
BigDecimal balanceBefore = fund.getBalance();
|
||||
BigDecimal frozenBefore = fund.getFrozen();
|
||||
System.out.println(" - 驳回前余额: " + balanceBefore);
|
||||
System.out.println(" - 驳回前冻结: " + frozenBefore);
|
||||
|
||||
fund.setBalance(fund.getBalance().add(order.getAmount()));
|
||||
fund.setFrozen(fund.getFrozen().subtract(order.getAmount()));
|
||||
fund.setUpdateTime(LocalDateTime.now());
|
||||
accountFundMapper.updateById(fund);
|
||||
|
||||
System.out.println(" - 准备更新账户: 余额=" + fund.getBalance() + ", 冻结=" + fund.getFrozen());
|
||||
int updateResult = accountFundMapper.updateById(fund);
|
||||
System.out.println(" - 账户更新结果: " + updateResult + " (1=成功, 0=失败)");
|
||||
|
||||
// 记录流水
|
||||
System.out.println("[FundService.approve] 创建资金流水记录...");
|
||||
assetService.createFlow(order.getUserId(), 2, order.getAmount(),
|
||||
balanceBefore, fund.getBalance(), "USDT", orderNo, "提现驳回退还");
|
||||
System.out.println(" - 流水记录创建成功");
|
||||
|
||||
System.out.println("[提现驳回成功] 订单号: " + orderNo + ", 用户ID: " + order.getUserId() +
|
||||
", 退还金额: " + order.getAmount() + " USDT");
|
||||
} else {
|
||||
System.out.println("[充值驳回成功] 订单号: " + orderNo + ", 用户ID: " + order.getUserId() +
|
||||
", 充值金额: " + order.getAmount() + " USDT, 驳回原因: " + rejectReason);
|
||||
}
|
||||
}
|
||||
|
||||
order.setStatus(status);
|
||||
// 更新订单状态
|
||||
System.out.println("[FundService.approve] 步骤5: 更新订单状态...");
|
||||
System.out.println(" - 当前状态: " + order.getStatus());
|
||||
System.out.println(" - 目标状态: " + finalStatus);
|
||||
|
||||
order.setStatus(finalStatus);
|
||||
order.setApproveAdminId(adminId);
|
||||
order.setApproveAdminName(adminName);
|
||||
order.setApproveTime(LocalDateTime.now());
|
||||
order.setAdminRemark(adminRemark);
|
||||
order.setUpdateTime(LocalDateTime.now());
|
||||
orderFundMapper.updateById(order);
|
||||
|
||||
System.out.println(" - 准备执行数据库更新...");
|
||||
int orderUpdateResult = orderFundMapper.updateById(order);
|
||||
System.out.println(" - 订单更新结果: " + orderUpdateResult + " (1=成功, 0=失败)");
|
||||
|
||||
// 验证更新是否成功
|
||||
if (orderUpdateResult > 0) {
|
||||
System.out.println("[FundService.approve] 步骤6: 验证更新结果...");
|
||||
OrderFund verifyOrder = orderFundMapper.selectById(order.getId());
|
||||
System.out.println(" - 验证查询结果: ID=" + verifyOrder.getId() +
|
||||
", 状态=" + verifyOrder.getStatus());
|
||||
|
||||
if (!verifyOrder.getStatus().equals(finalStatus)) {
|
||||
System.err.println("[FundService.approve] 警告: 订单状态更新后验证失败!");
|
||||
System.err.println(" - 期望状态: " + finalStatus);
|
||||
System.err.println(" - 实际状态: " + verifyOrder.getStatus());
|
||||
} else {
|
||||
System.out.println(" - 状态验证通过 ✓");
|
||||
}
|
||||
} else {
|
||||
System.err.println("[FundService.approve] 订单更新失败! updateById返回: " + orderUpdateResult);
|
||||
}
|
||||
|
||||
System.out.println("[审批完成] 订单号: " + orderNo + ", 订单类型: " + (order.getType() == 1 ? "充值" : "提现") +
|
||||
", 审批结果: " + (status == 2 ? "通过" : "驳回") + ", 最终状态: " + finalStatus +
|
||||
", 审批人: " + adminName);
|
||||
System.out.println("[FundService.approve] 处理完成\n");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -26,6 +26,20 @@ spring:
|
||||
#mybatis-plus
|
||||
mybatis-plus:
|
||||
mapper-locations: classpath*:com/it/rattan/monisuo/mapper/*.xml
|
||||
global-config:
|
||||
db-config:
|
||||
# 主键类型 AUTO-自增
|
||||
id-type: auto
|
||||
# 字段策略 IGNORED-忽略判断 NOT_NULL-非null判断 NOT_EMPTY-非空判断
|
||||
update-strategy: not_null
|
||||
insert-strategy: not_null
|
||||
# 关闭 MP3.0 的 banner
|
||||
banner: false
|
||||
configuration:
|
||||
# 开启驼峰命名转换
|
||||
map-underscore-to-camel-case: true
|
||||
# 打印 SQL 日志(开发环境)
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
|
||||
bean-searcher:
|
||||
packages: com.it.rattan.monisuo
|
||||
|
||||
Reference in New Issue
Block a user