Browse Source

密码修改

master
review512jwy@163.com 1 day ago
parent
commit
10de2c8d11
  1. 3
      data-center-business-common/src/main/resources/config/language/msg/msg_cn.yml
  2. 3
      data-center-business-common/src/main/resources/config/language/msg/msg_en.yml
  3. 3
      data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml
  4. 51
      data-center-business-controller/src/main/java/com/techsor/datacenter/business/controller/UserController.java
  5. 4
      data-center-business-dao/src/main/java/com/techsor/datacenter/business/dao/ex/BasicUserMapperExt.java
  6. 33
      data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
  7. 21
      data-center-business-model/src/main/java/com/techsor/datacenter/business/dto/user/ModifyPassword.java
  8. 13
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/UserService.java
  9. 75
      data-center-business-service/src/main/java/com/techsor/datacenter/business/service/impl/UserServiceImpl.java

3
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: 新密码不得与旧密码相同

3
data-center-business-common/src/main/resources/config/language/msg/msg_en.yml

@ -191,3 +191,6 @@ msgen:
dataProviderNotExist: Data provider does not exist
monitoringPointCategoryNotExist: Monitoring point category does not exist
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

3
data-center-business-common/src/main/resources/config/language/msg/msg_jp.yml

@ -191,3 +191,6 @@ msgjp:
dataProviderNotExist: データ提供者が存在しません
monitoringPointCategoryNotExist: 監視ポイント分類が存在しません
deviceGroupNotExist: デバイスグループが存在しません
pwdFormatError: パスワードの構成には、数字、アルファベット、特殊文字(~!@#$%^&*) で、12桁以上
oldPwdError: 旧パスワードエラー
newPwdSameOld: 注:旧パスワードと同じものを使用しないでください

51
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);
}
}

4
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);
}

33
data-center-business-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml

@ -85,4 +85,37 @@
WHERE rmr.menu_id = 52 AND br.flag != 1 AND rru.user_id = #{userId}
</select>
<select id="selectByUserId" resultType="com.techsor.datacenter.business.model.BasicUser">
select
buser.id,
buser.company_id,
buser.username,
buser.login_name,
buser.`password`,
buser.salt,
buser.email,
buser.mfa_secret,
buser.mobile_number,
buser.last_login_time,
buser.flag,
buser.expire_time,
buser.create_time,
buser.creator_id,
buser.modify_time,
buser.modifier_id,
buser.mfa_bind,
buser.super_role
from data_center_aeon_admin.basic_user buser
WHERE buser.flag != 1 and buser.id = #{userId}
</select>
<update id="modifyPassword">
update
data_center_aeon_admin.basic_user
set
`password` = #{password}
where id = #{id}
</update>
</mapper>

21
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;
}

13
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);
}

75
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");
}
}
}
Loading…
Cancel
Save