후불제 회원 월별 정산 데이터 입력 기능 개선

- 후불제 정산 회원 선정 쿼리 변경 : 기존 남은 금액 기준에서 실제 사용한 금액이 있는지 확인으로 변경
 - 1일에 후불 요금청구 데이터 입력시 mj_pg 테이블에 중복데이터가 있는지 확인 후 없으면 데이터 입력
This commit is contained in:
rosewiper 2024-01-03 10:58:00 +09:00
parent 44d9ba683e
commit fafde9249d
4 changed files with 52 additions and 1 deletions

View File

@ -207,6 +207,7 @@ public class UserManageVO extends UserDefaultVO{
private String atSmishingYn; // 알림톡 스미싱 의심여부
private String spamYn;
private String nextPayMethod;
private float paymentCash; //이전달에 실제 사용한 캐시 정보
public String getNextPayMethod() {
return nextPayMethod;
@ -731,6 +732,12 @@ public class UserManageVO extends UserDefaultVO{
public void setVipYn(String vipYn) {
this.vipYn = vipYn;
}
public float getPaymentCash() {
return paymentCash;
}
public void setPaymentCash(float paymentCash) {
this.paymentCash = paymentCash;
}

View File

@ -698,7 +698,12 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
public void updateUserCashByAutoCash() throws Exception {
List<UserManageVO> userPrePaymentYnList = userManageDAO.selectUserPrePaymentYnList(new UserManageVO());
for (UserManageVO umVO: userPrePaymentYnList) {
if (umVO.getNowChargeCash() > 0) {
if (umVO.getPaymentCash() > 0) {
//이번달에 입력된 후불 결제요청 데이터가 있는지 확인 - 혹시나 중복 입력을 방지하기 위함
int paymentCnt = userManageDAO.selectUserPrePaymentPGdataCount(umVO.getMberId());
if(paymentCnt > 0) continue;
//회원 정보 조회
MberManageVO mberManageVO = mberManageDAO.selectMber(umVO.getMberId()); //멤버ID에서 유니크ID로 수정 필요

View File

@ -316,4 +316,9 @@ public class UserManageDAO extends EgovAbstractDAO{
return (List<UserManageVO>) list("userManageDAO.selectUserPrePaymentYnList", userManageVO);
}
// 이번달 입력된 결제요청 정보가 있는지 체크
public int selectUserPrePaymentPGdataCount(String userId) throws Exception{
return (int) select("userManageDAO.selectUserPrePaymentPGdataCount", userId);
}
}

View File

@ -1405,6 +1405,29 @@
<!-- 후불제 회원 목록 -->
<select id="userManageDAO.selectUserPrePaymentYnList" parameterClass="userVO" resultClass="userVO">
SELECT IFNULL(SUM(MC.CASH * -1), 0) AS paymentCash,
IFNULL(MB.AUTO_CASH - MB.USER_MONEY, 0) AS nowChargeCash,
MC.USER_ID AS mberId,
MB.AUTO_CASH AS autoCash
FROM MJ_CASH MC
INNER JOIN LETTNGNRLMBER MB
ON MC.USER_ID = MB.MBER_ID
AND MB.PRE_PAYMENT_YN = 'N'
AND MB.MBER_STTUS = 'Y'
WHERE YEAR(MC.FRST_REGIST_PNTTM) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
AND MONTH(MC.FRST_REGIST_PNTTM) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
AND
(
MC.MSG_GROUP_ID IS NOT NULL OR MEMO = '맞춤문자 신청'
)
GROUP BY MC.USER_ID
</select>
<!-- 후불제 회원 목록 기존 소스 백업-->
<select id="userManageDAO.selectUserPrePaymentYnList_bak" parameterClass="userVO" resultClass="userVO">
SELECT
M.mberId,
M.autoCash,
@ -1420,5 +1443,16 @@
WHERE PRE_PAYMENT_YN = 'N' AND A.MBER_STTUS = 'Y'
) M
</select>
<select id="userManageDAO.selectUserPrePaymentPGdataCount" parameterClass="String" resultClass="Integer">
SELECT COUNT(MOID)
FROM MJ_PG
WHERE USER_ID = #userId#
AND YEAR(REG_DATE) = YEAR(CURRENT_DATE)
AND MONTH(REG_DATE) = MONTH(CURRENT_DATE)
</select>
</sqlMap>