package com.dy.sso.busi; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dy.pipIrrGlobal.daoBa.BaCaptchaMapper; import com.dy.pipIrrGlobal.daoBa.BaUserMapper; import com.dy.pipIrrGlobal.pojoBa.BaUser; import lombok.extern.slf4j.Slf4j; 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.List; import java.util.Map; @Slf4j @Service public class SsoSv { private BaUserMapper baUserMapper; @Autowired private void setBaUserMapper(BaUserMapper baUserMapper){ this.baUserMapper = baUserMapper ; } @Autowired private BaCaptchaMapper baCaptchaMapper; /** * 需要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 loginWithMapperXml(String uuid, String phone, String password){ return this.baUserMapper.login(phone, password) ; } /** * 不需要 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){ QueryWrapper qw = new QueryWrapper<>(); //QueryWrapper queryWrapper = Wrappers.query() ; qw.select("id", "name", "phone", "orgTag", "supperAdmin") .eq("disabled", 0) .eq("deleted", 0) .eq("phone", phone) .eq("password", password); return this.baUserMapper.selectOne(qw) ; } @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 ; } /** * 判断手机号是否存在 * @return */ public boolean existPhone(String phone){ Long count = baUserMapper.countPhone(phone) ; if(count == null || count == 0){ return false ; } return true ; } /** * 得到所有用户手机号 * @return */ public List getPhones(){ return baUserMapper.getPhones() ; } /** * 依据验证码token获取验证字符 * @param token * @return */ public Map getCodeByToken(String token) { return baCaptchaMapper.getCodeByToken(token); } }