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 2a07903375d0e82e4e58fb3ccef0a58e5459f916..016882b3e063e5dbdfc48fdb18e2752b190b349a 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 0000000000000000000000000000000000000000..5e309e3d6dbff284515d5a49c4fdafa05cde9529 --- /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 5a6e808dcbf89915a349faebb282e9ff7e05274d..4a1b04d39fc529977444d114fc53038376e6071c 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 def561323f01bce82d734288133ee77eae858a8e..0d75334037f7f3ac524c1b7eab325f55912bd635 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 056f84a3e022634a15a4d24f28f91a40066c0d6a..933036f75b1fb88bec6ab767892d9bc394a728ac 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 bc2dbadf0adda504f8024ac9f9341417cf4c45f3..33989ab1602781baf3b676aa888798a54b385e95 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 f312b30f353ce80ec5f7cf5b8a86c1f986875135..5495ad5c456e0660f0cc8464e293d5c8fddea014 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 7560ba8b2d77ea96a7b9ffdcdb0476fb2071e6e8..bce7af5187cbf03f765dd8781dd356852622f77e 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