From 6814bd7b6e2f86990f9dc9469850f8d3517033ed Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 12 Aug 2025 18:08:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC11111?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Hospital/GetHospitalByUuidResponse.java | 3 + .../admin/extend/app/Hospital/Hospital.java | 46 +++++++++++ .../service/BasicHospitalService.java | 79 +++++++++++++++++++ .../dao/CaseClinicalArticleDao.java | 10 +-- .../domain/vo/AppDoctorVO.java | 6 ++ .../service/CaseClinicalDoctorService.java | 77 +++--------------- .../dao/CaseClinicalVideoDao.java | 15 ++-- .../UserCommentClinicalVideoService.java | 4 +- 8 files changed, 161 insertions(+), 79 deletions(-) diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/GetHospitalByUuidResponse.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/GetHospitalByUuidResponse.java index e691e3e..d34579c 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/GetHospitalByUuidResponse.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/GetHospitalByUuidResponse.java @@ -42,6 +42,9 @@ public class GetHospitalByUuidResponse /** 城市 */ private String city_name; + /** 区县 */ + private String county_name; + /** 医生数量 */ private Integer expert_num; } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/Hospital.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/Hospital.java index 67da9d7..42f325c 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/Hospital.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/app/Hospital/Hospital.java @@ -65,4 +65,50 @@ public class Hospital extends Base { return result; } } + + // 根据医院名称获取医院数据 + public GetHospitalByUuidResponse getHospitalByName(String hospitalIden) throws BusinessException { + String timestamp = String.valueOf(System.currentTimeMillis() / 1000); + + // 处理参数 + Map requestData = new HashMap<>(); + requestData.put("hospital_uuid", hospitalIden); + requestData.put("platform", appConfig.getPlatform()); + requestData.put("timestamp", timestamp); + + // 生成签名 + String sign = genSignature(requestData,appConfig.getSecretKey()); + + String url = appConfig.getApiUrl() + "/expert-api/getHospitalByUuid"; + String jsonBody = JSONUtil.toJsonStr(requestData); + log.info("获取app数据参数:{}",jsonBody); + + try(HttpResponse response = HttpRequest.post(url) + .header("Content-Type", "application/json") + .header("sign", sign) + .body(jsonBody) + .execute()){ + + if (response.getStatus() != 200) { + throw new BusinessException("失败"); + } + + // 反序列化 JSON + GetHospitalByUuidResponse result = JSONUtil.toBean(response.body(), GetHospitalByUuidResponse.class); + log.info("获取app数据返回:{}",result); + if (result.getCode() != 200){ + if (!Objects.equals(result.getMsg(), "")){ + throw new BusinessException(result.getMsg()); + }else{ + throw new BusinessException("失败"); + } + } + + if (result.getData() == null){ + throw new BusinessException("失败"); + } + + return result; + } + } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/basicHospital/service/BasicHospitalService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/basicHospital/service/BasicHospitalService.java index 7c34424..c89930a 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/basicHospital/service/BasicHospitalService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/basicHospital/service/BasicHospitalService.java @@ -1,11 +1,16 @@ package net.lab1024.sa.admin.module.business.basicHospital.service; import java.util.List; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import net.lab1024.sa.admin.extend.app.Hospital.GetHospitalByUuidResponse; +import net.lab1024.sa.admin.extend.app.Hospital.Hospital; import net.lab1024.sa.admin.module.business.basicHospital.dao.BasicHospitalDao; import net.lab1024.sa.admin.module.business.basicHospital.domain.entity.BasicHospitalEntity; import net.lab1024.sa.admin.module.business.basicHospital.domain.form.BasicHospitalQueryForm; import net.lab1024.sa.admin.module.business.basicHospital.domain.form.BasicHospitalQueryListForm; import net.lab1024.sa.admin.module.business.basicHospital.domain.vo.BasicHospitalVO; +import net.lab1024.sa.base.common.exception.BusinessException; import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.common.domain.ResponseDTO; @@ -16,6 +21,8 @@ import org.springframework.stereotype.Service; import jakarta.annotation.Resource; +import static com.baomidou.mybatisplus.extension.toolkit.Db.save; + /** * 基础数据-医院 Service * @@ -30,6 +37,9 @@ public class BasicHospitalService { @Resource private BasicHospitalDao basicHospitalDao; + @Resource + private Hospital hospital; + /** * 分页查询 */ @@ -43,6 +53,75 @@ public class BasicHospitalService { * 列表查询 */ public List queryList(BasicHospitalQueryListForm queryForm) { + // 获取app医院名称 + try { + GetAppHospitalByName(queryForm.getKeywords()); + } catch (Exception e) { + // 不处理 + } + return basicHospitalDao.queryList(queryForm); } + + /** + * 获取app医院数据 + * @param hospitalIden app医院唯一标识 + * @return BasicHospitalEntity + */ + public BasicHospitalEntity GetAppHospital(String hospitalIden) throws BusinessException { + // 查询数据库医院信息 + LambdaQueryWrapper basicHospitalWrapper = new LambdaQueryWrapper<>(); + basicHospitalWrapper.eq(BasicHospitalEntity::getHospitalIden, hospitalIden); + BasicHospitalEntity basicHospital = basicHospitalDao.selectOne(basicHospitalWrapper); + if (basicHospital == null){ + // 请求接口获取数据 + GetHospitalByUuidResponse result = hospital.getHospitalByUuid(hospitalIden); + GetHospitalByUuidResponse.GetHospitalByUuidData data = result.getData(); + + // 构造 UserEntity 对象 + basicHospital = new BasicHospitalEntity(); + basicHospital.setHospitalIden(hospitalIden); + basicHospital.setHospitalName(data.getName()); + basicHospital.setSource(2); + basicHospital.setHospitalLevel(data.getLevel()); + basicHospital.setDoctorNumber(data.getExpert_num()); + basicHospital.setProvince(data.getProv_name()); + basicHospital.setCity(data.getCity_name()); + basicHospital.setCounty(data.getCounty_name()); + save(basicHospital); + } + + return basicHospital; + } + + /** + * 获取app医院数据 -名称搜索 + * @param hospitalName app医院名称 + * @return BasicHospitalEntity + */ + public BasicHospitalEntity GetAppHospitalByName(String hospitalName) throws BusinessException { + // 查询数据库医院信息 + LambdaQueryWrapper basicHospitalWrapper = new LambdaQueryWrapper<>(); + basicHospitalWrapper.eq(BasicHospitalEntity::getHospitalName, hospitalName); + BasicHospitalEntity basicHospital = basicHospitalDao.selectOne(basicHospitalWrapper); + if (basicHospital == null){ + // 请求接口获取数据 + GetHospitalByUuidResponse result = hospital.getHospitalByName(hospitalName); + GetHospitalByUuidResponse.GetHospitalByUuidData data = result.getData(); + + // 构造 UserEntity 对象 + basicHospital = new BasicHospitalEntity(); + basicHospital.setHospitalIden(data.getUuid()); + basicHospital.setHospitalName(data.getName()); + basicHospital.setSource(2); + basicHospital.setHospitalLevel(data.getLevel()); + basicHospital.setDoctorNumber(data.getExpert_num()); + basicHospital.setProvince(data.getProv_name()); + basicHospital.setCity(data.getCity_name()); + basicHospital.setCounty(data.getCounty_name()); + save(basicHospital); + } + + return basicHospital; + } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalArticle/dao/CaseClinicalArticleDao.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalArticle/dao/CaseClinicalArticleDao.java index 09c5739..78e976b 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalArticle/dao/CaseClinicalArticleDao.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalArticle/dao/CaseClinicalArticleDao.java @@ -39,8 +39,8 @@ public interface CaseClinicalArticleDao extends BaseMapper= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + - "WHERE stats_id = #{statsId}") - int dec(@Param("statsId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); + "WHERE article_id = #{articleId}") + int dec(@Param("articleId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); /** * 根据医院ID查询该医院最后一篇文章的发表时间 diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/domain/vo/AppDoctorVO.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/domain/vo/AppDoctorVO.java index 7e9be40..87df9cd 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/domain/vo/AppDoctorVO.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/domain/vo/AppDoctorVO.java @@ -26,6 +26,12 @@ public class AppDoctorVO { @Schema(description = "省份") private String province; + @Schema(description = "市") + private String city; + + @Schema(description = "区") + private String county; + @Schema(description = "医院UUID") private String hospitalUuid; diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/service/CaseClinicalDoctorService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/service/CaseClinicalDoctorService.java index 81096a3..59dd74f 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/service/CaseClinicalDoctorService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalDoctor/service/CaseClinicalDoctorService.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Objects; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.extend.app.UserInfo.GetUserInfoListResponse; +import net.lab1024.sa.admin.module.business.basicHospital.service.BasicHospitalService; import net.lab1024.sa.admin.module.business.caseClinical.service.CaseClinicalService; import net.lab1024.sa.admin.module.business.caseClinicalArticle.dao.CaseClinicalArticleDao; import net.lab1024.sa.admin.module.business.caseClinicalDoctor.dao.CaseClinicalDoctorDao; @@ -78,6 +79,9 @@ public class CaseClinicalDoctorService { @Autowired private CaseClinicalArticleDao caseClinicalArticleDao; + @Autowired + private BasicHospitalService basicHospitalService; + /** * 分页查询 */ @@ -337,42 +341,15 @@ public class CaseClinicalDoctorService { // 如果存在hospitalUuid,获取医院信息(不存储到数据库) if (userData.getHospitalUuid() != null && !userData.getHospitalUuid().trim().isEmpty()) { - // 先查询数据库中是否已存在该医院 - LambdaQueryWrapper hospitalQueryWrapper = new LambdaQueryWrapper<>(); - hospitalQueryWrapper.eq(BasicHospitalEntity::getHospitalIden, userData.getHospitalUuid()); - BasicHospitalEntity existingHospital = basicHospitalDao.selectOne(hospitalQueryWrapper); - - if (existingHospital != null) { - // 医院已存在,设置hospitalId和hospitalName - appDoctor.setHospitalId(existingHospital.getHospitalId()); - appDoctor.setHospitalName(existingHospital.getHospitalName()); - } else { - // 医院不存在,调用API获取医院信息并存储 - GetHospitalByUuidResponse hospitalResponse = hospital.getHospitalByUuid(userData.getHospitalUuid()); - - if (hospitalResponse == null || hospitalResponse.getData() == null) { - throw new BusinessException("获取医院信息失败:医院数据为空"); - } - - GetHospitalByUuidResponse.GetHospitalByUuidData hospitalData = hospitalResponse.getData(); - - // 创建新的医院实体 - BasicHospitalEntity newHospital = new BasicHospitalEntity(); - newHospital.setHospitalIden(hospitalData.getUuid()); - newHospital.setHospitalName(hospitalData.getName()); - newHospital.setHospitalLevel(hospitalData.getLevel()); - newHospital.setProvince(hospitalData.getProv_name()); - newHospital.setCity(hospitalData.getCity_name()); - newHospital.setDoctorNumber(hospitalData.getExpert_num()); - newHospital.setSource(2); // 默认来源为肝胆相照 - - // 插入医院数据 - basicHospitalDao.insert(newHospital); - - // 设置返回的hospitalId和hospitalName - appDoctor.setHospitalId(newHospital.getHospitalId()); - appDoctor.setHospitalName(newHospital.getHospitalName()); + BasicHospitalEntity existingHospital = basicHospitalService.GetAppHospital(userData.getHospitalUuid()); + if (existingHospital == null){ + throw new BusinessException("获取医院信息失败:医院数据为空"); } + + appDoctor.setHospitalId(existingHospital.getHospitalId()); + appDoctor.setHospitalName(existingHospital.getHospitalName()); + appDoctor.setCity(existingHospital.getCity()); + appDoctor.setCounty(existingHospital.getCounty()); } appDoctorList.add(appDoctor); @@ -473,34 +450,4 @@ public class CaseClinicalDoctorService { // // return caseClinicalDoctor; // } - - /** - * 获取app医院数据 - * @param hospitalIden app医院唯一标识 - * @return BasicHospitalEntity - */ - public BasicHospitalEntity GetAppHospital(String hospitalIden) throws BusinessException { - // 查询数据库医院信息 - LambdaQueryWrapper basicHospitalWrapper = new LambdaQueryWrapper<>(); - basicHospitalWrapper.eq(BasicHospitalEntity::getHospitalIden, hospitalIden); - BasicHospitalEntity basicHospital = basicHospitalDao.selectOne(basicHospitalWrapper); - if (basicHospital == null){ - // 请求接口获取数据 - GetHospitalByUuidResponse result = hospital.getHospitalByUuid(hospitalIden); - GetHospitalByUuidResponse.GetHospitalByUuidData data = result.getData(); - - // 构造 UserEntity 对象 - basicHospital = new BasicHospitalEntity(); - basicHospital.setHospitalIden(hospitalIden); - basicHospital.setHospitalName(data.getName()); - basicHospital.setSource(2); - basicHospital.setHospitalLevel(data.getLevel()); - basicHospital.setDoctorNumber(data.getExpert_num()); - basicHospital.setProvince(data.getProv_name()); - basicHospital.setCity(data.getCity_name()); - save(basicHospital); - } - - return basicHospital; - } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/dao/CaseClinicalVideoDao.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/dao/CaseClinicalVideoDao.java index 5321e21..edc6148 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/dao/CaseClinicalVideoDao.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/dao/CaseClinicalVideoDao.java @@ -34,26 +34,27 @@ public interface CaseClinicalVideoDao extends BaseMapper= #{numeral} THEN ${field} - #{numeral} ELSE 0 END " + - "WHERE stats_id = #{statsId}") - int dec(@Param("statsId") Long videoId, @Param("field") String field, @Param("numeral") int numeral); + "WHERE video_id = #{videoId}") + int dec(@Param("videoId") Long articleId, @Param("field") String field, @Param("numeral") int numeral); /** * 根据医院ID查询该医院最后一个视频的发表时间 diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/service/UserCommentClinicalVideoService.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/service/UserCommentClinicalVideoService.java index 729e8e8..dc52cca 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/service/UserCommentClinicalVideoService.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/caseClinicalVideo/service/UserCommentClinicalVideoService.java @@ -197,7 +197,7 @@ public class UserCommentClinicalVideoService { UserCommentClinicalVideoEntity userCommentClinicalVideo = userCommentClinicalVideoDao.selectById(commentId); if (null == userCommentClinicalVideo) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return ResponseDTO.userErrorParam("操作失败"); + return ResponseDTO.userErrorParam("操作失败1"); } // 减少文章的统计字段 @@ -208,7 +208,7 @@ public class UserCommentClinicalVideoService { ); if (!r){ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - return ResponseDTO.userErrorParam("操作失败"); + return ResponseDTO.userErrorParam("操作失败2"); } userCommentClinicalVideoDao.deleteById(commentId);