From ad35d23bdd072d7179eb4bfcb588975f37a68f53 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 07 May 2025 00:32:57 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/service/impl/UserAssetsServices.java | 146 ++++++++++++++++++++----------------------------
1 files changed, 62 insertions(+), 84 deletions(-)
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 88ec26c..cad5d50 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -1,15 +1,16 @@
package com.nq.service.impl;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nq.common.ServerResponse;
import com.nq.dao.*;
import com.nq.enums.EStockType;
import com.nq.enums.EUserAssets;
+import com.nq.enums.TradeType;
import com.nq.pojo.*;
import com.nq.service.IUserAssetsServices;
+import com.nq.service.TransactionLogService;
import com.nq.utils.KeyUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -20,14 +21,13 @@
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
-import java.util.function.Function;
/**
* 用户资产
*/
@Slf4j
@Service
-public class UserAssetsServices implements IUserAssetsServices {
+public class UserAssetsServices extends ServiceImpl<UserAssetsMapper, UserAssets> implements IUserAssetsServices {
@Resource
UserAssetsMapper userAssetsMapper;
@@ -50,6 +50,11 @@
@Autowired
UserPositionMapper userPositionMapper;
+ @Autowired
+ StockConfigMapper stockConfigMapper;
+
+ @Autowired
+ TransactionLogService transactionLogService;
@Override
public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
if(accetType.equals("SZHB")){
@@ -70,8 +75,11 @@
}
@Override
- public ServerResponse updateUserAssets(Integer id, String amt,String type) {
- UserAssets userAssets = userAssetsMapper.selectById(id);
+ public ServerResponse updateUserAssets(Integer id, String amt, String type, String accectType) {
+ UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class)
+ .eq(UserAssets::getId,id)
+ .eq(UserAssets::getAccectType,accectType)
+ );
UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
// 0 入款 1是扣钱 2 是充值 3 是提币
BigDecimal bigAmt = new BigDecimal(amt);
@@ -121,33 +129,11 @@
}
}else{
if(type.equals("2")){
- return userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1");
+ return userRechargeService.createOrder(accectType,userAssets.getUserId(),1,bigAmt.intValue(),"1");
}else{
return ServerResponse.createBySuccess();
}
}
- }
-
- public void saveUserRecharge(Integer userId ,BigDecimal amt){
- User user = this.userMapper.selectById(userId);
- if (user == null) {
- return;
- }
- UserRecharge userRecharge = new UserRecharge();
- userRecharge.setUserId(user.getId());
- userRecharge.setNickName(user.getRealName());
- userRecharge.setAgentId(user.getAgentId());
-
- String ordersn = KeyUtils.getRechargeOrderSn();
- userRecharge.setOrderSn(ordersn);
-
- userRecharge.setPayChannel("1");
- userRecharge.setPayAmt(new BigDecimal(amt.intValue()));
- userRecharge.setAddTime(new Date());
- userRecharge.setPayTime(new Date());
- userRecharge.setOrderStatus(Integer.valueOf(0));
- userRecharge.setPayId(1);
- userRechargeMapper.insert(userRecharge);
}
@@ -197,7 +183,23 @@
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
}
userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
- }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
+ }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.THE_DEPOSIT_WILL_BE_RETURNED_IF_THE_ORDER_IS_CANCELLED.getCode())){
+ if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+ BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
+ availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
+ if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
+ userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+ userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+ }else{
+ BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
+ userAssets.setAmountToBeCovered(amountToBeCovered);
+ }
+ }else{
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+ }
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
+ }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
extracted(amount, userAssets);
}else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TRANSFER.getCode())){
userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
@@ -239,6 +241,9 @@
userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
}
extracted(userAssets);
+ }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALL.getCode())){
+ userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
+ extracted(amount, userAssets);
}
if(null != userPosition){
@@ -257,7 +262,15 @@
moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
moneyLog.setCreateTime(new Date());
moneyLogMapper.insert(moneyLog);
- return userAssetsMapper.updateById(userAssets)>1;
+ int update = userAssetsMapper.updateById(userAssets);
+ if(update > 0){
+ if(Objects.equals(eUserAssets.getCode(), EUserAssets.HANDLING_CHARGE.getCode())){
+ amount = amount.negate();
+ }
+ transactionLogService.add(userId, eUserAssets.getDesc(),amount.toString(),eUserAssets.getDesc());
+ return true;
+ }
+ return false;
}
@Override
@@ -295,7 +308,7 @@
// 执行转账操作
try {
synchronized (userId){
- performTransfer(disbursement, deposit, transferAmount);
+ performTransfer(disbursementAccount,disbursement, deposit, transferAmount);
}
return ServerResponse.createBySuccess("划转成功", request);
} catch (Exception e) {
@@ -339,14 +352,23 @@
}
// 执行转账操作
- private void performTransfer(UserAssets disbursement, UserAssets deposit, BigDecimal transferAmount) {
- // 更新转出账户余额
- disbursement.setAvailableBalance(disbursement.getAvailableBalance().subtract(transferAmount));
- userAssetsMapper.updateById(disbursement);
-
- // 更新转入账户余额
- deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount));
- userAssetsMapper.updateById(deposit);
+ private void performTransfer(String disbursementAccount,UserAssets disbursement, UserAssets deposit, BigDecimal transferAmount) {
+ StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, "usdt_parities"));
+ if(disbursementAccount.equals("USD")){
+ // 更新转入账户余额
+ deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount.multiply(new BigDecimal(stockConfig.getCValue()))));
+ userAssetsMapper.updateById(deposit);
+ // 更新转出账户余额
+ disbursement.setAvailableBalance(disbursement.getAvailableBalance().subtract(transferAmount));
+ userAssetsMapper.updateById(disbursement);
+ }else if(disbursementAccount.equals("ST")){
+ // 更新转入账户余额
+ deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount.divide(new BigDecimal(stockConfig.getCValue()))));
+ userAssetsMapper.updateById(deposit);
+ // 更新转出账户余额
+ disbursement.setAvailableBalance(disbursement.getAvailableBalance().subtract(transferAmount));
+ userAssetsMapper.updateById(disbursement);
+ }
}
//只要涉及到cumulativeProfitAndLoss变动重新设置状态
@@ -379,48 +401,4 @@
extracted(userAssets);
}
- @Override
- public boolean saveBatch(Collection<UserAssets> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean saveOrUpdateBatch(Collection<UserAssets> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean updateBatchById(Collection<UserAssets> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean saveOrUpdate(UserAssets entity) {
- return false;
- }
-
- @Override
- public UserAssets getOne(Wrapper<UserAssets> queryWrapper, boolean throwEx) {
- return null;
- }
-
- @Override
- public Map<String, Object> getMap(Wrapper<UserAssets> queryWrapper) {
- return null;
- }
-
- @Override
- public <V> V getObj(Wrapper<UserAssets> queryWrapper, Function<? super Object, V> mapper) {
- return null;
- }
-
- @Override
- public BaseMapper<UserAssets> getBaseMapper() {
- return null;
- }
-
- @Override
- public Class<UserAssets> getEntityClass() {
- return null;
- }
}
--
Gitblit v1.9.3