1
zj
2024-05-18 e26923972dffde65542e61d09032ee0234f0bb7f
1
12 files modified
140 ■■■■■ changed files
src/main/java/com/nq/controller/echo/EChoController.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/EchoServices.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/PriceServicesImpl.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/StockServiceImpl.java 16 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/task/news/NewsTask.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/task/stock/CarryPositionTask.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/controller/echo/EChoController.java
@@ -62,7 +62,7 @@
            }
        }
        User user = this.iUserService.getCurrentRefreshUser(request);
        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN", user.getId());
        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
        if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
            return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
        }
src/main/java/com/nq/service/impl/EchoServices.java
@@ -73,7 +73,7 @@
            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                    .eq(UserAssets::getUserId, orderEchoBean.getUserId())
                    .eq(UserAssets::getAccectType, "IN")
                    .eq(UserAssets::getAccectType, "MAS")
            );
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().subtract(money));
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(money));
@@ -116,7 +116,7 @@
                    BigDecimal aml = incomeAmount.add(money);
                    UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                            .eq(UserAssets::getUserId, orderEchoBean.getUserId())
                            .eq(UserAssets::getAccectType, "IN")
                            .eq(UserAssets::getAccectType, "MAS")
                    );
                    if (userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0) {
                        continue;
src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -1,5 +1,6 @@
package com.nq.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.google.gson.Gson;
@@ -11,6 +12,7 @@
import com.nq.pojo.*;
import com.nq.service.IPriceServices;
import com.nq.service.IStockConfigServices;
import com.nq.utils.PropertiesUtil;
import com.nq.utils.http.HttpClientRequest;
import com.nq.utils.redis.RedisKeyUtil;
import com.nq.utils.timeutil.TimeUtil;
@@ -18,8 +20,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.*;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import  java.io.BufferedReader;
@@ -57,7 +58,7 @@
                if(stockSetting.getType().equals("0")){
                    return  new BigDecimal(stockSetting.getPrice());
                }else{
                    String s = doGet(stock.getStockCode());
                    String s = doPost(stock.getStockCode());
                    if(null != s){
                        Map<String, Object> stringObjectMap = jsonToMap(s);
                        return   new BigDecimal(stringObjectMap.get("last").toString()).multiply(new BigDecimal(stockSetting.getPrice()));
@@ -66,10 +67,10 @@
            }
        }
        String s = doGet(stock.getStockCode());
        String s = doPost(stock.getStockCode());
        if(null != s) {
            Map<String, Object> stringObjectMap = jsonToMap(s);
            return  new BigDecimal(stringObjectMap.get("last").toString());
            return  new BigDecimal(stringObjectMap.get("Last").toString());
        }
        return BigDecimal.ZERO;
    }
@@ -77,7 +78,7 @@
    @Override
    public Map<String, Object> getNewStock(String stockCode) {
        Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
        String s = doGet(stock.getStockCode());
        String s = doPost(stock.getStockCode());
        if(null != s){
            Map<String, Object> stringObjectMap = jsonToMap(s);
            return   stringObjectMap;
@@ -100,14 +101,24 @@
        }
    }
    public String doGet(String pid){
        String  apiUrl  =  "http://api-in-2.js-stock.top/stock?pid="+pid+"&key=eVKtHt7aG4m6ozwWL9qG";
    public String doPost(String pid){
        String  apiUrl  =  PropertiesUtil.getProperty("MAS_HTTP_API")+"stock?key="+PropertiesUtil.getProperty("MAS_KEY");
        try  {
            URL  url  =  new  URL(apiUrl);
            HttpURLConnection  connection  =  (HttpURLConnection)  url.openConnection();
            connection.setRequestMethod("GET");
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "application/json");
            connection.setDoOutput(true);
            BufferedReader in  =  new  BufferedReader(new InputStreamReader(connection.getInputStream()));
            String json = JSON.toJSONString(new HashMap<String, String>() {{
                put("pid", pid);
            }});
            try(OutputStream os = connection.getOutputStream()) {
                byte[] input = json.getBytes("utf-8");
                os.write(input, 0, input.length);
            }
            BufferedReader in  = new  BufferedReader(new InputStreamReader(connection.getInputStream()));
            String  inputLine;
            StringBuffer  response  =  new  StringBuffer();
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -24,9 +24,12 @@
import java.util.Base64;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * 新闻资讯
 *
 * @author lr
 * @date 2020/07/24
 */
@@ -53,7 +56,7 @@
    @Override
    public int update(SiteNews model) {
        int ret = siteNewsMapper.update(model);
        return ret>0 ? ret: 0;
        return ret > 0 ? ret : 0;
    }
    /**
@@ -62,12 +65,12 @@
    @Override
    public ServerResponse save(SiteNews model) {
        int ret = 0;
        if(model!=null && model.getId()>0){
        if (model != null && model.getId() > 0) {
            ret = siteNewsMapper.update(model);
        } else{
        } else {
            ret = siteNewsMapper.insert(model);
        }
        if(ret>0){
        if (ret > 0) {
            return ServerResponse.createBySuccessMsg("操作成功");
        }
        return ServerResponse.createByErrorMsg("操作失败");
@@ -98,7 +101,7 @@
    @Override
    public ServerResponse getDetail(int id, HttpServletRequest request) {
        SiteNews model = siteNewsMapper.load(id);
        if(model!=null){
        if (model != null) {
            GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil();
            //取出每一条数据的内容,进行翻译
@@ -122,7 +125,7 @@
    /*新闻资讯-top最新新闻资讯*/
    @Override
    public ServerResponse getTopNewsList(int pageSize){
    public ServerResponse getTopNewsList(int pageSize) {
        List<SiteNews> listData = this.siteNewsMapper.getTopNewsList(pageSize);
        PageInfo pageInfo = new PageInfo();
@@ -132,15 +135,26 @@
    @Override
    public void grabNews() {
        addNews(1, EStockType.IN.getStockUrl() + "stock-markets?key=" + EStockType.IN.getStockKey() + "&type=4");
        ExecutorService executor = Executors.newFixedThreadPool(2);
        try {
            executor.submit(() -> addNews(1, EStockType.MAS.getStockUrl() + "stock-markets?key=" + EStockType.MAS.getStockKey() + "&type=4"));
            executor.submit(() -> addNews(3, EStockType.MAS.getStockUrl() + "stock-markets?key=" + EStockType.MAS.getStockKey() + "&type=2"));
        } catch (Exception e) {
            e.printStackTrace();
            log.error("添加新闻出现异常:  " + e.getMessage());
        } finally {
            if (executor != null) {
                executor.shutdown();
            }
        }
    }
    private void addNews(Integer type, String url) {
        try {
            String newlist = HttpRequest.doGrabGet(url);
            JSONArray jsonArray = JSONArray.fromObject(newlist);
            if (jsonArray.size() > 0) {
                for (int i = 0; i < jsonArray.size(); i++) {
            int size = jsonArray.size();  // 将jsonArray.size()的计算结果存储在变量中
            if (size > 0) {
                for (int i = 0; i < size; i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String newsId = jsonObject.getString("id");
                    if (siteNewsMapper.getNewsBySourceIdCount(newsId) == 0) {
@@ -150,7 +164,10 @@
                        siteNews.setTitle(jsonObject.getString("title"));
                        Long showTime = jsonObject.getLong("time");
                        siteNews.setShowTime(new Date(showTime * 1000));
                        siteNews.setImgurl(jsonObject.getString("img"));
                        if(jsonObject.has("img")){
                            convertBase64ToImage(jsonObject.getString("img"),PropertiesUtil.getProperty("ftp.address")+newsId+".jpg");
                            siteNews.setImgurl(PropertiesUtil.getProperty("ftp.server.http.prefix")+newsId+".jpg");
                        }
                        siteNews.setDescription(jsonObject.getString("content"));
                        siteNews.setContent(jsonObject.getString("content"));
                        siteNews.setStatus(1);
@@ -161,10 +178,9 @@
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("添加新闻出现异常: " + e.getMessage());
            log.error("添加新闻出现异常:  " + e.getMessage());
        }
    }
    public static String  convertBase64ToImage(String base64Str, String path) {
        byte[] imageBytes = Base64.getDecoder().decode(base64Str);
@@ -179,5 +195,4 @@
        }
        return  path;
    }
}
src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -134,7 +134,7 @@
        List<Stock> stockList = new ArrayList<>();
        if (stockType.equals("99")) {
            PageHelper.startPage(pageNum, pageSize);
            stockList.addAll(stockMapper.findZtStockListByKeyWords(keyWords, stockPlate, "IN", Integer.valueOf(0)));
            stockList.addAll(stockMapper.findZtStockListByKeyWords(keyWords, stockPlate, "MAS", Integer.valueOf(0)));
        } else if (stockType.equals("100")) {
            User user = iUserService.getCurrentRefreshUser(request);
            if (user == null) {
@@ -192,7 +192,7 @@
            CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
                stockListVO.setNowPrice(iPriceServices.getNowPrice(stockListVO.getCode(), stockType).toString());
                Map<String, Object> newStock = iPriceServices.getNewStock(stockListVO.getCode());
                stockListVO.setHcrateP(newStock.get("pcp").toString());
                stockListVO.setHcrateP(newStock.get("ChgPct").toString());
            });
            futures.add(future);
        }
@@ -229,9 +229,9 @@
        stockVO.setSpell(stock.getStockSpell());
        stockVO.setGid(stock.getStockGid().toUpperCase());
        Map<String, Object> newStock = iPriceServices.getNewStock(stock.getStockCode());
        stockVO.setHcrate(newStock.get("pcp").toString().replaceAll("%", ""));
        stockVO.setToday_max(newStock.get("high").toString());
        stockVO.setToday_min(newStock.get("low").toString());
        stockVO.setHcrate(newStock.get("ChgPct").toString().replaceAll("%", ""));
        stockVO.setToday_max(newStock.get("High").toString());
        stockVO.setToday_min(newStock.get("Low").toString());
        if(null != cacheBaseStock){
            stockVO.setOpen_px(cacheBaseStock.getOpen());
            stockVO.setPreclose_px(cacheBaseStock.getPrevClose());
@@ -459,12 +459,12 @@
    @Override
    public Object getKData(String pid, String interval, String stockType) {
        EStockType eStockType = EStockType.getEStockTypeByCode(stockType);
        if(eStockType == EStockType.IN){
            Object object = HttpUtil.get(eStockType.stockUrl + "api/all/getKData.do?pid=" + pid + "&interval=" + interval + "&stockType=in");
        if(eStockType == EStockType.MAS){
            Object object = HttpUtil.get(eStockType.stockUrl + "kline?pid=" + pid + "&interval=" + interval + "&key=" + eStockType.stockKey);
            Gson gson = new Gson();
            List<kData> dataList = gson.fromJson(object.toString(), new TypeToken<List<kData>>(){}.getType());
            Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockCode, pid).eq(Stock::getStockType, "IN"));
            Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockCode, pid).eq(Stock::getStockType, "MAS"));
            BigDecimal nowPrice = iPriceServices.getNowPrice(stock.getStockCode());
            Map singleStock = getSingleStock(stock.getStockCode());
            StockVO stockVO = (StockVO)singleStock.get("stock");
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -326,7 +326,7 @@
        UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                .eq(UserAssets::getUserId, userPosition.getUserId())
                .eq(UserAssets::getAccectType, "IN")
                .eq(UserAssets::getAccectType, "MAS")
        );
        if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
            return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
@@ -1549,7 +1549,7 @@
        if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) {
            return ServerResponse.createByErrorMsg("Order failed, account has been locked");
        }
        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN", user.getId());
        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
        if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
            return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
        }
@@ -1611,7 +1611,7 @@
        userPosition.setOrderSpread(BigDecimal.ZERO);
        userPositionMapper.insert(userPosition);
        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
        userAssetsServices.availablebalanceChange(EStockType.MAS.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
        return ServerResponse.createBySuccess("购买成功", request);
    }
@@ -1635,7 +1635,7 @@
            for (UserPosition position : list) {
                UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                        .eq(UserAssets::getUserId, position.getUserId())
                        .eq(UserAssets::getAccectType, "IN")
                        .eq(UserAssets::getAccectType, "MAS")
                );
                if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
                    continue;
src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
@@ -222,8 +222,8 @@
        for (int i = 0; i <userRecharges.size() ; i++) {
          SitePay s =   sitePayMapper.selectById(userRecharges.get(i).getPayId());
            userRecharges.get(i).setAssetsType(EStockType.IN.getSymbol1());
            userRecharges.get(i).setChannelName(EStockType.IN.getSymbol());
            userRecharges.get(i).setAssetsType(EStockType.MAS.getSymbol1());
            userRecharges.get(i).setChannelName(EStockType.MAS.getSymbol());
        }
        return ServerResponse.createBySuccess(pageInfo);
@@ -342,7 +342,7 @@
        userRecharge.setPayTime(new Date());
        userRecharge.setOrderStatus(Integer.valueOf(1));
        userRecharge.setPayId(1);
        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(),
        userAssetsServices.availablebalanceChange(EStockType.MAS.getCode(),
                userId,EUserAssets.TOP_UP,new BigDecimal(amt),"","");
        int insertCount = this.userRechargeMapper.insert(userRecharge);
        if (insertCount > 0) {
src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -199,7 +199,7 @@
            if (user.getIsLogin().intValue() == 1) {
                return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
            }
            userAssetsServices.assetsByTypeAndUserId(EStockType.IN.getCode(),user.getId());
            userAssetsServices.assetsByTypeAndUserId(EStockType.MAS.getCode(),user.getId());
            this.iSiteLoginLogService.saveLog(user, request);
            return ServerResponse.createBySuccess(user);
        }
@@ -601,7 +601,7 @@
        userPositions = userPositionMapper.
                findMyPositionByCodeAndSpell(userId,
                        "","",
                        0, "IN");
                        0, "MAS");
        List<UserPositionVO> userPositionVOS = Lists.newArrayList();
@@ -789,8 +789,8 @@
        int insertCount = this.userMapper.insert(user);
         dbUser = userMapper.selectOne(queryWrapper);
        userAssetsServices.getAvailableBalance(EStockType.IN.getCode(),dbUser.getId() );
        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
        userAssetsServices.getAvailableBalance(EStockType.MAS.getCode(),dbUser.getId() );
        userAssetsServices.availablebalanceChange(EStockType.MAS.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
        if (insertCount > 0) {
            return ServerResponse.createBySuccessMsg("Success");
        }
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -83,7 +83,7 @@
            return ServerResponse.createByErrorMsg("参数错误",request);
        }
        User user = iUserService.getCurrentRefreshUser(request);
        UserAssets userAssets =   iUserAssetsServices.assetsByTypeAndUserId("IN",user.getId());
        UserAssets userAssets =   iUserAssetsServices.assetsByTypeAndUserId("MAS",user.getId());
        if (model.getNewCode() != null) {
            StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>()
                    .eq("code", model.getNewCode()).eq("type",model.getType()));
@@ -135,7 +135,7 @@
                }
            }else{
               BigDecimal bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
               BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(), user.getId());
               BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.MAS.getCode(), user.getId());
               if(useEnaAmount.compareTo(bound)<0){
                   return ServerResponse.createByErrorMsg("余额不足,配售失败",request);
               }
@@ -152,7 +152,7 @@
                model.setType(stockSubscribe.getType());
                model.setDbMoney(BigDecimal.ZERO);
                ret = userStockSubscribeMapper.insert(model);
                iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"","");
                iUserAssetsServices.availablebalanceChange(EStockType.MAS.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"","");
                if (ret > 0) {
                    return ServerResponse.createBySuccessMsg("配售成功",request);
                } else {
@@ -196,7 +196,7 @@
                    model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
                    model.setDbMoney(model.getDbMoney());
                    //客户中签直接扣除客户账户可用资金
                    UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId());
                    UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("MAS", userStockSubscribe.getUserId());
                    if(null == userAssets){
                        return ServerResponse.createByErrorMsg("客户资金账户不存在");
                    }
@@ -217,7 +217,7 @@
                    }
                    BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber());
                    BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount);
                    iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(),
                    iUserAssetsServices.availablebalanceChange(EStockType.MAS.getCode(),userStockSubscribe.getUserId(),
                            EUserAssets.TOP_UP,tMoney,"","");
                    model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
                    model.setDbMoney(BigDecimal.ZERO);
@@ -419,14 +419,14 @@
                    userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate());
                    userStockSubscribe.setStatus(4);
                    BigDecimal bigDecimal =  iUserAssetsServices.
                            getAvailableBalance(EStockType.IN.getCode(),
                            getAvailableBalance(EStockType.MAS.getCode(),
                                    userStockSubscribe.getUserId());
                    BigDecimal multiply = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(userStockSubscribe.getApplyNumber()));
                    if(bigDecimal.compareTo(multiply) <= 0){
                        return ServerResponse.createByErrorMsg("余额不足",request);
                    }
                    iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(),
                    iUserAssetsServices.availablebalanceChange(EStockType.MAS.getCode(),userStockSubscribe.getUserId(),
                            EUserAssets.BUY,multiply.negate(),"","");
                    userStockSubscribe.setDbMoney(BigDecimal.ZERO);
                    userStockSubscribeMapper.update1(userStockSubscribe);
src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -221,7 +221,7 @@
            User user = this.userMapper.selectById(userWithdraw.getUserId());
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
            if (userAssets == null) {
                return ServerResponse.createByErrorMsg("用户资金账户不存在");
            }
@@ -334,7 +334,7 @@
            if (user == null) {
                return ServerResponse.createByErrorMsg("用户不存在");
            }
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
            if (userAssets == null) {
                return ServerResponse.createByErrorMsg("用户资金账户不存在");
            }
src/main/java/com/nq/utils/task/news/NewsTask.java
@@ -38,7 +38,7 @@
    /*
     * 新聞資訊抓取
     * */
    @Scheduled(cron = "0 0/5 * * * ?")
    @Scheduled(cron = "0/10 * * * * ?")
    public void NewsInfoTask() {
        if (NewsInfoTask.get()) { // 判断任务是否在处理中
            return;
src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
@@ -112,7 +112,7 @@
                List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper.selectList(new LambdaQueryWrapper<UserStockSubscribe>()
                        .eq(UserStockSubscribe::getStatus, 3));
                userStockSubscribes.forEach(f->{
                    UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN",f.getUserId());
                    UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("MAS",f.getUserId());
                    if(null != userAssets && userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) == 0){
                        f.setStatus(4);
                        userStockSubscribeMapper.updateById(f);