사용자 목록 중간저장
parent
7376a86de3
commit
babd8ac3e9
|
|
@ -6,6 +6,8 @@ import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
|
|||
import EgovPaging from "components/EgovPaging";
|
||||
import * as EgovNet from "api/egovFetch";
|
||||
import {itemIdxByPage} from "utils/calc";
|
||||
import Modal from "react-bootstrap/Modal";
|
||||
import UserInfoModal from "./UserInfoModal";
|
||||
|
||||
|
||||
function List(props) {
|
||||
|
|
@ -19,6 +21,12 @@ function List(props) {
|
|||
const cndRef = useRef();
|
||||
const wrdRef = useRef();
|
||||
|
||||
const [show, setShow] = useState(false);
|
||||
const [modalBody, setModalBody] = useState();
|
||||
|
||||
const handleClose = () => setShow(false);
|
||||
const handleShow = () => setShow(true);
|
||||
|
||||
const retrieveList = useCallback((searchCondition) => {
|
||||
const params = "?";
|
||||
EgovNet.requestFetch(
|
||||
|
|
@ -44,11 +52,11 @@ function List(props) {
|
|||
mutListTag.push(
|
||||
<div className={"list_item"}>
|
||||
<div>{item.userSe}</div>
|
||||
<div>{item.userId}</div>
|
||||
<div><a href={"#"} onClick={()=>{userInfoModal(item.userSeq)}}>{item.userId}</a></div>
|
||||
<div>{item.userNm}</div>
|
||||
<div>{item.email}</div>
|
||||
<div>{item.phoneNum}</div>
|
||||
<div>{item.useYn}</div>
|
||||
<div>{item.status}</div>
|
||||
<div><button className={"btn btn_red_h31 px-1"}>삭제</button></div>
|
||||
</div>
|
||||
);
|
||||
|
|
@ -66,6 +74,11 @@ function List(props) {
|
|||
retrieveList(searchCondition);
|
||||
}, []);
|
||||
|
||||
function userInfoModal(userSeq){
|
||||
handleShow()
|
||||
setModalBody(<UserInfoModal userSeq={userSeq}></UserInfoModal>)
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="container">
|
||||
<div className="c_wrap">
|
||||
|
|
@ -124,11 +137,6 @@ function List(props) {
|
|||
}}>조회</button>
|
||||
</span>
|
||||
</li>
|
||||
{/*{masterBoard.bbsUseFlag === 'Y' &&
|
||||
<li>
|
||||
<Link to={URL.ADMIN_NOTICE_CREATE} state={{bbsId: bbsId}} className="btn btn_blue_h46 pd35">등록</Link>
|
||||
</li>
|
||||
}*/}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
|
@ -161,6 +169,9 @@ function List(props) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Modal show={show} onHide={handleClose} keyboard={false}>
|
||||
{modalBody}
|
||||
</Modal>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,143 @@
|
|||
import React, {useEffect, useState} from "react"
|
||||
import Modal from "react-bootstrap/Modal";
|
||||
import * as EgovNet from "../../../api/egovFetch";
|
||||
import Form from "react-bootstrap/Form";
|
||||
import Row from "react-bootstrap/Row";
|
||||
import Col from "react-bootstrap/Col";
|
||||
import Button from "react-bootstrap/Button";
|
||||
|
||||
function UserInfoModal({userSeq}){
|
||||
|
||||
const [userInfo, setUserInfo] = useState({ id: '', password: '', passwordChk: '', userNm: '', email: '', phoneNum: ''});
|
||||
|
||||
function getModalContent(){
|
||||
EgovNet.requestFetch(
|
||||
'/admin/users/info?userSeq='+userSeq,
|
||||
{
|
||||
method: "GET"
|
||||
},
|
||||
(resp) => {
|
||||
const respInfo = {
|
||||
id: resp.result.userInfo.userId,
|
||||
userNm: resp.result.userInfo.userNm,
|
||||
email: resp.result.userInfo.email,
|
||||
phoneNum: resp.result.userInfo.phoneNum,
|
||||
password: "",
|
||||
passwordChk: "",
|
||||
}
|
||||
setUserInfo(respInfo);
|
||||
},
|
||||
(resp) => {
|
||||
console.log("err response : ", resp);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function userInfoChange(){
|
||||
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
getModalContent();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<>
|
||||
<Modal.Header className="bookmarkModalHeader" closeButton>
|
||||
<Modal.Title>
|
||||
{userInfo.userNm} 상세정보
|
||||
</Modal.Title>
|
||||
</Modal.Header>
|
||||
<Modal.Body>
|
||||
<Form onSubmit={userInfoChange} noValidate>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
아이디
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="text" name="id" placeholder="아이디" required value={userInfo?.id}
|
||||
onChange={e => setUserInfo({ ...userInfo, id: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
이름
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="text" name="userNm" placeholder="이름" required value={userInfo?.userNm}
|
||||
onChange={e => setUserInfo({ ...userInfo, userNm: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
이메일
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="email" name="email" placeholder="email" required value={userInfo?.email}
|
||||
onChange={e => setUserInfo({ ...userInfo, email: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
연락처
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="text" name="phoneNum" placeholder="연락처" required value={userInfo?.phoneNum}
|
||||
onChange={e => setUserInfo({ ...userInfo, phoneNum: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
비밀번호
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="password" name="password" placeholder="비밀번호 변경 시 입력"
|
||||
onChange={e => setUserInfo({ ...userInfo, password: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
비밀번호 확인
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
<Form.Control type="password" name="passwordChk" placeholder="비밀번호 변경 시 입력"
|
||||
onChange={e => setUserInfo({ ...userInfo, passwordChk: e.target.value })}/>
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
사용자 유형
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
사용자 권한
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Form.Group as={Row} className="mb-3" controlId="formHorizontalEmail">
|
||||
<Form.Label column sm={3}>
|
||||
상태
|
||||
</Form.Label>
|
||||
<Col sm={9}>
|
||||
|
||||
</Col>
|
||||
</Form.Group>
|
||||
<Row className="mb-3">
|
||||
<Form.Label column xs={{span:8, offset:2}} id="findResultLabel"></Form.Label>
|
||||
<Col xs={2}>
|
||||
<Button type="submit">저장</Button>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
</Modal.Body>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default UserInfoModal;
|
||||
|
|
@ -47,4 +47,22 @@ public class AdminUsersController extends BaseController {
|
|||
return resultVO;
|
||||
}
|
||||
|
||||
@Operation(
|
||||
summary = "사용자 정보 조회",
|
||||
description = "사용자 정보 조회",
|
||||
tags = {"AdminUsersController"}
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@RequestMapping(method = RequestMethod.GET, value = "/info")
|
||||
public ResultVO getUserInfo(UserInfo params) throws Exception{
|
||||
ResultVO resultVO = new ResultVO();
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("userInfo", adminUsersService.selectUserInfo(params.getUserSeq()));
|
||||
resultVO.setResult(resultMap);
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,4 +22,10 @@ public class AdminUsersService {
|
|||
public Integer selectUserListCnt(UserInfo params) {
|
||||
return usersMapper.selectUserListCnt(params);
|
||||
}
|
||||
|
||||
public UserInfo selectUserInfo(Integer userSeq) {
|
||||
UserInfo info = userInfoRepository.findById(userSeq).orElse(new UserInfo());
|
||||
info.setPassword(null);
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,11 +7,14 @@ import lombok.NoArgsConstructor;
|
|||
import lombok.Setter;
|
||||
import org.hibernate.annotations.DynamicInsert;
|
||||
import org.hibernate.annotations.DynamicUpdate;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
|
@ -42,8 +45,16 @@ public class UserInfo extends BoardParams implements UserDetails{
|
|||
private String phoneNum;
|
||||
@Column(name = "user_role")
|
||||
private String userRole;
|
||||
@Column(name = "use_yn")
|
||||
private String useYn;
|
||||
@Column(name = "status")
|
||||
private String status;
|
||||
@Column(name = "frst_crt_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime frstCrtDt;
|
||||
@Column(name = "last_chg_id")
|
||||
private String lastChgId;
|
||||
@Column(name = "last_chg_dt")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastChgDt;
|
||||
|
||||
@Override
|
||||
@JsonIgnore
|
||||
|
|
@ -76,8 +87,9 @@ public class UserInfo extends BoardParams implements UserDetails{
|
|||
}
|
||||
|
||||
@Override
|
||||
@JsonIgnore
|
||||
public boolean isEnabled() {
|
||||
return true;
|
||||
return getStatus().equals("USE_ST");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
|
|||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
|
|
@ -63,6 +64,8 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements Ego
|
|||
info.setEmail(loginVO.getEmail());
|
||||
info.setPhoneNum(loginVO.getPhoneNum());
|
||||
info.setUserSe("ACC_TP02");
|
||||
info.setStatus("USE_ST");
|
||||
info.setFrstCrtDt(LocalDateTime.now());
|
||||
userInfoRepository.save(info);
|
||||
return info.getUserSeq();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.dbnt.kcscbackend.config.common;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
|
@ -39,9 +40,11 @@ public class BoardParams implements Serializable {
|
|||
@Schema(description = "정렬순서(DESC,ASC)")
|
||||
private long sortOrdr = 0L;
|
||||
|
||||
@JsonIgnore
|
||||
public void setQueryInfo(){
|
||||
setFirstIndex((getPageIndex()-1)*getRowCnt());
|
||||
}
|
||||
@JsonIgnore
|
||||
public void setPaginationInfo(){
|
||||
int contentCnt = getContentCnt();
|
||||
int rowCnt = getRowCnt();
|
||||
|
|
|
|||
|
|
@ -5,14 +5,16 @@
|
|||
|
||||
<select id="selectUserList" parameterType="UserInfo" resultType="UserInfo">
|
||||
select user_seq,
|
||||
user_id,
|
||||
email,
|
||||
user_se,
|
||||
user_nm,
|
||||
phone_num,
|
||||
user_role,
|
||||
use_yn
|
||||
from user_info
|
||||
a.user_id,
|
||||
a.email,
|
||||
b.item_nm as user_se,
|
||||
a.user_nm,
|
||||
a.phone_num,
|
||||
a.user_role,
|
||||
c.item_nm as status
|
||||
from user_info a
|
||||
inner join tc_code_item b on a.user_se = b.item_cd
|
||||
inner join tc_code_item c on a.status = c.item_cd
|
||||
<include refid="selectUserListWhere"></include>
|
||||
order by user_seq asc
|
||||
limit #{rowCnt} offset #{firstIndex}
|
||||
|
|
|
|||
Loading…
Reference in New Issue