Newer
Older
casic-callcenter-xz / casic-web / src / main / java / com / casic / missiles / handler / CallUserLoginHandler.java
liwenhao on 2 Mar 2023 1 KB 徐州呼叫中心代码提交
package com.casic.missiles.handler;

import com.casic.missiles.core.handler.BizCheckLoginHandler;
import com.casic.missiles.core.shiro.ShiroUser;
import com.casic.missiles.core.util.ToolUtil;
import com.casic.missiles.modular.extensionPhone.service.IUserPhoneService;
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.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

@Component
public class CallUserLoginHandler implements BizCheckLoginHandler {
    private static final Logger logger = LoggerFactory.getLogger(CallUserLoginHandler.class);
    @Autowired
    private IUserPhoneService userPhoneService;
    @Value("${casic.sync.recRoleTips:monitor,receiver,administrator,dispatcher}")
    private String recRoleTips;
    @Value("${casic.callSystemName:呼叫中心业务平台}")
    private String callCenterName;
    @Value("${casic.cwsSystemName:城市协同工作平台}")
    private String cwsSystemName;

    @Override
    public void checkUser(ShiroUser shiroUser, Boolean aBoolean) {
        Map<String, Object> bizData = new HashMap<>();
        bizData.put("extensionPhones", userPhoneService.selectUserExtensions(shiroUser.getId()));
        if (this.hasAnyRoles(shiroUser, recRoleTips)) {
            bizData.put("systemName", callCenterName);
        } else {
            bizData.put("systemName", cwsSystemName);
        }
        shiroUser.setBizData(bizData);
    }

    private boolean hasAnyRoles(ShiroUser shiroUser, String recRoleTips) {
        if (ToolUtil.isNotEmpty(recRoleTips)) {
            String[] roleTips = recRoleTips.split(",");
            for (String roleTip : roleTips) {
                if (shiroUser.getRoleTips().contains(roleTip)) {
                    return true;
                }
            }

        }
        return false;
    }

}