zyy
2025-11-11 4e780124de0131ee79688f3a9fdd13e5ed1ff9b0
借款修改
8 files modified
182 ■■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/AdminLoanController.java 22 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/LoanController.java 117 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/loan/internal/LoanServiceImpl.java 27 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/user/UserDataController.java 4 ●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/model/UpdateUserModel.java 3 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiUserController.java 3 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/model/User.java 3 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/user/dto/UserDataDto.java 3 ●●●●● patch | view | raw | blame | history
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","借贷申请单修改成功!");
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 结果对象
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;
    }
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}",
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;
}
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());
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;
    }
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;
    /**
     * 用户邮箱
     */