package com.imooc.permission.service;
import com.google.common.base.Preconditions;
import com.imooc.permission.common.RequestHolder;
import com.imooc.permission.dao.SysAclMapper;
import com.imooc.permission.dao.SysAclModuleMapper;
import com.imooc.permission.exception.ParamException;
import com.imooc.permission.model.SysAclModule;
import com.imooc.permission.param.AclModuleParam;
import com.imooc.permission.util.BeanValidator;
import com.imooc.permission.util.IpUtil;
import com.imooc.permission.util.LevelUtil;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
@Service
public class SysAclModuleService {
@Autowired
private SysAclModuleMapper sysAclModuleMapper;
@Autowired
private SysAclMapper sysAclMapper;
@Autowired
private SysLogService sysLogService;
public void save(AclModuleParam param) {
BeanValidator.check(param);
if(checkExist(param.getParentId(), param.getName(), param.getId())) {
throw new ParamException("同一层级下存在相同名称的权限模块");
}
SysAclModule aclModule = SysAclModule.builder().name(param.getName()).parentId(param.getParentId()).seq(param.getSeq())
.status(param.getStatus()).remark(param.getRemark()).build();
aclModule.setLevel(LevelUtil.calculateLevel(getLevel(param.getParentId()), param.getParentId()));
aclModule.setOperator(RequestHolder.getCurrentUser().getUsername());
aclModule.setOperateIp(IpUtil.getRemoteIp(RequestHolder.getCurrentRequest()));
aclModule.setOperateTime(new Date());
sysAclModuleMapper.insertSelective(aclModule);
sysLogService.saveAclModuleLog(null, aclModule);
}
public void update(AclModuleParam param) {
BeanValidator.check(param);
if(checkExist(param.getParentId(), param.getName(), param.getId())) {
throw new ParamException("同一层级下存在相同名称的权限模块");
}
SysAclModule before = sysAclModuleMapper.selectByPrimaryKey(param.getId());
Preconditions.checkNotNull(before, "待更新的权限模块不存在");
SysAclModule after = SysAclModule.builder().id(param.getId()).name(param.getName()).parentId(param.getParentId()).seq(param.getSeq())
.status(param.getStatus()).remark(param.getRemark()).build();
after.setLevel(LevelUtil.calculateLevel(getLevel(param.getParentId()), param.getParentId()));
after.setOperator(RequestHolder.getCurrentUser().getUsername());
after.setOperateIp(IpUtil.getRemoteIp(RequestHolder.getCurrentRequest()));
after.setOperateTime(new Date());
updateWithChild(before, after);
sysLogService.saveAclModuleLog(before, after);
}
private void updateWithChild(SysAclModule before, SysAclModule after) {
String newLevelPrefix = after.getLevel();
String oldLevelPrefix = before.getLevel();
if (!after.getLevel().equals(before.getLevel())) {
String curLevel = before.getLevel() "." before.getId();
List<SysAclModule> aclModuleList = sysAclModuleMapper.getChildAclModuleListByLevel(curLevel "%");
if (CollectionUtils.isNotEmpty(aclModuleList)) {
for (SysAclModule aclModule : aclModuleList) {
String level = aclModule.getLevel();
if (level.equals(curLevel) || level.indexOf(curLevel ".") == 0) {
// getChildAclModuleListByLevel可能会取出多余的内容,因此需要加个判断
// 比如0.1* 可能取出0.1、0.1.3、0.11、0.11.3,而期望取出 0.1、0.1.3, 因此呢需要判断等于0.1或者以0.1.为前缀才满足条件
level = newLevelPrefix level.substring(oldLevelPrefix.length());
aclModule.setLevel(level);
}
}
sysAclModuleMapper.batchUpdateLevel(aclModuleList);
}
}
sysAclModuleMapper.updateByPrimaryKeySelective(after);
}
private boolean checkExist(Integer parentId, String aclModuleName, Integer deptId) {
return sysAclModuleMapper.countByNameAndParentId(parentId, aclModuleName, deptId) > 0;
}
private String getLevel(Integer aclModuleId) {
SysAclModule aclModule = sysAclModuleMapper.selectByPrimaryKey(aclModuleId);
if (aclModule == null) {
return null;
}
return aclModule.getLevel();
}
public void delete(int aclModuleId) {
SysAclModule aclModule = sysAclModuleMapper.selectByPrimaryKey(aclModuleId);
Preconditions.checkNotNull(aclModule, "待删除的权限模块不存在,无法删除");
if(sysAclModuleMapper.countByParentId(aclModule.getId()) > 0) {
throw new ParamException("当前模块下面有子模块,无法删除");
}
if (sysAclMapper.countByAclModuleId(aclModule.getId()) > 0) {
throw new ParamException("当前模块下面有用户,无法删除");
}
sysAclModuleMapper.deleteByPrimaryKey(aclModuleId);
}
}
资源文件列表
permission-master/.idea/compiler.xml , 531
permission-master/.idea/encodings.xml , 172
permission-master/.idea/misc.xml , 640
permission-master/.idea/uiDesigner.xml , 8792
permission-master/generator/generator.xml , 3611
permission-master/generator/mybatis-generator-core-1.3.2.jar , 516357
permission-master/generator/mysql-connector-java-5.1.34.jar , 960372
permission-master/generator/生成语句.txt , 79
permission-master/pom.xml , 8491
permission-master/src/main/java/com/imooc/permission/beans/CacheKeyConstants.java , 137
permission-master/src/main/java/com/imooc/permission/beans/LogType.java , 248
permission-master/src/main/java/com/imooc/permission/beans/Mail.java , 409
permission-master/src/main/java/com/imooc/permission/beans/PageQuery.java , 489
permission-master/src/main/java/com/imooc/permission/beans/PageResult.java , 337
permission-master/src/main/java/com/imooc/permission/common/ApplicationContextHelper.java , 992
permission-master/src/main/java/com/imooc/permission/common/HttpInterceptor.java , 1893
permission-master/src/main/java/com/imooc/permission/common/JsonData.java , 1178
permission-master/src/main/java/com/imooc/permission/common/RequestHolder.java , 836
permission-master/src/main/java/com/imooc/permission/common/SpringExceptionResolver.java , 1826
permission-master/src/main/java/com/imooc/permission/controller/AdminController.java , 397
permission-master/src/main/java/com/imooc/permission/controller/SysAclController.java , 2002
permission-master/src/main/java/com/imooc/permission/controller/SysAclModuleController.java , 1703
permission-master/src/main/java/com/imooc/permission/controller/SysDeptController.java , 1816
permission-master/src/main/java/com/imooc/permission/controller/SysLogController.java , 1196
permission-master/src/main/java/com/imooc/permission/controller/SysRoleController.java , 3823
permission-master/src/main/java/com/imooc/permission/controller/SysUserController.java , 2287
permission-master/src/main/java/com/imooc/permission/controller/TestController.java , 2048
permission-master/src/main/java/com/imooc/permission/controller/UserController.java , 2545
permission-master/src/main/java/com/imooc/permission/dao/SysAclMapper.java , 936
permission-master/src/main/java/com/imooc/permission/dao/SysAclModuleMapper.java , 882
permission-master/src/main/java/com/imooc/permission/dao/SysDeptMapper.java , 806
permission-master/src/main/java/com/imooc/permission/dao/SysLogMapper.java , 846
permission-master/src/main/java/com/imooc/permission/dao/SysRoleAclMapper.java , 751
permission-master/src/main/java/com/imooc/permission/dao/SysRoleMapper.java , 615
permission-master/src/main/java/com/imooc/permission/dao/SysRoleUserMapper.java , 960
permission-master/src/main/java/com/imooc/permission/dao/SysUserMapper.java , 961
permission-master/src/main/java/com/imooc/permission/dao/TestDao.java , 64
permission-master/src/main/java/com/imooc/permission/dto/AclDto.java , 539
permission-master/src/main/java/com/imooc/permission/dto/AclModuleLevelDto.java , 677
permission-master/src/main/java/com/imooc/permission/dto/DeptLevelDto.java , 564
permission-master/src/main/java/com/imooc/permission/dto/SearchLogDto.java , 410
permission-master/src/main/java/com/imooc/permission/exception/ParamException.java , 595
permission-master/src/main/java/com/imooc/permission/exception/PermissionException.java , 626
permission-master/src/main/java/com/imooc/permission/filter/AclControlFilter.java , 4041
permission-master/src/main/java/com/imooc/permission/filter/LoginFilter.java , 1337
permission-master/src/main/java/com/imooc/permission/model/SysAcl.java , 2417
permission-master/src/main/java/com/imooc/permission/model/SysAclModule.java , 2139
permission-master/src/main/java/com/imooc/permission/model/SysDept.java , 1961
permission-master/src/main/java/com/imooc/permission/model/SysLog.java , 1388
permission-master/src/main/java/com/imooc/permission/model/SysLogWithBLOBs.java , 517
permission-master/src/main/java/com/imooc/permission/model/SysRole.java , 1761
permission-master/src/main/java/com/imooc/permission/model/SysRoleAcl.java , 1351
permission-master/src/main/java/com/imooc/permission/model/SysRoleUser.java , 1359
permission-master/src/main/java/com/imooc/permission/model/SysUser.java , 2434
permission-master/src/main/java/com/imooc/permission/param/AclModuleParam.java , 1047
permission-master/src/main/java/com/imooc/permission/param/AclParam.java , 1406
permission-master/src/main/java/com/imooc/permission/param/DeptParam.java , 722
permission-master/src/main/java/com/imooc/permission/param/RoleParam.java , 1035
permission-master/src/main/java/com/imooc/permission/param/SearchLogParam.java , 372
permission-master/src/main/java/com/imooc/permission/param/TestVo.java , 608
permission-master/src/main/java/com/imooc/permission/param/UserParam.java , 1262
permission-master/src/main/java/com/imooc/permission/service/RedisPool.java , 746
permission-master/src/main/java/com/imooc/permission/service/SysAclModuleService.java , 5296
permission-master/src/main/java/com/imooc/permission/service/SysAclService.java , 3513
permission-master/src/main/java/com/imooc/permission/service/SysCacheService.java , 2091
permission-master/src/main/java/com/imooc/permission/service/SysCoreService.java , 4244
permission-master/src/main/java/com/imooc/permission/service/SysDeptService.java , 5589
permission-master/src/main/java/com/imooc/permission/service/SysLogService.java , 12181
permission-master/src/main/java/com/imooc/permission/service/SysRoleAclService.java , 2922
permission-master/src/main/java/com/imooc/permission/service/SysRoleService.java , 4363
permission-master/src/main/java/com/imooc/permission/service/SysRoleUserService.java , 3414
permission-master/src/main/java/com/imooc/permission/service/SysTreeService.java , 8865
permission-master/src/main/java/com/imooc/permission/service/SysUserService.java , 4249
permission-master/src/main/java/com/imooc/permission/util/BeanValidator.java , 2384
permission-master/src/main/java/com/imooc/permission/util/IpUtil.java , 3574
permission-master/src/main/java/com/imooc/permission/util/JsonMapper.java , 1841
permission-master/src/main/java/com/imooc/permission/util/LevelUtil.java , 513
permission-master/src/main/java/com/imooc/permission/util/MD5Util.java , 1168
permission-master/src/main/java/com/imooc/permission/util/MailUtil.java , 1266
permission-master/src/main/java/com/imooc/permission/util/PasswordUtil.java , 1410
permission-master/src/main/java/com/imooc/permission/util/StringUtil.java , 436
permission-master/src/main/resources/applicationContext.xml , 3099
permission-master/src/main/resources/init.sql , 21063
permission-master/src/main/resources/logback.xml , 1191
permission-master/src/main/resources/mapper/SysAclMapper.xml , 7444
permission-master/src/main/resources/mapper/SysAclModuleMapper.xml , 6486
permission-master/src/main/resources/mapper/SysDeptMapper.xml , 6106
permission-master/src/main/resources/mapper/SysLogMapper.xml , 7002
permission-master/src/main/resources/mapper/SysRoleAclMapper.xml , 4779
permission-master/src/main/resources/mapper/SysRoleMapper.xml , 5172
permission-master/src/main/resources/mapper/SysRoleUserMapper.xml , 4985
permission-master/src/main/resources/mapper/SysUserMapper.xml , 7410
permission-master/src/main/resources/mapper/TestMapper.xml , 211
permission-master/src/main/resources/mybatis-config.xml , 636
permission-master/src/main/resources/redis.properties , 61
permission-master/src/main/resources/redis.xml , 1224
permission-master/src/main/resources/settings.properties , 354
permission-master/src/main/webapp/WEB-INF/spring-servlet.xml , 2123
permission-master/src/main/webapp/WEB-INF/views/acl.jsp , 27314
permission-master/src/main/webapp/WEB-INF/views/admin.jsp , 8624
permission-master/src/main/webapp/WEB-INF/views/dept.jsp , 25474
permission-master/src/main/webapp/WEB-INF/views/exception.jsp , 2709
permission-master/src/main/webapp/WEB-INF/views/log.jsp , 15678
permission-master/src/main/webapp/WEB-INF/views/noAuth.jsp , 2804
permission-master/src/main/webapp/WEB-INF/views/role.jsp , 18995
permission-master/src/main/webapp/WEB-INF/web.xml , 3765
permission-master/src/main/webapp/assets/avatars/avatar.png , 3991
permission-master/src/main/webapp/assets/avatars/avatar1.png , 4474
permission-master/src/main/webapp/assets/avatars/avatar2.png , 752
permission-master/src/main/webapp/assets/avatars/avatar3.png , 3912
permission-master/src/main/webapp/assets/avatars/avatar4.png , 3802
permission-master/src/main/webapp/assets/avatars/avatar5.png , 4456
permission-master/src/main/webapp/assets/avatars/profile-pic.jpg , 8209
permission-master/src/main/webapp/assets/avatars/user.jpg , 1191
permission-master/src/main/webapp/assets/css/ace-rtl.min.css , 142034
permission-master/src/main/webapp/assets/css/ace-skins.min.css , 75918
permission-master/src/main/webapp/assets/css/ace.min.css , 360103
permission-master/src/main/webapp/assets/css/bootstrap-datetimepicker.css , 5101
permission-master/src/main/webapp/assets/css/bootstrap-duallistbox.min.css , 1445
permission-master/src/main/webapp/assets/css/bootstrap-editable.css , 21202
permission-master/src/main/webapp/assets/css/bootstrap-timepicker.css , 3453
permission-master/src/main/webapp/assets/css/bootstrap.min.css , 99493
permission-master/src/main/webapp/assets/css/chosen-sprite.png , 646
permission-master/src/main/webapp/assets/css/chosen-sprite@2x.png , 872
permission-master/src/main/webapp/assets/css/chosen.css , 10751
permission-master/src/main/webapp/assets/css/colorbox.css , 4392
permission-master/src/main/webapp/assets/css/colorpicker.css , 2400
permission-master/src/main/webapp/assets/css/datepicker.css , 33704
permission-master/src/main/webapp/assets/css/daterangepicker.css , 5204
permission-master/src/main/webapp/assets/css/dropzone.css , 11543
permission-master/src/main/webapp/assets/css/fullcalendar.css , 11147
permission-master/src/main/webapp/assets/css/google-fonts.css , 367
permission-master/src/main/webapp/assets/css/images/animated-overlay.gif , 151
permission-master/src/main/webapp/assets/css/images/border.png , 112
permission-master/src/main/webapp/assets/css/images/controls.png , 2893
permission-master/src/main/webapp/assets/css/images/loading.gif , 9427
permission-master/src/main/webapp/assets/css/images/loading_background.png , 157
permission-master/src/main/webapp/assets/css/images/meteorshower2.jpg , 68835
permission-master/src/main/webapp/assets/css/images/overlay.png , 182
permission-master/src/main/webapp/assets/css/images/pattern.jpg , 7080
permission-master/src/main/webapp/assets/css/img/alpha.png , 3271
permission-master/src/main/webapp/assets/css/img/hue.png , 2972
permission-master/src/main/webapp/assets/css/img/saturation.png , 8817
permission-master/src/main/webapp/assets/css/jquery-ui.custom.min.css , 2699
permission-master/src/main/webapp/assets/css/jquery-ui.min.css , 12117
permission-master/src/main/webapp/assets/css/jquery.gritter.css , 1954
permission-master/src/main/webapp/assets/css/prettify.css , 2156
permission-master/src/main/webapp/assets/css/select2-spinner.gif , 1849
permission-master/src/main/webapp/assets/css/select2.css , 18288
permission-master/src/main/webapp/assets/css/select2.png , 613
permission-master/src/main/webapp/assets/css/select2x2.png , 845
最多只能显示150条信息!
