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 fc22d1f..505d369 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 @@ -7,7 +7,9 @@ import com.sztzjy.forex.trading_trading.annotation.AnonymousAccess; import com.sztzjy.forex.trading_trading.entity.PendingOrder; import com.sztzjy.forex.trading_trading.service.PendingOrderService; 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; @@ -29,7 +31,7 @@ public class PendingOrderController { //查询挂单数据 @AnonymousAccess @PostMapping("getPendingOrder") - public List getPendingOrder(@RequestBody JSONObject jsonObject){ + public ResultEntity> getPendingOrder(@RequestBody JSONObject jsonObject){ String trainingId = String.valueOf(jsonObject.get("trainingId")); String memberId = String.valueOf(jsonObject.get("memberId")); PendingOrder pendingOrder=new PendingOrder(); @@ -37,17 +39,19 @@ public class PendingOrderController { pendingOrder.setTrainingId(trainingId); pendingOrder.setMemberId(memberId); List pendingOrders = pendingOrderService.selectByExample(pendingOrder); - return pendingOrders; + return new ResultEntity(HttpStatus.OK, "获取挂单数据成功",pendingOrders); } //撤单 撤单成功后 根据pendingOrderId删除redis键 - public JSONObject cancelOrder(@RequestBody String pendingOrderId){ + @AnonymousAccess + @PostMapping("cancelOrder") + public ResultEntity cancelOrder(@RequestBody String pendingOrderId){ PendingOrder pendingOrder=new PendingOrder(); pendingOrder.setPendingOrderId(pendingOrderId); - pendingOrder.setStatus(0); + pendingOrder.setStatus(1); pendingOrderService.cancelOrder(pendingOrder); redisUtil.del("pengingOrder_"+pendingOrder.getPendingOrderId()); - return JSONObject.parseObject("撤单成功"); + return new ResultEntity(HttpStatus.OK, "撤单成功"); } //挂单自动撤单(到期自动撤单) 扫描redis pengingOrder_id 进行自动撤单 @@ -59,6 +63,8 @@ public class PendingOrderController { } } + //挂单自动开仓 + //返回挂单对象 public PendingOrder returnPendingOrder(String memberId, String trainingId, String tradingCode,String currencyName, String buySellType, Double transactionVolume, Double priceCommission, Double stopLoss, Double stopWin,Date validityTime) { Date now = new Date(); 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 ad9d1e0..651d1ec 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 @@ -69,7 +69,7 @@ public class TakeStashController { List takeStashVOS=new ArrayList<>(); for (int i = 0; i < takeStashVOList.size(); i++) { TakeStashVO takeStashVO = takeStashVOList.get(i); - if(1!=takeStashVO.getStatus()){ + if(0!=takeStashVO.getStatus()){ continue; } String buySellType = takeStashVO.getBuySellType(); //买入或卖出 @@ -116,16 +116,21 @@ public class TakeStashController { String tradingCode = jsonObject.getString("tradingCode"); String buySellType = jsonObject.getString("buySellType"); ForexMarketData forexData = tradingController.getMarketQuotationByCode(tradingCode).getBody().getData(); + TakeStash takeStash = new TakeStash(); + takeStash.setStashId(stashId); if (null != stopLoss || null != stopWin) { //判断止损止赢是否合理 如果stopLoss stopWin都为null则跳过 boolean winOrLossStopBoolean = tradingController.getWinOrLossStop(stopLoss, stopWin, buySellType, forexData); if (winOrLossStopBoolean == false) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损或获利输入错误"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "止损或获利输入错误"); + } + if (null!=stopLoss){ + takeStash.setStopLoss(stopLoss); + } + if( null != stopWin){ + takeStash.setStopWin(stopWin); } } - TakeStash takeStash = new TakeStash(); - takeStash.setStashId(stashId); - takeStash.setStopLoss(stopLoss); - takeStashService.updateByPrimaryKey(takeStash); + takeStashService.updateWinLossByPrimaryKey(takeStash); return new ResultEntity(HttpStatus.OK, "修改持仓成功"); } @@ -168,17 +173,21 @@ public class TakeStashController { member.setMarginUsed(marginUsed); Integer closingTrades = member.getClosingTrades(); member.setClosingTrades(closingTrades++); - memberService.updateByPrimaryKey(member); + memberService.updateByPrimaryKeySelective(member); TakeStash takeStash = new TakeStash(); takeStash.setStashId(stashId); takeStash.setStatus(2); takeStash.setProfitAndLossByClose(backFund- tradingMargin); //盈亏=返还资金-进仓时使用的保证金 - takeStashService.updateByPrimaryKey(takeStash); + takeStashService.updateByPrimaryKeySelective(takeStash); return new ResultEntity(HttpStatus.OK, "平仓成功"); } - //持仓止损止盈刷新 + //监听止损止盈 根据code获取当前买卖价格 如果价格高于/低于止损止盈 则按照止损止盈的值进行平仓 + //获取持仓表中所有状态为0 且止损和止盈部为空的所有数据 获取当前价位如果 + public void monitorStopLossProfit(){ +// takeStashService. + } //根据tradingCode获取ForexMarketData对象 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 1696a53..fc47881 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 @@ -99,14 +99,14 @@ public class TradingController { if (null != stopLoss || null != stopWin) { //判断止损止赢是否合理 如果stopLoss stopWin都为null则跳过 boolean winOrLossStopBoolean = getWinOrLossStop(stopLoss, stopWin, buySellType, forexData); if (winOrLossStopBoolean == false) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损或获利输入错误"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "止损或获利输入错误"); } } //如果方式为卖 则止损高于卖价 获利低于买价 if (transactionType.equals("sjkc")) {//市价开仓 if (tradingCode.startsWith("USD")) { //美元在前 if (availableFunds < transactionVolume * 1000) { //判断可用资金是否足够 - return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "可用资金不足"); } margin=transactionVolume * 1000; //所需保证金 availableFunds = availableFunds - margin; @@ -121,7 +121,7 @@ public class TradingController { } else { //美元在后 使用可用资金表达式为 买卖手*1000*卖/买价 判断可用资金是否足够 先判断是买还是卖 if ("buy".equals(buySellType)) { if (availableFunds < transactionVolume * 1000 * buyPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "可用资金不足"); } margin=transactionVolume * 1000 * buyPic; //所需保证金 availableFunds = availableFunds - margin; @@ -129,7 +129,7 @@ public class TradingController { takeStashService.insertTakeStash(takeStash); } else if ("sell".equals(buySellType)) { if (availableFunds < transactionVolume * 1000 * sellPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "可用资金不足"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "可用资金不足"); } margin=transactionVolume * 1000 * sellPic; //所需保证金 availableFunds = availableFunds - margin; @@ -143,27 +143,29 @@ public class TradingController { Date validityTime = jsonObject.getDate("validityTime"); //获取挂单有效期 if ("buyLimit".equals(buySellType)) { //限价买进(低价买进) 下单时买入价低于当前买价 if (priceCommission >= buyPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "限价买进价位不能高于当前买价"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "限价买进价位不能高于当前买价"); } } if ("sellLimit".equals(buySellType)) {//限价卖出(高价卖出) 下单时卖出价高于当前卖价 if (priceCommission <= sellPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "限价卖出价位不能低于当前卖价"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "限价卖出价位不能低于当前卖价"); } } if ("buyStop".equals(buySellType)) {//止损买进(高价买进) 下单时买入价格高于当前买价 if (priceCommission <= buyPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损买进价位不能低于当前买价"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "止损买进价位不能低于当前买价"); } } if ("sellStop".equals(buySellType)) {//止损卖出(低价卖出)下单时卖出价格低于当前卖价 if (priceCommission >= sellPic) { - return new ResultEntity(HttpStatus.UNAUTHORIZED, "止损卖出价位不能高于当前卖价"); + return new ResultEntity(HttpStatus.BAD_REQUEST, "止损卖出价位不能高于当前卖价"); } } PendingOrder pendingOrder = pendingOrderController.returnPendingOrder(memberId, trainingId, tradingCode,currencyName,buySellType, transactionVolume, priceCommission, stopLoss, stopWin, validityTime); pendingOrderController.insertPendingOrder(pendingOrder);//保存挂单 } + //获取交易次数预警 memberID tradingID 获取预警次数 判断是否超过 如果超过 则报警 + //checkopeningTrades(memberID,tradingID){} return new ResultEntity(HttpStatus.OK, "交易成功"); } @@ -196,7 +198,7 @@ public class TradingController { member.setMarginUsed(marginUsed + margin); //设置已用保证金 Integer openingTrades = member.getOpeningTrades(); //获取开仓次数 member.setOpeningTrades(openingTrades++);//设置开仓次数 - memberService.updateByPrimaryKey(member); + memberService.updateByPrimaryKeySelective(member); } //判断止损止赢 逻辑:如果方式为买 则止损低于买价 获利高于买价 / 如果方式为卖 则止损高于卖价 获利低于买价 (可以只传一个参数) diff --git a/src/main/java/com/sztzjy/forex/trading_trading/mappers/PendingOrderMapper.java b/src/main/java/com/sztzjy/forex/trading_trading/mappers/PendingOrderMapper.java new file mode 100644 index 0000000..eb8ba3e --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/mappers/PendingOrderMapper.java @@ -0,0 +1,99 @@ +package com.sztzjy.forex.trading_trading.mappers; + +import com.sztzjy.forex.trading_trading.entity.PendingOrder; +import com.sztzjy.forex.trading_trading.entity.PendingOrderExample; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface PendingOrderMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + long countByExample(PendingOrderExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int deleteByExample(PendingOrderExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int deleteByPrimaryKey(String pendingOrderId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int insert(PendingOrder record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int insertSelective(PendingOrder record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + List selectByExample(PendingOrderExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + PendingOrder selectByPrimaryKey(String pendingOrderId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int updateByExampleSelective(@Param("record") PendingOrder record, @Param("example") PendingOrderExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int updateByExample(@Param("record") PendingOrder record, @Param("example") PendingOrderExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int updateByPrimaryKeySelective(PendingOrder record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_pending_order + * + * @mbg.generated Mon Jul 17 13:36:48 CST 2023 + */ + int updateByPrimaryKey(PendingOrder record); +} \ No newline at end of file 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 new file mode 100644 index 0000000..7519ec1 --- /dev/null +++ b/src/main/java/com/sztzjy/forex/trading_trading/mappers/TakeStashMapper.java @@ -0,0 +1,100 @@ +package com.sztzjy.forex.trading_trading.mappers; + +import com.sztzjy.forex.trading_trading.entity.TakeStash; +import com.sztzjy.forex.trading_trading.entity.TakeStashExample; +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +@Mapper +public interface TakeStashMapper { + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + long countByExample(TakeStashExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int deleteByExample(TakeStashExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int deleteByPrimaryKey(String stashId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int insert(TakeStash record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int insertSelective(TakeStash record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + List selectByExample(TakeStashExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + TakeStash selectByPrimaryKey(String stashId); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int updateByExampleSelective(@Param("record") TakeStash record, @Param("example") TakeStashExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int updateByExample(@Param("record") TakeStash record, @Param("example") TakeStashExample example); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int updateByPrimaryKeySelective(TakeStash record); + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table sys_take_stash + * + * @mbg.generated Mon Jul 17 14:31:17 CST 2023 + */ + int updateByPrimaryKey(TakeStash record); + + void updateWinLossByPrimaryKey(TakeStash takeStash); +} \ No newline at end of file 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 7ea6c72..e503810 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 @@ -43,6 +43,10 @@ public class MemberService { memberMapper.updateByPrimaryKey(member); } + public void updateByPrimaryKeySelective(Member member) { + memberMapper.updateByPrimaryKeySelective(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/PendingOrderService.java b/src/main/java/com/sztzjy/forex/trading_trading/service/PendingOrderService.java index 7ac163a..9f61f97 100644 --- a/src/main/java/com/sztzjy/forex/trading_trading/service/PendingOrderService.java +++ b/src/main/java/com/sztzjy/forex/trading_trading/service/PendingOrderService.java @@ -26,6 +26,6 @@ public class PendingOrderService { } public void cancelOrder(PendingOrder pendingOrder){ - pendingOrderMapper.updateByPrimaryKey(pendingOrder); + pendingOrderMapper.updateByPrimaryKeySelective(pendingOrder); } } 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 4284d3f..627c216 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 @@ -32,7 +32,12 @@ public class TakeStashService { return takeStash; } - public void updateByPrimaryKey(TakeStash takeStash){ - takeStashMapper.updateByPrimaryKey(takeStash); + public void updateByPrimaryKeySelective(TakeStash takeStash){ + takeStashMapper.updateByPrimaryKeySelective(takeStash); } + + public void updateWinLossByPrimaryKey(TakeStash takeStash){ + takeStashMapper.updateWinLossByPrimaryKey(takeStash); + } + } diff --git a/src/main/resources/mappers/ForexMarketDataMapper.xml b/src/main/resources/mappers/ForexMarketDataMapper.xml new file mode 100644 index 0000000..91684b9 --- /dev/null +++ b/src/main/resources/mappers/ForexMarketDataMapper.xml @@ -0,0 +1,521 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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} + + + + + + + + + + + + id, buy_pic, close_pri, code, color, currency, data_time, date, high_pic, low_pic, + open_pri, ranges, sell_pic, yes_pic, diff_amo, diff_per, is_real, batch_id + + + + + + + delete from sys_forex_market_data + where id = #{id,jdbcType=VARCHAR} + + + + delete from sys_forex_market_data + + + + + + + insert into sys_forex_market_data (id, buy_pic, close_pri, + code, color, currency, + data_time, date, high_pic, + low_pic, open_pri, ranges, + sell_pic, yes_pic, diff_amo, + diff_per, is_real, batch_id) + values (#{id,jdbcType=VARCHAR}, #{buyPic,jdbcType=DOUBLE}, #{closePri,jdbcType=DOUBLE}, + #{code,jdbcType=VARCHAR}, #{color,jdbcType=VARCHAR}, #{currency,jdbcType=VARCHAR}, + #{dataTime,jdbcType=TIMESTAMP}, #{date,jdbcType=VARCHAR}, #{highPic,jdbcType=VARCHAR}, + #{lowPic,jdbcType=VARCHAR}, #{openPri,jdbcType=VARCHAR}, #{ranges,jdbcType=VARCHAR}, + #{sellPic,jdbcType=VARCHAR}, #{yesPic,jdbcType=VARCHAR}, #{diffAmo,jdbcType=VARCHAR}, + #{diffPer,jdbcType=VARCHAR}, #{isReal,jdbcType=BIT}, #{batchId,jdbcType=VARCHAR} + ) + + + + insert into sys_forex_market_data (id, buy_pic, close_pri, + code, color, currency, + data_time, date, high_pic, + low_pic, open_pri,ranges, + sell_pic, yes_pic, diff_amo, + diff_per, is_real, batch_id) + values + + (#{item.id,jdbcType=VARCHAR}, #{item.buyPic,jdbcType=DOUBLE}, #{item.closePri,jdbcType=DOUBLE}, + #{item.code,jdbcType=VARCHAR}, #{item.color,jdbcType=VARCHAR}, #{item.currency,jdbcType=VARCHAR}, + #{item.dataTime,jdbcType=TIMESTAMP}, #{item.date,jdbcType=VARCHAR}, #{item.highPic,jdbcType=VARCHAR}, + #{item.lowPic,jdbcType=VARCHAR}, #{item.openPri,jdbcType=VARCHAR},#{item.ranges,jdbcType=VARCHAR}, + #{item.sellPic,jdbcType=VARCHAR}, #{item.yesPic,jdbcType=VARCHAR}, #{item.diffAmo,jdbcType=DOUBLE}, + #{item.diffPer,jdbcType=DOUBLE}, #{item.isReal,jdbcType=BIT}, #{item.batchId,jdbcType=VARCHAR}) + + + + + + insert into sys_forex_market_data + + + id, + + + buy_pic, + + + close_pri, + + + code, + + + color, + + + currency, + + + data_time, + + + date, + + + high_pic, + + + low_pic, + + + open_pri, + + + ranges, + + + sell_pic, + + + yes_pic, + + + diff_amo, + + + diff_per, + + + is_real, + + + batch_id, + + + + + #{id,jdbcType=VARCHAR}, + + + #{buyPic,jdbcType=DOUBLE}, + + + #{closePri,jdbcType=DOUBLE}, + + + #{code,jdbcType=VARCHAR}, + + + #{color,jdbcType=VARCHAR}, + + + #{currency,jdbcType=VARCHAR}, + + + #{dataTime,jdbcType=TIMESTAMP}, + + + #{date,jdbcType=VARCHAR}, + + + #{highPic,jdbcType=VARCHAR}, + + + #{lowPic,jdbcType=VARCHAR}, + + + #{openPri,jdbcType=VARCHAR}, + + + #{ranges,jdbcType=VARCHAR}, + + + #{sellPic,jdbcType=VARCHAR}, + + + #{yesPic,jdbcType=VARCHAR}, + + + #{diffAmo,jdbcType=VARCHAR}, + + + #{diffPer,jdbcType=VARCHAR}, + + + #{isReal,jdbcType=BIT}, + + + #{batchId,jdbcType=VARCHAR}, + + + + + + + update sys_forex_market_data + + + id = #{record.id,jdbcType=VARCHAR}, + + + buy_pic = #{record.buyPic,jdbcType=DOUBLE}, + + + close_pri = #{record.closePri,jdbcType=DOUBLE}, + + + code = #{record.code,jdbcType=VARCHAR}, + + + color = #{record.color,jdbcType=VARCHAR}, + + + currency = #{record.currency,jdbcType=VARCHAR}, + + + data_time = #{record.dataTime,jdbcType=TIMESTAMP}, + + + date = #{record.date,jdbcType=VARCHAR}, + + + high_pic = #{record.highPic,jdbcType=VARCHAR}, + + + low_pic = #{record.lowPic,jdbcType=VARCHAR}, + + + open_pri = #{record.openPri,jdbcType=VARCHAR}, + + + ranges = #{record.ranges,jdbcType=VARCHAR}, + + + sell_pic = #{record.sellPic,jdbcType=VARCHAR}, + + + yes_pic = #{record.yesPic,jdbcType=VARCHAR}, + + + diff_amo = #{record.diffAmo,jdbcType=VARCHAR}, + + + diff_per = #{record.diffPer,jdbcType=VARCHAR}, + + + is_real = #{record.isReal,jdbcType=BIT}, + + + batch_id = #{record.batchId,jdbcType=VARCHAR}, + + + + + + + + + update sys_forex_market_data + set id = #{record.id,jdbcType=VARCHAR}, + buy_pic = #{record.buyPic,jdbcType=DOUBLE}, + close_pri = #{record.closePri,jdbcType=DOUBLE}, + code = #{record.code,jdbcType=VARCHAR}, + color = #{record.color,jdbcType=VARCHAR}, + currency = #{record.currency,jdbcType=VARCHAR}, + data_time = #{record.dataTime,jdbcType=TIMESTAMP}, + date = #{record.date,jdbcType=VARCHAR}, + high_pic = #{record.highPic,jdbcType=VARCHAR}, + low_pic = #{record.lowPic,jdbcType=VARCHAR}, + open_pri = #{record.openPri,jdbcType=VARCHAR}, + ranges = #{record.ranges,jdbcType=VARCHAR}, + sell_pic = #{record.sellPic,jdbcType=VARCHAR}, + yes_pic = #{record.yesPic,jdbcType=VARCHAR}, + diff_amo = #{record.diffAmo,jdbcType=VARCHAR}, + diff_per = #{record.diffPer,jdbcType=VARCHAR}, + is_real = #{record.isReal,jdbcType=BIT}, + batch_id = #{record.batchId,jdbcType=VARCHAR} + + + + + + + update sys_forex_market_data + + + buy_pic = #{buyPic,jdbcType=DOUBLE}, + + + close_pri = #{closePri,jdbcType=DOUBLE}, + + + code = #{code,jdbcType=VARCHAR}, + + + color = #{color,jdbcType=VARCHAR}, + + + currency = #{currency,jdbcType=VARCHAR}, + + + data_time = #{dataTime,jdbcType=TIMESTAMP}, + + + date = #{date,jdbcType=VARCHAR}, + + + high_pic = #{highPic,jdbcType=VARCHAR}, + + + low_pic = #{lowPic,jdbcType=VARCHAR}, + + + open_pri = #{openPri,jdbcType=VARCHAR}, + + + ranges = #{ranges,jdbcType=VARCHAR}, + + + sell_pic = #{sellPic,jdbcType=VARCHAR}, + + + yes_pic = #{yesPic,jdbcType=VARCHAR}, + + + diff_amo = #{diffAmo,jdbcType=VARCHAR}, + + + diff_per = #{diffPer,jdbcType=VARCHAR}, + + + is_real = #{isReal,jdbcType=BIT}, + + + batch_id = #{batchId,jdbcType=VARCHAR}, + + + where id = #{id,jdbcType=VARCHAR} + + + + update sys_forex_market_data + set buy_pic = #{buyPic,jdbcType=DOUBLE}, + close_pri = #{closePri,jdbcType=DOUBLE}, + code = #{code,jdbcType=VARCHAR}, + color = #{color,jdbcType=VARCHAR}, + currency = #{currency,jdbcType=VARCHAR}, + data_time = #{dataTime,jdbcType=TIMESTAMP}, + date = #{date,jdbcType=VARCHAR}, + high_pic = #{highPic,jdbcType=VARCHAR}, + low_pic = #{lowPic,jdbcType=VARCHAR}, + open_pri = #{openPri,jdbcType=VARCHAR}, + ranges = #{ranges,jdbcType=VARCHAR}, + sell_pic = #{sellPic,jdbcType=VARCHAR}, + yes_pic = #{yesPic,jdbcType=VARCHAR}, + diff_amo = #{diffAmo,jdbcType=VARCHAR}, + diff_per = #{diffPer,jdbcType=VARCHAR}, + is_real = #{isReal,jdbcType=BIT}, + batch_id = #{batchId,jdbcType=VARCHAR} + where id = #{id,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/src/main/resources/mappers/PendingOrderMapper.xml b/src/main/resources/mappers/PendingOrderMapper.xml new file mode 100644 index 0000000..dc46a53 --- /dev/null +++ b/src/main/resources/mappers/PendingOrderMapper.xml @@ -0,0 +1,429 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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} + + + + + + + + + + + + pending_order_id, member_id, training_id, commission_time, trading_code, currency_name, + commission_number, buy_sell_type, volume_transaction, price_commission, stop_loss, + stop_win, validity_time, status + + + + + + delete from sys_pending_order + where pending_order_id = #{pendingOrderId,jdbcType=VARCHAR} + + + + delete from sys_pending_order + + + + + + + insert into sys_pending_order (pending_order_id, member_id, training_id, + commission_time, trading_code, currency_name, + commission_number, buy_sell_type, volume_transaction, + price_commission, stop_loss, stop_win, + validity_time, status) + values (#{pendingOrderId,jdbcType=VARCHAR}, #{memberId,jdbcType=VARCHAR}, #{trainingId,jdbcType=VARCHAR}, + #{commissionTime,jdbcType=TIMESTAMP}, #{tradingCode,jdbcType=VARCHAR}, #{currencyName,jdbcType=VARCHAR}, + #{commissionNumber,jdbcType=VARCHAR}, #{buySellType,jdbcType=VARCHAR}, #{volumeTransaction,jdbcType=DOUBLE}, + #{priceCommission,jdbcType=DOUBLE}, #{stopLoss,jdbcType=DOUBLE}, #{stopWin,jdbcType=DOUBLE}, + #{validityTime,jdbcType=TIMESTAMP}, #{status,jdbcType=INTEGER}) + + + + insert into sys_pending_order + + + pending_order_id, + + + member_id, + + + training_id, + + + commission_time, + + + trading_code, + + + currency_name, + + + commission_number, + + + buy_sell_type, + + + volume_transaction, + + + price_commission, + + + stop_loss, + + + stop_win, + + + validity_time, + + + status, + + + + + #{pendingOrderId,jdbcType=VARCHAR}, + + + #{memberId,jdbcType=VARCHAR}, + + + #{trainingId,jdbcType=VARCHAR}, + + + #{commissionTime,jdbcType=TIMESTAMP}, + + + #{tradingCode,jdbcType=VARCHAR}, + + + #{currencyName,jdbcType=VARCHAR}, + + + #{commissionNumber,jdbcType=VARCHAR}, + + + #{buySellType,jdbcType=VARCHAR}, + + + #{volumeTransaction,jdbcType=DOUBLE}, + + + #{priceCommission,jdbcType=DOUBLE}, + + + #{stopLoss,jdbcType=DOUBLE}, + + + #{stopWin,jdbcType=DOUBLE}, + + + #{validityTime,jdbcType=TIMESTAMP}, + + + #{status,jdbcType=INTEGER}, + + + + + + + update sys_pending_order + + + pending_order_id = #{record.pendingOrderId,jdbcType=VARCHAR}, + + + member_id = #{record.memberId,jdbcType=VARCHAR}, + + + training_id = #{record.trainingId,jdbcType=VARCHAR}, + + + commission_time = #{record.commissionTime,jdbcType=TIMESTAMP}, + + + trading_code = #{record.tradingCode,jdbcType=VARCHAR}, + + + currency_name = #{record.currencyName,jdbcType=VARCHAR}, + + + commission_number = #{record.commissionNumber,jdbcType=VARCHAR}, + + + buy_sell_type = #{record.buySellType,jdbcType=VARCHAR}, + + + volume_transaction = #{record.volumeTransaction,jdbcType=DOUBLE}, + + + price_commission = #{record.priceCommission,jdbcType=DOUBLE}, + + + stop_loss = #{record.stopLoss,jdbcType=DOUBLE}, + + + stop_win = #{record.stopWin,jdbcType=DOUBLE}, + + + validity_time = #{record.validityTime,jdbcType=TIMESTAMP}, + + + status = #{record.status,jdbcType=INTEGER}, + + + + + + + + + update sys_pending_order + set pending_order_id = #{record.pendingOrderId,jdbcType=VARCHAR}, + member_id = #{record.memberId,jdbcType=VARCHAR}, + training_id = #{record.trainingId,jdbcType=VARCHAR}, + commission_time = #{record.commissionTime,jdbcType=TIMESTAMP}, + trading_code = #{record.tradingCode,jdbcType=VARCHAR}, + currency_name = #{record.currencyName,jdbcType=VARCHAR}, + commission_number = #{record.commissionNumber,jdbcType=VARCHAR}, + buy_sell_type = #{record.buySellType,jdbcType=VARCHAR}, + volume_transaction = #{record.volumeTransaction,jdbcType=DOUBLE}, + price_commission = #{record.priceCommission,jdbcType=DOUBLE}, + stop_loss = #{record.stopLoss,jdbcType=DOUBLE}, + stop_win = #{record.stopWin,jdbcType=DOUBLE}, + validity_time = #{record.validityTime,jdbcType=TIMESTAMP}, + status = #{record.status,jdbcType=INTEGER} + + + + + + + update sys_pending_order + + + member_id = #{memberId,jdbcType=VARCHAR}, + + + training_id = #{trainingId,jdbcType=VARCHAR}, + + + commission_time = #{commissionTime,jdbcType=TIMESTAMP}, + + + trading_code = #{tradingCode,jdbcType=VARCHAR}, + + + currency_name = #{currencyName,jdbcType=VARCHAR}, + + + commission_number = #{commissionNumber,jdbcType=VARCHAR}, + + + buy_sell_type = #{buySellType,jdbcType=VARCHAR}, + + + volume_transaction = #{volumeTransaction,jdbcType=DOUBLE}, + + + price_commission = #{priceCommission,jdbcType=DOUBLE}, + + + stop_loss = #{stopLoss,jdbcType=DOUBLE}, + + + stop_win = #{stopWin,jdbcType=DOUBLE}, + + + validity_time = #{validityTime,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=INTEGER}, + + + where pending_order_id = #{pendingOrderId,jdbcType=VARCHAR} + + + + update sys_pending_order + set member_id = #{memberId,jdbcType=VARCHAR}, + training_id = #{trainingId,jdbcType=VARCHAR}, + commission_time = #{commissionTime,jdbcType=TIMESTAMP}, + trading_code = #{tradingCode,jdbcType=VARCHAR}, + currency_name = #{currencyName,jdbcType=VARCHAR}, + commission_number = #{commissionNumber,jdbcType=VARCHAR}, + buy_sell_type = #{buySellType,jdbcType=VARCHAR}, + volume_transaction = #{volumeTransaction,jdbcType=DOUBLE}, + price_commission = #{priceCommission,jdbcType=DOUBLE}, + stop_loss = #{stopLoss,jdbcType=DOUBLE}, + stop_win = #{stopWin,jdbcType=DOUBLE}, + validity_time = #{validityTime,jdbcType=TIMESTAMP}, + status = #{status,jdbcType=INTEGER} + where pending_order_id = #{pendingOrderId,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/src/main/resources/mappers/TakeStashMapper.xml b/src/main/resources/mappers/TakeStashMapper.xml new file mode 100644 index 0000000..f4a65e6 --- /dev/null +++ b/src/main/resources/mappers/TakeStashMapper.xml @@ -0,0 +1,495 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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} + + + + + + + + + + + + stash_id, member_id, training_id, trading_code, currency_name, order_number, buy_sell_type, + volume_transaction, price_transaction, stop_loss, stop_win, time_transaction, status, + profit_and_loss_by_close, trading_margin + + + + + + delete from sys_take_stash + where stash_id = #{stashId,jdbcType=VARCHAR} + + + + delete from sys_take_stash + + + + + + + insert into sys_take_stash (stash_id, member_id, training_id, + trading_code, currency_name, order_number, + buy_sell_type, volume_transaction, price_transaction, + stop_loss, stop_win, time_transaction, + status, profit_and_loss_by_close, trading_margin + ) + values (#{stashId,jdbcType=VARCHAR}, #{memberId,jdbcType=VARCHAR}, #{trainingId,jdbcType=VARCHAR}, + #{tradingCode,jdbcType=VARCHAR}, #{currencyName,jdbcType=VARCHAR}, #{orderNumber,jdbcType=VARCHAR}, + #{buySellType,jdbcType=VARCHAR}, #{volumeTransaction,jdbcType=DOUBLE}, #{priceTransaction,jdbcType=DOUBLE}, + #{stopLoss,jdbcType=DOUBLE}, #{stopWin,jdbcType=DOUBLE}, #{timeTransaction,jdbcType=TIMESTAMP}, + #{status,jdbcType=INTEGER}, #{profitAndLossByClose,jdbcType=DOUBLE}, #{tradingMargin,jdbcType=DOUBLE} + ) + + + + insert into sys_take_stash + + + stash_id, + + + member_id, + + + training_id, + + + trading_code, + + + currency_name, + + + order_number, + + + buy_sell_type, + + + volume_transaction, + + + price_transaction, + + + stop_loss, + + + stop_win, + + + time_transaction, + + + status, + + + profit_and_loss_by_close, + + + trading_margin, + + + + + #{stashId,jdbcType=VARCHAR}, + + + #{memberId,jdbcType=VARCHAR}, + + + #{trainingId,jdbcType=VARCHAR}, + + + #{tradingCode,jdbcType=VARCHAR}, + + + #{currencyName,jdbcType=VARCHAR}, + + + #{orderNumber,jdbcType=VARCHAR}, + + + #{buySellType,jdbcType=VARCHAR}, + + + #{volumeTransaction,jdbcType=DOUBLE}, + + + #{priceTransaction,jdbcType=DOUBLE}, + + + #{stopLoss,jdbcType=DOUBLE}, + + + #{stopWin,jdbcType=DOUBLE}, + + + #{timeTransaction,jdbcType=TIMESTAMP}, + + + #{status,jdbcType=INTEGER}, + + + #{profitAndLossByClose,jdbcType=DOUBLE}, + + + #{tradingMargin,jdbcType=DOUBLE}, + + + + + + + update sys_take_stash + + + stash_id = #{record.stashId,jdbcType=VARCHAR}, + + + member_id = #{record.memberId,jdbcType=VARCHAR}, + + + training_id = #{record.trainingId,jdbcType=VARCHAR}, + + + trading_code = #{record.tradingCode,jdbcType=VARCHAR}, + + + currency_name = #{record.currencyName,jdbcType=VARCHAR}, + + + order_number = #{record.orderNumber,jdbcType=VARCHAR}, + + + buy_sell_type = #{record.buySellType,jdbcType=VARCHAR}, + + + volume_transaction = #{record.volumeTransaction,jdbcType=DOUBLE}, + + + price_transaction = #{record.priceTransaction,jdbcType=DOUBLE}, + + + stop_loss = #{record.stopLoss,jdbcType=DOUBLE}, + + + stop_win = #{record.stopWin,jdbcType=DOUBLE}, + + + time_transaction = #{record.timeTransaction,jdbcType=TIMESTAMP}, + + + status = #{record.status,jdbcType=INTEGER}, + + + profit_and_loss_by_close = #{record.profitAndLossByClose,jdbcType=DOUBLE}, + + + trading_margin = #{record.tradingMargin,jdbcType=DOUBLE}, + + + + + + + + + update sys_take_stash + set stash_id = #{record.stashId,jdbcType=VARCHAR}, + member_id = #{record.memberId,jdbcType=VARCHAR}, + training_id = #{record.trainingId,jdbcType=VARCHAR}, + trading_code = #{record.tradingCode,jdbcType=VARCHAR}, + currency_name = #{record.currencyName,jdbcType=VARCHAR}, + order_number = #{record.orderNumber,jdbcType=VARCHAR}, + buy_sell_type = #{record.buySellType,jdbcType=VARCHAR}, + volume_transaction = #{record.volumeTransaction,jdbcType=DOUBLE}, + price_transaction = #{record.priceTransaction,jdbcType=DOUBLE}, + stop_loss = #{record.stopLoss,jdbcType=DOUBLE}, + stop_win = #{record.stopWin,jdbcType=DOUBLE}, + time_transaction = #{record.timeTransaction,jdbcType=TIMESTAMP}, + status = #{record.status,jdbcType=INTEGER}, + profit_and_loss_by_close = #{record.profitAndLossByClose,jdbcType=DOUBLE}, + trading_margin = #{record.tradingMargin,jdbcType=DOUBLE} + + + + + + + update sys_take_stash + + + member_id = #{memberId,jdbcType=VARCHAR}, + + + training_id = #{trainingId,jdbcType=VARCHAR}, + + + trading_code = #{tradingCode,jdbcType=VARCHAR}, + + + currency_name = #{currencyName,jdbcType=VARCHAR}, + + + order_number = #{orderNumber,jdbcType=VARCHAR}, + + + buy_sell_type = #{buySellType,jdbcType=VARCHAR}, + + + volume_transaction = #{volumeTransaction,jdbcType=DOUBLE}, + + + price_transaction = #{priceTransaction,jdbcType=DOUBLE}, + + + stop_loss = #{stopLoss,jdbcType=DOUBLE}, + + + stop_win = #{stopWin,jdbcType=DOUBLE}, + + + time_transaction = #{timeTransaction,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=INTEGER}, + + + profit_and_loss_by_close = #{profitAndLossByClose,jdbcType=DOUBLE}, + + + trading_margin = #{tradingMargin,jdbcType=DOUBLE}, + + + where stash_id = #{stashId,jdbcType=VARCHAR} + + + + update sys_take_stash + + + member_id = #{memberId,jdbcType=VARCHAR}, + + + training_id = #{trainingId,jdbcType=VARCHAR}, + + + trading_code = #{tradingCode,jdbcType=VARCHAR}, + + + currency_name = #{currencyName,jdbcType=VARCHAR}, + + + order_number = #{orderNumber,jdbcType=VARCHAR}, + + + buy_sell_type = #{buySellType,jdbcType=VARCHAR}, + + + volume_transaction = #{volumeTransaction,jdbcType=DOUBLE}, + + + price_transaction = #{priceTransaction,jdbcType=DOUBLE}, + + stop_loss = #{stopLoss,jdbcType=DOUBLE}, + stop_win = #{stopWin,jdbcType=DOUBLE}, + + time_transaction = #{timeTransaction,jdbcType=TIMESTAMP}, + + + status = #{status,jdbcType=INTEGER}, + + + profit_and_loss_by_close = #{profitAndLossByClose,jdbcType=DOUBLE}, + + + trading_margin = #{tradingMargin,jdbcType=DOUBLE}, + + + where stash_id = #{stashId,jdbcType=VARCHAR} + + + + update sys_take_stash + set member_id = #{memberId,jdbcType=VARCHAR}, + training_id = #{trainingId,jdbcType=VARCHAR}, + trading_code = #{tradingCode,jdbcType=VARCHAR}, + currency_name = #{currencyName,jdbcType=VARCHAR}, + order_number = #{orderNumber,jdbcType=VARCHAR}, + buy_sell_type = #{buySellType,jdbcType=VARCHAR}, + volume_transaction = #{volumeTransaction,jdbcType=DOUBLE}, + price_transaction = #{priceTransaction,jdbcType=DOUBLE}, + stop_loss = #{stopLoss,jdbcType=DOUBLE}, + stop_win = #{stopWin,jdbcType=DOUBLE}, + time_transaction = #{timeTransaction,jdbcType=TIMESTAMP}, + status = #{status,jdbcType=INTEGER}, + profit_and_loss_by_close = #{profitAndLossByClose,jdbcType=DOUBLE}, + trading_margin = #{tradingMargin,jdbcType=DOUBLE} + where stash_id = #{stashId,jdbcType=VARCHAR} + + \ No newline at end of file