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