|
|
@@ -3,6 +3,8 @@ package cn.xyh.system.service.impl;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import cn.xyh.amActivity.domain.AmAlumnus;
|
|
|
+import cn.xyh.amActivity.mapper.AmAlumnusMapper;
|
|
|
import cn.xyh.common.constant.CacheNames;
|
|
|
import cn.xyh.common.constant.UserConstants;
|
|
|
import cn.xyh.common.core.domain.PageQuery;
|
|
|
@@ -29,7 +31,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.cache.Cache;
|
|
|
+import org.springframework.cache.CacheManager;
|
|
|
+import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
+import org.springframework.cache.annotation.Caching;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -55,6 +61,8 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
private final SysPostMapper postMapper;
|
|
|
private final SysUserRoleMapper userRoleMapper;
|
|
|
private final SysUserPostMapper userPostMapper;
|
|
|
+ private final AmAlumnusMapper alumnusMapper;
|
|
|
+ private final CacheManager cacheManager;
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -291,12 +299,19 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public boolean registerUser(SysUser user) {
|
|
|
user.setCreateBy(user.getUserName());
|
|
|
user.setUpdateBy(user.getUserName());
|
|
|
user.setRoleId(ALUMNUS_DEFAULT_ROLE_ID);
|
|
|
boolean flag = baseMapper.insert(user) > 0;
|
|
|
- insertUserRole(user);
|
|
|
+ if (flag) {
|
|
|
+ insertUserRole(user);
|
|
|
+ AmAlumnus am = new AmAlumnus();
|
|
|
+ am.setUserId(user.getUserId());
|
|
|
+ am.setName(user.getNickName());
|
|
|
+ flag = alumnusMapper.insert(am) > 0;
|
|
|
+ }
|
|
|
return flag;
|
|
|
}
|
|
|
|
|
|
@@ -306,6 +321,10 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* @param user 用户信息
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+ @Caching(evict = {
|
|
|
+ @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userName")
|
|
|
+ , @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userId")
|
|
|
+ })
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int updateUser(SysUser user) {
|
|
|
@@ -324,6 +343,7 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
return baseMapper.updateById(user);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 用户授权角色
|
|
|
*
|
|
|
@@ -344,6 +364,10 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* @param user 用户信息
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+ @Caching(evict = {
|
|
|
+ @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userName")
|
|
|
+ , @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userId")
|
|
|
+ })
|
|
|
@Override
|
|
|
public int updateUserStatus(SysUser user) {
|
|
|
return baseMapper.updateById(user);
|
|
|
@@ -355,6 +379,10 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* @param user 用户信息
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+ @Caching(evict = {
|
|
|
+ @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userName")
|
|
|
+ , @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#user.userId")
|
|
|
+ })
|
|
|
@Override
|
|
|
public int updateUserProfile(SysUser user) {
|
|
|
return baseMapper.updateById(user);
|
|
|
@@ -364,11 +392,17 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* 修改用户头像
|
|
|
*
|
|
|
* @param userName 用户名
|
|
|
+ * @param userId
|
|
|
* @param avatar 头像地址
|
|
|
* @return 结果
|
|
|
*/
|
|
|
+
|
|
|
@Override
|
|
|
- public boolean updateUserAvatar(String userName, String avatar) {
|
|
|
+ @Caching(evict = {
|
|
|
+ @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#userName")
|
|
|
+ , @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
|
|
|
+ })
|
|
|
+ public boolean updateUserAvatar(String userName, Long userId, String avatar) {
|
|
|
return baseMapper.update(null,
|
|
|
new LambdaUpdateWrapper<SysUser>()
|
|
|
.set(SysUser::getAvatar, avatar)
|
|
|
@@ -457,11 +491,22 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int deleteUserById(Long userId) {
|
|
|
- // 删除用户与角色关联
|
|
|
- userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
|
|
|
- // 删除用户与行业/兴趣分会表
|
|
|
- userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
|
|
|
- return baseMapper.deleteById(userId);
|
|
|
+ SysUser user = selectUserById(userId);
|
|
|
+ if (ObjectUtil.isNotNull(user)) {
|
|
|
+ // 删除用户与角色关联
|
|
|
+ userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
|
|
|
+ // 删除用户与行业/兴趣分会表
|
|
|
+ userPostMapper.delete(new LambdaQueryWrapper<SysUserPost>().eq(SysUserPost::getUserId, userId));
|
|
|
+ int i = baseMapper.deleteById(userId);
|
|
|
+ Cache cache = cacheManager.getCache(CacheNames.SYS_USER_NAME);
|
|
|
+ // 删除用户缓存
|
|
|
+ if (cache != null) {
|
|
|
+ cache.evictIfPresent(user.getUserId());
|
|
|
+ cache.evictIfPresent(user.getUserName());
|
|
|
+ }
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -471,11 +516,21 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
* @return 结果
|
|
|
*/
|
|
|
@Override
|
|
|
+ @CacheEvict(cacheNames = CacheNames.SYS_USER_NAME, allEntries = true)
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int deleteUserByIds(Long[] userIds) {
|
|
|
+ Cache cache = cacheManager.getCache(CacheNames.SYS_USER_NAME);
|
|
|
for (Long userId : userIds) {
|
|
|
checkUserAllowed(new SysUser(userId));
|
|
|
checkUserDataScope(userId);
|
|
|
+ // 删除缓存
|
|
|
+ if (ObjectUtil.isNotNull(cache)) {
|
|
|
+ SysUser user = cache.get(userId, SysUser.class);
|
|
|
+ if (ObjectUtil.isNotNull(user)) {
|
|
|
+ cache.evict(userId);
|
|
|
+ cache.evict(user.getUserName());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
List<Long> ids = Arrays.asList(userIds);
|
|
|
// 删除用户与角色关联
|
|
|
@@ -490,33 +545,25 @@ public class SysUserServiceImpl implements ISysUserService, IUserService {
|
|
|
return baseMapper.selectUserByOpenId(openid);
|
|
|
}
|
|
|
|
|
|
- @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
|
|
|
- @Override
|
|
|
- public String selectUserNameById(Long userId) {
|
|
|
- SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
|
|
|
- .select(SysUser::getUserName).eq(SysUser::getUserId, userId));
|
|
|
- return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName();
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String selectUserNameByUserName(String uName) {
|
|
|
- SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
|
|
|
- .select(SysUser::getUserName).eq(SysUser::getUserName, uName));
|
|
|
- return ObjectUtil.isNull(sysUser) ? null : sysUser.getUserName();
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
- public String selectUserNickNameById(Long userId) {
|
|
|
+ @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId")
|
|
|
+ public SysUser selectSysUserById(Long userId) {
|
|
|
SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
|
|
|
- .select(SysUser::getUserName).eq(SysUser::getUserId, userId));
|
|
|
- return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName();
|
|
|
+ .eq(SysUser::getUserId, userId));
|
|
|
+ Cache cache = cacheManager.getCache(CacheNames.SYS_USER_NAME);
|
|
|
+ if (cache != null && cache.get(sysUser.getUserName()) == null) {
|
|
|
+ cache.putIfAbsent(sysUser.getUserName(), sysUser);
|
|
|
+ }
|
|
|
+ return sysUser;
|
|
|
}
|
|
|
|
|
|
+ @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userName")
|
|
|
@Override
|
|
|
- public String selectUserNickNameByUserName(String uName) {
|
|
|
- SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
|
|
|
- .select(SysUser::getUserName).eq(SysUser::getUserName, uName));
|
|
|
- return ObjectUtil.isNull(sysUser) ? null : sysUser.getNickName();
|
|
|
+ public SysUser selectSysUserByUserName(String userName) {
|
|
|
+ SysUser sysUser;
|
|
|
+ sysUser = baseMapper.selectOne(new LambdaQueryWrapper<SysUser>()
|
|
|
+ .eq(SysUser::getUserName, userName));
|
|
|
+ return sysUser;
|
|
|
}
|
|
|
-
|
|
|
}
|