Files
madeu_crm/src/main/resources/mappers/MobileMembershipSqlMap.xml
2025-10-18 11:06:19 +09:00

190 lines
7.1 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="MobileMembership">
<select id="selectTotalMembershipBalance" parameterType="hashmap" resultType="hashmap">
SELECT FORMAT(IFNULL(MM.MEMBERSHIP_BALANCE,0),0) AS membershipBalance
FROM MU_MEMBERSHIP MM
WHERE MM.USE_YN = 'Y'
AND MM.MU_USER_ID=#{muUserId}
</select>
<select id="selectListMembershipChargeCount" parameterType="hashmap" resultType="Integer">
SELECT COUNT(1) AS "totalCount"
FROM MU_MEMBERSHIP_HISTORY MMH
WHERE MMH.USE_YN='Y'
AND MMH.MU_USER_ID=#{muUserId}
AND (MMH.USAGE_TYPE='C' OR MMH.USAGE_TYPE = 'P' OR MMH.USAGE_TYPE = 'A' OR MMH.USAGE_TYPE = 'D')
<if test="membershipSearchDate != null and membershipSearchDate != ''">
AND DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m') = #{membershipSearchDate}
</if>
</select>
<select id="selectListMembershipCharge" parameterType="hashmap" resultType="hashmap">
SELECT DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m-%d') AS "writeDate"
, FORMAT(MMH.RECHARGE_AMOUNT,0) AS "rechargeAmount"
, CASE
WHEN MMH.USAGE_TYPE = 'C' THEN '카드 충전'
WHEN MMH.USAGE_TYPE = 'A' THEN '멤버십 적립'
WHEN MMH.USAGE_TYPE = 'D' THEN '환불'
WHEN MMH.USAGE_TYPE = 'P' THEN CONCAT('멤버십 양수', ' (', MU_FROM.USER_NAME, ')')
ELSE ''
END AS "chargePaymentItemName"
FROM MU_MEMBERSHIP_HISTORY MMH
LEFT JOIN MU_USER MU_FROM
ON MMH.TRANSFER_FROM_USER_ID = MU_FROM.MU_USER_ID
WHERE MMH.USE_YN='Y'
AND MMH.MU_USER_ID=#{muUserId}
AND (MMH.USAGE_TYPE='C' OR MMH.USAGE_TYPE = 'P' OR MMH.USAGE_TYPE = 'A' OR MMH.USAGE_TYPE = 'D')
<if test="membershipSearchDate != null and membershipSearchDate != ''">
AND DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m') = #{membershipSearchDate}
</if>
<choose>
<when test="sortBy eq 'amount'.toString()">
ORDER BY MMH.RECHARGE_AMOUNT DESC
</when>
<otherwise>
ORDER BY MMH.REG_DATE DESC
</otherwise>
</choose>
</select>
<select id="selectListMembershipUseCount" parameterType="hashmap" resultType="Integer">
SELECT COUNT(1) AS "totalCount"
FROM MU_MEMBERSHIP_HISTORY MMH
WHERE MMH.USE_YN='Y'
AND MMH.MU_USER_ID = #{muUserId}
AND (MMH.USAGE_TYPE ='U' OR MMH.USAGE_TYPE ='T')
<if test="membershipSearchDate != null and membershipSearchDate != ''">
AND DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m') = #{membershipSearchDate}
</if>
</select>
<select id="selectListMembershipUse" parameterType="hashmap" resultType="hashmap">
SELECT DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m-%d') AS writeDate
, IFNULL(MT.TREATMENT_NAME,'기타') AS treatmentName
, CASE
WHEN MMH.USAGE_TYPE = 'U' THEN '사용'
WHEN MMH.USAGE_TYPE = 'T' THEN CONCAT('멤버십 양도', ' (', MU_TO.USER_NAME, ')')
ELSE MTP.TREATMENT_PROCEDURE_NAME
END AS procedureName
, FORMAT(MMH.USED_AMOUNT,0) AS usedAmount
FROM MU_MEMBERSHIP_HISTORY MMH
LEFT JOIN MU_TREATMENT MT
ON MMH.MU_TREATMENT_ID = MT.MU_TREATMENT_ID
LEFT JOIN MU_TREATMENT_PROCEDURE MTP
ON MTP.MU_TREATMENT_PROCEDURE_ID = MMH.MU_TREATMENT_PROCEDURE_ID
LEFT JOIN MU_USER MU_TO
ON MMH.TRANSFER_TO_USER_ID = MU_TO.MU_USER_ID
WHERE MMH.USE_YN='Y'
AND MMH.MU_USER_ID = #{muUserId}
AND (MMH.USAGE_TYPE ='U' OR MMH.USAGE_TYPE ='T')
<if test="membershipSearchDate != null and membershipSearchDate != ''">
AND DATE_FORMAT(MMH.WRITE_DATE, '%Y-%m') = #{membershipSearchDate}
</if>
<choose>
<when test="sortBy eq 'amount'.toString()">
ORDER BY MMH.USED_AMOUNT DESC
</when>
<otherwise>
ORDER BY MMH.REG_DATE DESC
</otherwise>
</choose>
</select>
<insert id="insertMembership" parameterType="hashmap">
<selectKey resultType="string" keyProperty="id" order="BEFORE">
SELECT CONCAT(#{muMembershipId},LPAD((SELECT NEXTVAL(MU_MEMBERSHIP_SEQ)), 11, 0))
</selectKey>
INSERT INTO MU_MEMBERSHIP(
MU_MEMBERSHIP_ID
,MU_USER_ID
,MEMBERSHIP_BALANCE
,LAST_RECHARGE_DATE
,CUD_FLAG
,USE_YN
,REG_ID
,REG_DATE
,MOD_ID
,MOD_DATE
,T_ID
,T_DATE
)VALUES(
#{id}
,#{muUserId}
,0
,NOW()
,'C'
,'Y'
,#{regId}
,NOW()
,#{modId}
,NOW()
,#{tId}
,NOW()
)
</insert>
<insert id="insertDevice" parameterType="hashmap">
<selectKey resultType="string" keyProperty="id" order="BEFORE">
SELECT CONCAT(#{muDeviceId},LPAD((SELECT NEXTVAL(MU_DEVICE_SEQ)), 11, 0))
</selectKey>
INSERT INTO MU_DEVICE(
MU_DEVICE_ID
, MU_USER_ID
, PHONE_TYPE
, DEVICE_UUID
, PUSH_KEY
, MODEL_NAME
, OS_VERSION
, USE_YN
, REG_ID
, REG_DATE
, MOD_ID
, MOD_DATE
)VALUES(
#{id}
,#{muUserId}
,#{phoneType}
,#{deviceUuid}
,#{pushKey}
,#{modelName}
,#{osVersion}
,'Y'
,#{regId}
,NOW()
,#{modId}
,NOW()
)
</insert>
<update id="updateMembershipYn" parameterType="hashmap">
UPDATE MU_USER
SET MOD_ID = #{modId}
,MOD_DATE = NOW()
,CUD_FLAG = 'U'
,MEMBERSHIP_YN = 'Y'
WHERE USE_YN = 'Y'
AND MU_USER_ID = #{muUserId}
</update>
<update id="updateMembership" parameterType="hashmap">
UPDATE MU_MEMBERSHIP
SET
MEMBERSHIP_BALANCE = #{membershipBalance}
<if test="lastRechargeDate != null and lastRechargeDate != ''">
,LAST_RECHARGE_DATE = #{lastRechargeDate}
</if>
<if test="lastUseDate != null and lastUseDate != ''">
,LAST_USE_DATE = #{lastUseDate}
</if>
,CUD_FLAG = 'U'
,USE_YN = 'Y'
,MOD_ID = #{modId}
,MOD_DATE = NOW()
,T_ID = #{tId}
,T_DATE = NOW()
WHERE MU_USER_ID = #{muUserId}
AND USE_YN = 'Y'
</update>
</mapper>