diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java index 17398d654..1c317437a 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqBookmarkController.java @@ -6,6 +6,7 @@ import java.util.Date; import java.util.List; import com.ruoyi.bookmark.domain.SqBookmark; +import com.ruoyi.bookmark.pojo.SqBookmarkReq; import com.ruoyi.bookmark.service.ISqBookmarkService; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.utils.bookmarkhtml.ImportHtml; @@ -13,14 +14,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -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 org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -126,7 +120,6 @@ public class SqBookmarkController extends BaseController /** * 查询书签管理列表 聚合>> 星标 稍后看 最新书签 */ -// @PreAuthorize("@ss.hasPermi('bookmark:bookmark:list')") @GetMapping("/listByUserAndPolymerization") public TableDataInfo listByUserAndPolymerization(SqBookmark sqBookmark) { @@ -207,4 +200,15 @@ public class SqBookmarkController extends BaseController { return toAjax(sqBookmarkService.deleteSqBookmarkByIds(bookmarkIds)); } + + + /** + * 用户-根据标签查询书签分页 + */ + @GetMapping(value = "/listByTag") + public TableDataInfo listByTag(SqBookmarkReq sqBookmarkReq){ + sqBookmarkReq.setUserid(getAuthUser().getUserId()); + startPage(); + return getDataTable(sqBookmarkService.getlistByTag(sqBookmarkReq)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqTagController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqTagController.java index 0a9ee12c3..a4d389416 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqTagController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/yunbookmark/SqTagController.java @@ -2,7 +2,9 @@ package com.ruoyi.web.controller.yunbookmark; import java.util.List; +import com.ruoyi.bookmark.pojo.SqTagReq; import com.ruoyi.common.core.domain.entity.SysUser; +import org.springframework.beans.BeanUtils; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -53,14 +55,40 @@ public class SqTagController extends BaseController * 模糊查书签TAG */ @GetMapping("/listByUserLike") - public TableDataInfo listByUserLike() + public TableDataInfo listByUserLike(SqTagReq req) { + SqTag sqTag = new SqTag(); + BeanUtils.copyProperties(req,sqTag); + sqTag.setUserId(getAuthUser().getUserId()); startPage(); - List<SqTag> list = sqTagService.selectSqTagList(new SqTag(getAuthUser().getUserId())); + List<SqTag> list = sqTagService.selectSqTagList(sqTag); 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)); + } diff --git a/ruoyi-ui/src/views/bookmark/bookmark/index.vue b/ruoyi-ui/src/views/bookmark/bookmark/index.vue index 5f16e59a5..5f77020e3 100644 --- a/ruoyi-ui/src/views/bookmark/bookmark/index.vue +++ b/ruoyi-ui/src/views/bookmark/bookmark/index.vue @@ -71,29 +71,29 @@ </el-dropdown-item> <el-dropdown-item class="filter-item" command="1"><i class="el-icon-bottom"></i>按时间排序(反) </el-dropdown-item> - <el-dropdown-item class="filter-item" command="2"><i class="el-icon-bottom"></i>按标题A-Z排序(正) - </el-dropdown-item> - <el-dropdown-item class="filter-item" command="3"><i class="el-icon-bottom"></i>按标题A-Z排序(反) - </el-dropdown-item> +<!-- <el-dropdown-item class="filter-item" command="2"><i class="el-icon-bottom"></i>按标题A-Z排序(正)--> +<!-- </el-dropdown-item>--> +<!-- <el-dropdown-item class="filter-item" command="3"><i class="el-icon-bottom"></i>按标题A-Z排序(反)--> +<!-- </el-dropdown-item>--> </el-dropdown-menu> </el-dropdown> </div> - <div class="filter-content"> - <el-dropdown trigger="hover" size="small"> - <div class="el-dropdown-link dropdownList"> - <el-button icon="el-icon-tickets" style="border:0px;font-size: 18px;" size="mini"></el-button> - </div> - <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>按字母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> +<!-- <div class="filter-content">--> +<!-- <el-dropdown trigger="hover" size="small">--> +<!-- <div class="el-dropdown-link dropdownList">--> +<!-- <el-button icon="el-icon-tickets" style="border:0px;font-size: 18px;" size="mini"></el-button>--> +<!-- </div>--> +<!-- <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>按字母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>--> - </div> +<!-- </div>--> </div> </div> @@ -362,6 +362,7 @@ Ueditor:undefined,//点击的编辑器文章id noteId:undefined, //点击的noteId user:'',//登陆的用户信息 + sortState:true,//是否进行请求书签的拼接,切换排序规则时,不能进行拼接,重新渲染数据 false表示切换了 true没切换 @@ -744,7 +745,13 @@ this.queryParams.bkOrderBy=""; listByUserAndPolymerization(this.queryParams).then(response => { if (response.code == 200) { - this.bookmarkList = this.bookmarkList.concat(response.rows); + //如果进行了排序切换 就不能进行拼接 + if (this.sortState){ + this.bookmarkList = this.bookmarkList.concat(response.rows); + }else{ + this.bookmarkList = response.rows; + this.sortState = false; + } this.total = response.total; this.listloading = false this.loading = false; @@ -787,7 +794,11 @@ /**切换排序规则**/ handleCommand(command) { + if (this.queryParams.sort != command){ + this.sortState = false;//是否切换了新的排序规则方式 false表示切换了 true没切换 + } this.queryParams.sort = command; + this.getBypropertyList(this.property); }, diff --git a/ruoyi-ui/src/views/bookmark/index/index.vue b/ruoyi-ui/src/views/bookmark/index/index.vue index b1409a0c6..455aafefe 100644 --- a/ruoyi-ui/src/views/bookmark/index/index.vue +++ b/ruoyi-ui/src/views/bookmark/index/index.vue @@ -32,14 +32,14 @@ <span>稍后看</span> <span class="menuCount">5</span> </div> - <div class="aside-title"><i class="el-icon-view"></i> - <span>发现</span> - <span class="menuCount"></span> - </div> - <div class="aside-title"><i class="el-icon-message"></i> - <span>收件箱</span> - <span class="menuCount">5</span> - </div> +<!-- <div class="aside-title"><i class="el-icon-view"></i>--> +<!-- <span>发现</span>--> +<!-- <span class="menuCount"></span>--> +<!-- </div>--> +<!-- <div class="aside-title"><i class="el-icon-message"></i>--> +<!-- <span>收件箱</span>--> +<!-- <span class="menuCount">5</span>--> +<!-- </div>--> <div class="aside-titleB" @mouseenter="eidtMenuText=!eidtMenuText" @mouseleave="eidtMenuText=!eidtMenuText"> diff --git a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/mapper/SqBookmarkMapper.java b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/mapper/SqBookmarkMapper.java index 1a350b30a..a34369407 100644 --- a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/mapper/SqBookmarkMapper.java +++ b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/mapper/SqBookmarkMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.bookmark.mapper; import com.ruoyi.bookmark.domain.SqBookmark; +import com.ruoyi.bookmark.pojo.SqBookmarkReq; import com.ruoyi.common.mybatisMapper.MyMapper; import org.apache.ibatis.annotations.Param; @@ -120,4 +121,6 @@ public interface SqBookmarkMapper extends MyMapper<SqBookmark> * */ List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark); + + List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq); } diff --git a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqBookmarkReq.java b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqBookmarkReq.java new file mode 100644 index 000000000..a417d81c9 --- /dev/null +++ b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqBookmarkReq.java @@ -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; + } + +} diff --git a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqTagReq.java b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqTagReq.java new file mode 100644 index 000000000..2973320d4 --- /dev/null +++ b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/pojo/SqTagReq.java @@ -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; + + + +} diff --git a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/ISqBookmarkService.java b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/ISqBookmarkService.java index 881f35d9d..703f959e1 100644 --- a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/ISqBookmarkService.java +++ b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/ISqBookmarkService.java @@ -2,6 +2,7 @@ package com.ruoyi.bookmark.service; import java.util.List; import com.ruoyi.bookmark.domain.SqBookmark; +import com.ruoyi.bookmark.pojo.SqBookmarkReq; import com.ruoyi.common.utils.bookmarkhtml.HtmlName; /** @@ -170,4 +171,12 @@ public interface ISqBookmarkService * */ List<SqBookmark> listByUserAndPolymerization(SqBookmark sqBookmark); + + + /** + * 用户根据标签ID 查询对应的书签 分页 + * @param + * + */ + List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq); } diff --git a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/impl/SqBookmarkServiceImpl.java b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/impl/SqBookmarkServiceImpl.java index bc160f3dc..15de7982b 100644 --- a/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/impl/SqBookmarkServiceImpl.java +++ b/ruoyi-yunbookmark/src/main/java/com/ruoyi/bookmark/service/impl/SqBookmarkServiceImpl.java @@ -19,6 +19,7 @@ import com.ruoyi.bookmark.mapper.SqBookmarkTagMapper; import com.ruoyi.bookmark.mapper.SqMenuMapper; import com.ruoyi.bookmark.mapper.SqTagMapper; +import com.ruoyi.bookmark.pojo.SqBookmarkReq; import com.ruoyi.bookmark.service.ISqTagService; import com.ruoyi.common.utils.StringUtils; @@ -135,7 +136,7 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService } catch (MalformedURLException e) { 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()); } //转换传入的父级ID @@ -537,5 +538,11 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService return sqBookmarkMapper.listByUserAndPolymerization(search); } + @Override + public List<SqBookmark> getlistByTag(SqBookmarkReq sqBookmarkReq) { + + return sqBookmarkMapper.getlistByTag(sqBookmarkReq); + } + } diff --git a/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqBookmarkMapper.xml b/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqBookmarkMapper.xml index c3ba4ed40..376fc3e91 100644 --- a/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqBookmarkMapper.xml +++ b/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqBookmarkMapper.xml @@ -210,4 +210,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" </choose> </where> </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> diff --git a/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqTagMapper.xml b/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqTagMapper.xml index fd17a7fa1..8589df921 100644 --- a/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqTagMapper.xml +++ b/ruoyi-yunbookmark/src/main/resources/mapper/bookmark/SqTagMapper.xml @@ -24,7 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <select id="selectSqTagList" parameterType="SqTag" resultMap="SqTagResult"> <include refid="selectSqTagVo"/> <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="userId != null "> and user_Id = #{userId}</if> <if test="isFontColor != null and isFontColor != ''"> and is_font_color = #{isFontColor}</if>