From a47a8d40db3a9d0bb2b4c979949f9a120ce9598b Mon Sep 17 00:00:00 2001 From: Mac Date: Sun, 6 Apr 2025 03:21:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=A8=E6=88=B7=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 42 +++++ .../components/GlobalExceptionHandler.java | 28 +++ .../com/water/watersys/components/Result.java | 167 ++++++++++++++++++ .../watersys/components/ResultCodeEnum.java | 27 +++ .../watersys/controller/LoginController.java | 55 ++++++ .../watersys/controller/UserController.java | 58 ++++++ .../watersys/controller/textController.java | 14 -- .../water/watersys/mapper/UserSysMapper.java | 27 +++ .../water/watersys/model/domain/UserSys.java | 110 ++++++++++++ .../watersys/model/dto/ChangePassword.java | 9 + .../water/watersys/model/dto/LoginDto.java | 9 + .../com/water/watersys/model/vo/UserOv.java | 16 ++ .../watersys/service/UserSysService.java | 27 +++ .../service/impl/UserSysServiceImpl.java | 85 +++++++++ .../water/watersys/utils/OpenApiConfig.java | 29 +++ .../watersys/utils/SaTokenConfigure.java | 27 +++ src/main/resources/application.yml | 36 +++- src/main/resources/mapper/UserSysMapper.xml | 22 +++ 18 files changed, 771 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/water/watersys/components/GlobalExceptionHandler.java create mode 100644 src/main/java/com/water/watersys/components/Result.java create mode 100644 src/main/java/com/water/watersys/components/ResultCodeEnum.java create mode 100644 src/main/java/com/water/watersys/controller/LoginController.java create mode 100644 src/main/java/com/water/watersys/controller/UserController.java delete mode 100644 src/main/java/com/water/watersys/controller/textController.java create mode 100644 src/main/java/com/water/watersys/mapper/UserSysMapper.java create mode 100644 src/main/java/com/water/watersys/model/domain/UserSys.java create mode 100644 src/main/java/com/water/watersys/model/dto/ChangePassword.java create mode 100644 src/main/java/com/water/watersys/model/dto/LoginDto.java create mode 100644 src/main/java/com/water/watersys/model/vo/UserOv.java create mode 100644 src/main/java/com/water/watersys/service/UserSysService.java create mode 100644 src/main/java/com/water/watersys/service/impl/UserSysServiceImpl.java create mode 100644 src/main/java/com/water/watersys/utils/OpenApiConfig.java create mode 100644 src/main/java/com/water/watersys/utils/SaTokenConfigure.java create mode 100644 src/main/resources/mapper/UserSysMapper.xml diff --git a/pom.xml b/pom.xml index 7726cda..6d5ea98 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,48 @@ 3.0.4 test + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + 2.8.6 + + + org.springframework.boot + spring-boot-starter-data-redis + + + + cn.dev33 + sa-token-spring-boot3-starter + 1.37.0 + + + + + + cn.dev33 + sa-token-redis + 1.37.0 + + + org.apache.commons + commons-pool2 + + + + cn.dev33 + sa-token-dao-redis-jackson + 1.31.0 + + + + + com.baomidou + mybatis-plus-boot-starter + 3.5.11 + + diff --git a/src/main/java/com/water/watersys/components/GlobalExceptionHandler.java b/src/main/java/com/water/watersys/components/GlobalExceptionHandler.java new file mode 100644 index 0000000..e505b76 --- /dev/null +++ b/src/main/java/com/water/watersys/components/GlobalExceptionHandler.java @@ -0,0 +1,28 @@ +package com.water.watersys.components; + +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.util.SaResult; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class GlobalExceptionHandler { + + /** + * 全局异常拦截,鉴权失败不会报错,会返回给前端报错原因 + * @param e + * @return + */ + @ExceptionHandler + public SaResult handlerException(Exception e) { + e.printStackTrace(); + return SaResult.error(e.getMessage()); + } + + @ExceptionHandler + public SaResult notLoginException(NotLoginException e){ + System.out.println(e.getMessage()); + e.printStackTrace(); + return SaResult.error(e.getMessage()); + } +} diff --git a/src/main/java/com/water/watersys/components/Result.java b/src/main/java/com/water/watersys/components/Result.java new file mode 100644 index 0000000..00c1a03 --- /dev/null +++ b/src/main/java/com/water/watersys/components/Result.java @@ -0,0 +1,167 @@ +package com.water.watersys.components; + +import lombok.Getter; + +@Getter +public class Result { + + private Integer code; // 状态码 + + private String msg; // 返回消息 + + private T data; // 返回数据 + + public Result() { + } + + public Result(Integer code, String msg, T data) { + this.code = code; + this.msg = msg; + this.data = data; + } + + private static Result build(T data) { + Result result = new Result<>(); + + if (data != null) { + result.data = data; + } + + return result; + } + + private static Result build(T data, Integer code, String msg) { + + return new Result<>(code, msg, data); + } + + private static Result build(T data, ResultCodeEnum resultCodeEnum) { + + return new Result<>(resultCodeEnum.getCode(), resultCodeEnum.getMsg(), data); + } + + /** + * 200 无参数成功 + */ + public static Result success() { + + return build(null, ResultCodeEnum.SUCCESS); + } + + /** + * 200 有参数成功 + */ + public static Result success(T data) { + + return build(data, ResultCodeEnum.SUCCESS); + } + + /** + * 201 无参创建资源成功 + */ + public static Result createSuccess() { + + return build(null, ResultCodeEnum.CREATE_SUCCESS); + } + + /** + * 201 有参创建资源成功 + */ + public static Result createSuccess(T data) { + + return build(data, ResultCodeEnum.CREATE_SUCCESS); + } + + /** + * 204 删除资源成功,无参数 + */ + public static Result removeSuccess() { + + return build(null, ResultCodeEnum.REMOVE_SUCCESS); + } + + /** + * 204 删除资源成功,有参数 + */ + public static Result removeSuccess(T data) { + + return build(data, ResultCodeEnum.REMOVE_SUCCESS); + } + + /** + * 400 失败,无参数 + */ + public static Result fail() { + + return build(null, ResultCodeEnum.FAIL); + } + + /** + * 400 失败,有参数 + */ + public static Result fail(T data) { + + return build(data, ResultCodeEnum.FAIL); + } + + /** + * 401 验证失败,无参数 + */ + public static Result verificationFail() { + + return build(null, ResultCodeEnum.VERIFICATION_FAIL); + } + + /** + * 401 验证失败,有参数 + */ + public static Result verificationFail(T data) { + + return build(data, ResultCodeEnum.VERIFICATION_FAIL); + } + + /** + * 402 创建资源失败,无参 + */ + public static Result createFail() { + + return build(null, ResultCodeEnum.CREATE_FAIL); + } + + public static Result deleteFail() { + return build(null, ResultCodeEnum.REMOVE_FAIL); + } + + /** + * 402 创建资源失败,有参数 + */ + public static Result createFail(T data) { + + return build(data, ResultCodeEnum.CREATE_FAIL); + } + + /** + * 404 资源不存在 + */ + public static Result notFoundFail() { + + return build(null, ResultCodeEnum.NOT_FOUND); + } + + /** + * 500 服务端错误 + */ + public static Result error() { + + return build(null, ResultCodeEnum.ERROR); + } + + /** + * 500 服务端错误,带参 + */ + public static Result error(T data) { + + return build(data, ResultCodeEnum.ERROR); + } +} + diff --git a/src/main/java/com/water/watersys/components/ResultCodeEnum.java b/src/main/java/com/water/watersys/components/ResultCodeEnum.java new file mode 100644 index 0000000..75bc151 --- /dev/null +++ b/src/main/java/com/water/watersys/components/ResultCodeEnum.java @@ -0,0 +1,27 @@ +package com.water.watersys.components; + + +import lombok.Getter; + +@Getter +public enum ResultCodeEnum { + SUCCESS(200, "操作成功"), + CREATE_SUCCESS(201, "创建成功"), + REMOVE_SUCCESS(204, "删除成功"), + REMOVE_FAIL(403, "删除失败"), + FAIL(400, "操作失败"), + VERIFICATION_FAIL(401, "验证失败"), + CREATE_FAIL(402, "创建失败"), + NOT_FOUND(404, "资源不存在"), + ERROR(500, "服务器错误"); + + + private final Integer code; + private final String msg; + + ResultCodeEnum(Integer code, String msg) { + this.code = code; + this.msg = msg; + } + +} \ No newline at end of file diff --git a/src/main/java/com/water/watersys/controller/LoginController.java b/src/main/java/com/water/watersys/controller/LoginController.java new file mode 100644 index 0000000..f80685c --- /dev/null +++ b/src/main/java/com/water/watersys/controller/LoginController.java @@ -0,0 +1,55 @@ +package com.water.watersys.controller; + +import cn.dev33.satoken.stp.StpUtil; +import com.water.watersys.components.Result; +import com.water.watersys.model.domain.UserSys; +import com.water.watersys.model.dto.LoginDto; +import com.water.watersys.service.UserSysService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +@RestController +@CrossOrigin +@Tag(name = "登录注册", description = "用户登录注册") +public class LoginController { + @Resource + private UserSysService userSysService; + + @Operation(summary = "登录", description = "登录") + @PostMapping("/login") + public Result login(@RequestBody LoginDto loginDto) { + Integer id = userSysService.login(loginDto); + if (id != 0) { + StpUtil.login(id); + return Result.success(StpUtil.getTokenValue()); + }else { + return Result.verificationFail(); + } + } + + @Operation(summary = "退出登录", description = "退出登录") + @PostMapping("/logout") + public Result logout(){ + StpUtil.logout(StpUtil.getLoginId()); + return Result.success(StpUtil.getTokenValue()); + } + + + @Operation(summary = "注册", description = "注册") + @PostMapping("/register") + public Result register(@RequestBody UserSys userSys) { + int index = userSysService.register(userSys); + if (index > 0) { + return Result.success(index); + }else { + return Result.createFail(); + } + } + + +} + + + diff --git a/src/main/java/com/water/watersys/controller/UserController.java b/src/main/java/com/water/watersys/controller/UserController.java new file mode 100644 index 0000000..9c0c8c7 --- /dev/null +++ b/src/main/java/com/water/watersys/controller/UserController.java @@ -0,0 +1,58 @@ +package com.water.watersys.controller; + +import cn.dev33.satoken.stp.StpUtil; +import com.water.watersys.components.Result; +import com.water.watersys.model.dto.ChangePassword; +import com.water.watersys.model.vo.UserOv; +import com.water.watersys.service.UserSysService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.springframework.web.bind.annotation.*; + +@RestController +@CrossOrigin +@Tag(name = "用户", description = "用户") +public class UserController { + @Resource + private UserSysService userSysService; + + + @Operation(summary = "获取用户信息", description = "获取用户信息") + @GetMapping("/user") + public Result user() { + Object loginId = StpUtil.getLoginId(); + UserOv userOv = userSysService.getUser((String) loginId); + if (userOv != null) { + return Result.success(userOv); + }else { + return Result.notFoundFail(); + } + } + + @Operation(summary = "修改用户密码", description = "修改用户密码") + @PutMapping("/changePassword") + public Result changePassword(@RequestBody ChangePassword changePassword) { + String loginId = (String) StpUtil.getLoginId(); + Integer id = userSysService.changePassword(changePassword,loginId); + if (id != 0) { + return Result.success(); + }else { + return Result.createFail("密码验证失败"); + } + } + + @Operation(summary = "修改用户状态", description = "修改用户状态") + @PutMapping("/changeUserStatus") + public Result changeUserStatus(Integer status) { + String loginId = (String) StpUtil.getLoginId(); + Integer id = userSysService.changeUserStatus(status,loginId); + if (id != 0) { + return Result.success(); + }else { + return Result.createFail(); + } + } + + +} diff --git a/src/main/java/com/water/watersys/controller/textController.java b/src/main/java/com/water/watersys/controller/textController.java deleted file mode 100644 index 78df09d..0000000 --- a/src/main/java/com/water/watersys/controller/textController.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.water.watersys.controller; - -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@CrossOrigin -public class textController { - @GetMapping("/index") - public String index() { - return "Hello World"; - } -} diff --git a/src/main/java/com/water/watersys/mapper/UserSysMapper.java b/src/main/java/com/water/watersys/mapper/UserSysMapper.java new file mode 100644 index 0000000..48c516e --- /dev/null +++ b/src/main/java/com/water/watersys/mapper/UserSysMapper.java @@ -0,0 +1,27 @@ +package com.water.watersys.mapper; + +import com.water.watersys.model.domain.UserSys; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.water.watersys.model.vo.UserOv; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +/** +* @author mac +* @description 针对表【user_sys】的数据库操作Mapper +* @createDate 2025-04-05 23:50:03 +* @Entity generator.domain.UserSys +*/ +@Mapper +public interface UserSysMapper extends BaseMapper { + @Select("select * from user_sys where id = #{loginId}") + UserOv getUser(String loginId); + + @Update("UPDATE user_sys SET password = #{newPassword} WHERE id = #{id}") + Integer changePassword(Integer id, String newPassword); +} + + + + diff --git a/src/main/java/com/water/watersys/model/domain/UserSys.java b/src/main/java/com/water/watersys/model/domain/UserSys.java new file mode 100644 index 0000000..5f0722a --- /dev/null +++ b/src/main/java/com/water/watersys/model/domain/UserSys.java @@ -0,0 +1,110 @@ +package com.water.watersys.model.domain; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +/** + * + * @TableName user_sys + */ +@Data +public class UserSys { + /** + * + */ + @TableId(value="id",type = IdType.AUTO ) + private Integer id; + + /** + * 用户名 + */ + private String username; + + /** + * 密码 + */ + private String password; + + /** + * 手机号 + */ + private String phone; + + /** + * 地址 + */ + private String address; + + /** + * 状态 0禁止 1启用 + */ + private Integer status; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 修改时间 + */ + private Date updatedTime; + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + UserSys other = (UserSys) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername())) + && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword())) + && (this.getPhone() == null ? other.getPhone() == null : this.getPhone().equals(other.getPhone())) + && (this.getAddress() == null ? other.getAddress() == null : this.getAddress().equals(other.getAddress())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getCreatedTime() == null ? other.getCreatedTime() == null : this.getCreatedTime().equals(other.getCreatedTime())) + && (this.getUpdatedTime() == null ? other.getUpdatedTime() == null : this.getUpdatedTime().equals(other.getUpdatedTime())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode()); + result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode()); + result = prime * result + ((getPhone() == null) ? 0 : getPhone().hashCode()); + result = prime * result + ((getAddress() == null) ? 0 : getAddress().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getCreatedTime() == null) ? 0 : getCreatedTime().hashCode()); + result = prime * result + ((getUpdatedTime() == null) ? 0 : getUpdatedTime().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", username=").append(username); + sb.append(", password=").append(password); + sb.append(", phone=").append(phone); + sb.append(", address=").append(address); + sb.append(", status=").append(status); + sb.append(", createdTime=").append(createdTime); + sb.append(", updatedTime=").append(updatedTime); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/water/watersys/model/dto/ChangePassword.java b/src/main/java/com/water/watersys/model/dto/ChangePassword.java new file mode 100644 index 0000000..4de6ec3 --- /dev/null +++ b/src/main/java/com/water/watersys/model/dto/ChangePassword.java @@ -0,0 +1,9 @@ +package com.water.watersys.model.dto; + +import lombok.Data; + +@Data +public class ChangePassword { + private String oldPassword; + private String newPassword; +} diff --git a/src/main/java/com/water/watersys/model/dto/LoginDto.java b/src/main/java/com/water/watersys/model/dto/LoginDto.java new file mode 100644 index 0000000..0973095 --- /dev/null +++ b/src/main/java/com/water/watersys/model/dto/LoginDto.java @@ -0,0 +1,9 @@ +package com.water.watersys.model.dto; + +import lombok.Data; + +@Data +public class LoginDto { + private String username; + private String password; +} diff --git a/src/main/java/com/water/watersys/model/vo/UserOv.java b/src/main/java/com/water/watersys/model/vo/UserOv.java new file mode 100644 index 0000000..660cd71 --- /dev/null +++ b/src/main/java/com/water/watersys/model/vo/UserOv.java @@ -0,0 +1,16 @@ +package com.water.watersys.model.vo; + +import lombok.Data; + +import java.util.Date; + +@Data +public class UserOv { + private Integer id; + private String username; + private String phone; + private String address; + private Integer status; + private Date createdTime; + private Date updatedTime; +} diff --git a/src/main/java/com/water/watersys/service/UserSysService.java b/src/main/java/com/water/watersys/service/UserSysService.java new file mode 100644 index 0000000..6435d79 --- /dev/null +++ b/src/main/java/com/water/watersys/service/UserSysService.java @@ -0,0 +1,27 @@ +package com.water.watersys.service; + +import com.water.watersys.model.domain.UserSys; +import com.baomidou.mybatisplus.extension.service.IService; +import com.water.watersys.model.dto.ChangePassword; +import com.water.watersys.model.dto.LoginDto; +import com.water.watersys.model.vo.UserOv; +import org.springframework.stereotype.Service; + +/** +* @author mac +* @description 针对表【user_sys】的数据库操作Service +* @createDate 2025-04-05 23:50:03 +*/ +@Service +public interface UserSysService extends IService { + + int register(UserSys userSys); + + Integer login(LoginDto loginDto); + + UserOv getUser(String loginId); + + Integer changePassword(ChangePassword changePassword, String loginId); + + Integer changeUserStatus(Integer status, String loginId); +} diff --git a/src/main/java/com/water/watersys/service/impl/UserSysServiceImpl.java b/src/main/java/com/water/watersys/service/impl/UserSysServiceImpl.java new file mode 100644 index 0000000..f3c5357 --- /dev/null +++ b/src/main/java/com/water/watersys/service/impl/UserSysServiceImpl.java @@ -0,0 +1,85 @@ +package com.water.watersys.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.water.watersys.model.domain.UserSys; +import com.water.watersys.mapper.UserSysMapper; +import com.water.watersys.model.dto.ChangePassword; +import com.water.watersys.model.dto.LoginDto; +import com.water.watersys.model.vo.UserOv; +import com.water.watersys.service.UserSysService; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.util.DigestUtils; + +import java.util.Objects; + +/** +* @author mac +* @description 针对表【user_sys】的数据库操作Service实现 +* @createDate 2025-04-05 23:50:03 +*/ +@Service +public class UserSysServiceImpl extends ServiceImpl + implements UserSysService { + @Resource + private UserSysMapper userSysMapper; + + @Override + public int register(UserSys userSys) { + String password = DigestUtils.md5DigestAsHex(userSys.getPassword().getBytes()); + userSys.setPassword(password); + return userSysMapper.insert(userSys); + } + + @Override + public Integer login(LoginDto loginDto) { + QueryWrapper userSysQueryWrapper = new QueryWrapper<>(); + String password = DigestUtils.md5DigestAsHex(loginDto.getPassword().getBytes()); + userSysQueryWrapper.eq("password", password); + userSysQueryWrapper.eq("username", loginDto.getUsername()); + UserSys userSys = userSysMapper.selectOne(userSysQueryWrapper); + if (userSys == null) { + return 0; + }else if (userSys.getStatus() == 0){ + return 0; + }else { + return userSys.getId(); + } + } + + @Override + public UserOv getUser(String loginId) { + return userSysMapper.getUser(loginId); + } + + @Override + public Integer changePassword(ChangePassword changePassword, String loginId) { + UserSys userSys = userSysMapper.selectById(loginId); + String password = userSys.getPassword(); + if (Objects.equals(password, DigestUtils.md5DigestAsHex(changePassword.getOldPassword().getBytes()))) { + String newPassword = changePassword.getNewPassword(); + changePassword.setNewPassword(DigestUtils.md5DigestAsHex(newPassword.getBytes())); + return userSysMapper.changePassword(userSys.getId(),changePassword.getNewPassword()); + }else { + return 0; + } + + } + + @Override + public Integer changeUserStatus(Integer status, String loginId) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper + .eq(UserSys::getId, loginId) // 条件:id = loginId + .set(UserSys::getStatus, status); // 设置新的 status 值 + return userSysMapper.update(null, lambdaUpdateWrapper); + } + + +} + + + + diff --git a/src/main/java/com/water/watersys/utils/OpenApiConfig.java b/src/main/java/com/water/watersys/utils/OpenApiConfig.java new file mode 100644 index 0000000..5f1786e --- /dev/null +++ b/src/main/java/com/water/watersys/utils/OpenApiConfig.java @@ -0,0 +1,29 @@ +package com.water.watersys.utils; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.Contact; +import io.swagger.v3.oas.models.info.License; +import io.swagger.v3.oas.models.servers.Server; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class OpenApiConfig { + + @Bean + public OpenAPI customOpenAPI() { + return new OpenAPI() + .addServersItem(new Server().url("http://localhost:8080").description("Local Development Server")) + .info(new Info() + .title("API文档") + .version("1.0") + .description("Spring Boot 3.4.4 应用API文档") + .contact(new Contact() + .name("开发者") + .email("319906174@qq.com")) + .license(new License() + .name("Apache 2.0") + .url("http://localhost:8080"))); + } +} \ No newline at end of file diff --git a/src/main/java/com/water/watersys/utils/SaTokenConfigure.java b/src/main/java/com/water/watersys/utils/SaTokenConfigure.java new file mode 100644 index 0000000..9259e41 --- /dev/null +++ b/src/main/java/com/water/watersys/utils/SaTokenConfigure.java @@ -0,0 +1,27 @@ +package com.water.watersys.utils; + +import cn.dev33.satoken.interceptor.SaInterceptor; +import cn.dev33.satoken.stp.StpUtil; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class SaTokenConfigure implements WebMvcConfigurer { + // 注册 Sa-Token 拦截器,打开注解式鉴权功能 + @Override + public void addInterceptors(InterceptorRegistry registry) { + // 注册 Sa-Token 拦截器,校验规则为 StpUtil.checkLogin() 登录校验。 + registry.addInterceptor(new SaInterceptor(handler -> StpUtil.checkLogin())) + .addPathPatterns("/**") + .excludePathPatterns( + "/login/**", + "/swagger-ui/**", + "/swagger-resources/**", + "/v2/api-docs", + "/v3/api-docs/**", + "/webjars/**", + "/doc.html" // 如果是Knife4j + ); + } +} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index eb80797..66e52e5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,6 +3,36 @@ server: spring: datasource: - url: jdbc:mysql://124.70.102.7:3306 - username: lifei - password: li319906174. \ No newline at end of file + url: jdbc:mysql://124.70.102.7:3306/water_sys + username: root + password: li319906174. + data: + redis: + port: 6379 + host: 124.70.102.7 + database: 0 + +sa-token: + # token?? (????cookie??) + token-name: satoken + # token??????s ??30? + timeout: 2592000 + # token????? (???????????token??) ??: ? + # ???????????? (?true???????, ?false?????????) + is-concurrent: true + # ?????????????????token (?true?????????token, ?false?????????token) + is-share: true + # token?? + token-style: uuid + # ???????? + is-log: true + + +springdoc: + api-docs: + path: /v3/api-docs # ?????? + swagger-ui: + path: /swagger-ui.html + url: /v3/api-docs # ???????? + + diff --git a/src/main/resources/mapper/UserSysMapper.xml b/src/main/resources/mapper/UserSysMapper.xml new file mode 100644 index 0000000..567da07 --- /dev/null +++ b/src/main/resources/mapper/UserSysMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + id,username,password,phone,address,status, + created_time,updated_time + +