From 25fd0e4dcc93bcf89c845b3691a0455b5733ae5e Mon Sep 17 00:00:00 2001 From: yz <3614508250@qq.com> Date: Fri, 14 Jul 2023 17:14:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eredis=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E7=B1=BB=20=E6=8C=82=E5=8D=95=E9=83=A8=E5=88=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=20=E4=BA=A4=E6=98=93=E6=8C=82=E5=8D=95=E5=BC=80?= =?UTF-8?q?=E4=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/redis/RedisConfig.java | 2 +- .../controller/MemberController.java | 19 +- .../controller/PendingOrderController.java | 3 + .../controller/TakeStashController.java | 123 +++++- .../controller/TradingController.java | 103 +++-- .../controller/UserController.java | 1 - .../trading_trading/dto/TakeStashVO.java | 60 +++ .../trading_trading/entity/TakeStash.java | 7 + .../mappers/TakeStashMapper.java | 2 + .../service/MemberService.java | 8 + .../service/TakeStashService.java | 7 + .../forex/trading_trading/task/redisTask.java | 27 ++ .../resources/com/mappers/TrainingMapper.xml | 398 ------------------ .../resources/mappers/TakeStashMapper.xml | 1 + 14 files changed, 290 insertions(+), 471 deletions(-) create mode 100644 src/main/java/com/sztzjy/forex/trading_trading/dto/TakeStashVO.java create mode 100644 src/main/java/com/sztzjy/forex/trading_trading/task/redisTask.java delete mode 100644 src/main/resources/com/mappers/TrainingMapper.xml diff --git a/src/main/java/com/sztzjy/forex/trading_trading/config/redis/RedisConfig.java b/src/main/java/com/sztzjy/forex/trading_trading/config/redis/RedisConfig.java index b34e139..11f00ef 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/config/redis/RedisConfig.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/config/redis/RedisConfig.java @@ -12,7 +12,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { - @Bean + @Bean(name = "redisTemplate") public RedisTemplate template(RedisConnectionFactory factory) { // 创建RedisTemplate对象 RedisTemplate template = new RedisTemplate<>(); diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java index 981dc5f..82319db 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java @@ -1,5 +1,6 @@ package com.sztzjy.forex.trading_trading.controller; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; import com.sztzjy.forex.trading_trading.annotation.Permission; @@ -15,11 +16,11 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.FileNotFoundException; -import java.util.List; @Api(tags = "实训任务用户管理") @@ -35,10 +36,20 @@ public class MemberController { TrainingService trainingService; @AnonymousAccess - @PostMapping("getMember") - public Member getMember(@RequestBody String memberId) { + @PostMapping("getMemberById") + public ResultEntity getMember(@RequestBody String memberId) { Member member = memberService.selectByPrimaryKey(memberId); - return member; + return new ResultEntity(HttpStatus.OK, "根据成员ID获取成员对象",member); + } + + @AnonymousAccess + @PostMapping("getMember") + public ResultEntity getMemberId(@RequestBody JSONObject jsonObject) { + String name = jsonObject.getString("name"); + String trainingId = jsonObject.getString("trainingId"); + Integer schoolId = jsonObject.getInteger("schoolId"); + Member member = memberService.selectByNameAndSchoolIdAndTrainingID(name, schoolId, trainingId); + return new ResultEntity(HttpStatus.OK, "获取成员ID",member); } @Permission(codes = PermissionType.TRAINING_MANAGEMENT_SEARCH) diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/PendingOrderController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/PendingOrderController.java index e2c670b..eefdd47 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/PendingOrderController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/PendingOrderController.java @@ -1,6 +1,7 @@ package com.sztzjy.forex.trading_trading.controller; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; import com.alibaba.fastjson.JSONObject; import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; import com.sztzjy.forex.trading_trading.entity.PendingOrder; @@ -80,6 +81,8 @@ public class PendingOrderController { //保存挂单 挂单保存后 将挂单ID和有效期存入redis public void insertPendingOrder(PendingOrder pendingOrder){ + String uuid = IdUtil.simpleUUID(); + pendingOrder.setPendingOrderId(uuid); pendingOrderService.insert(pendingOrder); redisUtil.set("pengingOrder_"+pendingOrder.getPendingOrderId(),pendingOrder.getValidityTime()); } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java index d3e3b72..8205338 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java @@ -3,17 +3,23 @@ package com.sztzjy.forex.trading_trading.controller; import com.alibaba.fastjson.JSONObject; import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; +import com.sztzjy.forex.trading_trading.dto.TakeStashVO; import com.sztzjy.forex.trading_trading.entity.TakeStash; -import com.sztzjy.forex.trading_trading.entity.TakeStashExample; +import com.sztzjy.forex.trading_trading.entity.mql5Entity.ForexData; import com.sztzjy.forex.trading_trading.service.TakeStashService; -import io.swagger.annotations.ApiOperation; +import com.sztzjy.forex.trading_trading.util.RedisUtil; +import com.sztzjy.forex.trading_trading.util.ResultEntity; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RestController @RequestMapping("api/takeStash") @@ -22,19 +28,24 @@ public class TakeStashController { @Autowired TakeStashService takeStashService; + @Autowired + RedisUtil redisUtil; + + @Autowired + TradingController tradingController; + //获取当前持仓表 status 0为获取当前持仓/1为挂单持仓/2为历史持仓 @AnonymousAccess @PostMapping("getTakeStashList") - public List getTakeStashList(@RequestBody JSONObject jsonObject) { - String trainingId = String.valueOf(jsonObject.get("trainingId")); - String memberId = String.valueOf(jsonObject.get("memberId")); - Integer status = (Integer) jsonObject.get("status"); - TakeStash takeStash = new TakeStash(); - takeStash.setTrainingId(trainingId); - takeStash.setMemberId(memberId); - takeStash.setStatus(status); - List takeStashList = takeStashService.findTakeStashByTrainingIdAndMemberIdAndStatus(trainingId, memberId, status); - return takeStashList; + public ResultEntity getTakeStashList(@RequestBody TakeStash takeStash) { + List takeStashList = takeStashService.findTakeStashByTrainingIdAndMemberIdAndStatus(takeStash.getTrainingId(),takeStash.getMemberId(), takeStash.getStatus()); + List takeStashVOList=new ArrayList<>(); + for (int i = 0; i < takeStashList.size(); i++) { + TakeStashVO takeStashVO=new TakeStashVO(takeStashList.get(i)); + takeStashVOList.add(takeStashVO); + } + takeStashVOList = flashProfitAndLoss(takeStashVOList).getBody().getData(); + return new ResultEntity(HttpStatus.OK, "返回持仓数据",takeStashVOList); } //根据持仓ID获取单个持仓数据 @@ -45,4 +56,92 @@ public class TakeStashController { TakeStash takeStash = takeStashService.selectByPrimaryKey(trainingId); return takeStash; } + + + //持仓盈亏和当前价格刷新 + @AnonymousAccess + @PostMapping("flashProfitAndLoss") + public ResultEntity> flashProfitAndLoss(@RequestBody List takeStashVOList){ + List takeStashVOS=new ArrayList<>(); + List forexDateList = redisUtil.get("ForexDateList"); + Map map=new HashMap<>(); + if (forexDateList.size() > 0) { + for (int i = 0; i < forexDateList.size(); i++) { + String getCode = forexDateList.get(i).getString("code"); + map.put(getCode,forexDateList.get(i)); + } + } + for (int i = 0; i < takeStashVOList.size(); i++) { + TakeStashVO takeStashVO = takeStashVOList.get(i); + String buySellType = takeStashVO.getBuySellType(); //买入或卖出 + String tradingCode = takeStashVO.getTradingCode(); //交易品种 + Double priceTransaction = takeStashVO.getPriceTransaction(); //交易价格 + Double volumeTransaction = takeStashVO.getVolumeTransaction(); //交易量 + ForexData forexData = map.get(tradingCode); + Double nowBuyPic = Double.valueOf(forexData.getString("buyPic")); //当前买价 + Double nowSellPic = Double.valueOf(forexData.getString("sellPic")); //当前卖价 + Double profitAndLoss; + if (tradingCode.startsWith("USD")) { //美元在前 + if("buy".equals(buySellType)){ //买 + profitAndLoss= (nowBuyPic-priceTransaction)*volumeTransaction*100000/nowBuyPic; + takeStashVO.setCurrentPrice(nowBuyPic); + }else { //卖 + profitAndLoss= (nowSellPic-priceTransaction)*volumeTransaction*100000/nowSellPic; + takeStashVO.setCurrentPrice(nowSellPic); + } + }else { //美元在后 + if("buy".equals(buySellType)){ //买 + profitAndLoss= (nowBuyPic-priceTransaction)*volumeTransaction*100000; + takeStashVO.setCurrentPrice(nowBuyPic); + }else { //卖 + profitAndLoss= (nowSellPic-priceTransaction)*volumeTransaction*100000; + takeStashVO.setCurrentPrice(nowSellPic); + } + } + takeStashVO.setProfitAndLoss(profitAndLoss); + takeStashVOS.add(takeStashVO); + } + return new ResultEntity(HttpStatus.OK, "持仓盈亏和当前价格刷新",takeStashVOList); + } + + //修改当前持仓 + @AnonymousAccess + @PostMapping("updateTakeStash") + public ResultEntity updateTakeStash(@RequestBody JSONObject jsonObject) { + String stashId = jsonObject.getString("stashId"); + Double stopLoss = jsonObject.getDouble("stopLoss"); + Double stopWin = jsonObject.getDouble("stopWin"); + String tradingCode = jsonObject.getString("tradingCode"); + String buySellType = jsonObject.getString("buySellType"); + ForexData forexData = tradingController.getMarketQuotationByCode(tradingCode).getBody().getData(); + if (null != stopLoss || null != stopWin) { //判断止损止赢是否合理 如果stopLoss stopWin都为null则跳过 + boolean winOrLossStopBoolean = tradingController.getWinOrLossStop(stopLoss, stopWin, buySellType, forexData); + if (winOrLossStopBoolean == false) { + return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损或获利输入错误"); + } + } + TakeStash takeStash = new TakeStash(); + takeStash.setStashId(stashId); + takeStash.setStopLoss(stopLoss); + takeStashService.updateByPrimaryKey(takeStash); + return new ResultEntity(HttpStatus.OK, "修改持仓成功"); + } + + //当前持仓平仓 status设置为2 + public ResultEntity closeTakeStash(@RequestBody JSONObject jsonObject) { + String stashId = jsonObject.getString("stashId"); + TakeStash takeStash = new TakeStash(); + takeStash.setStashId(stashId); + takeStash.setStatus(2); + takeStashService.updateByPrimaryKey(takeStash); + return new ResultEntity(HttpStatus.OK, "平仓成功"); + } + + //持仓止损止盈刷新 + + + + + + } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/TradingController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/TradingController.java index 7a3a149..e3f9753 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/TradingController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TradingController.java @@ -11,7 +11,9 @@ import com.sztzjy.forex.trading_trading.entity.mql5Entity.ForexData; import com.sztzjy.forex.trading_trading.service.MemberService; import com.sztzjy.forex.trading_trading.service.TakeStashService; import com.sztzjy.forex.trading_trading.util.RedisUtil; +import com.sztzjy.forex.trading_trading.util.ResultEntity; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -41,41 +43,61 @@ public class TradingController { @AnonymousAccess @PostMapping("getMarketQuotation") public List getMarketQuotation() { + boolean bool = redisUtil.hasKey("ForexDateList"); + if (bool == true) { + List forexDateList = redisUtil.get("ForexDateList"); + return forexDateList; + } Mql5API mql5API = new Mql5API(); List marketQuotation = mql5API.getMarketQuotation(); + redisUtil.set("ForexDateList", marketQuotation); return marketQuotation; } //根据交易类型获取实时数据 @AnonymousAccess @PostMapping("getMarketQuotationByCode") - public ForexData getMarketQuotationByCode(@RequestBody String code) { + public ResultEntity getMarketQuotationByCode(@RequestBody String code) { + boolean bool = redisUtil.hasKey("ForexDateList"); + if (bool == true) { + List forexDateList = redisUtil.get("ForexDateList"); + if (forexDateList.size() > 0) { + for (int i = 0; i < forexDateList.size(); i++) { + String getCode = forexDateList.get(i).getString("code"); + if (code.equals(getCode)) { + return new ResultEntity(HttpStatus.OK, "获取成功",forexDateList.get(i)); + } + } + } + } Mql5API mql5API = new Mql5API(); ForexData forexData = mql5API.getMarketQuotationByCode(code); - return forexData; + List marketQuotation = mql5API.getMarketQuotation(); + redisUtil.set("ForexDateList", marketQuotation); + return new ResultEntity(HttpStatus.OK, "获取成功",forexData); } //市场报价交易 交易量为1为1000美元 @AnonymousAccess @PostMapping("transactionMarketQuotation") - public JSONObject getMarketQuotation(@RequestBody JSONObject jsonObject) { - String tradingCode = String.valueOf(jsonObject.get("tradingCode")); //交易品种 - String transactionType = String.valueOf(jsonObject.get("transactionType")); //交易类型 - Double transactionVolume = (Double) jsonObject.get("transactionVolume"); //买卖手(量) - String buySellType = String.valueOf(jsonObject.get("buySellType")); //买入卖出类型 - Double stopLoss = (Double) jsonObject.get("stopLoss"); - Double stopWin = (Double) jsonObject.get("stopWin"); - String memberId = String.valueOf(jsonObject.get("memberId")); - String trainingId = jsonObject.get("trainingId").toString(); + public ResultEntity getMarketQuotation(@RequestBody JSONObject jsonObject) { + String tradingCode = jsonObject.getString("tradingCode"); //交易品种 + String transactionType = jsonObject.getString("transactionType"); //交易类型 + Double transactionVolume = jsonObject.getDouble("transactionVolume"); //买卖手(量) + String buySellType = jsonObject.getString("buySellType");//买入卖出类型 + Double stopLoss = jsonObject.getDouble("stopLoss"); + Double stopWin = jsonObject.getDouble("stopWin"); + String memberId = jsonObject.getString("memberId"); + String trainingId = jsonObject.getString("trainingId"); Member member = memberService.getMemberByMemberIdAndTrainingId(memberId, trainingId); Double availableFunds = member.getAvailableFunds(); //获取账户可用资金 - ForexData forexData = getMarketQuotationByCode(tradingCode); //获取当前买卖价格 - Double buyPic = Double.valueOf(forexData.getBuyPic()); //当前买价 - Double sellPic = Double.valueOf(forexData.getSellPic()); + ForexData forexData = getMarketQuotationByCode(tradingCode).getBody().getData(); //获取当前买卖价格 + Double buyPic = Double.valueOf(forexData.getString("buyPic"));//当前买价 + Double sellPic = Double.valueOf(forexData.getString("sellPic"));//当前买价 if (null != stopLoss || null != stopWin) { //判断止损止赢是否合理 如果stopLoss stopWin都为null则跳过 boolean winOrLossStopBoolean = getWinOrLossStop(stopLoss, stopWin, buySellType, forexData); if (winOrLossStopBoolean == false) { - return JSONObject.parseObject("止损或获利输入错误"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损或获利输入错误"); } } @@ -83,7 +105,7 @@ public class TradingController { if (transactionType.equals("sjkc")) {//市价开仓 if (tradingCode.startsWith("USD")) { //美元在前 if (availableFunds < transactionVolume * 1000) { //判断可用资金是否足够 - return JSONObject.parseObject("可用资金不足"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); } if ("buy".equals(buySellType)) { TakeStash takeStash = returnTakeStash(memberId, trainingId, tradingCode, buySellType, transactionVolume, buyPic, stopLoss, stopWin); @@ -97,14 +119,14 @@ public class TradingController { } else { //美元在后 使用可用资金表达式为 买卖手*1000*卖/买价 判断可用资金是否足够 先判断是买还是卖 if ("buy".equals(buySellType)) { if (availableFunds < transactionVolume * 1000 * buyPic) { - return JSONObject.parseObject("可用资金不足"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); } TakeStash takeStash = returnTakeStash(memberId, trainingId, tradingCode, buySellType, transactionVolume, buyPic, stopLoss, stopWin); takeStashService.insertTakeStash(takeStash); availableFunds = availableFunds - transactionVolume * 1000 * buyPic; } else if ("sell".equals(buySellType)) { if (availableFunds < transactionVolume * 1000 * sellPic) { - return JSONObject.parseObject("可用资金不足"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); } TakeStash takeStash = returnTakeStash(memberId, trainingId, tradingCode, buySellType, transactionVolume, sellPic, stopLoss, stopWin); takeStashService.insertTakeStash(takeStash); @@ -113,65 +135,36 @@ public class TradingController { updateMemberAvailableFundsAndMarginUsed(member, availableFunds); } } else if (transactionType.equals("gdkc")) {//挂单开仓 生成的数据为挂单数据 挂单数据生效 判断可用资金是否充足 - Double priceCommission = (Double) jsonObject.get("priceCommission"); //获取用户输入的价位 - Date validityTime = (Date) jsonObject.get("validityTime"); //获取挂单有效期 + Double priceCommission = jsonObject.getDouble("priceCommission");//获取用户输入的价位 + Date validityTime = jsonObject.getDate("validityTime"); //获取挂单有效期 if ("buyLimit".equals(buySellType)) { //限价买进(低价买进) 下单时买入价低于当前买价 if (priceCommission >= buyPic) { - return JSONObject.parseObject("限价买进价位不能高于当前买价"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "限价买进价位不能高于当前买价"); } } if ("sellLimit".equals(buySellType)) {//限价卖出(高价卖出) 下单时卖出价高于当前卖价 if (priceCommission <= sellPic) { - return JSONObject.parseObject("限价卖出价位不能低于当前卖价"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "限价卖出价位不能低于当前卖价"); } } if ("buyStop".equals(buySellType)) {//止损买进(高价买进) 下单时买入价格高于当前买价 if (priceCommission <= buyPic) { - return JSONObject.parseObject("止损买进价位不能低于当前买价"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损买进价位不能低于当前买价"); } } if ("sellStop".equals(buySellType)) {//止损卖出(低价卖出)下单时卖出价格低于当前卖价 if (priceCommission >= sellPic) { - return JSONObject.parseObject("止损卖出价位不能高于当前卖价"); + return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损卖出价位不能高于当前卖价"); } } PendingOrder pendingOrder = pendingOrderController.returnPendingOrder(memberId, trainingId, tradingCode, buySellType, transactionVolume, priceCommission, stopLoss, stopWin, validityTime); pendingOrderController.insertPendingOrder(pendingOrder);//保存挂单 } - JSONObject returnJson = JSONObject.parseObject("error"); - return returnJson; - } - - //修改当前持仓 - @AnonymousAccess - @PostMapping("updateTakeStash") - public JSONObject updateTakeStash(@RequestBody JSONObject jsonObject) { - String stashId = String.valueOf(jsonObject.get("stashId")); - Double stopLoss = (Double) jsonObject.get("stopLoss"); - Double stopWin = (Double) jsonObject.get("stopWin"); - String tradingCode = String.valueOf(jsonObject.get("tradingCode")); - String buySellType = String.valueOf(jsonObject.get("buySellType")); - ForexData forexData = getMarketQuotationByCode(tradingCode); - if (null != stopLoss || null != stopWin) { //判断止损止赢是否合理 如果stopLoss stopWin都为null则跳过 - boolean winOrLossStopBoolean = getWinOrLossStop(stopLoss, stopWin, buySellType, forexData); - if (winOrLossStopBoolean == false) { - return JSONObject.parseObject("止损或获利输入错误"); - } - } - TakeStash takeStash = new TakeStash(); - takeStash.setStashId(stashId); - takeStash.setStopLoss(stopLoss); - takeStashService.updateByPrimaryKey(takeStash); - return JSONObject.parseObject("修改持仓成功"); + return new ResultEntity(HttpStatus.OK, "交易成功"); } - //当前持仓平仓 status设置为2 - public JSONObject pingcangTakeStash(@RequestBody JSONObject jsonObject) { - return null; - } - //返回持仓对象 private TakeStash returnTakeStash(String memberId, String trainingId, String tradingCode, String buySellType, Double transactionVolume, Double buyOrSellPic, Double stopLoss, Double stopWin) { @@ -201,7 +194,7 @@ public class TradingController { } //判断止损止赢 逻辑:如果方式为买 则止损低于买价 获利高于买价 / 如果方式为卖 则止损高于卖价 获利低于买价 (可以只传一个参数) - private boolean getWinOrLossStop(Double stopLoss, Double stopWin, String buySellType, ForexData forexData) { + public boolean getWinOrLossStop(Double stopLoss, Double stopWin, String buySellType, ForexData forexData) { if ("buy".equals(buySellType)) { Double buyPic = Double.valueOf(forexData.getBuyPic()); //判断stopLoss 和stopWin 是否为空 diff --git a/src/main/java/com/sztzjy/forex/trading_trading/controller/UserController.java b/src/main/java/com/sztzjy/forex/trading_trading/controller/UserController.java index 6b9e59a..475a74d 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/controller/UserController.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/UserController.java @@ -1,7 +1,6 @@ package com.sztzjy.forex.trading_trading.controller; -import com.sun.org.apache.regexp.internal.RE; import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; import com.sztzjy.forex.trading_trading.annotation.OperateLog; import com.sztzjy.forex.trading_trading.config.security.JwtUser; diff --git a/src/main/java/com/sztzjy/forex/trading_trading/dto/TakeStashVO.java b/src/main/java/com/sztzjy/forex/trading_trading/dto/TakeStashVO.java new file mode 100644 index 0000000..3ff2e3b --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/dto/TakeStashVO.java @@ -0,0 +1,60 @@ +package com.sztzjy.forex.trading_trading.dto; + +import com.sztzjy.forex.trading_trading.entity.TakeStash; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +@Data +@Getter +@Setter +public class TakeStashVO { + + public TakeStashVO() { + // 无参数的默认构造函数 + } + + public TakeStashVO(TakeStash takeStash){ + this.stashId = takeStash.getStashId(); + this.memberId = takeStash.getMemberId(); + this.trainingId = takeStash.getTrainingId(); + this.tradingCode = takeStash.getTradingCode(); + this.orderNumber = takeStash.getOrderNumber(); + this.buySellType = takeStash.getBuySellType(); + this.volumeTransaction = takeStash.getVolumeTransaction(); + this.priceTransaction = takeStash.getPriceTransaction(); + this.stopLoss = takeStash.getStopLoss(); + this.stopWin = takeStash.getStopWin(); + this.timeTransaction = takeStash.getTimeTransaction(); + this.status = takeStash.getStatus(); + } + private String stashId; + + private String memberId; + + private String trainingId; + + private String tradingCode; + + private String orderNumber; + + private String buySellType; + + private Double volumeTransaction; + + private Double priceTransaction; + + private Double stopLoss; + + private Double stopWin; + + private Date timeTransaction; + + private Integer status; + + private Double currentPrice; + + private Double profitAndLoss; +} diff --git a/src/main/java/com/sztzjy/forex/trading_trading/entity/TakeStash.java b/src/main/java/com/sztzjy/forex/trading_trading/entity/TakeStash.java index 15c259f..a6dfb85 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/entity/TakeStash.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/entity/TakeStash.java @@ -1,7 +1,14 @@ package com.sztzjy.forex.trading_trading.entity; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + import java.util.Date; +@Data +@Getter +@Setter public class TakeStash { /** * diff --git a/src/main/java/com/sztzjy/forex/trading_trading/mappers/TakeStashMapper.java b/src/main/java/com/sztzjy/forex/trading_trading/mappers/TakeStashMapper.java index fa101cd..4d2a779 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/mappers/TakeStashMapper.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/mappers/TakeStashMapper.java @@ -9,6 +9,8 @@ import org.apache.ibatis.annotations.Param; @Mapper public interface TakeStashMapper { + + List selectByTakeStash(TakeStash takeStash); /** * This method was generated by MyBatis Generator. * This method corresponds to the database table sys_take_stash diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java index b4d79e8..096c878 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/MemberService.java @@ -135,4 +135,12 @@ public class MemberService { public List> classScoreTrend(Integer schoolId) { return memberMapper.classScoreTrend(schoolId); } + + public Member selectByNameAndSchoolIdAndTrainingID(String name,Integer schoolId,String trainingId){ + MemberExample example=new MemberExample(); + MemberExample.Criteria criteria = example.createCriteria(); + criteria.andSchoolIdEqualTo(schoolId).andNameEqualTo(name).andTrainingIdEqualTo(trainingId); + List members = memberMapper.selectByExample(example); + return members.get(0); + } } diff --git a/src/main/java/com/sztzjy/forex/trading_trading/service/TakeStashService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/TakeStashService.java index e60feec..4df9664 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/TakeStashService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/TakeStashService.java @@ -1,5 +1,6 @@ package com.sztzjy.forex.trading_trading.service; +import cn.hutool.core.util.IdUtil; import com.sztzjy.forex.trading_trading.entity.MemberExample; import com.sztzjy.forex.trading_trading.entity.TakeStash; import com.sztzjy.forex.trading_trading.entity.TakeStashExample; @@ -15,9 +16,15 @@ public class TakeStashService { TakeStashMapper takeStashMapper; public void insertTakeStash(TakeStash takeStash){ + takeStash.setStashId(IdUtil.simpleUUID()); takeStashMapper.insert(takeStash); } + public List selectByTakeStash(TakeStash takeStash){ + List takeStashes = takeStashMapper.selectByTakeStash(takeStash); + return takeStashes; + } + public List findTakeStashByTrainingIdAndMemberIdAndStatus(String trainingId, String memberId, Integer status) { TakeStashExample example=new TakeStashExample(); TakeStashExample.Criteria criteria = example.createCriteria(); diff --git a/src/main/java/com/sztzjy/forex/trading_trading/task/redisTask.java b/src/main/java/com/sztzjy/forex/trading_trading/task/redisTask.java new file mode 100644 index 0000000..7595c8d --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/task/redisTask.java @@ -0,0 +1,27 @@ +package com.sztzjy.forex.trading_trading.task; + +import com.sztzjy.forex.trading_trading.common.mql5API.Mql5API; +import com.sztzjy.forex.trading_trading.entity.mql5Entity.ForexData; +import com.sztzjy.forex.trading_trading.util.RedisUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@EnableScheduling +public class redisTask { + @Autowired + RedisUtil redisUtil; + + @Scheduled(fixedDelay = 1278000) // 每隔1278秒执行一次 + public void doTask() { + System.out.println("!!!!"); + Mql5API mql5API = new Mql5API(); + List marketQuotation = mql5API.getMarketQuotation(); + redisUtil.set("ForexDateList", marketQuotation); + } + +} diff --git a/src/main/resources/com/mappers/TrainingMapper.xml b/src/main/resources/com/mappers/TrainingMapper.xml deleted file mode 100644 index 08421f4..0000000 --- a/src/main/resources/com/mappers/TrainingMapper.xml +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - - training_id, people_count, start_time, end_time, status, creator_id, create_school, - training_name, creator_name, create_time, update_time, school_id - - - - - - delete from sys_training - where training_id = #{trainingId,jdbcType=VARCHAR} - - - - delete from sys_training - - - - - - - insert into sys_training (training_id, people_count, start_time, - end_time, status, creator_id, - create_school, training_name, creator_name, - create_time, update_time, school_id - ) - values (#{trainingId,jdbcType=VARCHAR}, #{peopleCount,jdbcType=INTEGER}, #{startTime,jdbcType=VARCHAR}, - #{endTime,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{creatorId,jdbcType=INTEGER}, - #{createSchool,jdbcType=VARCHAR}, #{trainingName,jdbcType=VARCHAR}, #{creatorName,jdbcType=VARCHAR}, - #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{schoolId,jdbcType=INTEGER} - ) - - - - insert into sys_training - - - training_id, - - - people_count, - - - start_time, - - - end_time, - - - status, - - - creator_id, - - - create_school, - - - training_name, - - - creator_name, - - - create_time, - - - update_time, - - - school_id, - - - - - #{trainingId,jdbcType=VARCHAR}, - - - #{peopleCount,jdbcType=INTEGER}, - - - #{startTime,jdbcType=VARCHAR}, - - - #{endTime,jdbcType=VARCHAR}, - - - #{status,jdbcType=VARCHAR}, - - - #{creatorId,jdbcType=INTEGER}, - - - #{createSchool,jdbcType=VARCHAR}, - - - #{trainingName,jdbcType=VARCHAR}, - - - #{creatorName,jdbcType=VARCHAR}, - - - #{createTime,jdbcType=TIMESTAMP}, - - - #{updateTime,jdbcType=TIMESTAMP}, - - - #{schoolId,jdbcType=INTEGER}, - - - - - - - update sys_training - - - training_id = #{record.trainingId,jdbcType=VARCHAR}, - - - people_count = #{record.peopleCount,jdbcType=INTEGER}, - - - start_time = #{record.startTime,jdbcType=VARCHAR}, - - - end_time = #{record.endTime,jdbcType=VARCHAR}, - - - status = #{record.status,jdbcType=VARCHAR}, - - - creator_id = #{record.creatorId,jdbcType=INTEGER}, - - - create_school = #{record.createSchool,jdbcType=VARCHAR}, - - - training_name = #{record.trainingName,jdbcType=VARCHAR}, - - - creator_name = #{record.creatorName,jdbcType=VARCHAR}, - - - create_time = #{record.createTime,jdbcType=TIMESTAMP}, - - - update_time = #{record.updateTime,jdbcType=TIMESTAMP}, - - - school_id = #{record.schoolId,jdbcType=INTEGER}, - - - - - - - - - update sys_training - set training_id = #{record.trainingId,jdbcType=VARCHAR}, - people_count = #{record.peopleCount,jdbcType=INTEGER}, - start_time = #{record.startTime,jdbcType=VARCHAR}, - end_time = #{record.endTime,jdbcType=VARCHAR}, - status = #{record.status,jdbcType=VARCHAR}, - creator_id = #{record.creatorId,jdbcType=INTEGER}, - create_school = #{record.createSchool,jdbcType=VARCHAR}, - training_name = #{record.trainingName,jdbcType=VARCHAR}, - creator_name = #{record.creatorName,jdbcType=VARCHAR}, - create_time = #{record.createTime,jdbcType=TIMESTAMP}, - update_time = #{record.updateTime,jdbcType=TIMESTAMP}, - school_id = #{record.schoolId,jdbcType=INTEGER} - - - - - - - update sys_training - - - people_count = #{peopleCount,jdbcType=INTEGER}, - - - start_time = #{startTime,jdbcType=VARCHAR}, - - - end_time = #{endTime,jdbcType=VARCHAR}, - - - status = #{status,jdbcType=VARCHAR}, - - - creator_id = #{creatorId,jdbcType=INTEGER}, - - - create_school = #{createSchool,jdbcType=VARCHAR}, - - - training_name = #{trainingName,jdbcType=VARCHAR}, - - - creator_name = #{creatorName,jdbcType=VARCHAR}, - - - create_time = #{createTime,jdbcType=TIMESTAMP}, - - - update_time = #{updateTime,jdbcType=TIMESTAMP}, - - - school_id = #{schoolId,jdbcType=INTEGER}, - - - where training_id = #{trainingId,jdbcType=VARCHAR} - - - - update sys_training - set people_count = #{peopleCount,jdbcType=INTEGER}, - start_time = #{startTime,jdbcType=VARCHAR}, - end_time = #{endTime,jdbcType=VARCHAR}, - status = #{status,jdbcType=VARCHAR}, - creator_id = #{creatorId,jdbcType=INTEGER}, - create_school = #{createSchool,jdbcType=VARCHAR}, - training_name = #{trainingName,jdbcType=VARCHAR}, - creator_name = #{creatorName,jdbcType=VARCHAR}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP}, - school_id = #{schoolId,jdbcType=INTEGER} - where training_id = #{trainingId,jdbcType=VARCHAR} - - \ No newline at end of file diff --git a/src/main/resources/mappers/TakeStashMapper.xml b/src/main/resources/mappers/TakeStashMapper.xml index e381a0d..916954b 100644 --- a/src/main/resources/mappers/TakeStashMapper.xml +++ b/src/main/resources/mappers/TakeStashMapper.xml @@ -116,6 +116,7 @@ order by ${orderByClause} +