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"); + } + } + +}