Ver Fonte

代码提交

liweifan há 2 anos atrás
pai
commit
47ccadf0b0

+ 11 - 0
cooleshow-auth/auth-api/src/main/java/com/yonge/cooleshow/auth/api/entity/SysUser.java

@@ -98,6 +98,9 @@ public class SysUser implements Serializable{
 	@ApiModelProperty(value = "用户角色")
 	private List<Long> roles;
 
+	@ApiModelProperty(value = "最近一次修改用户名称时间")
+	private Date lastUsernameTime;
+
 	private String certificateType = "IDENTITY";
 
 	public String getCertificateType() {
@@ -303,6 +306,14 @@ public class SysUser implements Serializable{
 		this.roles = roles;
 	}
 
+	public Date getLastUsernameTime() {
+		return lastUsernameTime;
+	}
+
+	public void setLastUsernameTime(Date lastUsernameTime) {
+		this.lastUsernameTime = lastUsernameTime;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 45 - 14
cooleshow-auth/auth-server/src/main/java/com/yonge/cooleshow/auth/web/controller/UserController.java

@@ -1,11 +1,15 @@
 package com.yonge.cooleshow.auth.web.controller;
 
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.toolset.base.util.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 
+import java.time.Duration;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Date;
 import java.util.List;
 
@@ -66,12 +70,12 @@ public class UserController extends BaseController {
     @Autowired
     private IdGeneratorService smsCodeService;
 
-	@Autowired
-	private CustomTokenServices tokenService;
-	
+    @Autowired
+    private CustomTokenServices tokenService;
+
     @Value("${message.debugMode}")
     private boolean debugMode;
-    
+
     @Autowired
     private RealnameAuthenticationPlugin realnameAuthenticationPlugin;
     @Autowired
@@ -181,7 +185,7 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if(!StringUtil.isEmpty(username)){
+        if (!StringUtil.isEmpty(username)) {
             if (sysUser.getUserType().contains("SYSTEM")) {
                 sysUser.setRealName(username);
             }
@@ -213,7 +217,7 @@ public class UserController extends BaseController {
         if (sysUser == null) {
             return failed("用户不存在");
         }
-        if (smsCodeService.verifyValidCode(mobile, authCode,"SMS_VERIFY_CODE_UPDATE_PSW")) {
+        if (smsCodeService.verifyValidCode(mobile, authCode, "SMS_VERIFY_CODE_UPDATE_PSW")) {
             String password = new BCryptPasswordEncoder().encode(newPassword);
             sysUser.setPassword(password);
             sysUser.setUpdateTime(new Date());
@@ -227,13 +231,13 @@ public class UserController extends BaseController {
     }
 
     private void loginOut(SysUser sysUser) {
-        if(sysUser.getUserType().contains("STUDENT")){
+        if (sysUser.getUserType().contains("STUDENT")) {
             tokenService.revokeToken("student", sysUser.getPhone());
         }
-        if(sysUser.getUserType().contains("TEACHER")){
+        if (sysUser.getUserType().contains("TEACHER")) {
             tokenService.revokeToken("teacher", sysUser.getPhone());
         }
-        if(sysUser.getUserType().contains("SYSTEM")){
+        if (sysUser.getUserType().contains("SYSTEM")) {
             tokenService.revokeToken("system", sysUser.getPhone());
         }
     }
@@ -275,7 +279,7 @@ public class UserController extends BaseController {
         if (newSysUser != null) {
             return failed("手机号被占用");
         }
-        if (smsCodeService.verifyValidCode(newPhone, authCode,"SMS_VERIFY_CODE_UPDATE_PHONE")) {
+        if (smsCodeService.verifyValidCode(newPhone, authCode, "SMS_VERIFY_CODE_UPDATE_PHONE")) {
             sysUser.setPhone(newPhone);
             sysUser.setUpdateTime(new Date());
             sysUserService.update(sysUser);
@@ -329,8 +333,8 @@ public class UserController extends BaseController {
             return failed("非法操作");
         }
         sysUser.setLockFlag(lockFlag);
-        
-        if(lockFlag == 1){
+
+        if (lockFlag == 1) {
             loginOut(sysUser);
         }
         sysUser.setUpdateTime(new Date());
@@ -465,7 +469,7 @@ public class UserController extends BaseController {
         if (user != null) {
             SysUser sysUser = sysUserService.get(user.getUserId());
             if (sysUser.getIsSuperAdmin()) {
-            	RoleQueryInfo queryInfo = new RoleQueryInfo();
+                RoleQueryInfo queryInfo = new RoleQueryInfo();
                 queryInfo.setRows(9999);
                 queryInfo.setIsEnable(true);
                 return succeed(sysRoleService.queryPage(queryInfo).getRows());
@@ -527,7 +531,7 @@ public class UserController extends BaseController {
             if (!verify) {
                 return failed("未通过实名认证");
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             e.printStackTrace();
             return failed("未通过实名认证");
         }
@@ -568,11 +572,38 @@ public class UserController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed("用户不存在");
         }
+
+        //判断用户昵称修改时间
+        if (StringUtils.isNotEmpty(setReq.getUsername())) {
+            checkLastUsernameTime(user, setReq.getUsername());
+        }
+
         //设置
         sysUserService.submitSetDetail(setReq, user.getId());
         return succeed(sysUserService.getSetDetail(user.getId()));
     }
 
+    private void checkLastUsernameTime(SysUser user, String username) {
+        if (StringUtils.isNotEmpty(username)) {
+            String configValue = sysConfigService.findConfigValue(SysConfigConstant.LAST_USERNAME_DAYS);
+
+            if (null != user.getLastUsernameTime()
+                    && StringUtils.isNotEmpty(configValue)) {
+                Long lastUsernameDays = Long.parseLong(configValue);
+
+                Long diff = Duration.between(
+                        user.getLastUsernameTime().toInstant()
+                                .atZone(ZoneId.systemDefault())
+                                .toLocalDateTime()
+                        , LocalDateTime.now()).toDays();
+
+                if (diff <= lastUsernameDays && lastUsernameDays > 0) {
+                    throw new BizException("每" + lastUsernameDays + "天才能修改一次昵称,上次修改昵称为" + diff + "天前");
+                }
+            }
+        }
+    }
+
     @PostMapping(value = "/bindOpenId")
     public HttpResponseResult<Boolean> bindOpenId(@RequestBody SysUser param) {
         AuthUser authUser = SecurityUtils.getUser();

+ 5 - 1
cooleshow-auth/auth-server/src/main/resources/config/mybatis/SysUserMapper.xml

@@ -30,6 +30,7 @@
         <result column="wechat_id_" property="wechatId"/>
         <result column="is_super_admin_" property="isSuperAdmin"/>
         <result column="certificate_type_" property="certificateType"/>
+        <result column="last_username_time_" property="lastUsernameTime"/>
     </resultMap>
 
     <!-- 查询条件 -->
@@ -150,6 +151,9 @@
             <if test="certificateType != null">
                 certificate_type_ = #{certificateType},
             </if>
+            <if test="lastUsernameTime != null">
+                last_username_time_ = #{lastUsernameTime},
+            </if>
         </set>
         WHERE del_flag_ = 0 and id_ = #{id}
     </update>
@@ -251,7 +255,7 @@
             avatar_ = #{param.avatar},
         </if>
         <if test="param.username != null and param.username != ''">
-            username_ = #{param.username},
+            username_ = #{param.username},last_username_time_ = now(),
         </if>
         <if test="param.gender != null">
             gender_ = #{param.gender},

+ 4 - 1
cooleshow-common/src/main/java/com/yonge/cooleshow/common/constant/SysConfigConstant.java

@@ -241,7 +241,10 @@ public interface SysConfigConstant {
      * 敏感词-白名单
      */
     String WHITE_LIST = "white_list";
-
+    /**
+     * 修改用户名间隔天数
+     */
+    String LAST_USERNAME_DAYS = "last_username_days";
 
     /** 老师分享曲目二维码跳转链接 */
     String TEACHER_MUSIC_SHEET_SHARE_PROFIT_URL = "teacher_music_sheet_share_profit_url";