From 8d82fb175cf0c6c2b57ca5a0a6c1da1403a180b6 Mon Sep 17 00:00:00 2001 From: gaozhaochen Date: Fri, 13 Jan 2023 15:03:02 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E4=B8=AD=E6=99=BA=E5=85=AC=E4=BC=97?= =?UTF-8?q?=E5=8F=B7=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/constant/enums/LoginTypeEnum.java | 5 ++ .../cloud/common/core/dto/WOAZzUserInfo.java | 26 +++++++++ .../sict/cloud/common/core/util/WoaUtil.java | 30 +++++++++++ .../service/SictUserDetailsServiceImpl.java | 3 ++ .../service/impl/SysUserBaseServiceImpl.java | 53 +++++++++++++++++++ .../mp/HphyPatientBaseController.java | 7 +++ .../hphy/service/HphyPatientBaseService.java | 14 ++++- .../impl/HphyPatientBaseServiceImpl.java | 33 +++++++++++- 8 files changed, 168 insertions(+), 3 deletions(-) create mode 100644 cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WOAZzUserInfo.java diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java index 2a07903..016882b 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/enums/LoginTypeEnum.java @@ -37,6 +37,11 @@ public enum LoginTypeEnum { */ WOA_NL("woa_nl", "纳里用户系统公众号登录"), + /** + * 打浦桥,外滩,小东门,老西门,豫园,五里桥,淮海,瑞二 + */ + WOA_ZZ("woa_zz", "中智用户系统公众号登录"), + /** * H5登录 */ diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WOAZzUserInfo.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WOAZzUserInfo.java new file mode 100644 index 0000000..5e309e3 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WOAZzUserInfo.java @@ -0,0 +1,26 @@ +package cn.sh.stc.sict.cloud.common.core.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * 中智公众号-用户基础信息 + * + * @author gao + * @date 2023/01/13 09:39 + */ +@Data +public class WOAZzUserInfo { + + private String id; + private String username; + private String personcard; + private String mobile; + private String avator; + private Byte gender; + private Integer verifyStatus; + private Date regtime; + private String openid; + +} diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java index 5a6e808..4a1b04d 100644 --- a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/WoaUtil.java @@ -2,7 +2,10 @@ package cn.sh.stc.sict.cloud.common.core.util; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; +import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; @@ -87,4 +90,31 @@ public class WoaUtil { } } + /** + * 中智公众号用户url + * 打浦桥,外滩,小东门,老西门,豫园,五里桥,淮海,瑞二 + */ + private final static String WOA_ZZ_PROXY_PASS_URL = "http://30.30.5.74:9988/woa/zz"; + // private final static String WOA_ZZ_PROXY_PASS_URL = "https://booking.hpdapuqiao.com"; + private final static String ZZ_USER_INFO_API_URL = WOA_ZZ_PROXY_PASS_URL + "/api/Other/GetPerson"; + + + public WOAZzUserInfo getZzUserInfo(String accessToken) { + try { + HttpResponse response = HttpRequest.get(ZZ_USER_INFO_API_URL) + .header("access-token", accessToken) + .execute(); + if (response.getStatus() != 200) { + log.error("中智获取用户信息异常-1"); + return null; + } + return JSONUtil.toBean(response.body(), WOAZzUserInfo.class); + } catch (Exception ex) { + log.error("中智token获取用户信息异-2!"); + log.error(ex.getMessage(), ex); + return null; + } + + } + } diff --git a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java index def5613..0d75334 100644 --- a/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java +++ b/cloud-common/cloud-common-security/src/main/java/cn/sh/stc/sict/cloud/common/security/service/SictUserDetailsServiceImpl.java @@ -130,6 +130,9 @@ public class SictUserDetailsServiceImpl implements SictUserDetailsService { user.setUserName(user.getId().toString()); } String userName = user.getUserName() + StringPool.COLON + info.getAppId(); + if (StrUtil.isNotBlank(info.getHospitalCode())) { + userName = userName.concat(StringPool.COLON).concat(info.getHospitalCode()); + } String password = SecurityConstants.BCRYPT + user.getPasswd(); // 登录失败5次锁定半小时 boolean nonLockd = !Constant.BYTE_YES.equals(user.getStatus()); diff --git a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java index 056f84a..933036f 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java +++ b/smart-health-modules/cloud-upms/cloud-upms-biz/src/main/java/cn/sh/stc/sict/cloud/upms/service/impl/SysUserBaseServiceImpl.java @@ -10,6 +10,7 @@ import cn.sh.stc.sict.cloud.common.core.constant.RedisCacheConstant; import cn.sh.stc.sict.cloud.common.core.constant.UserConstant; import cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum; import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; import cn.sh.stc.sict.cloud.common.core.util.SsbUtil; @@ -92,6 +93,9 @@ public class SysUserBaseServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUserBase::getOpenId, zzUserInfo.getId()) + .or() + .eq(SysUserBase::getPhone, zzUserInfo.getMobile()) + .orderByDesc(SysUserBase::getUpdateTime) + .last("limit 1"); + SysUserBase user = this.getOne(wrapper); + + // 未注册用户默认注册 + if (user == null) { + user = new SysUserBase(); + user.setUserName(zzUserInfo.getMobile()); + user.setOpenId(zzUserInfo.getId()); + user.setName(zzUserInfo.getUsername()); + user.setIdCard(zzUserInfo.getPersoncard()); + user.setSex(zzUserInfo.getGender()); + user.setHeadimg(zzUserInfo.getAvator()); + user.setSource(source); + user.setStatus(Constant.BYTE_NO); + user.setPasswd(ENCODER.encode(Constant.DEFAULT_PASSWORD)); + user.setPhone(zzUserInfo.getMobile()); + user.setAppId(appId); + + this.save(user); + } + + UserInfo info = new UserInfo(); + info.setSysUserBase(user); + info.setOpenId(zzUserInfo.getId()); + + // 设置医疗机构代码,后续查询只显示当前医疗机构下的查询结果 + info.setHospitalCode(hospitalCode); + return info; + } + @Override public boolean saveDto(UserDTO dto) { if (NumberUtil.isNotNullOrZero(dto.getUser().getId())) { diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java index bc2dbad..33989ab 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/HphyPatientBaseController.java @@ -8,6 +8,7 @@ import cn.sh.stc.sict.cloud.common.core.constant.Constant; import cn.sh.stc.sict.cloud.common.core.constant.enums.LoginTypeEnum; import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; import cn.sh.stc.sict.cloud.common.core.util.R; @@ -167,6 +168,12 @@ public class HphyPatientBaseController { log.error("woaXszyUser = {}", xszyUserInfo); base = hphyPatientBaseService.saveWoaXszyInfo(current, xszyUserInfo); } + // 中智用户系统公众号 + if (LoginTypeEnum.WOA_ZZ.getType().equals(source)) { + WOAZzUserInfo zzUserInfo = WoaUtil.getZzUserInfo(token); + log.error("zzUser = {}", zzUserInfo); + base = hphyPatientBaseService.saveWoaInfo(current, zzUserInfo); + } } if (ObjectUtil.isNull(base) || NumberUtil.isNullOrZero(base.getId())) { diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java index f312b30..5495ad5 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/HphyPatientBaseService.java @@ -2,10 +2,11 @@ package cn.sh.stc.sict.theme.hphy.service; import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import cn.sh.stc.sict.cloud.upms.dto.CurrentUser; -import com.baomidou.mybatisplus.extension.service.IService; import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase; +import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -25,12 +26,21 @@ public interface HphyPatientBaseService extends IService { /** * 保存香山中医医院公众号用户 * - * @param current 当前用户 + * @param current 当前用户 * @param userInfo 公众号用户详情 * @return XSZYUserInfo {@link XSZYUserInfo} */ HphyPatientBase saveWoaXszyInfo(CurrentUser current, XSZYUserInfo userInfo); + /** + * 保存中智公众号用户信息 + * + * @param current 当前用户 + * @param userInfo 公众号用户详情 + * @return XSZYUserInfo {@link WOAZzUserInfo} + */ + HphyPatientBase saveWoaInfo(CurrentUser current, WOAZzUserInfo userInfo); + void savePatient(HphyPatientBase patient); HphyPatientBase getCurrentBase(); diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java index 7560ba8..bce7af5 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/service/impl/HphyPatientBaseServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.sh.stc.sict.cloud.common.core.constant.Constant; import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WOAZzUserInfo; import cn.sh.stc.sict.cloud.common.core.dto.XSZYUserInfo; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils; @@ -89,12 +90,13 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl