红包任务

This commit is contained in:
2024-12-28 15:49:21 +08:00
parent e77bb19459
commit d973622445
6 changed files with 134 additions and 114 deletions

View File

@@ -47,7 +47,7 @@ public class AppApiMethodAspect {
//请求的参数 //请求的参数
String resultJson = new Gson().toJson(result); String resultJson = new Gson().toJson(result);
try{
HttpServletRequest request = HttpContextUtils.getHttpServletRequest(); HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
long end = System.currentTimeMillis(); long end = System.currentTimeMillis();
if(StringUtils.isNotBlank(resultJson) && !"null".equals(resultJson)){ if(StringUtils.isNotBlank(resultJson) && !"null".equals(resultJson)){
@@ -57,6 +57,9 @@ public class AppApiMethodAspect {
resultJson resultJson
); );
} }
}catch (Exception e){
log.error("Request 为空"+e.getMessage());
}
return result; return result;
} }
} }

View File

@@ -9,7 +9,6 @@ import com.sqx.common.utils.RedisKeys;
import com.sqx.common.utils.RedisUtils; import com.sqx.common.utils.RedisUtils;
import com.sqx.common.utils.Result; import com.sqx.common.utils.Result;
import com.sqx.modules.app.annotation.Login; import com.sqx.modules.app.annotation.Login;
import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.service.UserService; import com.sqx.modules.app.service.UserService;
import com.sqx.modules.common.service.CommonInfoService; import com.sqx.modules.common.service.CommonInfoService;
import com.sqx.modules.discSpinning.entity.DiscSpinning; import com.sqx.modules.discSpinning.entity.DiscSpinning;
@@ -23,7 +22,6 @@ import com.sqx.modules.taskCenter.service.TaskCenterRecordService;
import com.sqx.modules.taskCenter.service.TaskCenterService; import com.sqx.modules.taskCenter.service.TaskCenterService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -223,7 +221,7 @@ public class DiscSpinningController {
} }
DiscSpinningRecord draws = discSpinningService.draws(i == null ? 1 : i + 1, amount, sourceId, userId, source); DiscSpinningRecord draws = discSpinningService.draws(i == null ? 1 : i + 1, amount, sourceId, userId, source);
executor.schedule(() -> receive1(draws), 4, TimeUnit.SECONDS); executor.schedule(() -> discSpinningService.receive1(draws), 4, TimeUnit.SECONDS);
return new Result().put("data", draws); return new Result().put("data", draws);
} }
@@ -236,23 +234,6 @@ public class DiscSpinningController {
} }
public Result receive1(@RequestBody DiscSpinningRecord receive) {
DiscSpinningRecord record = recordService.getById(receive.getId());
if (record.getTargetId() != null) {
return Result.error("不可重复领取");
}
CompletableFuture.runAsync(() -> {
discSpinningService.receiveAsync(record);
});
UserEntity userInfo = userService.queryByUserId(record.getUserId());
int res = 1;
if (receive.getType().equals(2)) {
if (StringUtils.isBlank(userInfo.getZhiFuBao()) && StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
res = 0;
}
}
return Result.success().put("data", res);
}
} }

View File

@@ -1,6 +1,7 @@
package com.sqx.modules.discSpinning.service; package com.sqx.modules.discSpinning.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.discSpinning.entity.DiscSpinning; import com.sqx.modules.discSpinning.entity.DiscSpinning;
import com.sqx.modules.discSpinning.entity.DiscSpinningRecord; import com.sqx.modules.discSpinning.entity.DiscSpinningRecord;
@@ -22,5 +23,7 @@ public interface DiscSpinningService extends IService<DiscSpinning> {
//提现 //提现
void withdrawAsync(UserEntity userInfo, Double money, String title); void withdrawAsync(UserEntity userInfo, Double money, String title);
Result receive1(DiscSpinningRecord receive);
} }

View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sqx.common.utils.DateUtils; import com.sqx.common.utils.DateUtils;
import com.sqx.common.utils.RedisKeys; import com.sqx.common.utils.RedisKeys;
import com.sqx.common.utils.RedisUtils; import com.sqx.common.utils.RedisUtils;
import com.sqx.common.utils.Result;
import com.sqx.modules.app.entity.UserEntity; import com.sqx.modules.app.entity.UserEntity;
import com.sqx.modules.app.entity.UserMoneyDetails; import com.sqx.modules.app.entity.UserMoneyDetails;
import com.sqx.modules.app.service.UserMoneyDetailsService; import com.sqx.modules.app.service.UserMoneyDetailsService;
@@ -38,6 +39,7 @@ import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
@Slf4j @Slf4j
@@ -251,5 +253,23 @@ public class DiscSpinningServiceImpl extends ServiceImpl<DiscSpinningDao, DiscSp
recordService.save(record); recordService.save(record);
return record; return record;
} }
public Result receive1(DiscSpinningRecord receive) {
DiscSpinningRecord record = recordService.getById(receive.getId());
if (record.getTargetId() != null) {
return Result.error("不可重复领取");
}
CompletableFuture.runAsync(() -> {
receiveAsync(record);
});
UserEntity userInfo = userService.queryByUserId(record.getUserId());
int res = 1;
if (receive.getType().equals(2)) {
if (StringUtils.isBlank(userInfo.getZhiFuBao()) && StringUtils.isBlank(userInfo.getZhiFuBaoName())) {
res = 0;
}
}
return Result.success().put("data", res);
}
} }

View File

@@ -1,11 +1,12 @@
package com.sqx.modules.job.task; package com.sqx.modules.job.task;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.entity.DiscSpinningRecord;
import com.sqx.modules.discSpinning.service.DiscSpinningRecordService; import com.sqx.modules.discSpinning.service.DiscSpinningRecordService;
import com.sqx.modules.discSpinning.service.DiscSpinningService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -18,7 +19,7 @@ import java.util.List;
public class SpinningTask3 implements ITask { public class SpinningTask3 implements ITask {
@Resource @Resource
private DiscSpinningController spinningController; private DiscSpinningService spinningController;
@Resource @Resource
private DiscSpinningRecordService recordService; private DiscSpinningRecordService recordService;
@@ -29,9 +30,12 @@ public class SpinningTask3 implements ITask {
logger.info("大转盘到账补偿机制"); logger.info("大转盘到账补偿机制");
// 获取当前时间 // 获取当前时间
Date now = DateUtil.date(); Date now = DateUtil.date();
if (StringUtils.isBlank(params)) {
params = "1";
}
// 获取五分钟前的时间 // 获取五分钟前的时间
Date fiveMinutesAgo = DateUtil.offsetMinute(now, -5); Date fiveMinutesAgo = DateUtil.offsetMinute(now, Integer.valueOf(params) * -5);
Date tenMinutesAgo = DateUtil.offsetMinute(now, -10); Date tenMinutesAgo = DateUtil.offsetMinute(now, (Integer.valueOf(params) * -5) - 5);
// 将五分钟前的时间转换为指定格式的时间字符串,这里采用常见的"yyyy-MM-dd HH:mm:ss"格式 // 将五分钟前的时间转换为指定格式的时间字符串,这里采用常见的"yyyy-MM-dd HH:mm:ss"格式
String fiveMinutesAgoStr = DateUtil.format(fiveMinutesAgo, "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"); String tenMinutesAgoStr = DateUtil.format(tenMinutesAgo, "yyyy-MM-dd HH:mm:ss");
@@ -45,9 +49,12 @@ public class SpinningTask3 implements ITask {
//小于 //小于
recordQueryWrapper.gt("create_time", tenMinutesAgoStr); recordQueryWrapper.gt("create_time", tenMinutesAgoStr);
List<DiscSpinningRecord> list = recordService.list(recordQueryWrapper); List<DiscSpinningRecord> list = recordService.list(recordQueryWrapper);
ThreadUtil.execAsync(() -> {
for (DiscSpinningRecord record : list) { for (DiscSpinningRecord record : list) {
spinningController.receive1(record); spinningController.receive1(record);
} }
logger.info("大转盘到账补偿机制"); });
logger.info("大转盘到账补偿机制结束");
} }
} }

View File

@@ -1,6 +1,7 @@
package com.sqx.modules.pay.controller.app; package com.sqx.modules.pay.controller.app;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.sqx.common.annotation.Debounce; import com.sqx.common.annotation.Debounce;
@@ -240,7 +241,9 @@ public class WuyouController {
@Transactional @Transactional
public void activities(UserEntity user, UserEntity sourceUser) { public void activities(UserEntity user, UserEntity sourceUser) {
//分享达标 //分享达标
if (sourceUser != null && sourceUser.getUserId() != 1) { if (sourceUser == null || sourceUser.getUserId() == 1) {
return;
}
QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper<>(); QueryWrapper<UserMoneyDetails> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("classify", 6); queryWrapper.eq("classify", 6);
queryWrapper.eq("user_id", sourceUser.getUserId()); queryWrapper.eq("user_id", sourceUser.getUserId());
@@ -309,7 +312,7 @@ public class WuyouController {
break; break;
} }
}); });
}
} }
private void updateOrderStatus(PayDetails payDetails, Orders order) { private void updateOrderStatus(PayDetails payDetails, Orders order) {
@@ -344,13 +347,16 @@ public class WuyouController {
} }
ordersService.updateById(order); ordersService.updateById(order);
ordersService.insertOrders(order); ordersService.insertOrders(order);
CompletableFuture.runAsync(() -> { ThreadUtil.execAsync(() -> {
ApiAccessLimitUtil.runFunAndCheckKey(() -> { activities(user, byUser);
WuyouController proxy = applicationContext.getBean(WuyouController.class);
proxy.activities(user, byUser);
return null;
}, RedisKeys.getLockKey("activaties", user.getUserId(), byUser.getUserId()), 15);
}); });
// CompletableFuture.runAsync(() -> {
// ApiAccessLimitUtil.runFunAndCheckKey(() -> {
// WuyouController proxy = applicationContext.getBean(WuyouController.class);
// proxy.activities(user, byUser);
// return null;
// }, RedisKeys.getLockKey("activaties", user.getUserId(), byUser.getUserId()), 15);
// });
} }