package com.dy.sso.busi; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.dy.pmsGlobal.daoBa.BaPrivilegeMapper; 
 | 
import com.dy.pmsGlobal.daoBa.BaUserMapper; 
 | 
import com.dy.pmsGlobal.pojoBa.BaUser; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.dubbo.common.utils.PojoUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.cache.annotation.CacheEvict; 
 | 
import org.springframework.cache.annotation.Cacheable; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
@Slf4j 
 | 
@Service 
 | 
public class SsoSv { 
 | 
  
 | 
    private BaUserMapper baUserMapper; 
 | 
    private BaPrivilegeMapper baPrivilegeMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private void setBaUserMapper(BaUserMapper baUserMapper){ 
 | 
        this.baUserMapper = baUserMapper ; 
 | 
    } 
 | 
  
 | 
    @Autowired 
 | 
    private void setBaPrivilegeMapper(BaPrivilegeMapper baPrivilegeMapper){ 
 | 
        this.baPrivilegeMapper = baPrivilegeMapper ; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 需要BaUserMapper.xml 
 | 
     * @param uuid 给登录成功的用户赋值其token 
 | 
     * @param phone 用户手机号 
 | 
     * @param password 用户密码 
 | 
     * @return 登录成功用户 
 | 
     */ 
 | 
    //当未注解@Transactional时,会输出日志:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46727a0c] was not registered for synchronization because synchronization is not active 
 | 
    @Transactional 
 | 
    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid", sync=true) 
 | 
    public BaUser login(String uuid, String phone, String password){ 
 | 
        BaUser baUser = this.baUserMapper.login(phone, password) ; 
 | 
        if(baUser !=  null  && baUser.id != null){ 
 | 
            baUser.privileges = this.baPrivilegeMapper.selectPrivilegeByUserId(baUser.id) ; 
 | 
        } 
 | 
        return baUser; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 不需要 BaUserMapper.xml 
 | 
     * @param uuid 给登录成功的用户赋值其token 
 | 
     * @param phone 用户手机号 
 | 
     * @param password 用户密码 
 | 
     * @return 登录成功用户 
 | 
     */ 
 | 
    //当未注解@Transactional时,会输出日志:SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@46727a0c] was not registered for synchronization because synchronization is not active 
 | 
    @Transactional 
 | 
    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid", sync=true) 
 | 
    public BaUser loginWithOutMapperXml(String uuid, String phone, String password){ 
 | 
        Map<String, Object> params = new HashMap<>() ; 
 | 
        params.put("phone", phone) ; 
 | 
        params.put("password", password) ; 
 | 
        BaUser baUser = this.baUserMapper.login(params) ; 
 | 
        if(baUser !=  null  && baUser.id != null){ 
 | 
            baUser.privileges = this.baPrivilegeMapper.selectPrivilegeByUserId(baUser.id) ; 
 | 
        } 
 | 
        return baUser; 
 | 
    } 
 | 
  
 | 
    @CacheEvict(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid") 
 | 
    public void logout(String uuid){ 
 | 
    } 
 | 
  
 | 
    @Cacheable(cacheNames=CacheConstants.cacheNames, key="'" + CacheConstants.loginUserKeyPrefix + "' + #uuid") 
 | 
    public BaUser getByUuid(String uuid){ 
 | 
        //此方法目的是直接从缓存中读取,如果缓存无此值,说明数据被清楚了,返回null值,需要重新登录 
 | 
        return null ; 
 | 
    } 
 | 
  
 | 
} 
 |