From decab2d82fceae8a67383b8b5cc2909a2be96a29 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Mon, 25 Mar 2024 12:01:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E8=AF=AD=E8=A8=80=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E5=80=BC=E8=BD=AC=E5=8C=96key=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/i18n/i18n.go | 21 +++++++++++++++++++ .../system/controller/sys_dict_data.go | 15 ++++++++----- .../system/controller/sys_dict_type.go | 15 ++++++++----- .../system/controller/sys_log_operate.go | 15 ++++++++----- .../system/repository/sys_dict_data.impl.go | 2 +- .../system/repository/sys_dict_type.impl.go | 4 ++-- .../system/repository/sys_log_operate.impl.go | 4 ++-- 7 files changed, 56 insertions(+), 20 deletions(-) diff --git a/src/framework/i18n/i18n.go b/src/framework/i18n/i18n.go index f35e6026..7e5c2ded 100644 --- a/src/framework/i18n/i18n.go +++ b/src/framework/i18n/i18n.go @@ -3,6 +3,7 @@ package i18n import ( "fmt" "regexp" + "strings" systemService "be.ems/src/modules/system/service" ) @@ -70,6 +71,26 @@ func UpdateKeyValue(language, key, value string) bool { return false } +// TFindKeyPrefix 翻译值查找键 值前缀匹配 +func TFindKeyPrefix(language, keyPrefix, value string) string { + key := value + if value == "" { + return key + } + arr, ok := localeMap[language] + if !ok || len(arr) == 0 { + arr = LoadLocaleData(language) + } + + for _, v := range arr { + if strings.HasPrefix(v.Key, keyPrefix) && strings.HasPrefix(v.Value, value) { + key = v.Key + break + } + } + return key +} + // TKey 翻译键 func TKey(language, key string) string { value := key diff --git a/src/modules/system/controller/sys_dict_data.go b/src/modules/system/controller/sys_dict_data.go index a409a0c5..6f154742 100644 --- a/src/modules/system/controller/sys_dict_data.go +++ b/src/modules/system/controller/sys_dict_data.go @@ -38,12 +38,17 @@ type SysDictDataController struct { // // GET /list func (s *SysDictDataController) List(c *gin.Context) { - querys := ctx.QueryMap(c) - data := s.sysDictDataService.SelectDictDataPage(querys) - - rows := data["rows"].([]model.SysDictData) - // 闭包函数处理多语言 language := ctx.AcceptLanguage(c) + querys := ctx.QueryMap(c) + // 多语言值转key查询 + if v, ok := querys["dictLabel"]; ok && v != "" { + querys["dictLabel"] = i18n.TFindKeyPrefix(language, "dictData", v.(string)) + } + + data := s.sysDictDataService.SelectDictDataPage(querys) + rows := data["rows"].([]model.SysDictData) + + // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysDictData) { for i := range *arr { if strings.Contains((*arr)[i].DictType, "i18n") { diff --git a/src/modules/system/controller/sys_dict_type.go b/src/modules/system/controller/sys_dict_type.go index 6a2bdf9b..f9c59f09 100644 --- a/src/modules/system/controller/sys_dict_type.go +++ b/src/modules/system/controller/sys_dict_type.go @@ -36,12 +36,17 @@ type SysDictTypeController struct { // // GET /list func (s *SysDictTypeController) List(c *gin.Context) { - querys := ctx.QueryMap(c) - data := s.sysDictTypeService.SelectDictTypePage(querys) - - rows := data["rows"].([]model.SysDictType) - // 闭包函数处理多语言 language := ctx.AcceptLanguage(c) + querys := ctx.QueryMap(c) + // 多语言值转key查询 + if v, ok := querys["dictName"]; ok && v != "" { + querys["dictName"] = i18n.TFindKeyPrefix(language, "dictType", v.(string)) + } + + data := s.sysDictTypeService.SelectDictTypePage(querys) + rows := data["rows"].([]model.SysDictType) + + // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysDictType) { for i := range *arr { (*arr)[i].DictName = i18n.TKey(language, (*arr)[i].DictName) diff --git a/src/modules/system/controller/sys_log_operate.go b/src/modules/system/controller/sys_log_operate.go index 566ecf59..6ebc8ce1 100644 --- a/src/modules/system/controller/sys_log_operate.go +++ b/src/modules/system/controller/sys_log_operate.go @@ -35,12 +35,17 @@ type SysLogOperateController struct { // // GET /list func (s *SysLogOperateController) List(c *gin.Context) { - querys := ctx.QueryMap(c) - data := s.SysLogOperateService.SelectSysLogOperatePage(querys) - - rows := data["rows"].([]model.SysLogOperate) - // 闭包函数处理多语言 language := ctx.AcceptLanguage(c) + querys := ctx.QueryMap(c) + // 多语言值转key查询 + if v, ok := querys["title"]; ok && v != "" { + querys["title"] = i18n.TFindKeyPrefix(language, "log.operate.title", v.(string)) + } + + data := s.SysLogOperateService.SelectSysLogOperatePage(querys) + rows := data["rows"].([]model.SysLogOperate) + + // 闭包函数处理多语言 converI18n := func(language string, arr *[]model.SysLogOperate) { for i := range *arr { (*arr)[i].Title = i18n.TKey(language, (*arr)[i].Title) diff --git a/src/modules/system/repository/sys_dict_data.impl.go b/src/modules/system/repository/sys_dict_data.impl.go index 2a4331a9..3782a14c 100644 --- a/src/modules/system/repository/sys_dict_data.impl.go +++ b/src/modules/system/repository/sys_dict_data.impl.go @@ -69,7 +69,7 @@ func (r *SysDictDataImpl) SelectDictDataPage(query map[string]any) map[string]an } if v, ok := query["dictLabel"]; ok && v != "" { conditions = append(conditions, "dict_label like concat(?, '%')") - params = append(params, v) + params = append(params, strings.TrimSpace(v.(string))) } if v, ok := query["status"]; ok && v != "" { conditions = append(conditions, "status = ?") diff --git a/src/modules/system/repository/sys_dict_type.impl.go b/src/modules/system/repository/sys_dict_type.impl.go index db591462..dc76f752 100644 --- a/src/modules/system/repository/sys_dict_type.impl.go +++ b/src/modules/system/repository/sys_dict_type.impl.go @@ -62,11 +62,11 @@ func (r *SysDictTypeImpl) SelectDictTypePage(query map[string]any) map[string]an var params []any if v, ok := query["dictName"]; ok && v != "" { conditions = append(conditions, "dict_name like concat(?, '%')") - params = append(params, v) + params = append(params, strings.TrimSpace(v.(string))) } if v, ok := query["dictType"]; ok && v != "" { conditions = append(conditions, "dict_type like concat(?, '%')") - params = append(params, v) + params = append(params, strings.TrimSpace(v.(string))) } if v, ok := query["status"]; ok && v != "" { conditions = append(conditions, "status = ?") diff --git a/src/modules/system/repository/sys_log_operate.impl.go b/src/modules/system/repository/sys_log_operate.impl.go index 18f5cb42..a858aaa3 100644 --- a/src/modules/system/repository/sys_log_operate.impl.go +++ b/src/modules/system/repository/sys_log_operate.impl.go @@ -69,7 +69,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any) map[st var params []any if v, ok := query["title"]; ok && v != "" { conditions = append(conditions, "title like concat(?, '%')") - params = append(params, v) + params = append(params, strings.TrimSpace(v.(string))) } if v, ok := query["businessType"]; ok && v != "" { conditions = append(conditions, "business_type = ?") @@ -77,7 +77,7 @@ func (r *SysLogOperateImpl) SelectSysLogOperatePage(query map[string]any) map[st } if v, ok := query["operName"]; ok && v != "" { conditions = append(conditions, "oper_name like concat(?, '%')") - params = append(params, v) + params = append(params, strings.TrimSpace(v.(string))) } if v, ok := query["status"]; ok && v != "" { conditions = append(conditions, "status = ?")