liurunyu
2 天以前 1cf88d43994ec7ec403319032a9d118b39fe3571
登录代码优化
5个文件已修改
85 ■■■■■ 已修改文件
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -134,6 +134,8 @@
     */
    List<Map<String, Object>> getRoleNamesByUserId(@Param("userId") Long userId);
    Long countPhone(@Param("phone") String phone) ;
    /**
     * 得到所有手机号(登录账号)
     * @return
pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -367,6 +367,20 @@
        where id = #{id,jdbcType=BIGINT}
    </select>
    <!--根据指定的条件获取用户记录数-->
    <select id="countPhone" resultType="java.lang.Long">
        SELECT
        COUNT(*) AS recordCount
        FROM ba_user user
        <where>
            user.supperAdmin != 1
            AND user.deleted = 0
            <if test = "phone != null and phone !=''">
                AND user.phone= #{phone}
            </if>
        </where>
    </select>
    <select id="getPhones" resultType="java.lang.String">
        SELECT phone FROM ba_user WHERE deleted = 0 and disabled = 0
    </select>
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/LoginVo.java
@@ -37,11 +37,11 @@
    /**
     * 图形验证码token,即session的key
     */
    private String token;
    public String token;
    /**
     * 图形验证码结果
     */
    private String code;
    public String code;
}
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -113,42 +113,35 @@
        if(vo.orgTag == null || vo.orgTag.trim().length() == 0){
            return BaseResponseUtils.buildErrorMsg("未选择组织单位");
        }
        if(vo.token == null || vo.token.trim().length() == 0){
            return BaseResponseUtils.buildErrorMsg("无token");
        }
        if(vo.code == null || vo.code.trim().length() == 0){
            return BaseResponseUtils.buildErrorMsg("请输入验证码");
        }
        //把组织单位标签作为数据源名称
        DataSourceContext.set(vo.orgTag);
        String token = Optional.ofNullable(vo.getToken()).orElse("");
        String code = Optional.ofNullable(vo.getCode()).orElse("");
        if(token.length() > 0 && code.length() > 0) {
            // 从session中获取验证码
            //HttpSession session = (HttpSession) request.getSession();
            //String localCode = session.getAttribute(token).toString();
            Map map = sv.getCodeByToken(token);
            Long expiration = Long.parseLong(map.get("expiration").toString());
            Long currentTimestamp = System.currentTimeMillis();
            if(currentTimestamp > expiration) {
                return BaseResponseUtils.buildErrorMsg("验证码已超时");
            }
            // 从数据库获取验证码
            String localCode = map.get("code").toString();
            if(!code.equals(localCode)) {
                return BaseResponseUtils.buildErrorMsg("验证码错误");
            }
        // 从数据库获取验证码
        Map map = sv.getCodeByToken(vo.token);
        Long expiration = Long.parseLong(map.get("expiration").toString());
        Long currentTimestamp = System.currentTimeMillis();
        if(currentTimestamp > expiration) {
            return BaseResponseUtils.buildErrorMsg("验证码已超时");
        }
        String localCode = map.get("code").toString();
        if(!vo.code.equals(localCode)) {
            return BaseResponseUtils.buildErrorMsg("验证码错误");
        }
        //得到所有用户账号
        List<String> phones = sv.getPhones();
        if(!phones.contains(vo.phone)){
        if(!sv.existPhone(vo.phone)){
            return BaseResponseUtils.buildErrorMsg("账号不存在");
        }
        String uuid ;
        BaUser userPo ;
        String uuid4Token = null;
        BaUser userPo = null ;
        try {
            //Boolean flag = cacheManager.getCacheNames().isEmpty() ;
            uuid = UUID.randomUUID().toString();
            uuid4Token = UUID.randomUUID().toString();
            if(!StringUtils.isNullOrEmpty(vo.password)){
                /*
                如果前端进行了base64加密
@@ -156,7 +149,7 @@
                */
                vo.password = MD5.encrypt(vo.password) ;
            }
            userPo = this.sv.loginWithMapperXml(uuid, vo.phone, vo.password);
            userPo = this.sv.loginWithMapperXml(uuid4Token, vo.phone, vo.password);
        } catch (Exception e) {
            log.error("用户登录异常", e);
            return BaseResponseUtils.buildException(e.getMessage()) ;
@@ -164,10 +157,10 @@
        if(userPo != null){
            UserVo uVo = UserVoMapper.INSTANCT.po2vo(userPo);
            uVo.token = uuid ;
            uVo.token = uuid4Token ;
            return BaseResponseUtils.buildSuccess(uVo);
        }else{
            return BaseResponseUtils.buildErrorMsg("密码错误");
            return BaseResponseUtils.buildErrorMsg("登录失败");
        }
    }
pipIrr-platform/pipIrr-web/pipIrr-web-sso/src/main/java/com/dy/sso/busi/SsoSv.java
@@ -73,6 +73,18 @@
    }
    /**
     * 判断手机号是否存在
     * @return
     */
    public boolean existPhone(String phone){
        Long count = baUserMapper.countPhone(phone) ;
        if(count == null || count == 0){
            return false ;
        }
        return true ;
    }
    /**
     * 得到所有用户手机号
     * @return
     */