(139) - User Overview/ user add/archive
							parent
							
								
									76882ed1da
								
							
						
					
					
						commit
						c4e12d10b5
					
				|  | @ -17,7 +17,6 @@ import com.monkeyk.sos.domain.user.User; | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
| import java.time.format.DateTimeFormatter; | import java.time.format.DateTimeFormatter; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Date; |  | ||||||
| import java.util.List; | import java.util.List; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  | @ -102,4 +101,12 @@ public class UserDto implements Serializable { | ||||||
|     public void setPrivileges(List<Privilege> privileges) { |     public void setPrivileges(List<Privilege> privileges) { | ||||||
|         this.privileges = privileges; |         this.privileges = privileges; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     public static List<UserDto> toDtos(List<User> users) { | ||||||
|  |         List<UserDto> dtos = new ArrayList<>(users.size()); | ||||||
|  |         for (User user : users) { | ||||||
|  |             dtos.add(new UserDto(user)); | ||||||
|  |         } | ||||||
|  |         return dtos; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -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; | package com.monkeyk.sos.domain.dto; | ||||||
| 
 | 
 | ||||||
| import java.io.Serializable; | import java.io.Serializable; | ||||||
|  | @ -33,6 +22,9 @@ public class UserOverviewDto implements Serializable { | ||||||
|     public UserOverviewDto() { |     public UserOverviewDto() { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     public int getSize() { | ||||||
|  |         return userDtos.size(); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     public String getUsername() { |     public String getUsername() { | ||||||
|         return username; |         return username; | ||||||
|  |  | ||||||
|  | @ -2,6 +2,8 @@ package com.monkeyk.sos.domain.user; | ||||||
| 
 | 
 | ||||||
| import com.monkeyk.sos.domain.shared.Repository; | import com.monkeyk.sos.domain.shared.Repository; | ||||||
| 
 | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * @author Shengzhao Li |  * @author Shengzhao Li | ||||||
|  */ |  */ | ||||||
|  | @ -16,4 +18,5 @@ public interface UserRepository extends Repository { | ||||||
| 
 | 
 | ||||||
|     User findByUsername(String username); |     User findByUsername(String username); | ||||||
| 
 | 
 | ||||||
|  |     List<User> findUsersByUsername(String username); | ||||||
| } | } | ||||||
|  | @ -14,17 +14,16 @@ package com.monkeyk.sos.infrastructure.jdbc; | ||||||
| import com.monkeyk.sos.domain.user.Privilege; | import com.monkeyk.sos.domain.user.Privilege; | ||||||
| import com.monkeyk.sos.domain.user.User; | import com.monkeyk.sos.domain.user.User; | ||||||
| import com.monkeyk.sos.domain.user.UserRepository; | import com.monkeyk.sos.domain.user.UserRepository; | ||||||
|  | import org.apache.commons.lang.StringUtils; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.jdbc.core.JdbcTemplate; | import org.springframework.jdbc.core.JdbcTemplate; | ||||||
| import org.springframework.jdbc.core.PreparedStatementSetter; |  | ||||||
| import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||||
| 
 | 
 | ||||||
| import java.sql.PreparedStatement; |  | ||||||
| import java.sql.SQLException; |  | ||||||
| import java.sql.Timestamp; | import java.sql.Timestamp; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 2015/11/16 |  * 2015/11/16 | ||||||
|  | @ -59,9 +58,7 @@ public class UserRepositoryJdbc implements UserRepository { | ||||||
|         final List<String> strings = this.jdbcTemplate.queryForList(sql, new Object[]{userId}, String.class); |         final List<String> strings = this.jdbcTemplate.queryForList(sql, new Object[]{userId}, String.class); | ||||||
| 
 | 
 | ||||||
|         List<Privilege> privileges = new ArrayList<>(strings.size()); |         List<Privilege> privileges = new ArrayList<>(strings.size()); | ||||||
|         for (String string : strings) { |         privileges.addAll(strings.stream().map(Privilege::valueOf).collect(Collectors.toList())); | ||||||
|             privileges.add(Privilege.valueOf(string)); |  | ||||||
|         } |  | ||||||
|         return privileges; |         return privileges; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -69,38 +66,31 @@ public class UserRepositoryJdbc implements UserRepository { | ||||||
|     public void saveUser(final User user) { |     public void saveUser(final User user) { | ||||||
|         final String sql = " insert into user_(guid,archived,create_time,email,password,username,phone) " + |         final String sql = " insert into user_(guid,archived,create_time,email,password,username,phone) " + | ||||||
|                 " values (?,?,?,?,?,?,?) "; |                 " values (?,?,?,?,?,?,?) "; | ||||||
|         this.jdbcTemplate.update(sql, new PreparedStatementSetter() { |         this.jdbcTemplate.update(sql, ps -> { | ||||||
|  |             ps.setString(1, user.guid()); | ||||||
|  |             ps.setBoolean(2, user.archived()); | ||||||
| 
 | 
 | ||||||
|             @Override |             ps.setTimestamp(3, Timestamp.valueOf(user.createTime())); | ||||||
|             public void setValues(PreparedStatement ps) throws SQLException { |             ps.setString(4, user.email()); | ||||||
|                 ps.setString(1, user.guid()); |  | ||||||
|                 ps.setBoolean(2, user.archived()); |  | ||||||
| 
 | 
 | ||||||
|                 ps.setTimestamp(3, Timestamp.valueOf(user.createTime())); |             ps.setString(5, user.password()); | ||||||
|                 ps.setString(4, user.email()); |             ps.setString(6, user.username()); | ||||||
| 
 | 
 | ||||||
|                 ps.setString(5, user.password()); |             ps.setString(7, user.phone()); | ||||||
|                 ps.setString(6, user.username()); |  | ||||||
| 
 |  | ||||||
|                 ps.setString(7, user.phone()); |  | ||||||
|             } |  | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public void updateUser(final User user) { |     public void updateUser(final User user) { | ||||||
|         final String sql = " update user_ set username = ?, password = ?, phone = ?,email = ? where guid = ? "; |         final String sql = " update user_ set username = ?, password = ?, phone = ?,email = ? where guid = ? "; | ||||||
|         this.jdbcTemplate.update(sql, new PreparedStatementSetter() { |         this.jdbcTemplate.update(sql, ps -> { | ||||||
|             @Override |             ps.setString(1, user.username()); | ||||||
|             public void setValues(PreparedStatement ps) throws SQLException { |             ps.setString(2, user.password()); | ||||||
|                 ps.setString(1, user.username()); |  | ||||||
|                 ps.setString(2, user.password()); |  | ||||||
| 
 | 
 | ||||||
|                 ps.setString(3, user.phone()); |             ps.setString(3, user.phone()); | ||||||
|                 ps.setString(4, user.email()); |             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; |         return user; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public List<User> 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<User> list = this.jdbcTemplate.query(sql, params, userRowMapper); | ||||||
|  |         for (User user : list) { | ||||||
|  |             user.privileges().addAll(findPrivileges(user.id())); | ||||||
|  |         } | ||||||
|  |         return list; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| package com.monkeyk.sos.service.impl; | 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.UserJsonDto; | ||||||
| import com.monkeyk.sos.domain.dto.UserOverviewDto; | import com.monkeyk.sos.domain.dto.UserOverviewDto; | ||||||
| import com.monkeyk.sos.domain.shared.security.WdcyUserDetails; | 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 org.springframework.stereotype.Service; | ||||||
| 
 | 
 | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * @author Shengzhao Li |  * @author Shengzhao Li | ||||||
|  | @ -52,7 +54,8 @@ public class UserServiceImpl implements UserService { | ||||||
| 
 | 
 | ||||||
|     @Override |     @Override | ||||||
|     public UserOverviewDto loadUserOverviewDto(UserOverviewDto overviewDto) { |     public UserOverviewDto loadUserOverviewDto(UserOverviewDto overviewDto) { | ||||||
| 
 |         List<User> users = userRepository.findUsersByUsername(overviewDto.getUsername()); | ||||||
|  |         overviewDto.setUserDtos(UserDto.toDtos(users)); | ||||||
|         return overviewDto; |         return overviewDto; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
|  | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> | ||||||
| <%-- | <%-- | ||||||
|  *  |  *  | ||||||
|  * @author Shengzhao Li |  * @author Shengzhao Li | ||||||
|  | @ -13,5 +14,37 @@ | ||||||
| <a href="../">Home</a> | <a href="../">Home</a> | ||||||
| 
 | 
 | ||||||
| <h2>User Overview</h2> | <h2>User Overview</h2> | ||||||
|  | 
 | ||||||
|  | <form action="" class="form-inline"> | ||||||
|  |     <div class="form-group"> | ||||||
|  |         <input type="text" class="form-control" placeholder="Type username" name="username" | ||||||
|  |                value="${overviewDto.username}"/> | ||||||
|  |     </div> | ||||||
|  |     <button type="submit" class="btn btn-default">Search</button> | ||||||
|  |      <span class="text-info">Total: ${overviewDto.size}</span> | ||||||
|  | </form> | ||||||
|  | <br/> | ||||||
|  | <table class="table table-bordered table-hover table-striped"> | ||||||
|  |     <thead> | ||||||
|  |     <tr> | ||||||
|  |         <th>Username</th> | ||||||
|  |         <th>Privilege</th> | ||||||
|  |         <th>Phone</th> | ||||||
|  |         <th>Email</th> | ||||||
|  |         <th>CreateTime</th> | ||||||
|  |     </tr> | ||||||
|  |     </thead> | ||||||
|  |     <tbody> | ||||||
|  |     <c:forEach items="${overviewDto.userDtos}" var="user"> | ||||||
|  |         <tr> | ||||||
|  |             <td>${user.username}</td> | ||||||
|  |             <td>${user.privileges}</td> | ||||||
|  |             <td>${user.phone}</td> | ||||||
|  |             <td>${user.email}</td> | ||||||
|  |             <td>${user.createTime}</td> | ||||||
|  |         </tr> | ||||||
|  |     </c:forEach> | ||||||
|  |     </tbody> | ||||||
|  | </table> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|  | @ -17,6 +17,8 @@ import com.monkeyk.sos.infrastructure.AbstractRepositoryTest; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.testng.annotations.Test; | import org.testng.annotations.Test; | ||||||
| 
 | 
 | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
| import static org.testng.AssertJUnit.assertEquals; | import static org.testng.AssertJUnit.assertEquals; | ||||||
| import static org.testng.AssertJUnit.assertNotNull; | import static org.testng.AssertJUnit.assertNotNull; | ||||||
| import static org.testng.AssertJUnit.assertNull; | 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<User> list = userRepository.findUsersByUsername(user.username()); | ||||||
|  |         assertNotNull(list); | ||||||
|  | 
 | ||||||
|  |         assertEquals(list.size(), 1); | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
|     @Test |     @Test | ||||||
|     public void updateUser() { |     public void updateUser() { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Li Shengzhao
						Li Shengzhao