Compare commits

..

No commits in common. "de5f19d3d24d87cd08517708d934f90c9fac8cb9" and "1b42f4e3ade02fd908725da5cdf3c496fc3125b7" have entirely different histories.

11 changed files with 52 additions and 212 deletions

View File

@ -9,5 +9,4 @@ public interface CommonErrorCodeConstants extends ErrorCodeConstants {
ErrorCode UNIQUE_CODE_CREATE_REPEAT = new ErrorCode(2_002_000_000, "唯一推广码生成失败");
ErrorCode STAFF_CHANGE_CREATE_REPEAT = new ErrorCode(2_002_000_001, "该员工工作已交接");
ErrorCode STAFF_NOT_CHANGE = new ErrorCode(2_002_000_003, "该员工还有工作未交接,不可删除");
ErrorCode LOGIN_ACCOUNT_EXIST = new ErrorCode(2_002_000_004, "登录账号已存在");
}

View File

@ -8,7 +8,6 @@ import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
import cn.iocoder.yudao.module.staff.service.CompanyStaffService;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
@ -201,16 +200,4 @@ public class CompanyStaffController {
staffService.resetPassword(staffRespVO);
return CommonResult.ok();
}
/**
* 获取角色列表
* @author 小李
* @date 15:08 2024/8/14
**/
@GetMapping("/roleList")
@Operation(summary = "获取角色列表")
@PreAuthorize("@ss.hasPermission('company:staff:query')")
public CommonResult<List<RoleReqDTO>> getRoleList(){
return success(staffService.getRoleList());
}
}

View File

@ -1,14 +1,12 @@
package cn.iocoder.yudao.module.staff.entity;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -17,9 +15,7 @@ import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import static cn.iocoder.yudao.common.DictBaseConstants.*;
@ -102,12 +98,4 @@ public class CompanyStaff extends TenantBaseDO {
/** 附件urlsinfra_file表中的url多个英文逗号拼接 */
private String fileUrls;
/** 员工角色ID集合 */
@TableField(exist = false)
private List<Long> roleIds;
/** 员工角色名称们(,分隔) */
@TableField(exist = false)
private String roleNames;
}

View File

@ -4,7 +4,6 @@ import cn.iocoder.yudao.module.staff.entity.CompanyStaff;
import cn.iocoder.yudao.module.label.entity.Label;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
@ -95,11 +94,4 @@ public interface CompanyStaffService extends IService<CompanyStaff> {
* @date 11:41 2024/8/13
**/
void updateStaffWorkAndJoinedYears();
/**
* 获取当前租户有些什么角色可以分配
* @author 小李
* @date 14:53 2024/8/14
**/
List<RoleReqDTO> getRoleList();
}

View File

@ -4,7 +4,9 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.common.BaseConstants;
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
import cn.iocoder.yudao.framework.datapermission.core.rule.DataPermissionRule;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.company.service.CompanyService;
import cn.iocoder.yudao.module.label.entity.BusiLabel;
import cn.iocoder.yudao.module.label.entity.Label;
import cn.iocoder.yudao.module.label.service.BusiLabelService;
@ -18,9 +20,6 @@ import cn.iocoder.yudao.module.staff.vo.CompanyStaffReqVO;
import cn.iocoder.yudao.module.staff.vo.CompanyStaffRespVO;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
import cn.iocoder.yudao.module.system.api.permission.RoleApi;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.UserDTO;
@ -38,7 +37,6 @@ import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.config.CommonStr.USER_TYPE_STAFF;
@ -74,12 +72,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
@Resource
private CompanyStaffChangeService staffChangeService;
@Resource
private RoleApi roleApi;
@Resource
private PermissionApi permissionApi;
/**
* 获得企业管理-员工信息表分页
*
@ -106,12 +98,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
// 获取当前登录用户的详细信息
AdminUserRespDTO loginUser = getLoginUser();
// 验证登录账号是否重复
AdminUserRespDTO checkUserName = adminUserApi.getUserByUsername(staffRespVO.getLoginAccount());
if (ObjectUtil.isNotEmpty(checkUserName)){
throw exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_EXIST);
}
/* 创建UserDTO用于给sys_user插入数据 */
UserDTO userDTO = new UserDTO();
userDTO.setUsername(staffRespVO.getLoginAccount());
@ -156,10 +142,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
// 3 保存员工信息到数据库
this.save(staffRespVO);
// 新增角色权限
Set<Long> roleIds = staffRespVO.getRoleIds().stream().collect(Collectors.toSet());
permissionApi.assignUserRoleByRoleIds(userId, roleIds);
/* 插入标签到业务标签表 */
if (ObjectUtil.isNotEmpty(staffRespVO.getLabelsArray())) {
// 1 获取所有标签信息
@ -216,12 +198,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
}
}
/* 修改角色 */
if (ObjectUtil.isNotEmpty(staffRespVO.getRoleIds())){
Set<Long> roleIdes = staffRespVO.getRoleIds().stream().collect(Collectors.toSet());
permissionApi.assignUserRoleByRoleIds(staffRespVO.getUserId(), roleIdes);
}
/* 修改员工表 */
baseMapper.updateById(staffRespVO);
}
@ -251,7 +227,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
/* 删除业务标签表记录 */
busiLabelService.remove(new LambdaQueryWrapper<BusiLabel>().eq(BusiLabel::getMainId, staff.getId()));
/* 删除员工表记录 */
baseMapper.deleteById(id);
}
@ -276,9 +251,6 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
List<String> labelsArray = busiLabels.stream().map(item -> item.getLabelName()).collect(Collectors.toList());
staffRespVO.setLabelsArray(labelsArray);
}
// 查角色ID给响应对象
List<Long> roleIds = permissionApi.getRoleIdsByUserId(staff.getUserId());
staffRespVO.setRoleIds(roleIds);
return staffRespVO;
}
@ -455,7 +427,7 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
updateBatchById(result);
// 没有下一页了就退出
if (companyStaffPage.getRecords().isEmpty()) {
if (companyStaffPage.getRecords().isEmpty()){
break;
}
@ -463,15 +435,4 @@ public class CompanyStaffServiceImpl extends ServiceImpl<CompanyStaffMapper, Com
queryWrapper.gt(CompanyStaff::getId, page.getRecords().get(page.getRecords().size() - 1).getId());
}
}
/**
* 获取当前租户有些什么角色可以分配
*
* @author 小李
* @date 14:53 2024/8/14
**/
@Override
public List<RoleReqDTO> getRoleList() {
return roleApi.getRoleList();
}
}

View File

@ -24,6 +24,4 @@ public class CompanyStaffReqVO extends CompanyStaff {
@Schema(description = "入职日期查询范围")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date[] joinedDateArray;
}

View File

@ -5,60 +5,57 @@
<mapper namespace="cn.iocoder.yudao.module.staff.mapper.CompanyStaffMapper">
<resultMap id="BaseResultMap" type="cn.iocoder.yudao.module.staff.entity.CompanyStaff">
<id property="id" column="cs_id" jdbcType="VARCHAR"/>
<result property="corpId" column="cs_corp_id" jdbcType="VARCHAR"/>
<result property="userId" column="cs_user_id" jdbcType="BIGINT"/>
<result property="deptId" column="cs_dept_id" jdbcType="BIGINT"/>
<result property="workNo" column="cs_work_no" jdbcType="VARCHAR"/>
<result property="name" column="cs_name" jdbcType="VARCHAR"/>
<result property="tel" column="cs_tel" jdbcType="VARCHAR"/>
<result property="sex" column="cs_sex" jdbcType="VARCHAR"/>
<result property="address" column="cs_address" jdbcType="VARCHAR"/>
<result property="workDate" column="cs_work_date" jdbcType="DATE"/>
<result property="workYear" column="cs_work_year" jdbcType="DECIMAL"/>
<result property="joinedDate" column="cs_joined_date" jdbcType="DATE"/>
<result property="joinedYear" column="cs_joined_year" jdbcType="DECIMAL"/>
<result property="education" column="cs_education" jdbcType="VARCHAR"/>
<result property="content" column="cs_content" jdbcType="VARCHAR"/>
<result property="uniqueCode" column="cs_unique_code" jdbcType="VARCHAR"/>
<result property="fileUrls" column="cs_file_urls" jdbcType="VARCHAR"/>
<result property="roleNames" column="role_names" />
<id property="id" column="id" jdbcType="VARCHAR"/>
<result property="corpId" column="corp_id" jdbcType="VARCHAR"/>
<result property="userId" column="user_id" jdbcType="BIGINT"/>
<result property="deptId" column="dept_id" jdbcType="BIGINT"/>
<result property="workNo" column="work_no" jdbcType="VARCHAR"/>
<result property="name" column="name" jdbcType="VARCHAR"/>
<result property="tel" column="tel" jdbcType="VARCHAR"/>
<result property="sex" column="sex" jdbcType="VARCHAR"/>
<result property="address" column="address" jdbcType="VARCHAR"/>
<result property="workDate" column="work_date" jdbcType="DATE"/>
<result property="workYear" column="work_year" jdbcType="DECIMAL"/>
<result property="joinedDate" column="joined_date" jdbcType="DATE"/>
<result property="joinedYear" column="joined_year" jdbcType="DECIMAL"/>
<result property="education" column="education" jdbcType="VARCHAR"/>
<result property="content" column="content" jdbcType="VARCHAR"/>
<result property="uniqueCode" column="unique_code" jdbcType="VARCHAR"/>
<result property="fileUrls" column="file_urls" jdbcType="VARCHAR"/>
<result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/>
<result property="deleted" column="deleted" jdbcType="BIT"/>
<result property="creator" column="creator" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updater" column="updater" jdbcType="VARCHAR"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_SQL">
SELECT cs.id AS cs_id,
cs.corp_id AS cs_corp_id,
cs.user_id AS cs_user_id,
cs.dept_id AS cs_dept_id,
cs.work_no AS cs_work_no,
cs.name AS cs_name,
cs.tel AS cs_tel,
cs.sex AS cs_sex,
cs.address AS cs_address,
cs.work_date AS cs_work_date,
cs.work_year AS cs_work_year,
cs.joined_date AS cs_joined_date,
cs.joined_year AS cs_joined_year,
cs.education AS cs_education,
cs.content AS cs_content,
cs.unique_code AS cs_unique_code,
cs.file_urls AS cs_file_urls,
rn.role_names AS role_names
FROM company_staff cs
LEFT JOIN
(
SELECT cs.user_id,
sr.id,
GROUP_CONCAT(DISTINCT sr.name ORDER BY sr.name SEPARATOR ',') AS role_names
FROM company_staff cs
LEFT JOIN
system_user_role sur ON cs.user_id = sur.user_id
LEFT JOIN
system_role sr ON sur.role_id = sr.id
WHERE cs.deleted = '0' AND sur.deleted = '0'
GROUP BY cs.user_id
) rn ON cs.user_id = rn.user_id
WHERE cs.deleted = '0'
select id,
corp_id,
user_id,
dept_id,
work_no,
name,
tel,
sex,
address,
work_date,
work_year,
joined_date,
joined_year,
education,
content,
unique_code,
file_urls,
tenant_id,
deleted,
creator,
create_time,
updater,
update_time
from company_staff cs
where deleted = '0'
</sql>
<select id="selectListPage" resultMap="BaseResultMap">
@ -96,12 +93,6 @@
<if test="map.joinedDateArray.length > 0">
and cs.joined_date between #{map.joinedDateArray[0]} and #{map.joinedDateArray[1]}
</if>
<if test="map.roleIds != null and map.roleIds.size > 0">
and rn.id in
<foreach collection="map.roleIds" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
order by cs.create_time desc
order by create_time desc
</select>
</mapper>

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.api.permission;
import cn.iocoder.yudao.module.system.api.permission.dto.DeptDataPermissionRespDTO;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
@ -55,21 +54,4 @@ public interface PermissionApi {
*/
void assignUserRole(Long userId, Set<String> roleCodes);
/**
* 设置用户角色
*
* @author 小李
* @date 18:58 2024/8/14
* @param userId 用户D
* @param roleIds 角色IDs
**/
void assignUserRoleByRoleIds(Long userId, Set<Long> roleIds);
/**
* 获取某个用户的角色IDs
* @author 小李
* @date 19:24 2024/8/14
* @param userId 用户ID
**/
List<Long> getRoleIdsByUserId(Long userId);
}

View File

@ -1,9 +1,6 @@
package cn.iocoder.yudao.module.system.api.permission;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import java.util.Collection;
import java.util.List;
/**
* 角色 API 接口
@ -21,11 +18,4 @@ public interface RoleApi {
*/
void validRoleList(Collection<Long> ids);
/**
* 查询角色列表
* @author 小李
* @date 15:03 2024/8/14
**/
List<RoleReqDTO> getRoleList();
}

View File

@ -6,9 +6,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 权限 API 实现类
@ -52,29 +50,4 @@ public class PermissionApiImpl implements PermissionApi {
permissionService.assignUserRoleByCodes(userId, roleCodes);
}
/**
* 设置用户角色
*
* @author 小李
* @date 18:58 2024/8/14
* @param userId 用户D
* @param roleIds 角色IDs
**/
@Override
public void assignUserRoleByRoleIds(Long userId, Set<Long> roleIds){
permissionService.assignUserRole(userId, roleIds);
}
/**
* 获取某个用户的角色IDs
* @author 小李
* @date 19:24 2024/8/14
* @param userId 用户ID
**/
@Override
public List<Long> getRoleIdsByUserId(Long userId){
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(userId);
return roleIds.stream().collect(Collectors.toList());
}
}

View File

@ -1,15 +1,10 @@
package cn.iocoder.yudao.module.system.api.permission;
import cn.hutool.core.bean.BeanUtil;
import cn.iocoder.yudao.module.system.api.permission.dto.RoleReqDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
/**
* 角色 API 实现类
@ -26,20 +21,4 @@ public class RoleApiImpl implements RoleApi {
public void validRoleList(Collection<Long> ids) {
roleService.validateRoleList(ids);
}
/**
* 查询角色列表
* @author 小李
* @date 15:03 2024/8/14
**/
@Override
public List<RoleReqDTO> getRoleList(){
List<RoleDO> roleList = roleService.getRoleList();
List<RoleReqDTO> result = roleList.stream().map(item -> {
RoleReqDTO roleReqDTO = new RoleReqDTO();
BeanUtil.copyProperties(item, roleReqDTO);
return roleReqDTO;
}).collect(Collectors.toList());
return result;
}
}