9 changed files with 208 additions and 2 deletions
@ -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); |
||||
|
} |
||||
|
} |
||||
@ -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; |
||||
|
|
||||
|
} |
||||
@ -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); |
||||
|
|
||||
|
} |
||||
@ -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…
Reference in new issue