zyy
2025-08-11 fd112c08c7bdc1b549c92d1e851f948c3410c502
8.6二开 新增资金账户,对应资金购买对应股票
12 files modified
175 ■■■■■ changed files
src/main/java/com/nq/controller/UserApiController.java 9 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/controller/protol/UserController.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/enums/EConfigKey.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/IUserAssetsServices.java 17 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/DkServices.java 3 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/StockAiServiceImpl.java 13 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserAssetsServices.java 55 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserServiceImpl.java 32 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java 22 ●●●● patch | view | raw | blame | history
src/main/resources/application.yml 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/controller/UserApiController.java
@@ -9,6 +9,7 @@
import com.nq.dao.MoneyLogMapper;
import com.nq.dao.StockConfigMapper;
import com.nq.enums.EConfigKey;
import com.nq.pojo.MoneyLog;
import com.nq.pojo.SiteSpread;
import com.nq.pojo.StockConfig;
@@ -145,9 +146,15 @@
    @RequestMapping({"queryStockConfig.do"})
    @ResponseBody
    public  ServerResponse  updateConfig(){
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, "buy_handling_charge"));
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, EConfigKey.BUY_HANDLING_CHARGE.getCode()));
        return  ServerResponse.createBySuccess(stockConfig);
    }
    @RequestMapping({"queryStockConfigTwo.do"})
    @ResponseBody
    public  ServerResponse  queryStockConfigTwo(){
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()));
        return  ServerResponse.createBySuccess(stockConfig);
    }
    @RequestMapping({"moneylogAll.do"})
src/main/java/com/nq/controller/protol/UserController.java
@@ -352,6 +352,9 @@
    @ResponseBody
    public ServerResponse transfer(@RequestParam("fromType") String fromType, @RequestParam("toType") String toType,
                                   @RequestParam("amt") String amt,  HttpServletRequest request) {
        if (fromType.equals(toType)) {
            return ServerResponse.createByErrorMsg("货币类型不能相同", request);
        }
        return  iUserService.transfer(fromType, toType, amt,request);
    }
src/main/java/com/nq/enums/EConfigKey.java
@@ -18,6 +18,9 @@
    LIMIT_DOWN_IS_SELL("limit_down_is_sell","跌停是否可以平仓"),
    AGENT_MAX_GRADE("agent_max_grade","最大代理等级"),
    LOAN_INTEREST("loan_interest", "贷款利息"),
    EXCHANGE_HANDLING_CHARGE("exchange_handling_charge", "货币兑换手续费"),
    INDICES("indices","指数数据");
    private String code;
src/main/java/com/nq/service/IUserAssetsServices.java
@@ -19,7 +19,12 @@
     * */
    UserAssets  assetsByTypeAndUserId(String accetType,Integer userId);
    /**
     * 根据id新增所有资产
     * @param userId
     * @return
     */
    void addUserAssetsListByUserId(Integer userId);
    ServerResponse updateUserAssets(Integer id, String amt,String type);
@@ -58,10 +63,12 @@
    Boolean aiAvailableBalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount) throws Exception;
    /**
     * 根据汇率转换MEX金额
     * @param accetType  账户类型
     * @param amount     转换金额
     * 根据汇率转换
     * @param fromType
     * @param toType
     * @param amount
     * @return
     * @throws Exception
     */
    BigDecimal exchangeAmountByRate(String accetType, BigDecimal amount) throws Exception;
    BigDecimal exchangeAmountByRate(String fromType, String toType, BigDecimal amount) throws Exception;
}
src/main/java/com/nq/service/impl/DkServices.java
@@ -9,6 +9,7 @@
import com.nq.dao.DkMapper;
import com.nq.dao.StockConfigMapper;
import com.nq.dao.UserMapper;
import com.nq.enums.EConfigKey;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.pojo.*;
@@ -188,7 +189,7 @@
                }
                dkModel.setDkRefundState(1);
                //查看贷款利息
                StockConfig stockConfig = stockConfigMapper.selectOne(new QueryWrapper<StockConfig>().eq("c_key", "loan_interest"));
                StockConfig stockConfig = stockConfigMapper.selectOne(new QueryWrapper<StockConfig>().eq("c_key", EConfigKey.LOAN_INTEREST.getCode()));
                if (stockConfig != null) {
                    long day = DateTimeUtil.getDaysRoundedUp(dkModel.getLoanTime());
                    //利息 利率*贷款金额*借款天数
src/main/java/com/nq/service/impl/StockAiServiceImpl.java
@@ -106,12 +106,12 @@
                    return ServerResponse.createByErrorMsg("最低购买数量" + stockAI.getMinPrice(), request);
                }
                //获取用户账户
                UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.getDefault().getCode(), user.getId());
                BigDecimal finalBuyNum = buyNum;
                UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(stockAI.getStockType(), user.getId());
                /*BigDecimal finalBuyNum = buyNum;
                //如果不是默认货币需要转换金额
                if (!stockAI.getStockType().equals(EStockType.getDefault().getCode())) {
                    buyNum = userAssetsServices.exchangeAmountByRate(stockAI.getStockType(), buyNum);
                }
                }*/
                if(buyNum.compareTo(userAssets.getAvailableBalance()) > 0){
                    return ServerResponse.createByErrorMsg("可用余额不足" + userAssets.getAvailableBalance(), request);
                }
@@ -119,14 +119,13 @@
                if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
                    return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
                }
                //已经转化 直接穿默认类型
                iUserAssetsServices.aiAvailableBalanceChange(EStockType.getDefault().getCode(), user.getId(), EUserAssets.BUY_AI, buyNum);
                iUserAssetsServices.aiAvailableBalanceChange(stockAI.getStockType(), user.getId(), EUserAssets.BUY_AI, buyNum);
                StockAIOrder stockAIOrder = new StockAIOrder();
                stockAIOrder.setUserId(user.getId());
                stockAIOrder.setStockAiId(id.intValue());
                stockAIOrder.setBuyDate(new Date());
                stockAIOrder.setBuyAmount(finalBuyNum);
                stockAIOrder.setRemainAmount(finalBuyNum);
                stockAIOrder.setBuyAmount(buyNum);
                stockAIOrder.setRemainAmount(buyNum);
                stockAIOrder.setRealEarning(BigDecimal.valueOf(0));
                stockAIOrder.setStatus(EStockAIOrderStatus.wait.getStatus());   //等待审核
                stockAiOrderMapper.insert(stockAIOrder);
src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -17,6 +17,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -52,9 +53,9 @@
    @Override
    public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
        if(!accetType.equals(EStockType.US.getCode())){
        /*if(!accetType.equals(EStockType.US.getCode())){
            accetType = EStockType.US.getCode();
        }
        }*/
        QueryWrapper<UserAssets>  queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("accect_type",accetType);
        queryWrapper.eq("user_id",userId);
@@ -67,6 +68,36 @@
       }
        userAssets =  userAssetsMapper.selectOne(queryWrapper);
        return userAssets;
    }
    @Override
    public void addUserAssetsListByUserId(Integer userId) {
        QueryWrapper<UserAssets>  queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id",userId);
        List<UserAssets> userAssetsList =  userAssetsMapper.selectList(queryWrapper);
        List<EStockType> stockTypes = Arrays.asList(
                EStockType.US,
                EStockType.HK,
                EStockType.IN,
                EStockType.TW
        );
        for (EStockType stockType : stockTypes) {
            //是否存在记录
            boolean isExist = false;
            if (!userAssetsList.isEmpty()) {
                boolean hasType = userAssetsList.stream()
                        .anyMatch(assets -> stockType.getCode().equals(assets.getAccectType()));
                if (hasType) {
                    isExist = true;
                }
            }
            if (!isExist) {     //不存在账户新增
                UserAssets userAssets = new UserAssets();
                userAssets.setUserId(userId);
                userAssets.setAccectType(stockType.getCode());
                userAssetsMapper.insert(userAssets);
            }
        }
    }
    @Override
@@ -170,12 +201,12 @@
    @Override
    public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) throws Exception {
        //查询账户
        UserAssets userAssets = assetsByTypeAndUserId(EStockType.getDefault().getCode(), userId);
        /*UserAssets userAssets = assetsByTypeAndUserId(EStockType.getDefault().getCode(), userId);
        //是否需要转换金额
        if (!accetType.equals(EStockType.getDefault().getCode())) {
            amount = exchangeAmountByRate(accetType, amount);
        }
        }*/
        UserAssets userAssets = assetsByTypeAndUserId(accetType, userId);
        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
        String type = eUserAssets.getDesc();
        String before = userAssets.getAvailableBalance().toString();
@@ -307,11 +338,12 @@
    public Boolean aiAvailableBalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount) throws Exception {
        //查询账户
        UserAssets userAssets = assetsByTypeAndUserId(EStockType.getDefault().getCode(), userId);
        /*UserAssets userAssets = assetsByTypeAndUserId(EStockType.getDefault().getCode(), userId);
        //是否需要转换金额
        if (!accetType.equals(EStockType.getDefault().getCode())) {
            amount = exchangeAmountByRate(accetType, amount);
        }
        }*/
        UserAssets userAssets = assetsByTypeAndUserId(accetType, userId);
        String before = userAssets.getAvailableBalance().toString();
        if (eUserAssets.getCode().equals(EUserAssets.BUY_AI.getCode())) {
            //冻结金额
@@ -362,15 +394,16 @@
    }
    @Override
    public BigDecimal exchangeAmountByRate(String accetType, BigDecimal amount) throws Exception {
        EStockType stockType = EStockType.getEStockTypeByCode(accetType);
    public BigDecimal exchangeAmountByRate(String fromType, String toType, BigDecimal amount) throws Exception {
        EStockType stockType = EStockType.getEStockTypeByCode(fromType);
        EStockType toStockType = EStockType.getEStockTypeByCode(toType);
        ExchangeRate exchangeRate = exchangeRateRepository.findExchangeRateByCurrencyAndConversionCurrency(
                stockType.getSymbol(), EStockType.getDefault().getSymbol()).orElse(null);
                stockType.getSymbol(), toStockType.getSymbol()).orElse(null);
        if (exchangeRate != null) {
            //转换为默认货币 保留5位小数
            return amount.multiply(exchangeRate.getRata()).setScale(5, RoundingMode.HALF_UP);
        } else {
            log.error("exchangeAmountByRate is null:{}>>{}", stockType.getSymbol(), EStockType.getDefault().getSymbol());
            log.error("exchangeAmountByRate is null:{}>>{}", stockType.getSymbol(), toStockType.getSymbol());
            throw new Exception("货币转换汇率未设置");
        }
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -182,9 +182,9 @@
                BigDecimal orderFree = siteSettingBuyFee.multiply(buyAmt);
                BigDecimal needBuyAmt = buyAmt.add(orderFree);
                //资金校验
                if (!stock.getStockType().equals(EStockType.getDefault().getCode())) {
                /*if (!stock.getStockType().equals(EStockType.getDefault().getCode())) {
                    needBuyAmt = userAssetsServices.exchangeAmountByRate(stock.getStockType(), buyAmt);
                }
                }*/
                BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
                BigDecimal availableBalance =  fundratio.multiply(userAssets.getAvailableBalance());
                if (availableBalance.compareTo(needBuyAmt) < 0) {
@@ -1809,9 +1809,9 @@
            BigDecimal newBuyAmt = buyAmt;
            //如果不是默认货币需要转换金额
            if (!stock.getStockType().equals(EStockType.getDefault().getCode())) {
            /*if (!stock.getStockType().equals(EStockType.getDefault().getCode())) {
                newBuyAmt = userAssetsServices.exchangeAmountByRate(stock.getStockType(), buyAmt);
            }
            }*/
            if(newBuyAmt.compareTo(userAssets.getAvailableBalance()) > 0){
                return ServerResponse.createByErrorMsg("可用余额不足" + userAssets.getAvailableBalance(), request);
            }
@@ -1829,9 +1829,9 @@
            UserPosition userPosition = getUserPosition(dzId,num, user, stockDz, nowPrice, stock, buyAmt);
            userPositionMapper.insert(userPosition);
            BigDecimal buy_fee_amt = siteSettingBuyFee.multiply(newBuyAmt);
            //已经转化 直接传默认类型
            userAssetsServices.availablebalanceChange(EStockType.getDefault().getCode(), user.getId(), EUserAssets.BUY, newBuyAmt.negate(),"","");
            iUserAssetsServices.availablebalanceChange(EStockType.getDefault().getCode(), userAssets.getUserId(), EUserAssets.HANDLING_CHARGE, buy_fee_amt, "", "");
            userAssetsServices.availablebalanceChange(stock.getStockType(), user.getId(), EUserAssets.BUY, newBuyAmt.negate(),"","");
            iUserAssetsServices.availablebalanceChange(stock.getStockType(), userAssets.getUserId(), EUserAssets.HANDLING_CHARGE, buy_fee_amt, "", "");
            return ServerResponse.createBySuccess("购买成功", request);
        } catch (Exception e) {
            log.error("大宗下单异常{}", e.getMessage());
src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
@@ -217,7 +217,7 @@
        PageInfo pageInfo = new PageInfo(userRecharges);
        for (int i = 0; i <userRecharges.size() ; i++) {
          SitePay s =   sitePayMapper.selectById(userRecharges.get(i).getPayId());
            //SitePay s =   sitePayMapper.selectById(userRecharges.get(i).getPayId());
            userRecharges.get(i).setAssetsType(EStockType.getDefault().getSymbol1());
            userRecharges.get(i).setChannelName(EStockType.getDefault().getSymbol());
        }
src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -9,6 +9,7 @@
import com.google.common.collect.Lists;
import com.nq.common.ServerResponse;
import com.nq.dao.*;
import com.nq.enums.EConfigKey;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.pojo.*;
@@ -122,6 +123,9 @@
    @Autowired
    IUserService iUserService;
    @Autowired
    IStockConfigServices iStockConfigServices;
    public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) {
        if (StringUtils.isBlank(agentCode) || StringUtils.isBlank(phone) ||
@@ -193,8 +197,8 @@
            if (user.getIsLogin().intValue() == 1) {
                return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
            }
            //默认资产
            userAssetsServices.assetsByTypeAndUserId(EStockType.getDefault().getCode(),user.getId());
            //新增账号资产
            userAssetsServices.addUserAssetsListByUserId(user.getId());
            this.iSiteLoginLogService.saveLog(user, request);
            return ServerResponse.createBySuccess(user);
        }
@@ -571,7 +575,7 @@
        RUserAssets rUserAssets  = new RUserAssets();
        /*RUserAssets rUserAssets  = new RUserAssets();
        rUserAssets.setAccectType("ALL");
        rUserAssets.setProfitAndLoss(AllProfitAndLose.setScale(s,BigDecimal.ROUND_DOWN).toString());
        rUserAssets.setProfitAndLossUSD(AllProfitAndLose.setScale(s,BigDecimal.ROUND_DOWN).toString());
@@ -587,7 +591,7 @@
        rUserAssets.setFreezeMoneyUSD(allFreeMoney.setScale(s,BigDecimal.ROUND_DOWN).toString());
        rUserAssets.setSymbol("$");
        rUserAssets.setSymbolCode("USD");
        rUserAssetsList.add(rUserAssets);
        rUserAssetsList.add(rUserAssets);*/
        return ServerResponse.createBySuccess(rUserAssetsList);
    }
@@ -631,13 +635,23 @@
        try {
            User user =  userService.getCurrentUser(request);
            UserAssets formAssets = userAssetsServices.assetsByTypeAndUserId(fromType,user.getId());
            BigDecimal amtBig = new BigDecimal(amt);
            if(formAssets.getAvailableBalance().compareTo(amtBig)<0){
                return ServerResponse.createByErrorMsg("余额不足",request);
            BigDecimal amtBig = new BigDecimal(amt).abs();
            // 转换手续费率
            BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()).getCValue()) ;
            BigDecimal orderFree = siteSettingBuyFee.multiply(amtBig);
            //资金校验
            BigDecimal needAmt = amtBig.add(orderFree);
            if(formAssets.getAvailableBalance().compareTo(needAmt)<0){
                return ServerResponse.createByErrorMsg("余额不足", request);
            }
            userAssetsServices.availablebalanceChange(fromType,user.getId(), EUserAssets.TRANSFER,amtBig.negate(),fromType+"/"+toType,"");
            amtBig = rateServices.currencyRate(EStockType.getEStockTypeByCode(fromType),EStockType.getEStockTypeByCode(toType)).multiply(amtBig);
            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.HANDLING_CHARGE, orderFree, "", "");
            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.TRANSFER, amtBig.negate(),fromType+"/"+toType,"");
            //转换金额
            amtBig = userAssetsServices.exchangeAmountByRate(fromType, toType, amtBig);
            userAssetsServices.availablebalanceChange(toType,user.getId(),EUserAssets.TRANSFER,amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
            return ServerResponse.createBySuccess();
        } catch (Exception e) {
            return ServerResponse.createByErrorMsg(e.getMessage());
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -144,10 +144,10 @@
                }else{
                    bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
                }
                //如果不是默认货币需要转换金额
                /*//如果不是默认货币需要转换金额
                if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
                    bound = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), bound);
                }
                }*/
                if(userAssets.getAvailableBalance().compareTo(bound) < 0){
                    return ServerResponse.createByErrorMsg("账户余额不足", request);
                }
@@ -179,17 +179,17 @@
                        userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(subtract.abs()));
                    }
                    userAssetsMapper.updateById(userAssets);
                    //交易记录MEX
                    //交易记录
                    MoneyLog moneyLog = new MoneyLog();
                    EUserAssets eUserAssets = EUserAssets.BUY;
                    moneyLog.setDescs(eUserAssets.getDesc());
                    moneyLog.setBeFore(before);
                    moneyLog.setAfter(userAssets.getAvailableBalance().toString());
                    moneyLog.setAmount(bound.negate().toString());
                    moneyLog.setAccectType(EStockType.getDefault().getCode());
                    moneyLog.setAccectType(stockSubscribe.getStockType());
                    moneyLog.setType(eUserAssets.getCode());
                    moneyLog.setUserId(user.getId()+"");
                    moneyLog.setSymbol(EStockType.getDefault().getSymbol());
                    moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
                    moneyLog.setCreateTime(new Date());
                    moneyLogMapper.insert(moneyLog);
                    if (ret > 0) {
@@ -287,20 +287,20 @@
                            if(applyNumber > 0){
                                //需要退回的资金
                                refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
                                //如果不是默认货币需要转换金额
                                /*//如果不是默认货币需要转换金额
                                if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
                                    refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
                                }
                                }*/
                                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(refundPrice));
                                userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(refundPrice));
                            }
                        }else{
                            if(applyNumber > 0){
                                refundPrice = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(applyNumber));
                                //如果不是默认货币需要转换金额
                                /*//如果不是默认货币需要转换金额
                                if (!stockSubscribe.getStockType().equals(EStockType.getDefault().getCode())) {
                                    refundPrice = iUserAssetsServices.exchangeAmountByRate(stockSubscribe.getStockType(), refundPrice);
                                }
                                }*/
                                BigDecimal subtract = refundPrice.subtract(userAssets.getAmountToBeCovered());
                                if(subtract.compareTo(BigDecimal.ZERO) <= 0){//如果退回的资金不足补足待补则直接减
                                    userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(refundPrice));
@@ -319,10 +319,10 @@
                            moneyLog.setBeFore(before);
                            moneyLog.setAfter(userAssets.getAvailableBalance().toString());
                            moneyLog.setAmount(refundPrice.toString());
                            moneyLog.setAccectType(EStockType.getDefault().getCode());
                            moneyLog.setAccectType(stockSubscribe.getStockType());
                            moneyLog.setType(eUserAssets.getCode());
                            moneyLog.setUserId(userAssets.getUserId()+"");
                            moneyLog.setSymbol(EStockType.getDefault().getSymbol());
                            moneyLog.setSymbol(EStockType.getEStockTypeByCode(stockSubscribe.getStockType()).getSymbol());
                            moneyLog.setCreateTime(new Date());
                            moneyLogMapper.insert(moneyLog);
                        }
src/main/resources/application.yml
@@ -125,7 +125,7 @@
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:6306/stock_ci?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#    url: jdbc:mysql://127.0.0.1:3306/cgstock?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#    url: jdbc:mysql://127.0.0.1:3306/stock_ci?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: stock_ci
    password: 123456
    druid: