310 lines
9.6 KiB
XML
310 lines
9.6 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="multilang">
|
|
|
|
<!-- 회사 목록 조회 -->
|
|
<select id="selectCompanies" resultType="map">
|
|
SELECT
|
|
company_code as "companyCode",
|
|
company_name as "companyName",
|
|
writer as "writer",
|
|
regdate as "regdate",
|
|
status as "status"
|
|
FROM company_mng
|
|
WHERE status = 'active' OR status IS NULL
|
|
ORDER BY company_code
|
|
</select>
|
|
|
|
<!-- 언어 마스터 조회 -->
|
|
<select id="selectLanguages" resultType="map">
|
|
SELECT
|
|
lang_code as "langCode",
|
|
lang_name as "langName",
|
|
lang_native as "langNative",
|
|
is_active as "isActive",
|
|
sort_order as "sortOrder",
|
|
created_date as "createdDate",
|
|
created_by as "createdBy",
|
|
updated_date as "updatedDate",
|
|
updated_by as "updatedBy"
|
|
FROM LANGUAGE_MASTER
|
|
ORDER BY sort_order, lang_code
|
|
</select>
|
|
|
|
<!-- 언어 추가 -->
|
|
<insert id="insertLanguage" parameterType="map">
|
|
INSERT INTO LANGUAGE_MASTER (
|
|
lang_code,
|
|
lang_name,
|
|
lang_native,
|
|
is_active,
|
|
sort_order,
|
|
created_date,
|
|
created_by,
|
|
updated_date,
|
|
updated_by
|
|
) VALUES (
|
|
#{langCode},
|
|
#{langName},
|
|
#{langNative},
|
|
#{isActive},
|
|
#{sortOrder},
|
|
now(),
|
|
#{createdBy},
|
|
now(),
|
|
#{updatedBy}
|
|
)
|
|
</insert>
|
|
|
|
<!-- 언어 수정 -->
|
|
<update id="updateLanguage" parameterType="map">
|
|
UPDATE LANGUAGE_MASTER
|
|
SET
|
|
lang_name = #{langName},
|
|
lang_native = #{langNative},
|
|
is_active = #{isActive},
|
|
sort_order = #{sortOrder},
|
|
updated_date = now(),
|
|
updated_by = #{updatedBy}
|
|
WHERE lang_code = #{langCode}
|
|
</update>
|
|
|
|
<!-- 언어 삭제 -->
|
|
<delete id="deleteLanguage" parameterType="map">
|
|
DELETE FROM LANGUAGE_MASTER
|
|
WHERE lang_code = #{langCode}
|
|
</delete>
|
|
|
|
<!-- 특정 언어 조회 -->
|
|
<select id="selectLanguageByCode" parameterType="map" resultType="map">
|
|
SELECT
|
|
lang_code as "langCode",
|
|
lang_name as "langName",
|
|
lang_native as "langNative",
|
|
is_active as "isActive",
|
|
sort_order as "sortOrder",
|
|
created_date as "createdDate",
|
|
created_by as "createdBy",
|
|
updated_date as "updatedDate",
|
|
updated_by as "updatedBy"
|
|
FROM LANGUAGE_MASTER
|
|
WHERE lang_code = #{langCode}
|
|
</select>
|
|
|
|
<!-- 언어 상태 업데이트 -->
|
|
<update id="updateLanguageStatus" parameterType="map">
|
|
UPDATE LANGUAGE_MASTER
|
|
SET
|
|
is_active = #{isActive},
|
|
updated_date = now(),
|
|
updated_by = 'system'
|
|
WHERE lang_code = #{langCode}
|
|
</update>
|
|
|
|
<!-- 회사별 다국어 키 목록 조회 -->
|
|
<select id="selectLangKeys" parameterType="map" resultType="map">
|
|
SELECT
|
|
key_id as "keyId",
|
|
company_code as "companyCode",
|
|
menu_name as "menuName",
|
|
lang_key as "langKey",
|
|
description,
|
|
is_active as "isActive",
|
|
created_date as "createdDate",
|
|
created_by as "createdBy",
|
|
updated_date as "updatedDate",
|
|
updated_by as "updatedBy"
|
|
FROM MULTI_LANG_KEY_MASTER
|
|
WHERE 1=1
|
|
<if test="companyCode != null and companyCode != ''">
|
|
AND company_code = #{companyCode}
|
|
</if>
|
|
<if test="searchText != null and searchText != ''">
|
|
AND (lang_key ILIKE '%' || #{searchText} || '%'
|
|
OR description ILIKE '%' || #{searchText} || '%'
|
|
OR menu_name ILIKE '%' || #{searchText} || '%')
|
|
</if>
|
|
ORDER BY company_code, menu_name, lang_key
|
|
</select>
|
|
|
|
<!-- 특정 키의 다국어 텍스트 조회 -->
|
|
<select id="selectLangTexts" parameterType="map" resultType="map">
|
|
SELECT
|
|
text_id as "textId",
|
|
key_id as "keyId",
|
|
lang_code as "langCode",
|
|
lang_text as "langText",
|
|
is_active as "isActive",
|
|
created_date as "createdDate",
|
|
created_by as "createdBy",
|
|
updated_date as "updatedDate",
|
|
updated_by as "updatedBy"
|
|
FROM MULTI_LANG_TEXT
|
|
WHERE key_id = #{keyId}::numeric
|
|
AND is_active = 'Y'
|
|
ORDER BY lang_code
|
|
</select>
|
|
|
|
<!-- 사용자별 다국어 텍스트 조회 -->
|
|
<select id="selectUserText" parameterType="map" resultType="map">
|
|
SELECT
|
|
t.lang_text as "langText"
|
|
FROM MULTI_LANG_KEY_MASTER km
|
|
JOIN MULTI_LANG_TEXT t ON km.key_id = t.key_id
|
|
WHERE km.company_code = #{companyCode}
|
|
AND km.menu_name = #{menuCode}
|
|
AND km.lang_key = #{langKey}
|
|
AND t.lang_code = #{userLang}
|
|
AND km.is_active = 'Y'
|
|
AND t.is_active = 'Y'
|
|
LIMIT 1
|
|
</select>
|
|
|
|
<!-- 다국어 키 생성 -->
|
|
<insert id="insertLangKey" parameterType="map">
|
|
INSERT INTO MULTI_LANG_KEY_MASTER (
|
|
company_code,
|
|
menu_name,
|
|
lang_key,
|
|
description,
|
|
is_active,
|
|
created_date,
|
|
created_by,
|
|
updated_date,
|
|
updated_by
|
|
) VALUES (
|
|
#{companyCode},
|
|
#{menuName},
|
|
#{langKey},
|
|
#{description},
|
|
'Y',
|
|
now(),
|
|
#{createdBy},
|
|
now(),
|
|
#{updatedBy}
|
|
)
|
|
<selectKey resultType="int" keyProperty="keyId" order="AFTER">
|
|
SELECT currval('multi_lang_key_master_key_id_seq')
|
|
</selectKey>
|
|
</insert>
|
|
|
|
<!-- 다국어 키 수정 -->
|
|
<update id="updateLangKey" parameterType="map">
|
|
UPDATE MULTI_LANG_KEY_MASTER
|
|
SET
|
|
company_code = #{companyCode},
|
|
menu_name = #{menuName},
|
|
lang_key = #{langKey},
|
|
description = #{description},
|
|
updated_date = now(),
|
|
updated_by = #{updatedBy}
|
|
WHERE key_id = #{keyId}::numeric
|
|
</update>
|
|
|
|
<!-- 다국어 키 삭제 (물리 삭제) -->
|
|
<delete id="deleteLangKey" parameterType="map">
|
|
DELETE FROM MULTI_LANG_KEY_MASTER
|
|
WHERE key_id = #{keyId}::numeric
|
|
</delete>
|
|
|
|
<!-- 특정 키 조회 -->
|
|
<select id="selectLangKeyById" parameterType="map" resultType="map">
|
|
SELECT
|
|
key_id as "keyId",
|
|
company_code as "companyCode",
|
|
menu_name as "menuName",
|
|
lang_key as "langKey",
|
|
description,
|
|
is_active as "isActive",
|
|
created_date as "createdDate",
|
|
created_by as "createdBy",
|
|
updated_date as "updatedDate",
|
|
updated_by as "updatedBy"
|
|
FROM MULTI_LANG_KEY_MASTER
|
|
WHERE key_id = #{keyId}::numeric
|
|
</select>
|
|
|
|
<!-- 회사와 언어키로 중복 체크 -->
|
|
<select id="selectLangKeyByCompanyAndKey" parameterType="map" resultType="map">
|
|
SELECT
|
|
key_id as "keyId",
|
|
company_code as "companyCode",
|
|
menu_name as "menuName",
|
|
lang_key as "langKey",
|
|
description,
|
|
is_active as "isActive"
|
|
FROM MULTI_LANG_KEY_MASTER
|
|
WHERE company_code = #{companyCode}
|
|
AND lang_key = #{langKey}
|
|
</select>
|
|
|
|
<!-- 회사와 언어키로 중복 체크 (자신 제외) -->
|
|
<select id="selectLangKeyByCompanyAndKeyExcludeSelf" parameterType="map" resultType="map">
|
|
SELECT
|
|
key_id as "keyId",
|
|
company_code as "companyCode",
|
|
menu_name as "menuName",
|
|
lang_key as "langKey",
|
|
description,
|
|
is_active as "isActive"
|
|
FROM MULTI_LANG_KEY_MASTER
|
|
WHERE company_code = #{companyCode}
|
|
AND lang_key = #{langKey}
|
|
AND key_id != #{keyId}::numeric
|
|
</select>
|
|
|
|
<!-- 다국어 키 상태 업데이트 -->
|
|
<update id="updateLangKeyStatus" parameterType="map">
|
|
UPDATE MULTI_LANG_KEY_MASTER
|
|
SET
|
|
is_active = #{isActive},
|
|
updated_date = now(),
|
|
updated_by = 'system'
|
|
WHERE key_id = #{keyId}::numeric
|
|
</update>
|
|
|
|
<!-- 다국어 텍스트 삭제 -->
|
|
<delete id="deleteLangTexts" parameterType="map">
|
|
DELETE FROM MULTI_LANG_TEXT
|
|
WHERE key_id = #{keyId}::numeric
|
|
</delete>
|
|
|
|
<!-- 다국어 텍스트 삽입 -->
|
|
<insert id="insertLangText" parameterType="map">
|
|
INSERT INTO MULTI_LANG_TEXT (
|
|
key_id,
|
|
lang_code,
|
|
lang_text,
|
|
is_active,
|
|
created_date,
|
|
created_by,
|
|
updated_date,
|
|
updated_by
|
|
) VALUES (
|
|
#{keyId}::numeric,
|
|
#{langCode},
|
|
#{langText},
|
|
'Y',
|
|
now(),
|
|
#{createdBy},
|
|
now(),
|
|
#{updatedBy}
|
|
)
|
|
</insert>
|
|
|
|
<!-- 특정 키의 다국어 텍스트 조회 -->
|
|
<select id="selectLangText" parameterType="map" resultType="map">
|
|
SELECT
|
|
t.lang_text as "langText"
|
|
FROM MULTI_LANG_TEXT t
|
|
JOIN MULTI_LANG_KEY_MASTER k ON t.key_id = k.key_id
|
|
WHERE k.company_code = #{companyCode}
|
|
AND k.lang_key = #{langKey}
|
|
AND t.lang_code = #{langCode}
|
|
AND t.is_active = 'Y'
|
|
AND k.is_active = 'Y'
|
|
</select>
|
|
|
|
</mapper>
|