| | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.dao.StockSubscribeMapper; |
| | | import com.nq.dao.UserAssetsMapper; |
| | | import com.nq.dao.UserMapper; |
| | | import com.nq.dao.UserStockSubscribeMapper; |
| | | import com.nq.enums.EStockType; |
| | |
| | | import com.nq.utils.redis.JsonUtil; |
| | | import com.nq.utils.redis.RedisShardedPoolUtils; |
| | | import com.nq.utils.stock.BuyAndSellUtils; |
| | | import com.sun.org.apache.bcel.internal.generic.RETURN; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | @Resource |
| | | IUserAssetsServices iUserAssetsServices; |
| | | |
| | | @Autowired |
| | | UserAssetsMapper userAssetsMapper; |
| | | |
| | | /** |
| | | * 用户新股申购 |
| | | * @param model |
| | |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("code", model.getNewCode())); |
| | | //实名认证开关 |
| | | SiteProduct siteProduct = iSiteProductService.getProductSetting(); |
| | | if (siteProduct.getRealNameDisplay() && (StringUtils.isBlank(user.getRealName()) || StringUtils.isBlank(user.getIdCard()))) { |
| | | if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) { |
| | | return ServerResponse.createByErrorMsg("订单失败,请先实名认证",request); |
| | | } |
| | | |
| | |
| | | BigDecimal bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()); |
| | | BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(), user.getId()); |
| | | if(useEnaAmount.compareTo(bound)<0){ |
| | | ServerResponse.createByErrorMsg("余额不足,配售失败",request); |
| | | return ServerResponse.createByErrorMsg("余额不足,配售失败",request); |
| | | } |
| | | model.setUserId(user.getId()); |
| | | model.setNewName(stockSubscribe.getName()); |
| | |
| | | * admin 新股申购-添加和修改 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public ServerResponse save(UserStockSubscribe model, HttpServletRequest request) { |
| | | int ret = 0; |
| | | |
| | | if( model.getId() != null ){ |
| | | if (model.getStatus() == 3||model.getStatus() == 2) { |
| | | model.setEndTime(DateTimeUtil.getCurrentDate()); |
| | |
| | | return ServerResponse.createByErrorMsg("It's been converted"); |
| | | } |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()).eq("code", userStockSubscribe.getNewCode())); |
| | | if((model.getStatus() == 3 && model.getApplyNumber() == null) || (model.getStatus() == 3 && model.getApplyNumber() == 0) ){ |
| | | return ServerResponse.createByErrorMsg("中签数量不能小于0"); |
| | | } |
| | | if (model.getStatus() == 3 && model.getApplyNumber() != null){ |
| | | if(stockSubscribe.getType() == 1){ |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(model.getDbMoney()); |
| | | //客户中签直接扣除客户账户可用资金 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId()); |
| | | if(null == userAssets){ |
| | | return ServerResponse.createByErrorMsg("客户资金账户不存在"); |
| | | } |
| | | BigDecimal decimal = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(model.getApplyNumber()));//中签总价 |
| | | BigDecimal availableBalance = userAssets.getAvailableBalance().subtract(decimal);//剩余可用余额 |
| | | if(decimal.compareTo(userAssets.getAvailableBalance()) <= 0){ |
| | | userAssets.setAvailableBalance(availableBalance); |
| | | }else{ |
| | | BigDecimal amountToBeCovered = decimal.subtract(userAssets.getAvailableBalance());//待补金额 |
| | | userAssets.setAvailableBalance(BigDecimal.ZERO); |
| | | userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(amountToBeCovered)); |
| | | } |
| | | userAssetsMapper.updateById(userAssets); |
| | | ret = userStockSubscribeMapper.update1(model); |
| | | }else{ |
| | | if(model.getApplyNumber()>model.getApplyNums()){ |
| | |
| | | |
| | | return ServerResponse.createByErrorMsg("Operation failure"); |
| | | } |
| | | |
| | | /** |
| | | * 发送站内信 |
| | | */ |
| | |
| | | return ServerResponse.createByErrorMsg("余额不足",request); |
| | | } |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(), |
| | | EUserAssets.BUY,multiply,"",""); |
| | | EUserAssets.BUY,multiply.negate(),"",""); |
| | | userStockSubscribe.setDbMoney(BigDecimal.ZERO); |
| | | userStockSubscribeMapper.update1(userStockSubscribe); |
| | | return ServerResponse.createBySuccess(); |