补偿机制
This commit is contained in:
parent
3a15793bfb
commit
fae9df231c
|
|
@ -31,7 +31,7 @@ import springfox.documentation.annotations.ApiIgnore;
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
|
|
@ -47,6 +47,7 @@ public class DiscSpinningController {
|
|||
private final TaskCenterRecordService taskRecordService;
|
||||
private final UserService userService;
|
||||
private final RedisUtils redisUtils;
|
||||
ScheduledExecutorService executor = Executors.newScheduledThreadPool(5);
|
||||
@Autowired
|
||||
public DiscSpinningController(CommonInfoService commonRepository, DiscSpinningService discSpinningService,
|
||||
OrdersService ordersService, DiscSpinningRecordService recordService,
|
||||
|
|
@ -219,14 +220,24 @@ public class DiscSpinningController {
|
|||
}
|
||||
redisUtils.set(redisKey, week, DateUtils.todayAfterSecond());
|
||||
}
|
||||
return new Result().put("data",
|
||||
discSpinningService.draws(i == null ? 1 : i + 1, amount, sourceId, userId, source));
|
||||
DiscSpinningRecord draws = discSpinningService.draws(i == null ? 1 : i + 1, amount, sourceId, userId, source);
|
||||
try {
|
||||
executor.schedule(() -> receive1(draws), 4, TimeUnit.SECONDS);
|
||||
}finally {
|
||||
executor.shutdown();
|
||||
}
|
||||
return new Result().put("data", draws);
|
||||
}
|
||||
|
||||
@ApiOperation("大转盘奖项领取")
|
||||
@Debounce(interval = 3000, value = "#receive.id")
|
||||
@Debounce(interval = 5000, value = "#receive.id")
|
||||
@PostMapping("/app/discSpinning/receive")
|
||||
public Result receive(@RequestBody DiscSpinningRecord receive) {
|
||||
return Result.success().put("data", 1);
|
||||
}
|
||||
|
||||
|
||||
public Result receive1(@RequestBody DiscSpinningRecord receive) {
|
||||
DiscSpinningRecord record = recordService.getById(receive.getId());
|
||||
if (record.getTargetId() != null) {
|
||||
return Result.error("不可重复领取");
|
||||
|
|
@ -243,5 +254,6 @@ public class DiscSpinningController {
|
|||
}
|
||||
return Result.success().put("data", res);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,53 @@
|
|||
package com.sqx.modules.job.task;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.sqx.modules.discSpinning.controller.DiscSpinningController;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinning;
|
||||
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
|
||||
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Component("SpinningTask3")
|
||||
public class SpinningTask3 implements ITask {
|
||||
|
||||
@Resource
|
||||
private DiscSpinningController spinningController;
|
||||
@Resource
|
||||
private DiscSpinningRecordService recordService;
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
@Override
|
||||
public void run(String params) {
|
||||
logger.info("大转盘到账补偿机制");
|
||||
// 获取当前时间
|
||||
Date now = DateUtil.date();
|
||||
// 获取五分钟前的时间
|
||||
Date fiveMinutesAgo = DateUtil.offsetMinute(now, -5);
|
||||
Date tenMinutesAgo = DateUtil.offsetMinute(now, -10);
|
||||
// 将五分钟前的时间转换为指定格式的时间字符串,这里采用常见的"yyyy-MM-dd HH:mm:ss"格式
|
||||
String fiveMinutesAgoStr = DateUtil.format(fiveMinutesAgo, "yyyy-MM-dd HH:mm:ss");
|
||||
String tenMinutesAgoStr = DateUtil.format(tenMinutesAgo, "yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
QueryWrapper<DiscSpinningRecord> recordQueryWrapper = new QueryWrapper<>();
|
||||
recordQueryWrapper.isNull("target");
|
||||
recordQueryWrapper.isNull("target_id");
|
||||
recordQueryWrapper.eq("type",2);
|
||||
//大于
|
||||
recordQueryWrapper.gt("create_time",fiveMinutesAgoStr);
|
||||
//小于
|
||||
recordQueryWrapper.lt("create_time", tenMinutesAgoStr);
|
||||
List<DiscSpinningRecord> list = recordService.list(recordQueryWrapper);
|
||||
for (DiscSpinningRecord record : list) {
|
||||
spinningController.receive1(record);
|
||||
}
|
||||
logger.info("大转盘到账补偿机制");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue