diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java index 2cfa703..6fe8b66 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardCharacterServiceImpl.java @@ -159,6 +159,9 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl selectListByUserId(String acceptLanguage) { long loginId = StpUtil.getLoginIdAsLong(); String locale = RequestLocaleUtils.resolveLanguage(acceptLanguage); + if (!StringUtils.hasText(locale)) { + locale = DEFAULT_FALLBACK_LOCALE; + } return keyboardUserCharacterMapper.selectByUserId(loginId, locale); } diff --git a/src/main/resources/mapper/KeyboardUserCharacterMapper.xml b/src/main/resources/mapper/KeyboardUserCharacterMapper.xml index dd273dc..69eb72d 100644 --- a/src/main/resources/mapper/KeyboardUserCharacterMapper.xml +++ b/src/main/resources/mapper/KeyboardUserCharacterMapper.xml @@ -9,7 +9,7 @@ SELECT kuc.id, kuc.character_id, - kci.character_name, + COALESCE(kci.character_name, kci_en.character_name) AS character_name, kuc.emoji FROM keyboard_user_character kuc JOIN keyboard_user_sort kus @@ -17,6 +17,9 @@ LEFT JOIN keyboard_character_i18n kci ON kuc.character_id = kci.character_id AND kci."locale" = #{locale} + LEFT JOIN keyboard_character_i18n kci_en + ON kuc.character_id = kci_en.character_id + AND kci_en."locale" = 'en' WHERE kuc.user_id = #{loginId} AND kuc.deleted = FALSE ORDER BY array_position(kus.user_characteu_id_sort, kuc.id) NULLS LAST;