diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/consumer/BookmarkVisitNumPlusConsumer.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/consumer/BookmarkVisitNumPlusConsumer.java index c97d622..ef5cf6d 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/consumer/BookmarkVisitNumPlusConsumer.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/consumer/BookmarkVisitNumPlusConsumer.java @@ -1,6 +1,8 @@ package com.fanxb.bookmark.business.bookmark.consumer; +import com.alibaba.fastjson.JSON; import com.fanxb.bookmark.business.bookmark.dao.BookmarkDao; +import com.fanxb.bookmark.business.bookmark.entity.redis.VisitNumPlus; import com.fanxb.bookmark.common.annotation.MqConsumer; import com.fanxb.bookmark.common.constant.RedisConstant; import com.fanxb.bookmark.common.entity.redis.RedisConsumer; @@ -29,8 +31,9 @@ public class BookmarkVisitNumPlusConsumer implements RedisConsumer { @Override public void deal(String message) { + VisitNumPlus item = JSON.parseObject(message, VisitNumPlus.class); try { - bookmarkDao.updateVisitNum(Integer.parseInt(message)); + bookmarkDao.updateVisitNum(item); } catch (Exception e) { log.error("书签访问次数增加失败:{}", e.getMessage()); } 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 45ca967..a9c0e4e 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 @@ -2,6 +2,7 @@ package com.fanxb.bookmark.business.bookmark.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.fanxb.bookmark.business.bookmark.entity.BookmarkEs; +import com.fanxb.bookmark.business.bookmark.entity.redis.VisitNumPlus; import com.fanxb.bookmark.common.entity.Bookmark; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -201,7 +202,7 @@ public interface BookmarkDao extends BaseMapper { * @author fanxb * @date 2020/5/12 10:40 */ - @Update("update bookmark set visitNum=visitNum+1 where bookmarkId=#{id}") - void updateVisitNum(int id); + @Update("update bookmark set visitNum=visitNum+1 where userId=#{userId} and bookmarkId=#{bookmarkId}") + void updateVisitNum(VisitNumPlus item); } diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/redis/VisitNumPlus.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/redis/VisitNumPlus.java new file mode 100644 index 0000000..c3d27d0 --- /dev/null +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/entity/redis/VisitNumPlus.java @@ -0,0 +1,23 @@ +package com.fanxb.bookmark.business.bookmark.entity.redis; + +import lombok.AllArgsConstructor; +import lombok.Data; + +/** + * Created with IntelliJ IDEA + * + * @author fanxb + * Date: 2020/5/12 11:47 + */ +@Data +@AllArgsConstructor +public class VisitNumPlus { + /** + * 用户id + */ + private int userId; + /** + * 书签id + */ + private int bookmarkId; +} diff --git a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java index d7c4ea3..b685b8a 100644 --- a/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java +++ b/bookMarkService/business/bookmark/src/main/java/com/fanxb/bookmark/business/bookmark/service/impl/BookmarkServiceImpl.java @@ -1,8 +1,10 @@ package com.fanxb.bookmark.business.bookmark.service.impl; +import com.alibaba.fastjson.JSON; import com.fanxb.bookmark.business.bookmark.dao.BookmarkDao; import com.fanxb.bookmark.business.bookmark.entity.BookmarkEs; import com.fanxb.bookmark.business.bookmark.entity.MoveNodeBody; +import com.fanxb.bookmark.business.bookmark.entity.redis.VisitNumPlus; import com.fanxb.bookmark.business.bookmark.service.BookmarkService; import com.fanxb.bookmark.business.bookmark.service.PinYinService; import com.fanxb.bookmark.common.constant.EsConstant; @@ -241,7 +243,8 @@ public class BookmarkServiceImpl implements BookmarkService { @Override public void visitNumPlus(int id) { - RedisUtil.addToMq(RedisConstant.BOOKMARK_VISIT_NUM_PLUS, id); + VisitNumPlus item = new VisitNumPlus(UserContextHolder.get().getUserId(), id); + RedisUtil.addToMq(RedisConstant.BOOKMARK_VISIT_NUM_PLUS, JSON.toJSONString(item)); } /** diff --git a/bookMarkService/web/src/main/resources/db/migration/V12__bookmark增加userId,bookmarkId索引.sql b/bookMarkService/web/src/main/resources/db/migration/V12__bookmark增加userId,bookmarkId索引.sql new file mode 100644 index 0000000..ec31d8a --- /dev/null +++ b/bookMarkService/web/src/main/resources/db/migration/V12__bookmark增加userId,bookmarkId索引.sql @@ -0,0 +1,2 @@ +ALTER TABLE `bookmark`.`bookmark` +ADD INDEX `userId_bookmarkId_index`(`userId`, `bookmarkId`) USING BTREE; \ No newline at end of file diff --git a/front/src/components/Search/index.jsx b/front/src/components/Search/index.jsx index 2338b5a..0eada7c 100644 --- a/front/src/components/Search/index.jsx +++ b/front/src/components/Search/index.jsx @@ -1,17 +1,18 @@ -import React from "react"; -import { Input, Select, Empty } from "antd"; -import styles from "./index.module.less"; -import { keySearch } from "../../util/cacheUtil"; +import React from 'react'; +import { Input, Select, Empty } from 'antd'; +import styles from './index.module.less'; +import { keySearch } from '../../util/cacheUtil'; +import httpUtil from '../../util/httpUtil'; class Search extends React.Component { constructor(props) { super(props); this.state = { - content: "", + content: '', currentIndex: 0, isFocus: false, resultList: [], - options: ["书签", "百度", "谷歌"], + options: ['书签', '百度', '谷歌'], currentOptionIndex: 0 }; } @@ -63,28 +64,25 @@ class Search extends React.Component { this.setState({ resultList, currentIndex: 0 }); } + goTo(item) { + window.open(item.url.startsWith('http') ? item.url : 'http://' + item.url); + httpUtil.post('/bookmark/visitNum?id=' + item.bookmarkId); + } + /** * 处理跳转到搜索引擎或者对应的书签 */ enter() { - const { - currentIndex, - currentOptionIndex, - resultList, - content - } = this.state; + const { currentIndex, currentOptionIndex, resultList, content } = this.state; if (currentOptionIndex === 0 && resultList.length > 0) { let url = resultList[currentIndex].url; - window.open(url.startsWith("http") ? url : "http://" + url); + window.open(url.startsWith('http') ? url : 'http://' + url); + httpUtil.post('/bookmark/visitNum?id=' + resultList[currentIndex].bookmarkId); } if (currentOptionIndex === 1) { - window.open( - "https://www.baidu.com/s?ie=UTF-8&wd=" + encodeURIComponent(content) - ); + window.open('https://www.baidu.com/s?ie=UTF-8&wd=' + encodeURIComponent(content)); } else if (currentOptionIndex === 2) { - window.open( - "https://www.google.com/search?q=" + encodeURIComponent(content) - ); + window.open('https://www.google.com/search?q=' + encodeURIComponent(content)); } } @@ -130,12 +128,7 @@ class Search extends React.Component { * 渲染结果列表 */ renderResults() { - const { - resultList, - currentIndex, - currentOptionIndex, - isFocus - } = this.state; + const { resultList, currentIndex, currentOptionIndex, isFocus } = this.state; if (currentOptionIndex !== 0 || !isFocus) { return; } @@ -143,38 +136,22 @@ class Search extends React.Component { return (
{resultList.map((item, index) => ( -
window.open(item.url)} - > +
this.goTo(item)}> {item.name}  - - {item.url} - + {item.url}
))}
); } else { - return ( - - ); + return ; } } render() { const { content, options, currentOptionIndex } = this.state; const prefix = ( - {options.map((item, index) => ( {item} @@ -188,15 +165,13 @@ class Search extends React.Component { addonBefore={prefix} ref="searchInput" value={content} - placeholder={currentOptionIndex === 0 ? "检索我的书签" : "搜索"} + placeholder={currentOptionIndex === 0 ? '检索我的书签' : '搜索'} enterButton onSearch={this.enter.bind(this)} onChange={this.contentChange.bind(this)} onKeyDown={this.keyUp.bind(this)} onFocus={() => this.setState({ isFocus: true })} - onBlur={() => - setTimeout(() => this.setState({ isFocus: false }), 600) - } + onBlur={() => setTimeout(() => this.setState({ isFocus: false }), 600)} /> {this.renderResults()}
diff --git a/front/src/pages/manage/OverView/index.jsx b/front/src/pages/manage/OverView/index.jsx index d2e09b1..7047fcf 100644 --- a/front/src/pages/manage/OverView/index.jsx +++ b/front/src/pages/manage/OverView/index.jsx @@ -105,6 +105,7 @@ class OverView extends React.Component { const item = e.node.props.dataRef; if (item.type === 0) { window.open(item.url.startsWith('http') ? item.url : 'http://' + item.url); + httpUtil.post('/bookmark/visitNum?id=' + item.bookmarkId); } else { const id = item.bookmarkId.toString(); const index = expandedKeys.indexOf(id);