提交 9314f5f1 authored 作者: zhu's avatar zhu

1.develop

2.fix bug
上级 df029c88
......@@ -42,11 +42,14 @@ public class SaTokenConfig implements WebMvcConfigurer {
.excludePathPatterns("/v1/system/user/miniAppRegister")
.excludePathPatterns("/v1/system/user/wxUpdate")
.excludePathPatterns("/v1/system/user/getPhoneNumber")
.excludePathPatterns("/v1/system/user/checkUserName")
.excludePathPatterns("/v1/system/user/smsCodeLogin")
.excludePathPatterns("/v1/system/sms/sendSms")
.excludePathPatterns("/v1/system/home/patientMiniAppHome")
.excludePathPatterns("/v1/system/payment/payNotify")
.excludePathPatterns("/v1/system/payment/refundNotify")
.excludePathPatterns("/v1/system/sms/callback")
.excludePathPatterns("/v1/system/sms/checkCode")
// swagger 放行
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/doc.html")
......
......@@ -5,6 +5,11 @@ import lombok.Data;
@Data
public class Constant {
public static final String SMS_PREFIX = "sms_code_login_";
public static final String SMS_REGISTER_PREFIX = "sms_code_register_";
public static final String DOCTOR_ASKS = "DOCTOR_ASKS";
/**
* 订单未支付到期自动取消,30分钟
......
......@@ -155,6 +155,9 @@ public class MedicalReport extends BaseDomain {
@TableField(exist = false)
private List<String> pictureList;
@TableField(exist = false)
private String phoneNumber;
/**
* 设置默认值
*/
......
......@@ -186,32 +186,32 @@ public class User extends BaseDomain {
}
return false;
}
int openIdMaxLength = Integer.valueOf("50");
if (this.getOpenId().length() >= openIdMaxLength) {
if (throwException) {
throw new ApiCode.ApiException(-1, "微信open_id长度不能大于50!");
}
return false;
}
if (this.getUserType() == null) {
if (throwException) {
throw new ApiCode.ApiException(-1, "用户类型不能为空!");
}
return false;
}
if (this.getRegisterSource() == null) {
if (throwException) {
throw new ApiCode.ApiException(-1, "注册来源不能为空!");
}
return false;
}
Long objIdMax = Long.valueOf("50");
if (this.getObjId() >= objIdMax) {
if (throwException) {
throw new ApiCode.ApiException(-1, "关联对象(doctor_info、user_info)不能大于或等于50!");
}
return false;
}
// int openIdMaxLength = Integer.valueOf("50");
// if (this.getOpenId().length() >= openIdMaxLength) {
// if (throwException) {
// throw new ApiCode.ApiException(-1, "微信open_id长度不能大于50!");
// }
// return false;
// }
// if (this.getUserType() == null) {
// if (throwException) {
// throw new ApiCode.ApiException(-1, "用户类型不能为空!");
// }
// return false;
// }
// if (this.getRegisterSource() == null) {
// if (throwException) {
// throw new ApiCode.ApiException(-1, "注册来源不能为空!");
// }
// return false;
// }
// Long objIdMax = Long.valueOf("50");
// if (this.getObjId() >= objIdMax) {
// if (throwException) {
// throw new ApiCode.ApiException(-1, "关联对象(doctor_info、user_info)不能大于或等于50!");
// }
// return false;
// }
if (this.getDeleteStatus() == null) {
if (throwException) {
throw new ApiCode.ApiException(-1, "是否删除不能为空!");
......
package com.xwd.hospital.server.dto;
import com.xwd.hospital.server.enums.ReportStateEnum;
import com.xwd.hospital.server.enums.ReportTypeEnum;
import com.xwd.hospital.server.enums.SexTypeEnum;
import lombok.Data;
@Data
public class DoctorAskDto {
private Long id;
private String patientName;
private String patientPhone;
private String patientIdNo;
private SexTypeEnum sex;
private String reportItem;
private ReportTypeEnum reportType;
private ReportStateEnum reportState;
private Integer age;
private String reportDeclare;
private String reportHospital;
/**
* 报告一声
*/
private String reportDoctor;
private java.util.Date reportTime;
private String doctorAsks;
/**
* 医嘱医生
*/
private String doctorName;
}
package com.xwd.hospital.server.dto;
import lombok.Data;
@Data
public class SmsCodeLoginDto {
private String phone;
private String code;
}
......@@ -14,7 +14,10 @@ import java.util.List;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xwd.hospital.server.dto.DoctorAskDto;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import com.xwd.hospital.server.domain.MedicalReport;
......@@ -23,5 +26,5 @@ import com.xwd.hospital.server.repository.base.MedicalReportBaseMapper;
@Repository
public interface MedicalReportMapper extends MedicalReportBaseMapper {
IPage<DoctorAskDto> queryDoctorAskList(@Param("page") Page page,@Param("reportState") String reportState);
}
......@@ -22,6 +22,6 @@ import com.xwd.hospital.server.repository.base.PatientInfoBaseMapper;
@Repository
public interface PatientInfoMapper extends PatientInfoBaseMapper {
String selectPhoneByIdNo(String idNo);
}
......@@ -67,7 +67,7 @@ public class CouponInfoController extends BaseController<CouponInfoService, Coup
entity.setEditorName(user.getUsername());
entity.setDefault().validate(true);
if(!entity.getCouponEndDate().after(entity.getCouponStartDate())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"优惠券有效期输入不正确");
}
this.service.save(entity);
return ApiResponse.ok(this.service.getById(entity.getId()));
......
......@@ -65,10 +65,10 @@ public class FamilyDoctorController extends BaseController<FamilyDoctorService,
public ApiResponse<FamilyDoctor> add(@RequestBody FamilyDoctor entity, @AuthUser User user) {
if(StringUtils.isEmpty(entity.getIdNo())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"身份证号码验证不正确");
}
if(!IdcardUtil.isValidCard(entity.getIdNo())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"身份证号码验证不正确");
}
entity.setEditorId(user.getId());
......
......@@ -22,8 +22,12 @@ import com.xwd.hospital.server.annotation.ApiCommon;
import com.xwd.hospital.server.annotation.AuthUser;
import com.xwd.hospital.server.base.BaseController;
import com.xwd.hospital.server.domain.User;
import com.xwd.hospital.server.dto.DoctorAskDto;
import com.xwd.hospital.server.dto.MedicalQualificationDto;
import com.xwd.hospital.server.dto.OrderDto;
import com.xwd.hospital.server.dto.ReportDto;
import com.xwd.hospital.server.enums.OrderStateEnum;
import com.xwd.hospital.server.enums.ReportStateEnum;
import com.xwd.hospital.server.rest.res.ApiCode;
import com.xwd.hospital.server.domain.MedicalReport;
import com.xwd.hospital.server.rest.req.MedicalReportParam;
......@@ -116,4 +120,17 @@ public class MedicalReportController extends BaseController<MedicalReportService
return ApiResponse.ok(this.service.myDoctorAsk());
}
/**
* 医生医嘱列表
*
*/
@GetMapping("/queryDoctorAskList")
@Operation(summary = "医生医嘱列表")
public ApiResponse queryDoctorAskList(@RequestParam(value = "state",required = false) ReportStateEnum state,
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
Page<DoctorAskDto> page = new Page<>(pageNum, pageSize);
return ApiResponse.ok(this.service.queryDoctorAskList(page,null == state?null:state.toString()));
}
}
......@@ -64,16 +64,21 @@ public class PatientInfoController extends BaseController<PatientInfoService, Pa
@Override
public ApiResponse<PatientInfo> add(@RequestBody PatientInfo entity, @AuthUser User user) {
if(StringUtils.isEmpty(entity.getIdNo())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"身份证号码验证不正确");
}
if(!IdcardUtil.isValidCard(entity.getIdNo())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"身份证号码验证不正确");
}
if(!StringUtils.isEmpty(entity.getGuardianIdentificationNumber())){
if(!IdcardUtil.isValidCard(entity.getGuardianIdentificationNumber())){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"监护人身份证号码验证不正确");
}
}
PatientInfo one = this.service.getOne(Wrappers.<PatientInfo>lambdaQuery().eq(PatientInfo::getIdNo, entity.getIdNo())
.eq(PatientInfo::getUserInfoId, entity.getUserInfoId()));
if(null != one){
return ApiResponse.fail(ApiCode.FAILED.getCode(),"此就诊人身份证号已添加");
}
entity.setEditorId(user.getId());
entity.setEditorName(user.getUsername());
entity.setDefault().validate(true);
......
......@@ -87,5 +87,14 @@ public class ReferralRecordController extends BaseController<ReferralRecordServi
return ApiResponse.ok(this.service.saveBatch(entityList));
}
/**
* 审核
*/
@PostMapping("/audit")
@Operation(summary = "审核")
public ApiResponse<Boolean> audit(@RequestBody ReferralRecord entity, @AuthUser User user) {
return ApiResponse.ok(this.service.audit(entity));
}
}
package com.xwd.hospital.server.rest;
import com.xwd.hospital.server.annotation.ApiCommon;
import com.xwd.hospital.server.constants.Constant;
import com.xwd.hospital.server.dto.PatientMiniAppHomeDto;
import com.xwd.hospital.server.rest.res.ApiCode;
import com.xwd.hospital.server.rest.res.ApiResponse;
import com.xwd.hospital.server.service.RedisService;
import com.xwd.hospital.server.service.SmsService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
@Slf4j
......@@ -17,6 +21,8 @@ import org.springframework.web.bind.annotation.*;
public class SmsController {
@Resource
private SmsService smsService;
@Resource
private RedisService redisService;
/**
* <pre>
......@@ -30,6 +36,24 @@ public class SmsController {
return ApiResponse.ok(smsService.sendSms(phone));
}
/**
* <pre>
* 校验短信验证码
* </pre>
*/
@Operation(summary = "校验短信验证码")
@PostMapping("/checkCode")
@ApiCommon
public ApiResponse checkCode(@RequestParam("phone") String phone,@RequestParam("code") String code) {
String authCode = redisService.get(Constant.SMS_PREFIX + phone);
if (StringUtils.isBlank(code) ||
StringUtils.isBlank(code) ||
!authCode.equals(code)) {
return ApiResponse.fail(-1, "短信验证码不正确");
}
return ApiResponse.ok(null);
}
/**
* <pre>
* 绑定手机号码
......
......@@ -31,6 +31,7 @@ import com.xwd.hospital.server.domain.User;
import com.xwd.hospital.server.rest.req.UserParam;
import com.xwd.hospital.server.rest.res.ApiResponse;
import com.xwd.hospital.server.service.UserService;
import com.xwd.hospital.server.util.TencentOCRUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
......@@ -56,6 +57,8 @@ public class UserController extends BaseController<UserService, User, UserParam>
public void setService(UserService service) {
this.service = service;
}
@Resource
public TencentOCRUtil tencentOCRUtil;
/**
* 新增
......@@ -164,6 +167,25 @@ public class UserController extends BaseController<UserService, User, UserParam>
return ApiResponse.ok(result);
}
/**
* <pre>
* 管理端用户短信验证码登陆接口
* </pre>
*/
@Operation(summary = "管理端用户短信验证码登陆接口")
@PostMapping("/smsCodeLogin")
@ApiCommon
public ApiResponse<Map> smsCodeLogin(@RequestBody SmsCodeLoginDto dto) {
Map<String, Object> result = new HashMap<>();
User loginUser = this.service.smsCodeLogin(dto.getPhone(), dto.getCode());
result.put("userInfo", loginUser);
var loginModel = new SaLoginModel();
loginModel.setExtra("userId", loginUser.getId());
StpUtil.login(loginUser.getUsername(), loginModel);
result.put("token", StpUtil.getTokenValue());
return ApiResponse.ok(result);
}
/**
* <pre>
* 用户登出接口
......@@ -189,6 +211,18 @@ public class UserController extends BaseController<UserService, User, UserParam>
return ApiResponse.ok(this.service.register(user, "ROLE_USER"));
}
/**
* <pre>
* 检查用户名
* </pre>
*/
@Operation(summary = "检查用户名")
@PostMapping("/checkUserName")
@ApiCommon
public ApiResponse<Boolean> checkUserName(@RequestParam("username") String username) {
return ApiResponse.ok(this.service.checkUserName(username));
}
/**
* <pre>
* 微信获取用户手机号码接口
......@@ -212,7 +246,7 @@ public class UserController extends BaseController<UserService, User, UserParam>
public ApiResponse updateUserInfo(@RequestBody UpdateUserInfoDto updateInfoDto,@AuthUser User user) {
UserDto userDto = this.service.updateUserInfo(updateInfoDto);
if(null == userDto){
return ApiResponse.fail(ApiCode.FAILED);
return ApiResponse.fail(ApiCode.FAILED.getCode(),"身份证号码验证不正确");
}else {
return ApiResponse.ok(userDto);
}
......@@ -356,4 +390,16 @@ public class UserController extends BaseController<UserService, User, UserParam>
}
return ApiResponse.ok(null);
}
/**
* <pre>
* 身份证OCR识别
* </pre>
*/
@Operation(summary = "身份证OCR识别")
@PostMapping("/idCardOCR")
@ApiCommon
public ApiResponse idCardOCR(@AuthUser User user,@RequestBody String image) {
return ApiResponse.ok(tencentOCRUtil.idCardOcr(image));
}
}
......@@ -9,8 +9,12 @@
package com.xwd.hospital.server.service;
import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xwd.hospital.server.base.BaseService;
import com.xwd.hospital.server.domain.MedicalReport;
import com.xwd.hospital.server.dto.DoctorAskDto;
import com.xwd.hospital.server.dto.ReportDto;
import com.xwd.hospital.server.rest.req.MedicalReportParam;
......@@ -20,4 +24,5 @@ public interface MedicalReportService extends BaseService<MedicalReport> {
MedicalReport myDoctorAsk();
IPage<DoctorAskDto> queryDoctorAskList(Page page,String state);
}
......@@ -15,4 +15,5 @@ import com.xwd.hospital.server.rest.req.ReferralRecordParam;
public interface ReferralRecordService extends BaseService<ReferralRecord> {
boolean audit(ReferralRecord entity);
}
......@@ -52,6 +52,10 @@ public interface UserService extends BaseService<User> {
*/
User selectByUsername(String username);
boolean checkUserName(String username);
User smsCodeLogin(String phone,String code);
/**
* 小程序登录
* @return
......
......@@ -17,7 +17,10 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdcardUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xwd.hospital.server.domain.*;
import com.xwd.hospital.server.dto.DoctorAskDto;
import com.xwd.hospital.server.dto.ReportDto;
import com.xwd.hospital.server.enums.PatientRelationEnum;
import com.xwd.hospital.server.enums.ReportStateEnum;
......@@ -152,9 +155,9 @@ public class MedicalReportServiceImpl extends ServiceImpl<MedicalReportMapper, M
return medicalReport;
}
public static void main(String[] args) {
DateTime birthday = DateUtil.parse(IdcardUtil.getBirthByIdCard("321088199311287715"));
String format = DateUtil.format(birthday, "yyyy-MM-dd");
System.out.println(format);
@Override
public IPage<DoctorAskDto> queryDoctorAskList(Page page,String state) {
return this.getBaseMapper().queryDoctorAskList(page,state);
}
}
......@@ -20,6 +20,7 @@ import com.xwd.hospital.server.constants.Constant;
import com.xwd.hospital.server.domain.*;
import com.xwd.hospital.server.dto.*;
import com.xwd.hospital.server.enums.*;
import com.xwd.hospital.server.rest.res.ApiCode;
import com.xwd.hospital.server.service.*;
import jakarta.annotation.Resource;
import com.baomidou.mybatisplus.core.enums.SqlMethod;
......@@ -131,6 +132,14 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
User sysUser = userService.getById(Long.valueOf(userId.toString()));
Date date = new Date();
if(createOrderDto.getOrderType() != OrderTypeEnum.PRESCRIPTION){
if(createOrderDto.getAppointmentDate().before(date)){
throw new ApiCode.ApiException(-1, "预约日期不得早于当前时间!");
}
}
Order order = new Order();
//写入订单相关记录记录
order.setUserInfoId(userInfo.getId());
......
......@@ -13,6 +13,7 @@ import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import cn.dev33.satoken.stp.StpUtil;
import jakarta.annotation.Resource;
import com.baomidou.mybatisplus.core.enums.SqlMethod;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
......@@ -48,5 +49,10 @@ public class ReferralRecordServiceImpl extends ServiceImpl<ReferralRecordMapper,
return executeBatch(entityList, batchSize, (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
}
@Override
public boolean audit(ReferralRecord entity) {
Object userId = StpUtil.getExtra("userId");
entity.setAuditId(Long.valueOf(userId.toString()));
return this.saveOrUpdate(entity);
}
}
......@@ -72,7 +72,6 @@ public class SmsServiceImpl implements SmsService {
// 生成一个100000到999999之间的随机整数
int randomNumber = random.nextInt(900000) + 100000;
//调用短信sdk发送短信
//todo 暂时屏蔽短信接口
sendAuth(String.valueOf(randomNumber),phoneNumber);
//存入redis中,缓存默认5分钟失效
redisService.setExpire(Constant.SMS_PREFIX+phoneNumber,String.valueOf(randomNumber),5, TimeUnit.MINUTES);
......
......@@ -156,6 +156,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if (existUser != null) {
throw new ApiCode.ApiException(-2, "用户已注册,请登录!");
}
User checkUser = this.getOne(Wrappers.<User>query().eq("phone", user.getPhone()).eq("user_type",UserTypeEnum.ADMIN));
if (checkUser != null) {
throw new ApiCode.ApiException(-2, "该手机号已注册,请登录!");
}
user.setUserType(UserTypeEnum.ADMIN);
user.setRegisterSource(RegisterSourceEnum.PLATFORM);
user.setDeleteStatus(YesNoEnum.NO);
this.save(user);
// 分配默认角色给用户
Role defaultRole = this.roleMapper.selectOne(Wrappers.<Role>lambdaQuery().eq(Role::getName, roleName));
......@@ -170,6 +177,33 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
return this.getOne(Wrappers.<User>query().eq("username", username));
}
@Override
public boolean checkUserName(String username) {
User user = this.getOne(Wrappers.<User>query().eq("username", username));
if (null == user){
return true;
}else {
return false;
}
}
@Override
public User smsCodeLogin(String phone, String code) {
String authCode = redisService.get(Constant.SMS_PREFIX + phone);
if (StringUtils.isBlank(code) ||
StringUtils.isBlank(code) ||
!authCode.equals(code)) {
throw new ApiCode.ApiException(-1, "短信验证码不正确");
}
// 判断用户名是否存在
User user = this.getOne(Wrappers.<User>query().eq("phone", phone).eq("user_type",UserTypeEnum.ADMIN));
if (user != null) {
return user;
}else {
throw new ApiCode.ApiException(-1, "该用户不存在,请先注册");
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean save(User entity) {
......
......@@ -26,11 +26,11 @@ public class TencentCOSUtil {
private static String secretId = "AKIDhM2Wpy0TjneHhuwpSoxseOBrhMqDh1GK";
// 子账户的SecretKey
private static String secretKey = "53zrjX7hPvcBjJ1d1gDWeyaHNOGwNYff";
//文件上传后访问路径的根路径,后面要最佳文件名字与类型
//文件上传后访问路径的根路径
private static String rootSrc = "https://medical-server-1321105819.cos.ap-shanghai.myqcloud.com/";
//上传的存储桶的地域,可参考根路径https://qq-test-1303******.cos.地域.myqcloud.com,此参数在COS的后台能查询。
//上传的存储桶的地域,此参数在COS的后台能查询。
private static String bucketAddr = "ap-shanghai";
//存储桶的名字,是自己在存储空间自己创建的,我创建的名字是:qq-test-1303******
//存储桶的名字,是自己在存储空间自己创建的
private static String bucketName = "medical-server-1321105819";
/**
......
package com.xwd.hospital.server.util;
import com.qcloud.cos.COSClient;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.ocr.v20181119.OcrClient;
import com.tencentcloudapi.ocr.v20181119.models.IDCardOCRRequest;
import com.tencentcloudapi.ocr.v20181119.models.IDCardOCRResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
@Component
@Slf4j
public class TencentOCRUtil {
// 子账户的SecretId
private static String secretId = "AKIDhM2Wpy0TjneHhuwpSoxseOBrhMqDh1GK";
// 子账户的SecretKey
private static String secretKey = "53zrjX7hPvcBjJ1d1gDWeyaHNOGwNYff";
//地区
private static String region = "ap-shanghai";
private static OcrClient getOCRClient() {
Credential credential = new Credential(secretId, secretKey);
OcrClient ocrClient = new OcrClient(credential, region);
return ocrClient;
}
public IDCardOCRResponse idCardOcr(String imageBase64String) {
if(StringUtils.isEmpty(imageBase64String)){
return null;
}
IDCardOCRResponse idCardOCRResponse = null;
OcrClient OCRClient = getOCRClient();
IDCardOCRRequest idCardOCRRequest = new IDCardOCRRequest();
idCardOCRRequest.setImageBase64(imageBase64String);
idCardOCRRequest.setCardSide("FRONT");
try{
log.info("开始OCR识别身份证-----------------------");
idCardOCRResponse = OCRClient.IDCardOCR(idCardOCRRequest);
log.info("OCR识别身份证结束-----------------------");
log.info("姓名"+idCardOCRResponse.getName());
log.info("idNo"+idCardOCRResponse.getIdNum());
}catch (TencentCloudSDKException e){
log.error(e.getMessage());
return null;
}
return idCardOCRResponse;
}
}
......@@ -33,11 +33,11 @@ wx:
msgDataFormat: JSON
pay:
wx:
appId: wxc447fccb6a2745ce
merchantId: 1535738101
keyPath: /home/ubuntu/1535738101_20231012_cert/apiclient_key.pem
merchantSerialNumber: 52849767F52ACCC2743E0C5439F3EAFA816FA1D7
apiV3Key: YG1e4n9oBPhuuYZaP7arXy232ejma6FW
appId: wx508b7d59b1a20314
merchantId: 1658241598
keyPath: /home/ubuntu/1658241598_20231102_cert/apiclient_key.pem
merchantSerialNumber: 2DEF0D3F1BCA883B5D065909E7D4B6AE40D95F40
apiV3Key: NC3nfoMdfaxnatkxXi6Bt4RMUFZBJLwF
payNotifyUrl: http://175.24.172.212:8099/v1/system/payment/payNotify
refundNotifyUrl: http://175.24.172.212:8099/v1/system/payment/refundNotify
tencent:
......
......@@ -36,4 +36,39 @@
from pms_medical_report
${ew.customSqlSegment}
</select>
<select id="queryDoctorAskList" resultType="com.xwd.hospital.server.dto.DoctorAskDto">
SELECT
r.id,
r.patient_name,
r.patient_id_no,
p.phone_number AS patientPhone,
r.sex,
r.report_item,
r.report_state,
r.report_type,
r.age,
r.report_declare,
r.report_hospital,
r.report_doctor,
r.report_time,
r.doctor_asks,
d.doctor_name
FROM pms_medical_report r
LEFT JOIN (
SELECT id_no, phone_number
FROM (
SELECT id_no, phone_number, create_time,
ROW_NUMBER() OVER(PARTITION BY id_no ORDER BY create_time DESC) AS rn
FROM pms_patient_info
) t
WHERE t.rn = 1
) p ON r.patient_id_no = p.id_no
left join pms_doctor_info d on d.id = r.doctor_id
WHERE r.report_state != 'TO_INTERPRET' AND p.phone_number IS NOT NULL
<if test="reportState != null and reportState != ''">
AND r.report_state = #{reportState}
</if>
</select>
</mapper>
......@@ -72,7 +72,7 @@
INNER JOIN pms_medical_qualifications pmq on pmq.doctor_id = di.id
INNER JOIN pms_department_info pdi on pdi.id = pmq.department_id
INNER JOIN sys_user su on su.obj_id = di.id
WHERE pdi.hidden_status = 'NO' and di.id in (select a.doctorId FROM
WHERE su.user_type = 'DOCTOR' and pdi.hidden_status = 'NO' and di.id in (select a.doctorId FROM
(SELECT count(o.id) orderNum, o.doctor_id doctorId
FROM pms_order o
WHERE 1=1 GROUP BY o.doctor_id ORDER BY orderNum desc LIMIT 3) a)
......
......@@ -36,4 +36,13 @@
from pms_patient_info
${ew.customSqlSegment}
</select>
<select id="selectPhoneByIdNo" resultType="string">
select
phone_number
from pms_patient_info
where id_no = #{idNo}
and delete_status = 'NO' and phone_number is not null
order by create_time desc limit 1
</select>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论