| | |
| | | import com.github.pagehelper.PageHelper; |
| | | 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.dao.*; |
| | | import com.nq.enums.EStockType; |
| | | import com.nq.enums.EUserAssets; |
| | | import com.nq.pojo.*; |
| | | import com.nq.service.*; |
| | | import com.nq.utils.ConverterUtil; |
| | | import com.nq.utils.timeutil.DateTimeUtil; |
| | | import com.nq.utils.KeyUtils; |
| | | import com.nq.utils.PropertiesUtil; |
| | | import com.nq.utils.redis.JsonUtil; |
| | | import com.nq.utils.redis.RedisShardedPoolUtils; |
| | | import com.nq.utils.stock.BuyAndSellUtils; |
| | | import com.nq.vo.stock.UserStockSubscribeVo; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import java.util.stream.Stream; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * 新股申购 |
| | | * @author lr |
| | | * @date 2020/07/24 |
| | | */ |
| | | @Service |
| | | @Service("IUserStockSubscribeService") |
| | | @Slf4j |
| | | public class UserStockSubscribeServiceImpl implements IUserStockSubscribeService { |
| | | |
| | | @Resource |
| | | private UserStockSubscribeMapper userStockSubscribeMapper; |
| | | |
| | | @Autowired |
| | | @Resource |
| | | UserMapper userMapper; |
| | | |
| | | @Resource |
| | | AgentUserMapper agentUserMapper; |
| | | @Autowired |
| | | ISiteMessageService iSiteMessageService; |
| | | @Autowired |
| | |
| | | ISiteSettingService iSiteSettingService; |
| | | @Autowired |
| | | TradingHourServiceImpl tradingHourService; |
| | | @Resource |
| | | IUserAssetsServices iUserAssetsServices; |
| | | @Autowired |
| | | UserAssetsServices userAssetsServices; |
| | | @Autowired |
| | | UserAssetsMapper userAssetsMapper; |
| | | StockMapper stockMapper; |
| | | /** |
| | | * 用户新股申购 |
| | | * @param model |
| | |
| | | public ServerResponse insert(UserStockSubscribe model, HttpServletRequest request) throws Exception { |
| | | int ret = 0; |
| | | if (model == null) { |
| | | return ServerResponse.createByErrorMsg("Parameter error"); |
| | | return ServerResponse.createByErrorMsg("参数错误",request); |
| | | } |
| | | String property = PropertiesUtil.getProperty("user.cookie.name"); |
| | | String header = request.getHeader(property); |
| | | if (header != null) { |
| | | User user = this.iUserService.getCurrentRefreshUser(request); |
| | | if (user == null){ |
| | | return ServerResponse.createBySuccessMsg("請先登錄"); |
| | | } |
| | | User user = iUserService.getCurrentRefreshUser(request); |
| | | if (model.getNewCode() != null) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("code", model.getNewCode())); |
| | | //实名认证开关 |
| | | SiteProduct siteProduct = iSiteProductService.getProductSetting(); |
| | | if (user.getIsActive() != 2) { |
| | | return ServerResponse.createByErrorMsg("Order failed, please first real name authentication"); |
| | | if (siteProduct.getRealNameDisplay() && (StringUtils.isBlank(user.getRealName()) || StringUtils.isBlank(user.getIdCard()))) { |
| | | return ServerResponse.createByErrorMsg("订单失败,请先实名认证",request); |
| | | } |
| | | if(new Date().before(stockSubscribe.getSubscribeTime())){ |
| | | return ServerResponse.createByErrorMsg("未到申购时间",request); |
| | | } |
| | | //重复申购限制 |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq("new_code", model.getNewCode()).eq("user_id", user.getId())); |
| | | if (userStockSubscribe != null) { |
| | | return ServerResponse.createByErrorMsg("请勿重复申购",request); |
| | | } |
| | | if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) { |
| | | return ServerResponse.createByErrorMsg("Order failed, account has been locked"); |
| | | return ServerResponse.createByErrorMsg("订单失败,帐户已被锁定",request); |
| | | } |
| | | if (stockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("The new stock code does not exist"); |
| | | return ServerResponse.createByErrorMsg("新的股票代码不存在",request); |
| | | } |
| | | if(System.currentTimeMillis() < stockSubscribe.getSubscribeTime().getTime()){ |
| | | return ServerResponse.createByErrorMsg("It is not time to apply for purchase"); |
| | | if (model.getApplyNums() == null || model.getApplyNums() > stockSubscribe.getOrderNumber() || model.getApplyNums() < stockSubscribe.getMinOrderNumber()) { |
| | | return ServerResponse.createByErrorMsg("申购失败,最小申购数量:"+stockSubscribe.getMinOrderNumber()+",最大申购数量:"+stockSubscribe.getOrderNumber(),request); |
| | | } |
| | | if(System.currentTimeMillis() > stockSubscribe.getSubscribeEndTime().getTime()){ |
| | | return ServerResponse.createByErrorMsg("The application time has passed"); |
| | | } |
| | | if(model.getApplyNums() < stockSubscribe.getOrderMinNumber()){ |
| | | return ServerResponse.createByErrorMsg("The number of configurations cannot be less than"+stockSubscribe.getOrderMinNumber()); |
| | | } |
| | | UserAssets userAssets = userAssetsServices.selectByUserId(user.getId(), EStockType.IN.getCode()); |
| | | if(stockSubscribe.getType() == 2){ |
| | | BigDecimal multiply = stockSubscribe.getPrice().multiply(new BigDecimal(model.getApplyNums())); |
| | | if(userAssets.getAvailableBalance().compareTo(multiply) < 0){ |
| | | return ServerResponse.createByErrorMsg("not sufficient funds"); |
| | | if (stockSubscribe.getType() == 2) { |
| | | int u = userMapper.updateById(user); |
| | | if (u <= 0) { |
| | | return ServerResponse.createByErrorMsg("由于未知原因,申请失败",request); |
| | | } |
| | | } |
| | | |
| | | BigDecimal price = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()); |
| | | model.setUserId(user.getId()); |
| | | model.setNewName(stockSubscribe.getName()); |
| | | model.setAgentId(user.getAgentId()); |
| | | model.setAgentName(user.getAgentName()); |
| | | model.setPhone(user.getPhone()); |
| | | model.setBuyPrice(stockSubscribe.getPrice()); |
| | | model.setBond(price); |
| | | model.setBond(new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice())); |
| | | model.setRealName(Objects.equals(user.getRealName(), "")||user.getRealName()==null ?"模拟用户无实名":user.getRealName()); |
| | | model.setAddTime(new Date()); |
| | | model.setOrderNo(KeyUtils.getUniqueKey()); |
| | | model.setType(stockSubscribe.getType()); |
| | | } |
| | | |
| | | //如果是配售 |
| | | if (stockSubscribe.getType() == 2) { |
| | | //直接转已认缴 |
| | | model.setStatus(4); |
| | | model.setApplyNumber(model.getApplyNums()); |
| | | userAssets.setAvailableBalance(userAssets.getAvailableBalance().subtract(price)); |
| | | } |
| | | userStockSubscribeMapper.insert(model); |
| | | userAssetsMapper.updateById(userAssets); |
| | | return ServerResponse.createBySuccessMsg("Successful application"); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("申购成功",request); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("申购失败",request); |
| | | } |
| | | } |
| | | return ServerResponse.createByErrorMsg("Not logged in"); |
| | | return ServerResponse.createByErrorMsg("申购失败",request); |
| | | } |
| | | @Override |
| | | public int update(UserStockSubscribe model) { |
| | |
| | | @Override |
| | | public ServerResponse save(UserStockSubscribe model, HttpServletRequest request) { |
| | | int ret = 0; |
| | | // log.info("model"+model); |
| | | if( model.getId() != null ){ |
| | | if (model.getStatus() == 3||model.getStatus() == 2) { |
| | | model.setEndTime(DateTimeUtil.getCurrentDate()); |
| | | } |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.load(model.getId()); |
| | | if (userStockSubscribe.getStatus() == 5) { |
| | | return ServerResponse.createByErrorMsg("It's been converted"); |
| | | } |
| | | // else if (userStockSubscribe.getStatus() == 3) { |
| | | // return ServerResponse.createByErrorMsg("已经审核过并且中签了,无法再次更改状态"); |
| | | // }else if (userStockSubscribe.getStatus() == 2) { |
| | | // return ServerResponse.createByErrorMsg("已经审核过并且未中签"); |
| | | // } |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()).eq("code", userStockSubscribe.getNewCode())); |
| | | if (model.getStatus() == 3 && model.getApplyNumber() != null){ |
| | | if(stockSubscribe.getOrderNumber()< model.getApplyNumber()){ |
| | | return ServerResponse.createByErrorMsg("The number of successful applications exceeds the maximum number of applications"); |
| | | } |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | ret = userStockSubscribeMapper.updateById(model); |
| | | ret = userStockSubscribeMapper.update1(model); |
| | | }else if (model.getStatus() == 2){ |
| | | ret = userStockSubscribeMapper.updateById(model); |
| | | }else if (model.getStatus() == 4){ |
| | | return iUserPositionService.newStockToPosition(model.getId()); |
| | | ret = userStockSubscribeMapper.update1(model); |
| | | }else if (model.getStatus() == 5){ |
| | | return iUserPositionService.newStockToPosition(model.getId()); |
| | | |
| | | } |
| | | if(ret>0 && model.getStatus() == 3 ){ |
| | | //给用户推送消息 |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | | siteMessage.setUserId(userStockSubscribe.getUserId()); |
| | | siteMessage.setUserName(userStockSubscribe.getRealName()); |
| | | siteMessage.setTypeName("New share subscription"); |
| | | siteMessage.setStatus(1); |
| | | siteMessage.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | siteMessage.setContent("【新股申购中签】恭喜您,新股申购中签成功,申购金额:" + userStockSubscribe.getBond() + ",请及时关注哦。"); |
| | | iSiteMessageService.insert(siteMessage); |
| | | }else if(ret>0 && model.getStatus() == 2) { |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | | siteMessage.setUserId(userStockSubscribe.getUserId()); |
| | | siteMessage.setUserName(userStockSubscribe.getRealName()); |
| | | siteMessage.setTypeName("新股申购"); |
| | | siteMessage.setStatus(1); |
| | | siteMessage.setContent("【新股申购未中签】很遗憾,您的新股申购本次未中签,申购金额:" + userStockSubscribe.getBond() + "已退还。"); |
| | | siteMessage.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | iSiteMessageService.insert(siteMessage); |
| | | |
| | | if(ret>0 && model.getStatus() == 3 ){ |
| | | //给用户推送消息 |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | | siteMessage.setUserId(userStockSubscribe.getUserId()); |
| | | siteMessage.setUserName(userStockSubscribe.getRealName()); |
| | | siteMessage.setTypeName("New share subscription"); |
| | | siteMessage.setStatus(1); |
| | | |
| | | siteMessage.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | |
| | | siteMessage.setContent("【新股申购中签】恭喜您,新股申购中签成功,申购金额:"+ userStockSubscribe.getBond() ); |
| | | iSiteMessageService.insert(siteMessage); |
| | | }else |
| | | if(ret>0 && model.getStatus() == 2) { |
| | | //给达到消息强平提醒用户推送消息 |
| | | if (stockSubscribe.getType() != 2) { |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | | siteMessage.setUserId(userStockSubscribe.getUserId()); |
| | | siteMessage.setUserName(userStockSubscribe.getRealName()); |
| | | siteMessage.setTypeName("新股申购"); |
| | | siteMessage.setStatus(1); |
| | | siteMessage.setContent("【新股申购未中签】很遗憾,您的新股申购本次未中签,申购金额:" + userStockSubscribe.getBond() + "。"); |
| | | siteMessage.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | iSiteMessageService.insert(siteMessage); |
| | | }else { |
| | | User user = userMapper.selectById(userStockSubscribe.getUserId()); |
| | | userMapper.updateByPrimaryKey(user); |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | | siteMessage.setUserId(userStockSubscribe.getUserId()); |
| | | siteMessage.setUserName(userStockSubscribe.getRealName()); |
| | | siteMessage.setTypeName("新股申购"); |
| | | siteMessage.setStatus(1); |
| | | siteMessage.setContent("【新股申购未中签】很遗憾,您的新股申购本次未中签,申购金额:" + userStockSubscribe.getBond() + "已退还。"); |
| | | siteMessage.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | iSiteMessageService.insert(siteMessage); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } else{ |
| | | if(model.getPhone() != null&&model.getId()==null) { |
| | | User user = userMapper.findByPhone(model.getPhone()); |
| | | if (user == null) { |
| | | return ServerResponse.createByErrorMsg("User does not exist"); |
| | | } |
| | | model.setRealName(user.getRealName()); |
| | | model.setUserId(user.getId()); |
| | | model.setAgentId(user.getAgentId()); |
| | | model.setAgentName(user.getAgentName()); |
| | | |
| | | |
| | | // String cookie_name = PropertiesUtil.getProperty("admin.cookie.name"); |
| | | // String logintoken = CookieUtils.readLoginToken(request, cookie_name); |
| | | // String adminJson = RedisShardedPoolUtils.get(logintoken); |
| | | // SiteAdmin siteAdmin = (SiteAdmin) JsonUtil.string2Obj(adminJson, SiteAdmin.class); |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()).eq("code", model.getNewCode())); |
| | | if (stockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("Failed. Ipo information does not exist"); |
| | | } |
| | | |
| | | model.setNewName(stockSubscribe.getName()); |
| | | model.setBuyPrice(stockSubscribe.getPrice()); |
| | | if (model.getApplyNums() > stockSubscribe.getOrderNumber() || model.getApplyNumber() > stockSubscribe.getOrderNumber()) { |
| | | return ServerResponse.createByErrorMsg("The number of applications or the number of wins is the maximum" + stockSubscribe.getOrderNumber()); |
| | | } |
| | | model.setBond(model.getBuyPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setAddTime(DateTimeUtil.getCurrentDate()); |
| | | model.setOrderNo(KeyUtils.getUniqueKey()); |
| | | model.setType(stockSubscribe.getType()); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | } |
| | | } |
| | | if(ret>0){ |
| | |
| | | if(model!=null){ |
| | | //所有人发站内信 |
| | | if(model.getUserId() == 0){ |
| | | List<User> users = this.userMapper.listByAdmin(null, null, null, null); |
| | | List<User> users = this.userMapper.listByAdmin(null, null, null, null,null); |
| | | for(int k=0;k<users.size();k++){ |
| | | User user = users.get(k); |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | |
| | | |
| | | /*新股申购-查询列表*/ |
| | | @Override |
| | | public ServerResponse<PageInfo> getList(int pageNum, int pageSize, String keyword, Integer type,HttpServletRequest request){ |
| | | public ServerResponse<PageInfo> getList(int pageNum, int pageSize, String keyword, HttpServletRequest request){ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | List<UserStockSubscribe> listData = this.userStockSubscribeMapper.pageList(pageNum, pageSize, keyword,type); |
| | | |
| | | // 收集所有的userId |
| | | List<Integer> userIds = listData.stream().map(UserStockSubscribe::getUserId).collect(Collectors.toList()); |
| | | |
| | | // 一次性查询所有的用户信息 |
| | | List<User> userList = userMapper.selectBatchIds(userIds); |
| | | List<UserStockSubscribeVo> subscribeVoList = new ArrayList<>(); |
| | | // 遍历listData,将查询到的用户信息填充到UserStockSubscribeVo中 |
| | | listData.forEach(f -> { |
| | | User user = userList.stream().filter(u -> u.getId().equals(f.getUserId())).findFirst().orElse(null); |
| | | UserAssets userAssets = userAssetsServices.selectByUserId(user.getId(), EStockType.IN.getCode()); |
| | | if (user != null) { |
| | | UserStockSubscribeVo userStockSubscribeVo = ConverterUtil.convert(f, UserStockSubscribeVo.class); |
| | | BigDecimal divide = userAssets.getAvailableBalance().divide(userStockSubscribeVo.getBuyPrice(), 0, RoundingMode.HALF_UP); |
| | | userStockSubscribeVo.setMaxSubscribeNum(divide.intValue()); |
| | | subscribeVoList.add(userStockSubscribeVo); |
| | | } |
| | | }); |
| | | |
| | | PageInfo pageInfo = new PageInfo(subscribeVoList); |
| | | pageInfo.setList(subscribeVoList); |
| | | List<UserStockSubscribe> listData = this.userStockSubscribeMapper.pageList(pageNum, pageSize, keyword); |
| | | PageInfo pageInfo = new PageInfo(listData); |
| | | pageInfo.setList(listData); |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | | |
| | | } |
| | | |
| | | /*新股申购-查询详情*/ |
| | |
| | | String property = PropertiesUtil.getProperty("user.cookie.name"); |
| | | String header = request.getHeader(property); |
| | | if (header != null) { |
| | | String userJson = RedisShardedPoolUtils.get(header); |
| | | User user = (User) JsonUtil.string2Obj(userJson, User.class); |
| | | if (user == null) { |
| | | return ServerResponse.createByErrorMsg("User not logged in"); |
| | | } |
| | | User user = iUserService.getCurrentRefreshUser(request); |
| | | List<UserStockSubscribe> userStockSubscribe = null; |
| | | if (type==null||type.equals("")){ |
| | | userStockSubscribe = this.userStockSubscribeMapper.selectList(new QueryWrapper<>(new UserStockSubscribe()).eq("user_id", user.getId()).orderByDesc("add_time")); |
| | |
| | | } |
| | | return ServerResponse.createBySuccess(list); |
| | | } |
| | | return ServerResponse.createByErrorMsg("Please log in first"); |
| | | return ServerResponse.createByErrorMsg("请先登录",request); |
| | | } |
| | | /** |
| | | * 新股申购-用户提交金额 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public ServerResponse userSubmit(Integer id, HttpServletRequest request) { |
| | | public ServerResponse userSubmit(Integer id,HttpServletRequest request) { |
| | | int ret = 0; |
| | | String property = PropertiesUtil.getProperty("user.cookie.name"); |
| | | String header = request.getHeader(property); |
| | | if (header != null) { |
| | | String userJson = RedisShardedPoolUtils.get(header); |
| | | User user = (User) JsonUtil.string2Obj(userJson, User.class); |
| | | if (user == null) { |
| | | return ServerResponse.createByErrorMsg("User not logged in"); |
| | | } |
| | | if (id == null) { |
| | | return ServerResponse.createByErrorMsg("Parameter error"); |
| | | User user = iUserService.getCurrentRefreshUser(request); |
| | | if(id == null){ |
| | | return ServerResponse.createByErrorMsg("参数错误",request); |
| | | } |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.load(id); |
| | | log.info("userStockSubscribe:{}", userStockSubscribe); |
| | | if (userStockSubscribe != null && userStockSubscribe.getUserId().equals(user.getId())) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()).eq("code", userStockSubscribe.getNewCode())); |
| | | if (userStockSubscribe.getType() == 2) { |
| | | return ServerResponse.createByErrorMsg("No payment is required for offline placement"); |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()) |
| | | .eq("code", userStockSubscribe.getNewCode())); |
| | | if(userStockSubscribe.getStatus()== 2 ){ |
| | | return ServerResponse.createByErrorMsg("未中签,无需支付",request); |
| | | } |
| | | //判断是否到了认缴时间 |
| | | if (System.currentTimeMillis() < stockSubscribe.getSubscriptionTime().getTime()) { |
| | | return ServerResponse.createByErrorMsg("The subscription time is not up"); |
| | | if(null == stockSubscribe){ |
| | | return ServerResponse.createByErrorMsg("新股不存在",request); |
| | | } |
| | | //判断是否已过认缴时间 |
| | | if (stockSubscribe.getSubscriptionEndTime().getTime() < System.currentTimeMillis()) { |
| | | return ServerResponse.createByErrorMsg("The subscription time has passed"); |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockCode, stockSubscribe.getCode())); |
| | | if(null == stock){ |
| | | return ServerResponse.createByErrorMsg("股票不存在",request); |
| | | } |
| | | if (userStockSubscribe.getStatus() == 3) { |
| | | userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate()); |
| | | userStockSubscribe.setStatus(4); |
| | | BigDecimal bigDecimal = iUserAssetsServices. |
| | | getAvailableBalance(stock.getStockType(), |
| | | userStockSubscribe.getUserId()); |
| | | |
| | | UserAssets userAssets = userAssetsServices.selectByUserId(userStockSubscribe.getUserId(), EStockType.IN.getCode()); |
| | | if (userAssets.getAvailableBalance().compareTo(userStockSubscribe.getBond()) < 0) { |
| | | return ServerResponse.createByErrorMsg("Insufficient balance"); |
| | | BigDecimal multiply = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(userStockSubscribe.getApplyNumber())); |
| | | if(bigDecimal.compareTo(multiply) < 0){ |
| | | return ServerResponse.createByErrorMsg("余额不足",request); |
| | | } |
| | | BigDecimal enableAmt = userAssets.getAvailableBalance().subtract(userStockSubscribe.getBond()); |
| | | userAssets.setAvailableBalance(enableAmt); |
| | | ret = userAssetsMapper.updateById(userAssets); |
| | | iUserAssetsServices.availablebalanceChange(stock.getStockType(),userStockSubscribe.getUserId(), |
| | | EUserAssets.BUY,multiply.negate(),"",""); |
| | | userStockSubscribeMapper.update1(userStockSubscribe); |
| | | return ServerResponse.createBySuccess(); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("There is no fee for unsuccessful applicants"); |
| | | return ServerResponse.createByErrorMsg("不成功的申请者不收取任何费用",request); |
| | | } |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("New share subscription order does not exist!"); |
| | | } |
| | | |
| | | if (ret > 0) { |
| | | ret = userStockSubscribeMapper.update1(userStockSubscribe); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("Successful operation"); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("Operation failure"); |
| | | } |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("Deduction failure"); |
| | | return ServerResponse.createByErrorMsg("新股认购订单不存在!",request); |
| | | } |
| | | } |
| | | return ServerResponse.createByErrorMsg("Please log in first"); |
| | | return ServerResponse.createByErrorMsg("请先登录",request); |
| | | } |
| | | /** |
| | | * 新股申购-删除 |
| | |
| | | return ServerResponse.createByErrorMsg("Operation failure"); |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse backgroundPurchase(Integer id) { |
| | | int ret = 0; |
| | | if (id == null) { |
| | | return ServerResponse.createByErrorMsg("Parameter error"); |
| | | } |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.load(id); |
| | | User user = userMapper.selectById(userStockSubscribe.getUserId()); |
| | | log.info("userStockSubscribe:{}", userStockSubscribe); |
| | | if (userStockSubscribe != null && userStockSubscribe.getUserId().equals(user.getId())) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()).eq("code", userStockSubscribe.getNewCode())); |
| | | if (userStockSubscribe.getType() == 2) { |
| | | return ServerResponse.createByErrorMsg("No payment is required for offline placement"); |
| | | } |
| | | //判断是否到了认缴时间 |
| | | if (System.currentTimeMillis() < stockSubscribe.getSubscriptionTime().getTime()) { |
| | | return ServerResponse.createByErrorMsg("The subscription time is not up"); |
| | | } |
| | | //判断是否已过认缴时间 |
| | | if (stockSubscribe.getSubscriptionEndTime().getTime() < System.currentTimeMillis()) { |
| | | return ServerResponse.createByErrorMsg("The subscription time has passed"); |
| | | } |
| | | if (userStockSubscribe.getStatus() == 3) { |
| | | userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate()); |
| | | userStockSubscribe.setStatus(4); |
| | | |
| | | UserAssets userAssets = userAssetsServices.selectByUserId(userStockSubscribe.getUserId(), EStockType.IN.getCode()); |
| | | if (userAssets.getAvailableBalance().compareTo(userStockSubscribe.getBond()) < 0) { |
| | | return ServerResponse.createByErrorMsg("Insufficient balance"); |
| | | } |
| | | BigDecimal enableAmt = userAssets.getAvailableBalance().subtract(userStockSubscribe.getBond()); |
| | | userAssets.setAvailableBalance(enableAmt); |
| | | ret = userAssetsMapper.updateById(userAssets); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("There is no fee for unsuccessful applicants"); |
| | | } |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("New share subscription order does not exist!"); |
| | | } |
| | | if (ret > 0) { |
| | | ret = userStockSubscribeMapper.update1(userStockSubscribe); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("Successful operation"); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("Operation failure"); |
| | | } |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("Deduction failure"); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | } |