package club.goldri.web.system.service.impl;
import club.goldri.core.constant.Constant;
import club.goldri.core.util.BeanUtil;
import club.goldri.web.system.domain.*;
import club.goldri.web.system.mapper.*;
import com.github.pagehelper.PageHelper;
import club.goldri.core.common.service.AbstractService;
import club.goldri.core.util.SystemCacheUtil;
import club.goldri.web.system.domain.*;
import club.goldri.web.system.mapper.*;
import club.goldri.web.system.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.util.*;
@Service
public class UserServiceImpl extends AbstractService<SysUser> implements UserService{
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private SysUserRoleMapper sysUserRoleMapper;
@Autowired
private SysUserOrgMapper sysUserOrgMapper;
@Autowired
private SysRoleMapper sysRoleMapper;
@Autowired
private SysOrgMapper sysOrgMapper;
/**
* 查询方法,支持模糊查询
* @param sysUser
* @return
*/
@Override
public List<SysUser> listAll(SysUser sysUser){
if (sysUser.getPage() != null && sysUser.getRows() != null) {
PageHelper.startPage(sysUser.getPage(), sysUser.getRows());
}
Example example = new Example(SysUser.class);
Example.Criteria criteria = example.createCriteria();
//search condition
//用户名
if(sysUser != null && sysUser.getUsername() != null && !"".equals(sysUser.getUsername())){
criteria.andLike("username","%" + sysUser.getUsername() + "%");
}
//姓名
if(sysUser != null && sysUser.getName() != null && !"".equals(sysUser.getName())){
criteria.andLike("name","%" + sysUser.getName() + "%");
}
//职位
if(sysUser != null && sysUser.getPosition() != null && !"".equals(sysUser.getPosition())){
criteria.andLike("position","%" + sysUser.getPosition() + "%");
}
//状态
if(sysUser != null && sysUser.getState() != null && !"".equals(sysUser.getState())){
criteria.andEqualTo("state", sysUser.getState());
}
if(sysUser != null && sysUser.getId() != null && !"".equals(sysUser.getId())){
criteria.andEqualTo("id", sysUser.getId());
}
//获取删除标记为正常的记录
criteria.andEqualTo("delFlag", sysUser.getDelFlag());
return this.sysUserMapper.selectByExample(example);
}
/**
* 将修改和添加封装在一起,便于缓存处理
* 当数据发生变化时更新缓存
* 注意事项:username一定要传
* @param sysUser
* @return
*/
@Caching(put = {
@CachePut(value=SystemCacheUtil.CACHE_USER , key="T(club.goldri.core.util.SystemCacheUtil).SYS_USER_USERNAME + #sysUser.username", condition = "#sysUser.username != null"),
@CachePut(value=SystemCacheUtil.CACHE_USER , key="T(club.goldri.core.util.SystemCacheUtil).SYS_USER_ID + #sysUser.id", condition = "#sysUser.id != null"),
@CachePut(value=SystemCacheUtil.CACHE_USER
, key="T(club.goldri.core.util.SystemCacheUtil).SYS_USER_USERNAME + T(club.goldri.core.util.SystemCacheUtil).getUserById(#sysUser.id)?.getUsername()"
, condition = "#sysUser.id != null and #sysUser.username == null"),
@CachePut(value=SystemCacheUtil.CACHE_USER
, key="T(club.goldri.core.util.SystemCacheUtil).SYS_USER_ID + T(club.goldri.core.util.SystemCacheUtil).getUserByUsername(#sysUser.username)?.getId()"
, condition = "#sysUser.username != null and #sysUser.id == null")
})
@Transactional
@Override
public SysUser commonSave(SysUser currentUser, SysUser sysUser){
if(sysUser.getId() == null){
super.save(sysUser);
} else {
this.updateNotNull(sysUser);
}
//判断用户的组织是否为空,不为空时需要对部门处理
if(sysUser != null && sysUser.getOrgList() != null && sysUser.getOrgList().size() > 0 ){
List<SysOrg> orgList = sysUser.getOrgList();
Set<String> orgIdList = new HashSet<String>();
//获取前台传过来的orgid
for(SysOrg sysOrg : orgList){
orgIdList.add(sysOrg.getId());
}
//获取当前用户所属部门
Example example = new Example(SysUserOrg.class);
Example.Criteria criteria = example.createCriteria();
//获取删除标记为正常的记录
criteria.andEqualTo("userId", sysUser.getId());
criteria.andEqualTo("delFlag", Constant.DEL_FLAG_NORMAL);
//用户的当前组织列表
List<SysUserOrg> currUserOrgList = this.sysUserOrgMapper.selectByExample(example);
Set<String> currUserOrgIdList = new HashSet<String>();
if(currUserOrgList != null && currUserOrgList.size()> 0){
for(SysUserOrg sysUserOrg : currUserOrgList){
currUserOrgIdList.add(sysUserOrg.getOrgId());
}
}
//比对用户的部门变化(新增、删除)
Map<String,Set<String>> map = BeanUtil.diffList(orgIdList, currUserOrgIdList);
Set<String> addUserOrgIdList = map.get(BeanUtil.ADD);
Set<String> removeSysUserOrgList = map.get(BeanUtil.REMOVE);
//删除数据
if(removeSysUserOrgList != null && removeSysUserOrgList.size() > 0){
for(String removeOrgId : removeSysUserOrgList){
SysUserOrg sysUserOrg = new SysUserOrg();
BeanUtil.setUpdateUser(currentUser, sysUserOrg);
sysUserOrg.setDelFlag(Constant.DEL_FLAG_DELETE);
Example remExample = new Example(SysUserOrg.class);
Example.Criteria remCriteria = remExample.createCriteria();
//获取删除标记为正常的记录
remCriteria.andEqualTo("userId", sysUser.getId());
remCriteria.andEqualTo("orgId", removeOrgId);
remCriteria.andNotEqualTo("delFlag", Constant.DEL_FLAG_DELETE);
this.sysUserOrgMapper.updateByExampleSelective(sysUserOrg, remExample);
}
}
//添加数据
if(addUserOrgIdList != null && addUserOrgIdList.size() > 0){
for(String orgId : addUserOrgIdList){
SysUserOrg sysUserOrg = new SysUserOrg();
sysUserOrg.setUserId(sysUser.getId());
sysUserOrg.setOrgId(orgId);
BeanUtil.setCreateUser(currentUser, sysUserOrg);
BeanUtil.setUpdateUser(currentUser, sysUserOrg);
this.sysUserOrgMapper.insert(sysUserOrg);
}
}
}
//处理用户角色
if(sysUser != null && sysUser.getRoleList() != null && sysUser.getRoleList().size() > 0 ){
List<SysRole> roleList = sysUser.getRoleList();
Set<String> roleIdList = new HashSet<String>();
//获取前台传过来的roleId
for(SysRole sysRole : roleList){
roleIdList.add(sysRole.getId());
}
//获取当前用户所有角色
没有合适的资源?快使用搜索试试~ 我知道了~
前后端分离之goldri
共127个文件
java:93个
xml:24个
csv:8个
需积分: 5 0 下载量 34 浏览量
2019-07-30
17:39:35
上传
评论
收藏 143KB ZIP 举报
温馨提示
前后端分离之后台架构,供各位参考学习 采用技术: Spring boot shiro权限管理 Ehcache缓存框架,可以改成redis Mybatis+PageHelper+通用mapper JWT前后端token验证 Swagger2 api生成工具 已经实现了用户、权限、组织等代码的实现
资源推荐
资源详情
资源评论
收起资源包目录
前后端分离之goldri (127个子文件)
sys_resource.csv 14KB
sys_role_resource.csv 6KB
sys_dict.csv 2KB
sys_org.csv 523B
sys_user.csv 339B
sys_role.csv 185B
sys_user_role.csv 159B
sys_user_org.csv 88B
UserServiceImpl.java 15KB
RoleServiceImpl.java 12KB
ResourceServiceImpl.java 12KB
SmsUtil.java 12KB
StringUtil.java 12KB
DatalogServiceImpl.java 12KB
UserController.java 9KB
SysUser.java 8KB
SysDict.java 7KB
MsgWebsocket.java 7KB
ShiroConfig.java 6KB
StatelessAuthcFilter.java 6KB
DictServiceImpl.java 6KB
RoleController.java 6KB
SysResource.java 5KB
SysLog.java 5KB
ExceptionAspect.java 5KB
LoginController.java 5KB
ReflectUtil.java 5KB
DruidConfig.java 5KB
OrgServiceImpl.java 5KB
DateUtil.java 4KB
DictController.java 4KB
StatelessRealm.java 4KB
ResourceController.java 4KB
BeanUtil.java 4KB
SysLogUtil.java 4KB
OrgController.java 4KB
BaseDomain.java 3KB
SystemCacheUtil.java 3KB
LogInterceptor.java 3KB
SwaggerConfig.java 3KB
UserControllerTest.java 3KB
JwtTokenUtil.java 3KB
DatalogController.java 3KB
SysDatalog.java 3KB
HeaderUtil.java 2KB
AipSpeechUtil.java 2KB
MybatisConfig.java 2KB
SysRole.java 2KB
ResourceService.java 2KB
CacheTest.java 2KB
DatalogService.java 2KB
SysOrg.java 2KB
EHCacheConfig.java 2KB
IdGenUtil.java 2KB
ExceptionUtil.java 2KB
PasswordUtil.java 2KB
DictServiceTest.java 1KB
TkMapperConfig.java 1KB
ResponseUtil.java 1KB
CorsFilter.java 1KB
RoleService.java 1KB
SysUserRoleTest.java 1KB
AbstractService.java 1KB
UserService.java 1KB
SpringUtil.java 1KB
DictService.java 1KB
CacheUtil.java 1KB
JSONHelper.java 1KB
AipSpeechController.java 1KB
Productor.java 1KB
SysRoleResource.java 1KB
Constant.java 1KB
SysUserRole.java 1022B
SysUserOrg.java 1010B
OrgService.java 997B
StatelessToken.java 866B
ForbiddenException.java 824B
TestUtil.java 810B
TestUser.java 801B
DatalogDiff.java 740B
SysResourceMapper.java 716B
AuthConstant.java 709B
WebMvcConfig.java 610B
SysDatalogMapper.java 565B
GoldriApplication.java 532B
SysUserMapper.java 523B
StatelessDefaultSubjectFactory.java 479B
LogType.java 439B
BaseService.java 425B
ResourceType.java 424B
WebSocketConfig.java 414B
SysDictMapper.java 396B
NotFoundException.java 379B
BaseTest.java 343B
SysOrgMapper.java 326B
SysRoleMapper.java 325B
BaseMapper.java 323B
SysRoleResourceMapper.java 229B
SysUserRoleMapper.java 217B
SysUserOrgMapper.java 214B
共 127 条
- 1
- 2
资源评论
昨夜听雨
- 粉丝: 2
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功