|
|
@@ -1,18 +1,18 @@
|
|
|
package com.izouma.yags.service;
|
|
|
|
|
|
+import com.izouma.yags.config.Constants;
|
|
|
import com.izouma.yags.domain.BalanceRecord;
|
|
|
import com.izouma.yags.domain.UserBalance;
|
|
|
-import com.izouma.yags.enums.BalanceType;
|
|
|
import com.izouma.yags.exception.BusinessException;
|
|
|
import com.izouma.yags.repo.BalanceRecordRepo;
|
|
|
import com.izouma.yags.repo.UserBalanceRepo;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.core.env.Environment;
|
|
|
-import org.springframework.data.jpa.repository.Lock;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import javax.persistence.LockModeType;
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -26,6 +26,52 @@ public class UserBalanceService {
|
|
|
private final SysConfigService sysConfigService;
|
|
|
private final Environment env;
|
|
|
|
|
|
+ @PostConstruct
|
|
|
+ public void init() {
|
|
|
+ balanceRecordRepo.findAll().stream().parallel().forEach(b -> {
|
|
|
+ if (StringUtils.isEmpty(b.getBalanceDesc())) {
|
|
|
+ switch (b.getType()) {
|
|
|
+ case WITHDRAW:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.WITHDRAW);
|
|
|
+ break;
|
|
|
+ case SELL:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.SELL);
|
|
|
+ break;
|
|
|
+ case AUCTION:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.AUCTION);
|
|
|
+ break;
|
|
|
+ case AUCTION_RETURN:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.AUCTION_RETURN);
|
|
|
+ break;
|
|
|
+ case REWARD:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.REWARD);
|
|
|
+ break;
|
|
|
+ case RETURN:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.RETURN);
|
|
|
+ break;
|
|
|
+ case PAY:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.PAY);
|
|
|
+ break;
|
|
|
+ case RECHARGE:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.RECHARGE);
|
|
|
+ break;
|
|
|
+ case DENY:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.DENY);
|
|
|
+ break;
|
|
|
+ case BONUS:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.BONUS);
|
|
|
+ break;
|
|
|
+ case REFUND:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.REFUND);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ b.setBalanceDesc(Constants.BalanceDesc.OTHER);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
public BalanceRecord balancePay(Long userId, BigDecimal amount, Long orderId, String remark) {
|
|
|
UserBalance userBalance = userBalanceRepo.findById(userId).orElseThrow(new BusinessException("余额不足"));
|
|
|
if (userBalance.getBalance().compareTo(amount) < 0) {
|
|
|
@@ -39,7 +85,7 @@ public class UserBalanceService {
|
|
|
.userId(userId)
|
|
|
.balance(userBalance.getBalance())
|
|
|
.lastBalance(userBalance.getLastBalance())
|
|
|
- .type(BalanceType.PAY)
|
|
|
+ .balanceDesc(Constants.BalanceDesc.PAY)
|
|
|
.amount(amount.negate())
|
|
|
.time(LocalDateTime.now())
|
|
|
.orderId(orderId)
|
|
|
@@ -48,7 +94,7 @@ public class UserBalanceService {
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
- public void modifyBalance(Long userId, BigDecimal amount, BalanceType type) {
|
|
|
+ public void modifyBalance(Long userId, BigDecimal amount, String balanceDesc) {
|
|
|
UserBalance userBalance = userBalanceRepo.findByUserId(userId).orElse(new UserBalance(userId));
|
|
|
userBalance.setLastBalance(userBalance.getBalance());
|
|
|
userBalance.setBalance(userBalance.getBalance().add(amount));
|
|
|
@@ -57,7 +103,7 @@ public class UserBalanceService {
|
|
|
.userId(userId)
|
|
|
.balance(userBalance.getBalance())
|
|
|
.lastBalance(userBalance.getLastBalance())
|
|
|
- .type(type)
|
|
|
+ .balanceDesc(balanceDesc)
|
|
|
.amount(amount)
|
|
|
.time(LocalDateTime.now())
|
|
|
.build());
|