diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/UserConstant.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/UserConstant.java new file mode 100644 index 0000000000000000000000000000000000000000..8e20d798adf766e77bcba7ec23a131dc8c0b142a --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/constant/UserConstant.java @@ -0,0 +1,6 @@ +package cn.sh.stc.sict.cloud.common.core.constant; + +public class UserConstant { + public final static String USER_SOURCE_MOBILE = "mobile"; + public final static String USER_SOURCE_SSB = "wd_ssb"; +} 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 68b824c52c059d29754a44594733ae5833df6c5e..4059a586ce5cf4bc77baecbdf27a586bacc4ad89 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 @@ -22,6 +22,11 @@ public enum LoginTypeEnum { */ SMS("sms", "验è¯ç 登录"), + /** + * 验è¯ç 登录 + */ + SSB("ssb", "éšç”³åŠžtoken"), + /** * H5登录 */ diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserCardInfo.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserCardInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..ea420fc755d7252400e446cd683b5c8ed262959d --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserCardInfo.java @@ -0,0 +1,14 @@ +package cn.sh.stc.sict.cloud.common.core.dto; + +import lombok.Data; + +/** + * 万达éšç”³åŠžæŽ¥å£ç”¨æˆ·ç»‘å¡ä¿¡æ¯ + */ +@Data +public class WDUserCardInfo { + private String id; + private String cardNo; + private String cardType; + private String hospitalId; +} diff --git a/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserInfo.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..08042a1fd26442ec3a5806b921db60fe8c78d8e9 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/dto/WDUserInfo.java @@ -0,0 +1,23 @@ +package cn.sh.stc.sict.cloud.common.core.dto; + +import lombok.Data; + +import java.util.Date; + +/** + * 万达éšç”³åŠžæŽ¥å£ç”¨æˆ·ä¿¡æ¯ + */ +@Data +public class WDUserInfo { + private String token; + private String id; + private String username; + private String personcard; + private String mobile; + private Date birth; + private String avatar; + private Byte gender; + private String 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/SsbUtil.java b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/SsbUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..32d2b426ab1990de9b4d38c0f021226f7418d4a2 --- /dev/null +++ b/cloud-common/cloud-common-core/src/main/java/cn/sh/stc/sict/cloud/common/core/util/SsbUtil.java @@ -0,0 +1,70 @@ +package cn.sh.stc.sict.cloud.common.core.util; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.json.JSONUtil; +import cn.sh.stc.sict.cloud.common.core.dto.WDUserCardInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * éšç”³åŠžå·¥å…·ç±» + */ +@Slf4j +@UtilityClass +public class SsbUtil { + // å¤–ç½‘æµ‹è¯•åœ°å€ https://ffyjs.hpwjsns.org.cn:9071/ + private final static String USER_URL = "https://ffyjs.hpwjsns.org.cn:9071/fdapp/api/account/v1/token/info"; + private final static String CARD_URL = "https://ffyjs.hpwjsns.org.cn:9071/fdapp/api/account/v1/user/cards"; + + /** + * 获å–ç”¨æˆ·ä¿¡æ¯ + * + * @param token + * @return + */ + public WDUserInfo getUserInfo(String token) { + try { + HttpResponse response = HttpRequest.get(USER_URL) + .header("backdoor", "1") + .header("access-token", token) + .execute(); + if (response.getStatus() != 200) { + log.error("éšç”³åŠžtoken获å–用户信æ¯å¼‚常-1"); + return null; + } + return JSONUtil.toBean(response.body(), WDUserInfo.class); + } catch (Exception ex) { + log.error("éšç”³åŠžtoken获å–用户信æ¯å¼‚-2ï¼"); + log.error(ex.getMessage(), ex); + return null; + } + } + + /** + * 获å–用户绑å¡ä¿¡æ¯ + * + * @param token + * @return + */ + public List<WDUserCardInfo> getUserCardInfoList(String token) { + try { + HttpResponse response = HttpRequest.get(CARD_URL) + .header("backdoor", "1") + .header("access-token", token) + .execute(); + if (response.getStatus() != 200) { + log.error("éšç”³åŠžtoken获å–绑å¡ä¿¡æ¯å¼‚常-1"); + return null; + } + return JSONUtil.toList(JSONUtil.parseArray(response.body()), WDUserCardInfo.class); + } catch (Exception ex) { + log.error("éšç”³åŠžtoken获å–绑å¡ä¿¡æ¯å¼‚-2ï¼"); + log.error(ex.getMessage(), ex); + return null; + } + } +} diff --git a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/model/SysUserBase.java b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/model/SysUserBase.java index b920a570609c8b010c0ffb6e151236a7b971e12e..4f970994889573dadd252996629b8bfade561f1b 100644 --- a/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/model/SysUserBase.java +++ b/smart-health-modules/cloud-upms/cloud-upms-api/src/main/java/cn/sh/stc/sict/cloud/upms/model/SysUserBase.java @@ -90,6 +90,11 @@ public class SysUserBase extends Model<SysUserBase> { */ @ApiModelProperty(hidden = true, value = "è´¦å·çжæ€ï¼š0-æ£å¸¸ï¼Œ1-ç¦ç”¨") private Byte status; + + /** + * æ¥æº + */ + private String source; /** * */ 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 ad5dbc86c9d966d470e1c7a08baf3c5ae4d4aafc..dcac8369e50f2169a2fd2bacb8765c0a8df941c1 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 @@ -1,8 +1,14 @@ package cn.sh.stc.sict.cloud.upms.service.impl; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import cn.sh.stc.sict.cloud.common.core.constant.Constant; +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.WDUserCardInfo; +import cn.sh.stc.sict.cloud.common.core.dto.WDUserInfo; import cn.sh.stc.sict.cloud.common.core.util.NumberUtil; +import cn.sh.stc.sict.cloud.common.core.util.SsbUtil; import cn.sh.stc.sict.cloud.upms.dao.SysUserBaseMapper; import cn.sh.stc.sict.cloud.upms.dto.UserDTO; import cn.sh.stc.sict.cloud.upms.dto.UserInfo; @@ -18,8 +24,12 @@ import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.mp.api.WxMpService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import java.util.List; + @Slf4j @Service("sysUserBaseService") @AllArgsConstructor @@ -28,6 +38,7 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs private final SysUserBaseMapper sysUserBaseMapper; private WxMpService wxMpService; private HpUserRoleService hpUserRoleService; + private static final PasswordEncoder ENCODER = new BCryptPasswordEncoder(); @Override public UserInfo getUserInfo(String appId, String username) { @@ -49,19 +60,52 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs log.error("=================> appId = {}, inStr = {}", appId, inStr); // code = 011Eg6Ga1UOXeA0R5wHa16dkab2Eg6G7 String[] split = inStr.split(StringPool.AT); - if(LoginTypeEnum.SMS.getType().equals(split[0])){ + if (LoginTypeEnum.SMS.getType().equals(split[0])) { // 手机å·ç™»å½• return this.getByPhone(split[2]); - }else{ + } else if (LoginTypeEnum.SSB.getType().equals(split[0])) { + return this.getBySSBToken(split[0], split[2]); + } else { // 微信登录 WxOAuth2AccessToken token = wxMpService.getOAuth2Service().getAccessToken(split[2]); return this.getByOpenId(token.getOpenId()); } } + private UserInfo getBySSBToken(String source, String token) { + WDUserInfo wdUser = SsbUtil.getUserInfo(token); + if (ObjectUtil.isNull(wdUser) || StrUtil.isBlank(wdUser.getMobile())) { + return null; + } + LambdaQueryWrapper<SysUserBase> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysUserBase::getPhone, wdUser.getMobile()); + SysUserBase user = this.getOne(wrapper); + // 未注册用户默认注册 + if (user == null) { + user = new SysUserBase(); + user.setUserName(wdUser.getMobile()); + user.setOpenId(wdUser.getMobile()); + user.setName(wdUser.getUsername()); + user.setIdCard(wdUser.getPersoncard()); + user.setSex(wdUser.getGender()); + user.setHeadimg(wdUser.getAvatar()); + user.setSource(source); + user.setStatus(Constant.BYTE_NO); + user.setPasswd(ENCODER.encode(Constant.DEFAULT_PASSWORD)); + user.setPhone(wdUser.getMobile()); + this.save(user); + List<WDUserCardInfo> cardList = SsbUtil.getUserCardInfoList(token); + } + + UserInfo info = new UserInfo(); + info.setSysUserBase(user); + info.setOpenId(wdUser.getMobile()); + return info; + } + @Override public boolean saveDto(UserDTO dto) { - if(NumberUtil.isNotNullOrZero(dto.getUser().getId())){ + if (NumberUtil.isNotNullOrZero(dto.getUser().getId())) { hpUserRoleService.saveBatch(dto.getUser().getId(), dto.getRoleList()); } @@ -77,7 +121,8 @@ public class SysUserBaseServiceImpl extends ServiceImpl<SysUserBaseMapper, SysUs user = new SysUserBase(); user.setOpenId(phone); user.setStatus(Constant.BYTE_NO); - user.setPasswd(Constant.DEFAULT_PASSWORD); + user.setSource(UserConstant.USER_SOURCE_MOBILE); + user.setPasswd(ENCODER.encode(Constant.DEFAULT_PASSWORD)); user.setPhone(phone); this.save(user); } 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 450bd2c9b3cb7d9e861be80ece47370ae6b54e5c..cbdac4b2bc17d2451c14a916574e5842255c8373 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 @@ -1,9 +1,15 @@ package cn.sh.stc.sict.theme.hphy.controller.mp; import cn.hutool.core.util.IdcardUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.util.NumberUtil; import cn.sh.stc.sict.cloud.common.core.util.R; +import cn.sh.stc.sict.cloud.common.core.util.SsbUtil; import cn.sh.stc.sict.cloud.common.core.util.ValidateCodeUtil; import cn.sh.stc.sict.cloud.common.security.util.SecurityUtils; import cn.sh.stc.sict.cloud.upms.dto.CurrentUser; @@ -19,6 +25,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * æ‚£è€…åŸºæœ¬ä¿¡æ¯ @@ -49,7 +57,7 @@ public class HphyPatientBaseController { HphyPatientBase base = hphyPatientBaseService.getByOpenId(current.getOpenId()); patient.setOpenId(current.getOpenId()); - if (base != null) { + if (base != null && NumberUtil.isNotNullOrZero(base.getId())) { patient.setId(base.getId()); } else { patient.setPhone(current.getPhone()); @@ -69,12 +77,13 @@ public class HphyPatientBaseController { // 获å–å®¶åºåŒ»ç”Ÿç¾çº¦ä¿¡æ¯ try { String familyDocHos = WanDaHttpUtil.getContractInfo(patient.getCertId()); - if(StrUtil.isNotBlank(familyDocHos)){ + if (StrUtil.isNotBlank(familyDocHos)) { patient.setFamilyDocHos(familyDocHos); } - }catch (Exception e){ + } catch (Exception e) { log.error(e.getMessage(), e); } + patient.setVerifyStatus(Constant.STRING_YES); hphyPatientBaseService.saveOrUpdate(patient); return new R(patient.getId()); @@ -107,4 +116,34 @@ public class HphyPatientBaseController { return new R(base); } + + @ApiOperation("第三方公众å·è¿›å…¥ç³»ç»Ÿæ—¶ï¼ŒèŽ·å–æ‚£è€…ä¿¡æ¯") + @GetMapping("/third-party") + public R getInfoByToken(@RequestParam("source") String source, + @RequestParam("token") String token) { + CurrentUser current = SecurityUtils.getCurrentUser(); + + if (StrUtil.isBlank(current.getOpenId())) { + log.error("openId 为空"); + } + // èŽ·å–æ‚£è€…ä¿¡æ¯ + HphyPatientBase base = hphyPatientBaseService.getByOpenId(current.getOpenId()); + if( ObjectUtil.isNull(base) || NumberUtil.isNullOrZero(base.getId())){ + if(LoginTypeEnum.SSB.getType().equals(source)){ + WDUserInfo userInfo = SsbUtil.getUserInfo(token); + List<WDUserCardInfo> cardList = SsbUtil.getUserCardInfoList(token); + base = hphyPatientBaseService.saveSSbInfo(current, userInfo, cardList); + } + } + + if( ObjectUtil.isNull(base) || NumberUtil.isNullOrZero(base.getId())){ + return new R().error("患者未实åï¼"); + } + if (StrUtil.isNotBlank(base.getGender())) { + current.setGender(PatientConstant.getGender(base.getGender())); + SecurityUtils.updateCurrent(current); + } + + return new R(base); + } } diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/IndexController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/IndexController.java index acc424118641a0aad57e0e351dea169c84e79005..cf42081457b4d8bfca5921da4f3df7fc798fd90e 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/IndexController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/mp/IndexController.java @@ -4,10 +4,7 @@ import cn.sh.stc.sict.cloud.common.core.util.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @author F_xh diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/web/HpAppointmentController.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/web/HpAppointmentController.java index 33781c5cf946b009848577b3f37cff20b52522d0..dd768638a6ae6f2d3e4ab6051a3e36169803fb79 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/web/HpAppointmentController.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/controller/web/HpAppointmentController.java @@ -1,11 +1,20 @@ package cn.sh.stc.sict.theme.hphy.controller.web; +import cn.hutool.core.util.StrUtil; +import cn.sh.stc.sict.cloud.common.core.constant.Constant; +import cn.sh.stc.sict.cloud.common.core.util.R; +import cn.sh.stc.sict.theme.hphy.model.HpAppointment; import cn.sh.stc.sict.theme.hphy.service.HpAppointmentService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; /** @@ -23,4 +32,31 @@ public class HpAppointmentController extends ApiController { * æœåŠ¡å¯¹è±¡ */ private final HpAppointmentService hpAppointmentService; + + + @ApiOperation("分页查询 - 预约记录") + @GetMapping("/app/page") + public R appPage(Page page, + @RequestParam(value = "name", required = false) String name) { + LambdaQueryWrapper<HpAppointment> wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StrUtil.isNotBlank(name), HpAppointment::getPatientName, name) + .orderByDesc(HpAppointment::getCreateTime); + + page = hpAppointmentService.page(page, wrapper); + return new R(page); + } + + @ApiOperation("分页查询 - å–æ¶ˆé¢„约记录") + @GetMapping("/cancel/page") + public R cancelPage(Page page, + @RequestParam(value = "name", required = false) String name) { + LambdaQueryWrapper<HpAppointment> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(HpAppointment::getStatus, Constant.BYTE_YES) + .like(StrUtil.isNotBlank(name), HpAppointment::getPatientName, name) + .orderByDesc(HpAppointment::getCreateTime); + + page = hpAppointmentService.page(page, wrapper); + + return new R(page); + } } \ No newline at end of file diff --git a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/model/HphyPatientBase.java b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/model/HphyPatientBase.java index ac7b886afd5d27eb5997af6cd94e90d27fef23de..0c091f7a3939b11dcc0b9028551761c4a1285bb8 100644 --- a/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/model/HphyPatientBase.java +++ b/smart-health-modules/theme-schema/src/main/java/cn/sh/stc/sict/theme/hphy/model/HphyPatientBase.java @@ -31,6 +31,8 @@ public class HphyPatientBase extends Model<HphyPatientBase> { @ApiModelProperty(value = "id") private Long id; + private Long userId; + @ApiModelProperty(value = "微信openid") private String openId; /** @@ -130,6 +132,9 @@ public class HphyPatientBase extends Model<HphyPatientBase> { private String familyDocHos; + @ApiModelProperty("实å状æ€ï¼š0.未实å 1.已实å") + private String verifyStatus; + @TableField(exist = false) private String randomCode; 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 e93b82cecc5915a4ea724a2e9722e46b1c61ecc7..32a776dc06d3f8ddbf040cd0859bfb823f227166 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 @@ -1,8 +1,13 @@ 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.upms.dto.CurrentUser; import com.baomidou.mybatisplus.extension.service.IService; import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase; +import java.util.List; + /** * æ‚£è€…åŸºæœ¬ä¿¡æ¯ * @@ -11,5 +16,7 @@ import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase; */ public interface HphyPatientBaseService extends IService<HphyPatientBase> { HphyPatientBase getByOpenId(String openId); + + HphyPatientBase saveSSbInfo(CurrentUser current, WDUserInfo userInfo, List<WDUserCardInfo> cardList); } 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 a7a143d10fd2ca0769dff3a1b68539a9738278aa..ddc84de9c32cf121a9733d90f54270e0c536e93b 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 @@ -1,6 +1,12 @@ package cn.sh.stc.sict.theme.hphy.service.impl; -import cn.hutool.core.util.StrUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdcardUtil; +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.upms.dto.CurrentUser; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -10,6 +16,8 @@ import cn.sh.stc.sict.theme.hphy.dao.HphyPatientBaseMapper; import cn.sh.stc.sict.theme.hphy.model.HphyPatientBase; import cn.sh.stc.sict.theme.hphy.service.HphyPatientBaseService; +import java.util.List; + @Service("hphyPatientBaseService") @AllArgsConstructor @@ -24,4 +32,26 @@ public class HphyPatientBaseServiceImpl extends ServiceImpl<HphyPatientBaseMappe return this.getOne(wrapper); } + + @Override + public HphyPatientBase saveSSbInfo(CurrentUser current, WDUserInfo userInfo, List<WDUserCardInfo> cardList) { + if (ObjectUtil.isNotNull(userInfo)) { + HphyPatientBase base = new HphyPatientBase(); + base.setOpenId(current.getOpenId()); + base.setPhone(userInfo.getMobile()); + base.setName(userInfo.getUsername()); + base.setCertId(userInfo.getPersoncard()); + base.setAge(String.valueOf(IdcardUtil.getAgeByIdCard(userInfo.getPersoncard()))); + base.setGender(Constant.STRING_YES.equals(userInfo.getGender()) ? "ç”·" : "女"); + base.setVerifyStatus(userInfo.getVerifyStatus()); + if(CollUtil.isNotEmpty(cardList)){ + WDUserCardInfo card = cardList.get(0); + base.setMediCardId(card.getCardNo()); + base.setMediCardType(card.getCardType()); + } + + this.save(base); + } + return null; + } }