新增了hcp登录
This commit is contained in:
parent
916a9868c5
commit
92d2483425
@ -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(
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
package com.example.caseData.extend.app.Hospital;
|
||||
|
||||
import com.example.caseData.extend.app.UserInfo.GetUserInfoByMobileResponse;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
|
||||
@ -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;
|
||||
@ -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(), "")){
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -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<>();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user