package com.jspxcms.core.service.impl; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.ArrayUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jspxcms.core.domain.Role; import com.jspxcms.core.domain.User; import com.jspxcms.core.domain.UserRole; import com.jspxcms.core.repository.UserRoleDao; import com.jspxcms.core.service.RoleService; import com.jspxcms.core.service.UserRoleService; @Service @Transactional(readOnly = true) public class UserRoleServiceImpl implements UserRoleService { @Transactional public List<UserRole> save(User user, Integer[] roleIds) { int len = ArrayUtils.getLength(roleIds); List<UserRole> userRoles = new ArrayList<UserRole>(len); user.setUserRoles(userRoles); if (len > 0) { UserRole userRole; Role role; for (Integer roleId : roleIds) { role = roleService.get(roleId); userRole = new UserRole(user, role); dao.save(userRole); role.addUserRole(userRole); userRoles.add(userRole); } } return userRoles; } @Transactional public List<UserRole> update(User user, Integer[] roleIds) { dao.deleteByUserId(user.getId()); List<UserRole> userRole = save(user, roleIds); return userRole; } @Transactional public int deleteByUserId(Integer userId) { return dao.deleteByUserId(userId); } @Transactional public int deleteByRoleId(Integer roleId) { return dao.deleteByRoleId(roleId); } private RoleService roleService; @Autowired public void setRoleService(RoleService roleService) { this.roleService = roleService; } private UserRoleDao dao; @Autowired public void setDao(UserRoleDao dao) { this.dao = dao; } }