|
|
@@ -11,10 +11,7 @@ import com.izouma.nineth.converter.StringArrayConverter;
|
|
|
import com.izouma.nineth.domain.Collection;
|
|
|
import com.izouma.nineth.domain.*;
|
|
|
import com.izouma.nineth.dto.*;
|
|
|
-import com.izouma.nineth.enums.AuthStatus;
|
|
|
-import com.izouma.nineth.enums.CollectionSource;
|
|
|
-import com.izouma.nineth.enums.CollectionType;
|
|
|
-import com.izouma.nineth.enums.OrderStatus;
|
|
|
+import com.izouma.nineth.enums.*;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
import com.izouma.nineth.repo.*;
|
|
|
import com.izouma.nineth.utils.JpaUtils;
|
|
|
@@ -72,6 +69,8 @@ public class CollectionService {
|
|
|
private OrderRepo orderRepo;
|
|
|
private TokenHistoryRepo tokenHistoryRepo;
|
|
|
private TagRepo tagRepo;
|
|
|
+ private UserBalanceService userBalanceService;
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
|
|
|
private final Map<Long, ScheduledFuture<?>> tasks = new HashMap<>();
|
|
|
|
|
|
@@ -182,8 +181,17 @@ public class CollectionService {
|
|
|
page.getPageable().getPageSize(), page.getTotalElements());
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
public Collection create(Collection record) {
|
|
|
User minter = userRepo.findById(record.getMinterId()).orElse(SecurityUtils.getAuthenticatedUser());
|
|
|
+ if (record.getCompanyId() != 1L) {
|
|
|
+ BigDecimal price = sysConfigService.getBigDecimal("company_collection_price");
|
|
|
+ BigDecimal totalPrice = new BigDecimal(record.getTotal()).multiply(price);
|
|
|
+ if (!userBalanceService.checkBalance(record.getCompanyId(), totalPrice)) {
|
|
|
+ throw new BusinessException("余额不足");
|
|
|
+ }
|
|
|
+ userBalanceService.modifyBalance(record.getCompanyId(), totalPrice.negate(), BalanceType.PAY, null, false, null);
|
|
|
+ }
|
|
|
record.setMinter(minter.getNickname());
|
|
|
record.setMinterId(minter.getId());
|
|
|
record.setMinterAvatar(minter.getAvatar());
|