yeshijie 3 years ago
parent
commit
ea8dad8d6c

+ 21 - 1
common/common-entity/sql记录

@ -1094,4 +1094,24 @@ ALTER table base.dm_device add column need_register tinyint(2) DEFAULT '0' COMME
ALTER TABLE wlyy_patient_rehabilitation_plan add COLUMN  `admin_team_code` int(11) DEFAULT NULL COMMENT '家签行政团队Id';
-- 2021-07-12 lb
ALTER table base.dm_device modify column need_register varchar(255) DEFAULT NULL COMMENT '注册至iot接口,为空表示不注册'
ALTER table base.dm_device modify column need_register varchar(255) DEFAULT NULL COMMENT '注册至iot接口,为空表示不注册';
-- 2021-07-19 ysj
ALTER table base.base_patient add column pad_imei varchar(50) DEFAULT NULL COMMENT '平板imei';
CREATE TABLE `base_getui_client` (
  `id` varchar(50) NOT NULL,
  `user` varchar(50) DEFAULT NULL COMMENT '居民或医生code',
  `type` tinyint(1) DEFAULT NULL COMMENT '1居民 2医生',
  `client_id` varchar(50) DEFAULT NULL COMMENT '个推clientId',
  `create_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `index_1` (`user`,`type`,`client_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个推clientid表';

+ 10 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/patient/BasePatientDO.java

@ -280,6 +280,7 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    private String marriageName;
    private String latLon;//定位经纬度
    private String padImei;//绑定平板标志
    public String getCardType() {
        return cardType;
@ -849,4 +850,13 @@ public class BasePatientDO extends UuidIdentityEntityWithOperator {
    public void setLatLon(String latLon) {
        this.latLon = latLon;
    }
    @Column(name = "pad_imei")
    public String getPadImei() {
        return padImei;
    }
    public void setPadImei(String padImei) {
        this.padImei = padImei;
    }
}

+ 59 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/care/common/GetuiClientDO.java

@ -0,0 +1,59 @@
package com.yihu.jw.entity.care.common;
import com.yihu.jw.entity.UuidIdentityEntityWithCreateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/7/19
 * @Description:
 */
@Entity
@Table(name="base_getui_client")
public class GetuiClientDO extends UuidIdentityEntityWithCreateTime {
    /**
     * 居民或医生code
     */
    private String user;
    /**
     * 1居民 2医生
     */
    private Integer type;
    /**
     * 个推clientId
     */
    private String clientId;
    @Column(name = "user")
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    @Column(name = "type")
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Column(name = "client_id")
    public String getClientId() {
        return clientId;
    }
    public void setClientId(String clientId) {
        this.clientId = clientId;
    }
}

+ 62 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/core/userdetails/jdbc/WlyyUserDetailsService.java

@ -4,8 +4,10 @@ import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.base.patient.BasePatientFamilyMemberDO;
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
import com.yihu.jw.entity.care.common.GetuiClientDO;
import com.yihu.jw.entity.hospital.family.WlyyPatientFamilyMemberDO;
import com.yihu.jw.security.core.userdetails.SaltUser;
import com.yihu.jw.security.dao.patient.BaseGetuiClientDao;
import com.yihu.jw.security.dao.patient.BasePatientDao;
import com.yihu.jw.security.dao.patient.BasePatientWechatDao;
import com.yihu.jw.security.dao.patient.WlyyPatientFamilyMemberDao;
@ -97,6 +99,8 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    @Autowired
    private WlyyPatientFamilyMemberDao familyMemberDao;
    @Autowired
    private BaseGetuiClientDao baseGetuiClientDao;
    public WlyyUserDetailsService(DataSource dataSource) {
        this.setDataSource(dataSource);
@ -630,6 +634,64 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        } //...
    }
    /**
     * 更新个推clientId 和老人平板登录信息
     * @param clientId
     * @param padImei
     * @param loginType
     * @param username
     */
    public void updateInfo(String clientId,String padImei,String loginType,String username){
        int isPateint = isPatient(loginType);
        if(StringUtils.isNotBlank(padImei)){
            try {
                if(isPateint == 1){
                    this.getJdbcTemplate().update("update base_patient p set p.pad_imei = ? where p.mobile = ? or p.idcard = ?", padImei, username, username);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        if(StringUtils.isNotBlank(clientId)&&isPateint<3){
            try {
                List<WlyyUserDetails> users;
                if(isPateint==1){
                    users = this.getJdbcTemplate().query(DEFAULT_PATIENT_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
                }else{
                    users = this.getJdbcTemplate().query(DEFAULT_DOCTOR_DETAILS_STATEMENT, new BeanPropertyRowMapper(WlyyUserDetails.class), username, username);
                }
                String user = users.get(0).getId();
                List<GetuiClientDO> list = baseGetuiClientDao.findByUser(user,isPateint,clientId);
                if(list.size() == 0){
                    GetuiClientDO getuiClientDO = new GetuiClientDO();
                    getuiClientDO.setClientId(clientId);
                    getuiClientDO.setType(isPateint);
                    getuiClientDO.setUser(user);
                    getuiClientDO.setCreateTime(new Date());
                    baseGetuiClientDao.save(getuiClientDO);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    /**
     * 根据登录类型判断登录是医生2 ,居民1 还是后台管理员 3
     * @param loginType
     * @return
     */
    public int isPatient(String loginType){
        if(StringUtils.isBlank(loginType) || "1".equals(loginType)){
            return 3;
        }
        if("2".equals(loginType)){
            return 2;
        }
        return 1;
    }
    private Collection<? extends GrantedAuthority> getGrantedAuthorities(String username) {
        Collection<GrantedAuthority> authorities = new ArrayList<>(1);
        authorities.add(new SimpleGrantedAuthority("ROLE_USER"));

+ 22 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/dao/patient/BaseGetuiClientDao.java

@ -0,0 +1,22 @@
package com.yihu.jw.security.dao.patient;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.care.common.GetuiClientDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 *
 * @Author: yeshijie
 * @Date: 2021/7/19
 * @Description:
 */
public interface BaseGetuiClientDao extends PagingAndSortingRepository<GetuiClientDO, String>, JpaSpecificationExecutor<GetuiClientDO> {
    @Query("from GetuiClientDO p where p.user = ?1 and p.type=?2 and p.clientId=?3")
    List<GetuiClientDO> findByUser(String user, Integer type,String clientId);
}

+ 6 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -378,6 +378,12 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            //使用密码登录成功后, 更新失败次数为 0
            userDetailsService.addFailureCount(username, 0);
        }
        //个推 clientId
        String clientId = parameters.get("getuiClientId");
        String padImei = parameters.get("padImei");
        userDetailsService.updateInfo(clientId,padImei,loginType,username);
        userDetailsService.setRolePhth(loginType, token, wlyyUserSimple.getId(), redisTemplate);
        baseLoginLogDO.setUserId(wlyyUserSimple.getId());