sunyize 2 年之前
父節點
當前提交
a874dee9ea

+ 70 - 7
tnc-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java

@@ -117,17 +117,80 @@ public class LoginController {
         //update-end--Author:wangshuai  Date:20200714  for:登录日志没有记录人员
 		return result;
 	}
-
-	@RequestMapping(value = "/loginFirst", method = RequestMethod.GET)
-	public Result<?> login(){
+	/**
+	 * 首页用户重置密码
+	 */
+	//@RequiresRoles({"admin"})
+	@RequestMapping(value = "/updatePassword", method = RequestMethod.PUT)
+	public Result<?> updatePassword(@RequestBody Map <String,String>map,HttpServletRequest request) {
+		String username = map.get("username");
+		String oldpassword = map.get("oldpassword");
+		String password = map.get("password");
+		String confirmpassword = map.get("confirmpassword");
+		LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
+		if(!sysUser.getUsername().equals(username)){
+			return Result.error("只允许修改自己的密码!");
+		}
+		SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
+		if(user==null) {
+			return Result.error("用户不存在!");
+		}
+		//update-begin---author:wangshuai ---date:20220316  for:[VUEN-234]修改密码添加敏感日志------------
+		LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		baseCommonService.addLog("修改密码,username: " +loginUser.getUsername() ,CommonConstant.LOG_TYPE_2, 2);
+		//update-end---author:wangshuai ---date:20220316  for:[VUEN-234]修改密码添加敏感日志------------
+		Result<?> result = sysUserService.resetPassword(username, oldpassword, password, confirmpassword);
+		//退出登录
+		if (result.getCode()==200){
+			logout( request);
+		}
+		return result;
+	}
+	public Result<Object> logout(HttpServletRequest request) {
+		//用户退出逻辑
+		String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
+		if (oConvertUtils.isEmpty(token)) {
+			return Result.error("退出登录失败!");
+		}
+		String username = JwtUtil.getUsername(token);
+		LoginUser sysUser = sysBaseApi.getUserByName(username);
+		if (sysUser != null) {
+			//update-begin--Author:wangshuai  Date:20200714  for:登出日志没有记录人员
+			baseCommonService.addLog("用户名: " + sysUser.getRealname() + ",退出成功!", CommonConstant.LOG_TYPE_1, null, sysUser);
+			//update-end--Author:wangshuai  Date:20200714  for:登出日志没有记录人员
+			log.info(" 用户名:  " + sysUser.getRealname() + ",退出成功! ");
+			//清空用户登录Token缓存
+			redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token);
+			//清空用户登录Shiro权限缓存
+			redisUtil.del(CommonConstant.PREFIX_USER_SHIRO_CACHE + sysUser.getId());
+			//清空用户的缓存信息(包括部门信息),例如sys:cache:user::<username>
+			redisUtil.del(String.format("%s::%s", CacheConstant.SYS_USERS_CACHE, sysUser.getUsername()));
+			//调用shiro的logout
+			SecurityUtils.getSubject().logout();
+			return Result.ok("退出登录成功!");
+		} else {
+			return Result.error("Token无效!");
+		}
+	}
+	@RequestMapping(value = "/loginFirst", method = RequestMethod.POST)
+	public Result<?> login(@RequestBody SysUser user){
 		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
-
-		LoginUser sysUserOne = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-		queryWrapper.eq(SysUser::getUsername,sysUserOne.getUsername());
+		queryWrapper.eq(SysUser::getUsername,user.getUsername());
 		SysUser sysUser = sysUserService.getOne(queryWrapper);
-		if (sysUser.getUpdateTime()==null  ){
+		String encryptNew = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt());
+		String encryptOld = PasswordUtil.encrypt(user.getUsername(), "tncBeiqu.123", sysUser.getSalt());
+		if (encryptNew.equals(encryptOld) ){
 			return Result.error("首次登录 请先修改密码...");
+		}else {
+			// 计算毫秒数差值
+			long diffInMilliseconds = Math.abs(new Date().getTime() - sysUser.getUpdateTime().getTime());
+			// 将毫秒数转换为天数
+			long diffInDays = diffInMilliseconds / (24 * 60 * 60 * 1000);
+			if (diffInDays>30 ){
+				return Result.error("密码过期 请先修改密码...");
+			}
 		}
+
 		return Result.ok();
 	}
 

+ 34 - 4
tnc-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java

@@ -72,7 +72,8 @@ public class SysUserController {
 
 	@Autowired
 	private ISysUserRoleService sysUserRoleService;
-
+    @Autowired
+    private ISysRoleService iSysRoleService;
 	@Autowired
 	private ISysUserDepartService sysUserDepartService;
 
@@ -646,8 +647,9 @@ public class SysUserController {
         Result<IPage<SysUser>> result = new Result<IPage<SysUser>>();
         Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
         String roleId = req.getParameter("roleId");
+        String realname = req.getParameter("realname");
         String username = req.getParameter("username");
-        IPage<SysUser> pageList = sysUserService.getUserByRoleId(page,roleId,username);
+        IPage<SysUser> pageList = sysUserService.getUserByRoleId(page,roleId,username,realname);
         result.setSuccess(true);
         result.setResult(pageList);
         return result;
@@ -742,6 +744,8 @@ public class SysUserController {
         Page<SysUser> page = new Page<SysUser>(pageNo, pageSize);
         String depId = req.getParameter("depId");
         String username = req.getParameter("username");
+        String position = req.getParameter("position");
+        String realname = req.getParameter("realname");
         Boolean info = Boolean.valueOf(req.getParameter("info"));
         //根据部门ID查询,当前和下级所有的部门IDS
         List<String> subDepids = new ArrayList<>();
@@ -759,10 +763,13 @@ public class SysUserController {
 
             }
         }else{
-            subDepids = sysDepartService.getSubDepIdsByDepId(depId);
+            if (info){
+                subDepids.add(depId);
+            }else {
+                subDepids = sysDepartService.getSubDepIdsByDepId(depId);            }
         }
         if(subDepids != null && subDepids.size()>0){
-            IPage<SysUser> pageList = sysUserService.getUserByDepIds(page,subDepids,username);
+            IPage<SysUser> pageList = sysUserService.getUserByDepIds(page,subDepids,username,position,realname);
             //批量查询用户的所属部门
             //step.1 先拿到全部的 useids
             //step.2 通过 useids,一次性查询用户的所属部门名字
@@ -773,7 +780,30 @@ public class SysUserController {
                     //批量查询用户的所属部门
                     item.setOrgCode(useDepNames.get(item.getId()));
                 });
+
+                //添加角色
+
+                pageList.getRecords().forEach(item -> {
+                    //批量查询用户的所属部门
+                    item.setRoleName(useDepNames.get(item.getId()));
+                });
+
+                List<SysRole> list = iSysRoleService.list();
+                Map<String,String>map= new HashMap<>();
+                list.forEach(a->map.put(a.getId(),a.getRoleName()));
+                List<SysUser> records = pageList.getRecords();
+                for (SysUser record : records) {
+                    int i =1;
+                    List<SysUserRole> userRole = sysUserRoleService.list(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, record.getId()));
+                    String roleName="";
+                    for (SysUserRole sysUserRole : userRole) {
+                        roleName+=i+"、"+map.get(sysUserRole.getRoleId())+"  ";
+                        i++;
+                    }
+                    record.setRoleName(roleName);
+                }
             }
+
             result.setSuccess(true);
             result.setResult(pageList);
         }else{

+ 2 - 0
tnc-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java

@@ -185,4 +185,6 @@ public class SysUser implements Serializable {
 
     /**设备id uniapp推送用*/
     private String clientId;
+
+    private String roleName;
 }

+ 2 - 2
tnc-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java

@@ -52,7 +52,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @param username 用户登录账户
 	 * @return
 	 */
-	IPage<SysUser> getUserByDepIds(Page page, @Param("departIds") List<String> departIds, @Param("username") String username);
+	IPage<SysUser> getUserByDepIds(Page page, @Param("departIds") List<String> departIds, @Param("username") String username,@Param("position") String position,@Param("realname")String realname);
 
 	/**
 	 * 根据角色Id查询用户信息
@@ -61,7 +61,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @param username 用户登录账户
 	 * @return
 	 */
-	IPage<SysUser> getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username);
+	IPage<SysUser> getUserByRoleId(Page page, @Param("roleId") String roleId, @Param("username") String username,@Param("realname")String realname);
 	
 	/**
 	 * 根据用户名设置部门ID

+ 9 - 0
tnc-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml

@@ -36,6 +36,12 @@
 		<if test="username!=null and username!=''">
 			and username = #{username}
 		</if>
+		<if test="position!=null and position!=''">
+			and position LIKE CONCAT('%',#{position},'%')
+		</if>
+		<if test="realname!=null and realname!=''">
+			and realname LIKE CONCAT('%',#{realname},'%')
+		</if>
 	</select>
 
 	<!-- 根据角色Id查询 -->
@@ -44,6 +50,9 @@
 		<if test="username!=null and username!=''">
 			and username = #{username}
 		</if>
+		<if test="realname!=null and realname!=''">
+			and realname LIKE CONCAT('%',#{realname},'%')
+		</if>
 	</select>
 	
 	<!--  修改用户部门code -->

+ 2 - 2
tnc-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java

@@ -111,7 +111,7 @@ public interface ISysUserService extends IService<SysUser> {
      * @param username 用户账户名称
 	 * @return
 	 */
-	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username);
+	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username,String position,String realname);
 
 	/**
 	 * 根据 userIds查询,查询用户所属部门的名称(多个部门名逗号隔开)
@@ -147,7 +147,7 @@ public interface ISysUserService extends IService<SysUser> {
      * @param username 用户账户名称
 	 * @return
 	 */
-	public IPage<SysUser> getUserByRoleId(Page<SysUser> page,String roleId, String username);
+	public IPage<SysUser> getUserByRoleId(Page<SysUser> page,String roleId, String username,String realname);
 
 	/**
 	 * 通过用户名获取用户角色集合

+ 24 - 1
tnc-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java

@@ -24,6 +24,7 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.Collator;
 import java.util.*;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
@@ -80,7 +81,7 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 	 * queryTreeList 对应 queryTreeList 查询所有的部门数据,以树结构形式响应给前端
 	 */
 	@Override
-	@Cacheable(value = CacheConstant.SYS_DEPARTS_CACHE)
+	//@Cacheable(value = CacheConstant.SYS_DEPARTS_CACHE)
 	public List<SysDepartTreeModel> queryTreeList() {
 		LambdaQueryWrapper<SysDepart> query = new LambdaQueryWrapper<SysDepart>();
 		query.eq(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_0.toString());
@@ -88,6 +89,17 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 		List<SysDepart> list = this.list(query);
         //update-begin---author:wangshuai ---date:20220307  for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理
 		//设置用户id,让前台显示
+		//排序
+		Collections.sort(list, new Comparator() {
+			@Override
+			public int compare(Object object1, Object object2) {
+				String str1 = ((SysDepart)object1).getDepartName();
+				String str2 = ((SysDepart)object2).getDepartName();
+				Comparator cmp = Collator.getInstance
+						(java.util.Locale.CHINA);
+				return cmp.compare(str1, str2);
+			}
+		});
         this.setUserIdsByDepList(list);
         //update-begin---author:wangshuai ---date:20220307  for:[JTC-119]在部门管理菜单下设置部门负责人 创建用户的时候不需要处理
 		// 调用wrapTreeDataToTreeList方法生成树状数据
@@ -108,6 +120,17 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 		}
 		query.orderByAsc(SysDepart::getDepartOrder);
 		List<SysDepart> list= this.list(query);
+		//排序
+		Collections.sort(list, new Comparator() {
+			@Override
+			public int compare(Object object1, Object object2) {
+				String str1 = ((SysDepart)object1).getDepartName();
+				String str2 = ((SysDepart)object2).getDepartName();
+				Comparator cmp = Collator.getInstance
+						(java.util.Locale.CHINA);
+				return cmp.compare(str1, str2);
+			}
+		});
 		for (SysDepart depart : list) {
 			listResult.add(new SysDepartTreeModel(depart));
 		}

+ 4 - 4
tnc-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java

@@ -248,8 +248,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	}
 
 	@Override
-	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) {
-		return userMapper.getUserByDepIds(page, departIds,username);
+	public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username,String position,String realname) {
+		return userMapper.getUserByDepIds(page, departIds,username,position,realname);
 	}
 
 	@Override
@@ -297,8 +297,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @return
      */
 	@Override
-	public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
-		return userMapper.getUserByRoleId(page,roleId,username);
+	public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username,String realname) {
+		return userMapper.getUserByRoleId(page,roleId,username,realname);
 	}