From 566a1b9fda0276e2cc4a35f7ba322c0e599a2c84 Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Wed, 26 Nov 2025 16:03:05 +0800
Subject: [PATCH] 修改
---
src/main/resources/application.properties | 1
src/main/java/com/nq/service/IFileUploadService.java | 2
src/main/java/com/nq/vo/position/UserPositionVO.java | 9 +++
src/main/java/com/nq/service/impl/FileUploadServiceImpl.java | 91 ++++++++++++++++++++++++++++++
src/main/java/com/nq/utils/stock/sina/SinaStockApi.java | 4
src/main/java/com/nq/vo/user/UserInfoVO.java | 1
src/main/java/com/nq/controller/protol/UserController.java | 6 +-
src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java | 4
src/main/java/com/nq/vo/position/PositionProfitVO.java | 8 ++
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java | 18 ++++-
src/main/java/com/nq/service/impl/UserServiceImpl.java | 22 ++++++-
11 files changed, 152 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index c0d04e4..1d2745a 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -285,9 +285,9 @@
@RequestMapping({"upload.do"})
@ResponseBody
public ServerResponse upload(HttpSession session, @RequestParam(value = "upload_file", required = false) MultipartFile file, HttpServletRequest request) {
- String path = request.getSession().getServletContext().getRealPath("upload");
-
- ServerResponse serverResponse = this.iFileUploadService.upload(file, path);
+// String path = request.getSession().getServletContext().getRealPath("upload");
+ String path = PropertiesUtil.getProperty("ftp.server.upload.dirs");
+ ServerResponse serverResponse = this.iFileUploadService.uploadFile(file);
if (serverResponse.isSuccess()) {
String targetFileName = serverResponse.getData().toString();
String url = PropertiesUtil.getProperty("ftp.server.http.prefix") + targetFileName;
diff --git a/src/main/java/com/nq/service/IFileUploadService.java b/src/main/java/com/nq/service/IFileUploadService.java
index 843ec17..ba755aa 100644
--- a/src/main/java/com/nq/service/IFileUploadService.java
+++ b/src/main/java/com/nq/service/IFileUploadService.java
@@ -6,4 +6,6 @@
public interface IFileUploadService {
ServerResponse upload(MultipartFile paramMultipartFile, String paramString);
+
+ ServerResponse uploadFile(MultipartFile paramMultipartFile);
}
\ No newline at end of file
diff --git a/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java b/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
index 860b372..effe191 100644
--- a/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/FileUploadServiceImpl.java
@@ -1,12 +1,18 @@
package com.nq.service.impl;
+import cn.hutool.core.util.StrUtil;
import com.google.common.collect.Lists;
import com.nq.common.ServerResponse;
import com.nq.service.IFileUploadService;
import com.nq.utils.FTPUtil;
import java.io.File;
+import java.io.IOException;
+import java.time.LocalDate;
+import java.util.HashMap;
+import java.util.Map;
import java.util.UUID;
+import com.nq.utils.PropertiesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@@ -22,6 +28,91 @@
private static final Logger log = LoggerFactory.getLogger(FileUploadServiceImpl.class);
+ @Override
+ public ServerResponse uploadFile(MultipartFile file) {
+ // 兼容c端组件上传原理
+ String fileType = file.getOriginalFilename();
+ if (StrUtil.isEmpty(fileType) || fileType.contains("blob")) {
+ fileType = "blob.png";
+ }
+
+ String fileName = file.getOriginalFilename();
+ String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1);
+
+ // 生成唯一的文件名
+ String id = UUID.randomUUID().toString();
+ String path = LocalDate.now() + "/" + id + "." + fileExtentionName;
+
+ // 确保目标文件夹存在
+ File targetDir = new File(PropertiesUtil.getProperty("loca.images.dir") + "/" + LocalDate.now());
+ if (!targetDir.exists()) {
+ targetDir.mkdirs();
+ }
+
+ // 构建本地文件路径
+ File localFile = new File(targetDir, id + "." + fileExtentionName);
+
+ // 打印上传路径
+ log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
+
+ try {
+ // 将文件保存到本地
+ file.transferTo(localFile);
+
+ } catch (IOException e) {
+ log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
+ }
+ // 返回相对路径
+ return ServerResponse.createBySuccess(path);
+ }
+
+
+// public ServerResponse uploadFile(MultipartFile file) {
+// // 兼容c端组件上传原理
+//
+// String fileName = file.getOriginalFilename();
+//
+//
+// String fileExtentionName = fileName.substring(fileName.lastIndexOf(".") + 1);
+//
+//
+// String uploadFileName = UUID.randomUUID() + "." + fileExtentionName;
+//
+// String path = LocalDate.now() + "/" + uploadFileName;
+//
+// // 确保目标文件夹存在
+// File targetDir = new File(PropertiesUtil.getProperty("ftp.server.http.prefix") + "/" + LocalDate.now());
+// if (!targetDir.exists()) {
+// targetDir.mkdirs();
+// }
+//
+// // 构建本地文件路径
+// File localFile = new File(targetDir, uploadFileName);
+//
+// // 打印上传路径
+// log.info("LocalFileUploadService uploadFile localFilePath: {}", localFile.getAbsolutePath());
+//
+// try {
+// // 将文件保存到本地
+// file.transferTo(localFile);
+//
+// // 如果需要自定义元数据,可以在此处理
+// Map<String, String> metadata = new HashMap<>();
+// metadata.put("x-amz-meta-myVal", "test"); // 如果需要元数据,可以放在文件名或其他地方
+//
+//
+//
+// } catch (IOException e) {
+// log.error("LocalFileUploadService uploadFile IOException", e.getMessage(), e);
+// log.error("上传文件异常 , 错误信息 = {}", e);
+// }
+// // 返回相对路径
+// return ServerResponse.createBySuccess(path);
+// }
+
+
+
+
public ServerResponse upload(MultipartFile file, String path) {
String fileName = file.getOriginalFilename();
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 8dde425..c6f7764 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -715,13 +715,15 @@
BigDecimal all_sell_amt = now_price.multiply(new BigDecimal(buy_num.intValue()));
BigDecimal profitLoss = new BigDecimal("0");
- if ("買漲".equals(userPosition.getOrderDirection())) {
+ if ("买涨".equals(userPosition.getOrderDirection())) {
log.info("買賣方向:{}", "漲");
- profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+// profitLoss = all_sell_amt.subtract(all_buy_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+ profitLoss = all_sell_amt.subtract(all_buy_amt).setScale(2,4);
} else {
log.info("買賣方向:{}", "跌");
- profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+// profitLoss = all_buy_amt.subtract(all_sell_amt).multiply(new BigDecimal(userPosition.getOrderLever())).setScale(2,4);
+ profitLoss = all_buy_amt.subtract(all_sell_amt).setScale(2,4);
}
log.info("買入總金額 = {} , 賣出總金額 = {} , 盈虧 = {}", new Object[]{all_buy_amt, all_sell_amt, profitLoss});
@@ -813,6 +815,7 @@
return ServerResponse.createBySuccessMsg("平倉成功!");
}
+
//用户追加保证金操作
public ServerResponse addmargin(String positionSn, int doType, BigDecimal marginAdd) throws Exception {
@@ -1629,6 +1632,7 @@
userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
userPositionVO.setNow_price(positionProfitVO.getNowPrice());
+ userPositionVO.setAllProfitAndLoseStr(positionProfitVO.getAllProfitAndLoseStr());
return userPositionVO;
@@ -1637,12 +1641,14 @@
public PositionProfitVO getPositionProfitVO(UserPosition position) {
BigDecimal profitAndLose = new BigDecimal("0");
BigDecimal allProfitAndLose = new BigDecimal("0");
+ String allProfitAndLoseStr = "";
String nowPrice = "";
if (position.getSellOrderId() != null) {
BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());
- profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+// profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4);
if ("买跌".equals(position.getOrderDirection())) {
profitAndLose = profitAndLose.negate();
}
@@ -1671,10 +1677,14 @@
//总盈亏= 浮动盈亏 – 手续费 – 印花税 – 留仓费 – 点差费
allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
+ //改成盈亏百分比
+ BigDecimal allProfitAndLoseStrTemp = new BigDecimal(nowPrice).subtract(position.getBuyOrderPrice()).divide(position.getBuyOrderPrice(), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)).setScale(2,4);
+ allProfitAndLoseStr = allProfitAndLoseStrTemp.toString() + "%";
}
PositionProfitVO positionProfitVO = new PositionProfitVO();
positionProfitVO.setProfitAndLose(profitAndLose);
positionProfitVO.setAllProfitAndLose(allProfitAndLose);
+ positionProfitVO.setAllProfitAndLoseStr(allProfitAndLoseStr);
positionProfitVO.setNowPrice(nowPrice);
return positionProfitVO;
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 64b4d6c..9e2f001 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -1820,13 +1820,27 @@
// BigDecimal userAllAmt = user.getUserAmt();
BigDecimal userAllAmt = user.getEnableAmt();
userAllAmt = userAllAmt.add(allProfitAndLose);
- userInfoVO.setUserAmt(userAllAmt);
+
userInfoVO.setEnableIndexAmt(user.getEnableIndexAmt());
userInfoVO.setEnaleWithdrawAmt(user.getEnaleWithdrawAmt());
userInfoVO.setHkAmt(user.getHkAmt());
BigDecimal historyProfitLoss = new BigDecimal(0);
+ BigDecimal buyAmtAutual = new BigDecimal(0);
+ List<UserPosition> userPositionscc = this.userPositionMapper.findMyPositionByCodeAndSpell(user.getId(), "", "", 0);
+
+ if (userPositionscc.size() > 0) {
+ for (UserPosition position : userPositionscc) {
+ buyAmtAutual = buyAmtAutual.add(position.getBuyOrderPrice()
+ .multiply(new BigDecimal(position.getOrderNum()))
+ .divide(new BigDecimal(position.getOrderLever()), 2, RoundingMode.HALF_UP));
+ }
+ }
+ userInfoVO.setBuyAmtAutual(buyAmtAutual);
+ userAllAmt = userAllAmt.add(buyAmtAutual);
+ userInfoVO.setUserAmt(userAllAmt);
+
List<UserPosition> userPositions = this.userPositionMapper.findMyPositionByCodeAndSpell(user.getId(), "", "", 1);
if (userPositions.size() > 0) {
@@ -1916,7 +1930,8 @@
if (position.getSellOrderId() != null) {
BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());
- profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+// profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4);
if ("买跌".equals(position.getOrderDirection())) {
profitAndLose = profitAndLose.negate();
}
@@ -1937,7 +1952,8 @@
}
BigDecimal subPrice = (new BigDecimal(nowPrice)).subtract(position.getBuyOrderPrice());
- profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+// profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
+ profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4);
if ("买跌".equals(position.getOrderDirection())) {
profitAndLose = profitAndLose.negate();
}
diff --git a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
index 38a5d61..5cf5d25 100644
--- a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -169,7 +169,7 @@
synchronized (UserWithdrawServiceImpl.class){
//可取港币资金
- BigDecimal hkAmt=user.getHkAmt();
+ BigDecimal hkAmt=user.getEnaleWithdrawAmt();
int compareAmt = hkAmt.compareTo(new BigDecimal(amt));
@@ -181,7 +181,7 @@
BigDecimal reckon_hkAmt = hkAmt.subtract(new BigDecimal(amt));
- user.setHkAmt(reckon_hkAmt);
+ user.setEnaleWithdrawAmt(reckon_hkAmt);
log.info("提现前,港币金额={},提现后,港币金额={}",hkAmt,reckon_hkAmt);
diff --git a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
index 470867d..bbbd3f6 100644
--- a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
+++ b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
@@ -40,8 +40,8 @@
// System.out.println(sina_url + stockGid);
// sina_result = HttpClientRequest.doGet(sina_url + stockGid);
// System.out.println("请求返回:"+sina_result);
- System.out.println("http://36.138.182.213:8088/crypto/getSinaStock?stockGid=" + stockGid);
- sina_result = HttpClientRequest.doGet("http://36.138.182.213:8088/crypto/getSinaStock?stockGid=" + stockGid);
+ System.out.println("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
+ sina_result = HttpClientRequest.doGet("http://36.138.182.213:7001/crypto/getSinaStock?stockGid=" + stockGid);
System.out.println("请求返回:"+sina_result);
} catch (Exception e) {
log.error("获取股票行情出错,错误信息 = {}", e);
diff --git a/src/main/java/com/nq/vo/position/PositionProfitVO.java b/src/main/java/com/nq/vo/position/PositionProfitVO.java
index 1b8cf91..80fc4a7 100644
--- a/src/main/java/com/nq/vo/position/PositionProfitVO.java
+++ b/src/main/java/com/nq/vo/position/PositionProfitVO.java
@@ -10,6 +10,7 @@
private BigDecimal allProfitAndLose;
+ private String allProfitAndLoseStr;
public void setNowPrice(String nowPrice) {
this.nowPrice = nowPrice;
@@ -71,5 +72,12 @@
return this.allProfitAndLose;
}
+ public String getAllProfitAndLoseStr() {
+ return allProfitAndLoseStr;
+ }
+
+ public void setAllProfitAndLoseStr(String allProfitAndLoseStr) {
+ this.allProfitAndLoseStr = allProfitAndLoseStr;
+ }
}
diff --git a/src/main/java/com/nq/vo/position/UserPositionVO.java b/src/main/java/com/nq/vo/position/UserPositionVO.java
index c2220c6..3c6af15 100644
--- a/src/main/java/com/nq/vo/position/UserPositionVO.java
+++ b/src/main/java/com/nq/vo/position/UserPositionVO.java
@@ -59,6 +59,7 @@
private Integer orderStayDays;
private BigDecimal profitAndLose;
private BigDecimal allProfitAndLose;
+ private String allProfitAndLoseStr;
private String now_price;
private String stockPlate;
/*点差费金额*/
@@ -182,6 +183,14 @@
this.stockPlate = stockPlate;
}
+ public String getAllProfitAndLoseStr() {
+ return allProfitAndLoseStr;
+ }
+
+ public void setAllProfitAndLoseStr(String allProfitAndLoseStr) {
+ this.allProfitAndLoseStr = allProfitAndLoseStr;
+ }
+
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof UserPositionVO)) return false;
diff --git a/src/main/java/com/nq/vo/user/UserInfoVO.java b/src/main/java/com/nq/vo/user/UserInfoVO.java
index f2ab545..cfbc60e 100644
--- a/src/main/java/com/nq/vo/user/UserInfoVO.java
+++ b/src/main/java/com/nq/vo/user/UserInfoVO.java
@@ -52,6 +52,7 @@
private BigDecimal allIndexFreezAmt;
private BigDecimal allFuturesProfitAndLose;
private BigDecimal allFuturesFreezAmt;
+ private BigDecimal buyAmtAutual;
/**
* 杠杆倍数,多个用/分割
*/
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 12cd8fb..1e45d75 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -9,6 +9,7 @@
ftp.user=ftp_red
ftp.pass=ftp_red
ftp.server.http.prefix=https://ftp.stockcardsnow.com/
+loca.images.dir=/www/wwwroot/ftp.stockcardsnow.com/
#ftp.server.ip=47.56.200.145
#ftp.user=ofsuccess
#ftp.pass=fdymdM34HHsS8iB6
--
Gitblit v1.9.3