diff --git a/src/main/java/com/monkeyk/sos/domain/dto/UserDto.java b/src/main/java/com/monkeyk/sos/domain/dto/UserDto.java index 38a302f..7ae5b19 100644 --- a/src/main/java/com/monkeyk/sos/domain/dto/UserDto.java +++ b/src/main/java/com/monkeyk/sos/domain/dto/UserDto.java @@ -17,7 +17,6 @@ import com.monkeyk.sos.domain.user.User; import java.io.Serializable; import java.time.format.DateTimeFormatter; import java.util.ArrayList; -import java.util.Date; import java.util.List; /** @@ -102,4 +101,12 @@ public class UserDto implements Serializable { public void setPrivileges(List privileges) { this.privileges = privileges; } + + public static List toDtos(List users) { + List dtos = new ArrayList<>(users.size()); + for (User user : users) { + dtos.add(new UserDto(user)); + } + return dtos; + } } diff --git a/src/main/java/com/monkeyk/sos/domain/dto/UserOverviewDto.java b/src/main/java/com/monkeyk/sos/domain/dto/UserOverviewDto.java index 9ca0fa3..9fc57ce 100644 --- a/src/main/java/com/monkeyk/sos/domain/dto/UserOverviewDto.java +++ b/src/main/java/com/monkeyk/sos/domain/dto/UserOverviewDto.java @@ -1,14 +1,3 @@ -/* - * Copyright (c) 2015 MONKEYK Information Technology Co. Ltd - * www.monkeyk.com - * All rights reserved. - * - * This software is the confidential and proprietary information of - * MONKEYK Information Technology Co. Ltd ("Confidential Information"). - * You shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement you - * entered into with MONKEYK Information Technology Co. Ltd. - */ package com.monkeyk.sos.domain.dto; import java.io.Serializable; @@ -33,6 +22,9 @@ public class UserOverviewDto implements Serializable { public UserOverviewDto() { } + public int getSize() { + return userDtos.size(); + } public String getUsername() { return username; diff --git a/src/main/java/com/monkeyk/sos/domain/user/UserRepository.java b/src/main/java/com/monkeyk/sos/domain/user/UserRepository.java index 80ea747..eaf2c57 100644 --- a/src/main/java/com/monkeyk/sos/domain/user/UserRepository.java +++ b/src/main/java/com/monkeyk/sos/domain/user/UserRepository.java @@ -2,6 +2,8 @@ package com.monkeyk.sos.domain.user; import com.monkeyk.sos.domain.shared.Repository; +import java.util.List; + /** * @author Shengzhao Li */ @@ -16,4 +18,5 @@ public interface UserRepository extends Repository { User findByUsername(String username); + List findUsersByUsername(String username); } \ No newline at end of file diff --git a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java index bf0644c..e3f773e 100644 --- a/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java +++ b/src/main/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbc.java @@ -14,17 +14,16 @@ package com.monkeyk.sos.infrastructure.jdbc; import com.monkeyk.sos.domain.user.Privilege; import com.monkeyk.sos.domain.user.User; import com.monkeyk.sos.domain.user.UserRepository; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.core.PreparedStatementSetter; import org.springframework.stereotype.Repository; -import java.sql.PreparedStatement; -import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.stream.Collectors; /** * 2015/11/16 @@ -59,9 +58,7 @@ public class UserRepositoryJdbc implements UserRepository { final List strings = this.jdbcTemplate.queryForList(sql, new Object[]{userId}, String.class); List privileges = new ArrayList<>(strings.size()); - for (String string : strings) { - privileges.add(Privilege.valueOf(string)); - } + privileges.addAll(strings.stream().map(Privilege::valueOf).collect(Collectors.toList())); return privileges; } @@ -69,38 +66,31 @@ public class UserRepositoryJdbc implements UserRepository { public void saveUser(final User user) { final String sql = " insert into user_(guid,archived,create_time,email,password,username,phone) " + " values (?,?,?,?,?,?,?) "; - this.jdbcTemplate.update(sql, new PreparedStatementSetter() { + this.jdbcTemplate.update(sql, ps -> { + ps.setString(1, user.guid()); + ps.setBoolean(2, user.archived()); - @Override - public void setValues(PreparedStatement ps) throws SQLException { - ps.setString(1, user.guid()); - ps.setBoolean(2, user.archived()); + ps.setTimestamp(3, Timestamp.valueOf(user.createTime())); + ps.setString(4, user.email()); - ps.setTimestamp(3, Timestamp.valueOf(user.createTime())); - ps.setString(4, user.email()); + ps.setString(5, user.password()); + ps.setString(6, user.username()); - ps.setString(5, user.password()); - ps.setString(6, user.username()); - - ps.setString(7, user.phone()); - } + ps.setString(7, user.phone()); }); } @Override public void updateUser(final User user) { final String sql = " update user_ set username = ?, password = ?, phone = ?,email = ? where guid = ? "; - this.jdbcTemplate.update(sql, new PreparedStatementSetter() { - @Override - public void setValues(PreparedStatement ps) throws SQLException { - ps.setString(1, user.username()); - ps.setString(2, user.password()); + this.jdbcTemplate.update(sql, ps -> { + ps.setString(1, user.username()); + ps.setString(2, user.password()); - ps.setString(3, user.phone()); - ps.setString(4, user.email()); + ps.setString(3, user.phone()); + ps.setString(4, user.email()); - ps.setString(5, user.guid()); - } + ps.setString(5, user.guid()); }); } @@ -117,4 +107,21 @@ public class UserRepositoryJdbc implements UserRepository { return user; } + + @Override + public List findUsersByUsername(String username) { + String sql = " select * from user_ where archived = 0 "; + Object[] params = new Object[]{}; + if (StringUtils.isNotEmpty(username)) { + sql += " and username like ?"; + params = new Object[]{"%" + username + "%"}; + } + sql += " order by create_time desc "; + + final List list = this.jdbcTemplate.query(sql, params, userRowMapper); + for (User user : list) { + user.privileges().addAll(findPrivileges(user.id())); + } + return list; + } } diff --git a/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java b/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java index 3d7aaea..e819406 100644 --- a/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java +++ b/src/main/java/com/monkeyk/sos/service/impl/UserServiceImpl.java @@ -1,5 +1,6 @@ package com.monkeyk.sos.service.impl; +import com.monkeyk.sos.domain.dto.UserDto; import com.monkeyk.sos.domain.dto.UserJsonDto; import com.monkeyk.sos.domain.dto.UserOverviewDto; import com.monkeyk.sos.domain.shared.security.WdcyUserDetails; @@ -16,6 +17,7 @@ import org.springframework.security.oauth2.provider.OAuth2Authentication; import org.springframework.stereotype.Service; import java.util.Collection; +import java.util.List; /** * @author Shengzhao Li @@ -52,7 +54,8 @@ public class UserServiceImpl implements UserService { @Override public UserOverviewDto loadUserOverviewDto(UserOverviewDto overviewDto) { - + List users = userRepository.findUsersByUsername(overviewDto.getUsername()); + overviewDto.setUserDtos(UserDto.toDtos(users)); return overviewDto; } diff --git a/src/main/webapp/WEB-INF/jsp/user_overview.jsp b/src/main/webapp/WEB-INF/jsp/user_overview.jsp index f20d824..7591b18 100644 --- a/src/main/webapp/WEB-INF/jsp/user_overview.jsp +++ b/src/main/webapp/WEB-INF/jsp/user_overview.jsp @@ -1,3 +1,4 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%-- * * @author Shengzhao Li @@ -13,5 +14,37 @@ Home

User Overview

+ +
+
+ +
+ +  Total: ${overviewDto.size} +
+
+ + + + + + + + + + + + + + + + + + + + + +
UsernamePrivilegePhoneEmailCreateTime
${user.username}${user.privileges}${user.phone}${user.email}${user.createTime}
\ No newline at end of file diff --git a/src/test/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbcTest.java b/src/test/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbcTest.java index 45ecd4d..7d871e4 100644 --- a/src/test/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbcTest.java +++ b/src/test/java/com/monkeyk/sos/infrastructure/jdbc/UserRepositoryJdbcTest.java @@ -17,6 +17,8 @@ import com.monkeyk.sos.infrastructure.AbstractRepositoryTest; import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.Test; +import java.util.List; + import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; @@ -46,6 +48,21 @@ public class UserRepositoryJdbcTest extends AbstractRepositoryTest { } + @Test + public void findUsersByUsername() { + User user = userRepository.findByGuid("oood"); + assertNull(user); + + user = new User("user", "123", "123", "ewo@honyee.cc"); + userRepository.saveUser(user); + + final List list = userRepository.findUsersByUsername(user.username()); + assertNotNull(list); + + assertEquals(list.size(), 1); + + } + @Test public void updateUser() {