新增了hcp登录

This commit is contained in:
wucongxing8150 2025-06-16 09:20:59 +08:00
parent 916a9868c5
commit 92d2483425
6 changed files with 180 additions and 17 deletions

View File

@ -7,6 +7,7 @@ import com.example.caseData.dto.publicDto.LoginDto;
import com.example.caseData.dto.user.UserDto;
import com.example.caseData.extend.aliyun.Oss;
import com.example.caseData.request.publicRequest.GetOssSignRequest;
import com.example.caseData.request.publicRequest.LoginHcpRequest;
import com.example.caseData.request.publicRequest.LoginRequest;
import com.example.caseData.request.UserRequest.UserRequest;
import com.example.caseData.service.UserService;
@ -31,7 +32,7 @@ public class PublicController {
// 登陆
@PostMapping("/login/wechat/mobile")
public Response<LoginDto> login(@Validated({LoginRequest.Login.class}) @ModelAttribute LoginRequest request) {
public Response<LoginDto> loginWechatMobile(@Validated({LoginRequest.Login.class}) @ModelAttribute LoginRequest request) {
// 微信手机号授权登录
// 获取手机号
// 获取用户openid
@ -40,11 +41,19 @@ public class PublicController {
String phone = "18221234167";
// 用户登陆
LoginDto g = userService.UserLogin(phone);
LoginDto g = userService.UserLoginWithMobile(phone);
return Response.success(g);
}
// 登陆
@PostMapping("/login/hcp")
public Response<LoginDto> loginHcp(@Validated() @ModelAttribute LoginHcpRequest request) {
// 用户登陆
LoginDto g = userService.UserLoginWithAppToken(request.getToken());
return Response.success(g);
}
// 获取签名
@GetMapping("/sign/oss")
public Response<GetOssSignDto> GetOssSign(

View File

@ -1,6 +1,5 @@
package com.example.caseData.extend.app.Hospital;
import com.example.caseData.extend.app.UserInfo.GetUserInfoByMobileResponse;
import lombok.Data;
@Data

View File

@ -3,7 +3,7 @@ package com.example.caseData.extend.app.UserInfo;
import lombok.Data;
@Data
public class GetUserInfoByMobileResponse {
public class GetUserInfoResponse {
/** 接口调用状态。200正常其它值调用出错 */
private int code;
@ -11,7 +11,7 @@ public class GetUserInfoByMobileResponse {
private String msg;
/** 接口返回的用户信息数据 */
private GetUserInfoByMobileData data;
private ResponsData data;
/** 接口是否调用成功 */
private boolean success;
@ -20,11 +20,8 @@ public class GetUserInfoByMobileResponse {
private String message;
/**
* 根据手机号获取医生信息 - 详细数据
*/
@Data
public static class GetUserInfoByMobileData {
public static class ResponsData {
/** app唯一标识 */
private String uuid;

View File

@ -21,7 +21,7 @@ public class UserInfo extends Base {
private AppConfig appConfig;
// 根据手机号获取信息V3
public GetUserInfoByMobileResponse getUserInfoByMobile(String mobile) throws BusinessException {
public GetUserInfoResponse getUserInfoByMobile(String mobile) throws BusinessException {
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
// 处理参数
@ -48,7 +48,53 @@ public class UserInfo extends Base {
}
// 反序列化 JSON
GetUserInfoByMobileResponse result = JSONUtil.toBean(response.body(), GetUserInfoByMobileResponse.class);
GetUserInfoResponse result = JSONUtil.toBean(response.body(), GetUserInfoResponse.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;
}
}
// 根据token获取信息V3
public GetUserInfoResponse getUserInfoByToken(String appToken) throws BusinessException {
String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
// 处理参数
Map<String, Object> requestData = new HashMap<>();
requestData.put("token", appToken);
requestData.put("platform", appConfig.getPlatform());
requestData.put("timestamp", timestamp);
// 生成签名
String sign = genSignature(requestData,appConfig.getSecretKey());
String url = appConfig.getApiUrl() + "/expert-api/getInfoByToken";
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
GetUserInfoResponse result = JSONUtil.toBean(response.body(), GetUserInfoResponse.class);
log.info("获取app数据返回:{}",result);
if (result.getCode() != 200){
if (!Objects.equals(result.getMsg(), "")){

View File

@ -0,0 +1,10 @@
package com.example.caseData.request.publicRequest;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
@Data
public class LoginHcpRequest {
@NotEmpty(message = "错误请求")
private String token;
}

View File

@ -9,7 +9,7 @@ import com.example.caseData.dto.publicDto.LoginDto;
import com.example.caseData.exception.BusinessException;
import com.example.caseData.extend.app.Hospital.GetHospitalByUuidResponse;
import com.example.caseData.extend.app.Hospital.Hospital;
import com.example.caseData.extend.app.UserInfo.GetUserInfoByMobileResponse;
import com.example.caseData.extend.app.UserInfo.GetUserInfoResponse;
import com.example.caseData.extend.app.UserInfo.UserInfo;
import com.example.caseData.model.BasicHospitalModel;
import com.example.caseData.model.CaseClinicalDoctorModel;
@ -46,11 +46,11 @@ public class UserService {
private JwtUtil jwtUtil;
/**
* 用户登陆
* 用户登陆-手机号
* @return UserModel
*/
@Transactional
public LoginDto UserLogin(String phone) throws BusinessException {
public LoginDto UserLoginWithMobile(String phone) throws BusinessException {
// 获取app用户数据
UserModel user = GetAppUserInfoByPhone(phone);
@ -76,14 +76,116 @@ public class UserService {
}
/**
* 获取app用户数据
* 用户登陆-appToken
* @param appToken 1
* @return
* @throws BusinessException
*/
@Transactional
public LoginDto UserLoginWithAppToken(String appToken) throws BusinessException {
// 获取app用户数据
UserModel user = GetAppUserInfoByToken(appToken);
// 生成jwt
String token = jwtUtil.createToken(String.valueOf(user.getUserId()));
// 获取对应医生数据
LambdaQueryWrapper<CaseClinicalDoctorModel> caseClinicalDoctorWrapper = new LambdaQueryWrapper<>();
caseClinicalDoctorWrapper.eq(CaseClinicalDoctorModel::getDoctorIden, user.getUserIden());
CaseClinicalDoctorModel caseClinicalDoctor = caseClinicalDoctorDao.selectOne(caseClinicalDoctorWrapper);
// 处理返回值
LoginDto g = new LoginDto();
g.setUserId(String.valueOf(user.getUserId()));
g.setUserName(user.getUserName());
g.setAvatar(Replace.addOssDomain(user.getAvatar()));
g.setToken(token);
if (caseClinicalDoctor != null) {
g.setDoctorId(String.valueOf(caseClinicalDoctor.getDoctorId()));
}
return g;
}
/**
* 获取app用户数据-手机号
* @param phone 手机号
* @return UserModel
*/
public UserModel GetAppUserInfoByPhone(String phone) throws BusinessException {
// 请求接口获取数据
GetUserInfoByMobileResponse result = userInfo.getUserInfoByMobile(phone);
GetUserInfoByMobileResponse.GetUserInfoByMobileData data = result.getData();
GetUserInfoResponse result = userInfo.getUserInfoByMobile(phone);
GetUserInfoResponse.ResponsData data = result.getData();
// 查询数据库用户信息
LambdaQueryWrapper<UserModel> userModelWrapper = new LambdaQueryWrapper<>();
userModelWrapper.eq(UserModel::getUserIden, result.getData().getUuid());
UserModel user = userDao.selectOne(userModelWrapper);
if (user == null){
// 构造 UserModel 对象
user = new UserModel();
user.setUserIden(data.getUuid());
user.setUserName(data.getRealname());
user.setUserMobile(data.getMobile());
user.setMobileEncryption(SecureUtil.md5(data.getMobile()));
user.setStatus(1);
user.setRegisterSource(2);
user.setOpenId("");
user.setUnionId("");
user.setSex(0);
user.setAvatar(data.getPhoto());
user.setDepartmentName(data.getOfficeName());
user.setTitle(StringToInt.DoctorTitleToInt(data.getPositionName()));
user.setAddress(data.getProvName());
save(user);
}else{
if (!Objects.equals(user.getUserName(), data.getRealname())){
user.setUserName(data.getRealname());
}
if (!Objects.equals(user.getUserMobile(), data.getMobile())){
user.setUserMobile(data.getMobile());
user.setMobileEncryption(SecureUtil.md5(data.getMobile()));
}
if (!Objects.equals(user.getTitle(), StringToInt.DoctorTitleToInt(data.getOfficeName()))){
user.setTitle(StringToInt.DoctorTitleToInt(data.getOfficeName()));
}
if (!Objects.equals(user.getDepartmentName(), data.getOfficeName())){
user.setDepartmentName(data.getOfficeName());
}
if (!Objects.equals(user.getAddress(), data.getProvName())){
user.setAddress(data.getProvName());
}
userDao.updateById(user);
}
// 获取app医院数据
BasicHospitalModel basicHospital = GetAppHospital(data.getHospitalUuid());
// 修改用户所属医院
if (!Objects.equals(user.getHospitalId(), basicHospital.getHospitalId())){
UserModel updateUser = new UserModel();
updateUser.setUserId(user.getUserId());
updateUser.setHospitalId(basicHospital.getHospitalId());
userDao.updateById(updateUser);
}
return user;
}
/**
* 获取app用户数据-token
* @param token token
* @return UserModel
*/
public UserModel GetAppUserInfoByToken(String token) throws BusinessException {
// 请求接口获取数据
GetUserInfoResponse result = userInfo.getUserInfoByToken(token);
GetUserInfoResponse.ResponsData data = result.getData();
// 查询数据库用户信息
LambdaQueryWrapper<UserModel> userModelWrapper = new LambdaQueryWrapper<>();