From 29446dbdaea7d11eb28a4210ec69a186c54e705e Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 24 Apr 2024 23:44:22 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java | 22 ++-----
src/main/java/com/nq/utils/task/stock/CarryPositionTask.java | 79 ++++++++++++++++++++++++++
src/main/resources/application.properties | 2
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java | 34 ++++------
src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java | 10 +++
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 30 +++------
6 files changed, 122 insertions(+), 55 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index 379da96..c9e87a6 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -80,18 +80,14 @@
List<SiteNews> listData = this.siteNewsMapper.pageList(pageNum, pageSize, type, sort, keyword);
GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil();
//取出每一条数据的内容,进行翻译
-
-// if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) {
-// for (SiteNews siteNews : listData) {
-// try {
-// siteNews.setTitle(googleTranslateUtil.translate(siteNews.getTitle(), request.getHeader("lang")));
-// siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), request.getHeader("lang")));
-// } catch (Exception e) {
-// log.error("翻译失败");
-// }
-// }
-// }
-
+ for (SiteNews siteNews : listData) {
+ try {
+ siteNews.setTitle(googleTranslateUtil.translate(siteNews.getTitle(), request.getHeader("lang")));
+ siteNews.setSourceName(googleTranslateUtil.translate(siteNews.getSourceName(), request.getHeader("lang")));
+ } catch (Exception e) {
+ log.error("翻译失败");
+ }
+ }
PageInfo pageInfo = new PageInfo(listData);
pageInfo.setList(listData);
@@ -106,14 +102,12 @@
GoogleTranslateUtil googleTranslateUtil = new GoogleTranslateUtil();
//取出每一条数据的内容,进行翻译
- if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN")&& !request.getHeader("lang").equals("tww")&& !request.getHeader("lang").equals("")) {
- try {
- model.setContent(googleTranslateUtil.translate(model.getContent(), request.getHeader("lang")));
- model.setTitle(googleTranslateUtil.translate(model.getTitle(), request.getHeader("lang")));
- model.setDescription(googleTranslateUtil.translate(model.getDescription(), request.getHeader("lang")));
- } catch (Exception e) {
- log.error("翻译失败");
- }
+ try {
+ model.setContent(googleTranslateUtil.translate(model.getContent(), request.getHeader("lang")));
+ model.setTitle(googleTranslateUtil.translate(model.getTitle(), request.getHeader("lang")));
+ model.setDescription(googleTranslateUtil.translate(model.getDescription(), request.getHeader("lang")));
+ } catch (Exception e) {
+ log.error("翻译失败");
}
return ServerResponse.createBySuccess(model);
}
diff --git a/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
index a05b2bb..6e9b5bd 100644
--- a/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
@@ -1,9 +1,12 @@
package com.nq.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageInfo;
import com.nq.common.ServerResponse;
+import com.nq.dao.StockMapper;
+import com.nq.pojo.Stock;
import com.nq.pojo.StockSubscribe;
import com.nq.service.IStockSubscribeService;
import com.nq.dao.StockSubscribeMapper;
@@ -26,6 +29,9 @@
implements IStockSubscribeService {
@Resource
StockSubscribeMapper stockSubscribeMapper;
+
+ @Autowired
+ StockMapper stockMapper;
/**
* @Description: 用户新股列表
@@ -73,6 +79,10 @@
public ServerResponse add(StockSubscribe model, HttpServletRequest request) {
//判断是否已经存在
log.info("model:{}", model);
+ Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockSpell, model.getCode()).last(" limit 1"));
+ if(null == stock){
+ return ServerResponse.createByErrorMsg("新股代码不存在");
+ }
int resultCount = this.stockSubscribeMapper.insert(model);
if (resultCount > 0) {
return ServerResponse.createBySuccessMsg("添加新股成功");
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 6c3f208..624dbdd 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1,5 +1,6 @@
package com.nq.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nq.dao.*;
import com.nq.enums.EConfigKey;
@@ -337,7 +338,7 @@
}
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", userPosition.getStockCode()));
if (!priceServices.isLimitDownSell(stock.getStockCode())) {
- return ServerResponse.createByErrorMsg("股票垫停,无法平仓", request);
+ return ServerResponse.createByErrorMsg("股票跌停,无法平仓", request);
}
BigDecimal nowPrice = priceServices.getNowPrice(userPosition.getStockCode());
if (nowPrice.compareTo(new BigDecimal("0")) != 1) {
@@ -1159,19 +1160,18 @@
return ServerResponse.createByErrorMsg("该新股不存在");
}
if (userStockSubscribe.getStatus() == 4 || userStockSubscribe.getStatus() == 3 && stockSubscribe.getType() == 2) {
-
-// String sinaStock = SinaStockApi.getSinaStock(stockSubscribe.getStockType()+userStockSubscribe.getNewCode());
-// String[] arrayOfString = sinaStock.split(",");
-// if (arrayOfString.length < 10){
-// return ServerResponse.createByErrorMsg("数据源无该新股数据,转持仓失败");
-// }
+ Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockSpell, userStockSubscribe.getNewCode()));
+ if(null == stock){
+ return ServerResponse.createByErrorMsg("该新股不存在");
+ }
UserPosition userPosition = new UserPosition();
userPosition.setPositionType(1);
userPosition.setPositionSn(KeyUtils.getUniqueKey());
userPosition.setUserId(userStockSubscribe.getUserId());
userPosition.setNickName(userStockSubscribe.getRealName());
userPosition.setAgentId(userStockSubscribe.getAgentId());
- userPosition.setStockCode(userStockSubscribe.getNewCode());
+ userPosition.setStockCode(stock.getStockCode());
+ userPosition.setStockSpell(stock.getStockSpell());
userPosition.setStockName(userStockSubscribe.getNewName());
userPosition.setStockGid(stockSubscribe.getStockType() + userStockSubscribe.getNewCode());
@@ -1208,14 +1208,6 @@
log.info("用户购买印花税(配资后总资金 * 百分比) = {}", buy_yhs_amt);
userPosition.setOrderSpread(buy_yhs_amt);
- // SiteSpread siteSpread = iSiteSpreadService.findSpreadRateOne(new BigDecimal(stock_crease), buy_amt, stock.getStockCode(), now_price);
- // BigDecimal spread_rate_amt = new BigDecimal("0");
- // if(siteSpread != null){
- // spread_rate_amt = buy_amt.multiply(siteSpread.getSpreadRate()).setScale(2, 4);
- // log.info("用户购买点差费(配资后总资金 * 百分比{}) = {}", siteSpread.getSpreadRate(), spread_rate_amt);
- // } else{
- // log.info("用户购买点差费(配资后总资金 * 百分比{}) = {}", "设置异常", spread_rate_amt);
- // }
BigDecimal spread_rate_amt = new BigDecimal(0);
userPosition.setSpreadRatePrice(spread_rate_amt);
@@ -1239,7 +1231,7 @@
userStockSubscribeMapper.update1(userStockSubscribe);
if (userStockSubscribe.getType() == 1 || userStockSubscribe.getType() == 2) {
User user = userMapper.selectById(userStockSubscribe.getUserId());
- ret = userMapper.updateByPrimaryKey(user);
+ ret = userMapper.updateById(user);
}
if (ret > 0) {
return ServerResponse.createBySuccessMsg("新股转持仓成功");
@@ -1538,7 +1530,7 @@
//价格处理
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", stockDz.getStockCode()));
- if(stockDz.getStartTime().after(new Date()) || stockDz.getEndTime().after(new Date())){
+ if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){
return ServerResponse.createByErrorMsg("不在大宗交易所时间之内", request);
}
BigDecimal nowPrice = priceServices.getNowPrice(stockCode).multiply(stockDz.getDiscount());
@@ -1654,7 +1646,7 @@
// 检查股票是否垫停
Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", position.getStockCode()));
if (!priceServices.isLimitDownSell(stock.getStockCode())) {
- log.info("股票垫停,无法平仓,订单id: {}", position.getId());
+ log.info("股票跌停,无法平仓,订单id: {}", position.getId());
return null;
}
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 05ff06d..725d646 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -383,26 +383,20 @@
if(userStockSubscribe.getType()== 2 ){
return ServerResponse.createByErrorMsg("未中签,无需支付",request);
}
- //判断时间
- if (stockSubscribe.getListDate().getTime() <System.currentTimeMillis()) {
- return ServerResponse.createByErrorMsg("不在认缴时间之内",request);
- }
if (userStockSubscribe.getStatus() == 3) {
userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate());
userStockSubscribe.setStatus(4);
BigDecimal bigDecimal = iUserAssetsServices.
getAvailableBalance(EStockType.IN.getCode(),
userStockSubscribe.getUserId());
- if(bigDecimal.compareTo(userStockSubscribe.getDbMoney()) <0){
- iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(),
- EUserAssets.BUY,userStockSubscribe.getDbMoney().negate(),"","");
- userStockSubscribe.setDbMoney(userStockSubscribe.getDbMoney().subtract(iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(),
- userStockSubscribe.getUserId())));
- }else{
- iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(),
- EUserAssets.BUY,userStockSubscribe.getDbMoney().negate(),"","");
- userStockSubscribe.setDbMoney(BigDecimal.ZERO);
+
+ 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(),
+ EUserAssets.BUY,multiply,"","");
+ userStockSubscribe.setDbMoney(BigDecimal.ZERO);
userStockSubscribeMapper.update1(userStockSubscribe);
return ServerResponse.createBySuccess();
} else {
@@ -411,8 +405,6 @@
} else {
return ServerResponse.createByErrorMsg("新股认购订单不存在!",request);
}
-
-
}
return ServerResponse.createByErrorMsg("请先登录",request);
}
diff --git a/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java b/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
new file mode 100644
index 0000000..694654e
--- /dev/null
+++ b/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
@@ -0,0 +1,79 @@
+package com.nq.utils.task.stock;
+
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.nq.dao.StockSubscribeMapper;
+import com.nq.dao.UserMapper;
+import com.nq.dao.UserStockSubscribeMapper;
+import com.nq.pojo.StockSubscribe;
+import com.nq.pojo.User;
+import com.nq.pojo.UserStockSubscribe;
+import com.nq.service.IUserPositionService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+import java.util.stream.Collectors;
+
+/**
+ * @program: dabao
+ * @description:
+ * @create: 2024-04-01 17:32
+ **/
+@Component
+@Slf4j
+public class CarryPositionTask {
+
+
+ @Autowired
+ UserStockSubscribeMapper userStockSubscribeMapper;
+
+ @Autowired
+ IUserPositionService iUserPositionService;
+
+ @Autowired
+ StockSubscribeMapper stockSubscribeMapper;
+
+ @Autowired
+ UserMapper userMapper;
+
+ private final Lock ballotLock = new ReentrantLock();
+
+ @Scheduled(cron = "0 0/10 * * * ?")
+ public void ballot() {
+ if (ballotLock.tryLock()) {
+ try {
+ log.info("新股上市转持仓定时任务--------->开始");
+ List<StockSubscribe> stockSubscribes = stockSubscribeMapper.selectList(new LambdaQueryWrapper<StockSubscribe>()
+ .lt(StockSubscribe::getListDate, DateUtil.date()));
+ if (CollectionUtils.isNotEmpty(stockSubscribes)) {
+ List<String> codeList = stockSubscribes.stream().map(StockSubscribe::getCode).collect(Collectors.toList());
+ List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper.selectList(new LambdaQueryWrapper<UserStockSubscribe>()
+ .eq(UserStockSubscribe::getStatus, 4).in(UserStockSubscribe::getNewCode, codeList));
+ //订单转持仓
+ userStockSubscribes.forEach(f -> {
+ iUserPositionService.newStockToPosition(f.getId());//转持仓
+ f.setStatus(5);
+ userStockSubscribeMapper.updateById(f);
+ });
+ }
+ log.info("新股上市转持仓定时任务--------->结束");
+ } catch (Exception e) {
+ log.error("新股上市转持仓定时任务发生异常", e);
+ } finally {
+ ballotLock.unlock();
+ }
+ } else {
+ log.info("新股上市转持仓定时任务--------->上次任务还未执行完成,本次任务忽略");
+ }
+ }
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 424bb3d..7179edc 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -17,7 +17,7 @@
ftp.user=ftp_stock
ftp.pass=123456
ftp.address =/www/wwwroot/ftp_stock/
-ftp.server.http.prefix=https://img.marwadi.online/
+ftp.server.http.prefix=https://img.essencefunds.com/
redis1.ip=localhost
redis1.port=6379
--
Gitblit v1.9.3