package li.people.record;
import java.util.List;
import li.annotation.Bean;
import li.annotation.Inject;
import li.annotation.Table;
import li.annotation.Trans;
import li.dao.Page;
import li.dao.Record;
import li.people.Const;
import li.util.Verify;
@Bean
@Table("t_role")
public class Role extends Record<Role, Integer> implements Const {
private static final long serialVersionUID = -3309607180685180059L;
@Inject
RoleResource roleResourceDao;
@Inject
Resource resourceDao;
@Trans
public List<Role> list(Page page, String key) {
String sql = "SELECT * FROM t_role WHERE 1=1";
if (!Verify.isEmpty(key)) {
sql += " AND(name LIKE '%" + key + "%' OR description LIKE '%" + key + "%')";
}
List<Role> roles = super.list(page, sql);
for (Role role : roles) {
role.set("resources", resourceDao.listByRoleId(MAX_PAGE, role.get(Integer.class, "id")));
}
return roles;
}
@Trans
public Boolean save(Role role, Integer[] resourceIds) {
return saveIgnoreNull(role) | roleResourceDao.reSave(role.get(Integer.class, "id"), resourceIds);
}
@Trans
public Boolean update(Role role, Integer[] resourceIds) {
return updateIgnoreNull(role) | roleResourceDao.reSave(role.get(Integer.class, "id"), resourceIds);
}
@Trans
public Boolean delete(Integer id) {
return super.delete(id) | -1 < roleResourceDao.deleteByRoleId((Integer) id);
}
}