Merge remote-tracking branch 'origin/master'

This commit is contained in:
JSYOO 2021-10-13 14:07:13 +09:00
commit 2f0e3170f8
13 changed files with 174 additions and 45 deletions

View File

@ -121,7 +121,7 @@ public class QRCodeUtil {
* @return
* @throws Exception
*/
public static BufferedImage generateMemberQRCodeImage(NlibLoginVO loginVO) throws Exception {
public static BufferedImage generateMemberQrcodeImage(NlibLoginVO loginVO) throws Exception {
if(loginVO == null) {
throw new Exception("QR 2D바코드로 생성할 사용자 정보가 없습니다.");

View File

@ -61,31 +61,17 @@ public class CollectionServiceImpl implements CollectionService {
String message = null;
// 입력값 확인
String mngOrgCd = searchVO.getMngOrgCd();
String masterId = searchVO.getMasterId();
String typeDivCd = searchVO.getTypeDivCd();
String mbInfoId = searchVO.getMbInfoId();
if(StringUtil.isEmpty(mngOrgCd)) {
message = "[필수값 미입력] 지방문화원정보가 입력되지 않았습니다.";
return new CollectionVO("E101", message);
}
if(StringUtil.isEmpty(masterId)) {
message = "[필수값 미입력] 자료 ID 정보가 입력되지 않았습니다.";
return new CollectionVO("E102", message);
}
if(StringUtil.isEmpty(typeDivCd)) {
message = "[필수값 미입력] 자료유형코드가 입력되지 않았습니다.";
return new CollectionVO("E103", message);
}
// 변수 설정
DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/getItemInfo", HttpMethod.GET);
reqVO.putInfoItem("mngOrgCd", mngOrgCd);
reqVO.putInfoItem("masterId", masterId);
reqVO.putInfoItem("typeDivCd", typeDivCd);
reqVO.setMbInfoId(mbInfoId); // 통신 , 암호화되어 송수신됨
// API 호출
@ -231,7 +217,6 @@ public class CollectionServiceImpl implements CollectionService {
DataApiReqVO reqVO = new DataApiReqVO("/uac/service/nlib/col/listItemInfo", HttpMethod.GET);
reqVO.setMbInfoId(mbInfoId); // 통신 , 암호화되어 송수신됨
reqVO.putInfoItem("jsonMasterId", jsonMasterId);
reqVO.putInfoItem("mngOrgCd", "KCCF"); // DDDDDDDDDDDDDDDDDd API 개발서버 반영전까지 임시 처리
DataApiResVO resVO = dataApi.request(reqVO);
@ -279,14 +264,14 @@ public class CollectionServiceImpl implements CollectionService {
vo.setInterestYn (cVO.getInterestYn());
}
// DDDDDDDDDDDDDDDDDd 문화원 멀티 처리를 위해 테스트용으로 데이터 변경
CollectionVO vo = list.get(cnt-2);
vo.setMngOrgCd("SU01");
vo.setMngOrgNm("마포문화원");
CollectionVO vo2 = list.get(cnt-1);
vo2.setMngOrgCd("SU01");
vo2.setMngOrgNm("마포문화원");
//
// // DDDDDDDDDDDDDDDDDd 문화원 멀티 처리를 위해 테스트용으로 데이터 변경
// CollectionVO vo = list.get(cnt-2);
// vo.setMngOrgCd("SU01");
// vo.setMngOrgNm("마포문화원");
// CollectionVO vo2 = list.get(cnt-1);
// vo2.setMngOrgCd("SU01");
// vo2.setMngOrgNm("마포문화원");
return list;
}

View File

@ -70,7 +70,7 @@ public class BarcodeController {
log.debug("getMemberQRCode : loginVO=" + loginVO.toString());
BufferedImage bufferedImage = qrCodeService.generateMemberQRCodeImage(loginVO);
BufferedImage bufferedImage = qrCodeService.generateMemberQrcodeImage(loginVO);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);

View File

@ -141,7 +141,7 @@ public class SampleDataApiController extends NlibCommonController {
reqVO.putInfoItem("rows", getParamStr(commandMap, "rows", "10"));
reqVO.putInfoItem("page", getParamStr(commandMap, "rows", "1"));
reqVO.putInfoItem("mngOrgCd", getParamStr(commandMap, "mngOrgCd", "KCCF"));
reqVO.putInfoItem("mbInfoId", getParamStr(commandMap, "mbInfoId", "BDCCAF34CF8AA365C660ADB121CE6741"));
reqVO.setMbInfoId("M1000000001"); //putInfoItem("mbInfoId", getParamStr(commandMap, "mbInfoId", "BDCCAF34CF8AA365C660ADB121CE6741"));
// 사용자ID 설정
// NlibLoginVO nlibLoginVO = getNlibLoginVO(request);

View File

@ -1,18 +1,23 @@
package nlib.user.web;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@ -21,15 +26,13 @@ import org.springframework.web.bind.annotation.ResponseBody;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import nlib.restful.service.DataApiReqVO;
import nlib.cmm.NlibCommonController;
import nlib.cmm.qrcode.QRCodeUtil;
import nlib.security.SecUserDetailsService;
import nlib.security.SecUserVO;
import nlib.user.service.LoginService;
import nlib.user.service.MemberService;
import nlib.user.service.NlibLoginVO;
import nlib.user.service.UserInfoService;
import nlib.cmm.NlibCommonController;
import nlib.cmm.service.NlibProperty;
import nlib.util.StringUtil;
/**
@ -47,6 +50,7 @@ import nlib.cmm.service.NlibProperty;
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 7. 14. JSYOO 최초 생성
* @ 2021.10. 7. KKN 회원증 조회 기능 추가
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
@ -57,6 +61,8 @@ import nlib.cmm.service.NlibProperty;
@Controller
public class UserInfoController extends NlibCommonController {
private static final Logger log = LoggerFactory.getLogger(UserInfoController.class);
@Resource(name="userInfoService")
private UserInfoService userInfoService;
@ -69,6 +75,11 @@ public class UserInfoController extends NlibCommonController {
@Resource(name = "userDetailsService")
private SecUserDetailsService SecUserDetailsService;
/** QRCodeService (2021.10.07) */
@Resource(name = "qrCodeService")
private QRCodeUtil qrCodeService;
/**
* 정보 조회
@ -188,4 +199,57 @@ public class UserInfoController extends NlibCommonController {
userInfoService.deleteSnsLink(oAuthVO);
}
/**
* 회원증 QR코드를 조회한다.
*
* (2021.10.07 KKN 추가)
*
* @param request
* @param model
* @return
*/
@RequestMapping(value="/userInfo/getMemberQrcodeFormPopup.do")
public String getMemberQrcodeFormPopup(HttpServletRequest request, ModelMap model) {
NlibLoginVO loginVO = getNlibLoginVO(request);
log.debug("getMemberQrcode : loginVO=" + loginVO.toString());
model.addAttribute("loginVO", loginVO);
return "nlib/userInfo/getMemberQrcodeFormPopup";
}
/**
* 회원정보를 가지고 QR 2D 바코드를 생성하여 이미지(JPG) 출력한다.
* (Zxing Lib 사용)
*
* (2021.10.07 KKN 추가)
*
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value="/userInfo/getMemberQrcode.do", produces=MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity<byte[]> getMemberQrcode(HttpServletRequest request, HttpServletResponse response) throws Exception {
NlibLoginVO loginVO = getNlibLoginVO(request);
if(loginVO == null || StringUtil.isEmpty(loginVO.getMbInfoId())) {
throw new Exception("잘못된 접근입니다.");
}
BufferedImage bufferedImage = qrCodeService.generateMemberQrcodeImage(loginVO);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write( bufferedImage , "jpg", byteArrayOutputStream);
byte[] bs = byteArrayOutputStream.toByteArray();
response.setContentLength(bs.length);
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<byte[]>(bs , headers, HttpStatus.OK);
}
}

View File

@ -50,15 +50,15 @@ nlib.council.dns.host = nlib
# DataAPI \uc811\uc18d\uc815\ubcf4
#----------------------------------------
# \uac1c\ubc1c \uc11c\ubc84
#dataapi.server.ip = 210.181.197.70
#dataapi.server.port = 80
#dataapi.server.protocol = http
# \uc784\uc2dc PC \uac1c\ubc1c \uc11c\ubc84
dataapi.server.ip = 192.168.25.87
dataapi.server.ip = 210.181.197.70
dataapi.server.port = 8080
dataapi.server.protocol = http
# \uc784\uc2dc PC \uac1c\ubc1c \uc11c\ubc84
#dataapi.server.ip = 192.168.25.87
#dataapi.server.port = 8080
#dataapi.server.protocol = http
# \ub85c\uceec \uc11c\ubc84
#dataapi.server.ip = localhost
#dataapi.server.port = 8088

View File

@ -17,10 +17,12 @@
<property name="webBindingInitializer">
<bean class="egovframework.com.cmm.web.EgovBindingInitializer"/>
</property>
<!-- @ResponseBody : application/json 변경 (2021.7.20 KKN) -->
<property name="messageConverters">
<list>
<!-- @ResponseBody : application/json 변경 (2021.7.20 KKN) -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
</list>
</property>
</bean>

View File

@ -167,6 +167,8 @@ function fn_changeCartItems(cartTypeCd, cartTypeNm) {
return;
}
$("#cartTypeCd").val(cartTypeCd);
$("#selItems").val(fn_getCheckedCartItemsValues());
$("#frm").attr("action", "${pageContext.request.contextPath}/cart/changeCartType.do");
$("#frm").submit();
}

View File

@ -1,7 +1,7 @@
<%
/**
* <pre>
* @Class Name : getSampleInfo.jsp
* @Class Name : listRentItem.jsp (샘플)
*
* @Description : RESTful API 호출 샘플
*
@ -59,6 +59,7 @@
<div style="clear:both;">Server PORT : ${serverPort}</div>
<br />&nbsp;
<a href="/cart/listCartItems.do">카트</a><br />
<br />&nbsp;
<br />
@ -82,6 +83,10 @@
&nbsp;&nbsp;&nbsp;&nbsp; > typeCodeNm = ${record.typeCodeNm} <br />
&nbsp;&nbsp;&nbsp;&nbsp; > awaiterCnt = ${record.awaiterCnt} <br />
&nbsp;&nbsp;&nbsp;&nbsp; > useStatus = ${record.useStatus} <br />
&nbsp;&nbsp;&nbsp;&nbsp; > masterId = ${record.masterId} <br />
<input type="button" name="addCartBtn" id="addCartBtn" onclick="fn_addRentCart('${record.masterId}', '${record.mngOrgCd}', '${record.typeDivCd}', '${record.useStatus}')" value="관심자료 추가" />
<br />
</c:forEach>
<br />

View File

@ -0,0 +1,69 @@
<%
/**
* <pre>
* @Class Name : getMemberQrcodeForm.jsp
*
* @Description : 회원증
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 10. 7. KNKIM 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP KNKIM
* @since 2021. 10. 7.
* @version 1.0
*
*/
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<c:set var="pageTitle">지방문화원 소장자료관 회원증</c:set>
<!DOCTYPE html>
<html>
<head>
<title>${pageTitle}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
</script>
</head>
<body>
<div class="wTableFrm" style="text-align:center;">
<!-- 타이틀 -->
<h2>${pageTitle}</h2>
<span name="userName" id="userName" title="이름"> ${loginVO.name} |
<span name="userBirthday" id="userBirthday" title="생년월일">
<fmt:parseDate value="${loginVO.birthday}" var="dateFmt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${dateFmt}" var="dateStr" pattern="yyyy-MM-dd"/> ${dateStr}</span>
<br />
<img src="${pageContext.request.contextPath}/userInfo/getMemberQrcode.do" />
<br />
&nbsp;<br />
<span name="userNumber" id="userNumber" title="회원코드">회원코드 : ${loginVO.mbInfoId}</span>
<br />
&nbsp;<br />
※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.
</div>
</body>
</html>

View File

@ -1,4 +1,4 @@
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<a href="javascript:void(0);" onclick="$('#myPop').html('');$('#myPop').hide();" class="floatRight">닫기</a>
<a href="javascript:void(0);" onclick="fn_closeLayerPopup()" class="floatRight">닫기</a>

View File

@ -26,7 +26,8 @@ String councilNm = (String)session.getAttribute("councilCd");
</sec:authorize>
<sec:authorize access="isAuthenticated()">
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyInfo.do';">내 정보</a></li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyInfo.do';">내 정보</a></li>
<li><a href="javascript:void(0)" onclick="javascript:fn_layerPop('${pageContext.request.contextPath}/userInfo/getMemberQrcodeFormPopup.do');">회원증</a></li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/logout';">로그아웃</a></li>
</sec:authorize>
<sec:authorize access="not isAuthenticated()">

View File

@ -19,6 +19,7 @@
<link href="${pageContext.request.contextPath}/css/nlib.css" rel="stylesheet" type="text/css" />
<script src="${pageContext.request.contextPath}/js/jquery/jquery.min.js"></script>
<script src="${pageContext.request.contextPath}/js/nlib.js"></script>
<script src="${pageContext.request.contextPath}/js/cart.js"></script>
<title>온라인 자료대출관리 (N-LIB)</title>