doum
2026-06-18 93de43267e1663031fe5dc2f5ae40d128a182a76
server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -5,6 +5,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.service.system.SystemLoginService;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
@@ -36,6 +37,9 @@
    private JwtProperties jwtProperties;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz ;
    @Autowired
    private SystemLoginService systemLoginService;
    /**
     * 生成token令牌
@@ -128,21 +132,29 @@
        try {
            //登出海康系统数据
            LoginUserInfo loginUserInfo = this.getUserInfoByToken(token);
            String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
                    systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LOGIN_OUT_URL).getCode();
            if(StringUtils.isNotBlank(loginUserInfo.getHkMenuToken())){
            if (loginUserInfo != null && StringUtils.isNotBlank(loginUserInfo.getHkMenuToken())) {
                String url = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HTTPS).getCode() +
                        systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_HOST).getCode() +
                        systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LOGIN_OUT_URL).getCode();
                log.info("调起海康退出登录=======================>"+url+"?token="+loginUserInfo.getHkMenuToken());
//                this.hkLoginOut(url+"?token="+loginUserInfo.getHkMenuToken());
                HttpsUtil.get(url+"?token="+loginUserInfo.getHkMenuToken(),true);
            }
            redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//删除老的token
            invalidateToken(token);
            if (loginUserInfo != null && !Constants.equalsInteger(loginUserInfo.getH5UserType(), LoginUserInfo.H5_USER_CUSTOMER)) {
                systemLoginService.cleanOpenid(loginUserInfo.getId());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /** 仅失效 token,不清理 openid(商户 H5 退出由业务层单独解绑 member) */
    public void invalidateToken(String token) {
        if (StringUtils.isNotBlank(token)) {
            redisTemplate.delete(Constants.REDIS_TOKEN_KEY + token);
        }
    }
    public void hkLoginOut(String url){
        try {