diff --git a/code/link56/link56-backend/src/main/java/cn/link56/common/config/AutoMetaObjectHandler.java b/code/link56/link56-backend/src/main/java/cn/link56/common/config/AutoMetaObjectHandler.java index 7a9f0fd9..66587596 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/common/config/AutoMetaObjectHandler.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/common/config/AutoMetaObjectHandler.java @@ -17,6 +17,7 @@ public class AutoMetaObjectHandler implements MetaObjectHandler { if (ObjectUtils.isNotEmpty(userId) && userId > 0){ this.strictInsertFill(metaObject, "createBy", Long.class, userId); + this.strictUpdateFill(metaObject, "updateBy", Long.class, userId); } Date date = new Date(); diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostService.java b/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostService.java deleted file mode 100644 index d872c1c2..00000000 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostService.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.link56.forum.service; - -import cn.link56.forum.mapper.PostMapper; -import cn.link56.forum.model.po.PostPO; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -@Service -public class PostService extends ServiceImpl { - @Resource - private PostMapper postMapper; -} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostTagService.java b/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostTagService.java deleted file mode 100644 index 8cf4ee11..00000000 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostTagService.java +++ /dev/null @@ -1,14 +0,0 @@ -package cn.link56.forum.service; - -import cn.link56.forum.mapper.PostTagMapper; -import cn.link56.forum.model.po.PostTagPO; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - -@Service -public class PostTagService extends ServiceImpl { - @Resource - private PostTagMapper postTagMapper; -} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostController.java b/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostController.java new file mode 100644 index 00000000..b4ca768f --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostController.java @@ -0,0 +1,27 @@ +package cn.link56.post.controller; + +import cn.link56.common.Result; +import cn.link56.post.model.dto.PostAddDTO; +import cn.link56.post.model.vo.PostEditVO; +import cn.link56.post.model.vo.PostTagVO; +import cn.link56.post.service.PostService; +import cn.link56.post.service.PostTagService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/post") +public class PostController { + + @Resource + private PostService postService; + + @PostMapping("/add") + public Result addPost(@RequestBody @Validated PostAddDTO postAddDTO) { + PostEditVO postEditVO = postService.addPost(postAddDTO); + return Result.success(postEditVO); + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostTagController.java b/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostTagController.java new file mode 100644 index 00000000..317a1a10 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/controller/PostTagController.java @@ -0,0 +1,27 @@ +package cn.link56.post.controller; + +import cn.link56.common.Result; +import cn.link56.post.mapper.PostTagMapper; +import cn.link56.post.model.vo.PostTagVO; +import cn.link56.post.service.PostTagService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +@RestController +@RequestMapping("/post/tag") +public class PostTagController { + @Resource + private PostTagService postTagService; + + @GetMapping + public Result> listTags(){ + List list = postTagService.listTags(); + + return Result.success(list); + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostCommentMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostCommentMapper.java similarity index 69% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostCommentMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostCommentMapper.java index 21c3ca43..aad07bca 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostCommentMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostCommentMapper.java @@ -1,6 +1,6 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostCommentPO; +import cn.link56.post.model.po.PostCommentPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostFavoriteMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostFavoriteMapper.java similarity index 69% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostFavoriteMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostFavoriteMapper.java index a4628aed..f45db9c7 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostFavoriteMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostFavoriteMapper.java @@ -1,6 +1,6 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostFavoritePO; +import cn.link56.post.model.po.PostFavoritePO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostLikeMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostLikeMapper.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostLikeMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostLikeMapper.java index 0fc96c68..36a5aefe 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostLikeMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostLikeMapper.java @@ -1,6 +1,6 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostLikePO; +import cn.link56.post.model.po.PostLikePO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostMapper.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostMapper.java index 5f91de0d..75192c2b 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostMapper.java @@ -1,6 +1,6 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostPO; +import cn.link56.post.model.po.PostPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostTagMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostTagMapper.java similarity index 55% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostTagMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostTagMapper.java index bdf44479..6f8db168 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostTagMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostTagMapper.java @@ -1,9 +1,12 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostTagPO; +import cn.link56.post.model.po.PostTagPO; +import cn.link56.post.model.vo.PostTagVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface PostTagMapper extends BaseMapper { } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostViewMapper.java b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostViewMapper.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostViewMapper.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostViewMapper.java index 6170ad4f..bbc2764a 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/mapper/PostViewMapper.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/mapper/PostViewMapper.java @@ -1,6 +1,6 @@ -package cn.link56.forum.mapper; +package cn.link56.post.mapper; -import cn.link56.forum.model.po.PostViewPO; +import cn.link56.post.model.po.PostViewPO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/model/dto/PostAddDTO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/dto/PostAddDTO.java new file mode 100644 index 00000000..ca3941f8 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/dto/PostAddDTO.java @@ -0,0 +1,24 @@ +package cn.link56.post.model.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PostAddDTO { + @NotBlank(message = "帖子标题不能为空") + private String title; + @NotBlank(message = "帖子内容不能为空") + private String content; + @NotBlank(message = "帖子摘要不能为空") + private String summary; + private String cover; + private List tags; + + private Integer status; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostCommentPO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostCommentPO.java similarity index 96% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostCommentPO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostCommentPO.java index 631bf1c4..2b16d567 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostCommentPO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostCommentPO.java @@ -1,4 +1,4 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostFavoritePO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostFavoritePO.java similarity index 95% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostFavoritePO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostFavoritePO.java index 6db896c5..ab9d591f 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostFavoritePO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostFavoritePO.java @@ -1,4 +1,4 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostLikePO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostLikePO.java similarity index 95% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostLikePO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostLikePO.java index 2bd781c4..c113b40d 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostLikePO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostLikePO.java @@ -1,4 +1,4 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostPO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostPO.java similarity index 66% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostPO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostPO.java index 42caceed..c8aed793 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostPO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostPO.java @@ -1,12 +1,16 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import net.sf.jsqlparser.expression.DateTimeLiteralExpression; + +import java.util.Date; @Data @AllArgsConstructor @@ -28,33 +32,39 @@ public class PostPO { @TableField("b_summary") private String summary; - @TableField("b_tags") - private String tags; + @TableField("b_tag") + private String tag; @TableField("b_cover") private String cover; + @TableField("b_publish_time") + private String publishTime; + + @TableField("b_status") + private Integer status; + @TableField( - value = "b_create_user_id", + value = "b_create_by", fill = FieldFill.INSERT ) - private Long createUserId; + private Long createBy; @TableField( value = "b_create_time", fill = FieldFill.INSERT ) - private Long createTime; + private Date createTime; @TableField( - value = "b_update_user_id", + value = "b_update_by", fill = FieldFill.INSERT_UPDATE ) - private Long updateUserId; + private Long updateBy; @TableField( value = "b_update_time", fill = FieldFill.INSERT_UPDATE ) - private Long updateTime; + private Date updateTime; } diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostTagPO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostTagPO.java similarity index 93% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostTagPO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostTagPO.java index 34830a0c..3785d1b5 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostTagPO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostTagPO.java @@ -1,4 +1,4 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostViewPO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostViewPO.java similarity index 95% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostViewPO.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostViewPO.java index d1417b84..018401be 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/model/po/PostViewPO.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/po/PostViewPO.java @@ -1,4 +1,4 @@ -package cn.link56.forum.model.po; +package cn.link56.post.model.po; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostEditVO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostEditVO.java new file mode 100644 index 00000000..71207ccf --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostEditVO.java @@ -0,0 +1,24 @@ +package cn.link56.post.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PostEditVO { + private Long id; + private String title; + private String content; + private String summary; + private String cover; + private List tags; + private Integer status; + private Date publishTime; + private Date updateTime; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostTagVO.java b/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostTagVO.java new file mode 100644 index 00000000..49cb9678 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/model/vo/PostTagVO.java @@ -0,0 +1,13 @@ +package cn.link56.post.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PostTagVO { + private Long id; + private String name; +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostCommentService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostCommentService.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java index 70a0bb2b..05eb4b04 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostCommentService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostCommentService.java @@ -1,7 +1,7 @@ -package cn.link56.forum.service; +package cn.link56.post.service; -import cn.link56.forum.mapper.PostCommentMapper; -import cn.link56.forum.model.po.PostCommentPO; +import cn.link56.post.mapper.PostCommentMapper; +import cn.link56.post.model.po.PostCommentPO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostFavoriteService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostFavoriteService.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostFavoriteService.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/service/PostFavoriteService.java index 01e84e3c..eafac83d 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostFavoriteService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostFavoriteService.java @@ -1,7 +1,7 @@ -package cn.link56.forum.service; +package cn.link56.post.service; -import cn.link56.forum.mapper.PostFavoriteMapper; -import cn.link56.forum.model.po.PostFavoritePO; +import cn.link56.post.mapper.PostFavoriteMapper; +import cn.link56.post.model.po.PostFavoritePO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostLikeService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostLikeService.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostLikeService.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/service/PostLikeService.java index 15e2c958..402d71c7 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostLikeService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostLikeService.java @@ -1,7 +1,7 @@ -package cn.link56.forum.service; +package cn.link56.post.service; -import cn.link56.forum.mapper.PostLikeMapper; -import cn.link56.forum.model.po.PostLikePO; +import cn.link56.post.mapper.PostLikeMapper; +import cn.link56.post.model.po.PostLikePO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostService.java new file mode 100644 index 00000000..7fc80e84 --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostService.java @@ -0,0 +1,39 @@ +package cn.link56.post.service; + +import cn.link56.common.context.UserContext; +import cn.link56.post.mapper.PostMapper; +import cn.link56.post.model.dto.PostAddDTO; +import cn.link56.post.model.po.PostPO; +import cn.link56.post.model.vo.PostEditVO; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; + +@Service +public class PostService extends ServiceImpl { + @Resource + private PostMapper postMapper; + + @Transactional + public PostEditVO addPost(PostAddDTO postAddDTO) { + PostPO postPO = new PostPO(); + + BeanUtils.copyProperties(postAddDTO, postPO); + + postPO.setTag(StringUtils.join(postAddDTO.getTags(), ",")); + postPO.setCompanyId(UserContext.getCompanyId()); + + postMapper.insert(postPO); + + PostEditVO postEditVO = new PostEditVO(); + + BeanUtils.copyProperties(postPO, postEditVO); + postEditVO.setTags(postAddDTO.getTags()); + + return postEditVO; + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostTagService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostTagService.java new file mode 100644 index 00000000..42dd643b --- /dev/null +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostTagService.java @@ -0,0 +1,33 @@ +package cn.link56.post.service; + +import cn.link56.post.mapper.PostTagMapper; +import cn.link56.post.model.po.PostTagPO; +import cn.link56.post.model.vo.PostTagVO; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class PostTagService extends ServiceImpl { + @Resource + private PostTagMapper postTagMapper; + + public List listTags() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PostTagPO::getCanuse,"1"); + + List postTagPOS = postTagMapper.selectList(wrapper); + + return postTagPOS.stream().map(postTagPO -> { + PostTagVO postTagVO = new PostTagVO(); + BeanUtils.copyProperties(postTagPO, postTagVO); + + return postTagVO; + }).collect(Collectors.toList()); + } +} diff --git a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostViewService.java b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostViewService.java similarity index 70% rename from code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostViewService.java rename to code/link56/link56-backend/src/main/java/cn/link56/post/service/PostViewService.java index 1c29cea7..19961558 100644 --- a/code/link56/link56-backend/src/main/java/cn/link56/forum/service/PostViewService.java +++ b/code/link56/link56-backend/src/main/java/cn/link56/post/service/PostViewService.java @@ -1,7 +1,7 @@ -package cn.link56.forum.service; +package cn.link56.post.service; -import cn.link56.forum.mapper.PostViewMapper; -import cn.link56.forum.model.po.PostViewPO; +import cn.link56.post.mapper.PostViewMapper; +import cn.link56.post.model.po.PostViewPO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; diff --git a/code/link56/link56-backend/src/main/resources/application.yml b/code/link56/link56-backend/src/main/resources/application.yml index 9468e50c..fb7e6391 100644 --- a/code/link56/link56-backend/src/main/resources/application.yml +++ b/code/link56/link56-backend/src/main/resources/application.yml @@ -16,6 +16,9 @@ logging: spring: profiles: active: dev + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 mail: host: smtp.163.com #邮箱服务器地址 username: hi_itao@163.com #邮箱账号 diff --git a/code/link56/link56-frontend-new/package.json b/code/link56/link56-frontend-new/package.json index af2fc5a7..d7f3900c 100644 --- a/code/link56/link56-frontend-new/package.json +++ b/code/link56/link56-frontend-new/package.json @@ -12,10 +12,12 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.3.2", + "@vueuse/core": "^14.1.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.13.2", "dayjs": "^1.11.19", + "echarts": "^6.0.0", "element-plus": "^2.12.0", "pinia": "^3.0.4", "pinia-plugin-persistedstate": "^4.7.1", diff --git a/code/link56/link56-frontend-new/pnpm-lock.yaml b/code/link56/link56-frontend-new/pnpm-lock.yaml index 03856b4b..0fb75e08 100644 --- a/code/link56/link56-frontend-new/pnpm-lock.yaml +++ b/code/link56/link56-frontend-new/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@element-plus/icons-vue': specifier: ^2.3.2 version: 2.3.2(vue@3.5.25(typescript@5.9.3)) + '@vueuse/core': + specifier: ^14.1.0 + version: 14.1.0(vue@3.5.25(typescript@5.9.3)) '@wangeditor/editor': specifier: ^5.1.23 version: 5.1.23 @@ -23,6 +26,9 @@ importers: dayjs: specifier: ^1.11.19 version: 1.11.19 + echarts: + specifier: ^6.0.0 + version: 6.0.0 element-plus: specifier: ^2.12.0 version: 2.12.0(vue@3.5.25(typescript@5.9.3)) @@ -496,42 +502,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -596,67 +596,56 @@ packages: resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.53.3': resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.53.3': resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.53.3': resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.53.3': resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.53.3': resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.53.3': resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.53.3': resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.53.3': resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.53.3': resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.53.3': resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-openharmony-arm64@4.53.3': resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} @@ -732,6 +721,9 @@ packages: '@types/web-bluetooth@0.0.16': resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@typescript-eslint/eslint-plugin@8.49.0': resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -897,12 +889,25 @@ packages: vue: optional: true + '@vueuse/core@14.1.0': + resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/core@9.13.0': resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + '@vueuse/metadata@14.1.0': + resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + '@vueuse/metadata@9.13.0': resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + '@vueuse/shared@14.1.0': + resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + peerDependencies: + vue: ^3.5.0 + '@vueuse/shared@9.13.0': resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} @@ -1203,6 +1208,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + echarts@6.0.0: + resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==} + electron-to-chromium@1.5.267: resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} @@ -2277,6 +2285,9 @@ packages: peerDependencies: typescript: '>=4.0.0' + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2474,6 +2485,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zrender@6.0.0: + resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -2974,6 +2988,8 @@ snapshots: '@types/web-bluetooth@0.0.16': {} + '@types/web-bluetooth@0.0.21': {} + '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -3213,6 +3229,13 @@ snapshots: typescript: 5.9.3 vue: 3.5.25(typescript@5.9.3) + '@vueuse/core@14.1.0(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.1.0 + '@vueuse/shared': 14.1.0(vue@3.5.25(typescript@5.9.3)) + vue: 3.5.25(typescript@5.9.3) + '@vueuse/core@9.13.0(vue@3.5.25(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.16 @@ -3223,8 +3246,14 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/metadata@14.1.0': {} + '@vueuse/metadata@9.13.0': {} + '@vueuse/shared@14.1.0(vue@3.5.25(typescript@5.9.3))': + dependencies: + vue: 3.5.25(typescript@5.9.3) + '@vueuse/shared@9.13.0(vue@3.5.25(typescript@5.9.3))': dependencies: vue-demi: 0.14.10(vue@3.5.25(typescript@5.9.3)) @@ -3521,6 +3550,11 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + echarts@6.0.0: + dependencies: + tslib: 2.3.0 + zrender: 6.0.0 + electron-to-chromium@1.5.267: {} element-plus@2.12.0(vue@3.5.25(typescript@5.9.3)): @@ -4818,6 +4852,8 @@ snapshots: picomatch: 4.0.3 typescript: 5.9.3 + tslib@2.3.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -4975,4 +5011,8 @@ snapshots: yocto-queue@0.1.0: {} + zrender@6.0.0: + dependencies: + tslib: 2.3.0 + zwitch@2.0.4: {} diff --git a/code/link56/link56-frontend-new/src/components/ImageUploadCard.vue b/code/link56/link56-frontend-new/src/components/ImageUploadCard.vue new file mode 100644 index 00000000..292b63e4 --- /dev/null +++ b/code/link56/link56-frontend-new/src/components/ImageUploadCard.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/code/link56/link56-frontend-new/src/components/wang-editor/index.vue b/code/link56/link56-frontend-new/src/components/wang-editor/index.vue index f1462dea..13480ccc 100644 --- a/code/link56/link56-frontend-new/src/components/wang-editor/index.vue +++ b/code/link56/link56-frontend-new/src/components/wang-editor/index.vue @@ -67,11 +67,11 @@ onMounted(() => { }) const toolbarClass = computed(() => { - return props.mode === 'view' ? 'toolbar-view' : 'toolbar-edit' + return props.mode === 'view' ? 'wang-toolbar-view' : 'wang-toolbar-edit' }) const editorClass = computed(() => { - return props.mode === 'view' ? 'editor-view' : 'editor-edit' + return props.mode === 'view' ? 'wang-editor-view' : 'wang-editor-edit' }) // 编辑器实例,必须用 shallowRef @@ -210,13 +210,13 @@ function doGenerateDirectory() {