From 10de2c8d1117ee85fb33e06204ed8d24695b36f0 Mon Sep 17 00:00:00 2001
From: "review512jwy@163.com" <“review512jwy@163.com”>
Date: Tue, 25 Nov 2025 14:24:54 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AF=86=E7=A0=81=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../resources/config/language/msg/msg_cn.yml | 3 +
.../resources/config/language/msg/msg_en.yml | 5 +-
.../resources/config/language/msg/msg_jp.yml | 5 +-
.../business/controller/UserController.java | 51 +++++++++++++
.../business/dao/ex/BasicUserMapperExt.java | 4 +
.../mappers/ex/BasicUserMapperExt.xml | 33 ++++++++
.../business/dto/user/ModifyPassword.java | 21 ++++++
.../business/service/UserService.java | 13 ++++
.../service/impl/UserServiceImpl.java | 75 +++++++++++++++++++
9 files changed, 208 insertions(+), 2 deletions(-)
create mode 100644 data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/UserController.java
create mode 100644 data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/user/ModifyPassword.java
create mode 100644 data-center-business-service/src/main/java/com/techsor/datacenter/business/service/UserService.java
create mode 100644 data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/UserServiceImpl.java
diff --git a/data-center-business-common/src/main/resources/config/language/msg/msg_cn.yml b/data-center-business-common/src/main/resources/config/language/msg/msg_cn.yml
index 55bee5a..0645d3d 100644
--- a/data-center-business-common/src/main/resources/config/language/msg/msg_cn.yml
+++ b/data-center-business-common/src/main/resources/config/language/msg/msg_cn.yml
@@ -191,3 +191,6 @@ msgcn:
dataProviderNotExist: 数据提供方不存在
monitoringPointCategoryNotExist: 监控点分类不存在
deviceGroupNotExist: 设备组不存在
+ pwdFormatError: 密码组成必须包含数字、英文字母、特殊符号(~!@#$%^&*)且大于等于12位
+ oldPwdError: 旧密码错误
+ newPwdSameOld: 新密码不得与旧密码相同
diff --git a/data-center-business-common/src/main/resources/config/language/msg/msg_en.yml b/data-center-business-common/src/main/resources/config/language/msg/msg_en.yml
index 8dbabc5..0948e19 100644
--- a/data-center-business-common/src/main/resources/config/language/msg/msg_en.yml
+++ b/data-center-business-common/src/main/resources/config/language/msg/msg_en.yml
@@ -190,4 +190,7 @@ msgen:
alarmLevelNotExist: Alarm level error
dataProviderNotExist: Data provider does not exist
monitoringPointCategoryNotExist: Monitoring point category does not exist
- deviceGroupNotExist: Device group does not exist
\ No newline at end of file
+ deviceGroupNotExist: Device group does not exist
+ pwdFormatError: "Password must contain numbers, letters, and special characters (~!@#$%^&*), and be at least 12 characters long"
+ oldPwdError: Incorrect old password
+ newPwdSameOld: The new password must not be the same as the old password
\ No newline at end of file
diff --git a/data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml b/data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml
index df2ada9..a2561ea 100644
--- a/data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml
+++ b/data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml
@@ -190,4 +190,7 @@ msgjp:
alarmLevelNotExist: アラームレベルが正しくありません
dataProviderNotExist: データ提供者が存在しません
monitoringPointCategoryNotExist: 監視ポイント分類が存在しません
- deviceGroupNotExist: デバイスグループが存在しません
\ No newline at end of file
+ deviceGroupNotExist: デバイスグループが存在しません
+ pwdFormatError: パスワードの構成には、数字、アルファベット、特殊文字(~!@#$%^&*) で、12桁以上
+ oldPwdError: 旧パスワードエラー
+ newPwdSameOld: 注:旧パスワードと同じものを使用しないでください
\ No newline at end of file
diff --git a/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/UserController.java b/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/UserController.java
new file mode 100644
index 0000000..bbfe3f3
--- /dev/null
+++ b/data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/UserController.java
@@ -0,0 +1,51 @@
+package com.techsor.datacenter.business.controller;
+
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import com.techsor.datacenter.business.common.response.SimpleDataResponse;
+import com.techsor.datacenter.business.configurator.interceptor.AccessRequired;
+import com.techsor.datacenter.business.dto.user.ModifyPassword;
+import com.techsor.datacenter.business.service.UserService;
+
+/**
+ *
+ * @author jwy-style
+ *
+ */
+@RestController//代表返回的是json格式的数据,这个注解是Spring4之后新加的注解
+//@AccessRequired //注解标识是否需要验证token
+@RequestMapping("/user") //http请求路径映射
+@Tag(name = "UserController",description = "用户管理的相关接口")
+@SuppressWarnings("unchecked")
+public class UserController {
+
+ private static Logger logger = LoggerFactory.getLogger(UserController.class);
+
+ @Autowired
+ private UserService userService;
+
+
+
+ @AccessRequired
+ @Operation(summary = "修改密码")
+ @RequestMapping(value = "/modifyPassword",method = RequestMethod.POST)
+ public SimpleDataResponse modifyPassword(
+ @RequestBody ModifyPassword modifyPassword,
+ @Parameter(name = "LoginName", description = "Login name", required = true, schema = @Schema(defaultValue = "admin")) @RequestHeader(required=true) String LoginName,
+ @Parameter(name = "AccessToken", description = "Authentication token", required = true) @RequestHeader(required=true) String AccessToken,
+ @Parameter(name = "UserId", description = "User ID", required = true, schema = @Schema(defaultValue = "1")) @RequestHeader(required=true) Long UserId,
+ @Parameter(name = "CompanyId", description = "ID of the company to which the user belongs", required = false, schema = @Schema(defaultValue = "1")) @RequestHeader(required=false) Long CompanyId,
+ @Parameter(name = "LanguageType", description = "Language type (0: Chinese, 1: English, 2: Japanese)", required = true, schema = @Schema(defaultValue = "2")) @RequestHeader(required=true) Integer LanguageType
+ ) {
+ return userService.modifyPassword(modifyPassword, CompanyId, UserId, LanguageType);
+ }
+}
diff --git a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/BasicUserMapperExt.java b/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/BasicUserMapperExt.java
index ce2e8bc..b7afcf9 100644
--- a/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/BasicUserMapperExt.java
+++ b/data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/BasicUserMapperExt.java
@@ -3,6 +3,7 @@ package com.techsor.datacenter.business.dao.ex;
import java.util.List;
import java.util.Map;
+import com.techsor.datacenter.business.model.BasicUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -21,4 +22,7 @@ public interface BasicUserMapperExt extends BasicUserMapper{
Integer checkBuildingManager(Long userId);
+ BasicUser selectByUserId(Long userId);
+
+ void modifyPassword(BasicUser updateUser);
}
diff --git a/data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml b/data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
index 7a81618..df32d88 100644
--- a/data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
+++ b/data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
@@ -84,5 +84,38 @@
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 52 AND br.flag != 1 AND rru.user_id = #{userId}
+
+
+
+
+ update
+ data_center_aeon_admin.basic_user
+ set
+ `password` = #{password}
+ where id = #{id}
+
\ No newline at end of file
diff --git a/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/user/ModifyPassword.java b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/user/ModifyPassword.java
new file mode 100644
index 0000000..a4d56bc
--- /dev/null
+++ b/data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/user/ModifyPassword.java
@@ -0,0 +1,21 @@
+package com.techsor.datacenter.business.dto.user;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+* @author Mr.Jiang
+* @time 2022年4月23日 下午1:59:33
+*/
+@Setter
+@Getter
+public class ModifyPassword{
+
+ @Schema(description = "旧密码",example = "haoihg09278", required = true)
+ private String oldPassword;
+
+ @Schema(description = "新密码",example = "og.ayhgih", required = true)
+ private String newPassword;
+
+}
diff --git a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/UserService.java b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/UserService.java
new file mode 100644
index 0000000..fefca87
--- /dev/null
+++ b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/UserService.java
@@ -0,0 +1,13 @@
+package com.techsor.datacenter.business.service;
+
+import com.techsor.datacenter.business.common.response.SimpleDataResponse;
+import com.techsor.datacenter.business.dto.user.ModifyPassword;
+
+/**
+ * Agent Service.
+ */
+public interface UserService {
+
+ SimpleDataResponse modifyPassword(ModifyPassword modifyPassword, Long companyId, Long userId, Integer languageType);
+
+}
diff --git a/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/UserServiceImpl.java b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..f40ef98
--- /dev/null
+++ b/data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/UserServiceImpl.java
@@ -0,0 +1,75 @@
+package com.techsor.datacenter.business.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.techsor.datacenter.business.common.language.msg.MsgLanguageChange;
+import com.techsor.datacenter.business.common.response.ResponseCode;
+import com.techsor.datacenter.business.common.response.SimpleDataResponse;
+import com.techsor.datacenter.business.dao.ex.BasicUserMapperExt;
+import com.techsor.datacenter.business.dto.user.ModifyPassword;
+import com.techsor.datacenter.business.model.BasicUser;
+import com.techsor.datacenter.business.service.UserService;
+import com.techsor.datacenter.business.util.DESUtil;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+@Service
+public class UserServiceImpl implements UserService {
+
+ private static Logger logger = LoggerFactory.getLogger(UserServiceImpl.class);
+
+ //同时含大写字母、小写字母、数字和特殊字符且长度大于8
+ private static final String pwdPattern = "^(?=.*\\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\\da-zA-Z~!@#$%^&*]{12,}$";
+
+
+ @Autowired
+ private BasicUserMapperExt basicUserMapperExt;
+ @Autowired
+ private MsgLanguageChange msgLanguageChange;
+
+
+ @Override
+ public SimpleDataResponse modifyPassword(ModifyPassword modifyPassword, Long companyId, Long userId,
+ Integer languageType) {
+ try {
+ if (!Pattern.matches(pwdPattern, modifyPassword.getNewPassword())) {
+ return new SimpleDataResponse(ResponseCode.MSG_ERROR, msgLanguageChange.getParameterMapByCode(languageType, "pwdFormatError"));
+ }
+ BasicUser basicUser = basicUserMapperExt.selectByUserId(userId);
+ if (!DESUtil.encrypt(modifyPassword.getOldPassword(), basicUser.getSalt()).equals(basicUser.getPassword())) {
+ return new SimpleDataResponse(ResponseCode.MSG_ERROR, msgLanguageChange.getParameterMapByCode(languageType, "oldPwdError"));
+ }
+ String newPwd = DESUtil.encrypt(modifyPassword.getNewPassword(), basicUser.getSalt());
+ if (newPwd.equals(basicUser.getPassword())) {
+ return new SimpleDataResponse(ResponseCode.MSG_ERROR, msgLanguageChange.getParameterMapByCode(languageType, "newPwdSameOld"));
+ }
+
+ BasicUser updateUser = new BasicUser();
+ updateUser.setId(userId);
+ updateUser.setPassword(newPwd);
+ basicUserMapperExt.modifyPassword(updateUser);
+
+ return SimpleDataResponse.success();
+ } catch (Exception e) {
+ logger.error("modifyPassword出错",e);
+ return new SimpleDataResponse(ResponseCode.SERVER_ERROR, "server error");
+ }
+ }
+
+}