kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
@@ -36,8 +36,9 @@ public FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) { return null; } @Override public FileInfo baseUplaod(String file, String imgType) { public FileInfo baseUplaod(String file, String imgType, String hospitalId, String departmentId) { return null; } kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
@@ -39,7 +39,6 @@ private FileServerProperties fileProperties; /** * 阿里云文件存储client * 只有配置了aliyun.oss.access-key才可以使用 @@ -67,19 +66,18 @@ @Override protected void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception { String clientID= httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER); String folderByDate =DateUtil.formatDate(new Date()); String clientID = httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER); String folderByDate = DateUtil.formatDate(new Date()); int begin = file.getOriginalFilename().indexOf("."); int last = file.getOriginalFilename().length(); String fileType = file.getOriginalFilename().substring(begin, last); String fileName= UUID.randomUUID().toString().replaceAll("-","")+fileType; String fileName = UUID.randomUUID().toString().replaceAll("-", "") + fileType; String fileFolder = ""; if(clientID.equals("hospital")){//医院端平台, fileFolder=FilePath(fileInfo.getImgType(),folderByDate,null,null); fileUpLoadOss(fileInfo,fileFolder + fileName,file.getInputStream()); } else { fileUpLoadOss(fileInfo,fileProperties.getOss().getFolder() + folderByDate + "/" + fileName,file.getInputStream()); if (clientID.equals("hospital")) {//医院端平台, fileFolder = FilePath(fileInfo.getImgType(), folderByDate, null, null); fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream()); } else { fileUpLoadOss(fileInfo, fileProperties.getOss().getFolder() + folderByDate + "/" + fileName, file.getInputStream()); } } @@ -92,57 +90,66 @@ /** * 给OSS上上传文件 * @param fileInfo 返回对象 * * @param fileInfo 返回对象 * @param newFilePath 上传到的文件路径 * @param fileStream 要上传的文件流 */ public void fileUpLoadOss(FileInfo fileInfo,String newFilePath, InputStream fileStream) { public void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream) { ossClient.putObject(fileProperties.getOss().getBucketName(), newFilePath, fileStream); fileInfo.setUrl(fileProperties.getOss().getDomain() + newFilePath); } public OSSObject down(String url){ GetObjectRequest request=new GetObjectRequest(fileProperties.getOss().getBucketName(),url); public OSSObject down(String url) { GetObjectRequest request = new GetObjectRequest(fileProperties.getOss().getBucketName(), url); return ossClient.getObject(request); } /** * 组合sso上的文件路径 * * @param imgType * @return */ public String FilePath(String imgType,String folderByDate,String hospitalId,String departmentId) { public String FilePath(String imgType, String folderByDate, String hospitalId, String departmentId) { //返回的文件路径 String fileFolder=""; String fileFolder = ""; if (StringUtils.isNotBlank(imgType)) { // 光片需要按照根据医院ID,科室ID,日期进行OSS存储 if (imgType.toLowerCase().equals("xray")) { String hospitalID = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER); String depID = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER); if (org.apache.commons.lang3.StringUtils.isBlank(hospitalID)&& if (org.apache.commons.lang3.StringUtils.isBlank(hospitalID) && org.apache.commons.lang3.StringUtils.isBlank(depID)) { fileFolder = "Xray/" + hospitalID + "/" + depID + "/"+ folderByDate + "/"; }else { if (org.apache.commons.lang3.StringUtils.isBlank(hospitalId)&& fileFolder = "Xray/" + hospitalID + "/" + depID + "/" + folderByDate + "/"; } else { if (org.apache.commons.lang3.StringUtils.isBlank(hospitalId) && org.apache.commons.lang3.StringUtils.isBlank(departmentId)) { fileFolder = "Xray/" + hospitalId + "/" + departmentId + "/"+ folderByDate + "/"; }else { fileFolder = "Xray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/"; } else { fileFolder = "Xray/" + folderByDate + "/"; } } } else if (imgType.toLowerCase().equals("app")) { //移动端APP上传 if (org.apache.commons.lang3.StringUtils.isBlank(hospitalId) && org.apache.commons.lang3.StringUtils.isBlank(departmentId)) { fileFolder = "AppXray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/"; } else { fileFolder = "AppXray/" + folderByDate + "/"; } } // 医院Logo只保存在一个目录中 else if (imgType.toLowerCase().equals("logo")) { fileFolder = "HospitalLogo/"; }else if (imgType.toLowerCase().equals("doctor")) { } else if (imgType.toLowerCase().equals("doctor")) { fileFolder = "DoctorImage/"; } else { fileFolder = "OtherImage/"+ folderByDate + "/"; } else { fileFolder = "OtherImage/" + folderByDate + "/"; } } else { fileFolder = "OtherImage/"+ folderByDate + "/"; fileFolder = "OtherImage/" + folderByDate + "/"; } return fileFolder; } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-api/src/main/java/com/kidgrow/usercenter/vo/SysDoctorDto.java
@@ -1,12 +1,13 @@ package com.kidgrow.usercenter.vo; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.List; @Data public class SysDoctorDto extends SysDoctorVo { //private String username; private String password; @JsonFormat(shape = JsonFormat.Shape.STRING) private List<Long> roles; } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/ISysUserService.java
@@ -173,4 +173,11 @@ * @return */ Long HospitalIdByDepartmentId(Long departmentId); /** * 删除用户 不删除关系表 ,role_user 表 和 用户组织 * * @param id */ boolean deleteNoContact(Long id); } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysDoctorServiceImpl.java
@@ -52,6 +52,8 @@ @Autowired private ISysUserService iSysUserService; @Autowired private SysUserMapper sysUserMapper; @Autowired private PasswordEncoder passwordEncoder; @Autowired private ISysUserOrgService sysUserOrgService; @@ -201,7 +203,7 @@ if (sysDoctor.getId() == null) { Long sysUserId = null; //保存部门信息 ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment); ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,null); if(resultBody.getCode()==0){ sysUserId=(Long)resultBody.getData(); }else { @@ -221,6 +223,12 @@ //更新 SysDoctor getOne = baseMapper.selectById(sysDoctor.getId()); if (getOne.getDoctorType() != 2 && sysDoctor.getDoctorType() != 2) { /** * 管理员只有一个 */ if (isSupperRole(sysDoctor)) { return ResultBody.failed("该部门已经有管理员"); } Map<String, Object> columnMap = new HashMap<>(); columnMap.put("user_id", sysDoctor.getUserId()); boolean b = sysUserOrgService.removeByMap(columnMap); @@ -244,6 +252,16 @@ redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString()); } redisUtils.hset(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString(), sysUserOrg); //角色更换 QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("user_id",getOne.getUserId()); int delete = sysUserRoleMapper.delete(queryWrapper); sysDoctor.getRoles().forEach(e -> { SysRoleUser sysRoleUser = new SysRoleUser(); sysRoleUser.setRoleId(e); sysRoleUser.setUserId(getOne.getUserId()); int insert = sysUserRoleMapper.insert(sysRoleUser); }); } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() != 2) { /** * 管理员只有一个 @@ -251,7 +269,7 @@ if (isSupperRole(sysDoctor)) { return ResultBody.failed("该部门已经有管理员"); } ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment); ResultBody resultBody = this.saveFenjiekou(sysDoctor, id, sysHospital, sysDepartment,getOne); Long sysUserId = null; if(resultBody.getCode()==0){ sysUserId=(Long)resultBody.getData(); @@ -277,6 +295,11 @@ redisUtils.hdel(RedisConstant.USER_ORGANIZATION, getOne.getUserId().toString()); sysDoctor.setUserId(null); baseMapper.updateById(sysDoctor); //将用户删除 SysUser sysUser = new SysUser(); sysUser.setId(getOne.getUserId()); sysUser.setDel(true); sysUserMapper.deleteById(sysUser); } else if (getOne.getDoctorType() == 2 && sysDoctor.getDoctorType() == 2) { baseMapper.updateById(sysDoctor); } @@ -304,7 +327,7 @@ wrapper.in("user_id", collect); List<SysRoleUser> list = this.sysUserRoleMapper.selectList(wrapper); for (SysRoleUser sysRoleUser : list) { if (sysRoleUser.getRoleId() == CommonConstant.HOSPITAL_ADMIN_ID) { if (sysRoleUser.getRoleId().equals( CommonConstant.HOSPITAL_ADMIN_ID)) { flag = true; } } @@ -314,7 +337,7 @@ } //保存的分接口 public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment) { public ResultBody saveFenjiekou(SysDoctorDto sysDoctor, String id, SysHospital sysHospital, SysDepartment sysDepartment,SysDoctor getOne) { Long sysUserId = null; /** * 管理员只有一个 @@ -323,8 +346,8 @@ return ResultBody.failed("该部门已经有管理员"); } if (sysDoctor.getDoctorType() != 2) { SysUser sysUser=new SysUser(); //保存 SysUser sysUser = new SysUser(); sysUser.setUsername(sysDoctor.getUsername()); sysUser.setPassword(passwordEncoder.encode(sysDoctor.getPassword())); sysUser.setNickname(sysDoctor.getDoctorName()); @@ -338,7 +361,33 @@ sysUser.setCreateUserId(byId.getId()); sysUser.setCreateUserName(byId.getUsername()); } iSysUserService.save(sysUser); //做判断是否注册过手机号; QueryWrapper queryWrapper=new QueryWrapper(); queryWrapper.eq("username",sysDoctor.getDoctorTel()); queryWrapper.eq("enabled",1); queryWrapper.eq("is_del",0); Integer integer = sysUserMapper.selectCount(queryWrapper); if(integer>0){ return ResultBody.failed("该手机号已经注册"); } if (getOne!=null&&getOne.getUserId()!=null) { Map<String,Object> map=new HashMap<>(); map.put("id",getOne.getUserId()); map.put("enabled",1); map.put("is_del",1); List<SysUser> sysUsers = sysUserMapper.selectByMap(map); if(sysUsers!=null&&!sysUsers.isEmpty()){ sysUser.setId(sysUsers.get(sysUsers.size()-1).getId()); } } if(sysUser.getId()!=null){ //更新 sysUser.setDel(false); iSysUserService.updateById(sysUser); }else { //保存 iSysUserService.save(sysUser); } sysUserId = sysUser.getId(); //保存一个角色 sysDoctor.getRoles().forEach(e -> { @@ -384,7 +433,7 @@ map.put("user_id", adminId); map.put("is_admin_user",1); map.put("is_del",0); map.put("enable",1); map.put("enabled",1); List<SysDoctor> sysDoctors = baseMapper.selectByMap(map); if (sysDoctors == null || sysDoctors.size() <= 0) { return ResultBody.failed("当前操作用户不是管理员"); kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.kidgrow.common.constant.CommonConstant; import com.kidgrow.common.constant.DictionariesConstants; @@ -404,7 +405,7 @@ organizationService.deleteByUserId(id); //删除医生数据 Map<String, Object> params = new HashMap<>(); params.put("userId", id); params.put("user_id", id); sysDoctorMapper.deleteByMap(params); //删除用户数据 return baseMapper.deleteById(id) > 0; @@ -463,6 +464,8 @@ @Override public ResultBody findCountByMap(Map<String, Object> map) { map.put("enable",1); map.put("is_del",0); Integer integer = baseMapper.selectCountByMap(map); return ResultBody.ok().data(integer); } @@ -1106,4 +1109,20 @@ String encode = passwordEncoder.encode(password); return ResultBody.ok().data(encode); } @Override public boolean deleteNoContact(Long id) { //删除医生数据 QueryWrapper<SysDoctor> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", id); List<SysDoctor> sysDoctors = sysDoctorMapper.selectList(queryWrapper); if(!sysDoctors.isEmpty()){ sysDoctors.forEach(e->{ e.setIsDel(true); sysDoctorMapper.updateById(e); }); } //删除用户数据 return baseMapper.deleteById(id) > 0; } } kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml
@@ -171,7 +171,7 @@ LEFT JOIN sys_user us ON dc.user_id = us.id LEFT JOIN sys_role_user roleuser ON roleuser.user_id=us.id where dc.is_del=0 and dc.enabled=1 and dc.hospital_id=1 and dc.department_id=1 and us.enabled=1 where dc.is_del=0 and dc.enabled=1 and us.enabled=1 and dc.hospital_id=#{hospitalId} and dc.department_id=#{departmentId} and (role_id=#{roleId1} or role_id=#{roleId2}) </select> <select id="hospitalDoctorListAndDel" parameterType="long" resultType="com.kidgrow.usercenter.vo.HospitalDoctorListVo"> @@ -197,7 +197,7 @@ LEFT JOIN sys_user us ON dc.user_id = us.id LEFT JOIN sys_role_user roleuser ON roleuser.user_id=us.id where dc.enabled=1 and dc.hospital_id=1 and dc.department_id=1 and us.enabled=1 where dc.enabled=1 and us.enabled=1 and dc.hospital_id=#{hospitalId} and dc.department_id=#{departmentId} and (role_id=#{roleId1} or role_id=#{roleId2}) </select> </mapper> kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserController.java
@@ -330,7 +330,20 @@ boolean v = appUserService.delUser(id); return ResultBody.ok().msg("删除成功").data(v); } /** * 删除用户 不删除关系表 ,role_user 表 和 用户组织 * * @param id */ @DeleteMapping(value = "/users/deleteNoContact/{id}") //@AuditLog(operation = "'删除用户:' + #id") public ResultBody deleteNoContact(@PathVariable Long id) { if (checkAdmin(id)) { return ResultBody.failed(ADMIN_CHANGE_MSG); } boolean v = appUserService.deleteNoContact(id); return ResultBody.ok().msg("删除成功").data(v); } /** * 新增or更新 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/doctor_form.html
@@ -232,8 +232,7 @@ arr: roleSelectData }); // 回显user数据 var doctor = admin.getTempData('t_doctor'); if (doctor!=null&&doctor.roles) { if (doctor != null && doctor.roles) { formSelects.value('roleId', doctor.roles); } @@ -281,7 +280,6 @@ // 表单提交事件 form.on('submit(user-form-submit)', function (data) { layer.load(2); data.field.hospitalId = $("#hospitalId").val(); if (data.field.roleId != null && data.field.roleId != "") { data.field.roles = data.field.roleId.split(','); @@ -292,20 +290,62 @@ data.field.password = ""; data.field.passwordSure = ""; } else { if (data.field.roles.length == 0) { if (data.field.roles == null || data.field.roles.length == 0) { layer.msg("请选择角色"); return return false; } if (data.field.roles.includes(guanliyuan_role)) { data.field.isAdminUser = true; } else { data.field.isAdminUser = false; } var doctor = admin.getTempData('t_doctor'); //判断只有输入密码的时候进行密码判断 if (doctor != null) { if (doctor.doctorType == 2 && doctorType != 2) { if (data.field.username == null || data.field.username.trim() == "") { layer.msg("请输入手机号"); return false; } if (data.field.password == null || data.field.password.trim() == "") { layer.msg("请输入登录密码"); return false; } if (data.field.passwordSure == null || data.field.passwordSure.trim() == "") { layer.msg("请输入确认密码"); return false; } else { if (data.field.password != data.field.passwordSure) { layer.msg("两次密码不一致,请重新输入"); return false; } } } } else { if (data.field.username == null || data.field.username.trim() == "") { layer.msg("请输入手机号"); return false; } if (data.field.password == null || data.field.password.trim() == "") { layer.msg("请输入登录密码"); return false; } if (data.field.passwordSure == null || data.field.passwordSure.trim() == "") { layer.msg("请输入确认密码"); return false; } else { if (data.field.password != data.field.passwordSure) { layer.msg("两次密码不一致,请重新输入"); return false; } } } } // guanliyuan_role // data.field.hospitalId = ""+data.field.hospitalId; data.field.roleId = null; data.field.roles.forEach(element => { element = "" + element }); layer.load(2); admin.req('api-user/sysdoctor', JSON.stringify(data.field), function (data) { layer.closeAll('loading'); if (data.code == 0) { @@ -392,7 +432,7 @@ } //获取销售代表 var getXiaoShouDaiBiao = function () { admin.req('api-user/users/getAppointUser', {type:0}, function (data) { admin.req('api-user/users/getAppointUser', { type: 0 }, function (data) { layer.closeAll('loading'); if (0 === data.code) { user = data.data; @@ -423,6 +463,7 @@ //获取角色 get_role(); var upload = layui.upload; $("#roleId_div").hide() //执行实例 upload.render({ elem: '#phonto', @@ -455,10 +496,6 @@ //将密码置空 $("#password").val(""); form.render(); $("#username").blur(function () { username_is_usered("username"); }) //医生类型的选择事件 // form.on('select(doctorType)', function (data) { // // console.log("eeeeeeeeeeeeeeeee"); @@ -474,13 +511,21 @@ // } // }) }; $("#username").blur(function () { if (!validatorTel(doctorTel_add)) { layer.msg("请输入正确的手机号"); } else { username_is_usered("username"); } }) $("#doctorTel-add").blur(function () { $("#username").val($("#doctorTel-add").val()) var doctorTel_add = $("#doctorTel-add").val(); if (!validatorTel(doctorTel_add)) { layer.msg("请输入正确的手机号"); } else { username_is_usered("username"); } username_is_usered("username"); }) //自动完成-医院名称 autocomplete.render({ @@ -506,7 +551,7 @@ $("#password_div").show(); $("#passwordSure_div").show(); $("#roleId_div").show() }else{ } else { $(".account").hide(); $("#roleId_div").hide() }