From 4e780124de0131ee79688f3a9fdd13e5ed1ff9b0 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Tue, 11 Nov 2025 18:41:41 +0800
Subject: [PATCH] 借款修改

---
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java       |    4 +
 trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java                                 |    3 
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java               |    3 
 trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java                    |    3 
 trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java                       |    3 
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java |   27 ++++--
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java           |  117 ++++++++++++++++------------
 trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java      |   22 +++--
 8 files changed, 112 insertions(+), 70 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java
index 3783e3a..34d7b21 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java
@@ -324,8 +324,8 @@
 //		String term=getParamValue(request,modelAndView,"term");
 //		if(null==term) return modelAndView;
 
-		String term=request.getString("term");
-		if(null==term) return Result.failed("term is null");
+		/*String term=request.getString("term");
+		if(null==term) return Result.failed("term is null");*/
 		
 //		String quota=getParamValue(request,modelAndView,"quota");
 //		if(null==quota) return modelAndView;
@@ -338,11 +338,15 @@
 
 		String symbol=request.getString("symbol");
 		if(null==symbol) return Result.failed("symbol is null");
+
+		if (!symbol.equals("usdt") && !symbol.equals("USDT")) {
+			return Result.failed("仅支持usdt");
+		}
 		
 //		String dailyRate=getParamValue(request,modelAndView,"dailyRate");
 //		if(null==dailyRate) return modelAndView;
 
-		String dailyRate=request.getString("dailyRate");
+		/*String dailyRate=request.getString("dailyRate");
 		if(null==dailyRate) return Result.failed("dailyRate is null");
 
 
@@ -355,7 +359,7 @@
 		if(null==repayCycle) return Result.failed("repayCycle is null");
 
 		String createTime=request.getString("createTime");
-		if(null==createTime) return Result.failed("createTime is null");
+		if(null==createTime) return Result.failed("createTime is null");*/
 		
 //		String repayCycle=getParamValue(request,modelAndView,"repayCycle");
 //		if(null==repayCycle) return modelAndView;
@@ -376,17 +380,16 @@
 //		String img_idimg_3=getParamValue(request,modelAndView,"img_idimg_3");
 //		//if(null==img_idimg_3) return modelAndView;
 
-		String img_idimg_1=request.getString("img_idimg_1");
+		/*String img_idimg_1=request.getString("img_idimg_1");
 		if(null==img_idimg_1) return Result.failed("img_idimg_1 is null");
 
 		String img_idimg_2=request.getString("img_idimg_2");
 		if(null==img_idimg_2) return Result.failed("img_idimg_2 is null");
 
-		String img_idimg_3=request.getString("img_idimg_3");
+		String img_idimg_3=request.getString("img_idimg_3");*/
 		//if(null==img_idimg_3) return Result.failed("img_idimg_3 is null");
-		System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
 		SimpleLoanOrder simpleLoanOrder=new SimpleLoanOrder(new BigDecimal(quota),symbol,id);
-		simpleLoanOrder.setRepayCycle(new Integer(repayCycle));
+/*		simpleLoanOrder.setRepayCycle(new Integer(repayCycle));
 		simpleLoanOrder.setRepayment(new Integer(repayment));
 		simpleLoanOrder.setDailyRate(new BigDecimal(dailyRate));
 		simpleLoanOrder.setTerm(new Integer(term));
@@ -403,10 +406,9 @@
 //			return modelAndView;
 			logger.error("error:", e);
 			return Result.failed("1",e.getMessage());
-		}
+		}*/
 		
 		try {
-			System.out.println("-------------------------------");
 			boolean flag=loanService.modLoanOrder(simpleLoanOrder);
 			if(flag) {
 //				modelAndView.addObject("message","借贷申请单修改成功!");
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java
index f9e2cce..57cb467 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java
@@ -14,10 +14,13 @@
 import cn.hutool.core.util.StrUtil;
 import com.yami.trading.bean.loan.LoanParam;
 import com.yami.trading.bean.loan.SimpleLoanOrder;
+import com.yami.trading.bean.model.User;
 import com.yami.trading.common.util.DateTimeTools;
 import com.yami.trading.common.util.UUIDGenerator;
 import com.yami.trading.common.web.ResultObject;
 import com.yami.trading.security.common.util.SecurityUtils;
+import com.yami.trading.service.syspara.SysparaService;
+import com.yami.trading.service.user.UserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,23 +42,29 @@
 	 */
 	@Autowired
 	private LoanService loanService;
-	
+
+	@Autowired
+	UserService userService;
+
+	@Autowired
+	SysparaService sysparaService;
+
 	/**
 	 * Token服务
 	 */
 //	@Autowired
 //	private TokenService tokenService;
-	
+
 	/**
 	 * SLF4J日志组件
 	 */
 	private static final Logger logger = LoggerFactory.getLogger(LoanController.class);
-	
+
 	/**
 	 * 借贷额度正则式
 	 */
 	private static final Pattern QUOTA_REGEX=Pattern.compile("([A-Z]{2,8}):([1-9]{1}[0-9]{0,7})");
-	
+
 	/**
 	 * 获取借贷参数
 	 * @param configId 配置ID
@@ -64,7 +73,7 @@
 	@RequestMapping("/api/loan!get.action")
 	public ResultObject getParams(String configId) {
 		ResultObject resultObject = new ResultObject();
-		
+
 		try {
 			HashMap<String,Object> paramMap=loanService.getLoanParams(configId);
 			if(null==paramMap) {
@@ -80,10 +89,10 @@
 			resultObject.setMsg("程序错误");
 			logger.error("error:", e);
 		}
-		
+
 		return resultObject;
 	}
-	
+
 	/**
 	 * 获取借贷参数
 	 * @param request 配置ID
@@ -100,10 +109,10 @@
 			resultObject.setCode("1");
 			resultObject.setMsg("程序错误");
 			logger.error("error:", e);
-		}		
+		}
 		return resultObject;
 	}
-	
+
 	/**
 	 * 提交借贷申请
 	 * @param request 请求对象
@@ -112,14 +121,14 @@
 	@RequestMapping("/api/loan!apply.action")
 	public ResultObject apply(HttpServletRequest request) {
 		ResultObject resultObject = new ResultObject();
-		
+
 		// String token=request.getParameter("token");
 		// if(null==token || (token=token.trim()).isEmpty()) {
 		// 	resultObject.setCode("1");
 		// 	resultObject.setMsg("从请求参数中获取Token为空!");
 		// 	return resultObject;
 		// }
-		
+
 //		String partyId=tokenService.cacheGet(token);
 		String partyId = SecurityUtils.getCurrentUserId();
 		if(null==partyId) {
@@ -127,10 +136,10 @@
 			resultObject.setMsg("通过Token获取partyId为空!");
 			return resultObject;
 		}
-		
-		String term=getParamValue(request,resultObject,"term");
-		if(null==term) return resultObject;
-		
+
+		/*String term=getParamValue(request,resultObject,"term");
+		if(null==term) return resultObject;*/
+
 		String quota=getParamValue(request,resultObject,"quota");
 		if(null==quota) return resultObject;
 		if (Integer.parseInt(quota) <= 0) {
@@ -138,51 +147,59 @@
 			resultObject.setMsg("请输入正确金额");
 			return resultObject;
 		}
-		
-		String symbol=getParamValue(request,resultObject,"symbol");
+
+		User party = userService.getById(partyId);
+		if (party.getLoanLimit() == 0  || Integer.parseInt(quota) > party.getLoanLimit()) {
+			resultObject.setCode("1");
+			resultObject.setMsg("贷款额度不足");
+			return resultObject;
+		}
+
+		/*String symbol=getParamValue(request,resultObject,"symbol");
 		if(null==symbol) return resultObject;
-		
+
 		String dailyRate=getParamValue(request,resultObject,"dailyRate");
 		if(null==dailyRate) return resultObject;
-		
+
 		String repayment=getParamValue(request,resultObject,"repayment");
 		if(null==repayment) return resultObject;
-		
+
 		String repayCycle=getParamValue(request,resultObject,"repayCycle");
 		if(null==repayCycle) return resultObject;
-		
+
 		String lendingInstitution=getParamValue(request,resultObject,"lendingInstitution");
 		if(null==lendingInstitution) return resultObject;
-		
-		String lendingName = getParamValue(request,resultObject,"lendingName");		
+
+		String lendingName = getParamValue(request,resultObject,"lendingName");
 		if(null==lendingName) return resultObject;
-		
+
 		String img_idimg_1=getParamValue(request,resultObject,"frontFile");
 		if(null==img_idimg_1) return resultObject;
 		String img_idimg_2=getParamValue(request,resultObject,"reverseFile");
 		if(null==img_idimg_2) return resultObject;
-		/*String img_idimg_3=getParamValue(request,resultObject,"fileList");
-		if(null==img_idimg_3) return resultObject;*/
+		String img_idimg_3=getParamValue(request,resultObject,"fileList");
+		if(null==img_idimg_3) return resultObject;
 		String houseImgs=new StringBuilder(img_idimg_1).append(",").append(img_idimg_2).toString();
-		
+
 		String incomeImg=request.getParameter("incomeImg");
 		if(null==incomeImg || (incomeImg=incomeImg.trim()).isEmpty()) {
 			incomeImg=null;
-		}
+		}*/
 
 		Date now = new Date();
-		SimpleLoanOrder simpleLoanOrder=new SimpleLoanOrder(partyId,new BigDecimal(quota),symbol);
+		SimpleLoanOrder simpleLoanOrder=new SimpleLoanOrder(partyId,new BigDecimal(quota), "usdt");
 		String uuid = UUIDGenerator.getUUID();
 		simpleLoanOrder.setUuid(uuid);
-		simpleLoanOrder.setLendingInstitution(new Integer(lendingInstitution));
-		simpleLoanOrder.setRepayCycle(new Integer(repayCycle));
-		simpleLoanOrder.setRepayment(new Integer(repayment));
-		simpleLoanOrder.setDailyRate(new BigDecimal(dailyRate));
-		simpleLoanOrder.setTerm(new Integer(term));
-		simpleLoanOrder.setHouseImgs(houseImgs);
-		simpleLoanOrder.setIncomeImg(incomeImg);
+		simpleLoanOrder.setLendingInstitution(null);
+		simpleLoanOrder.setRepayCycle(null);
+		simpleLoanOrder.setRepayment(null);
+		BigDecimal rate = new BigDecimal(sysparaService.find("loan_rate").getSvalue());
+		simpleLoanOrder.setDailyRate(rate);
+		simpleLoanOrder.setTerm(null);
+		simpleLoanOrder.setHouseImgs(null);
+		simpleLoanOrder.setIncomeImg(null);
 		simpleLoanOrder.setState(1);
-		simpleLoanOrder.setLendingName(lendingName);
+		simpleLoanOrder.setLendingName(null);
 		simpleLoanOrder.setCreateTime(now);
 		try {
 			boolean flag = loanService.addLoanOrder(simpleLoanOrder);
@@ -200,10 +217,10 @@
 			resultObject.setMsg("程序错误");
 			logger.error("error:", e);
 		}
-		
+
 		return resultObject;
 	}
-	
+
 	/**
 	 * 查看借贷申请单列表
 	 * @param request 请求对象
@@ -212,14 +229,14 @@
 	@RequestMapping("/api/loan!getOrders.action")
 	public ResultObject getOrders(HttpServletRequest request) {
 		ResultObject resultObject = new ResultObject();
-		
+
 		// String token=request.getParameter("token");
 		// if(null==token || (token=token.trim()).isEmpty()) {
 		// 	resultObject.setCode("1");
 		// 	resultObject.setMsg("从请求参数中获取Token为空!");
 		// 	return resultObject;
 		// }
-		
+
 //		String partyId=tokenService.cacheGet(token);
 		String partyId = SecurityUtils.getCurrentUserId();
 		if(null==partyId) {
@@ -227,7 +244,7 @@
 			resultObject.setMsg("通过Token获取partyId为空!");
 			return resultObject;
 		}
-		
+
 		HashMap<String,Object> paramMap=new HashMap<String,Object>();
 		paramMap.put("partyId", partyId);
 		paramMap.put("state", request.getParameter("state"));
@@ -263,10 +280,10 @@
 			resultObject.setMsg("程序错误");
 			logger.error("error:", e);
 		}
-		
+
 		return resultObject;
 	}
-	
+
 	/**
 	 * 查看借贷申请单
 	 * @param request 请求对象
@@ -275,7 +292,7 @@
 	@RequestMapping("/api/loan!getOrderDetail.action")
 	public ResultObject getOrderDetail(HttpServletRequest request) {
 		ResultObject resultObject = new ResultObject();
-		
+
 		// String token=request.getParameter("token");
 		// if(null==token || (token=token.trim()).isEmpty()) {
 		// 	resultObject.setCode("1");
@@ -290,10 +307,10 @@
 			resultObject.setMsg("通过Token获取partyId为空!");
 			return resultObject;
 		}
-		
+
 		String orderNo=getParamValue(request,resultObject,"orderNo");
 		if(null==orderNo) return resultObject;
-		
+
 		try {
 			SimpleLoanOrder loanOrder=loanService.getLoanOrder(partyId,orderNo);
 			if(null!=loanOrder) {
@@ -308,10 +325,10 @@
 			resultObject.setMsg("程序错误");
 			logger.error("error:", e);
 		}
-		
+
 		return resultObject;
 	}
-	
+
 	/**
 	 * 获取参数值
 	 * @param request 请求对象
@@ -329,7 +346,7 @@
 			return paramValue;
 		}
 	}
-	
+
 	/**
 	 * 校验借贷额度是否有效
 	 * @param resultObject 结果对象
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java
index 1f3b050..42cfea9 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java
@@ -379,17 +379,17 @@
 			transferMap.put("lendingInstitution", new Object[] {led,order.getLendingName()});
 			
 			
-			Long starTimel = order.getCreateTime().getTime();
+			/*Long starTimel = order.getCreateTime().getTime();
 			Long num = endTimel - starTimel;
-			Long remainQuota = num/24/60/60/1000;
+			Long remainQuota = num/24/60/60/1000;*/
 			order.setTotalInterest(BigDecimal.ZERO);
 			order.setRemainQuota(0);
-			if(order.getState().intValue()==2||order.getState().intValue()==4) {
+			/*if(order.getState().intValue()==2||order.getState().intValue()==4) {
 				BigDecimal totalInterest = order.getDailyRate().multiply(new BigDecimal(remainQuota)).multiply(order.getQuota());
 				order.setTotalInterest(totalInterest);
 				order.setRemainQuota(order.getTerm() - remainQuota.intValue());
 				transferMap.put("totalInterest", totalInterest);
-			}		
+			}	*/
 			
 			return transferMap;
 		}).collect(Collectors.toList());
@@ -415,6 +415,7 @@
 	}
 
 	@Override
+	@Transactional
 	public boolean updateLoanOrderState(String orderId, String status,String reason) {
 		if(null==orderId || (orderId=orderId.trim()).isEmpty()) {
 			throw new BusinessException("申请单ID不能为空!");
@@ -432,6 +433,12 @@
 			}
 			//到账金额
 			double amt = loanOrder.getQuota().doubleValue();
+
+			User user = userService.getById(loanOrder.getPartyId());
+			double remainLoanLimit  = user.getLoanLimit() - amt;
+			user.setLoanLimit(remainLoanLimit < 0 ? 0 : remainLoanLimit);
+			userService.updateById(user);
+
 			//通过
 			Wallet wallet = this.walletService.saveWalletByPartyId(loanOrder.getPartyId());
 			double amountBefore = wallet.getMoney().doubleValue();
@@ -515,18 +522,18 @@
 		SimpleLoanOrder loanOrder=loanOrders.get(0);
 		String houseImgs=(String)loanOrder.getHouseImgs();
 		loanOrder.setHouseImgs(null==houseImgs?new String[0]:commaPattern.split(houseImgs));
-		Date endDay = new Date();
+		/*Date endDay = new Date();
 		Long endTimel = endDay.getTime();
 		Long starTimel = loanOrder.getCreateTime().getTime();
 		Long num = endTimel - starTimel;
-		Long remainQuota = num/24/60/60/1000;
+		Long remainQuota = num/24/60/60/1000;*/
 		loanOrder.setTotalInterest(BigDecimal.ZERO);
 		loanOrder.setRemainQuota(0);
-		if(loanOrder.getState().intValue()==2||loanOrder.getState().intValue()==4) {
+		/*if(loanOrder.getState().intValue()==2||loanOrder.getState().intValue()==4) {
 			BigDecimal totalInterest = loanOrder.getDailyRate().multiply(new BigDecimal(remainQuota)).multiply(loanOrder.getQuota());
 			loanOrder.setTotalInterest(totalInterest);	
 			loanOrder.setRemainQuota(loanOrder.getTerm() - remainQuota.intValue());
-		}		
+		}*/
 		return loanOrder;
 	}
 	
@@ -592,7 +599,7 @@
 		List<SimpleLoanOrder> simpleLoanOrderList = jdbcTemplate.query(whereStatement.toString(), rowMapper);
 		//DateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
 		
-		Date endDay = new Date();
+		/*Date endDay = new Date();
 		Long endTimel = endDay.getTime();
 		for(SimpleLoanOrder simpleLoanOrder : simpleLoanOrderList) {
 			Long starTimel = simpleLoanOrder.getCreateTime().getTime();
@@ -605,7 +612,7 @@
 				simpleLoanOrder.setTotalInterest(totalInterest);
 				simpleLoanOrder.setRemainQuota(simpleLoanOrder.getTerm() - remainQuota.intValue());
 			}						
-		}
+		}*/
 		return simpleLoanOrderList;
 	}
 
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java
index 37da28e..a6bc6a7 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java
@@ -110,6 +110,10 @@
         if (model.getUserLevel() >= 0) {
             user.setUserLevel(model.getUserLevel() * 10 + user.getUserLevel() % 10);
         }
+        double loanLimit = model.getLoanLimit();
+        if (loanLimit >= 0) {
+            user.setLoanLimit(loanLimit);
+        }
         userService.updateById(user);
         String logtxt = MessageFormat.format(
                 "ip:" + IPHelper.getIpAddr() + ",管理员手动修改了用户信息,用户名:{0},原登录权限:{1},原是否业务锁定:{2},原提现权限:{3},原基础认证:{4},原备注:{5},原信用分:{6},现登录权限:{7},现是否业务锁定:{8},现提现权限:{9},现基础认证:{10},现备注:{11},现信用分:{12}",
diff --git a/trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java b/trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java
index 646dbf0..849d153 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java
@@ -31,4 +31,7 @@
     @ApiModelProperty("实名认证")
     private Boolean realNameAuthority;
 
+    @ApiModelProperty("剩余贷款额度")
+    private double loanLimit;
+
 }
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
index a201b86..f4ca5b3 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java
@@ -496,6 +496,9 @@
         map.put("advancedverif", party.isHighlevelAuthority());
         map.put("lastlogintime", party.getUserLasttime());
         map.put("lastloginip", party.getUserLastip());
+        map.put("loanLimit", party.getLoanLimit());
+        map.put("loanRate", Double.valueOf(sysparaService.find("loan_rate").getSvalue()));
+
         // 实名认证通过返回真实姓名
         if (party.isRealNameAuthority()) {
             map.put("name", kyc.getName());
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java b/trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java
index f9336be..8a56d31 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java
@@ -192,6 +192,9 @@
     @ApiModelProperty("登录权限")
     private boolean loginAuthority = true;
 
+    //剩余贷款额度
+    private double loanLimit;
+
     public BigDecimal getWithdrawLimitAmount() {
         return withdrawLimitAmount == null ? new BigDecimal(0) : withdrawLimitAmount;
     }
diff --git a/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java b/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java
index 3ad5a83..7c67304 100644
--- a/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java
+++ b/trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java
@@ -81,6 +81,9 @@
     @ApiModelProperty("提现权限")
     private  boolean withdrawAuthority;
 
+    @ApiModelProperty("剩余贷款额度")
+    private double loanLimit;
+
     /**
      * 用户邮箱
      */

--
Gitblit v1.9.3