员工信息调整,按钮调整,样式调整,增加重置密码、冻结、解冻功能

This commit is contained in:
1378012178@qq.com 2026-03-12 16:17:37 +08:00
parent 552e2decb5
commit a5b97d9524
10 changed files with 784 additions and 530 deletions

View File

@ -4,7 +4,11 @@ import java.util.Arrays;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.nu.dto.EmployeesStatusMQDto;
import com.nu.utils.RabbitMQUtil;
import org.jeecg.common.api.vo.Result; import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.system.query.QueryGenerator;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo; import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService; import com.nu.modules.employeesInfo.service.IBizEmployeesInfoService;
@ -36,6 +40,10 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
public class BizEmployeesInfoController extends JeecgController<BizEmployeesInfo, IBizEmployeesInfoService> { public class BizEmployeesInfoController extends JeecgController<BizEmployeesInfo, IBizEmployeesInfoService> {
@Autowired @Autowired
private IBizEmployeesInfoService bizEmployeesInfoService; private IBizEmployeesInfoService bizEmployeesInfoService;
@Autowired
private ISysBaseAPI sysBaseAPI;
@Autowired
private RabbitMQUtil rabbitMQUtil;
/** /**
* 分页列表查询 * 分页列表查询
@ -53,10 +61,13 @@ public class BizEmployeesInfoController extends JeecgController<BizEmployeesInfo
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
QueryWrapper<BizEmployeesInfo> queryWrapper = QueryGenerator.initQueryWrapper(bizEmployeesInfo, req.getParameterMap()); // QueryWrapper<BizEmployeesInfo> queryWrapper = QueryGenerator.initQueryWrapper(bizEmployeesInfo, req.getParameterMap());
queryWrapper.orderByDesc("create_time"); // queryWrapper.orderByDesc("create_time");
Page<BizEmployeesInfo> page = new Page<BizEmployeesInfo>(pageNo, pageSize); // Page<BizEmployeesInfo> page = new Page<BizEmployeesInfo>(pageNo, pageSize);
IPage<BizEmployeesInfo> pageList = bizEmployeesInfoService.page(page, queryWrapper); // //查询已在mapper中重写
// IPage<BizEmployeesInfo> pageList = bizEmployeesInfoService.page(page, queryWrapper);
IPage<BizEmployeesInfo> pageList = bizEmployeesInfoService.queryPageList(bizEmployeesInfo, pageNo, pageSize, req);
return Result.OK(pageList); return Result.OK(pageList);
} }
@ -162,4 +173,27 @@ public class BizEmployeesInfoController extends JeecgController<BizEmployeesInfo
return super.importExcel(request, response, BizEmployeesInfo.class); return super.importExcel(request, response, BizEmployeesInfo.class);
} }
/**
* 冻结/解冻员工
*
* @param bizEmployeesInfo
* @return
*/
@AutoLog(value = "员工信息-冻结/解冻员工")
@ApiOperation(value = "员工信息-冻结/解冻员工", notes = "员工信息-冻结/解冻员工")
@RequestMapping(value = "/djOrJd", method = {RequestMethod.PUT, RequestMethod.POST})
public Result<String> djOrJd(@RequestBody BizEmployeesInfo bizEmployeesInfo) {
BizEmployeesInfo upInfo = new BizEmployeesInfo();
upInfo.setId(bizEmployeesInfo.getId());
upInfo.setIzFreeze(bizEmployeesInfo.getIzFreeze());//是否冻结 Y冻结 N未冻结
bizEmployeesInfoService.updateById(upInfo);
JSONObject deptInfo = sysBaseAPI.getDeptInfo();
EmployeesStatusMQDto mqDto = new EmployeesStatusMQDto();
mqDto.setOrgCode(deptInfo.getString("code"));
mqDto.setIzFreeze(bizEmployeesInfo.getIzFreeze());
mqDto.setOpenId(bizEmployeesInfo.getOpenId());
rabbitMQUtil.sendToExchange("hldy.employees", "employees.account.freezeOrEnabled", mqDto);
return Result.OK("操作成功!");
}
} }

View File

@ -1,6 +1,7 @@
package com.nu.modules.employeesInfo.entity; package com.nu.modules.employeesInfo.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -241,4 +242,11 @@ public class BizEmployeesInfo implements Serializable {
/**接单上限*/ /**接单上限*/
@ApiModelProperty(value = "接单上限") @ApiModelProperty(value = "接单上限")
private Integer orderCap; private Integer orderCap;
@TableField(exist = false)
private String userStatus;
@TableField(exist = false)
private String userId;
} }

View File

@ -1,9 +1,13 @@
package com.nu.modules.employeesInfo.mapper; package com.nu.modules.employeesInfo.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo; import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Map;
/** /**
* @Description: 员工信息 * @Description: 员工信息
* @Author: jeecg-boot * @Author: jeecg-boot
@ -14,4 +18,6 @@ public interface BizEmployeesInfoMapper extends BaseMapper<BizEmployeesInfo> {
BizEmployeesInfo findById(BizEmployeesInfo bizEmployeesInfo); BizEmployeesInfo findById(BizEmployeesInfo bizEmployeesInfo);
void UpUserEmployeesId(@Param("userId") String userId); void UpUserEmployeesId(@Param("userId") String userId);
IPage<BizEmployeesInfo> queryPageList(Page<BizEmployeesInfo> page, @Param("params") Map<String, Object> params);
} }

View File

@ -2,12 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nu.modules.employeesInfo.mapper.BizEmployeesInfoMapper"> <mapper namespace="com.nu.modules.employeesInfo.mapper.BizEmployeesInfoMapper">
<update id="UpUserEmployeesId"> <update id="UpUserEmployeesId">
update sys_user set employees_id = id where id = #{userId} update sys_user
set employees_id = id
where id = #{userId}
</update> </update>
<select id="findById" resultType="com.nu.modules.employeesInfo.entity.BizEmployeesInfo"> <select id="findById" resultType="com.nu.modules.employeesInfo.entity.BizEmployeesInfo">
select select id,
id,
name, name,
sex, sex,
national, national,
@ -64,4 +65,102 @@
where id = #{id} where id = #{id}
</select> </select>
<select id="queryPageList" resultType="com.nu.modules.employeesInfo.entity.BizEmployeesInfo">
SELECT
ei.id AS id,
ei.name AS name,
ei.sex AS sex,
ei.national AS national,
ei.head_path AS headPath,
ei.id_card AS idCard,
ei.tel AS tel,
ei.entry_time AS entryTime,
ei.post_level AS postLevel,
ei.date_of_birth AS dateOfBirth,
ei.married_or_not AS marriedOrNot,
ei.wages AS wages,
ei.height AS height,
ei.weight AS weight,
ei.address AS address,
ei.current_address AS currentAddress,
ei.is_smoking AS isSmoking,
ei.health_status AS healthStatus,
ei.house_address AS houseAddress,
ei.political_appearance AS politicalAppearance,
ei.emergency_contact AS emergencyContact,
ei.emergency_tel AS emergencyTel,
ei.emergency_relationship AS emergencyRelationship,
ei.hukou_nature AS hukouNature,
ei.content AS content,
ei.id_card_positive AS idCardPositive,
ei.id_card_negative AS idCardNegative,
ei.contract_positive AS contractPositive,
ei.contract_negative AS contractNegative,
ei.health_certificate_positive AS healthCertificatePositive,
ei.health_certificate_negative AS healthCertificateNegative,
ei.bank_positive AS bankPositive,
ei.bank_negative AS bankNegative,
ei.qualification AS qualification,
ei.no_crime_certificate AS noCrimeCertificate,
ei.regional AS regional,
ei.service_tag AS serviceTag,
ei.del_flag AS delFlag,
ei.create_by AS createBy,
ei.create_time AS createTime,
ei.update_by AS updateBy,
ei.update_time AS updateTime,
ei.sys_org_code AS sysOrgCode,
ei.open_id AS openId,
ei.iz_online AS izOnline,
ei.iz_freeze AS izFreeze,
ei.opening_bank AS openingBank,
ei.bank_card AS bankCard,
ei.iz_invited AS izInvited,
ei.modify_status AS modifyStatus,
ei.start_time AS startTime,
ei.end_time AS endTime,
ei.order_cap AS orderCap,
usert.status AS userStatus,
usert.id AS userId
FROM nu_biz_employees_info AS ei
LEFT JOIN sys_user usert on ei.tel = usert.username
<where>
ei.del_flag = 0
<if test="params.name != null and params.name != ''">
AND ei.name LIKE CONCAT('%', #{params.name}, '%')
</if>
<if test="params.sex != null and params.sex != ''">
AND ei.sex = #{params.sex}
</if>
<if test="params.idCard != null and params.idCard != ''">
AND ei.id_card LIKE CONCAT('%', #{params.idCard}, '%')
</if>
<if test="params.tel != null and params.tel != ''">
AND ei.tel LIKE CONCAT('%', #{params.tel}, '%')
</if>
<if test="params.postLevel != null and params.postLevel != ''">
AND ei.post_level = #{params.postLevel}
</if>
<if test="params.regional != null and params.regional != ''">
AND ei.regional = #{params.regional}
</if>
<if test="params.izOnline != null and params.izOnline != ''">
AND ei.iz_online = #{params.izOnline}
</if>
<if test="params.izFreeze != null and params.izFreeze != ''">
AND ei.iz_freeze = #{params.izFreeze}
</if>
<if test="params.entryTimeStart != null">
AND ei.entry_time >= #{params.entryTimeStart}
</if>
<if test="params.entryTimeEnd != null">
AND ei.entry_time &lt;= #{params.entryTimeEnd}
</if>
<if test="params.sysOrgCode != null and params.sysOrgCode != ''">
AND ei.sys_org_code LIKE CONCAT(#{params.sysOrgCode}, '%')
</if>
</where>
ORDER BY ei.create_time DESC
</select>
</mapper> </mapper>

View File

@ -1,8 +1,11 @@
package com.nu.modules.employeesInfo.service; package com.nu.modules.employeesInfo.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo; import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import javax.servlet.http.HttpServletRequest;
/** /**
* @Description: 员工信息 * @Description: 员工信息
* @Author: jeecg-boot * @Author: jeecg-boot
@ -13,4 +16,6 @@ public interface IBizEmployeesInfoService extends IService<BizEmployeesInfo> {
BizEmployeesInfo findById(BizEmployeesInfo bizEmployeesInfo); BizEmployeesInfo findById(BizEmployeesInfo bizEmployeesInfo);
void UpUserEmployeesId(String userId); void UpUserEmployeesId(String userId);
IPage<BizEmployeesInfo> queryPageList(BizEmployeesInfo bizEmployeesInfo, Integer pageNo, Integer pageSize, HttpServletRequest req);
} }

View File

@ -2,6 +2,8 @@ package com.nu.modules.employeesInfo.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nu.entity.EmployeesInfoEntity; import com.nu.entity.EmployeesInfoEntity;
import com.nu.modules.IEmployeesInfoApi; import com.nu.modules.IEmployeesInfoApi;
import com.nu.modules.employeesInfo.entity.BizEmployeesInfo; import com.nu.modules.employeesInfo.entity.BizEmployeesInfo;
@ -15,6 +17,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -95,4 +98,31 @@ public class BizEmployeesInfoServiceImpl extends ServiceImpl<BizEmployeesInfoMap
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
public IPage<BizEmployeesInfo> queryPageList(BizEmployeesInfo bizEmployeesInfo,
Integer pageNo,
Integer pageSize,
HttpServletRequest req) {
Page<BizEmployeesInfo> page = new Page<>(pageNo, pageSize);
// 将查询参数转换为Map
Map<String, Object> params = new HashMap<>();
if (bizEmployeesInfo != null) {
params.put("name", bizEmployeesInfo.getName());
params.put("sex", bizEmployeesInfo.getSex());
params.put("idCard", bizEmployeesInfo.getIdCard());
params.put("tel", bizEmployeesInfo.getTel());
params.put("postLevel", bizEmployeesInfo.getPostLevel());
params.put("regional", bizEmployeesInfo.getRegional());
params.put("izOnline", bizEmployeesInfo.getIzOnline());
params.put("izFreeze", bizEmployeesInfo.getIzFreeze());
params.put("sysOrgCode", bizEmployeesInfo.getSysOrgCode());
}
// 从request中获取其他参数
params.put("entryTimeStart", req.getParameter("entryTimeStart"));
params.put("entryTimeEnd", req.getParameter("entryTimeEnd"));
return baseMapper.queryPageList(page, params);
}
} }

View File

@ -114,6 +114,7 @@ public class SysUserController {
/** /**
* 获取租户下用户数据支持租户隔离 * 获取租户下用户数据支持租户隔离
*
* @param user * @param user
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
@ -258,6 +259,7 @@ public class SysUserController {
/** /**
* 冻结&解冻用户 * 冻结&解冻用户
*
* @param jsonObject * @param jsonObject
* @return * @return
*/ */
@ -300,7 +302,6 @@ public class SysUserController {
} }
@RequiresPermissions("system:user:queryById") @RequiresPermissions("system:user:queryById")
@RequestMapping(value = "/queryByEmployeesId", method = RequestMethod.GET) @RequestMapping(value = "/queryByEmployeesId", method = RequestMethod.GET)
public Result<SysUser> queryByEmployeesId(@RequestParam(name = "employeesId", required = true) String employeesId) { public Result<SysUser> queryByEmployeesId(@RequestParam(name = "employeesId", required = true) String employeesId) {
@ -463,6 +464,7 @@ public class SysUserController {
/** /**
* 用户选择组件 专用 根据用户账号或部门分页查询 * 用户选择组件 专用 根据用户账号或部门分页查询
*
* @param departId * @param departId
* @param username * @param username
* @return * @return
@ -601,9 +603,9 @@ public class SysUserController {
} }
/** /**
* @功能根据id 批量查询
* @param userIds * @param userIds
* @return * @return
* @功能根据id 批量查询
*/ */
@RequestMapping(value = "/queryByIds", method = RequestMethod.GET) @RequestMapping(value = "/queryByIds", method = RequestMethod.GET)
public Result<Collection<SysUser>> queryByIds(@RequestParam(name = "userIds") String userIds) { public Result<Collection<SysUser>> queryByIds(@RequestParam(name = "userIds") String userIds) {
@ -618,9 +620,9 @@ public class SysUserController {
/** /**
* @功能根据id 批量查询
* @param userNames * @param userNames
* @return * @return
* @功能根据id 批量查询
*/ */
@RequestMapping(value = "/queryByNames", method = RequestMethod.GET) @RequestMapping(value = "/queryByNames", method = RequestMethod.GET)
public Result<Collection<SysUser>> queryByNames(@RequestParam(name = "userNames") String userNames) { public Result<Collection<SysUser>> queryByNames(@RequestParam(name = "userNames") String userNames) {
@ -730,8 +732,10 @@ public class SysUserController {
return result; return result;
} }
} }
/** /**
* 删除指定角色的用户关系 * 删除指定角色的用户关系
*
* @param * @param
* @return * @return
*/ */
@ -980,6 +984,7 @@ public class SysUserController {
/** /**
* 查询当前用户的所有部门/当前部门编码 * 查询当前用户的所有部门/当前部门编码
*
* @return * @return
*/ */
@RequestMapping(value = "/getCurrentUserDeparts", method = RequestMethod.GET) @RequestMapping(value = "/getCurrentUserDeparts", method = RequestMethod.GET)
@ -1001,8 +1006,6 @@ public class SysUserController {
} }
/** /**
* 用户注册接口 * 用户注册接口
* *
@ -1254,6 +1257,7 @@ public class SysUserController {
/** /**
* APP端接口获取用户列表 根据用户名和真实名 模糊匹配 * APP端接口获取用户列表 根据用户名和真实名 模糊匹配
*
* @param keyword * @param keyword
* @param pageNo * @param pageNo
* @param pageSize * @param pageSize
@ -1346,6 +1350,7 @@ public class SysUserController {
/** /**
* 移动端修改用户信息 * 移动端修改用户信息
*
* @param jsonObject * @param jsonObject
* @return * @return
*/ */
@ -1410,8 +1415,10 @@ public class SysUserController {
} }
return result; return result;
} }
/** /**
* 移动端保存设备信息 * 移动端保存设备信息
*
* @param clientId * @param clientId
* @return * @return
*/ */
@ -1433,6 +1440,7 @@ public class SysUserController {
} }
return result; return result;
} }
/** /**
* 根据userid获取用户信息和部门员工信息 * 根据userid获取用户信息和部门员工信息
* *
@ -1457,8 +1465,10 @@ public class SysUserController {
} }
return Result.ok(map); return Result.ok(map);
} }
/** /**
* 移动端查询部门用户信息 * 移动端查询部门用户信息
*
* @param departId * @param departId
* @return * @return
*/ */
@ -1471,8 +1481,10 @@ public class SysUserController {
result.setResult(childrenUser); result.setResult(childrenUser);
return result; return result;
} }
/** /**
* 移动端查询用户信息(通过用户名模糊查询) * 移动端查询用户信息(通过用户名模糊查询)
*
* @param keyword * @param keyword
* @return * @return
*/ */
@ -1525,6 +1537,7 @@ public class SysUserController {
/** /**
* 根据用户名修改手机号[该方法未使用] * 根据用户名修改手机号[该方法未使用]
*
* @param json * @param json
* @return * @return
*/ */
@ -1566,6 +1579,7 @@ public class SysUserController {
/** /**
* 根据对象里面的属性值作in查询 属性可能会变 用户组件用到 * 根据对象里面的属性值作in查询 属性可能会变 用户组件用到
*
* @param sysUser * @param sysUser
* @return * @return
*/ */
@ -1585,6 +1599,7 @@ public class SysUserController {
/** /**
* 聊天 创建聊天组件专用 根据用户账号用户姓名部门id分页查询 * 聊天 创建聊天组件专用 根据用户账号用户姓名部门id分页查询
*
* @param departId 部门id * @param departId 部门id
* @param keyword 搜索值 * @param keyword 搜索值
* @return * @return
@ -1608,6 +1623,7 @@ public class SysUserController {
/** /**
* 简版流程用户选择组件 * 简版流程用户选择组件
*
* @param departId 部门id * @param departId 部门id
* @param roleId 角色id * @param roleId 角色id
* @param keyword 搜索值 * @param keyword 搜索值
@ -1637,6 +1653,7 @@ public class SysUserController {
/** /**
* 用户离职(新增代理人和用户状态变更操作)低代码应用专用接口 * 用户离职(新增代理人和用户状态变更操作)低代码应用专用接口
*
* @param sysUserAgent * @param sysUserAgent
* @return * @return
*/ */
@ -1674,6 +1691,7 @@ public class SysUserController {
/** /**
* 更新刪除状态和离职状态低代码应用专用接口 * 更新刪除状态和离职状态低代码应用专用接口
*
* @param jsonObject * @param jsonObject
* @return Result<String> * @return Result<String>
*/ */
@ -1697,6 +1715,7 @@ public class SysUserController {
/** /**
* 获取用户信息(vue3用户设置专用)低代码应用专用接口 * 获取用户信息(vue3用户设置专用)低代码应用专用接口
*
* @return * @return
*/ */
@GetMapping("/login/setting/getUserData") @GetMapping("/login/setting/getUserData")
@ -1736,6 +1755,7 @@ public class SysUserController {
/** /**
* 用户编辑(vue3用户设置专用)低代码应用专用接口 * 用户编辑(vue3用户设置专用)低代码应用专用接口
*
* @param sysUser * @param sysUser
* @return * @return
*/ */
@ -1757,6 +1777,7 @@ public class SysUserController {
/** /**
* 修改个人头像 * 修改个人头像
*
* @param sysUser * @param sysUser
* @return * @return
*/ */
@ -1783,6 +1804,7 @@ public class SysUserController {
/** /**
* 批量修改 low-app * 批量修改 low-app
*
* @param jsonObject * @param jsonObject
* @return * @return
*/ */
@ -1802,6 +1824,7 @@ public class SysUserController {
/** /**
* 根据关键词搜索部门和用户low-app * 根据关键词搜索部门和用户low-app
*
* @param keyword * @param keyword
* @return * @return
*/ */
@ -1813,6 +1836,7 @@ public class SysUserController {
/** /**
* 编辑部门前获取部门相关信息 low-app * 编辑部门前获取部门相关信息 low-app
*
* @param id * @param id
* @return * @return
*/ */
@ -1824,6 +1848,7 @@ public class SysUserController {
/** /**
* 编辑部门 low-app * 编辑部门 low-app
*
* @param updateDepartInfo * @param updateDepartInfo
* @return * @return
*/ */
@ -1835,6 +1860,7 @@ public class SysUserController {
/** /**
* 设置负责人 取消负责人 * 设置负责人 取消负责人
*
* @param json * @param json
* @return * @return
*/ */
@ -1846,6 +1872,7 @@ public class SysUserController {
/** /**
* 修改租户下的用户低代码应用专用接口 * 修改租户下的用户低代码应用专用接口
*
* @param sysUser * @param sysUser
* @param req * @param req
* @return * @return
@ -1872,6 +1899,7 @@ public class SysUserController {
/** /**
* 切换租户时 需要修改 loginTenantId * 切换租户时 需要修改 loginTenantId
* QQYUN-4491 应用一些小问题 1上次选中登录的租户下次登录未记忆 * QQYUN-4491 应用一些小问题 1上次选中登录的租户下次登录未记忆
*
* @param sysUser * @param sysUser
* @return * @return
*/ */
@ -1902,6 +1930,7 @@ public class SysUserController {
/** /**
* 应用用户导出 * 应用用户导出
*
* @param request * @param request
* @return * @return
*/ */
@ -1912,6 +1941,7 @@ public class SysUserController {
/** /**
* 应用用户导入 * 应用用户导入
*
* @param request * @param request
* @return * @return
*/ */
@ -1972,4 +2002,5 @@ public class SysUserController {
result.setMessage("发送验证码成功!"); result.setMessage("发送验证码成功!");
return result; return result;
} }
} }

View File

@ -127,4 +127,43 @@ public class SysUserOnlineController {
return Result.error("Token无效!"); return Result.error("Token无效!");
} }
} }
@RequestMapping(value = "/forceLogoutByUsername", method = RequestMethod.POST)
public Result<Object> forceLogoutByUsername(@RequestBody SysUserOnlineVO userVo) {
Collection<String> keys = redisUtil.scan(CommonConstant.PREFIX_USER_TOKEN + "*");
List<SysUserOnlineVO> onlineList = new ArrayList<SysUserOnlineVO>();
for (String key : keys) {
String token = (String) redisUtil.get(key);
if (StringUtils.isNotEmpty(token)) {
SysUserOnlineVO online = new SysUserOnlineVO();
online.setToken(token);
LoginUser loginUser = sysBaseApi.getUserByName(JwtUtil.getUsername(token));
if (loginUser != null && loginUser.getUsername().equals(userVo.getUsername())){
//用户退出逻辑
if (oConvertUtils.isEmpty(online.getToken())) {
return Result.error("退出登录失败!");
}
String username = JwtUtil.getUsername(online.getToken());
LoginUser sysUser = sysBaseApi.getUserByName(username);
if (sysUser != null) {
baseCommonService.addLog("强制: " + sysUser.getRealname() + "退出成功!", CommonConstant.LOG_TYPE_1, null, sysUser);
log.info(" 强制 " + sysUser.getRealname() + "退出成功! ");
//清空用户登录Token缓存
redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + online.getToken());
//清空用户登录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无效!");
}
}
}
}
return Result.ok();
}
} }

View File

@ -467,4 +467,5 @@ public interface ISysUserService extends IService<SysUser> {
* @param izOnline * @param izOnline
*/ */
void modifyEmpOnline(SysUser sysUser, String izOnline); void modifyEmpOnline(SysUser sysUser, String izOnline);
} }

View File

@ -2111,6 +2111,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
/** /**
* 修改员工在线状态 * 修改员工在线状态
*
* @param sysUser * @param sysUser
* @param izOnline * @param izOnline
*/ */