完成了Web端用户登录和退出登录的功能

This commit is contained in:
chen-xin-zhi 2025-04-29 09:13:04 +08:00
parent a768e1ff55
commit f36e4a38a8
5 changed files with 27 additions and 19 deletions

11
pom.xml
View File

@ -62,6 +62,15 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<!-- knife4j --> <!-- knife4j -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.github.xiaoymin</groupId>
@ -116,7 +125,7 @@
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<!-- Gson--> <!-- Gson -->
<dependency> <dependency>
<groupId>com.google.code.gson</groupId> <groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId> <artifactId>gson</artifactId>

View File

@ -3,7 +3,6 @@ package com.greenorange.promotion.controller.user;
import com.auth0.jwt.interfaces.DecodedJWT; import com.auth0.jwt.interfaces.DecodedJWT;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.net.HttpHeaders;
import com.greenorange.promotion.annotation.RequiresPermission; import com.greenorange.promotion.annotation.RequiresPermission;
import com.greenorange.promotion.common.BaseResponse; import com.greenorange.promotion.common.BaseResponse;
import com.greenorange.promotion.common.ErrorCode; import com.greenorange.promotion.common.ErrorCode;
@ -23,17 +22,15 @@ import com.greenorange.promotion.service.common.CommonService;
import com.greenorange.promotion.service.user.UserInfoService; import com.greenorange.promotion.service.user.UserInfoService;
import com.greenorange.promotion.utils.JWTUtils; import com.greenorange.promotion.utils.JWTUtils;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -109,13 +106,14 @@ public class UserInfoController {
*/ */
@PostMapping("add") @PostMapping("add")
@Operation(summary = "web端管理员添加用户表", description = "参数用户表添加请求体权限管理员boss, admin)方法名addUserInfo") @Operation(summary = "web端管理员添加用户表", description = "参数用户表添加请求体权限管理员boss, admin)方法名addUserInfo")
public BaseResponse<Boolean> addUserInfo(@RequestBody @Valid UserInfoAddRequest userInfoAddRequest) { public BaseResponse<Boolean> addUserInfo(@Valid @RequestBody UserInfoAddRequest userInfoAddRequest) {
UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class); UserInfo userInfo = commonService.copyProperties(userInfoAddRequest, UserInfo.class);
userInfoService.save(userInfo); userInfoService.save(userInfo);
return ResultUtils.success(true); return ResultUtils.success(true);
} }
/** /**
* web端管理员更新用户表 * web端管理员更新用户表
* @param userInfoUpdateRequest 用户表更新请求体 * @param userInfoUpdateRequest 用户表更新请求体
@ -123,7 +121,7 @@ public class UserInfoController {
*/ */
@PostMapping("update") @PostMapping("update")
@Operation(summary = "web端管理员更新用户表", description = "参数用户表更新请求体权限管理员boss, admin)方法名updateUserInfo") @Operation(summary = "web端管理员更新用户表", description = "参数用户表更新请求体权限管理员boss, admin)方法名updateUserInfo")
public BaseResponse<Boolean> updateUserInfo(@RequestBody @Valid UserInfoUpdateRequest userInfoUpdateRequest) { public BaseResponse<Boolean> updateUserInfo(@RequestBody UserInfoUpdateRequest userInfoUpdateRequest) {
ThrowUtils.throwIf(userInfoUpdateRequest == null || userInfoUpdateRequest.getId() <= 0, ErrorCode.PARAMS_ERROR); ThrowUtils.throwIf(userInfoUpdateRequest == null || userInfoUpdateRequest.getId() <= 0, ErrorCode.PARAMS_ERROR);
UserInfo userInfo = commonService.copyProperties(userInfoUpdateRequest, UserInfo.class); UserInfo userInfo = commonService.copyProperties(userInfoUpdateRequest, UserInfo.class);
userInfoService.updateById(userInfo); userInfoService.updateById(userInfo);

View File

@ -1,9 +1,8 @@
package com.greenorange.promotion.model.dto.user; package com.greenorange.promotion.model.dto.user;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
@ -19,59 +18,60 @@ public class UserInfoAddRequest implements Serializable {
* 用户昵称 * 用户昵称
*/ */
@NotBlank(message = "参数不能为空") @NotBlank(message = "参数不能为空")
@Schema(description = "用户昵称", example = "${field.example}") @Schema(description = "用户昵称", example = "chenxinzhi")
private String nickName; private String nickName;
/** /**
* 用户头像URL * 用户头像URL
*/ */
@Schema(description = "用户头像URL", example = "${field.example}") @NotBlank(message = "参数不能为空")
@Schema(description = "用户头像URL", example = "http://xxx.png")
private String userAvatar; private String userAvatar;
/** /**
* 手机号 * 手机号
*/ */
@NotBlank(message = "参数不能为空") @NotBlank(message = "参数不能为空")
@Schema(description = "手机号", example = "${field.example}") @Schema(description = "手机号", example = "15888610253")
private String phoneNumber; private String phoneNumber;
/** /**
* 账号 * 账号
*/ */
@NotBlank(message = "参数不能为空") @NotBlank(message = "参数不能为空")
@Schema(description = "账号", example = "${field.example}") @Schema(description = "账号", example = "qingcheng_account")
private String userAccount; private String userAccount;
/** /**
* 密码 * 密码
*/ */
@NotBlank(message = "参数不能为空") @NotBlank(message = "参数不能为空")
@Schema(description = "密码", example = "${field.example}") @Schema(description = "密码", example = "qingcheng_password")
private String userPassword; private String userPassword;
/** /**
* 邀请码 * 邀请码
*/ */
@Schema(description = "邀请码", example = "${field.example}") @Schema(description = "邀请码", example = "666999")
private String invitationCode; private String invitationCode;
/** /**
* 用户角色 * 用户角色
*/ */
@NotBlank(message = "参数不能为空") @NotBlank(message = "参数不能为空")
@Schema(description = "用户角色", example = "${field.example}") @Schema(description = "用户角色", example = "user")
private String userRole; private String userRole;
/** /**
* 上级用户id * 上级用户id
*/ */
@Schema(description = "上级用户id", example = "${field.example}") @Schema(description = "上级用户id", example = "1")
private Long parentUserId; private Long parentUserId;
/** /**
* 上级用户列表1,2,3 * 上级用户列表1,2,3
*/ */
@Schema(description = "上级用户列表1,2,3", example = "${field.example}") @Schema(description = "上级用户列表1,2,3", example = "1, 2, 3")
private String superUserList; private String superUserList;

View File

@ -8,6 +8,8 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
/** /**
* 用户基本信息表 * 用户基本信息表
* @TableName user_info * @TableName user_info

View File

@ -10,7 +10,6 @@ spring:
data: data:
redis: redis:
port: 6379 port: 6379