Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/sztzjy/forex/trading_trading/entity/Member.java
#	src/main/java/com/sztzjy/forex/trading_trading/entity/MemberExample.java
#	src/main/java/com/sztzjy/forex/trading_trading/mappers/MemberMapper.java
#	src/main/resources/mappers/MemberMapper.xml
pull/1/head
xiaoCJ 2 years ago
commit 860680b6be

@ -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<ForexData> 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<ForexData> 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;
}
}

@ -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<ForexData> getMarketQuotation() {
Mql5API mql5API = new Mql5API();
List<ForexData> 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<transactionVolume*1000){
return JSONObject.parseObject("可用资金不足");
}else {
//获取当前买卖价格
ForexData forexData = getMarketQuotationByCode(code);
if (buySellType.equals("buy")) {
String buyPic = forexData.getBuyPic();
} else if (buySellType.equals("sell")) {
String sellPic = forexData.getSellPic();
}
availableFunds=availableFunds-transactionVolume*1000;
member.setAvailableFunds(availableFunds);
//获取当前已用保证金
Double marginUsed = member.getMarginUsed();
member.setMarginUsed(marginUsed+availableFunds);
}
//美元在后
} else {
}
//买入
//卖出
} else if (transactionType.equals("gdkc")) {//挂单开仓
//限价买进
//限价卖出
//止损买进
//止损卖出
} else {
JSONObject returnJson = JSONObject.parseObject("error");
return returnJson;
}
return null;
}
}

@ -11,7 +11,7 @@ import java.util.List;
@Setter
@Data
//外汇汇率实例
public class ExchangeFrateEntity extends JSONObject {
public class ExchangeFrateEntity extends JSONObject{
private int error_code;
private String resultcode;
private String reason;

@ -0,0 +1,27 @@
package com.sztzjy.forex.trading_trading.entity.mql5Entity;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Data
public class ForexData extends JSONObject {
private String buyPic;
private String closePri;
private String code;
private String color;
private String currency;
private String datatime;
private String date;
private String diffAmo;
private String diffPer;
private String highPic;
private String lowPic;
private String openPri;
private String range;
private String sellPic;
private String yesPic;
}

@ -0,0 +1,24 @@
package com.sztzjy.forex.trading_trading.service;
import com.sztzjy.forex.trading_trading.entity.Member;
import com.sztzjy.forex.trading_trading.entity.MemberExample;
import com.sztzjy.forex.trading_trading.mappers.MemberMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MemberService {
@Autowired
MemberMapper memberMapper;
public Member getMemberByMemberIdAndTrainingId(Integer memberId,Integer trainingId){
MemberExample example = new MemberExample();
MemberExample.Criteria criteria = example.createCriteria();
criteria.andMemberIdEqualTo(memberId);
criteria.andTrainingIdEqualTo(trainingId);
List<Member> members = memberMapper.selectByExample(example);
return members.get(0);
}
}

@ -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

Loading…
Cancel
Save