添加分类显示回收站 稍后看
This commit is contained in:
@ -96,9 +96,23 @@ public class SqBookmark
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date createTime;
|
||||
|
||||
/**tag名称串**/
|
||||
@Column(name = "tag_name_all")
|
||||
private String tagNameAll;
|
||||
|
||||
/**是否稍后读 0不是 1是**/
|
||||
@Column(name = "see_you_later")
|
||||
private Integer seeYouLater;
|
||||
|
||||
@Transient
|
||||
private Long parentId;
|
||||
|
||||
/** 书签的类型 星标 稍后看 最新书签 **/
|
||||
@Transient
|
||||
private String type;
|
||||
/** 排序的方式 **/
|
||||
@Transient
|
||||
private String sort;
|
||||
|
||||
private List<Map<String,Object>> sqTags;
|
||||
|
||||
|
@ -110,4 +110,14 @@ public interface SqBookmarkMapper extends MyMapper<SqBookmark>
|
||||
* 获取重复的标签
|
||||
*/
|
||||
List<SqBookmark> bookmarkRepetition(Long userId);
|
||||
|
||||
/**
|
||||
* @Description: 查询 最新 稍后读 星标
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark);
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.ruoyi.bookmark.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.ruoyi.bookmark.domain.SqBookmark;
|
||||
import com.ruoyi.bookmark.domain.SqMenu;
|
||||
import com.ruoyi.common.mybatisMapper.MyMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
@ -128,4 +130,5 @@ public interface SqMenuMapper extends MyMapper<SqMenu>
|
||||
public int countByMenuUplinkSeriesAndMenu(@Param("menuUplinkSeries")String menuUplinkSeries, @Param("menuId")Long menuId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -148,4 +148,26 @@ public interface ISqBookmarkService
|
||||
* 重新计算目录下的书签数量和 目录的结构
|
||||
*/
|
||||
public void bookmarkMenuCount(Long userId,Long menuId);
|
||||
|
||||
/**
|
||||
* @Description: 导出书签文件html功能
|
||||
*
|
||||
* @param userId
|
||||
* @return StringBuilder
|
||||
* @Date
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
StringBuilder exportToHtml(Long userId);
|
||||
|
||||
/**
|
||||
* @Description: 查询书签管理列表 聚合>> 星标 稍后看 最新书签
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
* @Date
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark);
|
||||
}
|
||||
|
@ -8,6 +8,9 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSON;
|
||||
import cn.hutool.json.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.ruoyi.bookmark.domain.SqBookmarkTag;
|
||||
|
||||
@ -29,7 +32,9 @@ import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.bookmark.mapper.SqBookmarkMapper;
|
||||
import com.ruoyi.bookmark.domain.SqBookmark;
|
||||
import com.ruoyi.bookmark.service.ISqBookmarkService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import tk.mybatis.mapper.entity.Example;
|
||||
import tk.mybatis.mapper.genid.GenId;
|
||||
|
||||
|
||||
/**
|
||||
@ -87,7 +92,9 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
@Override
|
||||
public SqBookmark selectSqBookmarkById(Long bookmarkId)
|
||||
{
|
||||
return sqBookmarkMapper.selectSqBookmarkById(bookmarkId);
|
||||
SqBookmark sqBookmark = sqBookmarkMapper.selectSqBookmarkById(bookmarkId);
|
||||
sqBookmark.setSqTags(sqBookmarkTagMapper.selectSqTaListById(sqBookmark.getBookmarkId()));
|
||||
return sqBookmark;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -109,8 +116,11 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int insertSqBookmark(SqBookmark sqBookmark)
|
||||
{
|
||||
JSONArray objects = new JSONArray();
|
||||
JSONObject json = null;
|
||||
//获取官网urls
|
||||
try {
|
||||
sqBookmark.setUrls(ImportHtml.Urlutils(new URL(sqBookmark.getUrl())));
|
||||
@ -122,16 +132,13 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
}
|
||||
//转换传入的父级ID
|
||||
sqBookmark.setMenuId(sqBookmark.getParentId());
|
||||
int i= sqBookmarkMapper.insertSqBookmark(sqBookmark);
|
||||
|
||||
//给对应目录 +1 并且设置为目录
|
||||
sqMenuMapper.updateCountAdd(new Long[]{sqBookmark.getMenuId()},1);
|
||||
|
||||
|
||||
//传入的标签
|
||||
List<Map<String, Object>> listmap = sqBookmark.getSqTags();
|
||||
if (listmap==null||listmap.isEmpty()||listmap.size()==0){
|
||||
return i;
|
||||
if (listmap==null||listmap.isEmpty()||listmap.size()==0||listmap.size()>5){
|
||||
return sqBookmarkMapper.insertSqBookmark(sqBookmark);
|
||||
}
|
||||
|
||||
//给文章添加标签
|
||||
@ -140,30 +147,24 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
SqBookmarkTag bookamrktag = new SqBookmarkTag();
|
||||
|
||||
for (Map<String, Object> map : listmap) {
|
||||
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||
//新增书签
|
||||
if (Integer.parseInt(String.valueOf(map.get("tagId"))) < 0) {
|
||||
Map<String, Object> tagmap = iSqTagService.addtag(String.valueOf(map.get("name")), sqBookmark.getUserid());
|
||||
for (Map.Entry<String, Object> tag : tagmap.entrySet()) {
|
||||
bookmarkTag.put(Long.valueOf(tagmap.get("tagId").toString()),sqBookmark.getBookmarkId());
|
||||
}
|
||||
}else {
|
||||
//原本就有的 标签
|
||||
bookmarkTag.put(Long.valueOf(map.get("tagId").toString()),sqBookmark.getBookmarkId());
|
||||
json.put("name",map.get("name").toString());
|
||||
json.put("tagId",map.get("tagId").toString());
|
||||
objects.add(json);
|
||||
}
|
||||
}
|
||||
}
|
||||
//删除之前的标签
|
||||
SqBookmarkTag sqBookmarkTag=new SqBookmarkTag();
|
||||
sqBookmarkTag.setBookmarkId(sqBookmark.getBookmarkId());
|
||||
sqBookmarkTagMapper.delete(sqBookmarkTag);
|
||||
//给文章添加书签
|
||||
for (Map.Entry<Long,Long> tag:bookmarkTag.entrySet()){
|
||||
bookamrktag.setBookmarkId(tag.getValue());
|
||||
bookamrktag.setTagId(tag.getKey());
|
||||
sqBookmarkTagMapper.insertSqBookmarkTag(bookamrktag);
|
||||
}
|
||||
return i;
|
||||
//TAG书签串
|
||||
sqBookmark.setTagNameAll(objects.toString());
|
||||
return sqBookmarkMapper.insertSqBookmark(sqBookmark);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -173,19 +174,12 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int updateSqBookmark(SqBookmark sqBookmark) {
|
||||
// //删除的书签ID
|
||||
// String deletetag = "";
|
||||
// //新增的书签ID
|
||||
// String addtag = "";
|
||||
|
||||
//未修改前的信息
|
||||
SqBookmark sqbm=sqBookmarkMapper.selectSqBookmarkById(sqBookmark.getBookmarkId());
|
||||
//传入的标签
|
||||
int i =sqBookmarkMapper.updateSqBookmark(sqBookmark);
|
||||
List<Map<String, Object>> listmap = sqBookmark.getSqTags();
|
||||
if (listmap==null||listmap.isEmpty()||listmap.size()==0){
|
||||
return i;
|
||||
}
|
||||
|
||||
|
||||
//是否移动目录
|
||||
if (!sqbm.getMenuId().toString().equals(sqBookmark.getMenuId().toString())){
|
||||
@ -194,28 +188,35 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
//新目录 +1
|
||||
sqMenuMapper.updateCountAdd(new Long[]{sqBookmark.getMenuId()},1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
List<Map<String, Object>> listmap = sqBookmark.getSqTags();
|
||||
if (listmap==null||listmap.isEmpty()||listmap.size()==0||listmap.size()>5){
|
||||
return sqBookmarkMapper.updateSqBookmark(sqBookmark); //修改书签信息
|
||||
}
|
||||
JSONArray objects = new JSONArray();
|
||||
JSONObject json = null;
|
||||
//给文章添加标签
|
||||
HashMap<Long,Long> bookmarkTag=new HashMap<Long,Long>();
|
||||
//文章添加书签
|
||||
SqBookmarkTag bookamrktag = new SqBookmarkTag();
|
||||
|
||||
for (Map<String, Object> map : listmap) {
|
||||
for (Map.Entry<String, Object> entry : map.entrySet()) {
|
||||
json = new JSONObject();
|
||||
//新增书签
|
||||
if (Integer.parseInt(String.valueOf(map.get("tagId"))) < 0) {
|
||||
Map<String, Object> tagmap = iSqTagService.addtag(String.valueOf(map.get("name")), sqBookmark.getUserid());
|
||||
for (Map.Entry<String, Object> tag : tagmap.entrySet()) {
|
||||
Map<String, Object> tagmap = iSqTagService.addtag(map.get("name").toString(), sqBookmark.getUserid());
|
||||
bookmarkTag.put(Long.valueOf(tagmap.get("tagId").toString()),sqBookmark.getBookmarkId());
|
||||
}
|
||||
json.put("name",map.get("name").toString());
|
||||
json.put("tagId",map.get("tagId").toString());
|
||||
objects.add(json);
|
||||
}else {
|
||||
//原本就有的 标签
|
||||
//修改前的书签 不包含已移除的
|
||||
if(!map.get("name").equals("TAGDELETE")){
|
||||
json.put("name",map.get("name").toString());
|
||||
json.put("tagId",map.get("tagId").toString());
|
||||
objects.add(json);
|
||||
bookmarkTag.put(Long.valueOf(map.get("tagId").toString()),sqBookmark.getBookmarkId());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
//删除之前的标签
|
||||
SqBookmarkTag sqBookmarkTag=new SqBookmarkTag();
|
||||
@ -228,9 +229,10 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
bookamrktag.setTagId(tag.getKey());
|
||||
sqBookmarkTagMapper.insertSqBookmarkTag(bookamrktag);
|
||||
}
|
||||
//标签名称串
|
||||
sqBookmark.setTagNameAll(objects.toString());
|
||||
return sqBookmarkMapper.updateSqBookmark(sqBookmark); //修改书签信息
|
||||
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -418,5 +420,105 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 导出书签文件html功能
|
||||
*
|
||||
* @param userId
|
||||
* @return StringBuilder
|
||||
* @Date
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public StringBuilder exportToHtml(Long userId) {
|
||||
|
||||
SqMenu sqMenu=new SqMenu();
|
||||
sqMenu.setUserId(userId);
|
||||
SqBookmark sqBookmark = new SqBookmark();
|
||||
sqBookmark.setUserid(userId);
|
||||
//目录
|
||||
List<SqMenu> menuList = sqMenuMapper.selectSqMenuList(sqMenu);
|
||||
Map<Long, List<SqMenu>> mapMenu = menuList.stream().collect(Collectors.groupingBy(SqMenu::getParentId));
|
||||
//书签
|
||||
List<SqBookmark> bookMarkList = sqBookmarkMapper.selectSqBookmarkList(sqBookmark);
|
||||
Map<Long, List<SqBookmark>> mapBookMark = bookMarkList.stream().collect(Collectors.groupingBy(SqBookmark::getMenuId));
|
||||
|
||||
List<SqMenu> sqMenuList = mapMenu.get(0L);
|
||||
StringBuilder str = new StringBuilder();
|
||||
str.append("<!DOCTYPE NETSCAPE-Bookmark-file-1>\n" +
|
||||
"<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n" +
|
||||
"<TITLE>Bookmarks</TITLE>\n" +
|
||||
"<H1>Bookmarks</H1>");
|
||||
str.append("<DL>\n");
|
||||
str.append(traverseFile_recursion(sqMenuList,str,mapBookMark,mapMenu));
|
||||
str.append("</DL>\n");
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @Description:递归书签导出功能
|
||||
*
|
||||
* @param * @param sqMenuList
|
||||
* @param str
|
||||
* @param mapBookMark
|
||||
* @param mapMenu
|
||||
* @return java.lang.StringBuilder
|
||||
* @Date
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
public StringBuilder traverseFile_recursion (List<SqMenu> sqMenuList,StringBuilder str,Map<Long, List<SqBookmark>> mapBookMark,Map<Long, List<SqMenu>> mapMenu) {
|
||||
|
||||
if (sqMenuList != null && !sqMenuList.isEmpty()) {
|
||||
for (SqMenu f : sqMenuList) {
|
||||
str.append("<DT><H3 ADD_DATE=\"1584277207\" LAST_MODIFIED=\"0\">").append(f.getMenuName()).append("</H3>\n");
|
||||
str.append("<DL>\n");
|
||||
List<SqBookmark> bookmarksList = mapBookMark.get(f.getMenuId());
|
||||
if (bookmarksList != null && !bookmarksList.isEmpty()) {
|
||||
for (SqBookmark b : bookmarksList) {
|
||||
str.append("<DT><A HREF=\""+b.getUrl()+"\" TARGET=\"_blank\">"+b.getTitle()+"</A>\n");
|
||||
}
|
||||
}
|
||||
traverseFile_recursion(mapMenu.get(f.getMenuId()),str,mapBookMark,mapMenu);
|
||||
str.append("</DL>\n");
|
||||
}
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 查询书签管理列表 聚合>> 星标 稍后看 最新书签
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
* @Date
|
||||
* @author: wanghao
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark) {
|
||||
|
||||
SqBookmark searchBookmark = new SqBookmark();
|
||||
searchBookmark.setUserid(sqBookmark.getUserid());
|
||||
|
||||
if(sqBookmark.getType().equals(Const.RECYCLE)){
|
||||
searchBookmark.setIdelete(Const.BKNOTDELETE);//删除的
|
||||
}else{
|
||||
searchBookmark.setIdelete(Const.BKDELETE);//未删除的
|
||||
}
|
||||
|
||||
if (sqBookmark.getType().equals(Const.NEWEST)){//最新的
|
||||
//无处理
|
||||
}else if(sqBookmark.getType().equals(Const.ASTERISK)){
|
||||
searchBookmark.setBookmarkStar(1);
|
||||
}else if(sqBookmark.getType().equals(Const.SEEYOULATER)){//稍后看
|
||||
searchBookmark.setSeeYouLater(1);
|
||||
}
|
||||
return sqBookmarkMapper.listByUserAndPolymerization(searchBookmark);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ public class SqTagServiceImpl implements ISqTagService
|
||||
}else {
|
||||
//不存在 >>创建 返回ID
|
||||
sqTagMapper.insertSqTag(sqTag);
|
||||
logger.debug("传入的新标签 tagid="+sqTag.getId());
|
||||
// logger.debug("传入的新标签 tagid="+sqTag.getId());
|
||||
map.put("tagId",sqTag.getId());
|
||||
}
|
||||
return map;
|
||||
|
@ -16,22 +16,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="menuId" column="menu_id" />
|
||||
<result property="zcount" column="zcount" />
|
||||
<result property="bookmarkStar" column="bookmark_star" />
|
||||
<result property="tagNameAll" column="tag_name_all" />
|
||||
<result property="idelete" column="idelete" />
|
||||
<result property="start" column="start" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="seeYouLater" column="see_you_later" />
|
||||
<!-- <collection property="sqTags"-->
|
||||
<!-- javaType="java.util.ArrayList"-->
|
||||
<!-- ofType="java.util.Map"-->
|
||||
<!-- select="com.ruoyi.bookmark.mapper.SqBookmarkTagMapper.selectSqTaListById"-->
|
||||
<!-- column="bookmark_id">-->
|
||||
|
||||
|
||||
<!-- </collection>-->
|
||||
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSqBookmarkVo">
|
||||
select bookmark_id, userid, title, url, urls, description, image, Label, menu_id, zcount, IDelete, Start, create_time,bookmark_star from sq_bookmark
|
||||
select bookmark_id, userid, title, url, urls, description, image, Label, menu_id, zcount, IDelete, Start, create_time,bookmark_star,tag_name_all from sq_bookmark
|
||||
</sql>
|
||||
|
||||
<select id="selectSqBookmarkList" parameterType="SqBookmark" resultMap="SqBookmarkResult">
|
||||
@ -70,6 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="zcount != null">zcount,</if>
|
||||
<if test="idelete != null">idelete,</if>
|
||||
<if test="start != null">start,</if>
|
||||
<if test="tagNameAll != null">tag_name_all,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
@ -84,6 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="zcount != null">#{zcount},</if>
|
||||
<if test="idelete != null">#{idelete},</if>
|
||||
<if test="start != null">#{start},</if>
|
||||
<if test="tagNameAll != null">#{tagNameAll},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
@ -102,6 +104,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<if test="zcount != null">zcount = #{zcount},</if>
|
||||
<if test="idelete != null">idelete = #{idelete},</if>
|
||||
<if test="start != null">start = #{start},</if>
|
||||
<if test="tagNameAll != null">tag_name_all = #{tagNameAll},</if>
|
||||
<if test="bookmarkStar != null">bookmark_star = #{bookmarkStar},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
</trim>
|
||||
@ -173,4 +176,35 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
</otherwise>
|
||||
</choose>
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="listByUserAndPolymerization" parameterType="SqBookmark" resultMap="SqBookmarkResult">
|
||||
<include refid="selectSqBookmarkVo"/>
|
||||
<where>
|
||||
<if test="userid != null "> and userid = #{userid}</if>
|
||||
<if test="idelete != null "> and idelete = #{idelete}</if>
|
||||
<if test="bookmarkStar != null "> and bookmark_star = #{bookmarkStar}</if>
|
||||
<if test="seeYouLater != null "> and see_you_later = #{seeYouLater}</if>
|
||||
order by
|
||||
<choose>
|
||||
<when test="sort == 0">
|
||||
create_time desc
|
||||
</when>
|
||||
<when test="sort == 1">
|
||||
create_time asc
|
||||
</when>
|
||||
<when test="sort == 2">
|
||||
CONVERT(title USING GBK) asc
|
||||
</when>
|
||||
<when test="sort == 3">
|
||||
CONVERT(title USING GBK) desc
|
||||
</when>
|
||||
<otherwise>
|
||||
create_time desc
|
||||
</otherwise>
|
||||
</choose>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
|
Reference in New Issue
Block a user