Merge remote-tracking branch 'origin/master'

This commit is contained in:
JSYOO 2021-11-10 17:39:39 +09:00
commit a1b9fa78a1
20 changed files with 643 additions and 647 deletions

View File

@ -1,5 +1,6 @@
package nlib.col.service;
import java.util.HashMap;
import java.util.List;
/**
@ -65,6 +66,17 @@ public interface CollectionService {
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForList(List<CollectionVO> list, String mbInfoId, String defaultThumbnailUrl) throws Exception;
/**
* 목록의 자료정보에 상세정보를 조회하여 설정한 리턴한다.
*
* @param list
* @param mbInfoId
* @param defaultThumbnailUrl
* @return
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForHashList(List<HashMap<String, String>> list, String mbInfoId, String defaultThumbnailUrl) throws Exception;
/**
* 자료 마스터ID 목록 문자열을 받아 CollectionVO 리스트 생성하여 리턴한다.

View File

@ -43,13 +43,13 @@ public class CollectionVO extends PagingVO {
protected String mngOrgNm; /* 관리처리과명 */
protected String mngOrgCd; /* 관리처리과코드 */
protected String typeDivCd; /* 상위자료유형코드 */
protected String typeCodeNm; /* 상위자료유형명 (도서간행물/문서/도면 등) */
protected String typeDivNm; /* 상위자료유형명 (도서간행물/문서/도면 등) : API 이름이 변경됨 typeCodeNm -> typeDivNm */
protected String dtlsTypeDivCd; /* 세부유형코드 */
protected String dtlsTypeDivNm; /* 세부유형명 */
protected String subjectNmUp; /* 상위주제분야명*/
protected String subjectCodeUp ; /* 상위주제분야코드*/
protected String subjectNmUp; /* 상위주제분야명*/
protected String subjectCodeUp ; /* 상위주제분야코드*/
protected String subjectNm; /* 주제분야명 */
protected String subjectCode; /* 주제분야코드 */
protected String subjectCode; /* 주제분야코드 */
protected String orgNm; /* 생산기관명 */
protected String creatYyyy; /* 생산년도 */
protected String interfaceId; /* 지역N문화서비스ID */
@ -200,11 +200,11 @@ public class CollectionVO extends PagingVO {
return rprsThumbUrl;
}
public void setRprsThumbUrl(String rprsThumbUrl) {
this.rprsThumbUrl = rprsThumbUrl;
this.rprsThumbUrl = NlibProperty.getString("thumbnail.image.url.prefix", "") + rprsThumbUrl;
}
public void setRprsThumbUrl(String rprsThumbUrl, String defaultImgUrl) {
if(StringUtil.isEmpty(rprsThumbUrl) || !rprsThumbUrl.startsWith("/")) this.rprsThumbUrl = defaultImgUrl;
else this.rprsThumbUrl = rprsThumbUrl;
else this.rprsThumbUrl = NlibProperty.getString("thumbnail.image.url.prefix", "") + rprsThumbUrl;
}
public String getUseYn() {
return useYn;
@ -237,10 +237,10 @@ public class CollectionVO extends PagingVO {
this.typeDivCd = typeDivCd;
}
public String getTypeCodeNm() {
return typeCodeNm;
return typeDivNm;
}
public void setTypeCodeNm(String typeCodeNm) {
this.typeCodeNm = typeCodeNm;
this.typeDivNm = typeCodeNm;
}
public String getSubjectNm() {
return subjectNm;
@ -811,6 +811,14 @@ public class CollectionVO extends PagingVO {
public void setReqDd(String reqDd) {
this.reqDd = reqDd;
}
public String getTypeDivNm() {
return typeDivNm;
}
public void setTypeDivNm(String typeDivNm) {
this.typeDivNm = typeDivNm;
}
}

View File

@ -2,6 +2,7 @@ package nlib.col.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nlib.restful.service.DataApiResVO;
@ -74,4 +75,12 @@ public interface ReadService {
*/
public DataApiResVO cancelReadItem(CollectionVO searchVO);
/**
* 사용자의 방문열람현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getReadStats(String mbInfoId);
}

View File

@ -3,6 +3,7 @@ package nlib.col.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
@ -45,6 +46,14 @@ public interface RentService
*/
public List<CollectionVO> insertRentItems(List<CollectionVO> list, String mbInfoId, String mngOrgCd, boolean fromCart) throws Exception;
/**
* 사용자의 대출현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getRentStats(String mbInfoId);
//
// /**
// * 반납 연기 목록을 조회한다.

View File

@ -227,6 +227,32 @@ public class CollectionServiceImpl implements CollectionService {
}
/**
* 목록의 자료정보에 상세정보를 조회하여 설정한 리턴한다.
*
* @param list
* @param mbInfoId
* @param defaultThumbnailUrl
* @return
* @throws Exception
*/
public List<CollectionVO> setDetailInfoForHashList(List<HashMap<String, String>> list, String mbInfoId, String defaultThumbnailUrl) throws Exception {
List<CollectionVO> listObj = new ArrayList<CollectionVO>();
if(list == null || list.size() < 1) return null;
for(HashMap<String, String> record : list) {
CollectionVO cVO = (CollectionVO)XmlConverter.convertMapToObject(record, CollectionVO.class);
if(cVO != null && StringUtil.isNotEmpty(cVO.getMasterId())) {
listObj.add(cVO);
}
}
return setDetailInfoForList(listObj, mbInfoId, defaultThumbnailUrl);
}
/**
* 자료 마스터ID 목록 문자열을 받아 CollectionVO 리스트 생성하여 리턴한다.
*

View File

@ -3,6 +3,8 @@ package nlib.col.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
@Mapper("readDAO")
@ -11,5 +13,13 @@ public interface ReadDAO {
public List<HashMap<String, String>> listDates();
public List<HashMap<String, String>> listReadMngOrg(String mbInfoId);
/**
* 사용자의 방문열람현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getReadStats(String mbInfoId);
}

View File

@ -2,6 +2,7 @@ package nlib.col.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@ -170,7 +171,7 @@ public class ReadServiceImpl implements ReadService {
if(searchVO == null || StringUtil.isEmpty(searchVO.getMbInfoId())) {
log.error("listRentItems > 대출 목록 조회 요청 정보가 없습니다.");
return null;
return new DataApiResVO("F", "대출 목록 조회 요청 정보가 없습니다.");
}
// API 호출
@ -240,4 +241,14 @@ public class ReadServiceImpl implements ReadService {
return dataApi.request(reqVO);
}
/**
* 사용자의 방문열람현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getReadStats(String mbInfoId) {
return readDAO.getReadStats(mbInfoId);
}
}

View File

@ -3,6 +3,8 @@ package nlib.col.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
@Mapper("rentDAO")
@ -10,4 +12,12 @@ public interface RentDAO {
public List<HashMap<String, String>> listRentMngOrg(String mbInfoId);
/**
* 사용자의 대출현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getRentStats(String mbInfoId);
}

View File

@ -2,6 +2,7 @@ package nlib.col.service.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@ -58,7 +59,7 @@ public class RentServiceImpl implements RentService
if(searchVO == null || StringUtil.isEmpty(searchVO.getMbInfoId())) {
log.error("listRentItems > 대출 목록 조회 요청 정보가 없습니다.");
return null;
return new DataApiResVO("F", "회원정보가 부적합합니다.");
}
// API 호출
@ -194,6 +195,16 @@ public class RentServiceImpl implements RentService
return list;
}
/**
* 사용자의 대출현황을 조회한다.
*
* @param mbInfoId
* @return
*/
public Map<String, String> getRentStats(String mbInfoId) {
return rentDAO.getRentStats(mbInfoId);
}
//
// /*

View File

@ -1,55 +1,74 @@
package nlib.user.service;
import java.util.List;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
/**
* Description :
* @author
* @since
* @version
* @see
*
* <pre>
* << Modification Information >>
*
* Date Modifier Expression
* ------- -------- ---------------------------
*
*
*
* </pre>
*/
public interface UserInfoService
{
/** 사용자의 SNS 연동 리스트를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception;
/** 정보를 수정한다.
* @param vo
* @throws Exception
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception;
/** SNS연동을 해지한다.
* @param oAuthVO
* @throws Exception
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception;
/** 사용자의 정보를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception;
package nlib.user.service;
import java.util.List;
import java.util.Map;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
/**
* Description :
* @author
* @since
* @version
* @see
*
* <pre>
* << Modification Information >>
*
* Date Modifier Expression
* ------- -------- ---------------------------
*
*
*
* </pre>
*/
public interface UserInfoService
{
/** 사용자의 SNS 연동 리스트를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception;
/** 정보를 수정한다.
* @param vo
* @throws Exception
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception;
/** SNS연동을 해지한다.
* @param oAuthVO
* @throws Exception
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception;
/** 사용자의 정보를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception;
/**
* 직전 로그인 시간을 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getLastLogin(String mbInfoId) throws Exception;
/**
* 최근 1건이내 접속한 문화원 정보를 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getVisitedOrgs(String mbInfoId) throws Exception;
}

View File

@ -1,58 +1,77 @@
package nlib.user.service.impl;
import java.util.List;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.user.service.NlibLoginVO;
/**
* <pre>
* @Class Name : UserInfoDAO.java
*
* @Description : 사용자의 관련 정보 제공 DAO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 7. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 9. 7.
* @version 1.0
*
*/
@Mapper("userInfoDAO")
public interface UserInfoDAO
{
/** 사용자의 SNS 연동 리스트를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception;
/** 정보를 수정한다.
* @param vo
* @throws Exception
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception;
/** SNS연동을 해지한다.
* @param oAuthVO
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception;
/** 사용자의 정보를 조회한다.
* @param vo
* @return
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception;
package nlib.user.service.impl;
import java.util.List;
import java.util.Map;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import nlib.user.service.NlibLoginVO;
/**
* <pre>
* @Class Name : UserInfoDAO.java
*
* @Description : 사용자의 관련 정보 제공 DAO
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 7. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 9. 7.
* @version 1.0
*
*/
@Mapper("userInfoDAO")
public interface UserInfoDAO
{
/** 사용자의 SNS 연동 리스트를 조회한다.
* @param vo
* @return
* @throws Exception
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception;
/** 정보를 수정한다.
* @param vo
* @throws Exception
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception;
/** SNS연동을 해지한다.
* @param oAuthVO
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception;
/** 사용자의 정보를 조회한다.
* @param vo
* @return
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception;
/**
* 직전 로그인 시간을 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getLastLogin(String mbInfoId) throws Exception;
/**
* 최근 1건이내 접속한 문화원 정보를 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getVisitedOrgs(String mbInfoId) throws Exception;
}

View File

@ -1,91 +1,115 @@
package nlib.user.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import nlib.cmm.crypto.AriaCrypto;
import nlib.user.service.MemberService;
import nlib.user.service.NlibLoginVO;
import nlib.user.service.UserInfoService;
/**
* <pre>
* @Class Name : UserInfoServiceImpl.java
*
* @Description : 사용자의 정보를 조회하는 서비스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 7. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 9. 7.
* @version 1.0
*
*/
@Service("userInfoService")
public class UserInfoServiceImpl implements UserInfoService
{
@Resource(name="userInfoDAO")
private UserInfoDAO userInfoDAO;
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
@Resource(name = "ariaCrypto")
AriaCrypto ariaCrypto;
/* 사용자의 SNS 연동 리스트를 조회한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#selectSnsSignUpList(nlib.user.service.NlibLoginVO)
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception {
return userInfoDAO.selectSnsSignUpList(vo);
}
/* 정보를 수정한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#updateMyInfo(nlib.user.service.NlibLoginVO)
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception {
//회원정보 암호화
vo.encodePrivateInfo();
userInfoDAO.updateMyInfo(vo);
}
/* SNS연동을 해지한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#deleteSnsLink(egovframework.com.ext.oauth.service.OAuthUniversalUser)
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception {
userInfoDAO.deleteSnsLink(oAuthVO);
}
/* 사용자의 정보를 조회한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#selectMyInfo(nlib.user.service.NlibLoginVO)
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception {
vo.setMobileNo(ariaCrypto.encode(vo.getMobileNo()));
vo.setEmail(ariaCrypto.encode(vo.getEmail()));
NlibLoginVO loginVO =userInfoDAO.selectMyInfo(vo);
// 개인정보 암호화 내용 복호화 처리
if(loginVO != null) {
loginVO.setMobileNo(AriaCrypto.decode(loginVO.getMobileNo()));
loginVO.setEmail(AriaCrypto.decode(loginVO.getEmail()));
}
return loginVO;
}
package nlib.user.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import nlib.cmm.crypto.AriaCrypto;
import nlib.user.service.MemberService;
import nlib.user.service.NlibLoginVO;
import nlib.user.service.UserInfoService;
/**
* <pre>
* @Class Name : UserInfoServiceImpl.java
*
* @Description : 사용자의 정보를 조회하는 서비스
*
*
* @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
*
* </pre>
*
* @ ------------ -------- ---------------------------
* @ 수정일 수정자 수정내용
* @ ------------ -------- ---------------------------
* @ 2021. 9. 7. JSYOO 최초 생성
*
*
* @author 이씨플라자 * DIGITALSHIP JSYOO
* @since 2021. 9. 7.
* @version 1.0
*
*/
@Service("userInfoService")
public class UserInfoServiceImpl implements UserInfoService
{
@Resource(name="userInfoDAO")
private UserInfoDAO userInfoDAO;
@Resource(name = "egovEnvPasswordEncoderService")
EgovPasswordEncoder egovPasswordEncoder;
@Resource(name = "ariaCrypto")
AriaCrypto ariaCrypto;
/* 사용자의 SNS 연동 리스트를 조회한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#selectSnsSignUpList(nlib.user.service.NlibLoginVO)
*/
public List<OAuthUniversalUser> selectSnsSignUpList(NlibLoginVO vo) throws Exception {
return userInfoDAO.selectSnsSignUpList(vo);
}
/* 정보를 수정한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#updateMyInfo(nlib.user.service.NlibLoginVO)
*/
public void updateMyInfo(NlibLoginVO vo) throws Exception {
//회원정보 암호화
vo.encodePrivateInfo();
userInfoDAO.updateMyInfo(vo);
}
/* SNS연동을 해지한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#deleteSnsLink(egovframework.com.ext.oauth.service.OAuthUniversalUser)
*/
public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception {
userInfoDAO.deleteSnsLink(oAuthVO);
}
/* 사용자의 정보를 조회한다.
* (non-Javadoc)
* @see nlib.user.service.UserInfoService#selectMyInfo(nlib.user.service.NlibLoginVO)
*/
public NlibLoginVO selectMyInfo(NlibLoginVO vo) throws Exception {
vo.setMobileNo(ariaCrypto.encode(vo.getMobileNo()));
vo.setEmail(ariaCrypto.encode(vo.getEmail()));
NlibLoginVO loginVO =userInfoDAO.selectMyInfo(vo);
// 개인정보 암호화 내용 복호화 처리
if(loginVO != null) {
loginVO.setMobileNo(AriaCrypto.decode(loginVO.getMobileNo()));
loginVO.setEmail(AriaCrypto.decode(loginVO.getEmail()));
}
return loginVO;
}
/**
* 직전 로그인 시간을 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getLastLogin(String mbInfoId) throws Exception {
return userInfoDAO.getLastLogin(mbInfoId);
}
/**
* 최근 1건이내 접속한 문화원 정보를 조회한다.
*
* @param mbInfoId
* @return
* @throws Exception
*/
public List<Map<String, String>> getVisitedOrgs(String mbInfoId) throws Exception {
return userInfoDAO.getVisitedOrgs(mbInfoId);
}
}

View File

@ -4,7 +4,9 @@ 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;
@ -29,6 +31,13 @@ import egovframework.com.ext.oauth.service.OAuthUniversalUser;
import egovframework.rte.fdl.cryptography.EgovPasswordEncoder;
import nlib.cmm.NlibCommonController;
import nlib.cmm.qrcode.QRCodeUtil;
import nlib.cmm.service.NlibProperty;
import nlib.col.service.CollectionService;
import nlib.col.service.CollectionVO;
import nlib.col.service.InterestService;
import nlib.col.service.ReadService;
import nlib.col.service.RentService;
import nlib.restful.service.DataApiResVO;
import nlib.security.SecUserDetailsService;
import nlib.user.service.LoginService;
import nlib.user.service.NlibLoginVO;
@ -77,11 +86,24 @@ public class UserInfoController extends NlibCommonController {
@Resource(name = "userDetailsService")
private SecUserDetailsService SecUserDetailsService;
@Resource(name = "rentService")
private RentService rentService;
@Resource(name = "readService")
private ReadService readService;
@Resource(name = "interestService")
private InterestService interestService;
@Resource(name = "collectionService")
private CollectionService collectionService;
/** QRCodeService (2021.10.07) */
@Resource(name = "qrCodeService")
private QRCodeUtil qrCodeService;
//마이페이지 uri
@Value("#{properties['mypage.uri']}")
private String myPageUri;
@ -271,7 +293,7 @@ public class UserInfoController extends NlibCommonController {
* @throws Exception
*/
@RequestMapping(value="/userInfo/getMyHome.do")
public String getMyHome(HttpServletRequest request, ModelMap model) {
public String getMyHome(HttpServletRequest request, ModelMap model) throws Exception {
NlibLoginVO loginVO = getNlibLoginVO(request);
log.debug("getMemberQrcode : loginVO=" + loginVO.toString());
@ -280,19 +302,61 @@ public class UserInfoController extends NlibCommonController {
model.addAttribute("loginVO", loginVO);
// 이전접속정보
Map<String, String> lastLogin = null;
List<Map<String, String>> lastLoginList = userInfoService.getLastLogin(loginVO.getMbInfoId());
if(lastLoginList == null || lastLoginList.size() < 1) {
lastLogin = new HashMap<String, String>();
lastLogin.put("dtStr", "(최초접속)");
lastLogin.put("dtStr", " ");
} else if(lastLoginList.size() == 1) {
lastLogin = lastLoginList.get(0);
} else {
lastLogin = lastLoginList.get(1);
}
model.addAttribute("lastLogin", lastLogin);
// 소장자료관 접속현황 (최근 5개)
List<Map<String, String>> visitedOrgs = userInfoService.getVisitedOrgs(loginVO.getMbInfoId());
model.addAttribute("visitedOrgs", visitedOrgs);
// 대출현황
Map<String, String> rentStats = rentService.getRentStats(loginVO.getMbInfoId());
model.addAttribute("rentStats", rentStats);
// 방문열람현황
Map<String, String> readStats = readService.getReadStats(loginVO.getMbInfoId());
model.addAttribute("readStats", readStats);
// 소장자료관 접속현황 (최근 5개)
CollectionVO searchCollectionVO = new CollectionVO();
searchCollectionVO.setMbInfoId(loginVO.getMbInfoId());
searchCollectionVO.setPageSize(5);
// 관심자료 (최근 5개)
List<CollectionVO> interestList = interestService.listInterests(searchCollectionVO);
int interestTotalCount = interestService.countListInterests(searchCollectionVO);
String mbInfoId = getMbInfoId(request);
interestList = collectionService.setDetailInfoForList(interestList, searchCollectionVO.getMbInfoId(), NlibProperty.getString("thumbnail.image.url.small"));
model.addAttribute("interestList", interestList);
model.addAttribute("interestTotalCount", interestTotalCount);
// 대출내역 (최근 5개)
// 대출내역 (최근 5개)
// 조회
// 대출상태구분코드("": 전체, A:신청, B:대출준비완료, C:취소, W:대출중, R0:정상반납, R1:연체반납, P:연체)
DataApiResVO resRentVO = rentService.listRentItems(searchCollectionVO);
List<CollectionVO> rentList = collectionService.setDetailInfoForHashList(resRentVO.getRecordList(), searchCollectionVO.getMbInfoId(), NlibProperty.getString("thumbnail.image.url.small"));
model.addAttribute("rentList", rentList);
model.addAttribute("rentTotalCount", resRentVO.getRecordTotCount());
// 방문열람내역 (최근 5개)
searchCollectionVO.setReqStatusDivCd("A"); // API 변경될떄까지 임시 보냄 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
DataApiResVO resReadVO = readService.listReadItems(searchCollectionVO);
List<CollectionVO> readList = collectionService.setDetailInfoForHashList(resReadVO.getRecordList(), searchCollectionVO.getMbInfoId(), NlibProperty.getString("thumbnail.image.url.small"));
model.addAttribute("readList", readList);
model.addAttribute("readTotalCount", resReadVO.getRecordTotCount());
return "nlib/userInfo/getMyHome";
}
}

View File

@ -43,4 +43,17 @@
ORDER BY B.DEPT_NM
</select>
<!-- 방문열람 현황 -->
<select id="getReadStats" parameterType="String" resultType="EgovMap">
<![CDATA[
SELECT SUM(IF(B.REQ_PROC_SUB_STATUS = '1', 1, 0)) AS cntApp /* 신청 */
, SUM(IF(B.REQ_PROC_SUB_STATUS = '2', 1, 0)) AS cntCancel /* 취소 */
, SUM(IF(B.REQ_PROC_SUB_STATUS = '3', 1, 0)) AS cntProv /* 승인 */
, SUM(IF(B.REQ_PROC_SUB_STATUS = '2', 1, 0)) AS cntRej /* 반려 */
FROM US_REQ A
INNER JOIN US_REQ_ITEM B ON (A.REQ_ID = B.REQ_ID)
WHERE A.REQ_USER_ID = #{mbInfoId}
]]>
</select>
</mapper>

View File

@ -19,5 +19,15 @@
JOIN SM_DEPT C ON (B.MNG_ORG_CD = C.ORG_CD)
ORDER BY C.DEPT_NM
</select>
<select id="getRentStats" parameterType="String" resultType="EgovMap">
/* API 개발될때까지 임시 건수 데이터 제공 : DDDDDDDDDDDDDDDDDDDDDdd */
SELECT
5 AS cntApp /* 신청 */
, 2 AS cntRes /* 예약 */
, 7 AS cntCancel /* 취소 */
, 2 AS cntOut /* 대출중 */
, 3 AS cntReturn /* 반납 */
, 0 AS cntDelay /* 연체 */
</select>
</mapper>

View File

@ -118,6 +118,4 @@
)
</insert>
</mapper>

View File

@ -105,5 +105,43 @@
AND MB_INFO_ID = #{mbInfoId};
</if>
</update>
<!-- 직전 로그인 시간을 조회한다. -->
<select id="getLastLogin" parameterType="String" resultType="EgovMap">
<![CDATA[
SELECT
DATE_FORMAT(T.ACC_DATE, '%Y-%m-%d') as dtStr
, DATE_FORMAT(T.ACC_DATE, '%H:%i:%s') as tmStr
FROM (SELECT RANK() OVER(ORDER BY ACC_DATE DESC) AS RNK
, A.ACC_DATE
FROM SM_ACC_LOG A
WHERE USER_ID = #{mbInfoId}
AND LOGIN_SUCS_YN = 'Y'
AND SYS_DIV = '02') T
WHERE RNK < 3 /* */
]]>
</select>
<!-- 최근1년이내 접속한 문화원 5 개 -->
<select id="getVisitedOrgs" parameterType="String" resultType="EgovMap">
<![CDATA[
SELECT T2.DEPT_NM AS DEPT_NM
, T2.DOMAIN_HOST_NM AS DOMAIN_HOST_NM
FROM (
SELECT
DEPT_SEQ,
MAX(ACC_DATE) AS ACC_DATE,
RANK() OVER(ORDER BY MAX(ACC_DATE) DESC) AS RNK
FROM SM_ACC_LOG
WHERE USER_ID = #{mbInfoId}
AND ACC_DATE > DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY DEPT_SEQ
) T1
INNER JOIN SM_DEPT T2 ON (T1.DEPT_SEQ = T2.DEPT_SEQ)
WHERE RNK < 6
ORDER BY RNK
]]>
</select>
</mapper>

View File

@ -63,33 +63,33 @@
</div>
<div class="myinfo-btn"><a href="javascript:void(0);" onclick="location.href = '/userInfo/pwCertMyInfo.do';">내정보</a></div>
<div class="date-box">
최근 방문일: <span class="date">2021.07.15</span>
<span class="time">14:41:30</span>
최근 방문일: <span class="date">${lastLogin.dtStr }</span>
<span class="time">${lastLogin.tmStr }</span>
</div>
</div>
<div class="right">
<div class="top-box">
<div class="con-1">
<h3>대출현황</h3>
<div class="list-box">
<div class="list-box">
<div>
<p>3/3</p>
<p>${rentStats.cntApp }/${rentStats.cntRes }</p>
<p>신청/예약</p>
</div>
<div>
<p>11</p>
<p>${rentStats.cntCancel }</p>
<p>취소</p>
</div>
<div>
<p>2</p>
<p>${rentStats.cntOut }</p>
<p>대출중</p>
</div>
<div>
<p>15</p>
<p>${rentStats.cntReturn }</p>
<p>반납</p>
</div>
<div>
<p>0</p>
<p>${rentStats.cntDelay }</p>
<p>연체</p>
</div>
</div>
@ -98,19 +98,19 @@
<h3>방문열람현황</h3>
<div class="list-box">
<div>
<p>5</p>
<p>${readStats.cntApp }</p>
<p>신청</p>
</div>
<div>
<p>0</p>
<p>${readStats.cntCancel }</p>
<p>취소</p>
</div>
<div>
<p>3</p>
<p>${readStats.cntProv }</p>
<p>승인</p>
</div>
<div>
<p>2</p>
<p>${readStats.cntRej }</p>
<p>반려</p>
</div>
</div>
@ -120,11 +120,9 @@
<div class="con-1">
<h3>소장자료관 접속현황</h3>
<div class="key-box">
<span type="button">경산문화원</span>
<span type="button">고령문화원</span>
<span type="button">구미문화원</span>
<span type="button">군위문화원</span>
<span type="button">김천문화원</span>
<c:forEach var="itemVisitedOrgs" items="${visitedOrgs }">
<a href="javascript:void(0);" onclick="gfn_openNewWindow('https://${itemVisitedOrgs.domainHostNm}.nculture.org')"><span type="button">${itemVisitedOrgs.deptNm }</span></a>
</c:forEach>
</div>
</div>
</div>
@ -135,85 +133,31 @@
<div class="concern-data">
<div class="inner">
<div class="title-box">
<div class="title"><h3><span>관심</span>자료</h3><div class="cont">총 <span>20</span>건</div></div>
<div class="More"><a href="">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
<div class="title"><h3><span>관심</span>자료</h3><div class="cont">총 <span>${interestTotalCount }</span>건</div></div>
<div class="More"><a href="javascript:void(0);" onclick="gfn_gotoUrl('/interest/listInterests.do')">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
</div>
<div class="list-box">
<div class="list">
<div class="thum">
<a href="#"><img src="/images/img/img-sec3-01.jpg" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">양산예찬문집</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야 :</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관 :</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도 :</span><span>2021</span></p>
</div>
</div>
</div>
<div class="list">
<div class="thum">
<a href="#"><img src="/images/img/img-sec3-01.jpg" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">三憂堂 文益漸先生 棉花展示館 竣工記念詩集</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야 :</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관 :</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도 :</span><span>2021</span></p>
</div>
</div>
</div>
<div class="list">
<div class="thum">
<a href="#"><img src="/images/img/img-sec3-01.jpg" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">국역 慶州郡 (국역 경주군)</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야 :</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관 :</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도 :</span><span>2021</span></p>
</div>
</div>
</div>
<div class="list">
<div class="thum">
<a href="#"><img src="/images/img/img-sec3-01.jpg" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">三憂堂 文益漸先生 棉花展示館 竣工記念詩集</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야 :</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관 :</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도 :</span><span>2021</span></p>
</div>
</div>
</div>
<div class="list">
<div class="thum">
<a href="#"><img src="/images/img/img-sec3-01.jpg" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">국역 慶州郡 (국역 경주군)</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>도서간행물 &gt; 연속간행물</span></p>
<p class="sub"><span>주제분야 :</span><span>자연과지리 &gt; 자연환경</span></p>
<p class="age"><span>생산기관 :</span><span>경북경주문화원</span></p>
<p class="yea"><span>생산년도 :</span><span>2021</span></p>
</div>
</div>
</div>
<c:forEach var="item" items="${interestList }">
<div class="list">
<div class="thum">
<a href="javascript:void(0);" onclick="gfn_getDetail('${item.masterId }')"><img src="${item.rprsThumbUrl }" width="130" height="196" alt="썸네일"></a>
</div>
<div class="text">
<div class="ti">${item.title }</div>
<div class="cl">
<p class="typ"><span>자료유형 :</span><span>${item.typeDivNm } <c:if test="${not empty item.typeDivNm and not empty item.dtlsTypeDivNm }">&gt;</c:if> ${item.dtlsTypeDivNm }</span></p>
<p class="sub"><span>주제분야 :</span><span>${item.subjectNmUp } <c:if test="${not empty item.subjectNmUp and not empty item.subjectNm }">&gt;</c:if> ${item.subjectNm }</span></p>
<p class="age"><span>생산기관 :</span><span>${item.orgNm }</span></p>
<p class="yea"><span>생산년도 :</span><span>${item.creatYyyy }</span></p>
</div>
</div>
</div>
</c:forEach>
</div>
</div>
</div>
@ -221,143 +165,39 @@
<div class="loan-history">
<div class="inner">
<div class="title-box">
<div class="title"><h3><span>대출</span>내역</h3><div class="cont">총 <span>20</span>건</div></div>
<div class="More"><a href="">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
<div class="title"><h3><span>대출</span>내역</h3><div class="cont">총 <span>${rentTotalCount }</span>건</div></div>
<div class="More"><a href="javascript:void(0);" onclick="gfn_gotoUrl('/rent/listRentItems.do')">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주읍성 남문 장례문의 옥루</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="subscription">신청</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주 골목길</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="reser">예약</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="cancel">예약취소</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주 골목길</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="return">반납</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="return">반납</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="loan">대출중</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="overdue">연체</span>
</div>
</div>
</div>
<c:forEach var="item" items="${rentList }">
<div class="list-box">
<div class="list">
<div class="tit">
<p>[${item.mngOrgNm }]</p>
</div>
<div class="con">
<p>${item.title }</p>
<p>
<span><em>자료유형 : </em> ${item.typeDivNm } <c:if test="${not empty item.typeDivNm and not empty item.dtlsTypeDivNm }">&gt;</c:if> ${item.dtlsTypeDivNm }</span>
<span><em>주제분야 : </em> ${item.subjectNmUp } <c:if test="${not empty item.subjectNmUp and not empty item.subjectNm }">&gt;</c:if> ${item.subjectNm }</span>
<span><em>생산기관 : </em> ${item.orgNm }</span>
<span><em>생산년도 : </em> ${item.creatYyyy }</span>
</p>
</div>
<div class="state">
<c:if test='${item.bookLtRvStatusCd == "A" }'><span class="subscription">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "B" }'><span class="subscription">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "C" }'><span class="cancel">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "W" }'><span class="loan">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "R0" }'><span class="return">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "R1" }'><span class="return">${item.bookLtRvStatusNm}</span></c:if>
<c:if test='${item.bookLtRvStatusCd == "P" }'><span class="overdue">${item.bookLtRvStatusNm}</span></c:if>
</div>
</div>
</div>
</c:forEach>
</div>
</div>
@ -365,200 +205,38 @@
<div class="visit-history">
<div class="inner">
<div class="title-box">
<div class="title"><h3><span>방문열람</span>내역</h3><div class="cont">총 <span>20</span>건</div></div>
<div class="More"><a href="">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주읍성 남문 장례문의 옥루</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="wait">승인대기</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주 골목길</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="approval">승인</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="return">반려</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>경주 골목길</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="return">반려</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="return">반려</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="subscription">신청</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="wait">승인대기</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="cancel">취소</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="read">열람완료</span>
</div>
</div>
</div>
<div class="list-box">
<div class="list">
<div class="tit">
<p>[경북경주문화원]</p>
</div>
<div class="con">
<p>2014 한국의 역사마을 양동 충효예절교실 교육교재</p>
<p>
<span><em>주제분야 : </em> 도서간행물 &gt; 연속간행물</span>
<span><em>주제분야 : </em> 자연과지리 &gt; 자연환경</span>
<span><em>생산기관 : </em> 경북경주문화원</span>
<span><em>생산년도 : </em> 2021</span>
</p>
</div>
<div class="state">
<span class="unread">미열람</span>
</div>
</div>
<div class="title"><h3><span>방문열람</span>내역</h3><div class="cont">총 <span>${readTotalCount }</span>건</div></div>
<div class="More"><a href="javascript:void(0);" onclick="gfn_gotoUrl('/read/listReadItems.do')">더보기 <img src="/images/icon/icon-more.png" alt="더보기 아이콘"></a></div>
</div>
<c:forEach var="item" items="${readList }">
<div class="list-box">
<div class="list">
<div class="tit">
<p>[${item.mngOrgNm }]</p>
</div>
<div class="con">
<p>${item.title }</p>
<p>
<span><em>자료유형 : </em> ${item.typeDivNm } <c:if test="${not empty item.typeDivNm and not empty item.dtlsTypeDivNm }">&gt;</c:if> ${item.dtlsTypeDivNm }</span>
<span><em>주제분야 : </em> ${item.subjectNmUp } <c:if test="${not empty item.subjectNmUp and not empty item.subjectNm }">&gt;</c:if> ${item.subjectNm }</span>
<span><em>생산기관 : </em> ${item.orgNm }</span>
<span><em>생산년도 : </em> ${item.creatYyyy }</span>
</p>
</div>
<div class="state">
<c:if test='${item.reqStatusDivCd == "A0" }'><span class="wait">${item.reqStatusDivNm}</span></c:if>
<c:if test='${item.reqStatusDivCd == "A1" }'><span class="approval">${item.reqStatusDivNm}</span></c:if>
<c:if test='${item.reqStatusDivCd == "A2" }'><span class="return">${item.reqStatusDivNm}</span></c:if>
<c:if test='${item.reqStatusDivCd == "C" }'><span class="cancel">${item.reqStatusDivNm}</span></c:if>
<c:if test='${item.reqStatusDivCd == "R" }'><span class="read">${item.reqStatusDivNm}</span></c:if>
<c:if test='${item.reqStatusDivCd == "D" }'><span class="unread">${item.reqStatusDivNm}</span></c:if>
</div>
</div>
</div>
</c:forEach>
</div>
</div>

View File

@ -1,6 +1,33 @@
<%@ 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"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<script>
$(document).ready(function() {
$("a[reqLogin]").each(function() {
<sec:authorize access="not isAuthenticated()">
this.onclick = function() {
alert("로그인하신 후, 이용 가능합니다.");
};
</sec:authorize>
<sec:authorize access="isAuthenticated()">
this.onclick = function() {
var gotoUrl = $(this).attr("gotoUrl");
if(fn_isEmpty(gotoUrl)) {
alert("접속 정보가 없습니다. \n관리자에게 문의하여 주시기 바랍니다.");
} else {
location.href = gotoUrl;
}
};
</sec:authorize>
});
});
</script>
<div class="inner">
<button id="primary-nav-button" type="button" class="Btn eff"><i class="eff">Menu</i></button>
@ -23,12 +50,12 @@
</ul>
</li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/getMyHome.do';" title="마이페이지" class="eff">마이페이지</a>
<li><a href="javascript:void(0)" gotoUrl="${pageContext.request.contextPath}/userInfo/getMyHome.do" title="마이페이지" class="eff" reqLogin>마이페이지</a>
<ul class="sub-menu">
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/userInfo/pwCertMyInfo.do';" title="회원정보관리"><span class="underline blue">회원정보관리</span></a></li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/interest/listInterests.do';" title="관심자료"><span class="underline blue">관심자료</span></a></li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/rent/listRentItems.do';" title="대출관리"><span class="underline blue">대출관리</span></a></li>
<li><a href="javascript:void(0)" onclick="javascript:location.href='${pageContext.request.contextPath}/read/listReadItems.do';" title="방문열람관리"><span class="underline blue">방문열람관리</span></a></li>
<li><a href="javascript:void(0)" gotoUrl="${pageContext.request.contextPath}/userInfo/pwCertMyInfo.do" title="회원정보관리" reqLogin><span class="underline blue">회원정보관리</span></a></li>
<li><a href="javascript:void(0)" gotoUrl="${pageContext.request.contextPath}/interest/listInterests.do" title="관심자료" reqLogin><span class="underline blue">관심자료</span></a></li>
<li><a href="javascript:void(0)" gotoUrl="${pageContext.request.contextPath}/rent/listRentItems.do" title="대출관리" reqLogin><span class="underline blue">대출관리</span></a></li>
<li><a href="javascript:void(0)" gotoUrl="${pageContext.request.contextPath}/read/listReadItems.do" title="방문열람관리" reqLogin><span class="underline blue">방문열람관리</span></a></li>
<!-- 개발진행 중 임시 추가 : 시작 DDDDDDDDDDDDDD -->
<li>--- 이하 임시 추가 메뉴 ---</li>

View File

@ -1009,7 +1009,7 @@ transform: rotate(45deg);}
.myinfo .contents > div .title-box .More {float:right;margin-top:10px;}
.myinfo .contents > div .title-box .More a {font-size:16px;color:#666;}
.myinfo .contents > div .title-box .More img {margin-left:10px;}
.myinfo .contents .concern-data {display: inline-block;margin-bottom: 80px;}
.myinfo .contents .concern-data {display: inline-block;margin-bottom: 80px;width:100%;}
.myinfo .contents .concern-data .list-box {clear: both;}
.myinfo .contents .concern-data .list-box .list {float:left;width:19.0%;margin-right:1%;border:1px solid #ddd;border-radius:5px;}
.myinfo .contents .concern-data .list-box .list:last-child {margin-right:0;}