diff --git a/src/main/java/com/dd/admin/business/api/ApiController.java b/src/main/java/com/dd/admin/business/api/ApiController.java new file mode 100644 index 0000000..101b58a --- /dev/null +++ b/src/main/java/com/dd/admin/business/api/ApiController.java @@ -0,0 +1,36 @@ +package com.dd.admin.business.api; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.dd.admin.business.card.domain.CardDto; +import com.dd.admin.business.card.domain.CardVo; +import com.dd.admin.business.note.domain.NoteDto; +import com.dd.admin.business.note.domain.NoteVo; +import com.dd.admin.business.note.entity.Note; +import com.dd.admin.business.note.service.NoteService; +import com.dd.admin.common.aop.operationLog.aop.OperLog; +import com.dd.admin.common.aop.operationLog.aop.OperType; +import com.dd.admin.common.model.result.ResultBean; +import com.dd.admin.common.security.SecurityUtil; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class ApiController { + @Autowired + NoteService noteService; + + @ApiOperation(value = "获取所有笔记") + @ApiOperationSupport(order = 1) + @GetMapping("/api/notes") + @OperLog(operModule = "获取所有笔记",operType = OperType.QUERY,operDesc = "获取所有笔记") + public ResultBean> page(NoteDto noteDto) { + IPage pageInfo = noteService.selectNotePage(noteDto); + return ResultBean.success(pageInfo); + } + + +} diff --git a/src/main/java/com/dd/admin/business/note/controller/NoteController.java b/src/main/java/com/dd/admin/business/note/controller/NoteController.java new file mode 100644 index 0000000..c7065e6 --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/controller/NoteController.java @@ -0,0 +1,88 @@ +package com.dd.admin.business.note.controller; + +import cn.hutool.core.bean.BeanUtil; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.dd.admin.common.model.UpdateGroup; +import com.dd.admin.common.model.result.ResultBean; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import javax.validation.constraints.NotBlank; +import com.dd.admin.business.note.entity.Note; +import com.dd.admin.business.note.domain.NoteVo; +import com.dd.admin.business.note.domain.NoteDto; +import com.dd.admin.business.note.service.NoteService; + +import java.util.List; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 笔记表 前端控制器 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Api(tags = "笔记表") +@RestController +public class NoteController { + + @Autowired + NoteService noteService; + + @ApiOperation(value = "笔记表-分页列表") + @ApiOperationSupport(order = 1) + @GetMapping("/admin/note/page") + public ResultBean> page(NoteDto noteDto) { + IPage pageInfo = noteService.selectNotePage(noteDto); + return ResultBean.success(pageInfo); + } + + @ApiOperation(value = "笔记表-列表") + @ApiOperationSupport(order = 2) + @GetMapping("/admin/note/list") + public ResultBean> list(NoteDto noteDto) { + List list = noteService.selectNoteList(noteDto); + return ResultBean.success(list); + } + + @ApiOperation(value = "笔记表-添加") + @ApiOperationSupport(order = 3) + @PostMapping("/admin/note/add") + public ResultBean add(@RequestBody @Validated NoteDto noteDto) { + Note note = BeanUtil.copyProperties(noteDto, Note.class); + noteService.save(note); + return ResultBean.success(note); + } + + @ApiOperation(value = "笔记表-查询") + @ApiOperationSupport(order = 4) + @GetMapping("/admin/note/{noteId}") + public ResultBean get(@PathVariable @NotBlank String noteId) { + Note note = noteService.getById(noteId); + NoteVo noteVo = BeanUtil.copyProperties(note,NoteVo.class); + return ResultBean.success(noteVo); + } + + @ApiOperation(value = "笔记表-修改") + @ApiOperationSupport(order = 5) + @PostMapping("/admin/note/update") + public ResultBean update(@RequestBody @Validated(UpdateGroup.class) NoteDto noteDto) { + Note note = BeanUtil.copyProperties(noteDto, Note.class); + noteService.updateById(note); + return ResultBean.success(note); + } + + @ApiOperation(value = "笔记表-删除") + @ApiOperationSupport(order = 6) + @GetMapping("/admin/note/delete/{noteId}") + public ResultBean delete(@PathVariable @NotBlank String noteId) { + Boolean b = noteService.removeById(noteId); + return ResultBean.success(b); + } +} diff --git a/src/main/java/com/dd/admin/business/note/domain/NoteDto.java b/src/main/java/com/dd/admin/business/note/domain/NoteDto.java new file mode 100644 index 0000000..44082f2 --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/domain/NoteDto.java @@ -0,0 +1,89 @@ +package com.dd.admin.business.note.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.Version; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import javax.validation.constraints.NotBlank; +import com.dd.admin.common.model.UpdateGroup; + + +/** + *

+ * 笔记表返回对象 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Data +@ApiModel(value="笔记表接收对象") +public class NoteDto { + + + @ApiModelProperty(value = "笔记id") + @NotBlank(message = "笔记表id不能为空",groups = UpdateGroup.class) + private String noteId; + + @ApiModelProperty(value = "笔记标题") + private String noteTitle; + + @ApiModelProperty(value = "笔记内容") + private String noteContent; + + @ApiModelProperty(value = "类型id") + private String noteCategory; + + @ApiModelProperty(value = "笔记类型名") + private String noteCategoryName; + + @ApiModelProperty(value = "1 图文 2视频 3文字") + private Integer noteType; + + @ApiModelProperty(value = "作者ID") + private String authorId; + + @ApiModelProperty(value = "作者头像") + private String authorAvatar; + + @ApiModelProperty(value = "作者名字") + private String authorName; + + @ApiModelProperty(value = "首图URL") + private String firstPicture; + + @ApiModelProperty(value = "乐观锁字段") + private Long version; + + @ApiModelProperty(value = "0正常 1删除") + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "ip地址") + private String ipAddress; + + @ApiModelProperty(value = "真实ip地址") + private String ipRealAddress; + + @ApiModelProperty(value = "点赞数") + private Long upCount; + + @ApiModelProperty(value = "收藏数") + private Long starCount; + + +} diff --git a/src/main/java/com/dd/admin/business/note/domain/NoteVo.java b/src/main/java/com/dd/admin/business/note/domain/NoteVo.java new file mode 100644 index 0000000..1e45b21 --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/domain/NoteVo.java @@ -0,0 +1,91 @@ +package com.dd.admin.business.note.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.Version; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 笔记表返回对象 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Data +@ApiModel(value="笔记表返回对象") +public class NoteVo { + + + @ApiModelProperty(value = "笔记id") + private String noteId; + + @ApiModelProperty(value = "笔记标题") + private String noteTitle; + + @ApiModelProperty(value = "笔记内容") + private String noteContent; + + @ApiModelProperty(value = "类型id") + private String noteCategory; + + @ApiModelProperty(value = "笔记类型名") + private String noteCategoryName; + + @ApiModelProperty(value = "1 图文 2视频 3文字") + private Integer noteType; + + @ApiModelProperty(value = "作者ID") + private String authorId; + + @ApiModelProperty(value = "作者头像") + private String authorAvatar; + + @ApiModelProperty(value = "作者名字") + private String authorName; + + @ApiModelProperty(value = "首图URL") + private String firstPicture; + + @ApiModelProperty(value = "乐观锁字段") + private Long version; + + @ApiModelProperty(value = "0正常 1删除") + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern="MM-dd", timezone = "GMT+8") + private Date createTimeStr; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "ip地址") + private String ipAddress; + + @ApiModelProperty(value = "真实ip地址") + private String ipRealAddress; + + @ApiModelProperty(value = "点赞数") + private Long upCount; + + @ApiModelProperty(value = "收藏数") + private Long starCount; + + +} diff --git a/src/main/java/com/dd/admin/business/note/entity/Note.java b/src/main/java/com/dd/admin/business/note/entity/Note.java new file mode 100644 index 0000000..ab332db --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/entity/Note.java @@ -0,0 +1,108 @@ +package com.dd.admin.business.note.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.util.Date; +import com.baomidou.mybatisplus.annotation.Version; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 笔记表 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("business_note") +@ApiModel(value="Note对象", description="笔记表") +public class Note implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "笔记id") + @TableId(value = "NOTE_ID", type = IdType.ASSIGN_UUID) + private String noteId; + + @ApiModelProperty(value = "笔记标题") + @TableField("NOTE_TITLE") + private String noteTitle; + + @ApiModelProperty(value = "笔记内容") + @TableField("NOTE_CONTENT") + private String noteContent; + + @ApiModelProperty(value = "类型id") + @TableField("NOTE_CATEGORY") + private String noteCategory; + + @ApiModelProperty(value = "笔记类型名") + @TableField("NOTE_CATEGORY_NAME") + private String noteCategoryName; + + @ApiModelProperty(value = "1 图文 2视频 3文字") + @TableField("NOTE_TYPE") + private Integer noteType; + + @ApiModelProperty(value = "作者ID") + @TableField("AUTHOR_ID") + private String authorId; + + @ApiModelProperty(value = "作者头像") + @TableField("AUTHOR_AVATAR") + private String authorAvatar; + + @ApiModelProperty(value = "作者名字") + @TableField("AUTHOR_NAME") + private String authorName; + + @ApiModelProperty(value = "首图URL") + @TableField("FIRST_PICTURE") + private String firstPicture; + + @ApiModelProperty(value = "乐观锁字段") + @TableField("VERSION") + @Version + private Long version; + + @ApiModelProperty(value = "0正常 1删除") + @TableField("DELETED") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + @TableField(value = "CREATE_TIME", fill = FieldFill.INSERT) + private Date createTime; + + @ApiModelProperty(value = "修改时间") + @TableField(value = "UPDATE_TIME", fill = FieldFill.UPDATE) + private Date updateTime; + + @ApiModelProperty(value = "ip地址") + @TableField("IP_ADDRESS") + private String ipAddress; + + @ApiModelProperty(value = "真实ip地址") + @TableField("IP_REAL_ADDRESS") + private String ipRealAddress; + + @ApiModelProperty(value = "点赞数") + @TableField("UP_COUNT") + private Long upCount; + + @ApiModelProperty(value = "收藏数") + @TableField("STAR_COUNT") + private Long starCount; + + +} diff --git a/src/main/java/com/dd/admin/business/note/mapper/NoteMapper.java b/src/main/java/com/dd/admin/business/note/mapper/NoteMapper.java new file mode 100644 index 0000000..80376a3 --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/mapper/NoteMapper.java @@ -0,0 +1,28 @@ +package com.dd.admin.business.note.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dd.admin.business.note.entity.Note; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dd.admin.business.note.domain.NoteVo; +import com.dd.admin.business.note.domain.NoteDto; + +import java.util.List; + +/** + *

+ * 笔记表 Mapper 接口 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Mapper +public interface NoteMapper extends BaseMapper { + + IPage selectNotePage(Page page, @Param("noteDto") NoteDto noteDto); + + List selectNoteList(@Param("noteDto") NoteDto noteDto); +} diff --git a/src/main/java/com/dd/admin/business/note/mapper/xml/NoteMapper.xml b/src/main/java/com/dd/admin/business/note/mapper/xml/NoteMapper.xml new file mode 100644 index 0000000..6b02dcd --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/mapper/xml/NoteMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NOTE_ID, NOTE_TITLE, NOTE_CONTENT, NOTE_CATEGORY, NOTE_CATEGORY_NAME, NOTE_TYPE, AUTHOR_ID, AUTHOR_AVATAR, AUTHOR_NAME, FIRST_PICTURE, VERSION, DELETED, CREATE_TIME, UPDATE_TIME, IP_ADDRESS, IP_REAL_ADDRESS, UP_COUNT, STAR_COUNT + + + + + + diff --git a/src/main/java/com/dd/admin/business/note/service/NoteService.java b/src/main/java/com/dd/admin/business/note/service/NoteService.java new file mode 100644 index 0000000..79b0d74 --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/service/NoteService.java @@ -0,0 +1,26 @@ +package com.dd.admin.business.note.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.dd.admin.business.note.entity.Note; +import com.baomidou.mybatisplus.extension.service.IService; +import com.dd.admin.business.note.domain.NoteVo; +import com.dd.admin.business.note.domain.NoteDto; +import java.util.List; + +/** + *

+ * 笔记表 服务类 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +public interface NoteService extends IService { + + //笔记表-分页列表 + IPage selectNotePage(NoteDto noteDto); + + //笔记表-列表 + List selectNoteList(NoteDto noteDto); + +} diff --git a/src/main/java/com/dd/admin/business/note/service/impl/NoteServiceImpl.java b/src/main/java/com/dd/admin/business/note/service/impl/NoteServiceImpl.java new file mode 100644 index 0000000..0bc36fd --- /dev/null +++ b/src/main/java/com/dd/admin/business/note/service/impl/NoteServiceImpl.java @@ -0,0 +1,36 @@ +package com.dd.admin.business.note.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dd.admin.common.model.PageFactory; +import com.dd.admin.business.note.entity.Note; +import com.dd.admin.business.note.mapper.NoteMapper; +import com.dd.admin.business.note.service.NoteService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import com.dd.admin.business.note.domain.NoteVo; +import com.dd.admin.business.note.domain.NoteDto; +import java.util.List; + +/** + *

+ * 笔记表 服务实现类 + *

+ * + * @author 727869402@qq.com + * @since 2024-12-09 + */ +@Service +public class NoteServiceImpl extends ServiceImpl implements NoteService { + + @Override + public IPage selectNotePage(NoteDto noteDto) { + Page page = PageFactory.defaultPage(); + return baseMapper.selectNotePage(page,noteDto); + } + + @Override + public List selectNoteList(NoteDto noteDto) { + return baseMapper.selectNoteList(noteDto); + } +} diff --git a/src/main/resources/application-online.yml b/src/main/resources/application-online.yml index dbe78ca..c7838ff 100644 --- a/src/main/resources/application-online.yml +++ b/src/main/resources/application-online.yml @@ -16,7 +16,7 @@ spring: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 dd: - uploadPath: /www/store/upload/ + uploadPath: /www/xhs/upload/ knife4j: enable: true diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 42deb75..2a8b2fa 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,7 +7,7 @@ spring: datasource: driver-class-name: com.p6spy.engine.spy.P6SpyDriver - url: jdbc:p6spy:mysql://127.0.0.1:3306/dd?useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 + url: jdbc:p6spy:mysql://127.0.0.1:3306/ddxhs?useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8 username: root password: admin @@ -39,6 +39,7 @@ jwt: - "/favicon.ico" # 需要过滤的请求,不限方法 pattern: + - "/api/**" - "/upload/**" - "/doc.html" - "/swagger-resources/**" diff --git a/web/src/api/business/note/note.js b/web/src/api/business/note/note.js new file mode 100644 index 0000000..23e9694 --- /dev/null +++ b/web/src/api/business/note/note.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function getNotePage(params) { + return request({ + url: '/admin/note/page', + method: 'get', + params + }) +} + +export function getNoteList(params) { + return request({ + url: '/admin/note/list', + method: 'get', + params + }) +} + +export function addNote(data) { + return request({ + url: '/admin/note/add', + method: 'post', + data: data + }) +} + +export function editNote(data) { + return request({ + url: '/admin/note/update', + method: 'post', + data: data + }) +} + +export function deleteNote(noteId) { + return request({ + url: '/admin/note/delete/' + noteId, + method: 'get' + }) +} + diff --git a/web/src/views/business/note/addNote.vue b/web/src/views/business/note/addNote.vue new file mode 100644 index 0000000..aa3ee7e --- /dev/null +++ b/web/src/views/business/note/addNote.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/web/src/views/business/note/editNote.vue b/web/src/views/business/note/editNote.vue new file mode 100644 index 0000000..78adf1e --- /dev/null +++ b/web/src/views/business/note/editNote.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/web/src/views/business/note/noteList.vue b/web/src/views/business/note/noteList.vue new file mode 100644 index 0000000..cf0ef30 --- /dev/null +++ b/web/src/views/business/note/noteList.vue @@ -0,0 +1,363 @@ + + + + +