标签管理

This commit is contained in:
WangHao 2021-10-10 00:21:47 +08:00
parent f1bf8f2df4
commit e4213193fe
11 changed files with 263 additions and 40 deletions

View File

@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.ruoyi.bookmark.domain.SqBookmark; import com.ruoyi.bookmark.domain.SqBookmark;
import com.ruoyi.bookmark.pojo.SqBookmarkReq;
import com.ruoyi.bookmark.service.ISqBookmarkService; import com.ruoyi.bookmark.service.ISqBookmarkService;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.bookmarkhtml.ImportHtml; import com.ruoyi.common.utils.bookmarkhtml.ImportHtml;
@ -13,14 +14,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
@ -126,7 +120,6 @@ public class SqBookmarkController extends BaseController
/** /**
* 查询书签管理列表 聚合>> 星标 稍后看 最新书签 * 查询书签管理列表 聚合>> 星标 稍后看 最新书签
*/ */
// @PreAuthorize("@ss.hasPermi('bookmark:bookmark:list')")
@GetMapping("/listByUserAndPolymerization") @GetMapping("/listByUserAndPolymerization")
public TableDataInfo listByUserAndPolymerization(SqBookmark sqBookmark) public TableDataInfo listByUserAndPolymerization(SqBookmark sqBookmark)
{ {
@ -207,4 +200,15 @@ public class SqBookmarkController extends BaseController
{ {
return toAjax(sqBookmarkService.deleteSqBookmarkByIds(bookmarkIds)); return toAjax(sqBookmarkService.deleteSqBookmarkByIds(bookmarkIds));
} }
/**
* 用户-根据标签查询书签分页
*/
@GetMapping(value = "/listByTag")
public TableDataInfo listByTag(SqBookmarkReq sqBookmarkReq){
sqBookmarkReq.setUserid(getAuthUser().getUserId());
startPage();
return getDataTable(sqBookmarkService.getlistByTag(sqBookmarkReq));
}
} }

View File

@ -2,7 +2,9 @@ package com.ruoyi.web.controller.yunbookmark;
import java.util.List; import java.util.List;
import com.ruoyi.bookmark.pojo.SqTagReq;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -53,14 +55,40 @@ public class SqTagController extends BaseController
* 模糊查书签TAG * 模糊查书签TAG
*/ */
@GetMapping("/listByUserLike") @GetMapping("/listByUserLike")
public TableDataInfo listByUserLike() public TableDataInfo listByUserLike(SqTagReq req)
{ {
SqTag sqTag = new SqTag();
BeanUtils.copyProperties(req,sqTag);
sqTag.setUserId(getAuthUser().getUserId());
startPage(); startPage();
List<SqTag> list = sqTagService.selectSqTagList(new SqTag(getAuthUser().getUserId())); List<SqTag> list = sqTagService.selectSqTagList(sqTag);
return getDataTable(list); return getDataTable(list);
} }
/**
* 新增书签_标签
*/
@PostMapping("/addByUser")
public AjaxResult addByUser(SqTagReq req)
{
SqTag sqTag = new SqTag();
BeanUtils.copyProperties(req,sqTag);
sqTag.setUserId(getAuthUser().getUserId());
return toAjax(sqTagService.insertSqTag(sqTag));
}
/**
* 修改书签_标签
*/
@PutMapping("/editByUser")
public AjaxResult editByUser(SqTagReq req)
{
SqTag sqTag = new SqTag();
BeanUtils.copyProperties(req,sqTag);
sqTag.setUserId(getAuthUser().getUserId());
return toAjax(sqTagService.updateSqTag(sqTag));
}

View File

@ -71,29 +71,29 @@
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item class="filter-item" command="1"><i class="el-icon-bottom"></i>按时间排序() <el-dropdown-item class="filter-item" command="1"><i class="el-icon-bottom"></i>按时间排序()
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item class="filter-item" command="2"><i class="el-icon-bottom"></i>按标题A-Z排序() <!-- <el-dropdown-item class="filter-item" command="2"><i class="el-icon-bottom"></i>按标题A-Z排序()-->
</el-dropdown-item> <!-- </el-dropdown-item>-->
<el-dropdown-item class="filter-item" command="3"><i class="el-icon-bottom"></i>按标题A-Z排序() <!-- <el-dropdown-item class="filter-item" command="3"><i class="el-icon-bottom"></i>按标题A-Z排序()-->
</el-dropdown-item> <!-- </el-dropdown-item>-->
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
<div class="filter-content"> <!-- <div class="filter-content">-->
<el-dropdown trigger="hover" size="small"> <!-- <el-dropdown trigger="hover" size="small">-->
<div class="el-dropdown-link dropdownList"> <!-- <div class="el-dropdown-link dropdownList">-->
<el-button icon="el-icon-tickets" style="border:0px;font-size: 18px;" size="mini"></el-button> <!-- <el-button icon="el-icon-tickets" style="border:0px;font-size: 18px;" size="mini"></el-button>-->
</div> <!-- </div>-->
<el-dropdown-menu slot="dropdown" class="filter-sort-dropdown"> <!-- <el-dropdown-menu slot="dropdown" class="filter-sort-dropdown">-->
<el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按时间排序()</el-dropdown-item> <!-- <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按时间排序()</el-dropdown-item>-->
<el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按时间排序()</el-dropdown-item> <!-- <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按时间排序()</el-dropdown-item>-->
<el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按字母A-Z排序</el-dropdown-item> <!-- <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按字母A-Z排序</el-dropdown-item>-->
<el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按字母A-Z排序</el-dropdown-item> <!-- <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按字母A-Z排序</el-dropdown-item>-->
<el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按网站A-Z排序</el-dropdown-item> <!-- <el-dropdown-item class="filter-item"><i class="el-icon-bottom"></i>按网站A-Z排序</el-dropdown-item>-->
</el-dropdown-menu> <!-- </el-dropdown-menu>-->
</el-dropdown> <!-- </el-dropdown>-->
</div> <!-- </div>-->
</div> </div>
</div> </div>
@ -362,6 +362,7 @@
Ueditor:undefined,//id Ueditor:undefined,//id
noteId:undefined, //noteId noteId:undefined, //noteId
user:'',// user:'',//
sortState:true,//,, false true
@ -744,7 +745,13 @@
this.queryParams.bkOrderBy=""; this.queryParams.bkOrderBy="";
listByUserAndPolymerization(this.queryParams).then(response => { listByUserAndPolymerization(this.queryParams).then(response => {
if (response.code == 200) { if (response.code == 200) {
//
if (this.sortState){
this.bookmarkList = this.bookmarkList.concat(response.rows); this.bookmarkList = this.bookmarkList.concat(response.rows);
}else{
this.bookmarkList = response.rows;
this.sortState = false;
}
this.total = response.total; this.total = response.total;
this.listloading = false this.listloading = false
this.loading = false; this.loading = false;
@ -787,7 +794,11 @@
/**切换排序规则**/ /**切换排序规则**/
handleCommand(command) { handleCommand(command) {
if (this.queryParams.sort != command){
this.sortState = false;// false true
}
this.queryParams.sort = command; this.queryParams.sort = command;
this.getBypropertyList(this.property); this.getBypropertyList(this.property);
}, },

View File

@ -32,14 +32,14 @@
<span>稍后看</span> <span>稍后看</span>
<span class="menuCount">5</span> <span class="menuCount">5</span>
</div> </div>
<div class="aside-title"><i class="el-icon-view"></i> <!-- <div class="aside-title"><i class="el-icon-view"></i>-->
<span>发现</span> <!-- <span>发现</span>-->
<span class="menuCount"></span> <!-- <span class="menuCount"></span>-->
</div> <!-- </div>-->
<div class="aside-title"><i class="el-icon-message"></i> <!-- <div class="aside-title"><i class="el-icon-message"></i>-->
<span>收件箱</span> <!-- <span>收件箱</span>-->
<span class="menuCount">5</span> <!-- <span class="menuCount">5</span>-->
</div> <!-- </div>-->
<div class="aside-titleB" @mouseenter="eidtMenuText=!eidtMenuText" @mouseleave="eidtMenuText=!eidtMenuText"> <div class="aside-titleB" @mouseenter="eidtMenuText=!eidtMenuText" @mouseleave="eidtMenuText=!eidtMenuText">

View File

@ -1,6 +1,7 @@
package com.ruoyi.bookmark.mapper; package com.ruoyi.bookmark.mapper;
import com.ruoyi.bookmark.domain.SqBookmark; import com.ruoyi.bookmark.domain.SqBookmark;
import com.ruoyi.bookmark.pojo.SqBookmarkReq;
import com.ruoyi.common.mybatisMapper.MyMapper; import com.ruoyi.common.mybatisMapper.MyMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -120,4 +121,6 @@ public interface SqBookmarkMapper extends MyMapper<SqBookmark>
* *
*/ */
List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark); List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark);
List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq);
} }

View File

@ -0,0 +1,92 @@
package com.ruoyi.bookmark.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import lombok.ToString;
import javax.persistence.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 书签管理对象 sq_bookmark 不存在的字段注解 @Transient
*
*/
@Data
public class SqBookmarkReq
{
private Long bookmarkId;
private Long userid;
/** 书签标题 */
private String title;
/** 书签地址 */
private String url;
/** 官网地址 */
private String urls;
/** 书签描述 */
private String description;
/** 图片 */
private String image;
/** 标签 */
private String label;
/** 分类ID */
private Long menuId;
/** 点赞数 */
private Long zcount;
/** 0 未删除 1表示删除 */
private Integer idelete;
/** 0公开显示 1隐藏显示 2好友显示 3稍后再看 */
private Integer start;
/** 0非星标 1星标 */
private Integer bookmarkStar;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**tag名称串**/
private String tagNameAll;
/**是否稍后读 0不是 1是**/
private Integer seeYouLater;
private Long parentId;
/** 书签的类型 星标 稍后看 最新书签 **/
private String type;
/** 排序的方式 **/
private String sort;
/** 搜索 **/
private String sousuo;
/** 标签ID **/
private Long tagId;
private List<Map<String,Object>> sqTags;
public SqBookmarkReq(){
}
public SqBookmarkReq(String url, Long userid){
this.url = url;
this.userid = userid;
}
}

View File

@ -0,0 +1,45 @@
package com.ruoyi.bookmark.pojo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* 书签_标签对象 sq_tag
*
* @author ruoyi
* @date 2020-09-05
*/
@Data
public class SqTagReq
{
/** 书签标签id */
private Long id;
/** 标签名字 */
private String name;
/** 链接 */
private String url;
/** 状态 0显示默认*/
private Integer status;
/** 标签的字体颜色 */
private String isFontColor;
/** 标签的背景颜色 */
private String isBgColor;
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.bookmark.service;
import java.util.List; import java.util.List;
import com.ruoyi.bookmark.domain.SqBookmark; import com.ruoyi.bookmark.domain.SqBookmark;
import com.ruoyi.bookmark.pojo.SqBookmarkReq;
import com.ruoyi.common.utils.bookmarkhtml.HtmlName; import com.ruoyi.common.utils.bookmarkhtml.HtmlName;
/** /**
@ -170,4 +171,12 @@ public interface ISqBookmarkService
* *
*/ */
List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark); List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark);
/**
* 用户根据标签ID 查询对应的书签 分页
* @param
*
*/
List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq);
} }

View File

@ -19,6 +19,7 @@ import com.ruoyi.bookmark.mapper.SqBookmarkTagMapper;
import com.ruoyi.bookmark.mapper.SqMenuMapper; import com.ruoyi.bookmark.mapper.SqMenuMapper;
import com.ruoyi.bookmark.mapper.SqTagMapper; import com.ruoyi.bookmark.mapper.SqTagMapper;
import com.ruoyi.bookmark.pojo.SqBookmarkReq;
import com.ruoyi.bookmark.service.ISqTagService; import com.ruoyi.bookmark.service.ISqTagService;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -135,7 +136,7 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
logger.info("用户ID:"+sqBookmark.getUserid()+",新增书签"+sqBookmark.getUrl()+"获取网址的 主机信息 报错 -"+new Date()); logger.info("用户ID:"+sqBookmark.getUserid()+",新增书签"+sqBookmark.getUrl()+"获取网址的 主机信息 报错 -"+new Date());
} }
if(null==sqBookmark.getDescription()||"".equals(sqBookmark.getDescription())){ if(StringUtils.isEmpty(sqBookmark.getDescription())){
sqBookmark.setDescription(sqBookmark.getTitle()); sqBookmark.setDescription(sqBookmark.getTitle());
} }
//转换传入的父级ID //转换传入的父级ID
@ -537,5 +538,11 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService
return sqBookmarkMapper.listByUserAndPolymerization(search); return sqBookmarkMapper.listByUserAndPolymerization(search);
} }
@Override
public List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq) {
return sqBookmarkMapper.getlistByTag(sqBookmarkReq);
}
} }

View File

@ -210,4 +210,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</choose> </choose>
</where> </where>
</select> </select>
<select id="getlistByTag" parameterType="com.ruoyi.bookmark.pojo.SqBookmarkReq" resultMap="SqBookmarkResult">
SELECT sb.* FROM sq_bookmark_tag as sbt LEFT JOIN sq_bookmark as sb ON sbt.bookmark_id = sb.bookmark_id
WHERE sbt.tag_id = #{tagId} AND sb.userid = #{userid} AND sb.idelete = 0
ORDER BY
<choose>
<when test="sort == 0">
sb.create_time desc
</when>
<when test="sort == 1">
sb.create_time asc
</when>
<when test="sort == 2">
sb.CONVERT(sb.title USING GBK) asc
</when>
<when test="sort == 3">
sb.CONVERT(sb.title USING GBK) desc
</when>
<otherwise>
sb.create_time desc
</otherwise>
</choose>
</select>
</mapper> </mapper>

View File

@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectSqTagList" parameterType="SqTag" resultMap="SqTagResult"> <select id="selectSqTagList" parameterType="SqTag" resultMap="SqTagResult">
<include refid="selectSqTagVo"/> <include refid="selectSqTagVo"/>
<where> <where>
<if test="name != null and name != ''"> and name = #{name}</if> <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="icount != null "> and icount = #{icount}</if> <if test="icount != null "> and icount = #{icount}</if>
<if test="userId != null "> and user_Id = #{userId}</if> <if test="userId != null "> and user_Id = #{userId}</if>
<if test="isFontColor != null and isFontColor != ''"> and is_font_color = #{isFontColor}</if> <if test="isFontColor != null and isFontColor != ''"> and is_font_color = #{isFontColor}</if>