File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2024-08-23
2023-10-11
File name
Commit message
Commit date
package itn.com.cmm.util;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import itn.com.cmm.LoginVO;
import itn.com.utl.fcc.service.EgovStringUtil;
import itn.let.mjo.event.service.MjonEventVO;
import itn.let.mjo.event.service.impl.MjonEventDAO;
import itn.let.mjo.pay.service.MjonPayVO;
import itn.let.mjo.pay.service.impl.MjonPayDAO;
import itn.let.mjo.tax.service.TaxVO;
import itn.let.mjo.tax.service.impl.TaxDAO;
import itn.let.sym.grd.service.MberGrdService;
import itn.let.sym.grd.service.MberGrdVO;
import itn.let.uat.uia.service.impl.MberManageDAO;
import itn.let.uss.umt.service.MberManageVO;
@Component("mjonPayUtil")
public class MjonPayUtil {
@Resource(name="MjonEventDAO")
private MjonEventDAO mjonEventDAO;
@Resource(name="mberManageDAO")
private MberManageDAO mberManageDAO;
@Resource(name="mjonPayDAO")
private MjonPayDAO mjonPayDAO;
@Resource(name="taxDAO")
private TaxDAO taxDAO;
/* 등급제 */
@Resource(name = "mberGrdService")
MberGrdService mberGrdService;
/**
* @param mjonPayVO
* @throws Exception
*/
public void insertPayUtil(MjonPayVO mjonPayVO) throws Exception {
if("anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser() )) {
}else {
// 기존 mjonPayVO의 userId 값에 moid 값이 들어가게 되어서 세션에서 아이디를 받아와서 다시 입력하도록 수정함 20220330 우영두
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
String buyerName = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getName());
String email = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getEmail());
String mobile = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getMoblphonNo());
mjonPayVO.setUserId(userId);
mjonPayVO.setFrstRegisterId(userId);
mjonPayVO.setBuyerName(buyerName);
mjonPayVO.setEmail(email);
mjonPayVO.setPhone(mobile);
mjonPayVO.setMobile(mobile);
}
//PG, PGTXT, CASH , 포인트 insert / 회원정보 캐시,포인트 update
mjonPayDAO.insertMjPg(mjonPayVO);
//세금계산서,현금영수증 자동발행 체크 / 자동발행 'N'이며 10만원 이상 결제시 현금영수증 의무발행
MberManageVO mberManageVO = mberManageDAO.selectMber(mjonPayVO.getUserId()); //멤버ID에서 유니크ID로 수정 필요
// 세금계산서 자동발행이고,카드결제가 아닐경우에만 자동발행
if(("B".equals(mberManageVO.getTaxbillAuto()) || "C".equals(mberManageVO.getTaxbillAuto())) && !"CARD".equals(mjonPayVO.getPayMethod())) {
TaxVO taxVO = new TaxVO();
/*발행타입 1:소득공제 현금영수증 2:지출증빙 현금영수증 9:세금계산서*/
String rcptType;
String regNo="";
if("B".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 기업 자동발행
rcptType = "9";
taxVO.setTaxTrgt("B");
regNo = mberManageVO.getTaxBizNo(); //사업자등록번호
taxVO.setCompanyName(mberManageVO.getTaxBzNm());//회사명
taxVO.setRepName(mberManageVO.getTaxChrmNm());//대표자명
taxVO.setAddr(mberManageVO.getTaxAddr());//세금계산서 주소
}else if("C".equals(mberManageVO.getTaxbillAuto())) { //세금계산서 개인 자동발행
rcptType = "9";
taxVO.setTaxTrgt("C");
regNo = mberManageVO.getTaxCIhidNum(); // 세금계산서 개인 주민등록번호
taxVO.setRepName(mberManageVO.getTaxCNm()); //세금계산서 개인 성명
taxVO.setAddr(mberManageVO.getTaxCAddr()); //세금계산서 개인 주소
} else { //현금영수증 자동발행
rcptType = mberManageVO.getCashbillType();
}
taxVO.setMoid(mjonPayVO.getMoid()); //주문ID
taxVO.setRcptType(rcptType);//발행타입
/*발행번호 개인세금계산서:주민등록번호 / 기업세금계산서:사업자번호 / 소득공제현금영수증:휴대폰번호 / 지출증빙현금영수증:사업자번호*/
taxVO.setRegNo(regNo);
taxVO.setEmail(mberManageVO.getTaxMngEmail());//담당자이메일
taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());//담당자 휴대폰번호
taxVO.setConfirmYn("N"); //완료여부
taxVO.setFrstRegisterId(mberManageVO.getMberId());
// JSPark 2022.07.01 => 휴대폰결제는 MJ_TAX 테이블에 인서트 안함
if(!"CELLPHONE".equals(mjonPayVO.getPayMethod())) {
taxDAO.insertCashBill(taxVO);
}
}
//세금계산서 자동발행 설정이 아니면서, 결제금액이 10만원 이상인 경우 현금영수증 의무발행 데이터 등록 필요
if("N".equals(mberManageVO.getTaxbillAuto()) && Integer.parseInt(mjonPayVO.getAmt()) >= 100000 && !"CARD".equals(mjonPayVO.getPayMethod())) {
//결제금액이 10만원 넘는 경우 : 현금영수증 의무발행 요청 등록
TaxVO taxVO = new TaxVO();
taxVO.setRcptType("3");//발행타입 : 3, 의무발행
taxVO.setMoid(mjonPayVO.getMoid());
taxVO.setRegNo("0100001234"); //의무발행번호
taxVO.setEmail(mberManageVO.getTaxMngEmail());//담당자이메일
taxVO.setPhone(mberManageVO.getTaxMngPhoneNum());//담당자 휴대폰번호
taxVO.setConfirmYn("N"); //완료여부
taxVO.setFrstRegisterId(mberManageVO.getMberId());
// JSPark 2022.07.01 => 휴대폰결제는 MJ_TAX 테이블에 인서트 안함
if(!"CELLPHONE".equals(mjonPayVO.getPayMethod())) {
taxDAO.insertCashBill(taxVO);
}
}
//CASH 테이블
mjonPayDAO.insertCash(mjonPayVO);
//회원정보 CASH 업데이트
mjonPayDAO.updateMemberCash(mjonPayVO);
// 회원별 등급 적용
MberGrdVO mberGrdVO = new MberGrdVO();
mberGrdVO.setMberId(mjonPayVO.getUserId());
mberGrdVO.setAmt(mjonPayVO.getAmt());
mberGrdVO.setMoid(mjonPayVO.getMoid());
mberGrdService.mberGrdSaveByUser(mberGrdVO);
}
/**
* 일반 포인트 등록 Utile
* @param mjonPayVO
* @throws Exception
*/
public void updatePointUtile(MjonPayVO mjonPayVO) throws Exception {
mjonPayDAO.insertPoint(mjonPayVO); //POINT 테이블
mjonPayDAO.updateMemberPoint(mjonPayVO); //회원정보 업데이트
}
/**
* 첫 결제 이벤트 포인트 등록 Utile
* @param mjonPayVO
* @throws Exception
*/
public void updateFirstEventPointUtile(MjonPayVO mjonPayVO) throws Exception {
/**
* 이벤트 페이지에서 넘어온 경우에만 이벤트 결제로 취급
* 이벤트 대상자인 경우 이벤트 회원 정보에 결제 금액 및 이벤트 시작일/종료일, 상태값 변경
*
* */
int payCash = (int) mjonPayVO.getCash();
int limitCash = 500000; //이벤트 참여 최대 금액 50만원으로 설정
//이벤트 대상자인 경우에는 포인트를 무조건 지급하지 않는다.
//차후에 민원이 제가되면 해당 민원인만 관리자가 포인트를 별도 지급하도록 하기로 함.
mjonPayVO.setPoint(0);
mjonPayVO.setPointMemo("첫 결제 이벤트로 인한 포인트 미지급 0원으로 지급처리함.");
mjonPayDAO.insertPoint(mjonPayVO); //POINT 테이블
mjonPayDAO.updateMemberPoint(mjonPayVO); //회원정보 업데이트
if(payCash >= limitCash) {
//결제금액이 50만원을 넘었기 때문에 50만원만 이벤트 캐시로 충전한다.
//포인트는 미지급 한다.
payCash = 500000;
}
//이벤트 회원 테이블 정보 업데이트
int resultCnt = updateEventMberInfo(mjonPayVO, payCash);
System.out.println(resultCnt);
}
/**
* 첫 결제 이벤트 회원 테이블 정보 업데이트
* 이벤트 시작일, 종료일, 상태정보, 결제 금액, 잔여금액 등 정보 업데이트
*
* */
public int updateEventMberInfo(MjonPayVO mjonPayVO, int payCash) throws Exception {
int resultCnt = 0;
try {
//이벤트 회원 정보 업데이트
MjonEventVO updtEventVO = new MjonEventVO();
updtEventVO.setMberId(mjonPayVO.getUserId());
updtEventVO.setEventFrstCash(payCash); //결제 Cash(부가세 뺀 금액)
updtEventVO.setEventRemainCash(payCash); //초기 금액을 결제 Cash(부가세 뺀 금액)로 설정
updtEventVO.setEventPgMoid(mjonPayVO.getMoid()); //결제 Moid 번호
/**
* 이벤트 시작일 및 종료일 셋팅
* 현재일로 부터 2개월 설정
* DB -> datetime
*
* */
String nowDate = MJUtil.getRealTime();
String eventEndDate = MJUtil.getAfterTimerMonth(2);
updtEventVO.setEventStartDate(nowDate);//이벤트 시작일자 설정
updtEventVO.setEventEndDate(eventEndDate);//이벤트 종료일자 설정
updtEventVO.setEventStatus("Y");//이벤트 상태를 진행 중으로 변경
resultCnt = mjonEventDAO.updateEventMberStatusInfo(updtEventVO);
} catch (Exception e) {
System.out.println("+++++++++++++ updateEventMberInfo ServiceImple Error !!! "+e);
}
return resultCnt;
}
}