사용자관리 버그 수정 및 요청사항 반영, 검색 양식 변경.

master
강석 최 2022-01-11 16:42:08 +09:00
parent 83aab6fb11
commit f4103b95e3
6 changed files with 69 additions and 71 deletions

View File

@ -34,9 +34,9 @@ public class UserInfo extends BaseModel implements UserDetails{
@Column(name = "NAME") @Column(name = "NAME")
private String name; private String name;
@Column(name = "POSITION") @Column(name = "POSITION")
private int position; private Integer position;
@Column(name = "DEPARTMENT") @Column(name = "DEPARTMENT")
private int department; private Integer department;
@Column(name = "USER_ROLE") @Column(name = "USER_ROLE")
private String userRole; private String userRole;
@Column(name = "CREATE_DATE", updatable = false) @Column(name = "CREATE_DATE", updatable = false)

View File

@ -22,6 +22,9 @@ public class UserInfoService implements UserDetailsService {
@Transactional @Transactional
public String insertUserInfo(UserInfo userInfo){ public String insertUserInfo(UserInfo userInfo){
if(userInfoRepository.findByUserId(userInfo.getUserId()).orElse(null) != null){
return "userIdDuplication";
}
userInfo.setPassword(convertPassword(userInfo.getPassword())); userInfo.setPassword(convertPassword(userInfo.getPassword()));
return userInfoRepository.save(userInfo).getUserId(); return userInfoRepository.save(userInfo).getUserId();
} }

View File

@ -20,18 +20,18 @@
ON A.POSITION = B.CODE_SQ ON A.POSITION = B.CODE_SQ
INNER JOIN COMMON_CODE C INNER JOIN COMMON_CODE C
on A.DEPARTMENT = C.CODE_SQ on A.DEPARTMENT = C.CODE_SQ
<where> WHERE A.USER_STATUS != 'D'
<if test="userId != null and userId != ''"> <if test="userId != null and userId != ''">
AND A.USER_ID LIKE CONCAT ('%', #{userId},'%') AND A.USER_ID LIKE CONCAT ('%', #{userId},'%')
</if> </if>
<if test="name != null and name != ''"> <if test="name != null and name != ''">
AND A.USER_ID LIKE CONCAT ('%', #{name},'%') AND A.NAME LIKE CONCAT ('%', #{name},'%')
</if> </if>
<if test="positionName != null and positionName != ''"> <if test="position != null and position != 0">
AND B.VALUE LIKE CONCAT ('%', #{positionName},'%') AND A.POSITION = #{position}
</if> </if>
<if test="departmentName != null and departmentName != ''"> <if test="department != null and department != 0">
AND C.VALUE LIKE CONCAT ('%', #{departmentName},'%') AND A.DEPARTMENT = #{department}
</if> </if>
<if test="startDate != null and startDate != ''"> <if test="startDate != null and startDate != ''">
AND A.CREATE_DATE >= #{startDate} AND A.CREATE_DATE >= #{startDate}
@ -39,7 +39,6 @@
<if test="endDate != null and endDate != ''"> <if test="endDate != null and endDate != ''">
AND A.CREATE_DATE &lt;= #{endDate} AND A.CREATE_DATE &lt;= #{endDate}
</if> </if>
</where>
ORDER BY CREATE_DATE DESC ORDER BY CREATE_DATE DESC
LIMIT #{rowCnt} OFFSET #{firstIndex} LIMIT #{rowCnt} OFFSET #{firstIndex}
</select> </select>
@ -47,22 +46,18 @@
<select id="selectUserInfoListCnt" resultType="int" parameterType="UserInfo"> <select id="selectUserInfoListCnt" resultType="int" parameterType="UserInfo">
SELECT COUNT(*) SELECT COUNT(*)
FROM USER_INFO A FROM USER_INFO A
INNER JOIN COMMON_CODE B WHERE A.USER_STATUS != 'D'
ON A.POSITION = B.CODE_SQ
INNER JOIN COMMON_CODE C
ON A.DEPARTMENT = C.CODE_SQ
<where>
<if test="userId != null and userId != ''"> <if test="userId != null and userId != ''">
AND A.USER_ID LIKE CONCAT ('%', #{userId},'%') AND A.USER_ID LIKE CONCAT ('%', #{userId},'%')
</if> </if>
<if test="name != null and name != ''"> <if test="name != null and name != ''">
AND A.USER_ID LIKE CONCAT ('%', #{name},'%') AND A.NAME LIKE CONCAT ('%', #{name},'%')
</if> </if>
<if test="positionName != null and positionName != ''"> <if test="position != null and position != 0">
AND B.VALUE LIKE CONCAT ('%', #{positionName},'%') AND A.POSITION = #{position}
</if> </if>
<if test="departmentName != null and departmentName != ''"> <if test="department != null and department != 0">
AND C.VALUE LIKE CONCAT ('%', #{departmentName},'%') AND A.DEPARTMENT = #{department}
</if> </if>
<if test="startDate != null and startDate != ''"> <if test="startDate != null and startDate != ''">
AND A.CREATE_DATE >= #{startDate} AND A.CREATE_DATE >= #{startDate}
@ -70,6 +65,5 @@
<if test="endDate != null and endDate != ''"> <if test="endDate != null and endDate != ''">
AND A.CREATE_DATE &lt;= #{endDate} AND A.CREATE_DATE &lt;= #{endDate}
</if> </if>
</where>
</select> </select>
</mapper> </mapper>

View File

@ -30,9 +30,6 @@ $(document).on('click', '.page-item', function (){
$("#searchBtn").click(); $("#searchBtn").click();
}) })
$(document).on('change', '#searchConditionSelector', function (){
setSearchCondition();
})
$(document).on('change', '#passwordUpdateFlag', function (){ $(document).on('change', '#passwordUpdateFlag', function (){
const passwordDiv = $(".passwordDiv"); const passwordDiv = $(".passwordDiv");
if(this.checked){ if(this.checked){
@ -53,10 +50,14 @@ $(document).on('click', '#saveBtn', function (){
url : "/admin/insertUserInfo", url : "/admin/insertUserInfo",
processData: false, processData: false,
contentType: false, contentType: false,
success : function(data) { success : function(result) {
alert("저장되었습니다.") if(result === "userIdDuplication"){
$("#closeModalBtn").click(); alert("등록된 아이디입니다.")
$("#searchBtn").click(); }else{
alert("저장되었습니다.")
$("#closeModalBtn").click();
$("#searchBtn").click();
}
}, },
error : function(xhr, status) { error : function(xhr, status) {
@ -212,22 +213,4 @@ function childCategoryStatusChange(parentSeq, flag){
childCategoryStatusChange($(el).attr("data-categoryseq"), flag); childCategoryStatusChange($(el).attr("data-categoryseq"), flag);
}) })
} }
}
function setSearchCondition(){
const searchConditionSelector = $("#searchConditionSelector").val();
const searchTextDiv = $("#searchTextDiv");
const dateSelectorDiv = $("#dateSelectorDiv");
if(searchConditionSelector === "createDate"){
dateSelectorDiv.show();
dateSelectorDiv.children().removeAttr("disabled");
searchTextDiv.hide();
searchTextDiv.children().attr("disabled", "disabled");
}else{
$("#textSearch").attr("name", searchConditionSelector);
searchTextDiv.show();
searchTextDiv.children().removeAttr("disabled");
dateSelectorDiv.hide();
dateSelectorDiv.children().attr("disabled", "disabled");
}
} }

View File

@ -62,6 +62,7 @@
<select class="form-select" id="userStatus" name="userStatus"> <select class="form-select" id="userStatus" name="userStatus">
<option value="T" th:selected="${userInfo.userStatus=='T'}">활성화</option> <option value="T" th:selected="${userInfo.userStatus=='T'}">활성화</option>
<option value="F" th:selected="${userInfo.userStatus=='F'}">비활성화</option> <option value="F" th:selected="${userInfo.userStatus=='F'}">비활성화</option>
<option value="D" th:selected="${userInfo.userStatus=='D'}">비활성화&목록에서 삭제</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -32,34 +32,51 @@
</select> </select>
</div> </div>
</div> </div>
<div class="col-auto"> <div class="col-auto card">
<div class="row justify-content-end"> <div class="row justify-content-end pt-1">
<div class="col-auto"> <div class="col-auto">
<select class="form-select" id="searchConditionSelector"> <div class="row mb-1">
<option value="userId" th:selected="${searchParams.userId!=null and searchParams.userId!=''}">아이디</option> <label for="searchUserId" class="col-sm-2 col-form-label">아이디</label>
<option value="name" th:selected="${searchParams.name!=null and searchParams.name!=''}">이름</option> <div class="col-sm-4">
<option value="positionName" th:selected="${searchParams.positionName!=null and searchParams.positionName!=''}">부서</option> <input type="text" class="form-control form-control-sm" id="searchUserId" name="userId" th:value="${searchParams.userId}">
<option value="departmentName" th:selected="${searchParams.departmentName!=null and searchParams.departmentName!=''}">직급</option> </div>
<option value="createDate" th:selected="${searchParams.startDate!=null and searchParams.startDate!=''} or ${searchParams.endDate!=null and searchParams.endDate!=''}">생성일</option> <label for="searchName" class="col-sm-2 col-form-label">이름</label>
</select> <div class="col-sm-4">
<input type="text" class="form-control form-control-sm" id="searchName" name="name" th:value="${searchParams.name}">
</div>
</div>
<div class="row mb-1">
<label for="searchPosition" class="col-sm-2 col-form-label">직책</label>
<div class="col-sm-4">
<select class="form-select" id="searchPosition" name="position">
<option value="0" selected>선택해주세요</option>
<th:block th:each="commonCode:${session.positionList}">
<option th:value="${commonCode.codeSq}" th:text="${commonCode.value}" th:selected="${commonCode.codeSq == searchParams.position}"></option>
</th:block>
</select>
</div>
<label for="searchDepartment" class="col-sm-2 col-form-label">부서</label>
<div class="col-sm-4">
<select class="form-select" id="searchDepartment" name="department">
<option value="0" selected>선택해주세요</option>
<th:block th:each="commonCode:${session.departmentList}">
<option th:value="${commonCode.codeSq}" th:text="${commonCode.value}" th:selected="${commonCode.codeSq == searchParams.department}"></option>
</th:block>
</select>
</div>
</div>
<div class="row">
<label for="startDate" class="col-sm-2 col-form-label">생성일</label>
<div class="col-sm-6">
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv">
<input type="text" class="form-control form-control-sm" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" th:value="${searchParams.startDate}" readonly>
<input type="text" class="form-control form-control-sm" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" th:value="${searchParams.endDate}" readonly>
</div>
</div>
</div>
</div> </div>
<div class="col-auto" id="searchTextDiv"> <div class="col-auto my-auto">
<input type="text" class="form-control" id="textSearch" th:value="${ <input type="submit" class="btn btn-primary py-4" id="searchBtn" value="검색">
(searchParams.userId!=null and searchParams.userId!='')?searchParams.userId:(
(searchParams.name!=null and searchParams.name!='')?searchParams.name:(
(searchParams.positionName!=null and searchParams.positionName!='')?searchParams.positionName:(
(searchParams.departmentName!=null and searchParams.departmentName!='')?searchParams.departmentName:''
)
)
)
}">
</div>
<div class="col-auto input-group w-auto input-daterange" id="dateSelectorDiv" style="display: none">
<input type="text" class="form-control" id="startDate" name="startDate" placeholder="시작일" autocomplete="off" disabled th:value="${searchParams.startDate}">
<input type="text" class="form-control" id="endDate" name="endDate" placeholder="종료일" autocomplete="off" disabled th:value="${searchParams.endDate}">
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary" id="searchBtn" value="검색">
</div> </div>
</div> </div>
</div> </div>