| | |
| | | package com.yami.trading.admin.controller.dz; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.yami.trading.admin.facade.PermissionFacade; |
| | | import com.yami.trading.bean.dz.StockDz; |
| | | import com.yami.trading.bean.model.User; |
| | | import com.yami.trading.common.constants.Constants; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | | import com.yami.trading.dao.dz.StockDzMapper; |
| | | import com.yami.trading.security.common.util.SecurityUtils; |
| | | import com.yami.trading.service.dz.StockDzService; |
| | | import com.yami.trading.service.user.UserService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private PermissionFacade permissionFacade; |
| | | |
| | | @Autowired |
| | | UserService userService; |
| | | |
| | | @Autowired |
| | | StockDzMapper stockDzMapper; |
| | | |
| | | |
| | | /** |
| | |
| | | return stockDzService.dzCheck(id, checkType, orderNum, price); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 大宗列表 |
| | | * @Param: |
| | | * @return: |
| | | */ |
| | | @ApiOperation("获取大宗列表数据") |
| | | @PostMapping({"getDzList.do"}) |
| | | public Result getDzList(@RequestParam(value = "stockName", required = false) String stockName) { |
| | | LambdaQueryWrapper<StockDz> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(StockDz::getStockType, Constants.US_DARK); |
| | | if (StringUtils.isNotBlank(stockName)) { |
| | | queryWrapper.and(wrapper -> wrapper |
| | | .like(StockDz::getStockCode, stockName) |
| | | .or() |
| | | .like(StockDz::getStockName, stockName) |
| | | ); |
| | | } |
| | | return Result.succeed(stockDzMapper.selectList(queryWrapper)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("大宗下单") |
| | | @GetMapping({"buyStockDz.do"}) |
| | | public Result buyDz(@RequestParam("dzId") String dzId, |
| | | @RequestParam("num") double num, |
| | | @RequestParam("userCode") String userCode) { |
| | | if (dzId == null || num ==0 ||userCode == null) { |
| | | return Result.failed("请输入参数"); |
| | | } |
| | | User user = userService.findUserByUserCode(userCode); |
| | | if(user == null){ |
| | | return Result.failed("未找到用户"); |
| | | } |
| | | return stockDzService.buyDz(dzId, null, num, user.getUserId(), true); |
| | | } |
| | | |
| | | @ApiOperation("大宗平仓") |
| | | @GetMapping({"closeStockDz.do"}) |
| | | public Result closeStockDz(@RequestParam("id") String id) { |
| | | return stockDzService.closeDz(id, null, null, true); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.buyDz(dzId, password, num, partyId); |
| | | return stockDzService.buyDz(dzId, password, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.closeDz(id, num, partyId); |
| | | return stockDzService.closeDz(id, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.buyDz(dzId, password, num, partyId); |
| | | return stockDzService.buyDz(dzId, password, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.closeDz(id, num, partyId); |
| | | return stockDzService.closeDz(id, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.buyDz(dzId, password, num, partyId); |
| | | return stockDzService.buyDz(dzId, password, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.closeDz(id, num, partyId); |
| | | return stockDzService.closeDz(id, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.buyDz(dzId, password, num, partyId); |
| | | return stockDzService.buyDz(dzId, password, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | if (partyId == null || partyId.isEmpty()) { |
| | | throw new YamiShopBindException("请先登录"); |
| | | } |
| | | return stockDzService.closeDz(id, num, partyId); |
| | | return stockDzService.closeDz(id, num, partyId, false); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage()); |
| | | } finally{ |
| | |
| | | |
| | | Result getDzCheckList(int pageNum, int pageSize, String state, String stockCode, String stockType, List<String> checkedList); |
| | | |
| | | Result buyDz(String dzId, String password, double num, String partyId); |
| | | Result buyDz(String dzId, String password, double num, String partyId, Boolean isAdmin); |
| | | |
| | | Result dzCheck(String id, Integer checkType, Double num, double price); |
| | | |
| | | public void intoPosition(ExchangeApplyOrderDz orderDz, String stockType); |
| | | |
| | | Result closeDz(String id, Double num, String partyId); |
| | | Result closeDz(String id, Double num, String partyId, Boolean isAdmin); |
| | | |
| | | } |
| | |
| | | |
| | | @Transactional |
| | | @Override |
| | | public Result buyDz(String dzId, String password, double num, String partyId) { |
| | | public Result buyDz(String dzId, String password, double num, String partyId, Boolean isAdmin) { |
| | | try { |
| | | if (num <= 0) { |
| | | throw new YamiShopBindException("请输入"); |
| | |
| | | return Result.failed("请购买最小数量"); |
| | | } |
| | | } |
| | | boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS); |
| | | if (!isOpen) { |
| | | return Result.failed("当前股市休市"); |
| | | } |
| | | |
| | | if (!isAdmin) { //后台买入不判断 |
| | | boolean isOpen = MarketOpenChecker.isMarketOpenBuyDz(Item.US_STOCKS); |
| | | if (!isOpen) { |
| | | return Result.failed("当前股市休市"); |
| | | } |
| | | } |
| | | |
| | | Wallet wallet = this.walletService.saveWalletByPartyId(partyId); |
| | | BigDecimal buyAmt; |
| | |
| | | |
| | | @Transactional |
| | | @Override |
| | | public Result closeDz(String id, Double num, String partyId) { |
| | | public Result closeDz(String id, Double num, String partyId, Boolean isAdmin) { |
| | | try { |
| | | ExchangeApplyOrderDz order = exchangeApplyOrderDzMapper.selectById(id); |
| | | if (order == null) { |
| | |
| | | } |
| | | if (num < 0 || num > order.getSymbolValue()) { |
| | | throw new YamiShopBindException("数量错误"); |
| | | } |
| | | if (partyId == null) { |
| | | partyId = order.getPartyId(); |
| | | } |
| | | |
| | | StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("uuid", order.getDzId())); |
| | |
| | | } |
| | | |
| | | Date now = new Date(); |
| | | if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(order.getCreateTime()); |
| | | calendar.add(Calendar.DATE, stockDz.getPeriod()); |
| | | // 锁仓时间 |
| | | Date resultTime = calendar.getTime(); |
| | | if (!isAdmin) { |
| | | if (stockDz.getPeriod() != null && stockDz.getPeriod() > 0) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(order.getCreateTime()); |
| | | calendar.add(Calendar.DATE, stockDz.getPeriod()); |
| | | // 锁仓时间 |
| | | Date resultTime = calendar.getTime(); |
| | | |
| | | if(now.getTime() < resultTime.getTime()){ |
| | | return Result.failed("未到平仓时间"); |
| | | if(now.getTime() < resultTime.getTime()){ |
| | | return Result.failed("未到平仓时间"); |
| | | } |
| | | } |
| | | if (!stockDz.getStockName().contains("测试")) { |
| | | boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS); |
| | | if (!isOpen) { |
| | | return Result.failed("当前股市休市"); |
| | | } |
| | | } |
| | | } |
| | | if (stockDz.getStockName().contains("测试")) { |
| | | |
| | | } else { |
| | | boolean isOpen = MarketOpenChecker.isMarketOpenByItemCloseType(Item.US_STOCKS); |
| | | if (!isOpen) { |
| | | return Result.failed("当前股市休市"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | Wallet wallet = this.walletService.saveWalletByPartyId(order.getPartyId()); |