ipo
zyy
2026-01-05 a516c9461d67482d669c1e64a001c06d7e28f218
ipo
6 files modified
107 ■■■■■ changed files
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java 19 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java 70 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java 3 ●●●●● patch | view | raw | blame | history
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java 3 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java 10 ●●●●● patch | view | raw | blame | history
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java 2 ●●●●● patch | view | raw | blame | history
trading-order-admin/src/main/java/com/yami/trading/admin/controller/ipo/ApplyNewSharesOrderController.java
@@ -15,6 +15,7 @@
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.*;
@@ -132,7 +133,7 @@
                if (applyNewSharesOrderService.subscribe(order)) {
                    order.setSubscribedCount(1);
                    order.setUserPromiseCount(1);
                    order.setSubscribedAmount(order.getRequiredNumber());
                    //order.setSubscribedAmount(order.getRequiredNumber());
                }
            }
            order.setStatus(model.getStatus());
@@ -140,4 +141,20 @@
        applyNewSharesOrderService.updateBatchById(list);
        return  Result.succeed();
    }
    @ApiOperation(value = "解锁")
    @PostMapping("unLock")
    public  Result unLock(String orderNo){
        if (StringUtils.isEmpty(orderNo)){
            throw new BusinessException("请选择申购订单记录");
        }
        System.out.println(orderNo);
        ApplyNewSharesOrder order= applyNewSharesOrderService.findByOrderNo(orderNo);
        if (order == null){
            throw new BusinessException("未查到订单");
        }
        order.setUnLock(1);
        applyNewSharesOrderService.updateById(order);
        return  Result.succeed();
    }
}
trading-order-admin/src/main/java/com/yami/trading/admin/task/NewSharesTask.java
@@ -1,9 +1,14 @@
package com.yami.trading.admin.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yami.trading.bean.ipo.ApplyNewSharesOrder;
import com.yami.trading.bean.ipo.UserPromiseRecord;
import com.yami.trading.bean.model.MoneyLog;
import com.yami.trading.bean.model.Wallet;
import com.yami.trading.common.constants.Constants;
import com.yami.trading.service.MoneyLogService;
import com.yami.trading.service.WalletService;
import com.yami.trading.service.ipo.ApplyNewSharesOrderService;
import com.yami.trading.service.ipo.UserPromiseRecordService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,6 +38,12 @@
    @Autowired
    UserPromiseRecordService userPromiseRecordService;
    @Autowired
    ApplyNewSharesOrderService applyNewSharesOrderService;
    @Autowired
    MoneyLogService moneyLogService;
    /**
     * 待补自动扣费
     */
@@ -45,7 +56,7 @@
        if (syncINStockDataLock.tryLock()) {
            try {
                syncINStockData.set(true);
                LambdaQueryWrapper<Wallet> queryWrapper = new LambdaQueryWrapper<>();
                /*LambdaQueryWrapper<Wallet> queryWrapper = new LambdaQueryWrapper<>();
                queryWrapper.gt(Wallet::getMoney, BigDecimal.ZERO);
                queryWrapper.gt(Wallet::getAmountToBeCovered, BigDecimal.ZERO);
                List<Wallet> walletList = walletService.list(queryWrapper);
@@ -79,9 +90,66 @@
                        }
                        walletService.updateById(wallet);
                    });
                }*/
                LambdaQueryWrapper<ApplyNewSharesOrder> queryWrapper = new LambdaQueryWrapper<>();
                queryWrapper.eq(ApplyNewSharesOrder::getSell, 0);
                queryWrapper.gt(ApplyNewSharesOrder::getSubscribedAmount, BigDecimal.ZERO);
                queryWrapper.gt(ApplyNewSharesOrder::getRequiredNumber, BigDecimal.ZERO);
                queryWrapper.apply("subscribed_amount < required_number");
                List<ApplyNewSharesOrder> orders = applyNewSharesOrderService.list(queryWrapper);
                if (!orders.isEmpty()) {
                    log.info("==================进入待补自动扣费================");
                    orders.forEach((order) -> {
                        //待补多少
                        BigDecimal amt = order.getRequiredNumber().subtract(order.getSubscribedAmount());
                        Wallet wallet =walletService.findByUserId(order.getUserId());
                        BigDecimal amountBefore = wallet.getMoney();
                        if (wallet.getMoney().compareTo(BigDecimal.ZERO) > 0) { //有钱扣款
                            Boolean isDb = false;
                            if (wallet.getMoney().compareTo(amt) >= 0) {
                                wallet.setMoney(wallet.getMoney().subtract(amt));
                                order.setSubscribedAmount(order.getSubscribedAmount().add(amt));
                                log.info("订单{}已补完待补", order.getOrderNo());
                            } else {
                                isDb = true;
                                amt = wallet.getMoney();
                                order.setSubscribedAmount(order.getSubscribedAmount().add(amt));
                                log.info("订单{}补待补{}", order.getOrderNo(), amt);
                                //资金不足 进入待补
                                wallet.setMoney(BigDecimal.ZERO);
                }
                            applyNewSharesOrderService.updateById(order);
                            walletService.updateById(wallet);
                            MoneyLog moneyLog = new MoneyLog();
                            moneyLog.setCategory(Constants.MONEYLOG_CATEGORY_IPO);
                            moneyLog.setAmountBefore(amountBefore);
                            moneyLog.setAmount(amt.negate());
                            moneyLog.setAmountAfter(amountBefore.subtract(amt).compareTo(BigDecimal.ZERO) <= 0 ?
                                    BigDecimal.ZERO : amountBefore.subtract(amt));
                            moneyLog.setLog(order.getSymbolCode() + "新股认缴补缴" + order.getOrderNo());
                            moneyLog.setUserId(order.getUserId());
                            moneyLog.setWalletType(Constants.WALLET);
                            moneyLog.setContentType(Constants.MONEYLOG_CATEGORY_IPO);
                            moneyLogService.save(moneyLog);
                            LambdaQueryWrapper<UserPromiseRecord> queryWrapper2 = new LambdaQueryWrapper<>();
                            queryWrapper2.eq(UserPromiseRecord::getUserId, wallet.getUserId());
                            queryWrapper2.eq(UserPromiseRecord::getStatus, 1);
                            queryWrapper2.eq(UserPromiseRecord::getOrderNo, order.getOrderNo());
                            UserPromiseRecord userPromiseRecord = userPromiseRecordService.getOne(queryWrapper2);
                            if (userPromiseRecord != null) {
                                userPromiseRecord.setDeductUsdt(order.getSubscribedAmount());
                                if (!isDb) { //已经缴完 确认状态
                                    userPromiseRecord.setStatus(2);
                                    log.info("订单{}已确认认缴", userPromiseRecord.getOrderNo());
                                }
                                userPromiseRecordService.updateById(userPromiseRecord);
                            }
                        }
                    });
                }
            } catch (Exception e) {
                log.error("待补自动扣费出错", e);
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/ApplyNewSharesOrder.java
@@ -53,6 +53,9 @@
    @ApiModelProperty("已认缴金额")
    private  BigDecimal  subscribedAmount;
    @ApiModelProperty("是否解锁 1 解锁 0 未解锁")
    private Integer unLock = 0;
    @ApiModelProperty("库存损益")
    @TableField(exist = false)
trading-order-bean/src/main/java/com/yami/trading/bean/ipo/dto/ApplyNewSharesOrderSharesDto.java
@@ -59,4 +59,7 @@
    @ApiModelProperty("推荐人")
    private String recomUserName;
    @ApiModelProperty("是否解锁 1 解锁 0 未解锁")
    private Integer unLock = 0;
}
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/ApplyNewSharesOrderServiceImpl.java
@@ -168,12 +168,14 @@
            BigDecimal amt = order.getRequiredNumber();
            if (wallet.getMoney().compareTo(amt) >= 0) {
                wallet.setMoney(wallet.getMoney().subtract(amt));
                order.setSubscribedAmount(amt);
            } else {
                order.setSubscribedAmount(wallet.getMoney());
                //资金不足 进入待补
                isDb = true;
                BigDecimal amountToBeCovered = amt.subtract(wallet.getMoney());
                //BigDecimal amountToBeCovered = amt.subtract(wallet.getMoney());
                wallet.setMoney(BigDecimal.ZERO);
                wallet.setAmountToBeCovered(wallet.getAmountToBeCovered().add(amountToBeCovered));
                //wallet.setAmountToBeCovered(wallet.getAmountToBeCovered().add(amountToBeCovered));
            }
            walletService.updateById(wallet);
@@ -183,7 +185,7 @@
            log.setAmount(amt.negate());
            log.setAmountAfter(amountBefore.subtract(amt).compareTo(BigDecimal.ZERO) <= 0 ?
                    BigDecimal.ZERO : amountBefore.subtract(amt));
            log.setLog(order.getSymbolCode() + "新股认缴");
            log.setLog(order.getSymbolCode() + "新股认缴" + order.getOrderNo());
            log.setUserId(order.getUserId());
            log.setWalletType(Constants.WALLET);
            log.setContentType(Constants.MONEYLOG_CATEGORY_IPO);
@@ -192,7 +194,7 @@
            UserPromiseRecord userPromiseRecord = new UserPromiseRecord();
            userPromiseRecord.setUserId(order.getUserId());
            userPromiseRecord.setDeductNumber(order.getWinningNumber());
            userPromiseRecord.setDeductUsdt(order.getRequiredNumber());
            userPromiseRecord.setDeductUsdt(order.getSubscribedAmount());
            userPromiseRecord.setStatus(isDb ? 1 : 2);
            Calendar calendar=Calendar.getInstance();
            if (newSharesConfig.getLockDay() > 0) {
trading-order-service/src/main/java/com/yami/trading/service/ipo/impl/UserPromiseRecordServiceImpl.java
@@ -97,6 +97,7 @@
         }
         if (newSharesConfig.getLockDay() > 0) {
             if (applyNewSharesOrder.getUnLock() == null || applyNewSharesOrder.getUnLock() == 0) {
             Calendar calendar = Calendar.getInstance();
             calendar.setTime(userPromiseRecords.get(0).getCreateTime());
             calendar.add(Calendar.DAY_OF_YEAR,newSharesConfig.getLockDay());
@@ -104,6 +105,7 @@
                 throw new YamiShopBindException("新股锁定中无法卖出");
             }
         }
         }
         BigDecimal usdt=new BigDecimal("0");
         if (CollectionUtil.isNotEmpty(userPromiseRecords)){