提交 8f51d227 编写于 作者: wenhao.qin's avatar wenhao.qin

人员角色支持多选配置

上级 f71d9f90
流水线 #43149 已取消 于阶段
...@@ -2,6 +2,7 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -2,6 +2,7 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.PermissionDoctorRole; import com.pica.cloud.account.account.server.entity.PermissionDoctorRole;
import com.pica.cloud.account.account.server.resp.RoleDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -33,11 +34,13 @@ public interface PermissionDoctorRoleMapper { ...@@ -33,11 +34,13 @@ public interface PermissionDoctorRoleMapper {
List<PermissionDoctorRole> selectByRoleId(Long id); List<PermissionDoctorRole> selectByRoleId(Long id);
PermissionDoctorRole selectByUserId(Long id); List<RoleDto> selectRoleByUserId(Long id);
int deleteByRoleId(Map<String, Object> map); int deleteByRoleId(Map<String, Object> map);
List<PermissionDoctorRole> queryDoctorMenu(Integer doctorId); List<PermissionDoctorRole> queryDoctorMenu(Integer doctorId);
PermissionDoctorRole selectByHospitalIdRoleId(@Param("hospitalId") Integer hospitalId,@Param("roleId") Integer roleId); PermissionDoctorRole selectByHospitalIdRoleId(@Param("hospitalId") Integer hospitalId, @Param("roleId") Integer roleId);
int batchInsert(List<PermissionDoctorRole> list);
} }
\ No newline at end of file
...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.regex.Pattern; import java.util.regex.Pattern;
...@@ -39,8 +40,8 @@ public class HospitalSaasUserReq { ...@@ -39,8 +40,8 @@ public class HospitalSaasUserReq {
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String comment; private String comment;
@ApiModelProperty("角色id 0 无角色 1 主管理员 2 管理员 3 saas系统管理员 4 开单医生") @ApiModelProperty("角色id 0 无角色 1 主管理员 2 管理员 3 saas系统管理员 4 saas用户")
private Long roleId; private List<Long> roleId;
@ApiModelProperty("产品类型 1.云鹊医 2.云鹊健康 3.SAAS") @ApiModelProperty("产品类型 1.云鹊医 2.云鹊健康 3.SAAS")
private Integer productType; private Integer productType;
......
...@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; ...@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @Author qinwh * @Author qinwh
* @Date 2022/3/1 15:13 * @Date 2022/3/1 15:13
...@@ -22,6 +24,8 @@ public class HospitalSaasUserDto { ...@@ -22,6 +24,8 @@ public class HospitalSaasUserDto {
private String mobile; private String mobile;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String comment; private String comment;
@ApiModelProperty("角色")
private List<RoleDto> roles;
@ApiModelProperty("角色id") @ApiModelProperty("角色id")
private Long roleId; private Long roleId;
@ApiModelProperty("角色名称") @ApiModelProperty("角色名称")
......
...@@ -4,13 +4,14 @@ package com.pica.cloud.account.account.server.resp; ...@@ -4,13 +4,14 @@ package com.pica.cloud.account.account.server.resp;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @Author Pica * @Author Pica
* @Date 2022/3/3 17:58 * @Date 2022/3/3 17:58
*/ */
@Data @Data
public class HospitalSaasUserEditResp { public class HospitalSaasUserEditResp {
@ApiModelProperty("id") @ApiModelProperty("id")
private Long id; private Long id;
@ApiModelProperty("姓名") @ApiModelProperty("姓名")
...@@ -19,10 +20,8 @@ public class HospitalSaasUserEditResp { ...@@ -19,10 +20,8 @@ public class HospitalSaasUserEditResp {
private String mobile; private String mobile;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String comment; private String comment;
@ApiModelProperty("角色id") @ApiModelProperty("角色")
private Integer roleId; private List<RoleDto> roles;
@ApiModelProperty("角色名称")
private String roleName;
@ApiModelProperty("密码") @ApiModelProperty("密码")
private String password; private String password;
@ApiModelProperty("密码是否可修改 1 不可修改 2 可修改") @ApiModelProperty("密码是否可修改 1 不可修改 2 可修改")
......
...@@ -7,10 +7,7 @@ import com.pica.cloud.account.account.server.enums.SaasRoleEnum; ...@@ -7,10 +7,7 @@ import com.pica.cloud.account.account.server.enums.SaasRoleEnum;
import com.pica.cloud.account.account.server.mapper.*; import com.pica.cloud.account.account.server.mapper.*;
import com.pica.cloud.account.account.server.req.HospitalSaasUserListReq; import com.pica.cloud.account.account.server.req.HospitalSaasUserListReq;
import com.pica.cloud.account.account.server.req.HospitalSaasUserReq; import com.pica.cloud.account.account.server.req.HospitalSaasUserReq;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserDetailResp; import com.pica.cloud.account.account.server.resp.*;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserDto;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserEditResp;
import com.pica.cloud.account.account.server.resp.HospitalSaasUserResp;
import com.pica.cloud.account.account.server.service.AccountService; import com.pica.cloud.account.account.server.service.AccountService;
import com.pica.cloud.account.account.server.service.HospitalSaasUserService; import com.pica.cloud.account.account.server.service.HospitalSaasUserService;
import com.pica.cloud.account.account.server.service.PasswordService; import com.pica.cloud.account.account.server.service.PasswordService;
...@@ -25,6 +22,7 @@ import com.pica.cloud.foundation.utils.entity.PicaUser; ...@@ -25,6 +22,7 @@ import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.MD5Util; import com.pica.cloud.foundation.utils.utils.MD5Util;
import com.pica.cloud.trade.store.client.StoreCertifyServiceClient; import com.pica.cloud.trade.store.client.StoreCertifyServiceClient;
import com.pica.cloud.trade.store.resp.certify.StoreCertifyStatus; import com.pica.cloud.trade.store.resp.certify.StoreCertifyStatus;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -130,19 +128,23 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService { ...@@ -130,19 +128,23 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
} }
private void insertSaasRole(HospitalSaasUserReq req, Long doctorId, Long userId) { private void insertSaasRole(HospitalSaasUserReq req, Long doctorId, Long userId) {
if (Objects.equals(req.getRoleId(), SaasRoleEnum.NULL_ROLE.getCode())) { if (CollectionUtils.isEmpty(req.getRoleId())) {
return; return;
} }
List<PermissionDoctorRole> list = new ArrayList<>();
req.getRoleId().forEach(t -> {
PermissionDoctorRole doctorRole = new PermissionDoctorRole(); PermissionDoctorRole doctorRole = new PermissionDoctorRole();
doctorRole.setDoctorId(doctorId); doctorRole.setDoctorId(doctorId);
doctorRole.setHospitalId(req.getHospitalId().longValue()); doctorRole.setHospitalId(req.getHospitalId().longValue());
doctorRole.setRoleId(req.getRoleId()); doctorRole.setRoleId(t);
doctorRole.setDeleteFlag(1); doctorRole.setDeleteFlag(1);
doctorRole.setCreatedId(userId); doctorRole.setCreatedId(userId);
doctorRole.setCreatedTime(new Date()); doctorRole.setCreatedTime(new Date());
doctorRole.setModifiedId(userId); doctorRole.setModifiedId(userId);
doctorRole.setModifiedTime(new Date()); doctorRole.setModifiedTime(new Date());
doctorRoleMapper.insert(doctorRole); list.add(doctorRole);
});
doctorRoleMapper.batchInsert(list);
} }
@Override @Override
...@@ -159,12 +161,13 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService { ...@@ -159,12 +161,13 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
if (count < 1) { if (count < 1) {
return new HospitalSaasUserResp(Collections.emptyList(), 0); return new HospitalSaasUserResp(Collections.emptyList(), 0);
} }
map.put("pageNo", (req.getPageNo() - 1) * req.getPageSize()); map.put("pageNo", (req.getPageNo() - 1) * req.getPageSize());
map.put("pageSize", req.getPageSize()); map.put("pageSize", req.getPageSize());
List<HospitalSaasUserDto> lists = accountMapper.listByPage(map); List<HospitalSaasUserDto> lists = accountMapper.listByPage(map);
//手机号 解密脱敏 //手机号 解密脱敏
lists.stream().forEach(t -> { lists.stream().forEach(t -> {
List<RoleDto> roleDtos = doctorRoleMapper.selectRoleByUserId(t.getId());
t.setRoles(roleDtos);
String phone = EncryptUtils.decryptContent(t.getMobile(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY); String phone = EncryptUtils.decryptContent(t.getMobile(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY);
String mixMobile = mixMobile(phone); String mixMobile = mixMobile(phone);
t.setMobile(mixMobile); t.setMobile(mixMobile);
...@@ -178,14 +181,20 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService { ...@@ -178,14 +181,20 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
return new HospitalSaasUserResp(lists, count); return new HospitalSaasUserResp(lists, count);
} }
private void validatorAdminRole(Long roleId, Long hospitalId) { // private void validatorAdminRole(Long roleId, Long hospitalId) {
// int count = accountMapper.adminRoleCountByhospitalId(hospitalId);
// if (count >= 1 && null != roleId && Objects.equals(roleId, SaasRoleEnum.SAAS_MAIN_ADMIN.getCode())) {
// throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前已存在系统管理员,请勿重复设置");
// }
// }
private void validatorAdminRole(List<Long> roleId, Long hospitalId) {
int count = accountMapper.adminRoleCountByhospitalId(hospitalId); int count = accountMapper.adminRoleCountByhospitalId(hospitalId);
if (count >= 1 && null != roleId && Objects.equals(roleId, SaasRoleEnum.SAAS_MAIN_ADMIN.getCode())) { if (count >= 1 && CollectionUtils.isNotEmpty(roleId) && roleId.contains(SaasRoleEnum.SAAS_MAIN_ADMIN)) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前已存在系统管理员,请勿重复设置"); throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前已存在系统管理员,请勿重复设置");
} }
} }
@Override @Override
public int upsert(HospitalSaasUserReq req, Long doctorId) { public int upsert(HospitalSaasUserReq req, Long doctorId) {
if (Objects.isNull(req) || Objects.isNull(req.getHospitalId())) { if (Objects.isNull(req) || Objects.isNull(req.getHospitalId())) {
...@@ -197,13 +206,13 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService { ...@@ -197,13 +206,13 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
if (accountExist == null) { if (accountExist == null) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前用户不存在"); throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前用户不存在");
} }
HospitalSaasUserEditResp saasUser = accountMapper.selectUserRoleById(req.getId()); // HospitalSaasUserEditResp saasUser = accountMapper.selectUserRoleById(req.getId());
if (req.getLoginFlag() == 1 && saasUser != null && saasUser.getRoleId() != null && !Objects.equals(req.getRoleId(), saasUser.getRoleId()) && req.getRoleId() != 0 && saasUser.getRoleId() < SaasRoleEnum.SAAS_MAIN_ADMIN.getCode()) { // if (req.getLoginFlag() == 1 && saasUser != null && saasUser.getRoleId() != null && !Objects.equals(req.getRoleId(), saasUser.getRoleId()) && req.getRoleId() != 0 && saasUser.getRoleId() < SaasRoleEnum.SAAS_MAIN_ADMIN.getCode()) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前角色不可编辑"); // throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前角色不可编辑");
} // }
if (req.getLoginFlag() == 0 && saasUser != null && saasUser.getRoleId() != null && !Objects.equals(req.getRoleId(), saasUser.getRoleId()) && req.getRoleId() != 0 && saasUser.getRoleId() < SaasRoleEnum.SAAS_DOCTOR.getCode()) { // if (req.getLoginFlag() == 0 && saasUser != null && saasUser.getRoleId() != null && !Objects.equals(req.getRoleId(), saasUser.getRoleId()) && req.getRoleId() != 0 && saasUser.getRoleId() < SaasRoleEnum.SAAS_DOCTOR.getCode()) {
throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前角色不可编辑"); // throw new PicaException(PicaResultCode.PARAM_IS_INVALID.code(), "当前角色不可编辑");
} // }
Account account = new Account(); Account account = new Account();
account.setId(req.getId()); account.setId(req.getId());
account.setModifyId(doctorId); account.setModifyId(doctorId);
...@@ -282,18 +291,18 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService { ...@@ -282,18 +291,18 @@ public class HospitalSaasUserServiceImpl implements HospitalSaasUserService {
@Override @Override
public HospitalSaasUserEditResp edit(Long id) { public HospitalSaasUserEditResp edit(Long id) {
HospitalSaasUserEditResp resp = accountMapper.selectUserRoleById(id); HospitalSaasUserEditResp resp = accountMapper.selectUserRoleById(id);
List<RoleDto> roleDtos = doctorRoleMapper.selectRoleByUserId(resp.getId());
resp.setRoles(roleDtos);
if (null == resp) { if (null == resp) {
return new HospitalSaasUserEditResp(); return new HospitalSaasUserEditResp();
} }
resp.setPwdFlag(2);
//手机号 不为空 解密脱敏 //手机号 不为空 解密脱敏
if (StringUtils.isNotBlank(resp.getMobile())) { if (StringUtils.isNotBlank(resp.getMobile())) {
String phone = EncryptUtils.decryptContent(resp.getMobile(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY); String phone = EncryptUtils.decryptContent(resp.getMobile(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY);
resp.setMobile(phone); resp.setMobile(phone);
return resp; return resp;
} }
resp.setPwdFlag(2);
if (StringUtils.isNotBlank(resp.getPassword())) { if (StringUtils.isNotBlank(resp.getPassword())) {
resp.setPwdFlag(1); resp.setPwdFlag(1);
} }
......
...@@ -364,9 +364,7 @@ ...@@ -364,9 +364,7 @@
</sql> </sql>
<select id="listCountByPage" resultType="java.lang.Integer"> <select id="listCountByPage" resultType="java.lang.Integer">
select count(*) select count(*)
from p_doctor as p left join permission_doctor_role as pdr from p_doctor as p
ON p.id=pdr.doctor_id and p.hospital_id=pdr.hospital_id and pdr.delete_flag=1
left join permission_role as pr ON pdr.role_id = pr.id and pr.delete_flag=1
where where
<include refid="select_list_page"></include> <include refid="select_list_page"></include>
</select> </select>
...@@ -376,13 +374,8 @@ ...@@ -376,13 +374,8 @@
p.name as name, p.name as name,
p.hospital_id as hospitalId, p.hospital_id as hospitalId,
p.mobile_phone as mobile, p.mobile_phone as mobile,
p.comment as comment, p.comment as comment
pr.id as roleId,
pr.role_name as roleName
from p_doctor as p from p_doctor as p
left join permission_doctor_role as pdr ON p.id=pdr.doctor_id and p.hospital_id=pdr.hospital_id and
pdr.delete_flag=1
left join permission_role as pr ON pdr.role_id = pr.id and pr.delete_flag=1
where where
<include refid="select_list_page"></include> <include refid="select_list_page"></include>
ORDER BY p.reg_time DESC ORDER BY p.reg_time DESC
...@@ -395,13 +388,8 @@ ...@@ -395,13 +388,8 @@
p.hospital_id as hospitalId, p.hospital_id as hospitalId,
p.mobile_phone as mobile, p.mobile_phone as mobile,
p.comment as comment, p.comment as comment,
pr.id as roleId,
pr.role_name as roleName,
p.password as password p.password as password
from p_doctor as p from p_doctor as p
left join permission_doctor_role as pdr
ON p.id = pdr.doctor_id and p.hospital_id = pdr.hospital_id and pdr.delete_flag = 1
left join permission_role as pr ON pdr.role_id = pr.id and pr.delete_flag = 1
where p.id = #{id, jdbcType=INTEGER} where p.id = #{id, jdbcType=INTEGER}
limit 1 limit 1
</select> </select>
......
...@@ -118,6 +118,17 @@ ...@@ -118,6 +118,17 @@
</if> </if>
</trim> </trim>
</insert> </insert>
<insert id="batchInsert" keyProperty="id" useGeneratedKeys="true" >
insert into permission_doctor_role (doctor_id, hospital_id,
role_id, delete_flag, created_id,
created_time, modified_id, modified_time)
values
<foreach collection="list" item="item" separator=",">
( #{item.doctorId,jdbcType=BIGINT}, #{item.hospitalId,jdbcType=BIGINT},
#{item.roleId,jdbcType=BIGINT}, #{item.deleteFlag,jdbcType=INTEGER}, #{item.createdId,jdbcType=BIGINT},
#{item.createdTime,jdbcType=TIMESTAMP}, #{item.modifiedId,jdbcType=BIGINT}, #{item.modifiedTime,jdbcType=TIMESTAMP})
</foreach>
</insert>
<update id="updateByPrimaryKeySelective" <update id="updateByPrimaryKeySelective"
parameterType="com.pica.cloud.account.account.server.entity.PermissionDoctorRole"> parameterType="com.pica.cloud.account.account.server.entity.PermissionDoctorRole">
update permission_doctor_role update permission_doctor_role
...@@ -201,11 +212,12 @@ ...@@ -201,11 +212,12 @@
order by pr.modified_time desc order by pr.modified_time desc
limit 1 limit 1
</select> </select>
<select id="selectByUserId" resultMap="BaseResultMap"> <select id="selectRoleByUserId" resultType="com.pica.cloud.account.account.server.resp.RoleDto">
select select pr.id as id,
<include refid="Base_Column_List"/> pr.role_name as name
from permission_doctor_role from permission_doctor_role as pdr
where doctor_id = #{id,jdbcType=BIGINT} and delete_flag = 1 left join permission_role as pr ON pdr.role_id = pr.id and pr.delete_flag = 1
limit 1; where pdr.doctor_id = #{id,jdbcType=BIGINT}
and pdr.delete_flag = 1
</select> </select>
</mapper> </mapper>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册