yeshijie před 3 roky
rodič
revize
ebc503c39b

+ 3 - 2
common/common-entity/sql记录

@ -1110,8 +1110,9 @@ CREATE TABLE `base_getui_client` (
  UNIQUE KEY `index_1` (`user`,`type`,`client_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='个推clientid表';
-- 2021-07-21 ysj
ALTER table base.base_login_log add column name varchar(50) DEFAULT NULL COMMENT '用户姓名';
ALTER table base.base_login_log add column client_type varchar(10) DEFAULT NULL COMMENT '客服端类型app,wx,pad,pc';

+ 22 - 0
common/common-entity/src/main/java/com/yihu/jw/entity/base/login/BaseLoginLogDO.java

@ -20,6 +20,10 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	private String openid;//微信openid
	private String loginType;
	private Date operateTime;
	private String name;//用户姓名
	private String clientType;//客服端类型app,wx,pad,pc
	@Column(name="operate_time")
	public Date getOperateTime() {
		return operateTime;
@ -74,4 +78,22 @@ public class BaseLoginLogDO extends UuidIdentityEntity implements java.io.Serial
	public void setLoginType(String loginType) {
		this.loginType = loginType;
	}
	@Column(name="name")
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Column(name="client_type")
	public String getClientType() {
		return clientType;
	}
	public void setClientType(String clientType) {
		this.clientType = clientType;
	}
}

+ 5 - 1
server/svr-authentication/pom.xml

@ -163,7 +163,11 @@
            <artifactId>sms-service</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.jw</groupId>
            <artifactId>im-service</artifactId>
            <version>2.0.0</version>
        </dependency>
        <dependency>
            <groupId>axis</groupId>

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

@ -1,11 +1,13 @@
package com.yihu.jw.security.core.userdetails.jdbc;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.entity.base.login.BaseLoginLogDO;
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.im.util.ImUtil;
import com.yihu.jw.security.core.userdetails.SaltUser;
import com.yihu.jw.security.dao.patient.BaseGetuiClientDao;
import com.yihu.jw.security.dao.patient.BasePatientDao;
@ -14,6 +16,7 @@ import com.yihu.jw.security.dao.patient.WlyyPatientFamilyMemberDao;
import com.yihu.jw.security.model.WlyyUserDetails;
import com.yihu.jw.security.model.WlyyUserSimple;
import com.yihu.jw.security.utils.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.utils.security.MD5;
import org.apache.commons.lang.StringUtils;
@ -101,6 +104,8 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
    private WlyyPatientFamilyMemberDao familyMemberDao;
    @Autowired
    private BaseGetuiClientDao baseGetuiClientDao;
    @Autowired
    private ImUtil imUtil;
    public WlyyUserDetailsService(DataSource dataSource) {
        this.setDataSource(dataSource);
@ -639,14 +644,14 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
     * @param clientId
     * @param padImei
     * @param loginType
     * @param username
     * @param id
     */
    public void updateInfo(String clientId,String padImei,String loginType,String username){
    public void updateInfo(String clientId,String padImei,String loginType,String id,BaseLoginLogDO baseLoginLogDO){
        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);
                    this.getJdbcTemplate().update("update base_patient p set p.pad_imei = ? where p.id = ? or p.idcard = ?", padImei, id);
                }
            }catch (Exception e){
                e.printStackTrace();
@ -654,19 +659,12 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
        }
        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);
                List<GetuiClientDO> list = baseGetuiClientDao.findByUser(id,isPateint,clientId);
                if(list.size() == 0){
                    GetuiClientDO getuiClientDO = new GetuiClientDO();
                    getuiClientDO.setClientId(clientId);
                    getuiClientDO.setType(isPateint);
                    getuiClientDO.setUser(user);
                    getuiClientDO.setUser(id);
                    getuiClientDO.setCreateTime(new Date());
                    baseGetuiClientDao.save(getuiClientDO);
                }
@ -674,7 +672,45 @@ public class WlyyUserDetailsService extends JdbcDaoSupport implements UserDetail
                e.printStackTrace();
            }
        }
        if(StringUtils.isNotBlank(baseLoginLogDO.getClientType())){
            try {
                //pc管理端端推送消息
                JSONObject message = new JSONObject();
                //陈XXX登录云照护平台   登录终端:多媒体平板   2021-7-7 16:38:25
                String content = baseLoginLogDO.getName() + "登录云照护平台 登录终端:" + getClientName(baseLoginLogDO.getClientType())
                        + " " + DateUtil.dateToStrLong(baseLoginLogDO.getCreateTime());
                message.put("content",content);
                message.put("content_type",41);
                imUtil.sendPcManageMessageToPc("cloudCare_pcManage",message.toString());
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    /**
     * app,wx,pad,pc
     * @param clientType
     * @return
     */
    private String getClientName(String clientType){
        String result = "";
        switch (clientType){
            case "app":
                result = "APP";
                break;
            case "wx":
                result = "微信公众号";
                break;
            case "pad":
                result = "多媒体平板";
                break;
            case "pc":
                result = "脑端";
                break;
        }
        return result;
    }
    /**

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

@ -264,11 +264,6 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        //图形验证码验证
        String key = parameters.get("key");
        String text = parameters.get("text");
        String isNeedGeet= "1";
        WlyyHospitalSysDictDO wlyyHospitalSysDictDO= wlyyhospitalSysdictDao.findDictById("isNeedGeet");
        if (wlyyHospitalSysDictDO!=null){
            isNeedGeet=wlyyHospitalSysDictDO.getDictValue();
        }
        if(org.apache.commons.lang3.StringUtils.isNotBlank(key)&& org.apache.commons.lang3.StringUtils.isNotBlank(text)){
            if(!verifyCaptcha(key,text)){
@ -371,19 +366,24 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
            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);
        String clientType = parameters.get("clientType");
        baseLoginLogDO.setUserId(wlyyUserSimple.getId());
        baseLoginLogDO.setCreateTime(new Date());
        String userAgent = JSONObject.toJSONString(wlyyUserSimple);
        baseLoginLogDO.setUserAgent(userAgent);
        baseLoginLogDO.setLoginType(loginType);
        baseLoginLogDO.setName(wlyyUserSimple.getName());
        baseLoginLogDO.setClientType(clientType);
        baseLoginLogService.save(baseLoginLogDO);
        //个推 clientId
        String clientId = parameters.get("getuiClientId");
        String padImei = parameters.get("padImei");
        //客户端类型 app,wx,pad,pc
        userDetailsService.updateInfo(clientId,padImei,loginType,wlyyUserSimple.getId(),baseLoginLogDO);
        return getResponse(wlyyUserSimple);
    }