src/main/java/com/nq/controller/backend/AdminStockDz.java
@@ -35,11 +35,12 @@ @RequestMapping({"addByAdmin.do"}) public ServerResponse addByAdmin(@RequestParam(value = "stockCode")String stockCode, @RequestParam(value = "stockNum")String stockNum, @RequestParam(value = "password")String password, @RequestParam(value = "isShow") Integer isShow, @RequestParam(value = "startTime")String startTime, @RequestParam(value = "endTime")String endTime, @RequestParam(value = "discount") String discount) { return stockDzService.addByAdmin(stockCode,stockNum,password,startTime,endTime,discount); @RequestParam(value = "discount") String discount, @RequestParam(value = "stockShare") Integer stockShare) { return stockDzService.addByAdmin(stockCode,stockNum,isShow,startTime,endTime,discount,stockShare); } /** * 删除大宗 src/main/java/com/nq/controller/protol/UserController.java
@@ -96,6 +96,19 @@ return serverResponse; } //用户下单买入股票 @RequestMapping({"fee.do"}) @ResponseBody public ServerResponse fee(@RequestParam("buyNum") Integer buyNum,@RequestParam("nowPrice") BigDecimal nowPrice,HttpServletRequest request) { ServerResponse serverResponse = null; try { serverResponse = this.iUserPositionService.fee(buyNum,nowPrice); } catch (Exception e) { log.error("用户下单操作 = {}", e); } return serverResponse; } //修改止损止损 @RequestMapping({"updateProfitTarget.do"}) @ResponseBody src/main/java/com/nq/pojo/UserStockSubscribe.java
@@ -125,6 +125,11 @@ */ private String remarks; /** * 折扣价 */ private BigDecimal discountPrice; public UserStockSubscribe() { } src/main/java/com/nq/service/IUserPositionService.java
@@ -24,6 +24,8 @@ ServerResponse lock(Integer paramInteger1, Integer paramInteger2, String paramString,Integer paramInteger3); ServerResponse fee(Integer buyNum,BigDecimal nowPrice); ServerResponse del(Integer paramInteger); ServerResponse<PageInfo> findMyPositionByCodeAndSpell(String paramString1, String paramString2, Integer paramInteger, HttpServletRequest paramHttpServletRequest, int paramInt1, int paramInt2); src/main/java/com/nq/service/StockDzService.java
@@ -16,7 +16,7 @@ ServerResponse getDzList(); ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount); ServerResponse addByAdmin(String stockCode, String stockNum, Integer isShow, String startTime, String endTime, String discount,Integer stockShare); ServerResponse getDzListByAdmin(String keywords); src/main/java/com/nq/service/impl/StockDzServiceImpl.java
@@ -72,9 +72,9 @@ } @Override public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount) { if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")||password == null || discount == null|| discount.equals("")|| password.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("")){ public ServerResponse addByAdmin(String stockCode, String stockNum, Integer isShow, String startTime, String endTime, String discount,Integer stockShare) { if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")|| isShow == null || stockShare == null ||discount == null|| discount.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("")){ return ServerResponse.createByErrorMsg("参数不能为空"); } Stock stock = stockMapper.findStockByCode(stockCode); @@ -90,11 +90,12 @@ stockDz.setStockPlate(stock.getStockPlate()); stockDz.setIsLock(stock.getIsLock()); stockDz.setIsShow(1); stockDz.setStockShare(stockShare); stockDz.setAddTime(new Date()); stockDz.setSpreadRate(stock.getSpreadRate()); stockDz.setIncreaseRatio(BigDecimal.ZERO); stockDz.setStockNum(Integer.valueOf(stockNum)); stockDz.setPassword(password); stockDz.setIsShow(isShow); stockDz.setStartTime(DateTimeUtil.strToDate(startTime)); stockDz.setEndTime(DateTimeUtil.strToDate(endTime)); stockDz.setDiscount(new BigDecimal(discount)); src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
@@ -64,7 +64,9 @@ } String s = DateTimeUtil.dateToStr(new Date()); //subscribe_time大于当前时间 queryWrapper.ge("subscribe_time", DateTimeUtil.dateToStr1(new Date())).orderByAsc("subscribe_time"); // queryWrapper.ge("subscribe_time", DateTimeUtil.dateToStr1(new Date())).orderByAsc("subscribe_time"); queryWrapper.le("subscribe_time", DateTimeUtil.dateToStr1(new Date())) .ge("subscription_time", DateTimeUtil.dateToStr1(new Date())).orderByAsc("subscribe_time"); List<StockSubscribe> stockSubscribeList = this.stockSubscribeMapper.selectList(queryWrapper); // List<StockAdminListVO> stockAdminListVOS = Lists.newArrayList(); @@ -96,7 +98,7 @@ } String s = DateTimeUtil.dateToStr(new Date()); //subscribe_time大于当前时间 queryWrapper.orderByAsc("subscribe_time"); queryWrapper.orderByDesc("subscribe_time"); List<StockSubscribe> stockSubscribeList = this.stockSubscribeMapper.selectList(queryWrapper); // List<StockAdminListVO> stockAdminListVOS = Lists.newArrayList(); src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -514,6 +514,12 @@ } public ServerResponse fee(Integer buyNum,BigDecimal nowPrice){ BigDecimal buy_amt = nowPrice.multiply(new BigDecimal(buyNum.intValue())); SiteSetting siteSetting = this.iSiteSettingService.getSiteSetting(); BigDecimal buy_fee_amt = buy_amt.multiply(siteSetting.getBuyFee()).setScale(2, 4); return ServerResponse.createBySuccess(buy_fee_amt); } @Transactional public ServerResponse pending(Integer stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request) throws Exception { @@ -524,9 +530,7 @@ /*实名认证开关开启*/ SiteProduct siteProduct = iSiteProductService.getProductSetting(); User user = this.iUserService.getCurrentRefreshUser(request); if (!siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("当前交易关闭"); } if (siteProduct.getRealNameDisplay() && (StringUtils.isBlank(user.getRealName()) || StringUtils.isBlank(user.getIdCard()))) { return ServerResponse.createByErrorMsg("挂单失败,请先实名认证"); } @@ -559,9 +563,12 @@ boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end); log.info("是否在上午交易时间 = {} 是否在下午交易时间 = {}", Boolean.valueOf(am_flag), Boolean.valueOf(pm_flag)); //TODO // if (!am_flag && !pm_flag) { // return ServerResponse.createByErrorMsg("挂单失败,不在交易时段内"); // if (!siteProduct.getTranWithdrawDisplay()) { // return ServerResponse.createByErrorMsg("当前交易关闭"); // } if (!am_flag && !pm_flag && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,不在交易时段内"); } if (siteProduct.getHolidayDisplay()) { return ServerResponse.createByErrorMsg("周末或节假日不能交易!"); } @@ -573,13 +580,13 @@ List dbPosition = findPositionByStockCodeAndTimes(siteSetting.getBuySameTimes().intValue(), stock .getStockCode(), user.getId()); if (dbPosition.size() >= siteSetting.getBuySameNums().intValue()) { if (dbPosition.size() >= siteSetting.getBuySameNums().intValue() && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("频繁交易," + siteSetting.getBuySameTimes() + "分钟内同一股票持仓不得超过" + siteSetting .getBuySameNums() + "条"); } Integer transNum = findPositionNumByTimes(siteSetting.getBuyNumTimes().intValue(), user.getId()); if (transNum.intValue() / 100 >= siteSetting.getBuyNumLots().intValue()) { if (transNum.intValue() / 100 >= siteSetting.getBuyNumLots().intValue() && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("频繁交易," + siteSetting .getBuyNumTimes() + "分钟内不能超过" + siteSetting.getBuyNumLots() + "手"); } @@ -628,20 +635,20 @@ log.info("当前涨跌幅 = {} % , 涨停幅度 = {} %", Double.valueOf(stock_crease), ztRate); if ((new BigDecimal(String.valueOf(stock_crease))).compareTo(ztRate) == 0 && buyType .intValue() == 0) { .intValue() == 0 && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("当前股票已涨停不能买涨"); } if (stock.getStockPlate() == null || StringUtils.isEmpty(stock.getStockPlate())) { int maxcrease = siteSetting.getCreaseMaxPercent().intValue(); if (stock_crease > 0.0D && stock_crease >= maxcrease) { stock_crease >= maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,股票当前涨幅:" + stock_crease + ",大于最大涨幅:" + maxcrease); } if (stock_crease < 0.0D && -stock_crease > maxcrease) { -stock_crease > maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,股票当前跌幅:" + stock_crease + ",大于最大跌幅:" + maxcrease); } @@ -650,26 +657,26 @@ int maxcrease = siteSetting.getCyCreaseMaxPercent().intValue(); if (stock_crease > 0.0D && stock_crease >= maxcrease) { stock_crease >= maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,创业股当前涨幅:" + stock_crease + ",大于最大涨幅:" + maxcrease); } if (stock_crease < 0.0D && -stock_crease > maxcrease) { -stock_crease > maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,创业股当前跌幅:" + stock_crease + ",大于最大跌幅:" + maxcrease); } } else { int maxcrease = siteSetting.getKcCreaseMaxPercent().intValue(); if (stock_crease > 0.0D && stock_crease >= maxcrease) { stock_crease >= maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,科创股当前涨幅:" + stock_crease + ",大于最大涨幅:" + maxcrease); } if (stock_crease < 0.0D && -stock_crease > maxcrease) { -stock_crease > maxcrease && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("挂单失败,科创股当前跌幅:" + stock_crease + ",大于最大跌幅:" + maxcrease); } } @@ -683,7 +690,7 @@ .getStockDays(), daysRate, siteSetting.getStockRate()}); if (daysRate != null && siteSetting.getStockRate().compareTo(daysRate) == -1) { siteSetting.getStockRate().compareTo(daysRate) == -1 && siteProduct.getTranWithdrawDisplay()) { return serverResponse.createByErrorMsg(siteSetting.getStockDays() + "天内涨幅超过 " + siteSetting .getStockRate() + "不能交易"); } @@ -860,9 +867,7 @@ } SiteProduct siteProduct = iSiteProductService.getProductSetting(); if (!siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("当前交易关闭"); } UserPosition userPosition = this.userPositionMapper.findPositionBySn(positionSn); if (doType != 0) { if (userPosition.getStockGid().contains("us")) { @@ -897,7 +902,8 @@ boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end); boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end); log.info("是否在上午交易時間 = {} 是否在下午交易時間 = {}", Boolean.valueOf(am_flag), Boolean.valueOf(pm_flag)); if (!am_flag && !pm_flag) { if (!am_flag && !pm_flag && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("平仓失败,不在交易时段内"); } } @@ -929,7 +935,7 @@ return ServerResponse.createByErrorMsg("平仓失败,此订单已平仓"); } if (DateTimeUtil.isCanSellOneday(userPosition.getBuyOrderTime(), siteSetting.getCantSellTimes().intValue())) { if (DateTimeUtil.isCanSellOneday(userPosition.getBuyOrderTime(), siteSetting.getCantSellTimes().intValue()) && siteProduct.getTranWithdrawDisplay()) { // return ServerResponse.createByErrorMsg(siteSetting.getCantSellTimes() + "分鐘內不能平倉"); return ServerResponse.createByErrorMsg("当日成交不可平仓"); @@ -2492,9 +2498,9 @@ if (siteProduct.getHolidayDisplay()) { return ServerResponse.createByErrorMsg("周末或节假日不能交易!"); } if (!Objects.equals(stockDz.getPassword(), password)) { return ServerResponse.createByErrorMsg("下单失败,密钥错误"); } // if (!Objects.equals(stockDz.getPassword(), password)) { // return ServerResponse.createByErrorMsg("下单失败,密钥错误"); // } if (stockDz.getIsLock().intValue() != 0) { return ServerResponse.createByErrorMsg("下单失败,当前股票不能交易"); @@ -2515,7 +2521,7 @@ if (num < stockDz.getStockNum().intValue()) { return ServerResponse.createByErrorMsg("下单失败,购买数量最小为" + stockDz.getStockNum() + "股"); } if (num > stockDz.getStockSurplus().intValue()) { if (num > stockDz.getStockShare().intValue()) { return ServerResponse.createByErrorMsg("下单失败,购买数量大于" + stockDz.getStockNum() + "股"); } if (num > siteSetting.getBuyMaxNum()) { @@ -2720,7 +2726,8 @@ insertPositionCount = userPosition.getId(); if (insertPositionCount > 0) { //修改大宗剩余 stockDz.setStockSurplus(stockDz.getStockSurplus() - num); stockDz.setStockShare(stockDz.getStockShare() - num); stockDz.setStockSurplus(stockDz.getStockSurplus() + num); stockDzMapper.updateById(stockDz); //修改用戶可用余額= 當前余額-下單金額-買入手續費-印花稅-點差費 //BigDecimal reckon_enable = user_enable_amt.subtract(buy_amt_autual).subtract(buy_fee_amt).subtract(buy_yhs_amt).subtract(spread_rate_amt); src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -173,6 +173,7 @@ model.setAddTime(new Date()); model.setOrderNo(KeyUtils.getUniqueKey()); model.setType(model.getType()); model.setDiscountPrice(stockSubscribe.getPrice().multiply(stockSubscribe.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP)); } ret = userStockSubscribeMapper.insert(model); @@ -216,7 +217,12 @@ // if (userStockSubscribe.getApplyNums() < model.getApplyNumber()) { // return ServerResponse.createByErrorMsg("中签数量超过申购数量"); // } if(null != userStockSubscribe.getDiscountPrice() && userStockSubscribe.getDiscountPrice().compareTo(BigDecimal.ZERO) > 0) { model.setBond(userStockSubscribe.getDiscountPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); }else { model.setBond(userStockSubscribe.getBuyPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); } ret = userStockSubscribeMapper.update1(model); } else if (model.getStatus() == 2) { ret = userStockSubscribeMapper.update1(model); src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -131,7 +131,7 @@ SiteSetting siteSetting = this.iSiteSettingService.getSiteSetting(); SiteProduct siteProduct = iSiteProductService.getProductSetting(); if ((new BigDecimal(amt)).compareTo(new BigDecimal(siteSetting.getWithMinAmt().intValue())) == -1) { return ServerResponse.createByErrorMsg("出金金额不得低于" + siteSetting.getWithMinAmt() + "元"); @@ -143,10 +143,10 @@ Calendar c = Calendar.getInstance(); c.setTime(today); int weekday = c.get(Calendar.DAY_OF_WEEK); if (weekday == 1) { if (weekday == 1 && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("周末或节假日不能出金!"); } if (weekday == 7) { if (weekday == 7 && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("周末或节假日不能出金!"); } @@ -155,15 +155,15 @@ int with_time_end = siteSetting.getWithTimeEnd().intValue(); SiteProduct siteProduct = iSiteProductService.getProductSetting(); if(!siteProduct.getTranWithdrawDisplay()){ return ServerResponse.createByErrorMsg("提款失败,当前不能出金!"); } if(siteProduct.getHolidayDisplay()){ // if(!siteProduct.getTranWithdrawDisplay()){ // return ServerResponse.createByErrorMsg("提款失败,当前不能出金!"); // } if(siteProduct.getHolidayDisplay() && siteProduct.getTranWithdrawDisplay()){ return ServerResponse.createByErrorMsg("周末或节假日不能出金!"); } if (!WithDrawUtils.checkIsWithTime(with_time_begin, with_time_end)) { if (!WithDrawUtils.checkIsWithTime(with_time_begin, with_time_end) && siteProduct.getTranWithdrawDisplay()) { return ServerResponse.createByErrorMsg("提款失败,提款时间" + with_time_begin + "点 - " + with_time_end + "点 之间"); src/main/resources/application.properties
@@ -81,8 +81,10 @@ sina.index.market.url=https://ws.api.cnyes.com/ws/api/v4/universal/quote?type=LITQ&column=L sina.single.stock.url=https://hq.sinajs.cn/list= sina.single.stock.sort.proxy.url=http://103.30.7.134:7001/crypto/getStockSort.do? sina.single.stock.proxy.url=http://103.30.7.134:7001/crypto/getSinaStock?stockGid= #sina.single.stock.sort.proxy.url=http://103.30.7.134:7001/crypto/getStockSort.do? #sina.single.stock.proxy.url=http://103.30.7.134:7001/crypto/getSinaStock?stockGid= sina.single.stock.sort.proxy.url=http://localhost:7001/crypto/getStockSort.do? sina.single.stock.proxy.url=http://localhost:7001/crypto/getSinaStock?stockGid= #???? sina.single.stock.introduction.url=https://quotes.sina.cn/cn/api/openapi.php/CompanyF10Service.getCompanyInformation?market=cn&symbol= nq.single.stock.url=http://192.168.10.5/stock/?type= src/main/resources/application.yml
@@ -104,12 +104,12 @@ datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver # url: jdbc:mysql://127.0.0.1:3306/stock_hongta_101?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: root # password: 123456 url: jdbc:mysql://127.0.0.1:3306/stock_hongta_101?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: stock_hongta_101 password: mFi7EZKGmnJFh8at username: root password: 123456 # url: jdbc:mysql://127.0.0.1:3306/stock_hongta_101?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 # username: stock_hongta_101 # password: mFi7EZKGmnJFh8at druid: # 初始连接数 initialSize: 5 src/main/resources/mapper/UserStockSubscribeMapper.xml
@@ -25,6 +25,8 @@ <result column="fix_time" property="fixTime"/> <result column="remarks" property="remarks"/> <result column="type" property="type"/> <result column="discount_price" property="discountPrice"/> </resultMap> <sql id="Base_Column_List"> @@ -48,6 +50,7 @@ end_time, fix_time, remarks, discount_price, type </sql> @@ -114,6 +117,10 @@ <if test='null != type'> type </if> <if test='null != discountPrice'> discount_price </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test='null != userId'> @@ -174,6 +181,10 @@ <if test='null != type'> #{type} </if> <if test='null != discountPrice'> #{discountPrice} </if> </trim> </insert> @@ -204,6 +215,7 @@ <if test='null != fixTime'>fix_time = #{fixTime},</if> <if test='null != remarks'>remarks = #{remarks}</if> <if test='null != type'>type = #{type}</if> <if test='null != discountPrice'>type = #{discountPrice}</if> </set> WHERE id = #{id} </update> src/main/resources/templates/中原证券商业核心信息保密协议.docxBinary files differ
src/main/resources/templates/中原证券股票分成协议(电子正式版).docBinary files differ