Browse Source

Merge remote-tracking branch 'origin/master_20240722' into lc_saas

dongpo 7 months ago
parent
commit
e2349ce0e3
13 changed files with 370 additions and 35 deletions
  1. 9 4
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/EmployeeApi.java
  2. 4 0
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java
  3. 241 0
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeSaveReqDTO.java
  4. 2 1
      yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/enums/ErrorCodeConstants.java
  5. 7 4
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/api/info/EmployeeApiImpl.java
  6. 10 0
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoRespVO.java
  7. 5 4
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoSaveReqVO.java
  8. 1 0
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/mysql/info/EmployeeInfoMapper.java
  9. 1 1
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoService.java
  10. 68 8
      yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoServiceImpl.java
  11. 1 1
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java
  12. 0 12
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java
  13. 21 0
      yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java

+ 9 - 4
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/EmployeeApi.java

@@ -1,10 +1,7 @@
 package cn.iocoder.yudao.module.employee.api;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeCreateReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeePageReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeQueryReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.employee.api.dto.*;
 
 import javax.validation.Valid;
 import java.util.Collection;
@@ -57,6 +54,14 @@ public interface EmployeeApi {
      */
     Long createEmployee(@Valid EmployeeCreateReqDTO reqDTO);
 
+    /**
+     * 更新员工
+     *
+     * @param reqDTO
+     * @return
+     */
+    Integer updateEmployee(@Valid EmployeeSaveReqDTO reqDTO);
+
     /**
      * 查询员工
      *

+ 4 - 0
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeRespDTO.java

@@ -89,6 +89,10 @@ public class EmployeeRespDTO {
      * 最新合同结束日期
      */
     private LocalDate contractEndDate;
+    /**
+     * 用户ID
+     */
+    private Long userId;
 
     /**
      * 用户id

+ 241 - 0
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/api/dto/EmployeeSaveReqDTO.java

@@ -0,0 +1,241 @@
+package cn.iocoder.yudao.module.employee.api.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class EmployeeSaveReqDTO {
+
+    /**
+     * 员工ID
+     */
+    private Long id;
+
+    /**
+     * 业务UUID
+     */
+    private String infoId;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 职位编号
+     */
+    private Long postId;
+
+    /**
+     * 职位名称
+     */
+    private String position;
+
+    /**
+     * 员工编号
+     */
+    private String employeeNumber;
+
+    /**
+     * 入职时间
+     */
+    private LocalDate entryDate;
+
+    /**
+     * 试用期到期时间
+     */
+    private LocalDate probationEndDate;
+
+    /**
+     * 离职时间
+     */
+    private LocalDate departureDate;
+
+    /**
+     * 离职原因
+     */
+    private String resignationReason;
+
+    /**
+     * 员工状态:1-在职,2-试用,3-离职
+     */
+    private String employeeStatus;
+
+    /**
+     * 性别
+     */
+    private String gender;
+
+    /**
+     * 电子邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 身份证号
+     */
+    private String idCardNumber;
+
+    /**
+     * 身份证地址
+     */
+    private String idCardAddress;
+
+    /**
+     * 户口类型
+     */
+    private String householdType;
+
+    /**
+     * 户口所在地
+     */
+    private String householdLocation;
+
+    /**
+     * 最高学历
+     */
+    private String educationLevel;
+
+    /**
+     * 毕业院校
+     */
+    private String graduationSchool;
+
+    /**
+     * 毕业时间
+     */
+    private LocalDate graduationDate;
+
+    /**
+     * 银行卡名称
+     */
+    private String bankCardName;
+
+    /**
+     * 银行卡卡号
+     */
+    private String bankCardNumber;
+
+    /**
+     * 年假基准天数
+     */
+    private Integer baseAnnualLeave;
+
+    /**
+     * 已使用年假天数
+     */
+    private Integer usedAnnualLeave;
+
+    /**
+     * 剩余年假天数
+     */
+    private Integer remainingAnnualLeave;
+
+    /**
+     * 出生日期
+     */
+    private LocalDate birthDate;
+
+    /**
+     * 婚姻状况
+     */
+    private String marriageStatus;
+
+    /**
+     * 工作地点
+     */
+    private String workLocation;
+
+    /**
+     * 专业
+     */
+    private String major;
+
+    /**
+     * 参加工作时间
+     */
+    private LocalDate workStartDate;
+
+    /**
+     * 薪酬
+     */
+    private BigDecimal salary;
+
+    /**
+     * 岗位薪资
+     */
+    private BigDecimal positionSalary;
+
+    /**
+     * 项目津贴
+     */
+    private BigDecimal projectAllowance;
+
+    /**
+     * 特殊岗位津贴
+     */
+    private BigDecimal specialPositionAllowance;
+
+    /**
+     * 外籍津贴
+     */
+    private BigDecimal foreignAllowance;
+
+    /**
+     * 午餐补助
+     */
+    private BigDecimal lunchSubsidy;
+
+    /**
+     * 特别津贴
+     */
+    private BigDecimal specialAllowance;
+
+    /**
+     * 补贴
+     */
+    private BigDecimal subsidy;
+
+    /**
+     * 年终奖
+     */
+    private BigDecimal yearEndBonus;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 状态:0-开启,1-关闭
+     */
+    private Integer status;
+
+    /**
+     * 租户编号
+     */
+    private Long tenantId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+}

+ 2 - 1
yudao-module-personnel/yudao-module-employee-api/src/main/java/cn/iocoder/yudao/module/employee/enums/ErrorCodeConstants.java

@@ -13,5 +13,6 @@ public interface ErrorCodeConstants {
     ErrorCode EMPLOYEE_INFO_NOT_EXISTS = new ErrorCode(1_010_000_000, "员工信息不存在");
     ErrorCode EMPLOYEE_INFO_EXISTS = new ErrorCode(1_010_000_001, "员工信息已存在");
     ErrorCode EMPLOYEE_INFO_HISTORY_NOT_EXISTS = new ErrorCode(1_010_000_002, "员工信息历史不存在");
-
+    ErrorCode EMPLOYEE_INFO_PHONE_EXISTS = new ErrorCode(1_010_000_003, "员工手机号已存在");
+    ErrorCode EMPLOYEE_INFO_PHONE_NOT_NULL = new ErrorCode(1_010_000_004, "员工手机号不能为空");
 }

+ 7 - 4
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/api/info/EmployeeApiImpl.java

@@ -3,10 +3,7 @@ package cn.iocoder.yudao.module.employee.api.info;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.module.employee.api.EmployeeApi;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeCreateReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeePageReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeQueryReqDTO;
-import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.employee.api.dto.*;
 import cn.iocoder.yudao.module.employee.controller.admin.info.vo.EmployeeInfoPageReqVO;
 import cn.iocoder.yudao.module.employee.controller.admin.info.vo.EmployeeInfoQueryReqVO;
 import cn.iocoder.yudao.module.employee.controller.admin.info.vo.EmployeeInfoSaveReqVO;
@@ -74,6 +71,12 @@ public class EmployeeApiImpl implements EmployeeApi {
         return infoService.createInfo(reqVO);
     }
 
+    @Override
+    public Integer updateEmployee(EmployeeSaveReqDTO reqDTO) {
+        EmployeeInfoSaveReqVO reqVO = BeanUtils.toBean(reqDTO, EmployeeInfoSaveReqVO.class);
+        return infoService.updateInfo(reqVO);
+    }
+
     @Override
     public EmployeeRespDTO getEmployee(EmployeeQueryReqDTO reqDTO) {
         EmployeeInfoQueryReqVO reqVO = BeanUtils.toBean(reqDTO, EmployeeInfoQueryReqVO.class);

+ 10 - 0
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoRespVO.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.employee.controller.admin.info.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.*;
 import java.math.BigDecimal;
@@ -46,14 +47,17 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "入职时间")
     @ExcelProperty("入职时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate entryDate;
 
     @Schema(description = "试用期到期时间")
     @ExcelProperty("试用期到期时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate probationEndDate;
 
     @Schema(description = "离职时间")
     @ExcelProperty("离职时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate departureDate;
 
     @Schema(description = "离职原因", example = "不香")
@@ -102,6 +106,7 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "毕业时间")
     @ExcelProperty("毕业时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate graduationDate;
 
     @Schema(description = "银行卡名称", example = "张三")
@@ -126,6 +131,7 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "出生日期")
     @ExcelProperty("出生日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate birthDate;
 
     @Schema(description = "婚姻状况", example = "2")
@@ -142,6 +148,7 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "参加工作时间")
     @ExcelProperty("参加工作时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate workStartDate;
 
     @Schema(description = "薪酬")
@@ -190,6 +197,7 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
     @ExcelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27933")
@@ -202,10 +210,12 @@ public class EmployeeInfoRespVO {
 
     @Schema(description = "最新合同开始日期")
     @ExcelProperty("最新合同开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate contractStartDate;
 
     @Schema(description = "最新合同结束日期")
     @ExcelProperty("最新合同结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate contractEndDate;
 
 }

+ 5 - 4
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/controller/admin/info/vo/EmployeeInfoSaveReqVO.java

@@ -50,7 +50,7 @@ public class EmployeeInfoSaveReqVO {
     @Schema(description = "离职原因", example = "不香")
     private String resignationReason;
 
-    @Schema(description = "员工状态:0-在职,1-试用,2-离职", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @Schema(description = "员工状态:1-在职,2-试用,3-离职", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
     @NotEmpty(message = "员工状态不能为空")
     private String employeeStatus;
 
@@ -61,6 +61,7 @@ public class EmployeeInfoSaveReqVO {
     private String email;
 
     @Schema(description = "手机号")
+    @NotEmpty(message = "手机号不能为空")
     private String phone;
 
     @Schema(description = "身份证号")
@@ -145,15 +146,15 @@ public class EmployeeInfoSaveReqVO {
     private String avatar;
 
     @Schema(description = "状态:0-开启,1-关闭", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
-    @NotNull(message = "状态不能为空")
+//    @NotNull(message = "状态不能为空")
     private Integer status;
 
     @Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "27933")
-    @NotNull(message = "租户编号不能为空")
+//    @NotNull(message = "租户编号不能为空")
     private Long tenantId;
 
     @Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "12259")
-    @NotNull(message = "用户ID不能为空")
+//    @NotNull(message = "用户ID不能为空")
     private Long userId;
 
 }

+ 1 - 0
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/dal/mysql/info/EmployeeInfoMapper.java

@@ -71,6 +71,7 @@ public interface EmployeeInfoMapper extends BaseMapperX<EmployeeInfoDO> {
         return selectOne(new LambdaQueryWrapperX<EmployeeInfoDO>()
                 .eqIfPresent(EmployeeInfoDO::getUserId, reqVO.getUserId())
                 .eqIfPresent(EmployeeInfoDO::getTenantId, reqVO.getTenantId())
+                .eqIfPresent(EmployeeInfoDO::getPhone, reqVO.getPhone())
                 .orderByDesc(EmployeeInfoDO::getId));
     }
 

+ 1 - 1
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoService.java

@@ -55,7 +55,7 @@ public interface EmployeeInfoService {
      *
      * @param updateReqVO 更新信息
      */
-    void updateInfo(@Valid EmployeeInfoSaveReqVO updateReqVO);
+    Integer updateInfo(@Valid EmployeeInfoSaveReqVO updateReqVO);
 
     /**
      * 删除员工信息

+ 68 - 8
yudao-module-personnel/yudao-module-employee-biz/src/main/java/cn/iocoder/yudao/module/employee/service/info/EmployeeInfoServiceImpl.java

@@ -3,9 +3,11 @@ package cn.iocoder.yudao.module.employee.service.info;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.security.core.LoginUser;
 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
 import cn.iocoder.yudao.module.employee.controller.admin.info.vo.EmployeeInfoHistorySaveReqVO;
@@ -19,6 +21,8 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
 import cn.iocoder.yudao.module.system.service.dept.PostService;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.validation.annotation.Validated;
 
@@ -31,7 +35,8 @@ import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
-import static cn.iocoder.yudao.module.employee.enums.ErrorCodeConstants.EMPLOYEE_INFO_NOT_EXISTS;
+import static cn.iocoder.yudao.module.employee.enums.ErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.POST_NOT_FOUND;
 
 /**
  * 员工信息 Service 实现类
@@ -42,6 +47,7 @@ import static cn.iocoder.yudao.module.employee.enums.ErrorCodeConstants.EMPLOYEE
 @Validated
 public class EmployeeInfoServiceImpl implements EmployeeInfoService {
 
+    private static final Logger log = LoggerFactory.getLogger(EmployeeInfoServiceImpl.class);
     @Resource
     private EmployeeInfoMapper infoMapper;
     @Resource
@@ -133,9 +139,32 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
     }
 
     @Override
-    @TenantIgnore
     public Long createInfo(EmployeeInfoSaveReqVO createReqVO) {
         // 插入
+        if(createReqVO.getPostId() != null) {
+            PostDO post = postService.getPost(createReqVO.getPostId());
+            if (post == null) {
+                throw exception(POST_NOT_FOUND);
+            }
+            createReqVO.setPosition(post.getName());
+        }
+        // 检查电话号码是否为空
+        if (createReqVO.getPhone() == null || createReqVO.getPhone().isEmpty()) {
+            throw exception(EMPLOYEE_INFO_PHONE_NOT_NULL);
+        }
+        // 手机号+租户判重
+        EmployeeInfoQueryReqVO reqVO = new EmployeeInfoQueryReqVO();
+        reqVO.setPhone(createReqVO.getPhone());
+        reqVO.setTenantId(createReqVO.getTenantId());
+        EmployeeInfoDO employeeInfoDO = this.getInfo(reqVO);
+        if (employeeInfoDO != null) {
+            throw exception(EMPLOYEE_INFO_PHONE_EXISTS);
+        }
+        // 获取用户信息和租户ID
+        LoginUser user = SecurityFrameworkUtils.getLoginUser();
+        Long tenantId = user != null && user.getTenantId() != null ? user.getTenantId() : 0L;
+        createReqVO.setTenantId(tenantId);
+        createReqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
         // 生成id
         createReqVO.setInfoId(IdUtil.fastSimpleUUID());
         EmployeeInfoDO info = BeanUtils.toBean(createReqVO, EmployeeInfoDO.class);
@@ -145,21 +174,55 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
     }
 
     @Override
-    @TenantIgnore
-    public void updateInfo(EmployeeInfoSaveReqVO updateReqVO) {
+    public Integer updateInfo(EmployeeInfoSaveReqVO updateReqVO) {
         // 校验存在
         validateInfoExists(updateReqVO.getId());
         EmployeeInfoDO employeeInfoDO = this.getInfo(updateReqVO.getId());
         if (employeeInfoDO == null) {
             throw exception(EMPLOYEE_INFO_NOT_EXISTS);
         }
+        // 获取用户信息和租户ID
+        LoginUser user = SecurityFrameworkUtils.getLoginUser();
+        Long tenantId = user != null && user.getTenantId() != null ? user.getTenantId() : 0L;
+
+        // 假设 employeeInfoDO 和 updateReqVO 已经被正确定义和初始化
+        String newPhone = updateReqVO.getPhone();
+        String currentPhone = employeeInfoDO.getPhone();
+
+        // 检查新电话号码是否为空
+        if (newPhone == null || newPhone.isEmpty()) {
+            throw exception(EMPLOYEE_INFO_PHONE_NOT_NULL);
+        }
+
+        // 如果新电话号码不为空,且与当前电话号码不同,则进行判重检查
+        if (!newPhone.equals(currentPhone)) {
+            // 手机号+租户判重
+            EmployeeInfoQueryReqVO reqVO = new EmployeeInfoQueryReqVO();
+            reqVO.setPhone(newPhone);
+            reqVO.setTenantId(tenantId);
+            EmployeeInfoDO infoDO = this.getInfo(reqVO);
+            if (infoDO != null) {
+                // 如果找到了相同的电话号码和租户ID,则抛出异常
+                throw exception(EMPLOYEE_INFO_PHONE_EXISTS);
+            }
+        }
+
         EmployeeInfoHistorySaveReqVO historySaveReqVO = BeanUtils.toBean(employeeInfoDO, EmployeeInfoHistorySaveReqVO.class);
         historySaveReqVO.setEmployeeId(employeeInfoDO.getId());
         historySaveReqVO.setId(null);
         employeeInfoHistoryService.createInfoHistory(historySaveReqVO);// 插入历史数据
         // 更新
+        if(updateReqVO.getPostId() != null
+                && !updateReqVO.getPostId().equals(employeeInfoDO.getPostId())) {
+            PostDO post = postService.getPost(updateReqVO.getPostId());
+            if (post == null) {
+                throw exception(POST_NOT_FOUND);
+            }
+            employeeInfoDO.setPostId(updateReqVO.getPostId());
+            employeeInfoDO.setPosition(post.getName());
+        }
         EmployeeInfoDO updateObj = BeanUtils.toBean(updateReqVO, EmployeeInfoDO.class);
-        infoMapper.updateById(updateObj);
+        return infoMapper.updateById(updateObj);
     }
 
     @Override
@@ -171,7 +234,6 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
         infoMapper.deleteById(id);
     }
 
-    @TenantIgnore
     private void validateInfoExists(Long id) {
         if (infoMapper.selectById(id) == null) {
             throw exception(EMPLOYEE_INFO_NOT_EXISTS);
@@ -179,7 +241,6 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
     }
 
     @Override
-    @TenantIgnore
     public EmployeeInfoDO getInfo(Long id) {
         validateInfoExists(id);
         return infoMapper.selectById(id);
@@ -200,7 +261,6 @@ public class EmployeeInfoServiceImpl implements EmployeeInfoService {
     }
 
     @Override
-    @TenantIgnore
     public PageResult<EmployeeInfoDO> getInfoPage(EmployeeInfoPageReqVO pageReqVO) {
         return infoMapper.selectPage(pageReqVO);
     }

+ 1 - 1
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/auth/AuthController.java

@@ -139,7 +139,7 @@ public class AuthController {
         }
 
         // 1.2 获得角色列表
-        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(dto.getId());
+        Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(getLoginUserId());
         if (CollUtil.isEmpty(roleIds)) {
             return success(AuthConvert.INSTANCE.convert(dto, Collections.emptyList(), Collections.emptyList()));
         }

+ 0 - 12
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/PostServiceImpl.java

@@ -35,7 +35,6 @@ public class PostServiceImpl implements PostService {
     private PostMapper postMapper;
 
     @Override
-    @TenantIgnore
     public Long createPost(PostSaveReqVO createReqVO) {
         // 校验正确性
         validatePostForCreateOrUpdate(null, createReqVO.getName(), createReqVO.getCode());
@@ -47,7 +46,6 @@ public class PostServiceImpl implements PostService {
     }
 
     @Override
-    @TenantIgnore
     public void updatePost(PostSaveReqVO updateReqVO) {
         // 校验正确性
         validatePostForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getName(), updateReqVO.getCode());
@@ -58,7 +56,6 @@ public class PostServiceImpl implements PostService {
     }
 
     @Override
-    @TenantIgnore
     public void deletePost(Long id) {
         // 校验是否存在
         validatePostExists(id);
@@ -66,7 +63,6 @@ public class PostServiceImpl implements PostService {
         postMapper.deleteById(id);
     }
 
-    @TenantIgnore
     private void validatePostForCreateOrUpdate(Long id, String name, String code) {
         // 校验自己存在
         validatePostExists(id);
@@ -76,7 +72,6 @@ public class PostServiceImpl implements PostService {
         validatePostCodeUnique(id, code);
     }
 
-    @TenantIgnore
     private void validatePostNameUnique(Long id, String name) {
         PostDO post = postMapper.selectByName(name);
         if (post == null) {
@@ -91,7 +86,6 @@ public class PostServiceImpl implements PostService {
         }
     }
 
-    @TenantIgnore
     private void validatePostCodeUnique(Long id, String code) {
         PostDO post = postMapper.selectByCode(code);
         if (post == null) {
@@ -106,7 +100,6 @@ public class PostServiceImpl implements PostService {
         }
     }
 
-    @TenantIgnore
     private void validatePostExists(Long id) {
         if (id == null) {
             return;
@@ -117,7 +110,6 @@ public class PostServiceImpl implements PostService {
     }
 
     @Override
-    @TenantIgnore
     public List<PostDO> getPostList(Collection<Long> ids) {
         if (CollUtil.isEmpty(ids)) {
             return Collections.emptyList();
@@ -126,25 +118,21 @@ public class PostServiceImpl implements PostService {
     }
 
     @Override
-    @TenantIgnore
     public List<PostDO> getPostList(Collection<Long> ids, Collection<Integer> statuses) {
         return postMapper.selectList(ids, statuses);
     }
 
     @Override
-    @TenantIgnore
     public PageResult<PostDO> getPostPage(PostPageReqVO reqVO) {
         return postMapper.selectPage(reqVO);
     }
 
     @Override
-    @TenantIgnore
     public PostDO getPost(Long id) {
         return postMapper.selectById(id);
     }
 
     @Override
-    @TenantIgnore
     public void validatePostList(Collection<Long> ids) {
         if (CollUtil.isEmpty(ids)) {
             return;

+ 21 - 0
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java

@@ -21,6 +21,7 @@ import cn.iocoder.yudao.module.employee.api.EmployeeApi;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeCreateReqDTO;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeQueryReqDTO;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeRespDTO;
+import cn.iocoder.yudao.module.employee.api.dto.EmployeeSaveReqDTO;
 import cn.iocoder.yudao.module.system.api.logger.dto.LoginLogCreateReqDTO;
 import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuListReqVO;
@@ -238,6 +239,13 @@ public class TenantServiceImpl implements TenantService {
         } else {
             throw exception(USER_TENANT_EMPLOYEE_DUPLICATE, tenant.getName());
         }
+        EmployeeRespDTO employeeDTO = employeeApi.getEmployee(new EmployeeQueryReqDTO().setPhone(adminUserDO.getMobile()).setTenantId(tenant.getId()));
+        if (employeeDTO != null) {
+            EmployeeSaveReqDTO updateObj = BeanUtils.toBean(employeeDTO, EmployeeSaveReqDTO.class);
+            updateObj.setUserId(user.getId());
+            // 更新员工信息
+            employeeApi.updateEmployee(updateObj);
+        }
         TenantUtils.execute(tenant.getId(), () -> {
             RoleDO roleDO = roleService.selectByName(RoleCodeEnum.COMMON_EMPLOYEE.getName());
             if (roleDO == null || roleDO.getId() == null) {
@@ -273,6 +281,7 @@ public class TenantServiceImpl implements TenantService {
     }
 
     // 创建系统管理员:拥有所有OA磁贴权限和企业管理磁贴权限,只有本人数据权限,是给创建人默认授予的角色。
+    @DSTransactional
     private Long createSystemSuperAdminRole(Long tenantId) {
         // 创建角色
         RoleSaveReqVO reqVO = new RoleSaveReqVO();
@@ -289,15 +298,27 @@ public class TenantServiceImpl implements TenantService {
             throw exception(MENU_NOT_EXISTS);
         }
         MenuDO manageMenu = menuService.selectByParentIdAndName(otherMenu.getId(), "企业管理");
+        // 获取人事菜单
+        MenuDO personnelMenu = menuService.selectByParentIdAndName(0L, "人事");
+        // 获取员工管理菜单
+        if (personnelMenu == null || personnelMenu.getId() == null) {
+            throw exception(MENU_NOT_EXISTS);
+        }
+        MenuDO employeeMenu = menuService.selectByParentIdAndName(personnelMenu.getId(), "员工管理");
         // 获取OA菜单下所有子级菜单ID
         Set<Long> oaChildrenMenuIds = this.collectAllMenuIds(oaMenu.getId());
         // 获取企业管理菜单下所有子级菜单ID
         Set<Long> manageChildrenMenuIds = this.collectAllMenuIds(manageMenu.getId());
+        // 获取员工管理菜单下所有子级菜单ID
+        Set<Long> employeeChildrenMenuIds = this.collectAllMenuIds(employeeMenu.getId());
         menuIds.add(oaMenu.getId());
         menuIds.addAll(oaChildrenMenuIds);
         menuIds.add(otherMenu.getId());
         menuIds.add(manageMenu.getId());
         menuIds.addAll(manageChildrenMenuIds);
+        menuIds.add(personnelMenu.getId());
+        menuIds.add(employeeMenu.getId());
+        menuIds.addAll(employeeChildrenMenuIds);
         menuIds.stream()
                 .forEach(menuId ->
                         menuTenantRelateService.createTenantRelate(new MenuTenantRelateSaveReqVO().setMenuId(menuId).setTenantId(tenantId))