diff --git a/src/main/java/com/sztzjy/forex/trading_trading/common/mql5API/Mql5API.java b/src/main/java/com/sztzjy/forex/trading_trading/common/mql5API/Mql5API.java index c758a91..7afd1e6 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/common/mql5API/Mql5API.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/common/mql5API/Mql5API.java @@ -1,13 +1,20 @@ package com.sztzjy.forex.trading_trading.common.mql5API; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.sztzjy.forex.trading_trading.entity.mql5Entity.CurrencyEntity; import com.sztzjy.forex.trading_trading.entity.mql5Entity.ExchangeFrateEntity; +import com.sztzjy.forex.trading_trading.entity.mql5Entity.ForexData; import com.sztzjy.forex.trading_trading.entity.mql5Entity.RmbquotEntity; import com.sztzjy.forex.trading_trading.util.HttpUtils; +import org.apache.commons.lang3.StringUtils; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; public class Mql5API { @@ -63,4 +70,46 @@ public class Mql5API { } } + //查询外汇汇率 返回ForexData对象 + public List getMarketQuotation() { + try { + String returnStr = HttpUtils.sendGet(ExchangeFrateAddr); + JSONObject jsonObject = JSONObject.parseObject(returnStr); + JSONArray jsonArray = (JSONArray) jsonObject.get("result"); + JSONObject dataObject = jsonArray.getJSONObject(0); + ObjectMapper objectMapper = new ObjectMapper(); + List forexDataList = new ArrayList<>(); + for (String key : dataObject.keySet()) { + String value = dataObject.getString(key); + ForexData forexData = objectMapper.readValue(value, ForexData.class); + forexDataList.add(forexData); + } + return forexDataList; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + //根据code查询外汇汇率 + public ForexData getMarketQuotationByCode(String code) { + try { + String returnStr = HttpUtils.sendGet(ExchangeFrateAddr); + JSONObject jsonObject = JSONObject.parseObject(returnStr); + JSONArray jsonArray = (JSONArray) jsonObject.get("result"); + JSONObject dataObject = jsonArray.getJSONObject(0); + ObjectMapper objectMapper = new ObjectMapper(); + for (String key : dataObject.keySet()) { + String value = dataObject.getString(key); + ForexData forexData = objectMapper.readValue(value, ForexData.class); + if(forexData.getCode().equals(code)){ + return forexData; + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } 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 cfe5bc5..41d5455 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 @@ -1,33 +1,109 @@ package com.sztzjy.forex.trading_trading.controller; 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.mql5Entity.ExchangeFrateEntity; +import com.sztzjy.forex.trading_trading.entity.mql5Entity.ForexData; +import com.sztzjy.forex.trading_trading.service.MemberService; +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.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + //学生端 交易 @RestController @RequestMapping("api/trading") public class TradingController { + @Autowired + MemberService memberService; + //获取市场报价 @AnonymousAccess @PostMapping("getMarketQuotation") - public JSONObject getMarketQuotation(){ - Mql5API mql5API=new Mql5API(); - ExchangeFrateEntity exchangeFrate = mql5API.getExchangeFrate(); - return exchangeFrate; + public List getMarketQuotation() { + Mql5API mql5API = new Mql5API(); + List marketQuotation = mql5API.getMarketQuotation(); + return marketQuotation; + } + + //根据交易类型获取实时数据 + @AnonymousAccess + @PostMapping("getMarketQuotationByCode") + public ForexData getMarketQuotationByCode(@RequestBody String code) { + Mql5API mql5API = new Mql5API(); + ForexData forexData = mql5API.getMarketQuotationByCode(code); + return forexData; } - //市场报价交易 + //市场报价交易 交易量为1为1000美元 @AnonymousAccess @PostMapping("TransactionMarketQuotation") - public JSONObject getMarketQuotation(JSONObject jsonObject){ - Mql5API mql5API=new Mql5API(); - ExchangeFrateEntity exchangeFrate = mql5API.getExchangeFrate(); - return exchangeFrate; + public JSONObject getMarketQuotation(@RequestBody JSONObject jsonObject) { + //交易品种 + String code = String.valueOf(jsonObject.get("code")); + //交易类型 + String transactionType = String.valueOf(jsonObject.get("transactionType")); + //买卖手(量) + Double transactionVolume = (Double) jsonObject.get("transactionVolume"); + //买入卖出类型 + String buySellType = String.valueOf(jsonObject.get("buySellType")); + //获取账户资金 调用member表中的 + Integer memberId = (Integer) jsonObject.get("memberId"); + Integer trainingId = (Integer) jsonObject.get("trainingId"); + Member member = memberService.getMemberByMemberIdAndTrainingId(memberId, trainingId); + Double availableFunds = member.getAvailableFunds(); + if (transactionType.equals("sjkc")) {//市价开仓 + //美元在前 + if (code.startsWith("USD")) { + //判断可用资金是否足够 + if(availableFunds members = memberMapper.selectByExample(example); + return members.get(0); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 0d6bbf6..a767496 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -75,7 +75,7 @@ spring: mybatis: type-aliases-package: com.sztzjy.forex.trading_trading.entity - mapper-locations: classpath*:mapper/*.xml + mapper-locations: classpath*:/mappers/*.xml swagger: enable: true