Commit 71821399 by 段启岩

昵称修改添加上限

parent 901bdabf
package cn.meteor.beyondclouds.modules.user.dto; package cn.meteor.beyondclouds.modules.user.dto;
import cn.meteor.beyondclouds.modules.user.entity.UserStatistics; import cn.meteor.beyondclouds.modules.user.entity.UserStatistics;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
...@@ -38,6 +39,9 @@ public class UserInfoDTO { ...@@ -38,6 +39,9 @@ public class UserInfoDTO {
@ApiModelProperty(value = "QQ号") @ApiModelProperty(value = "QQ号")
private String qqNumber; private String qqNumber;
@JsonInclude(JsonInclude.Include.NON_NULL)
private Boolean nickCanModify;
private Date createTime; private Date createTime;
private Date updateTime; private Date updateTime;
......
...@@ -54,6 +54,12 @@ public class User implements Serializable { ...@@ -54,6 +54,12 @@ public class User implements Serializable {
@ApiModelProperty(value = "QQ号") @ApiModelProperty(value = "QQ号")
private String qqNumber; private String qqNumber;
@ApiModelProperty(value = "本月开始修改昵称的时间")
private Date nickModifyStartTime;
@ApiModelProperty(value = "本阶段昵称修改次数")
private Integer nickModifyCount;
private Date createTime; private Date createTime;
private Date updateTime; private Date updateTime;
......
...@@ -28,7 +28,8 @@ public enum UserErrorCode implements IErrorCode { ...@@ -28,7 +28,8 @@ public enum UserErrorCode implements IErrorCode {
BINDING_MOBILE_VERIFY_CODE_ERROR(10015, "手机验证码错误"), BINDING_MOBILE_VERIFY_CODE_ERROR(10015, "手机验证码错误"),
NON_LOCAL_AUTH_INFO(10016, "该手机未注册"), NON_LOCAL_AUTH_INFO(10016, "该手机未注册"),
USER_NOT_EXISTS(10017, "要查看的用户不存在"), USER_NOT_EXISTS(10017, "要查看的用户不存在"),
USER_NICK_NAME_USED(10018,"该昵称已存在"); USER_NICK_NAME_USED(10018,"该昵称已存在"),
NICK_MODIFY_UPPER_LIMIT(10019, "本月昵称修改次数已达上限");
UserErrorCode(long code, String msg) { UserErrorCode(long code, String msg) {
this.code = code; this.code = code;
......
...@@ -5,7 +5,6 @@ import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO; ...@@ -5,7 +5,6 @@ import cn.meteor.beyondclouds.common.dto.QQAuthResultDTO;
import cn.meteor.beyondclouds.common.exception.OssException; import cn.meteor.beyondclouds.common.exception.OssException;
import cn.meteor.beyondclouds.common.helper.IOssHelper; import cn.meteor.beyondclouds.common.helper.IOssHelper;
import cn.meteor.beyondclouds.common.helper.IRedisHelper; import cn.meteor.beyondclouds.common.helper.IRedisHelper;
import cn.meteor.beyondclouds.core.generator.Generator;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage; import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType; import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.core.redis.RedisKey; import cn.meteor.beyondclouds.core.redis.RedisKey;
...@@ -42,6 +41,7 @@ import org.springframework.util.CollectionUtils; ...@@ -42,6 +41,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.io.IOException; import java.io.IOException;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -64,6 +64,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -64,6 +64,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
private IUserFollowService userFollowService; private IUserFollowService userFollowService;
private IMessageQueueService messageQueueService; private IMessageQueueService messageQueueService;
private static final long MILLS_OF_DAY = 1000 * 60 * 60 * 24;
@Autowired @Autowired
public UserServiceImpl(IUserAuthLocalService userAuthLocalService, IRedisHelper redisHelper, IUserAuthAppService userAuthAppService, IMailService mailService) { public UserServiceImpl(IUserAuthLocalService userAuthLocalService, IRedisHelper redisHelper, IUserAuthAppService userAuthAppService, IMailService mailService) {
this.userAuthLocalService = userAuthLocalService; this.userAuthLocalService = userAuthLocalService;
...@@ -271,13 +273,45 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -271,13 +273,45 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
&& !user.getUserAvatar().equals(userIdDb.getUserAvatar()); && !user.getUserAvatar().equals(userIdDb.getUserAvatar());
//查询昵称是否重复 //查询是否到达本月修改上限以及昵称是否重复
if(userNickUpdate){ if(userNickUpdate){
Date nickModifyStartTime = userIdDb.getNickModifyStartTime();
Integer nickModifyCount = userIdDb.getNickModifyCount();
boolean canModifyNick;
// 如果count等于0或nickModifyStartTime为null,则重置nickModifyStartTime为当前时间,nickModifyCount设置为1
if (0 == nickModifyCount || nickModifyStartTime == null) {
nickModifyStartTime = new Date();
nickModifyCount = 1;
canModifyNick = true;
} else if (System.currentTimeMillis() - nickModifyStartTime.getTime() > MILLS_OF_DAY * 30){
// 判断本月时间是否已经过去,过去则重置
nickModifyStartTime = new Date();
nickModifyCount = 1;
canModifyNick = true;
} else {
// 判断本月修改次数是否超过3次
if (nickModifyCount >= 3) {
throw new UserServiceException(UserErrorCode.NICK_MODIFY_UPPER_LIMIT);
} else {
canModifyNick = true;
nickModifyCount = nickModifyCount + 1;
}
}
if (canModifyNick) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>(); QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("nick_name", user.getNickName()); queryWrapper.eq("nick_name", user.getNickName());
if( null != getOne(queryWrapper)){ if( null != getOne(queryWrapper)){
throw new UserServiceException(UserErrorCode.USER_NICK_NAME_USED); throw new UserServiceException(UserErrorCode.USER_NICK_NAME_USED);
} }
// 更新昵称修改次数和时间
userIdDb.setNickModifyStartTime(nickModifyStartTime);
userIdDb.setNickModifyCount(nickModifyCount);
updateById(userIdDb);
}
} }
updateById(user); updateById(user);
...@@ -458,11 +492,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU ...@@ -458,11 +492,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
} }
UserStatistics userStatistics = getStatistics(userId, updateVisited); UserStatistics userStatistics = getStatistics(userId, updateVisited);
UserInfoDTO userInfoDTO = new UserInfoDTO(); UserInfoDTO userInfoDTO = new UserInfoDTO();
BeanUtils.copyProperties(user, userInfoDTO); BeanUtils.copyProperties(user, userInfoDTO);
userInfoDTO.setStatistics(userStatistics); userInfoDTO.setStatistics(userStatistics);
if (SubjectUtils.isAuthenticated()) {
String currentUserId = (String) SubjectUtils.getSubject().getId();
if (currentUserId.equals(userId)) {
Date nickModifyStartTime = user.getNickModifyStartTime();
Integer nickModifyCount = user.getNickModifyCount();
boolean canModifyNick;
// 如果count等于0或nickModifyStartTime为null,则重置nickModifyStartTime为当前时间,nickModifyCount设置为1
if (0 == nickModifyCount || nickModifyStartTime == null) {
canModifyNick = true;
} else if (System.currentTimeMillis() - nickModifyStartTime.getTime() > MILLS_OF_DAY * 30){
// 判断本月时间是否已经过去,过去则重置
canModifyNick = true;
} else {
// 判断本月修改次数是否超过3次
if (nickModifyCount >= 3) {
canModifyNick = false;
} else {
canModifyNick = true;
}
}
userInfoDTO.setNickCanModify(canModifyNick);
}
}
return userInfoDTO; return userInfoDTO;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment