Selaa lähdekoodia

fix 注册认证

tjf 2 kuukautta sitten
vanhempi
commit
74c68a9dcb
22 muutettua tiedostoa jossa 210 lisäystä ja 101 poistoa
  1. 9 0
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  2. 2 2
      ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
  3. 1 0
      ruoyi-admin/src/main/resources/i18n/messages.properties
  4. 1 0
      ruoyi-admin/src/main/resources/i18n/messages_en_US.properties
  5. 1 0
      ruoyi-admin/src/main/resources/i18n/messages_zh_CN.properties
  6. 4 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java
  7. 1 1
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
  8. 1 17
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
  9. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java
  10. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java
  11. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java
  12. 1 0
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
  13. 3 3
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/controller/staffManage/StaffManageController.java
  14. 3 1
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/mapper/StaffManageMapper.java
  15. 1 1
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/IStaffManageService.java
  16. 6 12
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/CheckPointRecordServiceImpl.java
  17. 78 15
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/ResidentInfoServiceImpl.java
  18. 82 30
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java
  19. 3 8
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainManualServiceImpl.java
  20. 2 7
      ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainTimeServiceImpl.java
  21. 4 0
      ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/HouseInfoMapper.xml
  22. 4 1
      ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/StaffManageMapper.xml

+ 9 - 0
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -88,6 +88,7 @@ public class AuthController {
         // 授权类型和客户端id
         String clientId = loginBody.getClientId();
         String grantType = loginBody.getGrantType();
+        String clientKey = loginBody.getClientKey();
         SysClientVo client = clientService.queryByClientId(clientId);
         // 查询不到 client 或 client 内不包含 grantType
         if (ObjectUtil.isNull(client) || !StringUtils.contains(client.getGrantType(), grantType)) {
@@ -96,6 +97,7 @@ public class AuthController {
         } else if (!SystemConstants.NORMAL.equals(client.getStatus())) {
             return R.fail(MessageUtils.message("auth.grant.type.blocked"));
         }
+
         //查询用户的租户id
         PasswordLoginBody loginBodyUser = JsonUtils.parseObject(body, PasswordLoginBody.class);
         String username = loginBodyUser.getUsername();
@@ -103,6 +105,13 @@ public class AuthController {
         if (ObjectUtil.isNull(sysUserVo)) {
               throw new UserException("user.not.exists", username);
         }
+        //校验用户类型
+        String userType = sysUserVo.getUserType();
+        if (!userType.contains("sys_user")  ){
+            if (!userType.contains(clientKey)){
+                throw new UserException("user.not.login");
+            }
+        }
         String tenantId = sysUserVo.getTenantId();
         //登录默认给一个租户id 000000
         loginBody.setTenantId("000000");

+ 2 - 2
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java

@@ -188,8 +188,8 @@ public class SysLoginService {
         loginUser.setPosts(BeanUtil.copyToList(posts, PostDTO.class));
 
         //查询用户的员工信息和居住人员信息
-        List<StaffManageVo> staffManageList = staffManageService.getInfoByUserId(userId);
-        loginUser.setStaffManageList(BeanUtil.copyToList(staffManageList, StaffManageDTO.class));
+        StaffManageVo staffManage = staffManageService.getInfoByUserId(userId,tenantId);
+        loginUser.setStaffManage(BeanUtil.toBean(staffManage, StaffManageDTO.class));
         List<ResidentInfoVo> infoByUserId = residentInfoService.getInfoByUserId(userId);
         loginUser.setResidentInfoDTOList(BeanUtil.copyToList(infoByUserId, ResidentInfoDTO.class));
         return loginUser;

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

@@ -3,6 +3,7 @@ not.null=* \u5FC5\u987B\u586B\u5199
 user.jcaptcha.error=\u9A8C\u8BC1\u7801\u9519\u8BEF
 user.jcaptcha.expire=\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
 user.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\uFF1A{0} \u4E0D\u5B58\u5728.
+user.not.login=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\u4E0D\u5141\u8BB8\u5728\u6B64\u767B\u5F55.
 user.password.not.match=\u7528\u6237\u4E0D\u5B58\u5728/\u5BC6\u7801\u9519\u8BEF
 user.password.retry.limit.count=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
 user.password.retry.limit.exceed=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F

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

@@ -3,6 +3,7 @@ not.null=* Required fill in
 user.jcaptcha.error=Captcha error
 user.jcaptcha.expire=Captcha invalid
 user.not.exists=Sorry, your account: {0} does not exist
+user.not.login=Sorry, your account Not allowed to log in here
 user.password.not.match=User does not exist/Password error
 user.password.retry.limit.count=Password input error {0} times
 user.password.retry.limit.exceed=Password input error {0} times, account locked for {1} minutes

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

@@ -3,6 +3,7 @@ not.null=* \u5FC5\u987B\u586B\u5199
 user.jcaptcha.error=\u9A8C\u8BC1\u7801\u9519\u8BEF
 user.jcaptcha.expire=\u9A8C\u8BC1\u7801\u5DF2\u5931\u6548
 user.not.exists=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\uFF1A{0} \u4E0D\u5B58\u5728.
+user.not.login=\u5BF9\u4E0D\u8D77, \u60A8\u7684\u8D26\u53F7\u4E0D\u5141\u8BB8\u5728\u6B64\u767B\u5F55.
 user.password.not.match=\u7528\u6237\u4E0D\u5B58\u5728/\u5BC6\u7801\u9519\u8BEF
 user.password.retry.limit.count=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21
 user.password.retry.limit.exceed=\u5BC6\u7801\u8F93\u5165\u9519\u8BEF{0}\u6B21\uFF0C\u5E10\u6237\u9501\u5B9A{1}\u5206\u949F

+ 4 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginBody.java

@@ -44,5 +44,9 @@ public class LoginBody implements Serializable {
      * 唯一标识
      */
     private String uuid;
+    /**
+     * 接收登录设备标识   pc_user pc用户,app_user 用户端 app_staff 物管端
+     */
+    private String clientKey;
 
 }

+ 1 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java

@@ -141,7 +141,7 @@ public class LoginUser implements Serializable {
     /**
      * 员工信息
      */
-    private List<StaffManageDTO> staffManageList;
+    private StaffManageDTO staffManage;
     /**
      * 居住人员信息
      */

+ 1 - 17
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java

@@ -38,9 +38,6 @@ 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;
-
 /**
  * 用户信息
  *
@@ -123,24 +120,11 @@ public class SysUserController extends BaseController {
         userInfoVo.setUser(user);
         userInfoVo.setPermissions(loginUser.getMenuPermission());
         userInfoVo.setRoles(loginUser.getRolePermission());
-        userInfoVo.setAuthenticationUser(N);
         //判断是否需要进行用户认证
         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) || UserType.PC_USER.equals(userType)) {
-                //判断这个用户是否一个认证都没有
-                if (user.getIsAuthentication().equals(N)) {
-                    userInfoVo.setAuthenticationUser(Y);
-                }
-            }*/
+            userInfoVo.setAuthenticationUser(user.getIsAuthentication());
         }
         return R.ok(userInfoVo);
     }

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

@@ -103,7 +103,7 @@ public class SysUser extends TenantEntity {
      */
     private String remark;
     /**
-     * 是否认证过 N:未认证 Y:认证 当非系统用户租户id不为000000时是认证过
+     * 是否认证过 1:双端都未认证 2:只认证了业主端 3:只认证了物业端 4:双端都认证过
      */
     private String isAuthentication;
 

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java

@@ -122,7 +122,7 @@ public class SysUserBo extends BaseEntity {
     private String excludeUserIds;
 
     /**
-     * 是否认证过 N:未认证 Y:认证 当非系统用户租户id不为000000时是认证过
+     * 是否认证过 1:双端都未认证 2:只认证了业主端 3:只认证了物业端 4:双端都认证过
      */
     private String isAuthentication;
 

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

@@ -142,7 +142,7 @@ public class SysUserVo implements Serializable {
     private Long roleId;
 
     /**
-     * 是否认证过 N:未认证 Y:认证 当非系统用户租户id不为000000时是认证过
+     * 是否认证过 1:双端都未认证 2:只认证了业主端 3:只认证了物业端 4:双端都认证过
      */
     private String isAuthentication;
 }

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

@@ -15,6 +15,7 @@
         <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="userType != null and userType != ''">user_type = #{userType},</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>

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

@@ -102,17 +102,17 @@ public class StaffManageController extends BaseController {
         return R.ok(staffManageService.getAuthenticationInfo(staffId));
     }
 
-    /**
+/*    *//**
      * 获取员工管理详细信息
      *
      * @param userId 用户id
-     */
+     *//*
     @SaIgnore
     @GetMapping("/getInfoByUserId/{userId}")
     public R<List<StaffManageVo>> getInfoByUserId(@NotNull(message = "主键不能为空")
                                     @PathVariable Long userId) {
         return R.ok(staffManageService.getInfoByUserId(userId));
-    }
+    }*/
 
     /**
      * 新增员工管理

+ 3 - 1
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/mapper/StaffManageMapper.java

@@ -17,6 +17,8 @@ import java.util.List;
 public interface StaffManageMapper extends BaseMapperPlus<StaffManage, StaffManageVo> {
 
     @InterceptorIgnore(tenantLine = "true", dataPermission = "false")
-    List<StaffManageVo> getInfoByUserId(Long userId);
+    StaffManageVo getInfoByUserId(Long userId, String tenantId);
+    @InterceptorIgnore(tenantLine = "true", dataPermission = "false")
+    List<StaffManageVo> getInfoListByUserId(Long userId);
 
 }

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

@@ -36,7 +36,7 @@ public interface IStaffManageService {
      *
      * @param userId 用户id
      */
-    List<StaffManageVo> getInfoByUserId(Long userId);
+    StaffManageVo getInfoByUserId(Long userId,String tenantId);
 
     /**
      * 分页查询员工管理列表

+ 6 - 12
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/CheckPointRecordServiceImpl.java

@@ -76,7 +76,6 @@ public class CheckPointRecordServiceImpl implements ICheckPointRecordService {
     }
 
     private LambdaQueryWrapper<CheckPointRecord> buildQueryWrapper(CheckPointRecordBo bo) {
-        Map<String, Object> params = bo.getParams();
         LambdaQueryWrapper<CheckPointRecord> lqw = Wrappers.lambdaQuery();
         lqw.orderByAsc(CheckPointRecord::getCheckPointRecordId);
         lqw.eq(bo.getCheckPointManageId() != null, CheckPointRecord::getCheckPointManageId, bo.getCheckPointManageId());
@@ -125,17 +124,12 @@ public class CheckPointRecordServiceImpl implements ICheckPointRecordService {
     public Boolean updateByBo(CheckPointRecordBo bo) {
 
         //获取当前登录人的员工信息
-        List<StaffManageDTO> staffManageList = LoginHelper.getLoginUser().getStaffManageList();
-        String tenantId = LoginHelper.getTenantId();
-        List<StaffManageDTO> list = staffManageList.stream().filter(e -> e.getTenantId().equals(tenantId)).toList();
-        if(!list.isEmpty()){
-            StaffManageDTO staffManage = list.get(0);
-            bo.setUpdateTime(DateUtils.getNowDate());
-            if (staffManage != null){
-                bo.setCheckUserName(staffManage.getStaffName());
-                bo.setCheckUsePhone(staffManage.getPhoneNumber());
-                bo.setCheckStaffId(staffManage.getStaffId());
-            }
+        StaffManageDTO staffManage = LoginHelper.getLoginUser().getStaffManage();
+        bo.setUpdateTime(DateUtils.getNowDate());
+        if (staffManage != null){
+            bo.setCheckUserName(staffManage.getStaffName());
+            bo.setCheckUsePhone(staffManage.getPhoneNumber());
+            bo.setCheckStaffId(staffManage.getStaffId());
         }
         CheckPointRecord update = MapstructUtils.convert(bo, CheckPointRecord.class);
         validEntityBeforeSave(update);

+ 78 - 15
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/ResidentInfoServiceImpl.java

@@ -8,7 +8,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.config.BoManConfig;
 import org.dromara.common.core.domain.R;
-import org.dromara.common.core.enums.UserType;
 import org.dromara.common.core.exception.user.UserException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
@@ -22,9 +21,11 @@ import org.dromara.domain.houseInfo.vo.HouseInfoRedidentVo;
 import org.dromara.domain.residentInfo.ResidentInfo;
 import org.dromara.domain.residentInfo.bo.ResidentInfoBo;
 import org.dromara.domain.residentInfo.vo.ResidentInfoVo;
+import org.dromara.domain.staffManage.vo.StaffManageVo;
 import org.dromara.mapper.HouseInfoMapper;
 import org.dromara.mapper.HouseInfoRedidentMapper;
 import org.dromara.mapper.ResidentInfoMapper;
+import org.dromara.mapper.StaffManageMapper;
 import org.dromara.service.IResidentInfoService;
 import org.dromara.system.domain.SysRole;
 import org.dromara.system.domain.SysUser;
@@ -47,6 +48,7 @@ import java.util.List;
 import java.util.Map;
 
 import static org.dromara.common.core.constant.Constants.*;
+import static org.dromara.common.core.enums.UserType.APP_USER;
 
 /**
  * 居住人员信息,存储居住人员的详细信息Service业务层处理
@@ -66,6 +68,7 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
     private final SysUserRoleMapper userRoleMapper;
     private final HouseInfoMapper houseInfoMapper;
     private final HouseInfoRedidentMapper houseInfoRedidentMapper;
+    private final StaffManageMapper staffManageMapper;
 
 
     /**
@@ -257,7 +260,8 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
 
             if (TenantHelper.isEnable()) {
                 //把租户id更新到sys_user表/sys_user_tenant表中
-                user.setIsAuthentication(Y);
+                user.setIsAuthentication(TWO);
+                user.setUserType(APP_USER.getUserType());
                 userService.updateUserByIdNoTenantId(user);
             }
         }
@@ -297,6 +301,7 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
         Long userId;
         SysUserBo user = new SysUserBo();
         user.setTenantId(tenantId);
+        user.setIsAuthentication(TWO);
         if (!existUser) {
             user.setUserName(residentPhone);
             user.setPhonenumber(residentPhone);
@@ -304,9 +309,8 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
             user.setNickName(residentPhone);
             user.setPassword(BCrypt.hashpw(BoManConfig.getPasswordDeft()));
             // 校验用户类型是否存在
-            String userType = UserType.getUserType(add.getUserType()).getUserType();
-            user.setUserType(userType);
-            user.setIsAuthentication(Y);
+            //String userType = UserType.getUserType(add.getUserType()).getUserType();
+            user.setUserType(APP_USER.getUserType());
             user.setCreateBy(0L);
             user.setUpdateBy(0L);
             SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
@@ -319,8 +323,20 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
             SysUserVo sysUserVo = TenantHelper.ignore(() -> {
                 return sysUserMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, residentPhone));
             });
+            //更新数据
             userId = sysUserVo.getUserId();
             user.setUserId(userId);
+            //先去查询员工人员里面是否有认证通过的
+            List<StaffManageVo> infoListByUserId = staffManageMapper.getInfoListByUserId(userId);
+            if (infoListByUserId != null && !infoListByUserId.isEmpty()) {
+                List<StaffManageVo> list = infoListByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                if (!list.isEmpty()) {
+                    user.setIsAuthentication(FOR);
+                }
+            }
+            String userType = sysUserVo.getUserType();
+            user.setUserType(userType+","+APP_USER);
+            userService.updateUserByIdNoTenantId(user);
         }
         add.setExamine(TWO);
         add.setUserId(userId);
@@ -480,8 +496,20 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
             sysUser.setUserId(userId);
             if (TenantHelper.isEnable()) {
                 //把租户id更新到sys_user表/sys_user_tenant表中
+                SysUserVo sysUserVo = userService.selectUserById(userId);
+                //查询该用户的用户类型
+                String userType = sysUserVo.getUserType();
+                sysUser.setUserType(userType+","+APP_USER);
                 sysUser.setTenantId(tenantId);
-                sysUser.setIsAuthentication(Y);
+                //先去查询员工人员里面是否有认证通过的
+                List<StaffManageVo> infoListByUserId = staffManageMapper.getInfoListByUserId(userId);
+                if (infoListByUserId != null && !infoListByUserId.isEmpty()) {
+                    List<StaffManageVo> list = infoListByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                    if (!list.isEmpty()) {
+                        sysUser.setIsAuthentication(FOR);
+                    }
+                }
+                sysUser.setIsAuthentication(TWO);
                 userService.updateUserByIdNoTenantId(sysUser);
                 SysUserTenant sysUserTenant = new SysUserTenant();
                 sysUserTenant.setUserId(residentInfo.getUserId());
@@ -546,16 +574,10 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
             List<ResidentInfo> residentInfoList = TenantHelper.ignore(() -> {
                 return baseMapper.selectList(new LambdaQueryWrapper<ResidentInfo>().eq(ResidentInfo::getUserId, userId));
             });
-            //查询该用户是否一个认证信息 通过的 都没有则需要把用户租户重置为000000,认证状态改为未认证
+            //查询该用户是否一个认证信息 通过的 都没有则需要把用户租户重置为000000,认证状态改为未认证
             SysUser sysUser = new SysUser();
             sysUser.setUserId(userId);
-            if (residentInfoList == null) {
-                sysUser.setTenantId(TENANT_ID);
-                sysUser.setIsAuthentication(N);
-                TenantHelper.ignore(() -> {
-                    sysUserMapper.updateById(sysUser);
-                });
-            }
+            sysUser.setTenantId(TENANT_ID);
             //删除用户提交的认证信息,如果有房屋id
             if (houseId != null) {
                 houseInfoRedidentMapper.deleteById(houseId);
@@ -568,7 +590,7 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
             TenantHelper.ignore(() -> {
                 sysUserTenantMapper.delete(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId).eq(SysUserTenant::getTenantId, tenantId));
             });
-            if (residentInfoList != null && !residentInfoList.isEmpty()) {
+/*            if (residentInfoList != null && !residentInfoList.isEmpty()) {
                 //判断用户的默认租户是否是被删除的那个租户,是的情况下换一个租户id给sysUser表中
                 SysUserVo sysUserVo = TenantHelper.ignore(() -> {
                     return sysUserMapper.selectVoById(userId);
@@ -589,7 +611,48 @@ public class ResidentInfoServiceImpl implements IResidentInfoService {
                         sysUserMapper.updateById(sysUser);
                     });
                 }
+            }*/
+
+            /**
+             * 认证通过的才算认证
+             */
+            if (residentInfoList == null) {
+                //如果一个员工都没有,去查询是否有居住人员认证通过的
+                List<StaffManageVo> infoByUserId = staffManageMapper.getInfoListByUserId(userId);
+                if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                    List<StaffManageVo> list = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                    if (!list.isEmpty()) {
+                        sysUser.setIsAuthentication(THR);
+                        sysUser.setTenantId(list.get(0).getTenantId());
+                    }
+                }else {
+                    //一个居住人员都没有,说明该用户一个认证信息都没有提交
+                    sysUser.setIsAuthentication(ONE);
+                }
+            }else {
+                //说明还有认证过的员工信息
+                List<ResidentInfo> list = residentInfoList.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                if (!list.isEmpty()) {
+                    sysUser.setTenantId(list.get(0).getTenantId());
+                }else {
+                    //如果一个居住人员通过的都没有,去查询是否有员工认证通过的
+                    List<StaffManageVo> infoByUserId = staffManageMapper.getInfoListByUserId(userId);
+                    if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                        List<StaffManageVo> staffManageVoList = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                        if (!staffManageVoList.isEmpty()) {
+                            sysUser.setIsAuthentication(THR);
+                            sysUser.setTenantId(staffManageVoList.get(0).getTenantId());
+                        }
+                    }else {
+                        //一个居住人员都没有,说明该用户一个认证信息都没有提交
+                        sysUser.setIsAuthentication(ONE);
+                    }
+                }
             }
+            //更新用户的TENANT_ID和认证状态
+            TenantHelper.ignore(() -> {
+                sysUserMapper.updateById(sysUser);
+            });
         } else {
             userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
         }

+ 82 - 30
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffManageServiceImpl.java

@@ -8,16 +8,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.config.BoManConfig;
-import org.dromara.common.core.enums.UserType;
 import org.dromara.common.core.exception.user.UserException;
 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.tenant.helper.TenantHelper;
+import org.dromara.domain.residentInfo.vo.ResidentInfoVo;
 import org.dromara.domain.staffManage.StaffManage;
 import org.dromara.domain.staffManage.bo.StaffManageBo;
 import org.dromara.domain.staffManage.vo.StaffManageVo;
+import org.dromara.mapper.ResidentInfoMapper;
 import org.dromara.mapper.StaffManageMapper;
 import org.dromara.service.IStaffManageService;
 import org.dromara.system.domain.SysRole;
@@ -40,6 +41,8 @@ import java.util.List;
 import java.util.Map;
 
 import static org.dromara.common.core.constant.Constants.*;
+import static org.dromara.common.core.enums.UserType.APP_STAFF;
+import static org.dromara.common.core.enums.UserType.PC_USER;
 
 /**
  * 员工管理Service业务层处理
@@ -57,6 +60,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
     private final ISysUserService userService;
     private final SysUserMapper userMapper;
     private final SysUserRoleMapper userRoleMapper;
+    private final ResidentInfoMapper residentInfoMapper;
 
     /**
      * 查询员工管理
@@ -90,8 +94,8 @@ public class StaffManageServiceImpl implements IStaffManageService {
      * @return
      */
     @Override
-    public List<StaffManageVo> getInfoByUserId(Long userId) {
-        return baseMapper.getInfoByUserId(userId);
+    public StaffManageVo getInfoByUserId(Long userId,String tenantId) {
+        return baseMapper.getInfoByUserId(userId,tenantId);
     }
 
     /**
@@ -204,22 +208,21 @@ public class StaffManageServiceImpl implements IStaffManageService {
             throw new UserException("staff.manage.error");
         } else if (flag) {
             SysUserBo user = new SysUserBo();
-            String tenantId = staffManage.getTenantId();;
+            String tenantId = staffManage.getTenantId();
             //手机号、手机验证码注册
             String username = staffManage.getPhoneNumber();
             String password = BoManConfig.getPasswordDeft();
             // 校验用户类型是否存在
-            String userType = UserType.getUserType(staffManage.getUserType()).getUserType();
+            //String userType = UserType.getUserType(staffManage.getUserType()).getUserType();
 
             user.setUserName(username);
             user.setNickName(username);
             user.setPassword(BCrypt.hashpw(password));
-            user.setUserType(userType);
             user.setPhonenumber(username);
-            user.setIsAuthentication(Y);
+            user.setIsAuthentication(THR);
+            user.setUserType(APP_STAFF.getUserType() + "," + PC_USER.getUserType());
             boolean exist = TenantHelper.ignore(() -> {
-                return
-                    userMapper.exists(new LambdaQueryWrapper<SysUser>()
+                return userMapper.exists(new LambdaQueryWrapper<SysUser>()
                         .eq(SysUser::getUserName, user.getUserName()));
             });
             SysUser sysUser = MapstructUtils.convert(user, SysUser.class);
@@ -239,6 +242,17 @@ public class StaffManageServiceImpl implements IStaffManageService {
                     return userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, username));
                 });
                 userId = sysUserVo.getUserId();
+                String userType = sysUserVo.getUserType();
+                sysUser.setUserType(userType + "," + APP_STAFF.getUserType() + "," + PC_USER.getUserType());
+                //去查询居住人员里面是否有认证通过的
+                List<ResidentInfoVo> infoByUserId = residentInfoMapper.getInfoByUserId(userId);
+                if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                    List<ResidentInfoVo> list = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                    if (!list.isEmpty()) {
+                        sysUser.setIsAuthentication(FOR);
+                    }
+                }
+                userMapper.updateById(sysUser);
             }
             staffManage.setExamine(TWO);
             staffManage.setUserId(userId);
@@ -371,14 +385,26 @@ public class StaffManageServiceImpl implements IStaffManageService {
     @Transactional(rollbackFor = Exception.class)
     public Boolean examineStaff(StaffManageBo bo) {
         StaffManage examineStaffManage = MapstructUtils.convert(bo, StaffManage.class);
+        Long userId = bo.getUserId();
         //判断是否审核通过
         if (TWO.equals(examineStaffManage.getExamine())) {
             SysUserBo sysUser = new SysUserBo();
-            sysUser.setUserId(bo.getUserId());
+            sysUser.setUserId(userId);
             if (TenantHelper.isEnable()) {
+                SysUserVo sysUserVo = userService.selectUserById(bo.getUserId());
                 //把租户id更新到sys_user表/sys_user_tenant表中
                 sysUser.setTenantId(examineStaffManage.getTenantId());
-                sysUser.setIsAuthentication(Y);
+                sysUser.setIsAuthentication(THR);
+                //先去查询居住人员里面是否有认证通过的
+                List<ResidentInfoVo> infoByUserId = residentInfoMapper.getInfoByUserId(userId);
+                if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                    List<ResidentInfoVo> list = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                    if (!list.isEmpty()) {
+                        sysUser.setIsAuthentication(FOR);
+                    }
+                }
+                String userType = sysUserVo.getUserType();
+                sysUser.setUserType(userType + "," + APP_STAFF.getUserType() + "," + PC_USER.getUserType());
                 userService.updateUserByIdNoTenantId(sysUser);
                 SysUserTenant sysUserTenant = new SysUserTenant();
                 sysUserTenant.setUserId(examineStaffManage.getUserId());
@@ -414,7 +440,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
     }
 
     /**
-     * 删除员工信息和用户信息和权限
+     * 删除员工信息和权限
      *
      * @param bo
      * @return
@@ -432,15 +458,10 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 return baseMapper.selectList(new LambdaQueryWrapper<StaffManage>().eq(StaffManage::getUserId, userId));
             });
             //查询该用户是否一个认证信息 通过的 都没有则需要把用户租户重置为000000,认证状态改为未认证
+            //还需要检查是否有认证的业主信息
             SysUser sysUser = new SysUser();
             sysUser.setUserId(userId);
-            if (staffManageList == null) {
-                sysUser.setTenantId(TENANT_ID);
-                sysUser.setIsAuthentication(N);
-                TenantHelper.ignore(() -> {
-                    userMapper.updateById(sysUser);
-                });
-            }
+            sysUser.setTenantId(TENANT_ID);
             // 删除用户与角色关联
             TenantHelper.ignore(() -> {
                 userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId).eq(SysUserRole::getTenantId, tenantId));
@@ -449,7 +470,7 @@ public class StaffManageServiceImpl implements IStaffManageService {
             TenantHelper.ignore(() -> {
                 sysUserTenantMapper.delete(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId).eq(SysUserTenant::getTenantId, tenantId));
             });
-            if (staffManageList != null && staffManageList.size() > 0) {
+/*            if (staffManageList != null && !staffManageList.isEmpty()) {
                 //判断用户的默认租户是否是被删除的那个租户,是的情况下换一个租户id给sysUser表中
                 SysUserVo sysUserVo = TenantHelper.ignore(() -> {
                     return
@@ -458,22 +479,53 @@ public class StaffManageServiceImpl implements IStaffManageService {
                 String tenantIdOld = sysUserVo.getTenantId();
                 if (tenantId.equals(tenantIdOld)) {
                     SysUserTenant sysUserTenant = sysUserTenantMapper.selectVoOne(new LambdaQueryWrapper<SysUserTenant>().eq(SysUserTenant::getUserId, userId));
-                    sysUser.setTenantId(TENANT_ID);
                     if (sysUserTenant != null) {
                         sysUser.setTenantId(sysUserTenant.getTenantId());
                     }
-
                 }
-
-                long count = staffManageList.stream().filter(e -> e.getExamine().equals(TWO)).count();
-                if (count == 0) {
-                    sysUser.setTenantId(TENANT_ID);
-                    sysUser.setIsAuthentication(N);
-                    TenantHelper.ignore(() -> {
-                        userMapper.updateById(sysUser);
-                    });
+                //判断是否还有认证通过的员工信息,不分租户
+                count = staffManageList.stream().filter(e -> e.getExamine().equals(TWO)).count();
+            }*/
+            /**
+             * 认证通过的才算认证
+             */
+            if (staffManageList == null) {
+                //如果一个员工都没有,去查询是否有居住人员认证通过的
+                List<ResidentInfoVo> infoByUserId = residentInfoMapper.getInfoByUserId(userId);
+                if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                    List<ResidentInfoVo> list = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                    if (!list.isEmpty()) {
+                        sysUser.setIsAuthentication(TWO);
+                        sysUser.setTenantId(list.get(0).getTenantId());
+                    }
+                }else {
+                    //一个居住人员都没有,说明该用户一个认证信息都没有提交
+                    sysUser.setIsAuthentication(ONE);
+                }
+            }else {
+                //说明还有认证过的员工信息
+                List<StaffManage> list = staffManageList.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                if (!list.isEmpty()) {
+                    sysUser.setTenantId(list.get(0).getTenantId());
+                }else {
+                    //如果一个员工通过的都没有,去查询是否有居住人员认证通过的
+                    List<ResidentInfoVo> infoByUserId = residentInfoMapper.getInfoByUserId(userId);
+                    if (infoByUserId != null && !infoByUserId.isEmpty()) {
+                        List<ResidentInfoVo> residentInfoVoList = infoByUserId.stream().filter(e -> e.getExamine().equals(TWO)).toList();
+                        if (!residentInfoVoList.isEmpty()) {
+                            sysUser.setIsAuthentication(TWO);
+                            sysUser.setTenantId(residentInfoVoList.get(0).getTenantId());
+                        }
+                    }else {
+                        //一个居住人员都没有,说明该用户一个认证信息都没有提交
+                        sysUser.setIsAuthentication(ONE);
+                    }
                 }
             }
+            //更新用户的TENANT_ID和认证状态
+            TenantHelper.ignore(() -> {
+                userMapper.updateById(sysUser);
+            });
         } else {
             userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
         }

+ 3 - 8
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainManualServiceImpl.java

@@ -11,7 +11,6 @@ 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.satoken.utils.LoginHelper;
 import org.dromara.domain.staffTrain.StaffTrainManual;
 import org.dromara.domain.staffTrain.bo.StaffTrainManualBo;
 import org.dromara.domain.staffTrain.vo.StaffTrainManualVo;
@@ -53,17 +52,13 @@ public class StaffTrainManualServiceImpl implements IStaffTrainManualService {
         //获取该培训手册对象阅读人员的value值
         List<String> valueList = RedisUtils.getCacheList(READ_TRAIN + manualId);
         //获取当前登录人的员工信息
-        List<StaffManageDTO> staffManageList = getLoginUser().getStaffManageList();
-        String tenantId = LoginHelper.getTenantId();
-
+        StaffManageDTO staffManage = getLoginUser().getStaffManage();
         Long userId = getUserId();
         //获取员工姓名
         String staffName = "未知";
-        List<StaffManageDTO> list = staffManageList.stream().filter(e -> e.getTenantId().equals(tenantId)).toList();
-        if(!list.isEmpty()){
-            staffName = list.get(0).getStaffName();
+        if (staffManage != null) {
+            staffName = staffManage.getStaffName();
         }
-
         //组装value值
         String value = userId + ":" + staffName;
         if (valueList != null && valueList.size() > 0) {

+ 2 - 7
ruoyi-modules/ruoyi-wuye/src/main/java/org/dromara/service/impl/StaffTrainTimeServiceImpl.java

@@ -21,8 +21,6 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
-
 /**
  * 员工培训时长Service业务层处理
  *
@@ -109,11 +107,8 @@ public class StaffTrainTimeServiceImpl implements IStaffTrainTimeService {
             return flag;
         }
         //获取当前登录人的员工信息
-        List<StaffManageDTO> staffManageList = getLoginUser().getStaffManageList();
-        String tenantId = LoginHelper.getTenantId();
-        List<StaffManageDTO> list = staffManageList.stream().filter(e -> e.getTenantId().equals(tenantId)).toList();
-        if (!list.isEmpty()) {
-            StaffManageDTO staffManage = list.get(0);
+        StaffManageDTO staffManage = LoginHelper.getLoginUser().getStaffManage();
+        if (staffManage != null) {
             add.setStaffId(staffManage.getStaffId());
             add.setStaffName(staffManage.getStaffName());
             flag = baseMapper.insert(add) > 0;

+ 4 - 0
ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/HouseInfoMapper.xml

@@ -68,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="residentGender"    column="resident_gender"    />
         <result property="residentRelationship"    column="resident_relationship"    />
         <result property="isHouseholder"    column="is_householder"    />
+        <result property="residentType"    column="resident_type"    />
         <result property="isTenant"    column="is_tenant"    />
         <result property="residentEmployer"    column="resident_employer"    />
         <result property="specialType"    column="special_type"    />
@@ -95,6 +96,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         h.has_parking_space,
         h.community_name,
         r.resident_id,
+        r.resident_type,
         r.resident_name,
         r.resident_id_card,
         r.resident_gender,
@@ -130,6 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         h.has_parking_space,
         h.community_name,
         r.resident_id,
+        r.resident_type,
         r.resident_name,
         r.resident_id_card,
         r.resident_gender,
@@ -142,6 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         left JOIN
         resident_info r on h.house_id = r.house_id
         <where>
+             r.examine = '2'
             <if test="ResidentInfo.residentName != null  and ResidentInfo.residentName != ''"> and r.resident_name like concat('%', #{ResidentInfo.residentName}, '%')</if>
             <if test="ResidentInfo.residentAppearance != null  and ResidentInfo.residentAppearance != ''"> and r.resident_appearance = #{ResidentInfo.residentAppearance}</if>
             <if test="ResidentInfo.userId != null  and ResidentInfo.userId != ''"> and r.user_id = #{ResidentInfo.userId}</if>

+ 4 - 1
ruoyi-modules/ruoyi-wuye/src/main/resources/mapper/wuYe/StaffManageMapper.xml

@@ -16,8 +16,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
 
     <select id="getInfoByUserId" resultMap="StaffManageResult">
+        <include refid="selectStaffManageVo"></include>
+        where s.user_id = #{userId} and s.tenant_id = #{tenantId} limit 1
+    </select>
+    <select id="getInfoListByUserId" resultMap="StaffManageResult">
         <include refid="selectStaffManageVo"></include>
         where s.user_id = #{userId}
     </select>
-
 </mapper>