Newer
Older
casic-smartcity-dcms-cr / casic-web / src / main / java / com / casic / missiles / handler / LoginCheckHandler.java
lwh on 7 Jul 2021 2 KB 考勤日志增加
package com.casic.missiles.handler;

import com.alibaba.fastjson.JSON;
import com.casic.missiles.core.common.service.ICommonPermissionService;
import com.casic.missiles.core.handler.BizCheckLoginHandler;
import com.casic.missiles.core.shiro.ShiroKit;
import com.casic.missiles.core.shiro.ShiroUser;
import com.casic.missiles.modular.system.handler.DefaultHttpHeaderHandler;
import com.casic.missiles.modular.system.utils.HttpUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.DependsOn;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;

@Component
@DependsOn("loadDatabasePropertyConfig")
public class LoginCheckHandler implements BizCheckLoginHandler {
    private static final Logger logger = LoggerFactory.getLogger(LoginCheckHandler.class);
    @Value("${casic.session-invalidate-time:86400}")
    private Long sessionTime;
    @Value("${casic.log.attendUrl}")
    private String attendLogUrl;
    @Lazy
    @Autowired
    private ICommonPermissionService service;
    @Lazy
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void checkUser(ShiroUser shiroUser, Boolean isApp) {
        //设置登录用户所属服务器组别
        List<Long> pids = service.getParentDeptIds(shiroUser.getDeptId());
        pids.add(shiroUser.getDeptId());
        redisTemplate.opsForValue().set("token:HOST_" + service.getShiroSession().getId(), JSON.toJSONString("654321"), sessionTime, TimeUnit.MILLISECONDS);

        //进行登录回调
        try {
            String token = String.valueOf(ShiroKit.getSession().getId());
            HttpUtils.sendPost(attendLogUrl, new HashMap<>(0), token, new DefaultHttpHeaderHandler());
        } catch (Exception e) {
            logger.error("登录回调考勤日志报错:", e);
        }
    }
}