From 018c644d6803548a8bd4fccb8102ba50d0ae17dd Mon Sep 17 00:00:00 2001 From: yulinling <2712495353@qq.com> Date: Sun, 22 Jun 2025 22:22:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20-=20=E6=9B=B4=E6=94=B9DDL=20-=20?= =?UTF-8?q?=E6=9B=B4=E6=94=B9UserService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/service/MailService.java | 1 - .../workflow/service/UserService.java | 8 ++- .../service/impl/UserServiceImpl.java | 57 +++++++--------- src/main/resources/db/schema.sql | 66 +++++++++++++------ 4 files changed, 73 insertions(+), 59 deletions(-) diff --git a/src/main/java/asia/yulinling/workflow/service/MailService.java b/src/main/java/asia/yulinling/workflow/service/MailService.java index aaf5bb8..ff5a67f 100644 --- a/src/main/java/asia/yulinling/workflow/service/MailService.java +++ b/src/main/java/asia/yulinling/workflow/service/MailService.java @@ -32,7 +32,6 @@ public interface MailService { */ void sendHtmlMail(String to, String subject, String content, String... cc) throws MessagingException; - /** * 发送带附件邮件 * diff --git a/src/main/java/asia/yulinling/workflow/service/UserService.java b/src/main/java/asia/yulinling/workflow/service/UserService.java index 258a1ac..9cb09fd 100644 --- a/src/main/java/asia/yulinling/workflow/service/UserService.java +++ b/src/main/java/asia/yulinling/workflow/service/UserService.java @@ -17,7 +17,11 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public interface UserService { - ApiResponse> getUserList(); - + /** + * 获取用户列表分页 + * + * @param pageParam 分页参数 + * @return 用户列表 + */ ApiResponse> getUserListByPage(PageParam pageParam); } diff --git a/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java b/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java index cbaed26..5ac05b4 100644 --- a/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java +++ b/src/main/java/asia/yulinling/workflow/service/impl/UserServiceImpl.java @@ -8,9 +8,9 @@ import asia.yulinling.workflow.model.entity.User; import asia.yulinling.workflow.model.vo.user.UserVO; import asia.yulinling.workflow.service.UserService; import asia.yulinling.workflow.utils.PageUtil; -import cn.hutool.core.util.ArrayUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -27,55 +27,42 @@ import java.util.List; */ @Service @RequiredArgsConstructor +@Slf4j public class UserServiceImpl implements UserService { /** 注入用户Mapper */ private final UserMapper userMapper; - @Override - public ApiResponse> getUserList() { - - List userVOList = new ArrayList<>(); - - List users = userMapper.selectList(null); - - if (ArrayUtil.isNotEmpty(users)) { - for (User user : users) { - UserVO userVO = new UserVO(); - userVO.setUsername(user.getUsername()); - userVO.setEmail(user.getEmail()); - userVO.setPhone(user.getPhone()); - userVO.setStatus(user.getStatus()); - userVOList.add(userVO); - } - PageResult pageResult = new PageResult<>( - users.toArray().length, 1, users.toArray().length / 10, userVOList - ); - - return ApiResponse.ofSuccess(pageResult); - } - - return ApiResponse.ofSuccess(null); - } - + /** + * 获取用户列表分页 + * + * @param pageParam 分页参数 + * @return 用户列表 + */ @Override public ApiResponse> getUserListByPage(PageParam pageParam) { + try { + // 创建分页对象 + Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); - Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize()); - Page users = userMapper.selectPage(page, null); - List userVOList = new ArrayList<>(); - - if (users.getRecords() != null && !users.getRecords().isEmpty()) { + // 执行分页查询 + Page users = userMapper.selectPage(page, null); + // 转换为 VO 列表 + List userVOList = new ArrayList<>(); for (User user : users.getRecords()) { UserVO userVO = new UserVO(); BeanUtils.copyProperties(user, userVO); userVOList.add(userVO); } - } - PageResult pageResult = PageUtil.buildPageResult(users, userVOList); + // 构建分页结果 + PageResult pageResult = PageUtil.buildPageResult(users, userVOList); - return ApiResponse.ofSuccess(pageResult); + return ApiResponse.ofSuccess(pageResult); + } catch (Exception e) { + log.error("database select error:{}", e.getMessage()); + throw new RuntimeException(e); + } } } diff --git a/src/main/resources/db/schema.sql b/src/main/resources/db/schema.sql index 6fbe4b6..e5e0b4a 100644 --- a/src/main/resources/db/schema.sql +++ b/src/main/resources/db/schema.sql @@ -5,7 +5,7 @@ CREATE TABLE `wk_user` `username` VARCHAR(32) NOT NULL UNIQUE COMMENT '用户名', `nickname` VARCHAR(32) DEFAULT '默认用户' COMMENT '昵称', `password` VARCHAR(256) NOT NULL COMMENT '加密后的密码', - `email` VARCHAR(32) UNIQUE COMMENT '邮箱', + `email` VARCHAR(32) UNIQUE COMMENT '邮箱', `birthday` DATETIME DEFAULT NULL COMMENT '生日', `sex` INT(2) DEFAULT NULL COMMENT '性别,男-1,女-2', `phone` VARCHAR(15) DEFAULT NULL UNIQUE COMMENT '手机号', @@ -30,31 +30,55 @@ CREATE TABLE `wk_role` DROP TABLE IF EXISTS `wk_permission`; CREATE TABLE `wk_permission` ( - `id` BIGINT(64) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '主键', - `name` VARCHAR(32) NOT NULL UNIQUE COMMENT '权限名', - `url` VARCHAR(1000) DEFAULT NULL COMMENT '类型为页面时,代表前端路由地址,类型为按钮时,代表后端接口地址', - `type` INT(2) NOT NULL COMMENT '权限类型,页面-1,按钮-2', - `permission` VARCHAR(50) DEFAULT NULL COMMENT '权限表达式', - `method` VARCHAR(50) DEFAULT NULL COMMENT '后端接口访问方式', - `sort` INT(11) NOT NULL COMMENT '排序', - `parent_id` BIGINT(64) NOT NULL COMMENT '父级ID' -) ENGINE = INNODB - DEFAULT CHARSET = UTF8 COMMENT '权限表'; + `id` BIGINT AUTO_INCREMENT COMMENT '主键', + `name` VARCHAR(32) NOT NULL COMMENT '权限名', + `url` VARCHAR(1000) NULL COMMENT '类型为页面时,代表前端路由地址,类型为按钮时,代表后端接口地址', + `type` INT NOT NULL COMMENT '权限类型,页面-1,按钮-2', + `permission` VARCHAR(50) NULL COMMENT '权限表达式', + `method` VARCHAR(50) NULL COMMENT '后端接口访问方式', + `sort` INT NOT NULL COMMENT '排序', + `parent_id` BIGINT NOT NULL COMMENT '父级ID', + `create_time` DATETIME DEFAULT NOW() COMMENT '创建时间', + `update_time` DATETIME DEFAULT NOW() COMMENT '更新时间', + PRIMARY KEY (`id`), + UNIQUE INDEX `name` (`name`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1072806379384868866 + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + COMMENT = '权限表'; + DROP TABLE IF EXISTS `wk_role_permission`; CREATE TABLE `wk_role_permission` ( - `role_id` BIGINT(64) NOT NULL COMMENT '', - `permission_id` BIGINT(64) NOT NULL COMMENT '', - PRIMARY KEY (`role_id`, `permission_id`) -) ENGINE = INNODB - DEFAULT CHARSET = UTF8 COMMENT '角色权限表'; + `role_id` BIGINT NOT NULL COMMENT '角色ID', + `permission_id` BIGINT NOT NULL COMMENT '权限ID', + PRIMARY KEY (`role_id`, `permission_id`), + CONSTRAINT `fk_role_permission_permission` + FOREIGN KEY (`permission_id`) + REFERENCES `wk_permission` (`id`), + CONSTRAINT `fk_role_permission_role` + FOREIGN KEY (`role_id`) + REFERENCES `wk_role` (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + COMMENT = '角色权限表'; DROP TABLE IF EXISTS `wk_role_user`; CREATE TABLE `wk_role_user` ( - `role_id` BIGINT(64) NOT NULL COMMENT '', - `user_id` BIGINT(64) NOT NULL COMMENT '', - PRIMARY KEY (`role_id`, `user_id`) -) ENGINE = INNODB - DEFAULT CHARSET = UTF8 COMMENT '角色用户表'; \ No newline at end of file + `role_id` BIGINT NOT NULL COMMENT '角色ID', + `user_id` BIGINT NOT NULL COMMENT '用户ID', + PRIMARY KEY (`role_id`, `user_id`), + CONSTRAINT `fk_role_user_role` + FOREIGN KEY (`role_id`) + REFERENCES `wk_role` (`id`), + CONSTRAINT `fk_role_user_user` + FOREIGN KEY (`user_id`) + REFERENCES `wk_user` (`id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4 + COLLATE = utf8mb4_unicode_ci + COMMENT = '角色用户表'; \ No newline at end of file