롬복 추가 , [사용자] 결제관리 > 요금 사용내역 ==> 사용금액 표시 방법 변경 완료
@6dc70591841b630021e9a1b0db460d5678ce175b
--- pom.xml
+++ pom.xml
... | ... | @@ -557,6 +557,15 @@ |
| 557 | 557 |
<artifactId>KOMORAN</artifactId> |
| 558 | 558 |
<version>3.3.4</version> |
| 559 | 559 |
</dependency> |
| 560 |
+ |
|
| 561 |
+ <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> |
|
| 562 |
+ <dependency> |
|
| 563 |
+ <groupId>org.projectlombok</groupId> |
|
| 564 |
+ <artifactId>lombok</artifactId> |
|
| 565 |
+ <version>1.18.24</version> |
|
| 566 |
+ <scope>provided</scope> |
|
| 567 |
+ </dependency> |
|
| 568 |
+ |
|
| 560 | 569 |
<!-- Komoran 형태소 분석기 --> |
| 561 | 570 |
</dependencies> |
| 562 | 571 |
|
+++ src/main/java/itn/com/cmm/RestResponse.java
... | ... | @@ -0,0 +1,65 @@ |
| 1 | +package itn.com.cmm; | |
| 2 | + | |
| 3 | +import org.springframework.http.HttpStatus; | |
| 4 | + | |
| 5 | +import lombok.Builder; | |
| 6 | +import lombok.Getter; | |
| 7 | +import lombok.NoArgsConstructor; | |
| 8 | +import lombok.Setter; | |
| 9 | + | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * | |
| 13 | + * @fileName : RestResponse.java | |
| 14 | + * @author : 이호영 | |
| 15 | + * @date : 2022.07.04 | |
| 16 | + * @description : RestApi 응답에 사용할 Class | |
| 17 | + * @TODO : | |
| 18 | + * =========================================================== | |
| 19 | + * DATE AUTHOR NOTE | |
| 20 | + * ----------------------------------------------------------- * | |
| 21 | + * 2022.07.04 이호영 최초 생성 | |
| 22 | + * | |
| 23 | + * | |
| 24 | + * | |
| 25 | + */ | |
| 26 | + | |
| 27 | + | |
| 28 | +/* | |
| 29 | + * • 1XX : 조건부 응답 | |
| 30 | + * • 2XX : 성공 | |
| 31 | + * • 3XX : 리다이렉션 완료 | |
| 32 | + * • 4XX : 요청 오류 | |
| 33 | + * • 500 : 서버 오류 | |
| 34 | + * | |
| 35 | + * 참고 : https://km0830.tistory.com/33 | |
| 36 | + * | |
| 37 | + * ====== 자주 사용하는 코드 ===== | |
| 38 | + * 200 : Ok : 서버가 클라이언트의 요청을 성공적으로 처리, 웹 페이지에서는 페이지 요청이 정상적으로 완료 (Ok) | |
| 39 | + * 400 : Bad Request : 잘못 요청 (Bad Request) | |
| 40 | + * 401 : Unauthorized : 권한 없음, 예를 들면, 로그인 페이지가 필요한 페이지를 로그인 없이 접속하려는 경우 반환되는 코드 (인증 실패) (Unauthorized) | |
| 41 | + * | |
| 42 | + * */ | |
| 43 | + | |
| 44 | +@Getter | |
| 45 | +@Setter | |
| 46 | +@NoArgsConstructor | |
| 47 | +public class RestResponse { | |
| 48 | + | |
| 49 | + private HttpStatus status; | |
| 50 | + | |
| 51 | + private String msg; | |
| 52 | + | |
| 53 | + private Object data; | |
| 54 | + | |
| 55 | + | |
| 56 | + @Builder | |
| 57 | + public RestResponse(HttpStatus status, String msg, Object data) { | |
| 58 | + this.status = status; | |
| 59 | + this.msg = msg; | |
| 60 | + this.data = data; | |
| 61 | + } | |
| 62 | + | |
| 63 | + | |
| 64 | +} | |
| 65 | + |
--- src/main/java/itn/let/mjo/pay/service/MjonPayService.java
+++ src/main/java/itn/let/mjo/pay/service/MjonPayService.java
... | ... | @@ -139,4 +139,5 @@ |
| 139 | 139 |
|
| 140 | 140 |
//누적 납부금액 조회 (후불회원이 사용금액을 실 납부한 금액 합산 - 미납 금액 제외한 총 합산 금액) |
| 141 | 141 |
public String selectTotSumPaymentAfterPay(String userId) throws Exception; |
| 142 |
+ |
|
| 142 | 143 |
} |
--- src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
+++ src/main/java/itn/let/mjo/pay/service/impl/MjonPayServiceImpl.java
... | ... | @@ -2833,4 +2833,6 @@ |
| 2833 | 2833 |
|
| 2834 | 2834 |
} |
| 2835 | 2835 |
|
| 2836 |
+ |
|
| 2837 |
+ |
|
| 2836 | 2838 |
} |
--- src/main/java/itn/let/mjo/pay/web/MjonPayController.java
+++ src/main/java/itn/let/mjo/pay/web/MjonPayController.java
... | ... | @@ -13,9 +13,11 @@ |
| 13 | 13 |
import java.text.NumberFormat; |
| 14 | 14 |
import java.text.SimpleDateFormat; |
| 15 | 15 |
import java.time.LocalDate; |
| 16 |
+import java.time.LocalDateTime; |
|
| 16 | 17 |
import java.util.ArrayList; |
| 17 | 18 |
import java.util.Calendar; |
| 18 | 19 |
import java.util.Date; |
| 20 |
+import java.util.HashMap; |
|
| 19 | 21 |
import java.util.List; |
| 20 | 22 |
import java.util.Locale; |
| 21 | 23 |
import java.util.Map; |
... | ... | @@ -39,12 +41,18 @@ |
| 39 | 41 |
import org.json.simple.parser.JSONParser; |
| 40 | 42 |
import org.slf4j.Logger; |
| 41 | 43 |
import org.slf4j.LoggerFactory; |
| 44 |
+import org.springframework.http.HttpStatus; |
|
| 45 |
+import org.springframework.http.MediaType; |
|
| 46 |
+import org.springframework.http.ResponseEntity; |
|
| 42 | 47 |
import org.springframework.stereotype.Controller; |
| 43 | 48 |
import org.springframework.ui.Model; |
| 44 | 49 |
import org.springframework.ui.ModelMap; |
| 45 | 50 |
import org.springframework.web.bind.annotation.ModelAttribute; |
| 51 |
+import org.springframework.web.bind.annotation.RequestBody; |
|
| 46 | 52 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 53 |
+import org.springframework.web.bind.annotation.RequestMethod; |
|
| 47 | 54 |
import org.springframework.web.bind.annotation.RequestParam; |
| 55 |
+import org.springframework.web.bind.annotation.ResponseBody; |
|
| 48 | 56 |
import org.springframework.web.multipart.MultipartFile; |
| 49 | 57 |
import org.springframework.web.multipart.MultipartHttpServletRequest; |
| 50 | 58 |
import org.springframework.web.servlet.HandlerMapping; |
... | ... | @@ -59,6 +67,7 @@ |
| 59 | 67 |
import itn.com.cmm.ComDefaultCodeVO; |
| 60 | 68 |
import itn.com.cmm.EgovMessageSource; |
| 61 | 69 |
import itn.com.cmm.LoginVO; |
| 70 |
+import itn.com.cmm.RestResponse; |
|
| 62 | 71 |
import itn.com.cmm.service.EgovCmmUseService; |
| 63 | 72 |
import itn.com.cmm.service.FileVO; |
| 64 | 73 |
import itn.com.cmm.util.DateUtils; |
... | ... | @@ -66,6 +75,8 @@ |
| 66 | 75 |
import itn.com.cmm.util.RedirectUrlMaker; |
| 67 | 76 |
import itn.com.cmm.util.StringUtil; |
| 68 | 77 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 78 |
+import itn.let.fax.admin.service.FaxStatVO; |
|
| 79 |
+import itn.let.mail.service.StatusResponse; |
|
| 69 | 80 |
import itn.let.mjo.mjocommon.MjonCommon; |
| 70 | 81 |
import itn.let.mjo.msg.service.MjonMsgService; |
| 71 | 82 |
import itn.let.mjo.msg.service.MjonMsgVO; |
... | ... | @@ -2612,7 +2623,7 @@ |
| 2612 | 2623 |
} |
| 2613 | 2624 |
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
| 2614 | 2625 |
mjonMsgVO.setUserId(userId); |
| 2615 |
- |
|
| 2626 |
+ /* |
|
| 2616 | 2627 |
{ // 충전캐시
|
| 2617 | 2628 |
String sumPayMoney = mjonPayService.selectAgentSumPayMoney(userId); |
| 2618 | 2629 |
model.addAttribute("sumPayMoney", sumPayMoney);
|
... | ... | @@ -2622,6 +2633,7 @@ |
| 2622 | 2633 |
String sumPoint = mjonPayService.selectSumPoint(userId); |
| 2623 | 2634 |
model.addAttribute("sumPoint", sumPoint);
|
| 2624 | 2635 |
} |
| 2636 |
+ */ |
|
| 2625 | 2637 |
|
| 2626 | 2638 |
{ // 총 사용금액
|
| 2627 | 2639 |
mjonPayVO.setUserId(userId); |
... | ... | @@ -2629,10 +2641,11 @@ |
| 2629 | 2641 |
model.addAttribute("usedCashTotList", usedCashTotList);
|
| 2630 | 2642 |
} |
| 2631 | 2643 |
{ // 사용가능한 금액
|
| 2644 |
+ // mberManageVO.prePaymentYn 선불 후불 회원 구분으로 인해 select함 |
|
| 2632 | 2645 |
mberManageVO = mjonMsgDataService.selectMberManageInfo(userId); |
| 2633 | 2646 |
model.addAttribute("mberManageVO", mberManageVO);
|
| 2634 | 2647 |
} |
| 2635 |
- |
|
| 2648 |
+ /* |
|
| 2636 | 2649 |
{ // 발송건수
|
| 2637 | 2650 |
mjonMsgVO.setReserveYn("N");
|
| 2638 | 2651 |
List<MjonMsgVO> sendTotList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); |
... | ... | @@ -2644,7 +2657,7 @@ |
| 2644 | 2657 |
List<MjonMsgVO> reservToList = mjonMsgService.selectWithKakaoSendTotCnt(mjonMsgVO); |
| 2645 | 2658 |
model.addAttribute("reservToList", reservToList);
|
| 2646 | 2659 |
} |
| 2647 |
- |
|
| 2660 |
+ */ |
|
| 2648 | 2661 |
{// 선거 후보자 정보 조회
|
| 2649 | 2662 |
MjonCandidateVO mjonCandidateVO = new MjonCandidateVO(); |
| 2650 | 2663 |
if("p".equals(mberManageVO.getDept())) { //개인회원 선거 후보자 정보 불러오기
|
... | ... | @@ -2723,8 +2736,12 @@ |
| 2723 | 2736 |
|
| 2724 | 2737 |
return "/web/pay/PayUserSWList"; |
| 2725 | 2738 |
} |
| 2726 |
- |
|
| 2727 |
- |
|
| 2739 |
+ |
|
| 2740 |
+ |
|
| 2741 |
+ |
|
| 2742 |
+ |
|
| 2743 |
+ |
|
| 2744 |
+ |
|
| 2728 | 2745 |
/** |
| 2729 | 2746 |
* 요금사용내역 하단 리스트 영역 신규 화면 |
| 2730 | 2747 |
* 2023.12.22 우영두 |
--- src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWList.jsp
... | ... | @@ -68,6 +68,16 @@ |
| 68 | 68 |
}); |
| 69 | 69 |
} |
| 70 | 70 |
|
| 71 |
+// 탭 이동 시 화면에서 날짜체크 안하고 |
|
| 72 |
+// back단에서 1년 날짜 지정함 |
|
| 73 |
+function payUserListTabMoveAjax(pageNo){
|
|
| 74 |
+ |
|
| 75 |
+ document.listForm.pageIndex.value = pageNo; |
|
| 76 |
+ var sendData= $(document.listForm).serializeArray(); |
|
| 77 |
+ $("#payUserListLoad").load("/web/member/pay/PayUserSWListAjax.do", sendData ,function(response, status, xhr){
|
|
| 78 |
+ }); |
|
| 79 |
+} |
|
| 80 |
+ |
|
| 71 | 81 |
|
| 72 | 82 |
function payUserTab(obj, pageType){
|
| 73 | 83 |
|
... | ... | @@ -78,8 +88,45 @@ |
| 78 | 88 |
$tab.siblings("li.tab").find("button").removeAttr("title");
|
| 79 | 89 |
|
| 80 | 90 |
$("#pageType").val(pageType);
|
| 81 |
- payUserListAjax(1); |
|
| 91 |
+ payUserListTabMoveAjax(1); |
|
| 82 | 92 |
} |
| 93 |
+ |
|
| 94 |
+ |
|
| 95 |
+ |
|
| 96 |
+ |
|
| 97 |
+ |
|
| 98 |
+function getUsedCashTotList(){
|
|
| 99 |
+ var sendData = {
|
|
| 100 |
+ "startDate" : $("#startDate").val(),
|
|
| 101 |
+ "endDate" : $("#endDate").val()
|
|
| 102 |
+ }; |
|
| 103 |
+ |
|
| 104 |
+ console.log('sendData : ', sendData);
|
|
| 105 |
+// url: '/web/member/pay/getUsedCashTotList.do', |
|
| 106 |
+ |
|
| 107 |
+ $.ajax({
|
|
| 108 |
+ type:"POST", |
|
| 109 |
+ url:"<c:url value='/web/member/pay/getUsedCashTotList.do' />", |
|
| 110 |
+ data: sendData, |
|
| 111 |
+ dataType:'json', |
|
| 112 |
+ success:function(data){
|
|
| 113 |
+ console.log('data :: ', data);
|
|
| 114 |
+ if(data.status == 'OK') {
|
|
| 115 |
+ // 성공 처리 |
|
| 116 |
+ } else {
|
|
| 117 |
+ // 오류 처리 |
|
| 118 |
+ } |
|
| 119 |
+ }, |
|
| 120 |
+ error: function(jqXHR, textStatus, errorThrown) {
|
|
| 121 |
+ console.error("AJAX Error:", textStatus, errorThrown);
|
|
| 122 |
+ console.error("Response:", jqXHR.responseText);
|
|
| 123 |
+ } |
|
| 124 |
+ }); |
|
| 125 |
+} |
|
| 126 |
+ |
|
| 127 |
+ |
|
| 128 |
+ |
|
| 129 |
+ |
|
| 83 | 130 |
|
| 84 | 131 |
/* 윈도우팝업 열기 */ |
| 85 | 132 |
function infoPop(pageUrl){
|
... | ... | @@ -212,8 +259,9 @@ |
| 212 | 259 |
</div> |
| 213 | 260 |
<c:choose> |
| 214 | 261 |
<c:when test="${mberManageVO.prePaymentYn eq 'Y'}">
|
| 262 |
+<%-- <c:when test="${mberManageVO.prePaymentYn eq 'N'}"> --%>
|
|
| 215 | 263 |
<div class="hisroy_price"> |
| 216 |
- <div class="hisroy_price_in"> |
|
| 264 |
+ <%-- <div class="hisroy_price_in"> |
|
| 217 | 265 |
<p> |
| 218 | 266 |
<i></i>충전금액 |
| 219 | 267 |
</p> |
... | ... | @@ -248,30 +296,32 @@ |
| 248 | 296 |
</span>원 |
| 249 | 297 |
</p> |
| 250 | 298 |
</div> |
| 251 |
- </div> |
|
| 299 |
+ </div> --%> |
|
| 252 | 300 |
<div class="hisroy_price_in"> |
| 253 | 301 |
<p> |
| 254 | 302 |
<i></i>사용금액 |
| 255 | 303 |
</p> |
| 256 |
- <c:forEach var="result" items="${usedCashTotList}" varStatus="status">
|
|
| 304 |
+<%-- <c:forEach var="result" items="${usedCashTotList}" varStatus="status"> --%>
|
|
| 257 | 305 |
<div class="clearfix"> |
| 258 | 306 |
<p> |
| 259 |
- <c:if test="${result.divFlag eq 'CASH' }">
|
|
| 307 |
+<%-- <c:if test="${result.divFlag eq 'CASH' }"> --%>
|
|
| 260 | 308 |
캐시 |
| 261 |
- </c:if> |
|
| 262 |
- <c:if test="${result.divFlag eq 'POINT' }">
|
|
| 263 |
- 포인트 |
|
| 264 |
- </c:if> |
|
| 309 |
+<%-- </c:if> --%> |
|
| 310 |
+<%-- <c:if test="${result.divFlag eq 'POINT' }"> --%>
|
|
| 311 |
+<!-- 포인트 --> |
|
| 312 |
+<%-- </c:if> --%> |
|
| 265 | 313 |
</p> |
| 266 | 314 |
<p> |
| 267 |
- <span> |
|
| 268 |
- <fmt:formatNumber value="${result.totalPrice}" pattern="#,###.#"/>
|
|
| 315 |
+ <span id="cashTxtId"> |
|
| 316 |
+<%-- ${cashTxt } --%>
|
|
| 317 |
+<%-- <fmt:formatNumber value="${result.totalPrice}" pattern="#,###.#"/> --%>
|
|
| 318 |
+<%-- <fmt:formatNumber value="${cashTxt}" pattern="#,###.#"/> --%>
|
|
| 269 | 319 |
</span>원 |
| 270 | 320 |
</p> |
| 271 | 321 |
</div> |
| 272 |
- </c:forEach> |
|
| 322 |
+<%-- </c:forEach> --%> |
|
| 273 | 323 |
</div> |
| 274 |
- <div class="hisroy_price_in"> |
|
| 324 |
+ <%-- <div class="hisroy_price_in"> |
|
| 275 | 325 |
<p> |
| 276 | 326 |
<i></i>잔액 |
| 277 | 327 |
</p> |
... | ... | @@ -291,7 +341,7 @@ |
| 291 | 341 |
</span>원 |
| 292 | 342 |
</p> |
| 293 | 343 |
</div> |
| 294 |
- </div> |
|
| 344 |
+ </div> --%> |
|
| 295 | 345 |
</div> |
| 296 | 346 |
</c:when> |
| 297 | 347 |
<c:otherwise> |
... | ... | @@ -424,7 +474,7 @@ |
| 424 | 474 |
</div> |
| 425 | 475 |
</c:otherwise> |
| 426 | 476 |
</c:choose> |
| 427 |
- <div class="history_details"> |
|
| 477 |
+ <%-- <div class="history_details"> |
|
| 428 | 478 |
<p class="tType1_title"><img src="/publish/images/content/history_details_title.png" alt=""> 발송내역</p> |
| 429 | 479 |
<div class="details_wrap"> |
| 430 | 480 |
<table> |
... | ... | @@ -480,7 +530,7 @@ |
| 480 | 530 |
</tbody> |
| 481 | 531 |
</table> |
| 482 | 532 |
</div> |
| 483 |
- </div> |
|
| 533 |
+ </div> --%> |
|
| 484 | 534 |
<form id="listForm" name="listForm" method="post"> |
| 485 | 535 |
<input type="hidden" id="pageType" name="pageType" value="<c:out value='${searchVO.pageType}'/>"/>
|
| 486 | 536 |
<input type="hidden" id="pageIndex" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>"/>
|
--- src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp
+++ src/main/webapp/WEB-INF/jsp/web/pay/PayUserSWListAjax.jsp
... | ... | @@ -20,8 +20,19 @@ |
| 20 | 20 |
<script src="/publish/js/content.js"></script> |
| 21 | 21 |
<script> |
| 22 | 22 |
$(document).ready(function(){
|
| 23 |
+ |
|
| 24 |
+ |
|
| 25 |
+ // 사용금액 캐시 노출 |
|
| 26 |
+ var succPrice = '${totSuccSendPrice}';
|
|
| 27 |
+ console.log('succPrice.toLocaleString("ko-KR") : ', succPrice.toLocaleString('ko-KR'));
|
|
| 28 |
+ $('#cashTxtId').text(succPrice.replace(/\B(?=(\d{3})+(?!\d))/g, ','));
|
|
| 29 |
+ |
|
| 30 |
+ |
|
| 23 | 31 |
$('#startDate').val('${mjonMsgVO.startDate}');
|
| 24 | 32 |
$('#endDate').val('${mjonMsgVO.endDate}');
|
| 33 |
+ |
|
| 34 |
+ |
|
| 35 |
+ |
|
| 25 | 36 |
/* 목록 정렬 항목 아이콘 표시 */ |
| 26 | 37 |
var searchSortCnd = $("[name='searchSortCnd']").val();
|
| 27 | 38 |
var searchSortOrd = $("[name='searchSortOrd']").val();
|
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?