|
|
@@ -0,0 +1,67 @@
|
|
|
+package com.izouma.nineth.service;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.izouma.nineth.annotations.RedisLock;
|
|
|
+import com.izouma.nineth.config.Constants;
|
|
|
+import com.izouma.nineth.domain.WithdrawApply;
|
|
|
+import com.izouma.nineth.dto.PageQuery;
|
|
|
+import com.izouma.nineth.dto.UserBankCard;
|
|
|
+import com.izouma.nineth.enums.BalanceType;
|
|
|
+import com.izouma.nineth.enums.WithdrawStatus;
|
|
|
+import com.izouma.nineth.exception.BusinessException;
|
|
|
+import com.izouma.nineth.repo.BalanceRecordRepo;
|
|
|
+import com.izouma.nineth.repo.UserBalanceRepo;
|
|
|
+import com.izouma.nineth.repo.UserBankCardRepo;
|
|
|
+import com.izouma.nineth.repo.WithdrawApplyRepo;
|
|
|
+import com.izouma.nineth.utils.DateTimeUtils;
|
|
|
+import com.izouma.nineth.utils.JpaUtils;
|
|
|
+import com.izouma.nineth.utils.SnowflakeIdWorker;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.redisson.api.RLock;
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.scheduling.annotation.Async;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.LocalTime;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.concurrent.ExecutionException;
|
|
|
+import java.util.concurrent.ForkJoinPool;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+@Slf4j
|
|
|
+public class WithdrawApplyScheduleService {
|
|
|
+
|
|
|
+ private SysConfigService sysConfigService;
|
|
|
+ private WithdrawApplyService withdrawApplyService;
|
|
|
+
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0 8 * * ?")
|
|
|
+ @RedisLock(value = "'scheduleApplyAll'", expire = 1, unit = TimeUnit.HOURS)
|
|
|
+ public void scheduleApplyAll() throws ExecutionException, InterruptedException {
|
|
|
+ if (sysConfigService.getBoolean("enable_force_withdraw")) {
|
|
|
+ withdrawApplyService.applyAll();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Scheduled(cron = "0 0 15 * * ?")
|
|
|
+ @RedisLock(value = "'scheduleAutoApprove'", expire = 1, unit = TimeUnit.HOURS)
|
|
|
+ public void scheduleAutoApprove() throws ExecutionException, InterruptedException {
|
|
|
+ if (sysConfigService.getBoolean("enable_auto_withdraw")
|
|
|
+ && DateTimeUtils.isWorkDay(LocalDate.now())) {
|
|
|
+ withdrawApplyService.approveAll();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|