feat: 添加笔记本
This commit is contained in:
parent
717c3509b4
commit
f964e37531
@ -2,8 +2,11 @@ package asia.yulinling.workflow.controller;
|
||||
|
||||
import asia.yulinling.workflow.constant.Status;
|
||||
import asia.yulinling.workflow.dto.request.NotebookRequest;
|
||||
import asia.yulinling.workflow.dto.request.PageParam;
|
||||
import asia.yulinling.workflow.dto.response.PageResult;
|
||||
import asia.yulinling.workflow.model.ApiResponse;
|
||||
import asia.yulinling.workflow.model.entity.Notebook;
|
||||
import asia.yulinling.workflow.model.vo.NotebookVO;
|
||||
import asia.yulinling.workflow.service.NotebookService;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -27,18 +30,20 @@ public class NotebookController {
|
||||
}
|
||||
|
||||
@GetMapping("/notebooks")
|
||||
public void notebooksGet() {
|
||||
public ApiResponse<PageResult<NotebookVO>> notebooksGet(@Valid PageParam pageParam) {
|
||||
PageResult<NotebookVO> notebookList = notebookService.getNotebookList(pageParam);
|
||||
return ApiResponse.ofStatus(Status.SUCCESS, notebookList);
|
||||
}
|
||||
|
||||
@GetMapping("/notebooks/{id}")
|
||||
public void notebooksGet(@PathVariable String id) {
|
||||
public void notebooksGet(@PathVariable Long id) {
|
||||
}
|
||||
|
||||
@PutMapping("/notebooks/{id}")
|
||||
public void notebooksPut(@PathVariable String id) {
|
||||
public void notebooksPut(@PathVariable Long id) {
|
||||
}
|
||||
|
||||
@DeleteMapping("/notebooks/{id}")
|
||||
public void notebooksDelete(@PathVariable String id) {
|
||||
public void notebooksDelete(@PathVariable Long id) {
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,41 @@
|
||||
package asia.yulinling.workflow.exception;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 业务异常
|
||||
* </p>
|
||||
*
|
||||
* @author YLL
|
||||
* @since 2025/7/31
|
||||
*/
|
||||
public class ServiceException extends RuntimeException {
|
||||
|
||||
/**
|
||||
* 错误提示
|
||||
*/
|
||||
@Getter
|
||||
private String message;
|
||||
|
||||
@Getter
|
||||
private String detailMessage;
|
||||
|
||||
public ServiceException() {
|
||||
|
||||
}
|
||||
|
||||
public ServiceException(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public ServiceException setDetailMessage(String detailMessage) {
|
||||
this.detailMessage = detailMessage;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ServiceException setMessage(String message) {
|
||||
this.message = message;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package asia.yulinling.workflow.exception.handler;
|
||||
|
||||
import asia.yulinling.workflow.exception.PageException;
|
||||
import asia.yulinling.workflow.exception.ServiceException;
|
||||
import asia.yulinling.workflow.model.ApiResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||
@ -34,6 +35,19 @@ public class GlobalExceptionHandler {
|
||||
return ApiResponse.of(500, e.getMessage(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一 ServiceException 异常处理
|
||||
*
|
||||
* @param e ServiceException
|
||||
* @return 统一返回 json 格式
|
||||
*/
|
||||
@ExceptionHandler(ServiceException.class)
|
||||
@ResponseBody
|
||||
public ApiResponse<?> catchErrorHandler(ServiceException e) {
|
||||
log.error("service error:{}", e.getMessage());
|
||||
return ApiResponse.of(500, e.getMessage(), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 统一 页面 异常处理
|
||||
*
|
||||
|
||||
@ -42,13 +42,13 @@ public class Notebook {
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField("created_at")
|
||||
Date createTime;
|
||||
Date createdTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField("update_at")
|
||||
Date updateTime;
|
||||
@TableField("updated_at")
|
||||
Date updatedTime;
|
||||
|
||||
/**
|
||||
* 笔记本内的笔记数量
|
||||
|
||||
@ -0,0 +1,56 @@
|
||||
package asia.yulinling.workflow.model.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 笔记本VO
|
||||
* </p>
|
||||
*
|
||||
* @author YLL
|
||||
* @since 2025/8/3
|
||||
*/
|
||||
@Data
|
||||
public class NotebookVO {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
Long id;
|
||||
|
||||
/**
|
||||
* 用户id,外键
|
||||
*/
|
||||
Long userId;
|
||||
|
||||
/**
|
||||
* 笔记本名称
|
||||
*/
|
||||
String name;
|
||||
|
||||
/**
|
||||
* 笔记本颜色标识
|
||||
*/
|
||||
String color;
|
||||
|
||||
/**
|
||||
* 笔记本图标标识
|
||||
*/
|
||||
String icon;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
Date createdTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
Date updatedTime;
|
||||
|
||||
/**
|
||||
* 笔记本内的笔记数量
|
||||
*/
|
||||
Integer notesCount;
|
||||
}
|
||||
@ -1,6 +1,9 @@
|
||||
package asia.yulinling.workflow.service;
|
||||
|
||||
import asia.yulinling.workflow.dto.request.PageParam;
|
||||
import asia.yulinling.workflow.dto.response.PageResult;
|
||||
import asia.yulinling.workflow.model.entity.Notebook;
|
||||
import asia.yulinling.workflow.model.vo.NotebookVO;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
@ -12,34 +15,53 @@ public interface NotebookService {
|
||||
*
|
||||
* @param notebook 笔记本
|
||||
*/
|
||||
void addNotebook(Notebook notebook);
|
||||
int addNotebook(Notebook notebook);
|
||||
|
||||
/**
|
||||
* 删除笔记本
|
||||
*
|
||||
* @param id 笔记本id
|
||||
* @param notebookId 笔记本id
|
||||
* @return 结果
|
||||
*/
|
||||
void deleteNotebook(Long id);
|
||||
int deleteNotebookById(Long notebookId);
|
||||
|
||||
/**
|
||||
* 更新笔记本
|
||||
*
|
||||
* @param notebook 笔记本
|
||||
* @return 结果
|
||||
*/
|
||||
void updateNotebook(Notebook notebook);
|
||||
int updateNotebook(Notebook notebook);
|
||||
|
||||
/**
|
||||
* 获取笔记本内容
|
||||
*
|
||||
* @param id 笔记本id
|
||||
* @return 笔记本
|
||||
* @param notebookId 笔记本id
|
||||
* @return 结果
|
||||
*/
|
||||
Notebook getNotebook(Long id);
|
||||
Notebook getNotebook(Long notebookId);
|
||||
|
||||
/**
|
||||
* 获取笔记本列表
|
||||
*
|
||||
* @param pageParam 分页参数
|
||||
* @return 笔记本列表
|
||||
*/
|
||||
List<Notebook> getNotebookList();
|
||||
PageResult<NotebookVO> getNotebookList(PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 获取指定用户的笔记本列表
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return 笔记本列表
|
||||
*/
|
||||
List<Notebook> getNotebookListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 检测笔记本Id存在
|
||||
*
|
||||
* @param notebookId 笔记本id
|
||||
* @return 结果
|
||||
*/
|
||||
boolean checkNotebookIdExist(Long notebookId);
|
||||
}
|
||||
|
||||
@ -18,6 +18,8 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
@Transactional
|
||||
public interface UserService {
|
||||
|
||||
boolean checkUserIdExist(Long userId);
|
||||
|
||||
/**
|
||||
* 获取用户列表分页
|
||||
*
|
||||
|
||||
@ -1,44 +1,114 @@
|
||||
package asia.yulinling.workflow.service.impl;
|
||||
|
||||
import asia.yulinling.workflow.dto.request.PageParam;
|
||||
import asia.yulinling.workflow.dto.response.PageResult;
|
||||
import asia.yulinling.workflow.exception.ServiceException;
|
||||
import asia.yulinling.workflow.mapper.NotebookMapper;
|
||||
import asia.yulinling.workflow.model.entity.Notebook;
|
||||
import asia.yulinling.workflow.model.vo.NotebookVO;
|
||||
import asia.yulinling.workflow.service.NotebookService;
|
||||
import asia.yulinling.workflow.service.UserService;
|
||||
import asia.yulinling.workflow.utils.PageUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class NotebookServiceImpl implements NotebookService {
|
||||
private final NotebookMapper notebookMapper;
|
||||
private final UserService userService;
|
||||
|
||||
@Override
|
||||
public void addNotebook(Notebook notebook) {
|
||||
if (notebook == null) {
|
||||
return;
|
||||
public int addNotebook(Notebook notebook) {
|
||||
|
||||
if (!userService.checkUserIdExist(notebook.getUserId())) {
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
|
||||
notebookMapper.insert(notebook);
|
||||
return notebookMapper.insert(notebook);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteNotebook(Long id) {
|
||||
public int deleteNotebookById(Long notebookId) {
|
||||
if (!userService.checkUserIdExist(notebookId)) {
|
||||
throw new ServiceException("笔记本不存在");
|
||||
}
|
||||
|
||||
return notebookMapper.deleteById(notebookId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNotebook(Notebook notebook) {
|
||||
public int updateNotebook(Notebook notebook) {
|
||||
if (!userService.checkUserIdExist(notebook.getUserId())) {
|
||||
throw new ServiceException("笔记本不存在");
|
||||
}
|
||||
|
||||
return notebookMapper.updateById(notebook);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Notebook getNotebook(Long id) {
|
||||
return null;
|
||||
public Notebook getNotebook(Long notebookId) {
|
||||
if (!userService.checkUserIdExist(notebookId)) {
|
||||
throw new ServiceException("笔记本不存在");
|
||||
}
|
||||
|
||||
return notebookMapper.selectById(notebookId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取笔记本列表
|
||||
*
|
||||
* @param pageParam 分页参数
|
||||
* @return 笔记本列表
|
||||
*/
|
||||
@Override
|
||||
public List<Notebook> getNotebookList() {
|
||||
return List.of();
|
||||
public PageResult<NotebookVO> getNotebookList(PageParam pageParam) {
|
||||
|
||||
|
||||
Page<Notebook> page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());
|
||||
Page<Notebook> notebookPage = notebookMapper.selectPage(page, null);
|
||||
|
||||
List<NotebookVO> notebookVOList = new ArrayList<>();
|
||||
for (Notebook notebook : notebookPage.getRecords()) {
|
||||
NotebookVO notebookVO = new NotebookVO();
|
||||
BeanUtils.copyProperties(notebook, notebookVO);
|
||||
notebookVOList.add(notebookVO);
|
||||
}
|
||||
|
||||
return PageUtil.buildPageResult(notebookPage, notebookVOList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定用户的笔记本列表
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return 笔记本列表
|
||||
*/
|
||||
@Override
|
||||
public List<Notebook> getNotebookListByUserId(Long userId) {
|
||||
if (!userService.checkUserIdExist(userId)) {
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
|
||||
return notebookMapper.selectList(new LambdaQueryWrapper<Notebook>().eq(Notebook::getUserId, userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 检测笔记本Id存在
|
||||
*
|
||||
* @param notebookId 笔记本id
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public boolean checkNotebookIdExist(Long notebookId) {
|
||||
return notebookMapper.exists(new LambdaQueryWrapper<Notebook>().eq(Notebook::getId, notebookId));
|
||||
}
|
||||
}
|
||||
|
||||
@ -47,6 +47,17 @@ public class UserServiceImpl implements UserService {
|
||||
private final RoleUserMapper roleUserMapper;
|
||||
private final RoleMapper roleMapper;
|
||||
|
||||
/**
|
||||
* 校验用户id存在
|
||||
*
|
||||
* @param userId 用户id
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public boolean checkUserIdExist(Long userId) {
|
||||
return userMapper.exists(new LambdaQueryWrapper<User>().eq(User::getId, userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户列表分页
|
||||
*
|
||||
|
||||
Loading…
Reference in New Issue
Block a user