diff --git a/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/Doctor.java b/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/Doctor.java index f97c181..918da40 100644 --- a/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/Doctor.java +++ b/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/Doctor.java @@ -1,10 +1,11 @@ package doctor.system.api.domain; import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; - +@Data public class Doctor { private Integer id; private Integer departmentId; @@ -34,115 +35,4 @@ public class Doctor { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date createTime; - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Integer getDepartmentId() { - return departmentId; - } - - public void setDepartmentId(Integer departmentId) { - this.departmentId = departmentId; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public Integer getReviewStatus() { - return reviewStatus; - } - - public void setReviewStatus(Integer reviewStatus) { - this.reviewStatus = reviewStatus; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - public String getPwd() { - return pwd; - } - - public void setPwd(String pwd) { - this.pwd = pwd; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getImagePic() { - return imagePic; - } - - public void setImagePic(String imagePic) { - this.imagePic = imagePic; - } - - public String getJobTitle() { - return jobTitle; - } - - public void setJobTitle(String jobTitle) { - this.jobTitle = jobTitle; - } - - public String getInauguralHospital() { - return inauguralHospital; - } - - public void setInauguralHospital(String inauguralHospital) { - this.inauguralHospital = inauguralHospital; - } - - public String getPersonalProfile() { - return personalProfile; - } - - public void setPersonalProfile(String personalProfile) { - this.personalProfile = personalProfile; - } - - public String getGoodField() { - return goodField; - } - - public void setGoodField(String goodField) { - this.goodField = goodField; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } } diff --git a/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/User.java b/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/User.java index 95babc1..dfe6f57 100644 --- a/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/User.java +++ b/doctor-api/doctor-api-system/src/main/java/doctor/system/api/domain/User.java @@ -1,15 +1,11 @@ package doctor.system.api.domain; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; -/** - * @ClassName : User - * @Description : 用户表 - * @Author : FJJ - * @Date: 2024-01-10 20:46 - */ +@Data public class User { private Integer id; private String phone; @@ -24,117 +20,6 @@ public class User { private Integer weight; private String invitationCode; private Date updateTime; - private long createTime; + private Date createTime; - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - public String getPwd() { - return pwd; - } - - public void setPwd(String pwd) { - this.pwd = pwd; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getNickName() { - return nickName; - } - - public void setNickName(String nickName) { - this.nickName = nickName; - } - - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public String getHeadPic() { - return headPic; - } - - public void setHeadPic(String headPic) { - this.headPic = headPic; - } - - public Integer getSex() { - return sex; - } - - public void setSex(Integer sex) { - this.sex = sex; - } - - public Integer getAge() { - return age; - } - - public void setAge(Integer age) { - this.age = age; - } - - public Integer getHeight() { - return height; - } - - public void setHeight(Integer height) { - this.height = height; - } - - public Integer getWeight() { - return weight; - } - - public void setWeight(Integer weight) { - this.weight = weight; - } - - public String getInvitationCode() { - return invitationCode; - } - - public void setInvitationCode(String invitationCode) { - this.invitationCode = invitationCode; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public long getCreateTime() { - return createTime; - } - - public void setCreateTime(long createTime) { - this.createTime = createTime; - } } diff --git a/doctor-auth/src/main/java/doctor/auth/service/HealthDoctorService.java b/doctor-auth/src/main/java/doctor/auth/service/HealthDoctorService.java index 7d65188..c542545 100644 --- a/doctor-auth/src/main/java/doctor/auth/service/HealthDoctorService.java +++ b/doctor-auth/src/main/java/doctor/auth/service/HealthDoctorService.java @@ -30,6 +30,9 @@ public class HealthDoctorService { } catch (Exception e) { throw new RuntimeException(e); } + if (data==null){ + return null; + } if (s.equals(data.getDoctor().getPwd())){ Map token = tokenService.createToken(data); String accessToken = (String) token.get("access_token"); diff --git a/doctor-auth/src/main/java/doctor/auth/service/HealthUserService.java b/doctor-auth/src/main/java/doctor/auth/service/HealthUserService.java index f0bab6b..8ebd6f7 100644 --- a/doctor-auth/src/main/java/doctor/auth/service/HealthUserService.java +++ b/doctor-auth/src/main/java/doctor/auth/service/HealthUserService.java @@ -30,6 +30,9 @@ public class HealthUserService { } catch (Exception e) { throw new RuntimeException(e); } + if (data==null){ + return null; + } if (s.equals(data.getUser().getPwd())){ Map token = tokenService.createToken(data); String accessToken = (String) token.get("access_token"); diff --git a/doctor-modules/doctor-health/pom.xml b/doctor-modules/doctor-health/pom.xml index e89da6a..bad8103 100644 --- a/doctor-modules/doctor-health/pom.xml +++ b/doctor-modules/doctor-health/pom.xml @@ -14,6 +14,13 @@ + + + com.aliyun.oss + aliyun-sdk-oss + 3.10.2 + + com.alibaba.cloud diff --git a/doctor-modules/doctor-health/src/main/java/doctor/controller/HealthJobTitleController.java b/doctor-modules/doctor-health/src/main/java/doctor/controller/HealthJobTitleController.java index 68e80b4..8053894 100644 --- a/doctor-modules/doctor-health/src/main/java/doctor/controller/HealthJobTitleController.java +++ b/doctor-modules/doctor-health/src/main/java/doctor/controller/HealthJobTitleController.java @@ -4,10 +4,13 @@ import doctor.common.core.domain.HealthR; import doctor.domain.dto.ApplyJoinDto; import doctor.domain.entity.Banners; import doctor.domain.entity.DoctorJobTitleEntity; +import doctor.domain.vo.DoctorVo; +import doctor.domain.vo.FindImagePicVo; import doctor.service.BannersService; import doctor.service.HealthJobTitleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -42,4 +45,22 @@ public class HealthJobTitleController { HealthR healthR= healthJobTitleService.applyJoin(applyJoinDto); return HealthR.ok(healthR); } + + @GetMapping("/findDoctorById") + public HealthR findDoctorById(@RequestHeader Integer doctorId, + @RequestHeader String sessionId) { + return HealthR.ok(healthJobTitleService.findDoctorById(doctorId)); + } + @GetMapping("/findSystemImagePic") + public HealthR> findSystemImagePic() { + return HealthR.ok(healthJobTitleService.findSystemImagePic()); + } + + @PostMapping("/uploadImagePic") + public HealthR uploadImagePic(@RequestParam("imagePic") MultipartFile imagePic, + @RequestHeader String sessionId, + @RequestHeader Integer doctorId) { + return HealthR.ok(healthJobTitleService.uploadImagePic(imagePic,doctorId,sessionId)); + } + } diff --git a/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/DoctorVo.java b/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/DoctorVo.java new file mode 100644 index 0000000..6d47825 --- /dev/null +++ b/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/DoctorVo.java @@ -0,0 +1,16 @@ +package doctor.domain.vo; + +import lombok.Data; + +@Data +public class DoctorVo { + private Integer departmentId; + private String departmentName; + private String goodField; + private Integer id; + private String imagePic; + private String inauguralHospital; + private String jobTitle; + private String name; + private String personalProfile; +} diff --git a/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/FindImagePicVo.java b/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/FindImagePicVo.java new file mode 100644 index 0000000..70a8291 --- /dev/null +++ b/doctor-modules/doctor-health/src/main/java/doctor/domain/vo/FindImagePicVo.java @@ -0,0 +1,8 @@ +package doctor.domain.vo; + +import lombok.Data; + +@Data +public class FindImagePicVo { + private String imagePic; +} diff --git a/doctor-modules/doctor-health/src/main/java/doctor/mapper/HealthJobTitleMapper.java b/doctor-modules/doctor-health/src/main/java/doctor/mapper/HealthJobTitleMapper.java index ed82146..c20b840 100644 --- a/doctor-modules/doctor-health/src/main/java/doctor/mapper/HealthJobTitleMapper.java +++ b/doctor-modules/doctor-health/src/main/java/doctor/mapper/HealthJobTitleMapper.java @@ -1,8 +1,10 @@ package doctor.mapper; import doctor.domain.entity.DoctorJobTitleEntity; +import doctor.system.api.domain.Department; import doctor.system.api.domain.Doctor; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -11,4 +13,14 @@ public interface HealthJobTitleMapper { List findJobTitleList(); void insertDoctor(Doctor doctor); + + Doctor findDoctorById(Integer id); + + Department findDepartmentById(Integer departmentId); + + DoctorJobTitleEntity findDoctorJobTitleById(Integer id); + + List findDoctorImgPic(); + + void updDoctorImgPicBuyId(@Param("doctorId") Integer doctorId, @Param("s") String s); } diff --git a/doctor-modules/doctor-health/src/main/java/doctor/service/HealthJobTitleService.java b/doctor-modules/doctor-health/src/main/java/doctor/service/HealthJobTitleService.java index 106aa37..2e4a985 100644 --- a/doctor-modules/doctor-health/src/main/java/doctor/service/HealthJobTitleService.java +++ b/doctor-modules/doctor-health/src/main/java/doctor/service/HealthJobTitleService.java @@ -3,6 +3,10 @@ package doctor.service; import doctor.common.core.domain.HealthR; import doctor.domain.dto.ApplyJoinDto; import doctor.domain.entity.DoctorJobTitleEntity; +import doctor.domain.vo.DoctorVo; +import doctor.domain.vo.FindImagePicVo; +import io.swagger.models.auth.In; +import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -12,4 +16,10 @@ public interface HealthJobTitleService { HealthR sendEmailCode(String email); HealthR applyJoin(ApplyJoinDto applyJoinDto); + + DoctorVo findDoctorById(Integer doctorId); + + List findSystemImagePic(); + + HealthR uploadImagePic(MultipartFile imagePic, Integer doctorId, String sessionId); } diff --git a/doctor-modules/doctor-health/src/main/java/doctor/service/impl/HealthJobTitleServiceImpl.java b/doctor-modules/doctor-health/src/main/java/doctor/service/impl/HealthJobTitleServiceImpl.java index 3e98162..b2b1a16 100644 --- a/doctor-modules/doctor-health/src/main/java/doctor/service/impl/HealthJobTitleServiceImpl.java +++ b/doctor-modules/doctor-health/src/main/java/doctor/service/impl/HealthJobTitleServiceImpl.java @@ -1,11 +1,17 @@ package doctor.service.impl; import doctor.common.core.domain.HealthR; +import doctor.common.security.service.TokenService; import doctor.domain.dto.ApplyJoinDto; import doctor.domain.entity.DoctorJobTitleEntity; +import doctor.domain.vo.DoctorVo; +import doctor.domain.vo.FindImagePicVo; import doctor.mapper.HealthJobTitleMapper; import doctor.service.HealthJobTitleService; +import doctor.system.api.domain.Department; import doctor.system.api.domain.Doctor; +import doctor.system.api.model.LoginUser; +import doctor.util.OssUtil; import doctor.util.RSAUtils; import doctor.util.RsaKey; import doctor.util.SendEmail; @@ -14,8 +20,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; @@ -27,6 +35,8 @@ public class HealthJobTitleServiceImpl implements HealthJobTitleService { private HealthJobTitleMapper healthJobTitleMapper; @Autowired private SendEmail sendEmail; + @Autowired + private TokenService tokenService; @Resource private RedisTemplate redisTemplate; @@ -80,8 +90,44 @@ public class HealthJobTitleServiceImpl implements HealthJobTitleService { Doctor doctor = new Doctor(); BeanUtils.copyProperties(applyJoinDto,doctor); doctor.setCreateTime(new Date()); + Integer jobTitleId = applyJoinDto.getJobTitleId(); + DoctorJobTitleEntity doctorJobTitleEntity=healthJobTitleMapper.findDoctorJobTitleById(jobTitleId); + doctor.setJobTitle(doctorJobTitleEntity.getJobTitle()); healthJobTitleMapper.insertDoctor(doctor); redisTemplate.delete(applyJoinDto.getEmail()); return HealthR.ok(); } + + @Override + public DoctorVo findDoctorById(Integer doctorId) { + DoctorVo doctorVo = new DoctorVo(); + Doctor doctor=healthJobTitleMapper.findDoctorById(doctorId); + Department department=healthJobTitleMapper.findDepartmentById(doctor.getDepartmentId()); + BeanUtils.copyProperties(doctor,doctorVo); + BeanUtils.copyProperties(department,doctorVo); + return doctorVo; + } + + @Override + public List findSystemImagePic() { + ArrayList findImagePicVos = new ArrayList<>(); + FindImagePicVo findImagePicVo = new FindImagePicVo(); + List imgPics= healthJobTitleMapper.findDoctorImgPic(); + for (String imgPic : imgPics) { + findImagePicVo.setImagePic(imgPic); + findImagePicVos.add(findImagePicVo); + } + return findImagePicVos; + } + + @Override + public HealthR uploadImagePic(MultipartFile imagePic,Integer doctorId,String sessionId) { + String s = OssUtil.uploadMultipartFile(imagePic); + healthJobTitleMapper.updDoctorImgPicBuyId(doctorId,s); + LoginUser loginUser = tokenService.getLoginUser(sessionId); + Doctor doctor = loginUser.getDoctor(); + doctor.setImagePic(s); + tokenService.createToken(loginUser); + return HealthR.ok(s); + } } diff --git a/doctor-modules/doctor-health/src/main/java/doctor/util/OssUtil.java b/doctor-modules/doctor-health/src/main/java/doctor/util/OssUtil.java new file mode 100644 index 0000000..20f9275 --- /dev/null +++ b/doctor-modules/doctor-health/src/main/java/doctor/util/OssUtil.java @@ -0,0 +1,154 @@ +package doctor.util; + + + +import com.aliyun.oss.OSS; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.GetObjectRequest; +import com.aliyun.oss.model.PutObjectRequest; +import lombok.extern.log4j.Log4j2; +import org.springframework.web.multipart.MultipartFile; +import java.io.*; +import java.time.LocalDateTime; +import java.util.UUID; + +/** + * Oss服务调用 + */ +@Log4j2 +public class OssUtil { + + /** + * Endpoint 存储对象概述 阿里云主账号AccessKey,accessKeySecret拥有所有API的访问权限 访问路径前缀 存储对象概述 + */ + private static String endPoint = "oss-cn-shanghai.aliyuncs.com"; + private static String accessKeyId = "LTAI5tLE4XbyvvbuT7D2stCk"; + private static String accessKeySecret = "W7ZeT4dMrMPP0c8BBwcyIPnhe3P4E8"; + private static String accessPre = "https://lyb1314.oss-cn-shanghai.aliyuncs.com/"; + + /** + * bucket名称 + * @return + */ + private static String bucketName = "lyb1314"; + + private static OSS ossClient ; + + static { + ossClient = new OSSClientBuilder().build( + endPoint, + accessKeyId, + accessKeySecret); + log.info("oss服务连接成功!"); + } + + /** + * 默认路径上传本地文件 + * @param filePath + */ + public static String uploadFile(String filePath){ + return uploadFileForBucket(bucketName,getOssFilePath(filePath) ,filePath); + } + + /** + * 默认路径上传multipartFile文件 + * @param multipartFile + */ + public static String uploadMultipartFile(MultipartFile multipartFile) { + return uploadMultipartFile(bucketName,getOssFilePath(multipartFile.getOriginalFilename()),multipartFile); + } + /** + * 上传 multipartFile 类型文件 + * @param bucketName + * @param ossPath + * @param multipartFile + */ + public static String uploadMultipartFile(String bucketName , String ossPath , MultipartFile multipartFile){ + InputStream inputStream = null; + try { + inputStream = multipartFile.getInputStream(); + } catch (IOException e) { + e.printStackTrace(); + } + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre+ossPath; + } + + /** + * 使用File上传PutObject上传文件 ** 程序默认使用次方法上传 + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileForBucket(String bucketName , String ossPath , String filePath) { + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ossPath, new File(filePath)); + + // 上传 + ossClient.putObject(putObjectRequest); + return accessPre+ossPath; + } + + /** + * 使用文件流上传到指定的bucket实例 + * @param bucketName 实例名称 + * @param ossPath oss存储路径 + * @param filePath 本地文件路径 + */ + public static String uploadFileInputStreamForBucket(String bucketName , String ossPath , String filePath){ + + // 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。 + InputStream inputStream = null; + try { + inputStream = new FileInputStream(filePath); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + // 填写Bucket名称和Object完整路径。Object完整路径中不能包含Bucket名称。 + uploadFileInputStreamForBucket(bucketName, ossPath, inputStream); + return accessPre+ossPath; + } + + public static void uploadFileInputStreamForBucket(String bucketName , String ossPath , InputStream inputStream ){ + ossClient.putObject(bucketName, ossPath, inputStream); + } + + /** + * 下载 + * @param ossFilePath + * @param filePath + */ + public static void downloadFile(String ossFilePath , String filePath ){ + downloadFileForBucket(bucketName , ossFilePath , filePath); + } + /** + * 下载 + * @param bucketName 实例名称 + * @param ossFilePath oss存储路径 + * @param filePath 本地文件路径 + */ + public static void downloadFileForBucket(String bucketName , String ossFilePath , String filePath ){ + ossClient.getObject(new GetObjectRequest(bucketName, ossFilePath), new File(filePath)); + } + + /** + * + * @return + */ + public static String getOssDefaultPath(){ + LocalDateTime now = LocalDateTime.now(); + String url = + now.getYear()+"/"+ + now.getMonth()+"/"+ + now.getDayOfMonth()+"/"+ + now.getHour()+"/"+ + now.getMinute()+"/"; + return url; + } + + public static String getOssFilePath(String filePath){ + String fileSuf = filePath.substring(filePath.indexOf(".") + 1); + return getOssDefaultPath() + UUID.randomUUID().toString() + "." + fileSuf; + } + +} diff --git a/doctor-modules/doctor-health/src/main/resources/mapper/doctor/HealthJobTitleMapper.xml b/doctor-modules/doctor-health/src/main/resources/mapper/doctor/HealthJobTitleMapper.xml index 61245b8..8401276 100644 --- a/doctor-modules/doctor-health/src/main/resources/mapper/doctor/HealthJobTitleMapper.xml +++ b/doctor-modules/doctor-health/src/main/resources/mapper/doctor/HealthJobTitleMapper.xml @@ -8,9 +8,24 @@ VALUES (0,#{departmentId},#{email},#{userName},#{reviewStatus},#{phone},#{pwd},#{name},#{imagePic},#{jobTitle},#{inauguralHospital},#{personalProfile},#{goodField},#{createTime}); + + update doctor set image_pic=#{s} where id=#{doctorId} + + + + +