✨ Feat: [后台]:新增同步某人书签从mysql到es接口
This commit is contained in:
parent
b5d64078c3
commit
b0b912dd0a
@ -118,4 +118,17 @@ public class BookmarkController {
|
|||||||
return Result.success(res);
|
return Result.success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: 同步当前用户的书签到es中
|
||||||
|
*
|
||||||
|
* @return com.fanxb.bookmark.common.entity.Result
|
||||||
|
* @author fanxb
|
||||||
|
* @date 2019/7/26 15:33
|
||||||
|
*/
|
||||||
|
@PostMapping("/syncBookmark")
|
||||||
|
public Result syncBookmark() {
|
||||||
|
bookmarkService.syncUserBookmark(UserContextHolder.get().getUserId());
|
||||||
|
return Result.success(null);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.fanxb.bookmark.business.bookmark.dao;
|
package com.fanxb.bookmark.business.bookmark.dao;
|
||||||
|
|
||||||
|
import com.fanxb.bookmark.business.bookmark.entity.BookmarkEs;
|
||||||
import com.fanxb.bookmark.common.entity.Bookmark;
|
import com.fanxb.bookmark.common.entity.Bookmark;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -144,4 +145,17 @@ public interface BookmarkDao {
|
|||||||
*/
|
*/
|
||||||
List<Integer> getChildrenBookmarkId(@Param("userId") int userId, @Param("folderId") int folderId);
|
List<Integer> getChildrenBookmarkId(@Param("userId") int userId, @Param("folderId") int folderId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: 根据用户id,类别,分页查找书签
|
||||||
|
*
|
||||||
|
* @author fanxb
|
||||||
|
* @date 2019/7/26 15:23
|
||||||
|
* @param userId userId
|
||||||
|
* @param type type
|
||||||
|
* @param start start
|
||||||
|
* @param size size
|
||||||
|
* @return java.util.List<com.fanxb.bookmark.business.bookmark.entity.BookmarkEs>
|
||||||
|
*/
|
||||||
|
List<BookmarkEs> selectBookmarkEsByUserIdAndType(@Param("userId") int userId, @Param("type") int type, @Param("start") int start, @Param("size") int size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,10 @@ import com.fanxb.bookmark.common.entity.EsEntity;
|
|||||||
import com.fanxb.bookmark.common.exception.CustomException;
|
import com.fanxb.bookmark.common.exception.CustomException;
|
||||||
import com.fanxb.bookmark.common.util.EsUtil;
|
import com.fanxb.bookmark.common.util.EsUtil;
|
||||||
import com.fanxb.bookmark.common.util.UserContextHolder;
|
import com.fanxb.bookmark.common.util.UserContextHolder;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.elasticsearch.index.query.QueryBuilders;
|
||||||
|
import org.elasticsearch.index.query.TermQueryBuilder;
|
||||||
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
import org.elasticsearch.search.builder.SearchSourceBuilder;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
@ -35,6 +37,7 @@ import java.util.Set;
|
|||||||
* @date 2019/7/8 15:00
|
* @date 2019/7/8 15:00
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@Slf4j
|
||||||
public class BookmarkService {
|
public class BookmarkService {
|
||||||
/**
|
/**
|
||||||
* chrome导出书签tag
|
* chrome导出书签tag
|
||||||
@ -245,6 +248,7 @@ public class BookmarkService {
|
|||||||
}
|
}
|
||||||
//更新被移动节点的path和sort
|
//更新被移动节点的path和sort
|
||||||
bookmarkDao.updatePathAndSort(userId, body.getBookmarkId(), body.getTargetPath(), body.getSort());
|
bookmarkDao.updatePathAndSort(userId, body.getBookmarkId(), body.getTargetPath(), body.getSort());
|
||||||
|
log.info("{},从{}移动到{},sort:{}", userId, body.getSourcePath(), body.getTargetPath(), body.getSort());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -262,8 +266,32 @@ public class BookmarkService {
|
|||||||
SearchSourceBuilder builder = new SearchSourceBuilder();
|
SearchSourceBuilder builder = new SearchSourceBuilder();
|
||||||
builder.size(5);
|
builder.size(5);
|
||||||
builder.query(boolQueryBuilder);
|
builder.query(boolQueryBuilder);
|
||||||
List<BookmarkEs> list = esUtil.search(EsConstant.BOOKMARK_INDEX, builder, BookmarkEs.class);
|
return esUtil.search(EsConstant.BOOKMARK_INDEX, builder, BookmarkEs.class);
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description: 将某个用户的书签数据mysql同步到es中
|
||||||
|
*
|
||||||
|
* @author fanxb
|
||||||
|
* @date 2019/7/26 11:27
|
||||||
|
*/
|
||||||
|
public void syncUserBookmark(int userId) {
|
||||||
|
//删除旧的数据
|
||||||
|
esUtil.deleteByQuery(EsConstant.BOOKMARK_INDEX, new TermQueryBuilder("userId", userId));
|
||||||
|
int index = 0;
|
||||||
|
int size = 500;
|
||||||
|
List<EsEntity> res = new ArrayList<>();
|
||||||
|
do {
|
||||||
|
res.clear();
|
||||||
|
bookmarkDao.selectBookmarkEsByUserIdAndType(userId, 0, index, size)
|
||||||
|
.forEach(item -> res.add(new EsEntity<>(item.getBookmarkId().toString(), item)));
|
||||||
|
if (res.size() > 0) {
|
||||||
|
esUtil.insertBatch(EsConstant.BOOKMARK_INDEX, res);
|
||||||
|
}
|
||||||
|
index += size;
|
||||||
|
} while (res.size() == 500);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -110,5 +110,17 @@
|
|||||||
where userId = #{userId} and bookmarkId = #{bookmarkId}
|
where userId = #{userId} and bookmarkId = #{bookmarkId}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="selectBookmarkEsByUserIdAndType" resultType="com.fanxb.bookmark.business.bookmark.entity.BookmarkEs">
|
||||||
|
select
|
||||||
|
userId,
|
||||||
|
bookmarkId,
|
||||||
|
name,
|
||||||
|
url
|
||||||
|
from bookmark
|
||||||
|
where userId = #{userId} and type = #{type}
|
||||||
|
order by bookmarkId
|
||||||
|
limit ${start}, ${size}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
Loading…
x
Reference in New Issue
Block a user