diff --git a/src/main/java/cokr/xit/base/user/dao/UserMapper.java b/src/main/java/cokr/xit/base/user/dao/UserMapper.java index 5458279..2454b96 100644 --- a/src/main/java/cokr/xit/base/user/dao/UserMapper.java +++ b/src/main/java/cokr/xit/base/user/dao/UserMapper.java @@ -16,15 +16,21 @@ import cokr.xit.foundation.data.DataObject; @Mapper("userMapper") public interface UserMapper extends AbstractMapper { /**주어진 조건에 따라 사용자 목록을 조회하여 반환한다.
+ * {@link cokr.xit.base.user.service.UserService#getUserList(UserQuery)} 참고 * @param req 사용자 조회 요청 - *

by는 조건필드 - *

* @return 사용자 목록 */ List getUserList(UserQuery req); + /**지정한 아이디의 사용자 정보를 반환한다. + * @param userID 사용자 아이디 + * @return 지정한 아이디의 사용자 정보 + */ + default DataObject getUserInfo(String userID) { + List userList = getUserList(new UserQuery().setBy("userID").setTerm(userID)); + return !userList.isEmpty() ? userList.get(0) : null; + } + /**지정한 아이디의 사용자들을 반환한다. * @param 사용자 타입 * @param req 사용자 아이디를 설정한 요청 @@ -34,7 +40,7 @@ public interface UserMapper extends AbstractMapper { /**지정한 아이디의 사용자들을 반환한다. * @param 사용자 타입 - * @param userID 사용자 아이디 + * @param userIDs 사용자 아이디 * @return 사용자 */ default List getUsers(String... userIDs) { @@ -92,11 +98,6 @@ public interface UserMapper extends AbstractMapper { /**지정한 사용자들을 잠금 또는 잠김해제한다. * @param params 파라미터 - *
{
-	 *     "userIDs":사용자 아이디 배열,
-	 *     "lock": 잠금 여부(true || false)
-	 * }
- * @param userIDs 사용자 아이디 * @return 저장된 정보수 */ int lockUsers(Map params); @@ -119,10 +120,6 @@ public interface UserMapper extends AbstractMapper { /**지정한 사용자의 상태를 설정한다. * @param params 파라미터 - *
{
-	 *     "userIDs": 사용자 아이디 배열,
-	 *     "status": 사용자 상태(A, P, D)
-	 * }
* @return 저장된 정보수 */ int setStatus(Map params); diff --git a/src/main/java/cokr/xit/base/user/package-info.java b/src/main/java/cokr/xit/base/user/package-info.java index fbdbcf9..2886c04 100644 --- a/src/main/java/cokr/xit/base/user/package-info.java +++ b/src/main/java/cokr/xit/base/user/package-info.java @@ -1,5 +1,5 @@ /**사용자 정보 관리 모듈. - *

  • 사용자 클래스로 ManagedUser를 디폴트로 사용하고 있다.
  • + *
    • 사용자 클래스로 ManagedUser를 디폴트로 사용하고 있다.
    • *
    • 사용자 정보는 데이터베이스의 TBL_USER 테이블에 저장하여 관리한다
    • *
    • 사용자 클래스를 변경하려면 *
      • 변경하려는 사용자 정보 클래스를 선택하거나 새로 정의한다.
      • diff --git a/src/main/java/cokr/xit/base/user/service/UserQuery.java b/src/main/java/cokr/xit/base/user/service/UserQuery.java index 24d1a21..79fee21 100644 --- a/src/main/java/cokr/xit/base/user/service/UserQuery.java +++ b/src/main/java/cokr/xit/base/user/service/UserQuery.java @@ -12,7 +12,7 @@ public class UserQuery extends QueryRequest { private String[] userIDs; private String status; - /**비밀번호 필드포함 여부를 반환한다. + /**조회 결과에 비밀번호 필드포함 여부를 반환한다. * @return 비밀번호 필드포함 여부 *
        • 비밀번호 필드를 포함하려면 true
        • *
        • 그렇지 않으면 false
        • @@ -22,14 +22,16 @@ public class UserQuery extends QueryRequest { return password; } - /**비밀번호 필드포함 여부를 설정한다. + /**조회 결과에 비밀번호 필드포함 여부를 설정한다. * @param password 비밀번호 필드포함 여부 *
          • 비밀번호 필드를 포함하려면 true
          • *
          • 그렇지 않으면 false
          • *
          + * @return UserQuery */ - public void setPassword(boolean password) { + public T setPassword(boolean password) { this.password = password; + return self(); } /**사용자 아이디를 반환한다. @@ -41,7 +43,7 @@ public class UserQuery extends QueryRequest { /**사용자 아이디를 설정한다. * @param userIDs 사용자 아이디 - * @returns UserQuery + * @return UserQuery */ public T setUserIDs(String... userIDs) { this.userIDs = userIDs; @@ -67,8 +69,10 @@ public class UserQuery extends QueryRequest { *
        • 'D' - 삭제
        • *
        • 지정하지 않으면 삭제되지 않은 전체 사용자
        • *
        + * @return UserQuery */ - public void setStatus(String status) { + public T setStatus(String status) { this.status = status; + return self(); } } \ No newline at end of file diff --git a/src/main/java/cokr/xit/base/user/service/UserService.java b/src/main/java/cokr/xit/base/user/service/UserService.java index d81ea1f..f13a845 100644 --- a/src/main/java/cokr/xit/base/user/service/UserService.java +++ b/src/main/java/cokr/xit/base/user/service/UserService.java @@ -18,12 +18,33 @@ import cokr.xit.foundation.data.DataObject; * @author mjkhan */ public interface UserService { - /**주어진 조건에 따라 사용자 목록을 조회하여 반환한다.
        - * @param req 사용자 조회 요청 + /**주어진 조건에 따라 사용자 목록을 조회하여 반환한다. + * @param req 사용자 조회 조건 + *
        • by: 조건 필드 이름 + *
          • userID - 사용자 아이디
          • + *
          • 그 외는 사용자 이름
          • + *
          + *
        • + *
        • term: 조건 필드값
        • + *
        • status: 상태 코드. 지정하지 않으면 삭제되지 않은 모든 사용자 + *
          • A - 신청
          • + *
          • P - 승인
          • + *
          • D - 삭제
          • + *
          + *
        • + *
        • pageNum: 페이지 번호
        • + *
        • fetchSize: 페이지 목록 건수
        • + *
        * @return 사용자 목록 */ List getUserList(UserQuery req); + /**지정한 아이디의 사용자 정보를 반환한다.
        + * @param userID 사용자 아이디 + * @return 사용자 정보 + */ + DataObject getUserInfo(String userID); + /**지정한 아이디의 사용자들을 반환한다. * @param 사용자 타입 * @param userIDs 사용자 아이디 diff --git a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java index 9759105..cb2806f 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/UserBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/UserBean.java @@ -24,11 +24,8 @@ public class UserBean extends AbstractComponent { protected CharsEncoder passwordEncoder; /**주어진 조건에 따라 사용자 목록을 조회하여 반환한다.
        - * @param req 사용자 조회 요청 - *

        by는 조건필드 - *

        • 'userName' - 사용자 이름(디폴트)
        • - *
        • 'userID' - 사용자 아이디
        • - *
        + * {@link cokr.xit.base.user.service.UserService#getUserList(UserQuery)} 참고 + * @param req 사용자 조회 조건 * @return 사용자 목록 */ public List getUserList(UserQuery req) { @@ -40,6 +37,14 @@ public class UserBean extends AbstractComponent { return userMapper.getUserList(req); } + /**지정한 아이디의 사용자 정보를 반환한다.
        + * @param userID 사용자 아이디 + * @return 사용자 정보 + */ + public DataObject getUserInfo(String userID) { + return userMapper.getUserInfo(userID); + } + /**지정한 아이디의 사용자들을 반환한다. * @param 사용자 타입 * @param userIDs 사용자 아이디 @@ -87,7 +92,7 @@ public class UserBean extends AbstractComponent { *
      */ public boolean update(User user) { - return user!= null ? userMapper.updateUser(user) > 0 : false; + return user!= null && userMapper.updateUser(user) > 0; } /**지정한 사용자들의 비밀번호를 변경한다. {@link cokr.xit.foundation.util.CharsEncoder 비밀번호는 암호화}하여 저장한다. diff --git a/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java b/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java index 2b55e57..cf132e0 100644 --- a/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java +++ b/src/main/java/cokr/xit/base/user/service/bean/UserServiceBean.java @@ -27,6 +27,11 @@ public class UserServiceBean extends AbstractServiceBean implements UserService return userBean.getUserList(req); } + @Override + public DataObject getUserInfo(String userID) { + return userBean.getUserInfo(userID); + } + @Override public List getUsers(String... userIDs) { return userBean.getUsers(userIDs); diff --git a/src/main/java/cokr/xit/base/user/web/UserController.java b/src/main/java/cokr/xit/base/user/web/UserController.java index 25c09e1..8e7c3b5 100644 --- a/src/main/java/cokr/xit/base/user/web/UserController.java +++ b/src/main/java/cokr/xit/base/user/web/UserController.java @@ -27,8 +27,7 @@ public class UserController extends AbstractController { /**사용자 관리 메인화면(user/user-main)을 연다. * 조건없는 {@link #getUserList(UserQuery) 사용자 조회 결과}를 포함시킨다. - * @return ModelAndView - * + * @return base/user/user-main */ @RequestMapping(name="사용자 메인", value="/main.do") public ModelAndView main() { @@ -37,14 +36,15 @@ public class UserController extends AbstractController { return mav.addObject("userList", toJson(mav.getModel().get("userList"))); } - /**{@link UserService#getUserList(UserQuery)} 참고. - * @param req 사용자 조회 요청 + /**사용자 목록을 조회하여 반환한다.
      + * {@link UserService#getUserList(UserQuery)} 참고 + * @param req 사용자 조회 조건 * @return jsonView - *
      {
      -	 *     "userList": [...], // 사용자 목록
      -	 *     "userStart": 0,    // 사용자 목록 시작 인덱스
      -	 *     "userFetch": 10,   // 한 번에 가져오는 사용자 목록 수
      -	 *     "userTotal":       // 조회 결과 찾은 전체 사용자 수
      +	 * 
       {
      +	 *     "userList": [사용자 목록]
      +	 *     "userStart": 사용자 목록 시작 인덱스
      +	 *     "userFetch": 한 번에 가져오는 사용자 목록 수
      +	 *     "userTotal": 조회 결과 찾은 전체 사용자 수
       	 * }
      */ @RequestMapping(name="사용자 조회", value="/list.do") @@ -54,7 +54,11 @@ public class UserController extends AbstractController { } /**사용자 선택을 위한 화면을 연다. - * @return "base/user/select-user" + * @param multiple 여러 사용자 선택 여부 + *
      • 여러 사용자를 선택하려면 true
      • + *
      • 그렇지 않으면 false
      • + *
      + * @return base/user/select-user */ @RequestMapping(name="사용자 선택", value="/select.do") public ModelAndView select(boolean multiple) { @@ -66,9 +70,9 @@ public class UserController extends AbstractController { /**지정한 사용자 아이디가 사용 중인지 반환한다. * @param userID 사용자 아이디 - * @return - *
      {
      -	 *     "duplicate": true || false // 사용 중이면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "duplicate": 사용 중이면 true, 그렇지 않으면 false
       	 * }
      */ @RequestMapping(name="중복 확인", value="/duplicate.do") @@ -80,19 +84,15 @@ public class UserController extends AbstractController { /**지정한 아이디의 사용자 정보를 반환한다. * @param userID 사용자 아이디 - * @return jsonView + * @return base/user/user-info 또는 jsonView *
      {
      -	 *     "userInfo": 사용자 정보(map)
      +	 *     "userInfo": 사용자 정보
       	 * }
      */ @RequestMapping(name="사용자 정보 조회", value="/info.do") public ModelAndView getInfo(String userID) { if (!isEmpty(userID)) { - UserQuery req = new UserQuery() - .setBy("userID") - .setTerm(userID); - List userList = userService.getUserList(req); - DataObject userInfo = !userList.isEmpty() ? userList.get(0) : null; + DataObject userInfo = userService.getUserInfo(userID); boolean json = jsonResponse(); return new ModelAndView(json ? "jsonView" : "base/user/user-info") .addObject("userInfo", json ? userInfo : toJson(userInfo)); @@ -103,9 +103,9 @@ public class UserController extends AbstractController { /**사용자를 등록한다. * @param user 사용자 정보 - * @return - *
      {
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "saved": 등록되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="사용자 등록", value="/create.do") @@ -117,9 +117,9 @@ public class UserController extends AbstractController { /**사용자 정보를 수정한다. * @param user 사용자 정보 - * @return - *
      {
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "saved": 수정되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="사용자 수정", value="/update.do") @@ -132,10 +132,10 @@ public class UserController extends AbstractController { /**사용자 비밀번호를 변경한다. * @param userID 사용자 아이디 * @param password 비밀번호 - * @return - *
      {
      -	 *     "affected": 1, // 저장된 정보수
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "affected": 저장된 정보수,
      +	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="비밀번호 변경", value="/changePassword.do") @@ -148,10 +148,10 @@ public class UserController extends AbstractController { /**사용자 가입신청을 승인한다. * @param userIDs 사용자 아이디 - * @return - *
      {
      -	 *     "affected": 1, // 저장된 정보수
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "affected": 저장된 정보수
      +	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="사용자 가입 승인", value="/approve.do") @@ -163,12 +163,15 @@ public class UserController extends AbstractController { } /**사용자 잠금이나 잠금해제를 수행한다. - * @param lock 잠금 여부(잠그면 true, 잠금을 해제하면 false) + * @param lock 잠금 여부 + *
      • 잠금이면 true
      • + *
      • 잠금을 해제하면 false
      • + *
      * @param userIDs 사용자 아이디 - * @return - *
      {
      -	 *     "affected": 1, // 저장된 정보수
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "affected": 저장된 정보수
      +	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="사용자 잠김/잠김해제", value="/unlock.do") @@ -181,10 +184,10 @@ public class UserController extends AbstractController { /**지정한 사용자를 제거한다. * @param userIDs 사용자 아이디 - * @return - *
      {
      -	 *     "affected": 1, // 저장된 정보수
      -	 *     "saved": true || false // 저장되었으면 true, 그렇지 않으면 false
      +	 * @return jsonView
      +	 * 
       {
      +	 *     "affected": 저장된 정보수
      +	 *     "saved": 저장되었으면 true, 그렇지 않으면 false
       	 * }
      */ @PostMapping(name="사용자 제거", value="/remove.do")