jack
2024-04-22 26581a43d52f6f6e62607c51b8224cdc50191a80
src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -2,14 +2,19 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.nq.common.ServerResponse;
import com.nq.dao.MoneyLogMapper;
import com.nq.dao.UserAssetsMapper;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
import com.nq.pojo.MoneyLog;
import com.nq.pojo.UserAssets;
import com.nq.service.IUserAssetsServices;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
@@ -22,6 +27,14 @@
    @Resource
    UserAssetsMapper userAssetsMapper;
    @Resource
    MoneyLogMapper moneyLogMapper;
    @Autowired
    UserRechargeServiceImpl userRechargeService;
    @Autowired
    UserWithdrawServiceImpl withdrawService;
    @Override
    public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
@@ -43,22 +56,30 @@
    }
    @Override
    public ServerResponse updateUserAssets(Integer id, String amt) {
    public ServerResponse updateUserAssets(Integer id, String amt,String type) {
        UserAssets userAssets = userAssetsMapper.selectById(id);
        //  0 入款  1是扣钱  2 是充值  3 是提币
        BigDecimal bigAmt = new BigDecimal(amt);
        if(amt.contains("-")){
            if(userAssets.getAvailableBalance().compareTo(bigAmt.negate())<0){
                return ServerResponse.createByErrorMsg("账户余额不足");
        if(type.equals("0") || type.equals("1 ")){
            if(type.equals("1")){
                bigAmt = bigAmt.negate();
            }
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
            if( userAssetsMapper.updateById(userAssets)>0){
                return ServerResponse.createBySuccess();
            }else{
                return ServerResponse.createByErrorMsg("修改金额失败");
            }
        }else{
            if(type.equals("2")){
                return  userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1");
            }else{
                return ServerResponse.createBySuccess();
            }
        }
        userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
        if( userAssetsMapper.updateById(userAssets)>0){
            return ServerResponse.createBySuccess();
        }else{
            return ServerResponse.createByErrorMsg("修改金额失败");
        }
    }
@@ -81,30 +102,45 @@
    @Override
    public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) {
        if(accetType.equals("SZHB")){
            accetType = "US";
        }
        UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
        String type = eUserAssets.getDesc();
        String before = userAssets.getAvailableBalance().toString();
        String accectType = userAssets.getAccectType();
       if(Objects.equals(eUserAssets.getCode(), EUserAssets.BUY.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.negate()));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
            userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
            userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount.abs()));
        }else  if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION_RETURN_SECURITY_DEPOSIT.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
            userAssets.setCumulativeProfitAndLoss(userAssets.getProfitAndLoss().add(amount));
            userAssets.setCumulativeProfitAndLoss(userAssets.getProfitAndLoss().add(amount.abs()));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TRANSFER.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
           eUserAssets.setDesc(desc);
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TOP_UP.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.WITHDRAW.getCode())){
            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
        }
        //TODO 添加日志
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.HANDLING_CHARGE.getCode())){
           userAssets.setHandlingCharge(userAssets.getHandlingCharge().add(amount.abs()));
           userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
       }
        String  after =  userAssets.getAvailableBalance().toString();
        MoneyLog moneyLog = new MoneyLog();
        moneyLog.setDescs(eUserAssets.getDesc());
        moneyLog.setBeFore(before);
        moneyLog.setAfter(after);
        moneyLog.setAmount(amount.toString());
        moneyLog.setAccectType(accectType);
        moneyLog.setType(eUserAssets.getCode());
        moneyLog.setUserId(userId+"");
        moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
        moneyLog.setCreateTime(new Date());
        moneyLogMapper.insert(moneyLog);
        return userAssetsMapper.updateById(userAssets)>1;
    }
}