package com.app.mvc.acl.service; import com.app.mvc.acl.convert.BaseConvert; import com.app.mvc.acl.dao.SysRoleUserDao; import com.app.mvc.acl.dao.SysUserDao; import com.app.mvc.acl.domain.SysBase; import com.app.mvc.acl.domain.SysRoleUser; import com.app.mvc.acl.domain.SysUser; import com.google.common.collect.Lists; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.List; /** * Created by jimin on 16/1/24. */ @Service public class SysRoleUserService implements SysService { @Resource private SysRoleUserDao sysRoleUserDao; @Resource private SysUserDao sysUserDao; @Resource private SysLogService sysLogService; /** * 更新角色-用户关系 */ public void changeRoleUsers(int roleId, List<Integer> userIdList) { List<Integer> originUserIdList = sysRoleUserDao.getUserIdListByRoleId(roleId); updateRoleUsers(roleId, userIdList); sysLogService.saveRoleUserLog(roleId, originUserIdList, userIdList); } @Transactional private void updateRoleUsers(int roleId, List<Integer> userIdList) { // 删除旧的 sysRoleUserDao.deleteByRoleId(roleId); // 组装新的 if (CollectionUtils.isEmpty(userIdList)) { return; } SysBase base = BaseConvert.of(); List<SysRoleUser> roleUserList = Lists.newArrayList(); for (Integer userId : userIdList) { roleUserList.add(SysRoleUser.builder().roleId(roleId).userId(userId).operator(base.getOperator()).operateIp(base.getOperateIp()).build()); } // 添加新的 sysRoleUserDao.batchInsert(roleUserList); } public List<SysUser> getListByRoleId(int roleId) { List<Integer> userIdList = sysRoleUserDao.getUserIdListByRoleId(roleId); if (CollectionUtils.isEmpty(userIdList)) { return Lists.newArrayList(); } return sysUserDao.getByIdList(userIdList); } @Override public void recover(int targetId, Object o) { List<Integer> userIdList = (List<Integer>) o; changeRoleUsers(targetId, userIdList); } }