tjf vor 2 Monaten
Ursprung
Commit
7d6a06f773
25 geänderte Dateien mit 322 neuen und 349 gelöschten Zeilen
  1. 1 0
      ruoyi-admin/src/main/resources/application.yml
  2. 1 0
      ruoyi-admin/src/main/resources/i18n/messages.properties
  3. 5 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/Constants.java
  4. 7 2
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/UserType.java
  5. 1 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
  6. 0 1
      ruoyi-modules/pom.xml
  7. 13 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  8. 0 4
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java
  9. 4 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserRole.java
  10. 6 12
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserTenant.java
  11. 0 29
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserTenantBo.java
  12. 0 35
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserTenantVo.java
  13. 0 6
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
  14. 4 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
  15. 1 2
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserTenantMapper.java
  16. 7 0
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java
  17. 0 69
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserTenantService.java
  18. 33 5
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  19. 0 124
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserTenantServiceImpl.java
  20. 13 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
  21. 22 0
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java
  22. 4 0
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/mapper/StaffManageMapper.java
  23. 12 0
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java
  24. 172 55
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java
  25. 16 0
      ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/StaffManageMapper.xml

+ 1 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -129,6 +129,7 @@ tenant:
     - sys_client
     - sys_oss_config
     - sys_user_tenant
+    - update_app
 
 # MyBatisPlus配置
 # https://baomidou.com/config/

+ 1 - 0
ruoyi-admin/src/main/resources/i18n/messages.properties

@@ -62,3 +62,4 @@ tenant.expired=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u7684\u79DF\u6237\u5DF2\u8FC7\u671
 ##\u77ED\u4FE1\u9A8C\u8BC1\u7801
 user.sms.error=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u9519\u8BEF
 user.sms.expire=\u77ED\u4FE1\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
+staff.manage.error=\u5458\u5DE5\u4FE1\u606F\u4EE5\u5B58\u5728

+ 5 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/Constants.java

@@ -156,5 +156,10 @@ public interface Constants {
     String COMMENT_INTERACTION_USER_COUNT = "comment_interaction_user_count:";
     //记录社区资讯某个用户对应资讯下有多少个未读的互动key=comment_interaction_community_user_count:{userId} hkey = {community_id} value = 资讯下有多少个未读的互动(点赞,收藏,回复)
     String COMMENT_INTERACTION_COMMUNITY_USER_COUNT = "comment_interaction_community_user_count:";
+
+
+    //-------------------员工需要认证的数量-----------------
+    //key=staff_manage_authentication:{userId}
+    String STAFF_MANAGE_AUTHENTICATION = "staff_manage_authentication:";
 }
 

+ 7 - 2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/enums/UserType.java

@@ -25,9 +25,14 @@ public enum UserType {
     PC_USER("pc_user"),
 
     /**
-     * app
+     * 用户
      */
-    APP_USER("app_user");
+    APP_USER("app_user"),
+
+    /**
+     * 物管端
+     */
+    APP_STAFF("app_staff");
 
     private final String userType;
 

+ 1 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java

@@ -33,7 +33,7 @@ public class BaseEntity implements Serializable {
     /**
      * 创建部门
      */
-    //@TableField(fill = FieldFill.INSERT)
+    @TableField(fill = FieldFill.INSERT)
     private Long createDept;
 
     /**

+ 0 - 1
ruoyi-modules/pom.xml

@@ -11,7 +11,6 @@
 
     <modules>
 <!--        <module>ruoyi-demo</module>-->
-        <module>ruoyi-wuye</module>
         <module>ruoyi-generator</module>
         <module>ruoyi-job</module>
         <module>ruoyi-system</module>

+ 13 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@@ -11,6 +11,7 @@ import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.SystemConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.core.enums.UserType;
 import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.encrypt.annotation.ApiEncrypt;
@@ -20,6 +21,7 @@ import org.dromara.common.log.annotation.Log;
 import org.dromara.common.log.enums.BusinessType;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.web.core.BaseController;
@@ -38,8 +40,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.dromara.common.core.constant.Constants.N;
-import static org.dromara.common.core.constant.Constants.Y;
+import static org.dromara.common.core.constant.Constants.*;
 
 /**
  * 用户信息
@@ -124,8 +125,16 @@ public class SysUserController extends BaseController {
         //判断是否需要进行用户认证
         boolean enable = TenantHelper.isEnable();
         if (enable) {
-            if (user.getIsAuthentication().equals(N)) {
-                userInfoVo.setAuthenticationUser(Y);
+            //获取是否有未认证的员工信息
+            UserType userType = LoginHelper.getUserType();
+            if (UserType.APP_USER.equals(userType)) {
+                //住户信息认证
+            }else if (UserType.APP_STAFF.equals(userType)) {
+                //查询员工staff_manage 表中是否有未认证的 从redis中查询
+                String key = STAFF_MANAGE_AUTHENTICATION + user.getUserId();
+                if (RedisUtils.getCacheObject(key) != null) {
+                    userInfoVo.setAuthenticationUser(Y);
+                }
             }
         }
         return R.ok(userInfoVo);

+ 0 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java

@@ -102,10 +102,6 @@ public class SysUser extends TenantEntity {
      * 备注
      */
     private String remark;
-    /**
-     * 是否认证过 N:未认证 Y:认证 当非系统用户租户id不为000000时是认证过
-     */
-    private String isAuthentication;
 
 
     public SysUser(Long userId) {

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserRole.java

@@ -25,5 +25,9 @@ public class SysUserRole {
      * 角色ID
      */
     private Long roleId;
+    /**
+     * 租户编号
+     */
+    private String tenantId;
 
 }

+ 6 - 12
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserTenant.java

@@ -1,11 +1,9 @@
 package org.dromara.system.domain;
 
-import org.dromara.common.tenant.core.TenantEntity;
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serial;
 
 /**
  * 用户账号-租户对象 sys_user_tenant
@@ -14,18 +12,14 @@ import java.io.Serial;
  * @date 2025-04-09
  */
 @Data
-@EqualsAndHashCode(callSuper = true)
 @TableName("sys_user_tenant")
-public class SysUserTenant extends TenantEntity {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
+public class SysUserTenant{
     /**
      * 用户id
      */
-    @TableId(value = "user_id")
+    @TableId(type = IdType.INPUT)
     private Long userId;
+    private String tenantId;
 
 
 }

+ 0 - 29
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserTenantBo.java

@@ -1,29 +0,0 @@
-package org.dromara.system.domain.bo;
-
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.system.domain.SysUserTenant;
-
-/**
- * 用户账号-租户业务对象 sys_user_tenant
- *
- * @author boman
- * @date 2025-04-09
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = SysUserTenant.class, reverseConvertGenerate = false)
-public class SysUserTenantBo extends BaseEntity {
-
-    /**
-     * 用户id
-     */
-    @NotNull(message = "用户id不能为空", groups = { EditGroup.class })
-    private Long userId;
-
-
-}

+ 0 - 35
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserTenantVo.java

@@ -1,35 +0,0 @@
-package org.dromara.system.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-import org.dromara.system.domain.SysUserTenant;
-
-import java.io.Serial;
-import java.io.Serializable;
-
-
-
-/**
- * 用户账号-租户视图对象 sys_user_tenant
- *
- * @author boman
- * @date 2025-04-09
- */
-@Data
-@ExcelIgnoreUnannotated
-@AutoMapper(target = SysUserTenant.class)
-public class SysUserTenantVo implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 用户id
-     */
-    @ExcelProperty(value = "用户id")
-    private Long userId;
-
-
-}

+ 0 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java

@@ -136,10 +136,4 @@ public class SysUserVo implements Serializable {
      * 数据权限 当前角色ID
      */
     private Long roleId;
-
-    /**
-     * 是否认证过 N:未认证 Y:认证 当非系统用户租户id不为000000时是认证过
-     */
-    private String isAuthentication;
-
 }

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java

@@ -1,5 +1,6 @@
 package org.dromara.system.mapper;
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -120,4 +121,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
     })
     int updateById(@Param(Constants.ENTITY) SysUser user);
 
+    @InterceptorIgnore(tenantLine = "true", dataPermission = "false")
+    int updateUserByIdNoTenantId(SysUser user);
+
 }

+ 1 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserTenantMapper.java

@@ -1,7 +1,6 @@
 package org.dromara.system.mapper;
 
 import org.dromara.system.domain.SysUserTenant;
-import org.dromara.system.domain.vo.SysUserTenantVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
 /**
@@ -10,6 +9,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
  * @author boman
  * @date 2025-04-09
  */
-public interface SysUserTenantMapper extends BaseMapperPlus<SysUserTenant, SysUserTenantVo> {
+public interface SysUserTenantMapper extends BaseMapperPlus<SysUserTenant, SysUserTenant> {
 
 }

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java

@@ -176,6 +176,13 @@ public interface ISysUserService {
      */
     int updateUserById(SysUserBo user);
 
+    /**
+     * 根据id更新用户信息没有租户
+     * @param user 用户
+     * @return
+     */
+    int updateUserByIdNoTenantId(SysUserBo user);
+
     /**
      * 用户授权角色
      *

+ 0 - 69
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserTenantService.java

@@ -1,69 +0,0 @@
-package org.dromara.system.service;
-
-import org.dromara.system.domain.SysUserTenant;
-import org.dromara.system.domain.vo.SysUserTenantVo;
-import org.dromara.system.domain.bo.SysUserTenantBo;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.mybatis.core.page.PageQuery;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 用户账号-租户Service接口
- *
- * @author boman
- * @date 2025-04-09
- */
-public interface ISysUserTenantService {
-
-    /**
-     * 查询用户账号-租户
-     *
-     * @param userId 主键
-     * @return 用户账号-租户
-     */
-    SysUserTenantVo queryById(Long userId);
-
-    /**
-     * 分页查询用户账号-租户列表
-     *
-     * @param bo        查询条件
-     * @param pageQuery 分页参数
-     * @return 用户账号-租户分页列表
-     */
-    TableDataInfo<SysUserTenantVo> queryPageList(SysUserTenantBo bo, PageQuery pageQuery);
-
-    /**
-     * 查询符合条件的用户账号-租户列表
-     *
-     * @param bo 查询条件
-     * @return 用户账号-租户列表
-     */
-    List<SysUserTenantVo> queryList(SysUserTenantBo bo);
-
-    /**
-     * 新增用户账号-租户
-     *
-     * @param bo 用户账号-租户
-     * @return 是否新增成功
-     */
-    Boolean insertByBo(SysUserTenant bo);
-
-    /**
-     * 修改用户账号-租户
-     *
-     * @param bo 用户账号-租户
-     * @return 是否修改成功
-     */
-    Boolean updateByBo(SysUserTenantBo bo);
-
-    /**
-     * 校验并批量删除用户账号-租户信息
-     *
-     * @param ids     待删除的主键集合
-     * @param isValid 是否进行有效性校验
-     * @return 是否删除成功
-     */
-    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-}

+ 33 - 5
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@@ -383,6 +383,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
 
     /**
      * 根据id更新用户信息
+     *
      * @param user 用户
      * @return
      */
@@ -396,6 +397,22 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
         return flag;
     }
 
+    /**
+     * 根据id更新用户信息没有租户
+     *
+     * @param user 用户
+     * @return
+     */
+    @Override
+    public int updateUserByIdNoTenantId(SysUserBo user) {
+        SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
+        int flag = baseMapper.updateUserByIdNoTenantId(sysUser);
+        if (flag < 1) {
+            throw new ServiceException("修改用户" + user.getUserName() + "信息失败");
+        }
+        return flag;
+    }
+
     /**
      * 用户授权角色
      *
@@ -405,7 +422,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void insertUserAuth(Long userId, Long[] roleIds) {
-        insertUserRole(userId, roleIds, true);
+        String tenantId = "";
+        if (TenantHelper.isEnable()) {
+            tenantId = LoginHelper.getTenantId();
+        }
+        insertUserRole(userId, roleIds, tenantId, true);
     }
 
     /**
@@ -509,7 +530,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
      * @param clear 清除已存在的关联数据
      */
     public void insertUserRole(SysUserBo user, boolean clear) {
-        this.insertUserRole(user.getUserId(), user.getRoleIds(), clear);
+        this.insertUserRole(user.getUserId(), user.getRoleIds(), user.getTenantId(), clear);
     }
 
     /**
@@ -543,7 +564,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
      * @param roleIds 角色组
      * @param clear   清除已存在的关联数据
      */
-    private void insertUserRole(Long userId, Long[] roleIds, boolean clear) {
+    private void insertUserRole(Long userId, Long[] roleIds, String tenantId, boolean clear) {
         if (ArrayUtil.isNotEmpty(roleIds)) {
             List<Long> roleList = new ArrayList<>(List.of(roleIds));
             if (!LoginHelper.isSuperAdmin(userId)) {
@@ -556,14 +577,21 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
                 throw new ServiceException("没有权限访问角色的数据");
             }
             if (clear) {
-                // 删除用户与角色关联
-                userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
+                if (TenantHelper.isEnable()) {
+                    // 删除用户与角色关联
+                    userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId).eq(SysUserRole::getTenantId, tenantId));
+                } else {
+                    userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
+                }
             }
             // 新增用户与角色管理
             List<SysUserRole> list = StreamUtils.toList(roleList, roleId -> {
                 SysUserRole ur = new SysUserRole();
                 ur.setUserId(userId);
                 ur.setRoleId(roleId);
+                if (TenantHelper.isEnable()) {
+                    ur.setTenantId(tenantId);
+                }
                 return ur;
             });
             userRoleMapper.insertBatch(list);

+ 0 - 124
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserTenantServiceImpl.java

@@ -1,124 +0,0 @@
-package org.dromara.system.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.system.domain.SysUserTenant;
-import org.dromara.system.domain.bo.SysUserTenantBo;
-import org.dromara.system.domain.vo.SysUserTenantVo;
-import org.dromara.system.mapper.SysUserTenantMapper;
-import org.dromara.system.service.ISysUserTenantService;
-import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 用户账号-租户Service业务层处理
- *
- * @author boman
- * @date 2025-04-09
- */
-@RequiredArgsConstructor
-@Service
-public class SysUserTenantServiceImpl implements ISysUserTenantService {
-
-    private final SysUserTenantMapper baseMapper;
-
-    /**
-     * 查询用户账号-租户
-     *
-     * @param userId 主键
-     * @return 用户账号-租户
-     */
-    @Override
-    public SysUserTenantVo queryById(Long userId){
-        return baseMapper.selectVoById(userId);
-    }
-
-    /**
-     * 分页查询用户账号-租户列表
-     *
-     * @param bo        查询条件
-     * @param pageQuery 分页参数
-     * @return 用户账号-租户分页列表
-     */
-    @Override
-    public TableDataInfo<SysUserTenantVo> queryPageList(SysUserTenantBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<SysUserTenant> lqw = buildQueryWrapper(bo);
-        Page<SysUserTenantVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        return TableDataInfo.build(result);
-    }
-
-    /**
-     * 查询符合条件的用户账号-租户列表
-     *
-     * @param bo 查询条件
-     * @return 用户账号-租户列表
-     */
-    @Override
-    public List<SysUserTenantVo> queryList(SysUserTenantBo bo) {
-        LambdaQueryWrapper<SysUserTenant> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
-    }
-
-    private LambdaQueryWrapper<SysUserTenant> buildQueryWrapper(SysUserTenantBo bo) {
-        Map<String, Object> params = bo.getParams();
-        LambdaQueryWrapper<SysUserTenant> lqw = Wrappers.lambdaQuery();
-        lqw.orderByAsc(SysUserTenant::getUserId);
-        lqw.orderByAsc(SysUserTenant::getTenantId);
-        return lqw;
-    }
-
-    /**
-     * 新增用户账号-租户
-     *
-     * @param add 用户账号-租户
-     * @return 是否新增成功
-     */
-    @Override
-    public Boolean insertByBo(SysUserTenant add) {
-        boolean flag = baseMapper.insert(add) > 0;
-        return flag;
-    }
-
-    /**
-     * 修改用户账号-租户
-     *
-     * @param bo 用户账号-租户
-     * @return 是否修改成功
-     */
-    @Override
-    public Boolean updateByBo(SysUserTenantBo bo) {
-        SysUserTenant update = MapstructUtils.convert(bo, SysUserTenant.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
-    }
-
-    /**
-     * 保存前的数据校验
-     */
-    private void validEntityBeforeSave(SysUserTenant entity){
-        //TODO 做一些数据校验,如唯一约束
-    }
-
-    /**
-     * 校验并批量删除用户账号-租户信息
-     *
-     * @param ids     待删除的主键集合
-     * @param isValid 是否进行有效性校验
-     * @return 是否删除成功
-     */
-    @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if(isValid){
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
-        return baseMapper.deleteByIds(ids) > 0;
-    }
-}

+ 13 - 0
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -10,6 +10,19 @@
     <resultMap type="org.dromara.system.domain.vo.SysUserExportVo" id="SysUserExportResult">
         <id property="userId" column="user_id"/>
     </resultMap>
+    <update id="updateUserByIdNoTenantId" parameterType="org.dromara.system.domain.SysUser">
+        update sys_user
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="isAuthentication != null and isAuthentication != ''">is_authentication = #{isAuthentication},</if>
+            <if test="tenantId != null and tenantId != ''">tenant_id = #{tenantId},</if>
+            <if test="phonenumber != null and phonenumber != ''">phonenumber = #{phonenumber},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        WHERE
+            user_id = #{userId}
+          AND del_flag = '0'
+    </update>
 
     <select id="selectPageUserList" resultMap="SysUserResult">
         select

+ 22 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java

@@ -47,6 +47,15 @@ public class StaffManageController extends BaseController {
         return staffManageService.queryPageList(bo, pageQuery);
     }
 
+    /**
+     * 查询员工管理需要认证的列表
+     */
+    @SaCheckPermission("wuYe:staffManage:listAuthentication")
+    @GetMapping("/listAuthentication")
+    public TableDataInfo<StaffManageVo> listAuthentication(StaffManageBo bo, PageQuery pageQuery) {
+        return staffManageService.listAuthentication(bo, pageQuery);
+    }
+
     /**
      * 导出员工管理列表
      */
@@ -142,6 +151,19 @@ public class StaffManageController extends BaseController {
         return toAjax(staffManageService.deleteWithValidByIds(List.of(staffIds), true));
     }
 
+
+    /**
+     * 删除员工管理
+     *
+     * @param bo 主键串
+     */
+    @SaCheckPermission("wuYe:staffManage:deleteStaffManage")
+    @Log(title = "员工管理", businessType = BusinessType.DELETE)
+    @PostMapping("/deleteStaffManage")
+    public R<Void> deleteStaffManage(@RequestBody StaffManageBo bo) {
+        return toAjax(staffManageService.deleteStaffManage(bo));
+    }
+
     /**
      * 员工认证审核
      *

+ 4 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/mapper/StaffManageMapper.java

@@ -1,6 +1,7 @@
 package org.dromara.mapper;
 
 
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 import org.dromara.domain.staffManage.StaffManage;
 import org.dromara.domain.staffManage.vo.StaffManageVo;
@@ -13,4 +14,7 @@ import org.dromara.domain.staffManage.vo.StaffManageVo;
  */
 public interface StaffManageMapper extends BaseMapperPlus<StaffManage, StaffManageVo> {
 
+    @InterceptorIgnore(tenantLine = "true", dataPermission = "false")
+    StaffManageVo getInfoByUserId(Long userId);
+
 }

+ 12 - 0
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java

@@ -41,6 +41,11 @@ public interface IStaffManageService {
      */
     TableDataInfo<StaffManageVo> queryPageList(StaffManageBo bo, PageQuery pageQuery);
 
+    /**
+     * 查询员工管理需要认证的列表
+     */
+    TableDataInfo<StaffManageVo> listAuthentication(StaffManageBo bo, PageQuery pageQuery);
+
     /**
      * 查询符合条件的员工管理列表
      *
@@ -89,4 +94,11 @@ public interface IStaffManageService {
      * @return
      */
     Boolean examineStaff(StaffManageBo bo);
+
+    /**
+     * 删除员工信息和用户信息和权限
+     * @param bo
+     * @return
+     */
+    Boolean deleteStaffManage(StaffManageBo bo);
 }

+ 172 - 55
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

@@ -1,6 +1,7 @@
 package org.dromara.service.impl;
 
 import cn.dev33.satoken.secure.BCrypt;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +14,7 @@ import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.domain.staffManage.StaffManage;
 import org.dromara.domain.staffManage.bo.StaffManageBo;
@@ -21,16 +23,19 @@ import org.dromara.mapper.StaffManageMapper;
 import org.dromara.service.IStaffManageService;
 import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysUser;
+import org.dromara.system.domain.SysUserRole;
 import org.dromara.system.domain.SysUserTenant;
 import org.dromara.system.domain.bo.SysUserBo;
 import org.dromara.system.domain.vo.SysRoleVo;
 import org.dromara.system.mapper.SysRoleMapper;
 import org.dromara.system.mapper.SysUserMapper;
+import org.dromara.system.mapper.SysUserRoleMapper;
 import org.dromara.system.mapper.SysUserTenantMapper;
 import org.dromara.system.service.ISysUserService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +57,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
     private final SysRoleMapper sysRoleMapper;
     private final ISysUserService userService;
     private final SysUserMapper userMapper;
+    private final SysUserRoleMapper userRoleMapper;
 
     /**
      * 查询员工管理
@@ -72,7 +78,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
      */
     @Override
     public StaffManageVo getInfoByUserId(Long userId) {
-        return baseMapper.selectVoOne(new LambdaQueryWrapper<StaffManage>().eq(StaffManage::getUserId, userId));
+        return baseMapper.getInfoByUserId(userId);
     }
 
     /**
@@ -89,6 +95,19 @@ public class StaffManageServiceImpl implements IStaffManageService {
         return TableDataInfo.build(result);
     }
 
+    /**
+     * 查询员工管理需要认证的列表
+     */
+    @Override
+    public TableDataInfo<StaffManageVo> listAuthentication(StaffManageBo bo, PageQuery pageQuery) {
+        LambdaQueryWrapper<StaffManage> lqw = buildQueryWrapper(bo);
+        Page<StaffManageVo> result = TenantHelper.ignore(() -> {
+            return
+                baseMapper.selectVoPage(pageQuery.build(), lqw);
+        });
+        return TableDataInfo.build(result);
+    }
+
     /**
      * 查询符合条件的员工管理列表
      *
@@ -117,6 +136,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
         lqw.eq(StringUtils.isNotBlank(bo.getIdCardBack()), StaffManage::getIdCardBack, bo.getIdCardBack());
         lqw.eq(StringUtils.isNotBlank(bo.getCertificate()), StaffManage::getCertificate, bo.getCertificate());
         lqw.eq(StringUtils.isNotBlank(bo.getStatus()), StaffManage::getStatus, bo.getStatus());
+        lqw.eq(StringUtils.isNotBlank(bo.getExamine()), StaffManage::getExamine, bo.getExamine());
         return lqw;
     }
 
@@ -129,10 +149,26 @@ public class StaffManageServiceImpl implements IStaffManageService {
     @Override
     public Boolean insertByBo(StaffManageBo bo) {
         StaffManage add = MapstructUtils.convert(bo, StaffManage.class);
-        validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
+        boolean flag = checkPhoneNumberUnique(add);
+        if (!flag) {
+            throw new UserException("staff.manage.error");
+        }
         if (flag) {
-            bo.setStaffId(add.getStaffId());
+            validEntityBeforeSave(add);
+            flag = baseMapper.insert(add) > 0;
+            if (flag) {
+                bo.setStaffId(add.getStaffId());
+            }
+        }
+        //往redis中插入需要认证的记录数据,给getUserInfo接口判断是否需要认证使用
+        String key = STAFF_MANAGE_AUTHENTICATION + bo.getUserId();
+        Object cacheObject = RedisUtils.getCacheObject(key);
+        int count = 0;
+        if (cacheObject != null) {
+            count = Integer.parseInt(cacheObject.toString()) + 1;
+            RedisUtils.setCacheObject(key, count);
+        } else {
+            RedisUtils.setCacheObject(key, 1);
         }
         return flag;
     }
@@ -144,56 +180,69 @@ public class StaffManageServiceImpl implements IStaffManageService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean insertAuthenticationByBo(StaffManageBo bo) {
         StaffManage staffManage = MapstructUtils.convert(bo, StaffManage.class);
-        SysUserBo sysUser = new SysUserBo();
-        String tenantId = "";
-        //手机号、手机验证码注册
-        if (TenantHelper.isEnable()) {
-            tenantId = staffManage.getTenantId();
-        }
-        String username = staffManage.getPhoneNumber();
-        String password = BoManConfig.getPasswordDeft();
-        // 校验用户类型是否存在
-        String userType = UserType.getUserType(staffManage.getUserType()).getUserType();
+        //判断是否重复
+        boolean flag = checkPhoneNumberUnique(staffManage);
+        if (!flag) {
+            throw new UserException("staff.manage.error");
+        } else if (flag) {
+            SysUserBo user = new SysUserBo();
+            String tenantId = "";
+            //手机号、手机验证码注册
+            if (TenantHelper.isEnable()) {
+                tenantId = staffManage.getTenantId();
+            }
+            String username = staffManage.getPhoneNumber();
+            String password = BoManConfig.getPasswordDeft();
+            // 校验用户类型是否存在
+            String userType = UserType.getUserType(staffManage.getUserType()).getUserType();
 
-        sysUser.setUserName(username);
-        sysUser.setNickName(username);
-        sysUser.setPassword(BCrypt.hashpw(password));
-        sysUser.setUserType(userType);
-        sysUser.setPhonenumber(username);
-        sysUser.setIsAuthentication(Y);
-        boolean exist = TenantHelper.dynamic(tenantId, () -> {
-            return userMapper.exists(new LambdaQueryWrapper<SysUser>()
-                .eq(SysUser::getUserName, sysUser.getUserName()));
-        });
-        if (exist) {
-            throw new UserException("user.register.save.error", username);
-        }
-        boolean regFlag = userService.registerUser(sysUser, tenantId);
-        if (!regFlag) {
-            throw new UserException("user.register.error");
-        }
-        staffManage.setExamine(TWO);
-        staffManage.setUserId(sysUser.getUserId());
-        boolean flag = baseMapper.insert(staffManage) > 0;
-        if (flag) {
-            bo.setStaffId(staffManage.getStaffId());
-        }
-        //sys_user_tenant表中
-        SysUserTenant sysUserTenant = new SysUserTenant();
-        sysUserTenant.setUserId(staffManage.getUserId());
-        sysUserTenant.setTenantId(staffManage.getTenantId());
-        sysUserTenantMapper.insert(sysUserTenant);
+            user.setUserName(username);
+            user.setNickName(username);
+            user.setPassword(BCrypt.hashpw(password));
+            user.setUserType(userType);
+            user.setPhonenumber(username);
+            user.setIsAuthentication(Y);
+            boolean exist = TenantHelper.dynamic(tenantId, () -> {
+                return userMapper.exists(new LambdaQueryWrapper<SysUser>()
+                    .eq(SysUser::getUserName, user.getUserName()));
+            });
+            if (exist) {
+                throw new UserException("user.register.save.error", username);
+            }
+            user.setCreateBy(0L);
+            user.setUpdateBy(0L);
+            SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
+            sysUser.setTenantId(tenantId);
+            boolean regFlag = userMapper.insert(sysUser) > 0;
+            if (!regFlag) {
+                throw new UserException("user.register.error");
+            }
+            staffManage.setExamine(TWO);
+            Long userId = sysUser.getUserId();
+            staffManage.setUserId(userId);
+            flag = baseMapper.insert(staffManage) > 0;
+            if (flag) {
+                bo.setStaffId(staffManage.getStaffId());
+            }
+            //sys_user_tenant表中
+            SysUserTenant sysUserTenant = new SysUserTenant();
+            sysUserTenant.setUserId(userId);
+            sysUserTenant.setTenantId(staffManage.getTenantId());
+            sysUserTenantMapper.insert(sysUserTenant);
 
-        //给该userId赋予角色
-        // 新增用户与角色管理
-        //根据权限字符去查询角色id
-        Long[] roles;
-        SysRoleVo sysRoleVo = sysRoleMapper.selectVoOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleKey, staffManage.getStaffCategory()));
-        if (sysRoleVo != null) {
-            roles = new Long[]{sysRoleVo.getRoleId()};
-            sysUser.setRoleIds(roles);
+            //给该userId赋予角色
+            // 新增用户与角色管理
+            //根据权限字符去查询角色id
+            SysRoleVo sysRoleVo = sysRoleMapper.selectVoOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleKey, staffManage.getStaffCategory()));
+            if (sysRoleVo != null) {
+                List<Long> list = new ArrayList<>();
+                Long roleId = sysRoleVo.getRoleId();
+                list.add(roleId);
+                user.setUserId(userId);
+                user.setRoleIds(list.toArray(new Long[list.size()]));
+            }
+            userService.insertUserRole(user, false);
         }
-        userService.insertUserRole(sysUser, false);
         return flag;
     }
 
@@ -222,6 +271,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
         String tenantIdOld = staffManageVo.getTenantId();
         Long userId = examineStaffManage.getUserId();
         SysUserBo sysUser = new SysUserBo();
+        sysUser.setUserId(bo.getUserId());
         if (TenantHelper.isEnable()) {
             //把租户id更新到sys_user表/sys_user_tenant表中
             String tenantIdNew = examineStaffManage.getTenantId();
@@ -238,7 +288,6 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 //组装sysUser
                 //给该userId赋予角色
                 // 新增用户与角色管理
-                sysUser.setUserId(bo.getUserId());
                 //根据权限字符去查询角色id
                 Long[] roles;
                 SysRoleVo sysRoleVo = sysRoleMapper.selectVoOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleKey, examineStaffManage.getStaffCategory()));
@@ -249,9 +298,9 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 userService.insertUserRole(sysUser, true);
             }
         }
-        sysUser.setUserId(examineStaffManage.getUserId());
         sysUser.setPhonenumber(examineStaffManage.getPhoneNumber());
-        return userService.updateUserById(sysUser) > 0;
+        userService.updateUserByIdNoTenantId(sysUser);
+        return baseMapper.updateById(examineStaffManage) > 0;
     }
 
     /**
@@ -295,7 +344,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 //把租户id更新到sys_user表/sys_user_tenant表中
                 sysUser.setTenantId(examineStaffManage.getTenantId());
                 sysUser.setIsAuthentication(Y);
-                userService.updateUserById(sysUser);
+                userService.updateUserByIdNoTenantId(sysUser);
                 SysUserTenant sysUserTenant = new SysUserTenant();
                 sysUserTenant.setUserId(examineStaffManage.getUserId());
                 sysUserTenant.setTenantId(examineStaffManage.getTenantId());
@@ -312,9 +361,77 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 sysUser.setRoleIds(roles);
             }
             userService.insertUserRole(sysUser, false);
+
+            //往redis中插入需要认证的记录数据,给getUserInfo接口判断是否需要认证使用
+            String key = STAFF_MANAGE_AUTHENTICATION + bo.getUserId();
+            Object cacheObject = RedisUtils.getCacheObject(key);
+            int count = 0;
+            if (cacheObject != null) {
+                count = Integer.parseInt(cacheObject.toString()) - 1;
+                if (count > 0) {
+                    RedisUtils.setCacheObject(key,count);
+                }else {
+                    RedisUtils.deleteObject(key);
+                }
+            }
         } else {
             return baseMapper.updateById(examineStaffManage) > 0;
         }
         return true;
     }
+
+    /**
+     * 删除员工信息和用户信息和权限
+     *
+     * @param bo
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteStaffManage(StaffManageBo bo) {
+        Long userId = bo.getUserId();
+        Long staffId = bo.getStaffId();
+        String tenantId = bo.getTenantId();
+        boolean flag = baseMapper.deleteById(staffId) > 0;
+        // userMapper.deleteById(userId);
+        if (TenantHelper.isEnable()) {
+            // 删除用户与角色关联
+            userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId).eq(SysUserRole::getTenantId, tenantId));
+            sysUserTenantMapper.delete(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId).eq(SysUserTenant::getTenantId, tenantId));
+        } else {
+            userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
+        }
+        //往redis中插入需要认证的记录数据,给getUserInfo接口判断是否需要认证使用
+        String key = STAFF_MANAGE_AUTHENTICATION + userId;
+        Object cacheObject = RedisUtils.getCacheObject(key);
+        int count = 0;
+        if (cacheObject != null) {
+            count = Integer.parseInt(cacheObject.toString()) - 1;
+            if (count > 0) {
+                RedisUtils.setCacheObject(key,count);
+            }else {
+                RedisUtils.deleteObject(key);
+            }
+        }
+        return flag;
+    }
+
+
+    /**
+     * 校验手机号码是否唯一
+     *
+     * @param add 员工信息
+     * @return 结果
+     */
+
+    public boolean checkPhoneNumberUnique(StaffManage add) {
+        boolean exit = TenantHelper.ignore(() -> {
+            return
+                baseMapper.exists(new LambdaQueryWrapper<StaffManage>()
+                    .eq(StaffManage::getPhoneNumber, add.getPhoneNumber())
+                    .eq(StaffManage::getTenantId, add.getTenantId())
+                    .ne(ObjectUtil.isNotNull(add.getStaffId()), StaffManage::getStaffId, add.getStaffId()));
+        });
+        return !exit;
+    }
 }

+ 16 - 0
ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/StaffManageMapper.xml

@@ -4,4 +4,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.mapper.StaffManageMapper">
 
+    <resultMap type="org.dromara.domain.staffManage.vo.StaffManageVo" id="StaffManageResult">
+        <id property="staffId" column="staff_id"/>
+    </resultMap>
+
+    <sql id="selectStaffManageVo">
+        select  s.staff_id,s.tenant_id,s.user_id,s.staff_name,s.gender,s.staff_category,s.maintenance_category
+        ,s.phone_number,s.avatar_photo,s.id_card,s.id_card_front,s.id_card_back,s.certificate,s.status,s.examine
+        ,s.create_time
+        from staff_manage s
+    </sql>
+
+    <select id="getInfoByUserId" resultMap="StaffManageResult">
+        <include refid="selectStaffManageVo"></include>
+        where s.user_id = #{userId}
+    </select>
+
 </mapper>