From 5b17d101c0785698669d5f1522e2c7810d836e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Mon, 10 Feb 2025 15:04:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=BA=E5=91=98=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/demo.sql | 8 +-- .../com/qyft/gd/system/common/base/BaseEntity.java | 2 - .../qyft/gd/system/common/enums/DeletedEnum.java | 24 +++++++++ .../java/com/qyft/gd/system/config/CorsConfig.java | 42 +++++++++++++++ .../qyft/gd/system/config/MybatisPlusConfig.java | 16 +++++- .../com/qyft/gd/system/config/SwaggerConfig.java | 53 +++++++++++++------ .../qyft/gd/system/controller/UserController.java | 61 ++++++++++++++++++++++ .../qyft/gd/system/core/MyMetaObjectHandler.java | 36 +++++++++++++ .../java/com/qyft/gd/system/model/bo/UserBO.java | 52 ------------------ .../com/qyft/gd/system/model/dto/UserAuthInfo.java | 43 --------------- .../java/com/qyft/gd/system/model/entity/User.java | 27 ++++------ .../com/qyft/gd/system/model/form/RoleForm.java | 19 ------- .../com/qyft/gd/system/model/form/UserForm.java | 34 ------------ .../qyft/gd/system/model/query/UserPageQuery.java | 27 ---------- .../com/qyft/gd/system/model/vo/UserInfoVO.java | 33 ------------ .../com/qyft/gd/system/model/vo/UserPageVO.java | 38 -------------- .../com/qyft/gd/system/service/UserService.java | 9 ++++ .../gd/system/service/impl/UserServiceImpl.java | 20 +++++++ src/main/resources/application.yml | 2 + 19 files changed, 259 insertions(+), 287 deletions(-) create mode 100644 src/main/java/com/qyft/gd/system/common/enums/DeletedEnum.java create mode 100644 src/main/java/com/qyft/gd/system/config/CorsConfig.java create mode 100644 src/main/java/com/qyft/gd/system/controller/UserController.java create mode 100644 src/main/java/com/qyft/gd/system/core/MyMetaObjectHandler.java delete mode 100644 src/main/java/com/qyft/gd/system/model/bo/UserBO.java delete mode 100644 src/main/java/com/qyft/gd/system/model/dto/UserAuthInfo.java delete mode 100644 src/main/java/com/qyft/gd/system/model/form/RoleForm.java delete mode 100644 src/main/java/com/qyft/gd/system/model/form/UserForm.java delete mode 100644 src/main/java/com/qyft/gd/system/model/query/UserPageQuery.java delete mode 100644 src/main/java/com/qyft/gd/system/model/vo/UserInfoVO.java delete mode 100644 src/main/java/com/qyft/gd/system/model/vo/UserPageVO.java diff --git a/sql/demo.sql b/sql/demo.sql index 3494133..fa5b76b 100644 --- a/sql/demo.sql +++ b/sql/demo.sql @@ -59,8 +59,8 @@ CREATE TABLE IF NOT EXISTS sys_user ( avatar TEXT, role INTEGER, is_deleted INTEGER DEFAULT 0, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入测试数据 @@ -76,8 +76,8 @@ CREATE TABLE IF NOT EXISTS sys_role ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, code TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入角色数据 diff --git a/src/main/java/com/qyft/gd/system/common/base/BaseEntity.java b/src/main/java/com/qyft/gd/system/common/base/BaseEntity.java index 36d7e64..e4bbbda 100644 --- a/src/main/java/com/qyft/gd/system/common/base/BaseEntity.java +++ b/src/main/java/com/qyft/gd/system/common/base/BaseEntity.java @@ -32,7 +32,6 @@ public class BaseEntity implements Serializable { * 创建时间 */ @TableField(fill = FieldFill.INSERT) - @JsonInclude(value = JsonInclude.Include.NON_NULL) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; @@ -40,7 +39,6 @@ public class BaseEntity implements Serializable { * 更新时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) - @JsonInclude(value = JsonInclude.Include.NON_NULL) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; diff --git a/src/main/java/com/qyft/gd/system/common/enums/DeletedEnum.java b/src/main/java/com/qyft/gd/system/common/enums/DeletedEnum.java new file mode 100644 index 0000000..18e5cf8 --- /dev/null +++ b/src/main/java/com/qyft/gd/system/common/enums/DeletedEnum.java @@ -0,0 +1,24 @@ +package com.qyft.gd.system.common.enums; + +import com.qyft.gd.system.common.base.IBaseEnum; +import lombok.Getter; + +/** + * 删除状态枚举 + */ +@Getter +public enum DeletedEnum implements IBaseEnum { + + ENABLE(1, "删除"), + DISABLE(0, "未删除"); + + private final Integer value; + + + private final String label; + + DeletedEnum(Integer value, String label) { + this.value = value; + this.label = label; + } +} diff --git a/src/main/java/com/qyft/gd/system/config/CorsConfig.java b/src/main/java/com/qyft/gd/system/config/CorsConfig.java new file mode 100644 index 0000000..bc59c76 --- /dev/null +++ b/src/main/java/com/qyft/gd/system/config/CorsConfig.java @@ -0,0 +1,42 @@ +package com.qyft.gd.system.config; + +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; +import org.springframework.web.filter.CorsFilter; + +import java.util.Collections; + +/** + * CORS 资源共享配置 + * + * @author haoxr + * @since 2023/4/17 + */ +@Configuration +public class CorsConfig { + + @Bean + public FilterRegistrationBean filterRegistrationBean() { + CorsConfiguration corsConfiguration = new CorsConfiguration(); + //1.允许任何来源 + corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*")); + //2.允许任何请求头 + corsConfiguration.addAllowedHeader(CorsConfiguration.ALL); + //3.允许任何方法 + corsConfiguration.addAllowedMethod(CorsConfiguration.ALL); + //4.允许凭证 + corsConfiguration.setAllowCredentials(true); + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", corsConfiguration); + CorsFilter corsFilter = new CorsFilter(source); + + FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean<>(corsFilter); + filterRegistrationBean.setOrder(-101); + + return filterRegistrationBean; + } +} \ No newline at end of file diff --git a/src/main/java/com/qyft/gd/system/config/MybatisPlusConfig.java b/src/main/java/com/qyft/gd/system/config/MybatisPlusConfig.java index ad68b98..516f4cf 100644 --- a/src/main/java/com/qyft/gd/system/config/MybatisPlusConfig.java +++ b/src/main/java/com/qyft/gd/system/config/MybatisPlusConfig.java @@ -1,9 +1,11 @@ package com.qyft.gd.system.config; import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.qyft.gd.system.core.MyMetaObjectHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -32,8 +34,8 @@ public class MybatisPlusConfig { */ public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); - // 设置数据库类型为mysql - paginationInnerInterceptor.setDbType(DbType.POSTGRE_SQL); + // 设置数据库类型 + paginationInnerInterceptor.setDbType(DbType.SQLITE); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInnerInterceptor.setMaxLimit(-1L); return paginationInnerInterceptor; @@ -46,4 +48,14 @@ public class MybatisPlusConfig { public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() { return new OptimisticLockerInnerInterceptor(); } + + /** + * 自动填充数据库创建人、创建时间、更新人、更新时间 + */ + @Bean + public GlobalConfig globalConfig() { + GlobalConfig globalConfig = new GlobalConfig(); + globalConfig.setMetaObjectHandler(new MyMetaObjectHandler()); + return globalConfig; + } } diff --git a/src/main/java/com/qyft/gd/system/config/SwaggerConfig.java b/src/main/java/com/qyft/gd/system/config/SwaggerConfig.java index 585fe3e..c4f8dc0 100644 --- a/src/main/java/com/qyft/gd/system/config/SwaggerConfig.java +++ b/src/main/java/com/qyft/gd/system/config/SwaggerConfig.java @@ -1,39 +1,52 @@ package com.qyft.gd.system.config; +import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.RandomUtil; +import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; import org.springdoc.core.customizers.GlobalOpenApiCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpHeaders; +import org.springframework.util.AntPathMatcher; import java.util.HashMap; import java.util.Map; +import java.util.stream.Stream; /*** * 创建Swagger配置 */ @Configuration public class SwaggerConfig { - /** - * 根据@Tag 上的排序,写入x-order - * @return the global open api customizer - */ + @Bean public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() { return openApi -> { - if (openApi.getTags()!=null){ - openApi.getTags().forEach(tag -> { - Map map=new HashMap<>(); - map.put("x-order", RandomUtil.randomInt(0,100)); - tag.setExtensions(map); + // 全局添加Authorization + if (openApi.getPaths() != null) { + openApi.getPaths().forEach((path, pathItem) -> { + + // 忽略认证的请求无需携带 Authorization + String[] ignoreUrls = {"/api/auth/login"}; + if (ArrayUtil.isNotEmpty(ignoreUrls)) { + // Ant 匹配忽略的路径,不添加Authorization + AntPathMatcher antPathMatcher = new AntPathMatcher(); + if (Stream.of(ignoreUrls).anyMatch(ignoreUrl -> antPathMatcher.match(ignoreUrl, path))) { + return; + } + } + + // 其他接口统一添加Authorization + pathItem.readOperations() + .forEach(operation -> + operation.addSecurityItem(new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION)) + ); }); } - if(openApi.getPaths()!=null){ - openApi.addExtension("x-test123","333"); - openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100)); - } - }; } @@ -42,7 +55,17 @@ public class SwaggerConfig { return new OpenAPI() .info(new Info() .title("系统API") - .version("1.0")); + .version("1.0")) // 配置全局鉴权参数-Authorize + .components(new Components() + .addSecuritySchemes(HttpHeaders.AUTHORIZATION, + new SecurityScheme() + .name(HttpHeaders.AUTHORIZATION) + .type(SecurityScheme.Type.APIKEY) + .in(SecurityScheme.In.HEADER) + .scheme("Bearer") + .bearerFormat("JWT") + ) + ); } diff --git a/src/main/java/com/qyft/gd/system/controller/UserController.java b/src/main/java/com/qyft/gd/system/controller/UserController.java new file mode 100644 index 0000000..4c3e137 --- /dev/null +++ b/src/main/java/com/qyft/gd/system/controller/UserController.java @@ -0,0 +1,61 @@ +package com.qyft.gd.system.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qyft.gd.system.common.base.BasePageQuery; +import com.qyft.gd.system.common.result.PageResult; +import com.qyft.gd.system.common.result.Result; +import com.qyft.gd.system.model.entity.User; +import com.qyft.gd.system.service.UserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +@Tag(name = "用户接口") +@RestController +@RequestMapping("/api/user") +@RequiredArgsConstructor +@Slf4j +public class UserController { + private final UserService userService; + + @Operation(summary = "用户列表") + @GetMapping("/list") + public PageResult getAllUsers(BasePageQuery pageQuery) { + IPage result = userService.page(new Page<>(pageQuery.getPageNum(), pageQuery.getPageSize()), null); + return PageResult.success(result); + } + + @Operation(summary = "添加新用户") + @PostMapping("/") + public Result addUser(@RequestBody User user) { + boolean isSuccess = userService.addUser(user); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); + } + + @Operation(summary = "更新用户信息") + @PutMapping("/{id}") + public Result updateUser(@PathVariable Long id, @RequestBody User user) { + user.setId(id); + boolean isSuccess = userService.updateUser(user); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); + } + + @Operation(summary = "删除用户") + @DeleteMapping("/{id}") + public Result deleteUser(@PathVariable Long id) { + boolean isSuccess = userService.deleteUser(id); + if (isSuccess) { + return Result.success(); + } + return Result.failed(); + } +} diff --git a/src/main/java/com/qyft/gd/system/core/MyMetaObjectHandler.java b/src/main/java/com/qyft/gd/system/core/MyMetaObjectHandler.java new file mode 100644 index 0000000..1895341 --- /dev/null +++ b/src/main/java/com/qyft/gd/system/core/MyMetaObjectHandler.java @@ -0,0 +1,36 @@ +package com.qyft.gd.system.core; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; + +/** + * mybatis-plus 字段自动填充 + */ +@Component +public class MyMetaObjectHandler implements MetaObjectHandler { + + /** + * 新增填充创建时间 + * + * @param metaObject 元数据 + */ + @Override + public void insertFill(MetaObject metaObject) { + this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class); + this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); + } + + /** + * 更新填充更新时间 + * + * @param metaObject 元数据 + */ + @Override + public void updateFill(MetaObject metaObject) { + this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class); + } + +} diff --git a/src/main/java/com/qyft/gd/system/model/bo/UserBO.java b/src/main/java/com/qyft/gd/system/model/bo/UserBO.java deleted file mode 100644 index f3cd17f..0000000 --- a/src/main/java/com/qyft/gd/system/model/bo/UserBO.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.qyft.gd.system.model.bo; - -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 用户持久化对象 - */ -@Data -public class UserBO { - - /** - * 用户ID - */ - private Long id; - - /** - * 账户名 - */ - private String username; - - /** - * 昵称 - */ - private String nickname; - - /** - * 性别(1->男;2->女) - */ - private Integer gender; - - /** - * 头像URL - */ - private String avatar; - - /** - * 状态: 1->启用;0->禁用 - */ - private Integer status; - - /** - * 角色名称,多个使用英文逗号(,)分割 - */ - private String roleNames; - - /** - * 创建时间 - */ - private LocalDateTime createTime; -} diff --git a/src/main/java/com/qyft/gd/system/model/dto/UserAuthInfo.java b/src/main/java/com/qyft/gd/system/model/dto/UserAuthInfo.java deleted file mode 100644 index eeaf69d..0000000 --- a/src/main/java/com/qyft/gd/system/model/dto/UserAuthInfo.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.qyft.gd.system.model.dto; - -import lombok.Data; - -import java.util.Set; - -/** - * 用户认证信息 - */ -@Data -public class UserAuthInfo { - - /** - * 用户ID - */ - private Long userId; - - /** - * 用户名 - */ - private String username; - - /** - * 昵称 - */ - private String nickname; - - /** - * 用户密码 - */ - private String password; - - /** - * 状态(1:启用;0:禁用) - */ - private Integer status; - - /** - * 用户所属的角色集合 - */ - private Set roles; - -} diff --git a/src/main/java/com/qyft/gd/system/model/entity/User.java b/src/main/java/com/qyft/gd/system/model/entity/User.java index fe03871..1f7a99d 100644 --- a/src/main/java/com/qyft/gd/system/model/entity/User.java +++ b/src/main/java/com/qyft/gd/system/model/entity/User.java @@ -2,44 +2,35 @@ package com.qyft.gd.system.model.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.qyft.gd.system.common.base.BaseEntity; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; /** * 用户实体 */ +@Schema(description = "用户基础信息") @TableName("sys_user") @Getter @Setter public class User extends BaseEntity { - /** - * 用户名 - */ + @Schema(description = "用户名") private String username; - /** - * 昵称 - */ + @Schema(description = "昵称") private String nickname; - /** - * 密码 - */ + @Schema(description = "密码") private String password; - /** - * 用户头像 - */ + @Schema(description = "用户头像") private String avatar; - /** - * 人员角色 - */ + @Schema(description = "人员角色") private Long role; - /** - * 是否删除(0-否 1-是) - */ + @Schema(description = "是否删除(0-否 1-是)") private Integer isDeleted; + } \ No newline at end of file diff --git a/src/main/java/com/qyft/gd/system/model/form/RoleForm.java b/src/main/java/com/qyft/gd/system/model/form/RoleForm.java deleted file mode 100644 index bf845a5..0000000 --- a/src/main/java/com/qyft/gd/system/model/form/RoleForm.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.qyft.gd.system.model.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Schema(description = "角色表单对象") -@Data -public class RoleForm { - - @Schema(description = "角色ID") - private Long id; - - @Schema(description = "角色名称") - private String name; - - @Schema(description = "角色编码") - private String code; - -} diff --git a/src/main/java/com/qyft/gd/system/model/form/UserForm.java b/src/main/java/com/qyft/gd/system/model/form/UserForm.java deleted file mode 100644 index ab1fe99..0000000 --- a/src/main/java/com/qyft/gd/system/model/form/UserForm.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.qyft.gd.system.model.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 用户表单对象 - */ -@Schema(description = "用户表单对象") -@Data -public class UserForm { - - @Schema(description = "用户ID") - private Long id; - - @Schema(description = "用户名") - private String username; - - @Schema(description = "昵称") - private String nickname; - - @Schema(description = "性别") - private Integer gender; - - @Schema(description = "用户头像") - private String avatar; - - @Schema(description = "用户状态(1:正常;0:禁用)") - private Integer status; - - @Schema(description = "角色ID") - private Long roleIds; - -} diff --git a/src/main/java/com/qyft/gd/system/model/query/UserPageQuery.java b/src/main/java/com/qyft/gd/system/model/query/UserPageQuery.java deleted file mode 100644 index fc2e9d8..0000000 --- a/src/main/java/com/qyft/gd/system/model/query/UserPageQuery.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.qyft.gd.system.model.query; - -import com.qyft.gd.system.common.base.BasePageQuery; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.List; - -/** - * 用户分页查询对象 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Schema(description = "用户分页查询对象") -public class UserPageQuery extends BasePageQuery { - - @Schema(description = "关键字(用户名/昵称/手机号)") - private String keywords; - - @Schema(description = "用户状态") - private Integer status; - - @Schema(description = "角色ID") - private List roleIds; - -} diff --git a/src/main/java/com/qyft/gd/system/model/vo/UserInfoVO.java b/src/main/java/com/qyft/gd/system/model/vo/UserInfoVO.java deleted file mode 100644 index 9bd4510..0000000 --- a/src/main/java/com/qyft/gd/system/model/vo/UserInfoVO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.qyft.gd.system.model.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.util.Set; - -/** - * 用户登录视图对象 - */ -@Schema(description ="当前登录用户视图对象") -@Data -public class UserInfoVO { - - @Schema(description="用户ID") - private Long userId; - - @Schema(description="用户名") - private String username; - - @Schema(description="用户昵称") - private String nickname; - - @Schema(description="头像地址") - private String avatar; - - @Schema(description="用户角色编码集合") - private Set roles; - - @Schema(description="用户权限标识集合") - private Set perms; - -} diff --git a/src/main/java/com/qyft/gd/system/model/vo/UserPageVO.java b/src/main/java/com/qyft/gd/system/model/vo/UserPageVO.java deleted file mode 100644 index bb280e4..0000000 --- a/src/main/java/com/qyft/gd/system/model/vo/UserPageVO.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.qyft.gd.system.model.vo; - -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 用户分页视图对象 - */ -@Schema(description = "用户分页对象") -@Data -public class UserPageVO { - - @Schema(description = "用户ID") - private Long id; - - @Schema(description = "用户名") - private String username; - - @Schema(description = "用户昵称") - private String nickname; - - @Schema(description = "性别") - private Integer gender; - - @Schema(description = "用户状态(1:启用;0:禁用)") - private Integer status; - - @Schema(description = "角色名称,多个使用英文逗号(,)分割") - private String roleNames; - - @Schema(description = "创建时间") - @JsonFormat(pattern = "yyyy/MM/dd HH:mm") - private LocalDateTime createTime; - -} diff --git a/src/main/java/com/qyft/gd/system/service/UserService.java b/src/main/java/com/qyft/gd/system/service/UserService.java index 5c321e2..e43b0a4 100644 --- a/src/main/java/com/qyft/gd/system/service/UserService.java +++ b/src/main/java/com/qyft/gd/system/service/UserService.java @@ -3,6 +3,8 @@ package com.qyft.gd.system.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qyft.gd.system.model.entity.User; +import java.util.List; + /** * 用户业务接口 */ @@ -10,4 +12,11 @@ public interface UserService extends IService { User findByUsername(String username); + boolean addUser(User user); + + boolean updateUser(User user); + + boolean deleteUser(Long userId); + + } diff --git a/src/main/java/com/qyft/gd/system/service/impl/UserServiceImpl.java b/src/main/java/com/qyft/gd/system/service/impl/UserServiceImpl.java index 42dee9c..80d970c 100644 --- a/src/main/java/com/qyft/gd/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/qyft/gd/system/service/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package com.qyft.gd.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qyft.gd.system.common.enums.DeletedEnum; import com.qyft.gd.system.mapper.UserMapper; import com.qyft.gd.system.model.entity.User; import com.qyft.gd.system.service.UserService; @@ -18,4 +19,23 @@ public class UserServiceImpl extends ServiceImpl implements Us public User findByUsername(String username) { return this.baseMapper.findByUsername(username); } + + @Override + public boolean addUser(User user) { + return this.baseMapper.insert(user) > 0; + } + + @Override + public boolean updateUser(User user) { + return this.baseMapper.updateById(user) > 0; + } + + @Override + public boolean deleteUser(Long userId) { + User user = new User(); + user.setId(userId); + user.setIsDeleted(DeletedEnum.ENABLE.getValue()); + return this.baseMapper.updateById(user) > 0; + } + } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b1036f9..529c445 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -26,6 +26,8 @@ logging: root: INFO org.mybatis: DEBUG +springdoc: + default-flat-param-object: true jwt: enabled: false # 是否启用权限认证,设置为 true 启用,false 禁用