参与者与系统用户整合

This commit is contained in:
Wang.Huan
2025-03-26 16:01:32 +08:00
parent 6e63d3c286
commit 945e115b50
10 changed files with 87 additions and 8 deletions

View File

@@ -3,13 +3,14 @@ package com.core.common.core.domain.model;
import java.util.Collection;
import java.util.Set;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import com.alibaba.fastjson2.annotation.JSONField;
import com.core.common.core.domain.entity.SysUser;
import lombok.Data;
/**
* 登录用户身份权限
*
@@ -72,6 +73,16 @@ public class LoginUser implements UserDetails {
/** 租户ID */
private Integer tenantId;
/**
* 机构/科室id
*/
private Long orgId;
/**
* 参与者id
*/
private Long practitionerId;
/**
* 用户信息
*/

View File

@@ -0,0 +1,21 @@
package com.core.common.core.domain.model;
import lombok.Data;
/**
* 登录用户扩展
*/
@Data
public class LoginUserExtend {
/**
* 机构/科室id
*/
private Long orgId;
/**
* 参与者id
*/
private Long practitionerId;
}

View File

@@ -17,6 +17,7 @@ import com.core.common.constant.Constants;
import com.core.common.constant.UserConstants;
import com.core.common.core.domain.entity.SysUser;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.core.domain.model.LoginUserExtend;
import com.core.common.core.redis.RedisCache;
import com.core.common.exception.ServiceException;
import com.core.common.exception.user.*;
@@ -63,7 +64,7 @@ public class SysLoginService {
*/
public String login(String username, String password, String code, String uuid) {
// 验证码校验
// validateCaptcha(username, code, uuid);
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
@@ -91,7 +92,7 @@ public class SysLoginService {
MessageUtils.message("user.login.success")));
LoginUser loginUser = (LoginUser)authentication.getPrincipal();
// -----start-----登录时set租户id,正常应该从请求头获取,这行代码只是测试使用
// -----start-----登录时set租户id
Integer tenantId = 0;
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if (attributes != null) {
@@ -103,8 +104,12 @@ public class SysLoginService {
}
}
loginUser.setTenantId(tenantId);
// -----end-----登录时set租户id,正常应该从请求头获取,这行代码只是测试使用
// -----end-----登录时set租户id
recordLoginInfo(loginUser.getUserId());
// 设置 机构id和参与者id
LoginUserExtend loginUserExtend = userService.getLoginUserExtend(loginUser.getUserId());
loginUser.setOrgId(loginUserExtend.getOrgId());
loginUser.setPractitionerId(loginUserExtend.getPractitionerId());
// 生成token
return tokenService.createToken(loginUser);
}

View File

@@ -2,6 +2,7 @@ package com.core.system.mapper;
import java.util.List;
import com.core.common.core.domain.model.LoginUserExtend;
import org.apache.ibatis.annotations.Param;
import com.core.common.core.domain.entity.SysUser;
@@ -125,4 +126,12 @@ public interface SysUserMapper {
* @return 结果
*/
public SysUser checkEmailUnique(String email);
/**
* 扩展属性
*
* @param userId 系统用户id
* @return 扩展属性
*/
LoginUserExtend getLoginUserExtend(@Param("userId") Long userId);
}

View File

@@ -3,6 +3,7 @@ package com.core.system.service;
import java.util.List;
import com.core.common.core.domain.entity.SysUser;
import com.core.common.core.domain.model.LoginUserExtend;
/**
* 用户 业务层
@@ -203,4 +204,12 @@ public interface ISysUserService {
* @return 结果
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
/**
* 扩展属性
*
* @param userId 系统用户id
* @return 扩展属性
*/
LoginUserExtend getLoginUserExtend(Long userId);
}

View File

@@ -6,6 +6,7 @@ import java.util.stream.Collectors;
import javax.validation.Validator;
import com.core.common.core.domain.model.LoginUserExtend;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -484,4 +485,16 @@ public class SysUserServiceImpl implements ISysUserService {
}
return successMsg.toString();
}
/**
* 扩展属性
*
* @param userId 系统用户id
* @return 扩展属性
*/
@Override
public LoginUserExtend getLoginUserExtend(Long userId) {
return userMapper.getLoginUserExtend(userId);
}
}

View File

@@ -265,4 +265,12 @@
</foreach>
</delete>
<select id="getLoginUserExtend" resultType="com.core.common.core.domain.model.LoginUserExtend">
SELECT T1.ID AS practitioner_id,
T1.org_id AS org_id
FROM adm_practitioner AS T1
WHERE T1.delete_flag = '0'
AND T1.user_id = #{userId} LIMIT 1
</select>
</mapper>

View File

@@ -224,6 +224,9 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService {
*/
@Override
public R<?> delUserPractitioner(Long userId) {
if (1L == userId) {
return R.fail(null, "admin不允许删除");
}
iBizUserService.remove(new LambdaQueryWrapper<BizUser>().eq(BizUser::getUserId, userId));
practitionerAppAppMapper.delUserRole(userId);
Practitioner one =

View File

@@ -84,8 +84,8 @@ public class ChargeItemFormData {
this.statusEnum = ChargeItemStatus.BILLED.getValue();
this.contextEnum = EncounterClass.AMB.getValue();
this.occurrenceTime = new Date();
this.performerId = SecurityUtils.getLoginUser().getUserId();
this.entererId = SecurityUtils.getLoginUser().getUserId();
this.performerId = SecurityUtils.getLoginUser().getPractitionerId();
this.entererId = SecurityUtils.getLoginUser().getPractitionerId();
this.enteredDate = new Date();
this.serviceTable = CommonConstants.TableName.ADM_HEALTHCARE_SERVICE;
}

View File

@@ -2,6 +2,7 @@ package com.openhis.web.doctorstation.dto;
import java.math.BigDecimal;
import com.core.common.utils.SecurityUtils;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.enums.EncounterClass;
@@ -126,8 +127,7 @@ public class AdviceSaveDto {
this.statusEnum = RequestStatus.DRAFT.getValue();
this.categoryEnum = EncounterClass.AMB.getValue();
this.therapyEnum = TherapyTimeType.TEMPORARY.getValue();
// TODO: 应该从当前登录账号获取参与者id,现在没有
// this.practitionerId
this.practitionerId = SecurityUtils.getLoginUser().getPractitionerId();
}
}