From b6a0c52313a5ffe6c5ee95334247d06777b04024 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 23 Feb 2025 13:01:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/AdminUserController.java | 70 +++++++--- .../admin/controller/AppUserController.java | 123 ++++++++++++------ .../pojo/request/EmailChangeRequest.java | 13 ++ 3 files changed, 143 insertions(+), 63 deletions(-) create mode 100644 nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EmailChangeRequest.java diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java index 1fc5941e..d526cde2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AdminUserController.java @@ -135,27 +135,27 @@ public class AdminUserController extends ControllerBase { @ApiMark(moduleName = "账号管理", apiName = "更新账号") public ApiResult updateAccount(@Valid @RequestBody AccountUpdateRequest request) throws MessagingException { AdminUser user=adminUserService.getById(request.getId()); - if (!StrUtil.equals(user.getLoginName(),request.getLoginName())){ - VUtils.trueThrowBusinessError(adminUserService.lambdaQuery() - .eq(AdminUser::getLoginName, request.getLoginName()) - .ne(AdminUser::getId, request.getId()) - .exists()) - .throwMessage("已存在相同的登录名"); - user.setState(UserState.ToBeActivated.getState()); - String code= RandomUtil.randomString(6); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); - String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); - String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) - .replace("${email}", user.getLoginName()) - .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) - .replace("${password}", code); - emailService.sendEmail(request.getLoginName(), subject, content); - } else { - if (Objects.nonNull(request.getEnable())) { - user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); - } - } +// if (!StrUtil.equals(user.getLoginName(),request.getLoginName())){ +// VUtils.trueThrowBusinessError(adminUserService.lambdaQuery() +// .eq(AdminUser::getLoginName, request.getLoginName()) +// .ne(AdminUser::getId, request.getId()) +// .exists()) +// .throwMessage("已存在相同的登录名"); +// user.setState(UserState.ToBeActivated.getState()); +// String code= RandomUtil.randomString(6); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); +// String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); +// String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) +// .replace("${email}", user.getLoginName()) +// .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) +// .replace("${password}", code); +// emailService.sendEmail(request.getLoginName(), subject, content); +// } else { +// if (Objects.nonNull(request.getEnable())) { +// user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); +// } +// } user.setUserCode(request.getUserCode()) .setUserName(request.getUserName()) .setAvatar(request.getAvatar()) @@ -164,6 +164,9 @@ public class AdminUserController extends ControllerBase { .setTitleId(request.getTitleId()) .setUpdateBy(AdminUserUtil.getUserId()) .setUpdateTime(LocalDateTime.now()); + if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) { + user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); + } adminUserService.updateById(user); return ApiResult.success(); } @@ -347,4 +350,29 @@ public class AdminUserController extends ControllerBase { adminUserService.deleteAccount(request.getId()); return ApiResult.success(); } + + /** + * 更改邮箱 + * @param request 请求参数 + **/ + @PostMapping("changeEmail") + @ApiMark(moduleName = "账号管理", apiName = "更改邮箱") + public ApiResult changeEmail(@Valid @RequestBody EmailChangeRequest request) throws MessagingException { + AdminUser user=adminUserService.getById(request.getUserId()); + VUtils.trueThrowBusinessError(adminUserService.lambdaQuery() + .eq(AdminUser::getLoginName, request.getEmail()) + .ne(AdminUser::getId, request.getUserId()) + .exists()) + .throwMessage("已存在相同的登录名"); + String code= RandomUtil.randomString(6); + redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); + redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getEmail(), Duration.ofHours(72)); + String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); + String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) + .replace("${email}", user.getLoginName()) + .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) + .replace("${password}", code); + emailService.sendEmail(request.getEmail(), subject, content); + return ApiResult.success(); + } } diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java index bb765b8a..ecd222df 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/AppUserController.java @@ -140,33 +140,40 @@ public class AppUserController extends ControllerBase { } public void updateAppUser(AppUser user,AppUserUpdateRequest request) throws MessagingException { - if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){ - VUtils.trueThrowBusinessError(appUserService.lambdaQuery() - .eq(AppUser::getLoginName, request.getLoginName()) - .ne(AppUser::getId, request.getId()) - .exists()) - .throwMessage("登录名已存在"); - user.setState(UserState.ToBeActivated.getState()); - String code= RandomUtil.randomString(6); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getId(), code, Duration.ofHours(72)); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); - String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); - String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) - .replace("${email}", user.getLoginName()) - .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) - .replace("${password}", code); - emailService.sendEmail(request.getLoginName(), subject, content); - }else { - if (Objects.nonNull(request.getEnable())) { - user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); - } - } +// if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){ +// VUtils.trueThrowBusinessError(appUserService.lambdaQuery() +// .eq(AppUser::getLoginName, request.getLoginName()) +// .ne(AppUser::getId, request.getId()) +// .exists()) +// .throwMessage("登录名已存在"); +// user.setState(UserState.ToBeActivated.getState()); +// String code= RandomUtil.randomString(6); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getId(), code, Duration.ofHours(72)); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); +// String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); +// String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) +// .replace("${email}", user.getLoginName()) +// .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) +// .replace("${password}", code); +// emailService.sendEmail(request.getLoginName(), subject, content); +// }else { +// if (Objects.nonNull(request.getEnable())) { +// user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); +// } +// } user.setName(request.getUserName()) .setPhone(request.getPhone()) + .setAvatar(request.getAvatar()) + .setSalesUserName(request.getSalesUserName()) + .setPhone(request.getPhone()) + .setLanguageCode(request.getLanguageCode()) .setAreaId(request.getAreaId()) .setTitleId(request.getTitleId()) .setCompanyId(StrUtil.join(",", request.getCompanyIds())) .setUpdateTime(LocalDateTime.now()); + if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) { + user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); + } appUserService.updateById(user); } @@ -189,33 +196,40 @@ public class AppUserController extends ControllerBase { .throwMessage("以下公司已设置主账号:" + StrUtil.join(",", customerService.listByIds(cIds).stream() .map(TBaseCustomer::getAgencyCompanyName).collect(Collectors.toList()))); } - if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){ - VUtils.trueThrowBusinessError(appUserService.lambdaQuery() - .eq(AppUser::getLoginName, request.getLoginName()) - .ne(AppUser::getId, request.getId()) - .exists()) - .throwMessage("登录名已存在"); - user.setState(UserState.ToBeActivated.getState()); - String code= RandomUtil.randomString(6); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); - redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); - String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); - String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) - .replace("${email}", user.getLoginName()) - .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) - .replace("${password}", code); - emailService.sendEmail(request.getLoginName(), subject, content); - }else { - if (Objects.nonNull(request.getEnable())) { - user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); - } - } +// if (!StrUtil.equals(user.getLoginName(), request.getLoginName())){ +// VUtils.trueThrowBusinessError(appUserService.lambdaQuery() +// .eq(AppUser::getLoginName, request.getLoginName()) +// .ne(AppUser::getId, request.getId()) +// .exists()) +// .throwMessage("登录名已存在"); +// user.setState(UserState.ToBeActivated.getState()); +// String code= RandomUtil.randomString(6); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); +// redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getLoginName(), Duration.ofHours(72)); +// String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); +// String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) +// .replace("${email}", user.getLoginName()) +// .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) +// .replace("${password}", code); +// emailService.sendEmail(request.getLoginName(), subject, content); +// }else { +// if (Objects.nonNull(request.getEnable())) { +// user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); +// } +// } user.setName(request.getUserName()) .setPhone(request.getPhone()) + .setAvatar(request.getAvatar()) + .setSalesUserName(request.getSalesUserName()) + .setPhone(request.getPhone()) + .setLanguageCode(request.getLanguageCode()) .setAreaId(request.getAreaId()) .setTitleId(request.getTitleId()) .setCompanyId(StrUtil.join(",", request.getCompanyIds())) .setUpdateTime(LocalDateTime.now()); + if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) { + user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState()); + } appUserService.updateById(user); } @@ -366,4 +380,29 @@ public class AppUserController extends ControllerBase { appUserService.deleteAppUser(request.getId()); return ApiResult.success(); } + + /** + * 更改邮箱 + * @param request 请求参数 + **/ + @PostMapping("changeEmail") + @ApiMark(moduleName = "账号管理", apiName = "更改邮箱") + public ApiResult changeEmail(@Valid @RequestBody EmailChangeRequest request) throws MessagingException { + AppUser user=appUserService.getById(request.getUserId()); + VUtils.trueThrowBusinessError(appUserService.lambdaQuery() + .eq(AppUser::getLoginName, request.getEmail()) + .ne(AppUser::getId, request.getUserId()) + .exists()) + .throwMessage("已存在相同的登录名"); + String code= RandomUtil.randomString(6); + redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + user.getLoginName(), code, Duration.ofHours(72)); + redisTemplate.opsForValue().set(Constant.REDIS_KEY_CHANGE_EMAIL_CODE + code, request.getEmail(), Duration.ofHours(72)); + String subject = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_TITLE_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE); + String content = dictionaryItemTranslateService.getValueByCode(Constant.DICTIONARY_EMAIL_NOTIFY, Constant.DICTIONARY_ITEM_EMAIL_CONTENT_CHANGE_EMAIL, Constant.DEFAULT_LANGUAGE_CODE) + .replace("${email}", user.getLoginName()) + .replace("${url}", activateUrl + "?code=" + Base64.getUrlEncoder().encodeToString((user.getLoginName()+"|1").getBytes())) + .replace("${password}", code); + emailService.sendEmail(request.getEmail(), subject, content); + return ApiResult.success(); + } } \ No newline at end of file diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EmailChangeRequest.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EmailChangeRequest.java new file mode 100644 index 00000000..127858cb --- /dev/null +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/pojo/request/EmailChangeRequest.java @@ -0,0 +1,13 @@ +package com.nflg.mobilebroken.common.pojo.request; + +import lombok.Data; + +@Data +public class EmailChangeRequest { + + // 用户ID + private Integer userId; + + // 新邮箱 + private String email; +}