From 47e57788f4a1f97e5997d9017edd9a6c69b7e57b Mon Sep 17 00:00:00 2001 From: Jianguo-Genius Date: Fri, 16 Aug 2024 15:12:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=B3=BB=E7=BB=9F=E7=AE=A1=E7=90=86):=20?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=AF=AD=E8=A8=80=E6=97=B6=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E8=BF=9B=E8=A1=8C=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PersonalCenterController.java | 7 +++++++ .../request/user/PersonalLocaleRequest.java | 14 +++++++++++++ .../system/service/SimpleUserService.java | 11 ++++++---- .../system/service/UserLogService.java | 4 ++-- .../user/PersonalControllerTests.java | 21 +++++++++++++++++++ .../utils/user/PersonalRequestUtils.java | 1 + frontend/.env.development | 2 +- frontend/src/api/modules/user/index.ts | 7 +++++++ frontend/src/api/requrls/user.ts | 1 + frontend/src/components/pure/navbar/index.vue | 9 +++++++- frontend/src/models/user.ts | 4 ++++ 11 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 backend/services/system-setting/src/main/java/io/metersphere/system/dto/request/user/PersonalLocaleRequest.java diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/controller/PersonalCenterController.java b/backend/services/system-setting/src/main/java/io/metersphere/system/controller/PersonalCenterController.java index 54b120694b..07277ee23f 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/controller/PersonalCenterController.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/controller/PersonalCenterController.java @@ -1,6 +1,7 @@ package io.metersphere.system.controller; import io.metersphere.sdk.exception.MSException; +import io.metersphere.system.dto.request.user.PersonalLocaleRequest; import io.metersphere.system.dto.request.user.PersonalUpdatePasswordRequest; import io.metersphere.system.dto.request.user.PersonalUpdateRequest; import io.metersphere.system.dto.user.PersonalDTO; @@ -40,6 +41,12 @@ PersonalCenterController { return simpleUserService.updateAccount(request, SessionUtils.getUserId()); } + @PostMapping("/update-locale") + @Operation(summary = "个人中心-修改信息") + public void updateLocale(@Validated @RequestBody PersonalLocaleRequest request) { + simpleUserService.updateLanguage(request, SessionUtils.getUserId()); + } + @PostMapping("/update-password") @Operation(summary = "个人中心-修改密码") @Log(type = OperationLogType.UPDATE, expression = "#msClass.updatePasswordLog(#request)", msClass = UserLogService.class) diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/dto/request/user/PersonalLocaleRequest.java b/backend/services/system-setting/src/main/java/io/metersphere/system/dto/request/user/PersonalLocaleRequest.java new file mode 100644 index 0000000000..f67e475b5b --- /dev/null +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/dto/request/user/PersonalLocaleRequest.java @@ -0,0 +1,14 @@ +package io.metersphere.system.dto.request.user; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +@Data +public class PersonalLocaleRequest { + @Schema(description = "国际化", requiredMode = Schema.RequiredMode.REQUIRED) + @Pattern(regexp = "(zh-CN)|(en-US)", message = "locale格式不正确") + @NotEmpty + private String language; +} diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/SimpleUserService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/SimpleUserService.java index 8bbc5888dc..f0d5b767f6 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/SimpleUserService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/SimpleUserService.java @@ -14,10 +14,7 @@ import io.metersphere.system.dto.excel.UserExcel; import io.metersphere.system.dto.excel.UserExcelRowDTO; import io.metersphere.system.dto.request.UserInviteRequest; import io.metersphere.system.dto.request.UserRegisterRequest; -import io.metersphere.system.dto.request.user.PersonalUpdatePasswordRequest; -import io.metersphere.system.dto.request.user.PersonalUpdateRequest; -import io.metersphere.system.dto.request.user.UserChangeEnableRequest; -import io.metersphere.system.dto.request.user.UserEditRequest; +import io.metersphere.system.dto.request.user.*; import io.metersphere.system.dto.sdk.BasePageRequest; import io.metersphere.system.dto.sdk.ExcelParseDTO; import io.metersphere.system.dto.sdk.OptionDTO; @@ -558,6 +555,12 @@ public class SimpleUserService { } } + public void updateLanguage(PersonalLocaleRequest request, String operator) { + User editUser = new User(); + editUser.setId(operator); + editUser.setLanguage(request.getLanguage()); + userMapper.updateByPrimaryKeySelective(editUser); + } public boolean updateAccount(PersonalUpdateRequest request, String operator) { this.checkUserEmail(request.getId(), request.getEmail()); User editUser = new User(); diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/service/UserLogService.java b/backend/services/system-setting/src/main/java/io/metersphere/system/service/UserLogService.java index 60389b026d..82e093c7f1 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/service/UserLogService.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/service/UserLogService.java @@ -96,7 +96,7 @@ public class UserLogService { .method(HttpMethodConstants.POST.name()) .path("/personal/update-password") .sourceId(request.getId()) - .content(user.getName() + StringUtils.SPACE + Translator.get("personal.change.password")) + .content(Translator.get("personal.change.password")) .originalValue(JSON.toJSONBytes(user)) .build().getLogDTO(); return dto; @@ -196,7 +196,7 @@ public class UserLogService { .method(HttpMethodConstants.POST.name()) .path("/system/user/delete") .sourceId(user.getId()) - .content(Translator.get("user.delete") + " : " + user.getName()) + .content(user.getName()) .originalValue(JSON.toJSONBytes(user)) .build().getLogDTO(); logDTOList.add(dto); diff --git a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/user/PersonalControllerTests.java b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/user/PersonalControllerTests.java index 35f1ad6c49..de290cdc81 100644 --- a/backend/services/system-setting/src/test/java/io/metersphere/system/controller/user/PersonalControllerTests.java +++ b/backend/services/system-setting/src/test/java/io/metersphere/system/controller/user/PersonalControllerTests.java @@ -9,6 +9,7 @@ import io.metersphere.system.controller.handler.ResultHolder; import io.metersphere.system.domain.UserExample; import io.metersphere.system.domain.UserExtend; import io.metersphere.system.domain.UserExtendExample; +import io.metersphere.system.dto.request.user.PersonalLocaleRequest; import io.metersphere.system.dto.request.user.PersonalUpdatePasswordRequest; import io.metersphere.system.dto.request.user.PersonalUpdateRequest; import io.metersphere.system.dto.user.UserDTO; @@ -166,8 +167,28 @@ public class PersonalControllerTests extends BaseTest { } } + @Test @Order(2) + void testPersonalUpdateLanguage() throws Exception { + PersonalLocaleRequest request = new PersonalLocaleRequest(); + request.setLanguage("zh-CN"); + this.requestPostWithOk(PersonalRequestUtils.URL_PERSONAL_UPDATE_LANGUAGE, request); + Assertions.assertEquals(userMapper.selectByPrimaryKey(loginUser).getLanguage(), "zh-CN"); + + request.setLanguage("en-US"); + this.requestPostWithOk(PersonalRequestUtils.URL_PERSONAL_UPDATE_LANGUAGE, request); + Assertions.assertEquals(userMapper.selectByPrimaryKey(loginUser).getLanguage(), "en-US"); + + request.setLanguage(null); + this.requestPost(PersonalRequestUtils.URL_PERSONAL_UPDATE_LANGUAGE, request).andExpect(status().isBadRequest()); + + request.setLanguage("ABCDE"); + this.requestPost(PersonalRequestUtils.URL_PERSONAL_UPDATE_LANGUAGE, request).andExpect(status().isBadRequest()); + } + + @Test + @Order(3) void testPersonalUpdatePassword() throws Exception { RsaKey rsaKey = RsaUtils.getRsaKey(); diff --git a/backend/services/system-setting/src/test/java/io/metersphere/system/utils/user/PersonalRequestUtils.java b/backend/services/system-setting/src/test/java/io/metersphere/system/utils/user/PersonalRequestUtils.java index 1cf0770125..4a5f2cd302 100644 --- a/backend/services/system-setting/src/test/java/io/metersphere/system/utils/user/PersonalRequestUtils.java +++ b/backend/services/system-setting/src/test/java/io/metersphere/system/utils/user/PersonalRequestUtils.java @@ -5,5 +5,6 @@ public class PersonalRequestUtils { //用户管理URL public static final String URL_PERSONAL_GET = "/personal/get/%s"; public static final String URL_PERSONAL_UPDATE_INFO = "/personal/update-info"; + public static final String URL_PERSONAL_UPDATE_LANGUAGE = "/personal/update-locale"; public static final String URL_PERSONAL_UPDATE_PASSWORD = "/personal/update-password"; } diff --git a/frontend/.env.development b/frontend/.env.development index b241751347..49a1f7cea8 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -1,2 +1,2 @@ VITE_API_BASE_URL= 'front' -VITE_DEV_DOMAIN='http://172.16.200.18:8081/' +VITE_DEV_DOMAIN='http://172.16.200.18:8081/' diff --git a/frontend/src/api/modules/user/index.ts b/frontend/src/api/modules/user/index.ts index 73d59bbdf5..759175c982 100644 --- a/frontend/src/api/modules/user/index.ts +++ b/frontend/src/api/modules/user/index.ts @@ -33,6 +33,7 @@ import { SavePlatformUrl, UpdateAPIKEYUrl, UpdateInfoUrl, + UpdateLanguageUrl, UpdateLocalConfigUrl, UpdatePswUrl, ValidAPIKEYUrl, @@ -50,6 +51,7 @@ import type { PersonalInfo, UpdateAPIKEYParams, UpdateBaseInfo, + UpdateLanguage, UpdateLocalConfigParams, UpdatePswParams, } from '@/models/user'; @@ -199,6 +201,11 @@ export function updateBaseInfo(data: UpdateBaseInfo) { return MSR.post({ url: UpdateInfoUrl, data }); } +// 个人信息-修改基本信息 +export function updateLanguage(data: UpdateLanguage) { + return MSR.post({ url: UpdateLanguageUrl, data }); +} + // 个人信息-修改密码 export function updatePsw(data: UpdatePswParams) { return MSR.post({ url: UpdatePswUrl, data }); diff --git a/frontend/src/api/requrls/user.ts b/frontend/src/api/requrls/user.ts index d9b26f9d5e..4fe282fa9e 100644 --- a/frontend/src/api/requrls/user.ts +++ b/frontend/src/api/requrls/user.ts @@ -20,6 +20,7 @@ export const DeleteAPIKEYUrl = '/user/api/key/delete'; // 个人设置-删除 AP export const AddAPIKEYUrl = '/user/api/key/add'; // 个人设置-生成 APIKEY export const UpdatePswUrl = '/personal/update-password'; // 个人信息-修改密码 export const UpdateInfoUrl = '/personal/update-info'; // 个人信息-修改信息 +export const UpdateLanguageUrl = '/personal/update-locale'; // 个人信息-修改语言 export const GetInfoUrl = '/personal/get'; // 个人信息-获取信息 export const ValidatePlatformUrl = '/user/platform/validate'; // 个人信息-校验服务集成信息 export const SavePlatformUrl = '/user/platform/save'; // 个人信息-保存三方平台账号信息 diff --git a/frontend/src/components/pure/navbar/index.vue b/frontend/src/components/pure/navbar/index.vue index c456f87607..a636f7da82 100644 --- a/frontend/src/components/pure/navbar/index.vue +++ b/frontend/src/components/pure/navbar/index.vue @@ -147,7 +147,7 @@
  • - +