Jelajahi Sumber

修改过期日期不置空问题

xusl 1 tahun lalu
induk
melakukan
c5ab86e928

+ 1 - 0
backend/src/main/java/com/jiayue/ssi/controller/SysUserController.java

@@ -338,6 +338,7 @@ public class SysUserController {
         }
         // 生成8位初始密码
         String randomPwd = RandomPwd.getRandomPwd(8);
+        log.info("重置随机密码:"+randomPwd);
         boolean bo = sysUserService.resetPassword(Integer.parseInt(id), SmUtil.sm3(randomPwd).toUpperCase());
         if (!bo) {
             return ResponseVO.fail("密码生成失败!");

+ 1 - 1
backend/src/main/java/com/jiayue/ssi/entity/SysUser.java

@@ -74,7 +74,7 @@ public class SysUser extends BaseEntity implements UserDetails {
     /**
      * 账号有效期
      */
-//    @TableField(value = "exp_date",fill = FieldFill.INSERT_UPDATE)
+    @TableField(value = "exp_date",fill = FieldFill.INSERT_UPDATE)
     @JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8")
     private Date expDate;
 

+ 12 - 2
backend/src/main/java/com/jiayue/ssi/filter/JwtAuthenticationTokenFilter.java

@@ -81,7 +81,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
                     if (new Date().after(lastDate)) {
                         if ("0".equals(user.getStatus())){
                             // 将正常状态变为锁定
-                            user.setLockTime(System.currentTimeMillis());
+//                            user.setLockTime(System.currentTimeMillis());
                             user.setStatus("1");
                             Boolean bo = sysUserService.updateUser(user);
                             if (!bo){
@@ -95,6 +95,10 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
                         return;
                     }
                 }
+                if ("1".equals(user.getStatus()) && user.getLockTime()==0){
+                    ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 403);
+                    return;
+                }
                 if (jwtTokenUtil.validateToken(token, userDetails)) {
                     // 将用户信息存入 authentication,方便后续校验
                     UsernamePasswordAuthenticationToken
@@ -120,7 +124,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
                         if (new Date().after(lastDate)) {
                             if ("0".equals(user.getStatus())){
                                 // 将正常状态变为锁定
-                                user.setLockTime(System.currentTimeMillis());
+//                                user.setLockTime(System.currentTimeMillis());
                                 user.setStatus("1");
                                 Boolean bo = sysUserService.updateUser(user);
                                 if (!bo){
@@ -134,6 +138,12 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter {
                             return;
                         }
                     }
+
+                    if ("1".equals(user.getStatus()) && user.getLockTime()==0){
+                        ResponseInfo.doResponse(response, "账号已被锁定,请联系管理员!", 403);
+                        return;
+                    }
+
                 } catch (Exception e) {
                     ResponseInfo.doResponse(response, "用户名或密码错误!", 403);
                     return;

+ 1 - 1
backend/src/main/java/com/jiayue/ssi/job/AutoScanAccount.java

@@ -51,7 +51,7 @@ public class AutoScanAccount {
                 calendar.add(Calendar.MONTH, autoScanAccount);
                 if (calendar.getTimeInMillis()<System.currentTimeMillis()){
                     // 上次登录后N月没有使用,锁定账号
-                    sysUser.setLockTime(System.currentTimeMillis());
+//                    sysUser.setLockTime(System.currentTimeMillis());
                     sysUser.setStatus("1");
                     Boolean bo = sysUserService.updateUser(sysUser);
                     if (!bo){

+ 12 - 0
backend/src/main/java/com/jiayue/ssi/mapper/SysUserMapper.java

@@ -1,8 +1,12 @@
 package com.jiayue.ssi.mapper;
 
+import com.jiayue.ssi.entity.ForecastPowerShortTerm;
 import com.jiayue.ssi.entity.SysUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
 
 import java.util.List;
 
@@ -21,4 +25,12 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return 结果
      */
     public List<SysUser> selectUserByRole(String roleId);
+    /**
+     * 更改密码
+     *
+     * @param password 新密码
+     * @return 结果
+     */
+    @Update("update sys_user t set t.password=#{password} where t.id=#{id}")
+    public int resetPassword(Long id, String password);
 }

+ 6 - 4
backend/src/main/java/com/jiayue/ssi/service/impl/SysUserServiceImpl.java

@@ -139,9 +139,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     @Transactional(propagation= Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean resetPassword(Integer id,String initPassword) {
-        LambdaUpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<SysUser>().lambda();
-        updateWrapper.eq(SysUser::getId, id).set(SysUser::getPassword,initPassword);
-        int count = sysUserMapper.update(new SysUser(), updateWrapper);
+        int count = sysUserMapper.resetPassword(Long.parseLong(id+""),initPassword);
+
+//        LambdaUpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<SysUser>().lambda();
+//        updateWrapper.eq(SysUser::getId, id).set(SysUser::getLastUpdatePwdTime, null).set(SysUser::getPassword,initPassword);
+//        int count = sysUserMapper.resetPasswo.update(new SysUser(), updateWrapper);
         if (count > 0) {
             return true;
         }
@@ -156,7 +158,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional(propagation= Propagation.REQUIRED, rollbackFor = Exception.class)
     public boolean relockUserById(Integer id) {
         LambdaUpdateWrapper<SysUser> updateWrapper = new UpdateWrapper<SysUser>().lambda();
-        updateWrapper.eq(SysUser::getId, id).set(SysUser::getStatus, 0);
+        updateWrapper.eq(SysUser::getId, id).set(SysUser::getStatus, 0).set(SysUser::getLockTime,0);
         int count = sysUserMapper.update(new SysUser(), updateWrapper);
         if (count > 0) {
             return true;

+ 6 - 2
backend/src/main/java/com/jiayue/ssi/util/RandomPwd.java

@@ -86,9 +86,13 @@ public class RandomPwd {
 
     // 测试函数入口
     public static void main(String[] args) {
-        for (int i = 0; i < 10; i++) {
+        for (int i = 0; i < 10000; i++) {
             int num = 8;
-            System.out.println(getRandomPwd(num));
+            String str = getRandomPwd(num);
+            if (str.length()<4){
+                System.out.println(str);
+            }
+
         }
     }
 

+ 2 - 2
backend/src/test/java/com/jiayue/ssi/service/Test.java

@@ -66,10 +66,10 @@ public class Test {
 //        System.out.println(map.get("username"));
 //        System.out.println(map.get("password"));
 
-        System.out.println(SmUtil.sm3("+>5u9.@W").toUpperCase());
+        System.out.println(SmUtil.sm3("Xsl147258").toUpperCase());
 
 
-        System.out.println(Convert.toDBC("+>5u9.@W"));
+        System.out.println(Convert.toDBC("Xsl147258"));
 
 
     }