From e4936a23bc619134ebce0b4fe9b2ce8a732d38c7 Mon Sep 17 00:00:00 2001 From: xupei Date: Wed, 8 Jan 2025 14:20:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E7=94=A8=E6=88=B7=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E4=B8=BA=E5=BD=93=E5=89=8D=E6=9C=88=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E4=BF=AE=E6=94=B95=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ai/da/common/task/AccountTask.java | 10 +++++ .../com/ai/da/common/task/PaymentTask.java | 2 +- .../com/ai/da/common/utils/RedisUtil.java | 8 ++++ .../ai/da/controller/AccountController.java | 2 +- .../com/ai/da/model/vo/AccountLoginVO.java | 2 +- .../com/ai/da/service/AccountService.java | 2 +- .../da/service/impl/AccountServiceImpl.java | 38 +++++++++---------- 7 files changed, 41 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/ai/da/common/task/AccountTask.java b/src/main/java/com/ai/da/common/task/AccountTask.java index 9c66563c..b4aacac8 100644 --- a/src/main/java/com/ai/da/common/task/AccountTask.java +++ b/src/main/java/com/ai/da/common/task/AccountTask.java @@ -1,5 +1,6 @@ package com.ai.da.common.task; +import com.ai.da.common.utils.RedisUtil; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.service.AccountService; import lombok.extern.slf4j.Slf4j; @@ -15,6 +16,8 @@ public class AccountTask { @Resource private AccountService accountService; + @Resource + private RedisUtil redisUtil; /** * 每周日晚上刷新 年付用户、月付用户的积分 @@ -69,4 +72,11 @@ public class AccountTask { public void registerUserToVisitor() { accountService.registerUserToVisitor(); } + + @Scheduled(cron = "0 0 0 1 * ?") + // 每月初刷新所有用户用户名剩余修改次数 + public void resetUsernameModifyTimes(){ + log.info("重置所有用户的用户名修改次数"); + redisUtil.batchDeleteKeysWithSamePrefix(RedisUtil.NICKNAME_MODIFY_TIMES); + } } diff --git a/src/main/java/com/ai/da/common/task/PaymentTask.java b/src/main/java/com/ai/da/common/task/PaymentTask.java index 40450055..a7fe8ffb 100644 --- a/src/main/java/com/ai/da/common/task/PaymentTask.java +++ b/src/main/java/com/ai/da/common/task/PaymentTask.java @@ -102,7 +102,7 @@ public class PaymentTask { } - @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes +// @Scheduled(cron = "0 */5 * * * *") // Run every 5 minutes public void updateAffiliateInfoWithPayment(){ affiliateService.updateAffiliateInfoWithPayment(); } diff --git a/src/main/java/com/ai/da/common/utils/RedisUtil.java b/src/main/java/com/ai/da/common/utils/RedisUtil.java index 7e0d9578..a0d42840 100644 --- a/src/main/java/com/ai/da/common/utils/RedisUtil.java +++ b/src/main/java/com/ai/da/common/utils/RedisUtil.java @@ -292,4 +292,12 @@ public class RedisUtil { String key = AFFILIATE_LINK_VIEW_KEY + accountId; return redisTemplate.opsForValue().increment(key, 0); } + + public void batchDeleteKeysWithSamePrefix(String prefix){ + Set keys = redisTemplate.keys(prefix + "*"); + assert keys != null; + if (!keys.isEmpty()){ + redisTemplate.delete(keys); + } + } } diff --git a/src/main/java/com/ai/da/controller/AccountController.java b/src/main/java/com/ai/da/controller/AccountController.java index 1afac49d..56b2f2f4 100644 --- a/src/main/java/com/ai/da/controller/AccountController.java +++ b/src/main/java/com/ai/da/controller/AccountController.java @@ -224,7 +224,7 @@ public class AccountController { @ApiOperation(value = "getUsernameModifyTimes") @GetMapping("/getNicknameModifyTimes") - public Response> getNicknameModifyTimes(){ + public Response getNicknameModifyTimes(){ return Response.success(accountService.getNicknameModifyTimes()); } diff --git a/src/main/java/com/ai/da/model/vo/AccountLoginVO.java b/src/main/java/com/ai/da/model/vo/AccountLoginVO.java index 04c783ac..02b2c73d 100644 --- a/src/main/java/com/ai/da/model/vo/AccountLoginVO.java +++ b/src/main/java/com/ai/da/model/vo/AccountLoginVO.java @@ -71,6 +71,6 @@ public class AccountLoginVO { private String occupation; - private Map usernameModify; + private Long usernameModify; } diff --git a/src/main/java/com/ai/da/service/AccountService.java b/src/main/java/com/ai/da/service/AccountService.java index e37d4b09..2374234e 100644 --- a/src/main/java/com/ai/da/service/AccountService.java +++ b/src/main/java/com/ai/da/service/AccountService.java @@ -173,7 +173,7 @@ public interface AccountService extends IService { void registerUserToVisitor(); - Map getNicknameModifyTimes(); + Long getNicknameModifyTimes(); void editUserName(String newUserName); diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index fac4f83f..0577e514 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1830,36 +1830,36 @@ public class AccountServiceImpl extends ServiceImpl impl return redisUtil.getPersonalHomepageViewCount(accountId); } - // 获取当前用户30天内 剩余昵称修改次数 - public Map getNicknameModifyTimes(){ + // 获取当前用户本月内 剩余昵称修改次数 + public Long getNicknameModifyTimes(){ Long accountId = UserContext.getUserHolder().getId(); String key = RedisUtil.NICKNAME_MODIFY_TIMES + accountId; Long times = redisUtil.getIncrementCount(key); - HashMap resp = new HashMap<>(); - resp.put("remainingTimes", 5L - times); - resp.put("remainingDays", redisUtil.getExpire(key) == -1 ? 30L : (long) Math.ceil((double) redisUtil.getExpire(key) / (24 * 60 * 60))); - return resp; +// HashMap resp = new HashMap<>(); +// resp.put("remainingTimes", 5L - times); +// resp.put("remainingDays", redisUtil.getExpire(key) == -1 ? 30L : (long) Math.ceil((double) redisUtil.getExpire(key) / (24 * 60 * 60))); + return 5L - times; } - // 修改用户名 允许用户30天内修改5次 + // 修改用户名 允许用户当前月内修改5次 @Transactional(rollbackFor = Exception.class) public void editUserName(String newUserName){ Long accountId = UserContext.getUserHolder().getId(); // 判断当前用户是否还有修改昵称的次数 - Map remainTimes = getNicknameModifyTimes(); - Long remainingModifyTimes = remainTimes.get("remainingTimes"); +// Map remainTimes = getNicknameModifyTimes(); + Long remainingModifyTimes = getNicknameModifyTimes(); if (remainingModifyTimes > 0){ - Account account = new Account().setUserName(newUserName); - account.setId(accountId); - baseMapper.updateById(account); - - String key = RedisUtil.NICKNAME_MODIFY_TIMES + accountId; - // 先判断有没有这个key,若没有这个key, 需要为key添加有效期 - if (remainingModifyTimes == 5){ - redisUtil.setKeyExpire(key, 30L); + Account account = baseMapper.selectById(accountId); + // 当新昵称与旧昵称不同时,修改 + if (!account.getUserName().equals(newUserName)){ + account.setUserName(newUserName); + account.setId(accountId); + baseMapper.updateById(account); + // 每个月初清除RedisUtil.NICKNAME_MODIFY_TIMES下的所有记录 + String key = RedisUtil.NICKNAME_MODIFY_TIMES + accountId; + // 增加修改次数 + redisUtil.increaseCount(key); } - // 增加修改次数 - redisUtil.increaseCount(key); }else { throw new BusinessException("remaining.modifications", 1); }