一分钟支付超12次拉入黑名单

This commit is contained in:
张松 2025-01-10 09:56:45 +08:00
parent 9d0ed1ff9c
commit 3ec519e95f
3 changed files with 20 additions and 1 deletions

View File

@ -36,6 +36,7 @@ import com.sqx.modules.pay.wuyou.BaseResp;
import com.sqx.modules.pay.wuyou.Encrypt;
import com.sqx.modules.pay.wuyou.NotifyDto;
import com.sqx.modules.pay.wuyou.WuyouPay;
import com.sqx.modules.redisService.RedisService;
import com.sqx.modules.sys.entity.SysUserEntity;
import com.sqx.modules.sys.service.SysUserService;
import com.sqx.modules.utils.AliPayOrderUtil;
@ -74,12 +75,14 @@ public class WuyouController {
private final CashOutDao cashOutDao;
private final WuyouPay wuyouPay;
private final TempOrdersTask ordersTask;
private final UserService userService;
private final RedisService redisService;
@Resource
private WuyouCallbackService wuyouCallbackService;
WuyouController(OrdersService ordersService, PayDetailsDao payDetailsDao, CashOutDao cashOutDao, UserMoneyService userMoneyService,
UserMoneyDetailsService userMoneyDetailsService, TempOrdersTask ordersTask,
WuyouPay wuyouPay) {
WuyouPay wuyouPay, UserService userService, RedisService redisService) {
this.ordersService = ordersService;
this.payDetailsDao = payDetailsDao;
this.cashOutDao = cashOutDao;
@ -87,6 +90,8 @@ public class WuyouController {
this.userMoneyDetailsService = userMoneyDetailsService;
this.wuyouPay = wuyouPay;
this.ordersTask = ordersTask;
this.userService = userService;
this.redisService = redisService;
}
@Debounce(interval = 1000, value = "#orderId")
@ -101,6 +106,9 @@ public class WuyouController {
if (order.getStatus() != 0) {
return Result.error("订单已支付");
}
if (redisService.setCreateOrderFlagAndCheckLimit(order.getUserId(), orderId)) {
userService.addBlackUser(order.getUserId(), "一分钟频繁下单超12次");
}
PayDetails payDetails = payDetailsDao.selectByOrderId(order.getOrdersNo());
if (payDetails == null) {

View File

@ -30,4 +30,6 @@ public interface RedisService {
void setCanCashFlag(Long userId, Long id);
boolean isCanCash(Long userId);
boolean setCreateOrderFlagAndCheckLimit(Long userId, Long orderId);
}

View File

@ -342,4 +342,13 @@ public class RedisServiceImpl implements RedisService {
String s = redisUtils.get(key);
return StrUtil.isNotBlank(s);
}
@Override
public boolean setCreateOrderFlagAndCheckLimit(Long userId, Long orderId) {
String key = "createOrder:" + userId;
redisTemplate.opsForSet().add(key, orderId.toString());
redisUtils.expire(key, 60);
Set<String> members = redisTemplate.opsForSet().members(key);
return members != null && members.size() > 12;
}
}