| 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 ; | 
|     } | 
|   | 
| } |