From 2e9466ad6b43785fa509f273c0a031c958e63c2d Mon Sep 17 00:00:00 2001 From: fanxb Date: Sat, 13 Jul 2019 17:54:03 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20[=E5=90=8E=E5=8F=B0]:?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B9=A6=E7=AD=BE=E6=8E=A5=E5=8F=A3]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BookmarkController.java | 30 ++++++++++ .../business/bookmark/dao/BookmarkDao.java | 21 +++++++ .../bookmark/entity/BatchDeleteBody.java | 18 ++++++ .../bookmark/service/BookmarkService.java | 58 +++++++++++++++---- .../mapper/bookmark-bookmarkMapper.xml | 19 ++++++ .../bookmark/common/entity/Bookmark.java | 4 +- 6 files changed, 137 insertions(+), 13 deletions(-) create mode 100644 bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/BatchDeleteBody.java diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkController.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkController.java index 42912e4..d7a40ac 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkController.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/controller/BookmarkController.java @@ -1,6 +1,8 @@ package com.fanxb.bookmark.business.bookmark.controller; +import com.fanxb.bookmark.business.bookmark.entity.BatchDeleteBody; import com.fanxb.bookmark.business.bookmark.service.BookmarkService; +import com.fanxb.bookmark.common.entity.Bookmark; import com.fanxb.bookmark.common.entity.Result; import com.fanxb.bookmark.common.util.UserContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -49,4 +51,32 @@ public class BookmarkController { return Result.success(null); } + /** + * Description: 新增一条书签 + * + * @param bookmark 书签信息 + * @return com.fanxb.bookmark.common.entity.Result + * @author fanxb + * @date 2019/7/12 17:28 + */ + @PutMapping("") + public Result addOne(@RequestBody Bookmark bookmark) { + bookmark = bookmarkService.addOne(bookmark); + return Result.success(bookmark); + } + + /** + * Description: 批量删除 + * + * @param body 批量删除表单 + * @return com.fanxb.bookmark.common.entity.Result + * @author fanxb + * @date 2019/7/12 17:28 + */ + @PostMapping("/batchDelete") + public Result batchDelete(@RequestBody BatchDeleteBody body) { + bookmarkService.batchDelete(UserContextHolder.get().getUserId(), body.getFolderIdList(), body.getBookmarkIdList()); + return Result.success(null); + } + } diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkDao.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkDao.java index a9842f6..f314ae9 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkDao.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/dao/BookmarkDao.java @@ -58,4 +58,25 @@ public interface BookmarkDao { * @date 2019/7/9 18:55 */ List getListByUserId(int userId); + + /** + * Description: 删除某用户某个书签文件下所有数据 + * + * @param userId 用户id + * @param folderId 文件夹id + * @return void + * @author fanxb + * @date 2019/7/12 14:13 + */ + void deleteUserFolder(@Param("userId") int userId, @Param("folderId") int folderId); + + /** + * Description: 删除用户书签 + * + * @param userId 用户id + * @param bookmarkIds 书签id + * @author fanxb + * @date 2019/7/12 17:24 + */ + void deleteUserBookmark(@Param("userId") int userId, @Param("bookmarkIds") List bookmarkIds); } diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/BatchDeleteBody.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/BatchDeleteBody.java new file mode 100644 index 0000000..ee8d68e --- /dev/null +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/BatchDeleteBody.java @@ -0,0 +1,18 @@ +package com.fanxb.bookmark.business.bookmark.entity; + + +import lombok.Data; + +import java.util.List; + +/** + * Description: + * + * @author fanxb + * @date 2019/7/12 18:34 + */ +@Data +public class BatchDeleteBody{ + private List folderIdList; + private List bookmarkIdList; +} \ No newline at end of file diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java index a9debb0..7c3d30e 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/BookmarkService.java @@ -2,6 +2,7 @@ package com.fanxb.bookmark.business.bookmark.service; import com.fanxb.bookmark.business.bookmark.dao.BookmarkDao; import com.fanxb.bookmark.common.entity.Bookmark; +import com.fanxb.bookmark.common.util.UserContextHolder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; @@ -73,27 +74,61 @@ public class BookmarkService { * @author fanxb * @date 2019/7/9 18:45 */ - public List getOneBookmarkTree(int userId) { + public Map> getOneBookmarkTree(int userId) { List list = bookmarkDao.getListByUserId(userId); Map> map = new HashMap<>(50); list.forEach(item -> { map.computeIfAbsent(item.getPath(), k -> new ArrayList<>()); map.get(item.getPath()).add(item); }); - List res = map.get(""); - res.forEach(item -> insertToBookmarkTree(item, map)); - return res; + return map; +// if (map.size() == 0) { +// return new ArrayList<>(); +// } else { +// List res = map.get(""); +// res.forEach(item -> insertToBookmarkTree(item, map)); +// return res; +// } } - private void insertToBookmarkTree(Bookmark node, Map> map) { - String path = node.getPath(); - String key = path + (path.length() == 0 ? "" : ".") + node.getBookmarkId().toString(); - if (map.containsKey(key)) { - node.setChildren(map.get(key)); - node.getChildren().forEach(item -> insertToBookmarkTree(item, map)); + /** + * Description: 批量删除书签 + * + * @param userId 用户id + * @param folderIdList 书签文件夹id list + * @param bookmarkIdList 书签id list + * @author fanxb + * @date 2019/7/12 14:09 + */ + @Transactional(rollbackFor = Exception.class) + public void batchDelete(int userId, List folderIdList, List bookmarkIdList) { + for (Integer item : folderIdList) { + bookmarkDao.deleteUserFolder(userId, item); + bookmarkIdList.add(item); } + bookmarkDao.deleteUserBookmark(userId, bookmarkIdList); } + /** + * Description: 详情 + * + * @param bookmark 插入一条记录 + * @return com.fanxb.bookmark.common.entity.Bookmark + * @author fanxb + * @date 2019/7/12 17:18 + */ + public Bookmark addOne(Bookmark bookmark) { + int userId = UserContextHolder.get().getUserId(); + Integer sort = bookmarkDao.selectMaxSort(userId, bookmark.getPath()); + bookmark.setSort(sort == null ? 1 : sort + 1); + bookmark.setUserId(userId); + bookmark.setCreateTime(System.currentTimeMillis()); + bookmark.setAddTime(bookmark.getCreateTime()); + bookmarkDao.insertOne(bookmark); + return bookmark; + } + + /** * Description: 处理html节点,解析出文件夹和书签 * @@ -124,7 +159,7 @@ public class BookmarkService { sortBase = 0; } } - String childPath = path.length() == 0 ? node.getBookmarkId().toString() : path + "." + node.getBookmarkId(); + String childPath = path + "." + node.getBookmarkId(); Elements children = ele.child(1).children(); for (int i = 0, size = children.size(); i < size; i++) { dealBookmark(userId, children.get(i), childPath, sortBase + i + 1); @@ -151,4 +186,5 @@ public class BookmarkService { return true; } } + } diff --git a/bookMarkService/business/bookmark/src/main/resources/mapper/bookmark-bookmarkMapper.xml b/bookMarkService/business/bookmark/src/main/resources/mapper/bookmark-bookmarkMapper.xml index 1add3f8..4610435 100644 --- a/bookMarkService/business/bookmark/src/main/resources/mapper/bookmark-bookmarkMapper.xml +++ b/bookMarkService/business/bookmark/src/main/resources/mapper/bookmark-bookmarkMapper.xml @@ -42,5 +42,24 @@ order by path, sort + + DELETE + FROM + bookmark + WHERE + userId = #{userId} + and path LIKE (SELECT a.path + FROM (SELECT CONCAT(path, '.', '${folderId}', '%') AS path + FROM bookmark + WHERE bookmarkId = #{folderId}) a); + + + + delete from bookmark where userId = #{userId} and bookmarkId in + + #{item} + + + \ No newline at end of file diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/Bookmark.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/Bookmark.java index 37da3c4..18c9d81 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/Bookmark.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/Bookmark.java @@ -24,8 +24,8 @@ public class Bookmark { private Integer userId; private String path; private String name; - private String url; - private String icon; + private String url=""; + private String icon=""; private Integer sort; private Long addTime; private Long createTime;