新增用户资源接口

This commit is contained in:
wanggeng 2021-09-22 22:54:14 +08:00
parent 98b2294196
commit 11d910f6e3
3 changed files with 216 additions and 4 deletions

View File

@ -2,6 +2,7 @@ package ink.wgink.service.user.controller.api;
import ink.wgink.annotation.CheckRequestBodyAnnotation;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.common.component.SecurityComponent;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.IFileConstant;
import ink.wgink.interfaces.consts.ISystemConstant;
@ -43,6 +44,8 @@ public class UserController extends DefaultBaseController {
@Autowired
private IUserService userService;
@Autowired
private SecurityComponent securityComponent;
@ApiOperation(value = "新增用户", notes = "新增用户接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@ -219,9 +222,8 @@ public class UserController extends DefaultBaseController {
@ApiOperation(value = "获取密码状态", notes = "获取密码状态接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get-password-status")
public SuccessResultData<String> getPasswordStatus() throws ReflectUtil.ReflectException {
ISystemConfigManager systemConfigManager = ReflectUtil.getSingleInstance("ink.wgink.login.base.manager.ConfigManager", ISystemConfigManager.class);
return userService.getPasswordStatus(systemConfigManager);
public SuccessResultData<String> getPasswordStatus() {
return userService.getPasswordStatus(securityComponent.getCurrentUser().getUserId());
}
}

View File

@ -0,0 +1,203 @@
package ink.wgink.service.user.controller.resources;
import ink.wgink.annotation.CheckRequestBodyAnnotation;
import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.interfaces.manager.ISystemConfigManager;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.dtos.user.UserDTO;
import ink.wgink.pojo.result.ErrorResult;
import ink.wgink.pojo.result.SuccessResult;
import ink.wgink.pojo.result.SuccessResultData;
import ink.wgink.pojo.result.SuccessResultList;
import ink.wgink.pojo.vos.IdsVO;
import ink.wgink.service.user.pojo.vos.UpdatePasswordVO;
import ink.wgink.service.user.service.IUserService;
import ink.wgink.util.ReflectUtil;
import ink.wgink.util.RegexUtil;
import io.swagger.annotations.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* When you feel like quitting. Think about why you started
* 当你想要放弃的时候想想当初你为何开始
*
* @ClassName: UserController
* @Description: 用户
* @Author: WangGeng
* @Date: 2021/1/24 17:10
* @Version: 1.0
**/
@Api(tags = ISystemConstant.API_TAGS_RESOURCE_PREFIX + "用户")
@RestController
@RequestMapping(ISystemConstant.RESOURCE_PREFIX + "/user")
public class UserResourceController extends DefaultBaseController {
@Autowired
private IUserService userService;
@ApiOperation(value = "修改密码", notes = "修改密码接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PutMapping("update-password")
@CheckRequestBodyAnnotation
public SuccessResult updatePassword(@RequestBody UpdatePasswordVO updatePasswordVO) throws ReflectUtil.ReflectException {
ISystemConfigManager systemConfigManager = ReflectUtil.getSingleInstance("ink.wgink.login.base.manager.ConfigManager", ISystemConfigManager.class);
if (systemConfigManager != null) {
checkUpdatePasswordParams(systemConfigManager.getConfig(), updatePasswordVO);
}
userService.updatePassword(updatePasswordVO);
return new SuccessResult();
}
/**
* 修改密码参数校验
*
* @param config
* @param updatePasswordVO
*/
private void checkUpdatePasswordParams(Map<String, Object> config, UpdatePasswordVO updatePasswordVO) {
if (config.get(IUserService.PASSWORD_STRENGTH) != null) {
String passwordStrength = config.get(IUserService.PASSWORD_STRENGTH).toString();
if (StringUtils.equals(IUserService.PASSWORD_STRENGTH_MIDDLE, passwordStrength) && !RegexUtil.isPasswordMiddle(updatePasswordVO.getNewPassword())) {
throw new ParamsException(String.format("密码应该%d到%d位包含数字、字母、特殊字符其中的任意两种特殊字符包括%s", RegexUtil.PASSWORD_LENGTH_MIN, RegexUtil.PASSWORD_LENGTH_MAX, RegexUtil.SPECIAL_CHARACTERS));
} else if (StringUtils.equals(IUserService.PASSWORD_STRENGTH_STRONG, passwordStrength) && !RegexUtil.isPasswordStrong(updatePasswordVO.getNewPassword())) {
throw new ParamsException(String.format("密码应该%d到%d位必须全部包含数字、字母、特殊字符三种特殊字符包括%s", RegexUtil.PASSWORD_LENGTH_MIN, RegexUtil.PASSWORD_LENGTH_MAX, RegexUtil.SPECIAL_CHARACTERS));
} else if (!RegexUtil.isPasswordWeek(updatePasswordVO.getNewPassword())) {
throw new ParamsException(String.format("密码应该%d到%d位仅包含数字字母特殊字符其中的一种特殊字符包括%s", RegexUtil.PASSWORD_LENGTH_MIN, RegexUtil.PASSWORD_LENGTH_MAX, RegexUtil.SPECIAL_CHARACTERS));
}
} else if (!RegexUtil.isPasswordWeek(updatePasswordVO.getNewPassword())) {
throw new ParamsException(String.format("密码应该%d到%d位仅包含数字字母特殊字符其中的一种特殊字符包括%s", RegexUtil.PASSWORD_LENGTH_MIN, RegexUtil.PASSWORD_LENGTH_MAX, RegexUtil.SPECIAL_CHARACTERS));
}
}
@ApiOperation(value = "用户列表", notes = "用户列表接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("list")
public List<UserDTO> list() {
Map<String, Object> params = requestParams();
return userService.list(params);
}
@ApiOperation(value = "用户分页列表", notes = "用户分页列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"),
@ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"),
@ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("listpage")
public SuccessResultList<List<UserDTO>> listPage(ListPage page) {
Map<String, Object> params = requestParams();
page.setParams(params);
return userService.listPage(page);
}
@ApiOperation(value = "用户详情", notes = "用户详情接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get/{userId}")
public UserDTO getUser(@PathVariable("userId") String userId) {
return userService.get(userId);
}
@ApiOperation(value = "用户详情", notes = "用户详情接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get/username/{username}")
public UserDTO getByUsername(@PathVariable("username") String username) {
return userService.getByUsername(username);
}
@ApiOperation(value = "通过ID列表获取用户列表", notes = "通过ID列表获取用户列表接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("list/ids")
public List<UserDTO> listByIds(@RequestBody IdsVO idsVO) {
if (idsVO.getIds().isEmpty()) {
throw new ParamsException("id列表不能为空");
}
return userService.listByUserIds(idsVO.getIds());
}
@ApiOperation(value = "通过ID列表获取用户列表", notes = "通过ID列表获取用户列表接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@PostMapping("list/username")
public List<UserDTO> listByUsernames(@RequestBody IdsVO idsVO) {
if (idsVO.getIds().isEmpty()) {
throw new ParamsException("用户名列表不能为空");
}
return userService.listByUsernames(idsVO.getIds());
}
@ApiOperation(value = "获取密码状态", notes = "获取密码状态接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("get-password-status/{userId}")
public SuccessResultData<String> getPasswordStatus(@PathVariable("userId") String userId) throws ReflectUtil.ReflectException {
return userService.getPasswordStatus(userId);
}
@ApiOperation(value = "统计用户", notes = "统计用户接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "startDate", value = "开始时间", paramType = "path"),
@ApiImplicitParam(name = "endDate", value = "结束时间", paramType = "path")
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count-date-range/{startDate}/{endDate}")
public SuccessResultData<Integer> countDateRange(@PathVariable("startDate") String startDate, @PathVariable("endDate") String endDate) {
int count = userService.countDateRange(startDate, endDate);
return new SuccessResultData<>(count);
}
@ApiOperation(value = "统计用户", notes = "统计用户接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count")
public SuccessResultData<Integer> count() {
int count = userService.count();
return new SuccessResultData<>(count);
}
@ApiOperation(value = "统计类型用户", notes = "统计类型用户接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "type", value = "用户类型", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count-type/{type}")
public SuccessResultData<Integer> countType(@PathVariable("type") Integer type) {
int count = userService.countType(type);
return new SuccessResultData<>(count);
}
@ApiOperation(value = "统计错误类型用户", notes = "统计用户接口")
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count-error-type")
public SuccessResultData<Integer> countErrorType() {
int count = userService.countErrorType();
return new SuccessResultData<>(count);
}
@ApiOperation(value = "统计错误类型用户", notes = "统计用户接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "state", value = "用户状态", paramType = "path"),
})
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
@GetMapping("count-state/{state}")
public SuccessResultData<Integer> countState(@PathVariable("state") Integer state) {
int count = userService.countState(state);
return new SuccessResultData<>(count);
}
}

View File

@ -473,7 +473,14 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
}
@Override
public SuccessResultData<String> getPasswordStatus(ISystemConfigManager systemConfigManager) {
public SuccessResultData<String> getPasswordStatus(String userId) {
ISystemConfigManager systemConfigManager;
try {
systemConfigManager = ReflectUtil.getSingleInstance("ink.wgink.login.base.manager.ConfigManager", ISystemConfigManager.class);
} catch (ReflectUtil.ReflectException e) {
LOG.error(e.getMessage(), e);
throw new SystemException(e.getMessage());
}
if (systemConfigManager == null) {
return new SuccessResultData<>(PASSWORD_OK);
}