1
zj
2025-04-27 5ce072de78ae263b52dc0e2be5c7391b23c093cf
src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -5,6 +5,7 @@
import com.google.gson.Gson;
import com.nq.dao.*;
import com.nq.enums.EConfigKey;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.pay.PayUtil;
import com.nq.pojo.*;
@@ -94,6 +95,9 @@
    @Autowired
    UserAssetsMapper userAssetsMapper;
    @Autowired
    UserAssetsServices userAssetsServices;
    @Resource
    StockTimeSettingMapper stockTimeSettingMapper;
@@ -168,7 +172,7 @@
    }
    private boolean getServerResponse() {
        StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type","IN"));
        StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type", EStockType.ST.getCode()));
        if(stockTimeSetting == null){
            return false;
        }
@@ -236,11 +240,12 @@
            User user = this.userMapper.selectById(userWithdraw.getUserId());
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.ST.getCode(), user.getId());
            if (userAssets == null) {
                return ServerResponse.createByErrorMsg("用户资金账户不存在");
            }
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
            int updateUserCount = userAssetsMapper.updateById(userAssets);
            if (updateUserCount > 0) {
@@ -329,6 +334,7 @@
    }
    @Transactional
    public ServerResponse updateState(Integer withId, Integer state, String authMsg) throws Exception {
        UserWithdraw userWithdraw = this.userWithdrawMapper.selectByPrimaryKey(withId);
        SiteSetting siteSetting = siteSettingService.getSiteSetting();
@@ -342,18 +348,29 @@
        if (state.intValue() == 3 &&
                StringUtils.isBlank(authMsg)) {
            return ServerResponse.createByErrorMsg("失败信息必填");
        }
        User user = this.userMapper.selectById(userWithdraw.getUserId());
        if (user == null) {
            return ServerResponse.createByErrorMsg("用户不存在");
        }
        UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.ST.getCode(), user.getId());
        if (userAssets == null) {
            return ServerResponse.createByErrorMsg("用户资金账户不存在");
        }
        if (state == 3) {
            User user = this.userMapper.selectById(userWithdraw.getUserId());
            if (user == null) {
                return ServerResponse.createByErrorMsg("用户不存在");
            if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
                BigDecimal subtract = userWithdraw.getWithAmt().subtract(userAssets.getAmountToBeCovered());
                if(subtract.compareTo(BigDecimal.ZERO) > 0){
                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(subtract));
                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(subtract));
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                }else{
                    userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(userWithdraw.getWithAmt()));
                }
            }else{
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
                userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
            }
            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
            if (userAssets == null) {
                return ServerResponse.createByErrorMsg("用户资金账户不存在");
            }
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
            int updateCount = userAssetsMapper.updateById(userAssets);
            if (updateCount > 0) {
                log.info("提现失败,返还用户资金成功!");
@@ -362,7 +379,11 @@
                throw new Exception("修改用户资金出错,抛出异常");
            }
            userWithdraw.setWithMsg(authMsg);
        }else{
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
            userAssetsMapper.updateById(userAssets);
        }
        userWithdraw.setWithStatus(state);
        userWithdraw.setTransTime(new Date());
        int updateCount = this.userWithdrawMapper.updateByPrimaryKeySelective(userWithdraw);