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

人员角色支持多选配置

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