|
|
@@ -55,6 +55,7 @@ import com.bizzan.bitrade.service.MemberTransactionService;
|
|
|
import com.bizzan.bitrade.service.MemberWalletService;
|
|
|
import com.bizzan.bitrade.service.RedisLock;
|
|
|
import com.bizzan.bitrade.service.SpotWalletSnapshotService;
|
|
|
+import com.bizzan.bitrade.service.StakingService;
|
|
|
import com.bizzan.bitrade.service.SysConfigService;
|
|
|
import com.bizzan.bitrade.service.UserPurseService;
|
|
|
import com.bizzan.bitrade.util.DateUtil;
|
|
|
@@ -119,7 +120,9 @@ public class WalletNewController {
|
|
|
private RedisTemplate<String, String> redisTemplate;
|
|
|
@Autowired
|
|
|
private FundAssetService fundAssetService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private StakingService stakingService;
|
|
|
+
|
|
|
@ApiOperation(value="根据memberId获取合约账户权益", notes="供trade项目等内部调用,返回TradingAccount实体,接收方解析balance+frozenBalance+frozenMargin计算权益")
|
|
|
@GetMapping("contract-asset-new")
|
|
|
public MessageResult<Map<String, String>> getContractAssetByMemberId(@RequestParam("memberId") Long memberId) {
|
|
|
@@ -272,11 +275,14 @@ public class WalletNewController {
|
|
|
List<StakingWallet> stakingWallets = memberWalletService.getStakingWallets(authMember.getId());
|
|
|
BigDecimal stakingLocked = BigDecimal.ZERO; // 锁定原始数量(多币种累加,仅供展示参考)
|
|
|
BigDecimal stakingLockedUsdt = BigDecimal.ZERO; // 锁定折合 USDT
|
|
|
+ BigDecimal stakingReleased = BigDecimal.ZERO; // 已释放总量(原币数量,如 iBit,不做 USDT 折算)
|
|
|
for (StakingWallet sw : stakingWallets) {
|
|
|
BigDecimal locked = sw.getLockedBalance() != null ? sw.getLockedBalance() : BigDecimal.ZERO;
|
|
|
stakingLocked = stakingLocked.add(locked);
|
|
|
- // 按币种折算 USDT:优先用现货行情,无行情时从 Redis ExchangeNew2:latestPrice 取价
|
|
|
String swUnit = sw.getCoinUnit();
|
|
|
+ BigDecimal released = stakingService.getUserReleasedAmount(authMember.getId(), swUnit);
|
|
|
+ stakingReleased = stakingReleased.add(released);
|
|
|
+ // 按币种折算 USDT:优先用现货行情,无行情时从 Redis ExchangeNew2:latestPrice 取价(仅用于锁定余额估值)
|
|
|
if ("USDT".equalsIgnoreCase(swUnit)) {
|
|
|
stakingLockedUsdt = stakingLockedUsdt.add(locked);
|
|
|
} else {
|
|
|
@@ -297,6 +303,7 @@ public class WalletNewController {
|
|
|
stakingAccountInfo.setBalanceUsdt(BigDecimal.ZERO);
|
|
|
stakingAccountInfo.setFrozenBalance(stakingLocked); // 锁定原始数量
|
|
|
stakingAccountInfo.setFrozenBalanceUsdt(stakingLockedUsdt);// 锁定折合 USDT
|
|
|
+ stakingAccountInfo.setReleasedTotal(stakingReleased); // 已释放总量(iBit 等原币)
|
|
|
stakingAccountInfo.setFrozenMargin(BigDecimal.ZERO);
|
|
|
stakingAccountInfo.setCurrentCapital(stakingLockedUsdt); // 权益使用 USDT 估值
|
|
|
cashBalance = cashBalance.add(stakingLockedUsdt); // 总资产用 USDT 估值
|