package itn.let.module.base; import java.math.BigDecimal; import java.math.RoundingMode; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import egovframework.rte.fdl.cmmn.exception.FdlException; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import itn.let.kakao.kakaoComm.KakaoSendAdvcVO; import itn.let.kakao.kakaoComm.KakaoSendUtil; import itn.let.kakao.kakaoComm.KakaoVO; import itn.let.kakao.user.kakaoAt.service.impl.KakaoAlimTalkDAO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; import itn.let.mjo.event.service.impl.MjonEventDAO; import itn.let.mjo.msg.service.MjonMsgVO; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.msgdata.service.impl.MjonMsgDataDAO; import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.impl.MjonPayDAO; import itn.let.sym.site.service.JoinSettingVO; import itn.let.uss.umt.service.MberManageVO; import lombok.extern.slf4j.Slf4j; /** * * @author : 이호영 * @fileName : PriceAndPoint.java * @date : 2023.03.27 * @description : 금액 포인트 관련 module * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * * 2023.03.27 이호영 최초 생성 * * * */ @Slf4j @Component public class PriceAndPoint { @Autowired private MjonMsgDataDAO mjonMsgDataDAO; @Autowired private MjonPayDAO mjonPayDAO; @Autowired private MjonEventService mjonEventService; @Resource(name = "egovMjonCashIdGnrService") private EgovIdGnrService idgenMjonCashId; @Resource(name="kakaoAlimTalkDAO") private KakaoAlimTalkDAO kakaoAlimTalkDAO; /** * @methodName : getBefCash * @author : 이호영 * @date : 2023.03.30 * @description : 사용자 보유 잔액 * @param userId * @return * @throws Exception */ public String getBefCash(String userId) throws Exception { MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setUserId(userId); return mjonMsgDataDAO.selectBeforeCashData(mjonMsgVO); } /** * @methodName : getBefPoint * @author : 이호영 * @date : 2023.03.30 * @description : 사용자 보유 포인트 * @param userId * @return * @throws Exception */ public String getBefPoint(String userId) throws Exception { MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setUserId(userId); return mjonMsgDataDAO.selectBeforePointData(mjonMsgVO); } /** * @methodName : getUserMoney * @author : 이호영 * @date : 2023.03.30 * @description : 사용자 보유 잔액 * @param userId * @return * @throws Exception */ public BigDecimal getUserMoney(String userId) throws Exception { MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId); BigDecimal userMoney = new BigDecimal(mberManageVO.getUserMoney()).setScale(2, RoundingMode.HALF_EVEN); return userMoney; } /** * @methodName : insertCashAndPoint * @author : 이호영 * @date : 2024.03.26 * @description : * @param mjonPayDAO * @param idgenMjonCashId * @param userId * @param totPrice * @param memo * @param msgGroupId * @throws Exception */ public void insertCashAndPoint( String userId , float totPrice , String memo , String msgGroupId ) throws Exception { // MjonPayVO mjonPayVO = new MjonPayVO(); // mjonPayVO.setCashId(idgenMjonCashId.getNextStringId()); // mjonPayVO.setUserId(userId); // System.out.println(" + totPrice :: "+ totPrice); // mjonPayVO.setCash(totPrice); // mjonPayVO.setFrstRegisterId(userId); // mjonPayVO.setMemo(memo); // mjonPayVO.setMsgGroupId(msgGroupId); insertCashAndPoint(userId, totPrice, memo, msgGroupId, null); // mjonPayDAO.insertCash(mjonPayVO); //캐시 // mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 } /** * @methodName : insertCashAndPoint * @author : 이호영 * @date : 2025. 7. 17. * @description : insertCashAndPoint 에서 환불으로 인해 userData 추가 * @return : void * @param userId * @param totPrice * @param memo * @param msgGroupId * @param userData * @throws Exception * */ public void insertCashAndPoint( String userId , float totPrice , String memo , String msgGroupId , String userData ) throws Exception { MjonPayVO mjonPayVO = buildPayVO(userId, totPrice, memo, msgGroupId); // 환불로 인해 userData가 추후 사용될 경우 여기에 처리 if (StringUtils.isNotEmpty(userData)) { mjonPayVO.setOrderId(userData); } mjonPayDAO.insertCash(mjonPayVO); //캐시 mjonPayDAO.updateMemberCash(mjonPayVO); //회원정보 업데이트 } private MjonPayVO buildPayVO(String userId, float totPrice, String memo, String msgGroupId) throws FdlException { MjonPayVO vo = new MjonPayVO(); vo.setCashId(idgenMjonCashId.getNextStringId()); vo.setUserId(userId); vo.setCash(totPrice); vo.setFrstRegisterId(userId); vo.setMemo(memo); vo.setMsgGroupId(msgGroupId); System.out.println(" + totPrice :: " + totPrice); return vo; } public void insertBizFtKakaoPrice(String userId, String msgGroupId) throws Exception { KakaoVO kakaoVO = new KakaoVO(); System.out.println("======================="); // 사용자 개인 단가 정보 불러오기 MberManageVO mberManageVO = mjonMsgDataDAO.selectMberManageInfo(userId); // 시스템 기본 단가 정보 불러오기 JoinSettingVO sysJoinSetVO = mjonMsgDataDAO.selectJoinSettingInfo(); KakaoSendUtil.getValidPrice(mberManageVO.getShortPrice(), sysJoinSetVO.getShortPrice()); // TODO Auto-generated method stub kakaoVO.setMsgGroupId(msgGroupId); kakaoVO.setSmsPrice(KakaoSendUtil.getValidPrice(mberManageVO.getShortPrice(), sysJoinSetVO.getShortPrice())); kakaoVO.setMmsPrice(KakaoSendUtil.getValidPrice(mberManageVO.getLongPrice(), sysJoinSetVO.getLongPrice())); kakaoVO.setPicturePrice(KakaoSendUtil.getValidPrice(mberManageVO.getPicturePrice(), sysJoinSetVO.getPicturePrice())); kakaoVO.setKakaoFtPrice(KakaoSendUtil.getValidPrice(mberManageVO.getKakaoFtPrice(), sysJoinSetVO.getKakaoFtPrice())); kakaoVO.setKakaoFtImgPrice(KakaoSendUtil.getValidPrice(mberManageVO.getKakaoFtImgPrice(), sysJoinSetVO.getKakaoFtImgPrice())); kakaoVO.setKakaoFtWideImgPrice(KakaoSendUtil.getValidPrice(mberManageVO.getKakaoFtWideImgPrice(), sysJoinSetVO.getKakaoFtWideImgPrice())); kakaoAlimTalkDAO.insertKakaoSendPrice(kakaoVO); } /** * @methodName : insertCashAndPoint * @author : 이지우 * @date : 2025. 8. 14. * @description : insertCashAndPoint 에서 updateMemberCash 제외 * @return : void * @param userId * @param totPrice * @param memo * @param msgGroupId * @param userData * @throws Exception * */ public void insertCashAndPointNoUpdate( String userId , float totPrice , String memo , String msgGroupId , String userData ) throws Exception { MjonPayVO mjonPayVO = buildPayVO(userId, totPrice, memo, msgGroupId); // 환불로 인해 userData가 추후 사용될 경우 여기에 처리 if (StringUtils.isNotEmpty(userData)) { mjonPayVO.setOrderId(userData); } mjonPayDAO.insertCash(mjonPayVO); //캐시 } }