From 422c0105235a7eb4f7f1d2337beb4517c7162430 Mon Sep 17 00:00:00 2001 From: yz <3614508250@qq.com> Date: Fri, 30 Jun 2023 15:57:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96member?= =?UTF-8?q?=E8=B5=84=E4=BA=A7=20=E6=8C=81=E4=BB=93=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E3=80=81=E4=BF=AE=E6=94=B9=20=20=E5=B8=82?= =?UTF-8?q?=E4=BB=B7=E5=BC=80=E4=BB=93=E4=BA=A4=E6=98=93=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/MemberController.java | 26 ++++ .../controller/TakeStashController.java | 48 +++++++ .../controller/TradingController.java | 125 ++++++++++++++---- .../service/MemberService.java | 5 + .../service/TakeStashService.java | 22 ++- 5 files changed, 202 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java create mode 100644 src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java 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 new file mode 100644 index 0000000..370ec91 --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/MemberController.java @@ -0,0 +1,26 @@ +package com.sztzjy.forex.trading_trading.controller; + +import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; +import com.sztzjy.forex.trading_trading.entity.Member; +import com.sztzjy.forex.trading_trading.service.MemberService; +import org.springframework.beans.factory.annotation.Autowired; +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; + + +@RestController +@RequestMapping("api/member") +public class MemberController { + + @Autowired + MemberService memberService; + + @AnonymousAccess + @PostMapping("getMember") + public Member getMember(@RequestBody String memberId){ + Member member = memberService.selectByPrimaryKey(memberId); + return member; + } +} 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 new file mode 100644 index 0000000..d3e3b72 --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/controller/TakeStashController.java @@ -0,0 +1,48 @@ +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.entity.TakeStash; +import com.sztzjy.forex.trading_trading.entity.TakeStashExample; +import com.sztzjy.forex.trading_trading.service.TakeStashService; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +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.List; + +@RestController +@RequestMapping("api/takeStash") +public class TakeStashController { + + @Autowired + TakeStashService takeStashService; + + //获取当前持仓表 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; + } + + //根据持仓ID获取单个持仓数据 + @AnonymousAccess + @PostMapping("getTakeStash") + public TakeStash getTakeStash(@RequestBody JSONObject jsonObject) { + String trainingId = String.valueOf(jsonObject.get("trainingId")); + TakeStash takeStash = takeStashService.selectByPrimaryKey(trainingId); + return takeStash; + } +} 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 1307f04..f8b70bb 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 @@ -2,29 +2,20 @@ package com.sztzjy.forex.trading_trading.controller; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.PageHelper; import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; import com.sztzjy.forex.trading_trading.common.mql5API.Mql5API; import com.sztzjy.forex.trading_trading.entity.Member; import com.sztzjy.forex.trading_trading.entity.TakeStash; -import com.sztzjy.forex.trading_trading.entity.mql5Entity.ExchangeFrateEntity; 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 io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; 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.math.BigDecimal; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.Date; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; //学生端 交易 @RestController @@ -57,19 +48,28 @@ public class TradingController { //市场报价交易 交易量为1为1000美元 @AnonymousAccess - @PostMapping("TransactionMarketQuotation") + @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")); //买入卖出类型 - String stopLoss = String.valueOf(jsonObject.get("stopLoss")); - String stopWin = String.valueOf(jsonObject.get("stopWin")); + 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(); + String trainingId = jsonObject.get("trainingId").toString(); Member member = memberService.getMemberByMemberIdAndTrainingId(memberId, trainingId); Double availableFunds = member.getAvailableFunds(); //获取账户可用资金 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("止损或获利输入错误"); + } + } + + //如果方式为卖 则止损高于卖价 获利低于买价 if (transactionType.equals("sjkc")) {//市价开仓 if (tradingCode.startsWith("USD")) { //美元在前 if (availableFunds < transactionVolume * 1000) { //判断可用资金是否足够 @@ -85,26 +85,26 @@ public class TradingController { takeStashService.insertTakeStash(takeStash); } availableFunds = availableFunds - transactionVolume * 1000; - updateMemberAvailableFundsAndMarginUsed(member,availableFunds); + updateMemberAvailableFundsAndMarginUsed(member, availableFunds); } else { //美元在后 使用可用资金表达式为 买卖手*1000*卖/买价 判断可用资金是否足够 先判断是买还是卖 if ("buy".equals(buySellType)) { Double buyPic = Double.valueOf(forexData.getBuyPic()); - if(availableFunds buyPic) { + return true; + } + return false; + } + if (null == stopLoss) { + if (stopWin > buyPic) { + return true; + } + return false; + } + if (null == stopWin) { + if (stopLoss < buyPic) { + return true; + } + return false; + } + + } else if ("sell".equals(buySellType)) { + Double sellPic = Double.valueOf(forexData.getSellPic()); + if(null!=stopLoss && null!=stopWin){ + if (stopLoss > sellPic && stopWin < sellPic) { + return true; + } + return false; + } + if (null == stopLoss) { + if(stopWin sellPic){ + return true; + } + return false; + } + } + return false; + } + } 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 59904fb..d7c945a 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 @@ -25,4 +25,9 @@ public class MemberService { public void updateByPrimaryKey(Member member){ memberMapper.updateByPrimaryKey(member); } + + public Member selectByPrimaryKey(String memberId){ + Member member = memberMapper.selectByPrimaryKey(memberId); + return member; + } } 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 963fe44..e60feec 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 @@ -2,16 +2,36 @@ package com.sztzjy.forex.trading_trading.service; import com.sztzjy.forex.trading_trading.entity.MemberExample; import com.sztzjy.forex.trading_trading.entity.TakeStash; +import com.sztzjy.forex.trading_trading.entity.TakeStashExample; import com.sztzjy.forex.trading_trading.mappers.TakeStashMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class TakeStashService { @Autowired TakeStashMapper takeStashMapper; public void insertTakeStash(TakeStash takeStash){ - int insert = takeStashMapper.insert(takeStash); + takeStashMapper.insert(takeStash); + } + + public List findTakeStashByTrainingIdAndMemberIdAndStatus(String trainingId, String memberId, Integer status) { + TakeStashExample example=new TakeStashExample(); + TakeStashExample.Criteria criteria = example.createCriteria(); + criteria.andMemberIdEqualTo(memberId).andTrainingIdEqualTo(trainingId).andStatusEqualTo(status); + List takeStashes = takeStashMapper.selectByExample(example); + return takeStashes; + } + + public TakeStash selectByPrimaryKey(String stashId){ + TakeStash takeStash = takeStashMapper.selectByPrimaryKey(stashId); + return takeStash; + } + + public void updateByPrimaryKey(TakeStash takeStash){ + takeStashMapper.updateByPrimaryKey(takeStash); } }