用户模块

This commit is contained in:
2025-05-07 00:27:51 +08:00
parent ef88f4be1e
commit fa3612648b
17 changed files with 574 additions and 31 deletions

View File

@ -62,7 +62,6 @@ public class FileInfoController {
*/
@PostMapping("upload")
@Operation(summary = "Web端文件上传服务器", description = "参数文件添加请求体权限管理员方法名addFileInfo")
@SysLog(title = "文件管理", content = "Web端文件上传(服务器)")
public BaseResponse<String> uploadFile(@RequestPart("file") MultipartFile multipartFile, UploadFileRequest uploadFileRequest) throws IOException{
// 校验文件
fileInfoService.validFile(multipartFile, uploadFileRequest);

View File

@ -8,24 +8,25 @@ import com.greenorange.promotion.annotation.SysLog;
import com.greenorange.promotion.common.BaseResponse;
import com.greenorange.promotion.common.ErrorCode;
import com.greenorange.promotion.common.ResultUtils;
import com.greenorange.promotion.constant.SystemConstant;
import com.greenorange.promotion.constant.UserConstant;
import com.greenorange.promotion.exception.ThrowUtils;
import com.greenorange.promotion.model.dto.CommonBatchRequest;
import com.greenorange.promotion.model.dto.CommonRequest;
import com.greenorange.promotion.model.dto.user.UserInfoAddRequest;
import com.greenorange.promotion.model.dto.user.UserInfoLoginRequest;
import com.greenorange.promotion.model.dto.user.UserInfoQueryRequest;
import com.greenorange.promotion.model.dto.user.UserInfoUpdateRequest;
import com.greenorange.promotion.model.dto.CommonStringRequest;
import com.greenorange.promotion.model.dto.user.*;
import com.greenorange.promotion.model.entity.UserInfo;
import com.greenorange.promotion.model.vo.user.UserInfoVO;
import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.user.UserInfoService;
import com.greenorange.promotion.utils.JWTUtils;
import com.greenorange.promotion.utils.RegexUtils;
import com.greenorange.promotion.utils.SendSmsUtil;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
@ -59,30 +60,121 @@ public class UserInfoController {
private JWTUtils jwtUtils;
/**
* 小程序端用户获取验证码
* @param commonStringRequest 手机号
* @return 验证码
*/
@PostMapping("code")
@Operation(summary = "小程序端用户获取验证码", description = "参数手机号权限管理员boss, admin)方法名getVerificationCode")
@SysLog(title = "用户管理", content = "小程序端用户获取验证码")
public BaseResponse<String> getVerificationCode(@Valid @RequestBody CommonStringRequest commonStringRequest) {
String phoneNumber = commonStringRequest.getTemplateString();
String verificationCode = userInfoService.getVerificationCode(phoneNumber);
return ResultUtils.success(verificationCode);
}
/**
* 小程序端用户注册
* @param userInfoRegisterRequest 小程序用户注册请求体
* @return 是否注册成功
*/
@PostMapping("register")
@Operation(summary = "小程序端用户注册", description = "参数小程序用户注册请求体权限管理员boss, admin)方法名userInfoMiniRegister")
@SysLog(title = "用户管理", content = "小程序端用户注册")
public BaseResponse<Boolean> userInfoMiniRegister(@Valid @RequestBody UserInfoRegisterRequest userInfoRegisterRequest) {
userInfoService.userInfoMiniRegister(userInfoRegisterRequest);
return ResultUtils.success(true);
}
/**
* 小程序端用户密码登录
* @param userInfoMiniPasswordLoginRequest 小程序用户密码登录请求体
* @return token
*/
@PostMapping("mini/pwd/login")
@Operation(summary = "小程序端用户密码登录", description = "参数小程序用户密码登录请求体权限管理员boss, admin)方法名userInfoMiniLogin")
@SysLog(title = "用户管理", content = "小程序端用户密码登录")
public BaseResponse<String> userInfoMiniLoginByPwd(@Valid @RequestBody UserInfoMiniPasswordLoginRequest userInfoMiniPasswordLoginRequest) {
String token = userInfoService.userInfoMiniLoginByPwd(userInfoMiniPasswordLoginRequest);
return ResultUtils.success(token);
}
/**
* 小程序端用户验证码登录
* @param userInfoMiniVerifyCodeLoginRequest 小程序用户验证码登录请求体
* @return token
*/
@PostMapping("mini/vcd/login")
@Operation(summary = "小程序端用户验证码登录", description = "参数小程序用户验证码登录请求体权限管理员boss, admin)方法名userInfoMiniLoginByVcd")
@SysLog(title = "用户管理", content = "小程序端用户验证码登录")
public BaseResponse<String> userInfoMiniLoginByVcd(@Valid @RequestBody UserInfoMiniVerifyCodeLoginRequest userInfoMiniVerifyCodeLoginRequest) {
String token = userInfoService.userInfoMiniLoginByVcd(userInfoMiniVerifyCodeLoginRequest);
return ResultUtils.success(token);
}
/**
* 小程序用户重置密码
* @param userInfoResetRequest 小程序用户密码重置请求体
* @return 是否重置成功
*/
@PostMapping("mini/reset/pwd")
@Operation(summary = "小程序用户重置密码", description = "参数小程序用户密码重置请求体权限管理员boss, admin)方法名userInfoMiniResetPwd")
@SysLog(title = "用户管理", content = "小程序端用户重置密码")
public BaseResponse<Boolean> userInfoMiniResetPwd(@Valid @RequestBody UserInfoResetRequest userInfoResetRequest) {
userInfoService.userInfoMiniResetPwd(userInfoResetRequest);
return ResultUtils.success(true);
}
/**
* 小程序端用户退出登录(用户退出时将 token 加入 Redis 黑名单)
* @return 是否退出登录成功
*/
@GetMapping("mini/logout")
@Operation(summary = "小程序端用户退出登录", description = "参数JWT权限管理员boss, admin)方法名userInfoMiniLogout")
@RequiresPermission(mustRole = UserConstant.DEFAULT_ROLE)
@SysLog(title = "用户管理", content = "小程序端用户退出登录")
public BaseResponse<Boolean> userInfoMiniLogout(@RequestHeader("Authorization") String token) {
// 获取token的过期时间
DecodedJWT decodedJWT = jwtUtils.verify(token);
long expirationTime = decodedJWT.getExpiresAt().getTime() - System.currentTimeMillis();
// 将token存入Redis黑名单并设置过期时间与token一致
redisTemplate.opsForValue().set(token, token, expirationTime, TimeUnit.MILLISECONDS);
return ResultUtils.success(true);
}
/**
* web端管理员登录
* @param userInfoLoginRequest 用户登录请求体
* @param userInfoLoginRequest web用户登录请求体
* @return 是否登录成功
*/
@PostMapping("login")
@Operation(summary = "web端管理员登录", description = "参数用户登录请求体权限管理员boss, admin)方法名userInfoLogin")
@Operation(summary = "web端管理员登录", description = "参数:web用户登录请求体权限管理员boss, admin)方法名userInfoLogin")
@SysLog(title = "用户管理", content = "web端管理员登录")
public BaseResponse<String> userInfoLogin(@Valid @RequestBody UserInfoLoginRequest userInfoLoginRequest, HttpServletRequest request) {
String userAccount = userInfoLoginRequest.getUserAccount();
String userPassword = userInfoLoginRequest.getUserPassword();
String token = userInfoService.userInfoLogin(userAccount, userPassword, request);
public BaseResponse<String> userInfoLogin(@Valid @RequestBody UserInfoLoginRequest userInfoLoginRequest) {
String token = userInfoService.userInfoLogin(userInfoLoginRequest);
return ResultUtils.success(token);
}
/**
* web端管理员退出登录(用户退出时将 token 加入 Redis 黑名单)
* @return 是否退出登录成功
*/
@PostMapping("logout")
@GetMapping("logout")
@Operation(summary = "web端管理员退出登录", description = "参数JWT权限管理员boss, admin)方法名userInfoLogout")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户管理", content = "web端管理员退出登录")
@ -98,6 +190,8 @@ public class UserInfoController {
/**
* web端管理员添加用户表
* @param userInfoAddRequest 用户表添加请求体
@ -105,6 +199,8 @@ public class UserInfoController {
*/
@PostMapping("add")
@Operation(summary = "web端管理员添加用户", description = "参数用户表添加请求体权限管理员boss, admin)方法名addUserInfo")
@RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
@SysLog(title = "用户管理", content = "web端管理员添加用户")
public BaseResponse<Boolean> addUserInfo(@Valid @RequestBody UserInfoAddRequest userInfoAddRequest) {
UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class);
userInfoService.save(userInfo);