导入浏览器书签

This commit is contained in:
WangHao
2021-02-13 20:00:25 +08:00
parent 87b4e38462
commit 38e4f2aa04
12 changed files with 294 additions and 30 deletions

View File

@ -9,6 +9,8 @@ import com.ruoyi.bookmark.service.ISqMenuService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.bookmarkhtml.Const;
import com.ruoyi.common.utils.bookmarkhtml.HtmlName;
import com.ruoyi.common.utils.bookmarkhtml.ImportHtml;
import com.ruoyi.common.utils.StringUtils;
import org.jsoup.HttpStatusException;
@ -23,9 +25,12 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.net.ssl.SSLHandshakeException;
import java.net.URL;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors;
/**
@ -50,33 +55,54 @@ public class BrowserController extends BaseController {
@PreAuthorize("@ss.hasPermi('bookmark:bookmark:list')")
public AjaxResult importCollect(@RequestParam("htmlFile") MultipartFile htmlFile){
logger.debug("开始上传状态是:");
SysUser sysUser=getAuthUser();
Long userID= sysUser.getUserId();
//防止重复上传
try {
Map<String, Map<String, String>> map = ImportHtml.parseHtml(htmlFile.getInputStream());
// Map<String, List<Map>> map = ImportHtml.importHtmlMore(htmlFile.getInputStream());
if(null == map || map.isEmpty()){
logger.info("未获取到url连接");
return AjaxResult.error("未获取到url连接,空书签");
List<HtmlName> list = ImportHtml.addMenuAndBookmark(htmlFile.getInputStream());
if(null == list || list.isEmpty()){
return AjaxResult.error("未获取到url连接,空书签文件");
}
//获取所有的 *目录*文件夹
List<HtmlName> listMenu= list.stream().filter(m-> m.getState().equals("0")).collect(Collectors.toList());
//id排序 防止已添加的父id漏修改 id升序
listMenu.sort(Comparator.comparing(HtmlName::getId));
//1.添加目录
for (HtmlName h : listMenu) {
String id=h.getId();
//添加 返回id
SqMenu sqMenu = new SqMenu(userID,h.getTitle(),Long.valueOf(h.getParentId()), Const.MenuIocURL);
int countId = iSqMenuService.insertSqMenu(sqMenu);
if(countId!=0){
Long k=Long.valueOf(sqMenu.getMenuId().toString());
//批量修改对应的父目录id
listMenu = ImportHtml.listFilter(listMenu,k,id);
//批量修改对应的书签id
list = ImportHtml.listFilter(list,k,id);
}
for (Entry<String, Map<String, String>> entry : map.entrySet()) {
String favoritesName = entry.getKey();
//添加目录
SqMenu sqMenu=new SqMenu();
sqMenu.setUserId(userID);
sqMenu.setCreateTime(new Date());
sqMenu.setMenuName(favoritesName);
sqMenu.setParentId(0L);
iSqMenuService.insertSqMenu(sqMenu);
importHtml(entry.getValue(), sqMenu.getMenuId(), userID);
}
//2.添加书签
for (HtmlName h : list) {
if (!h.getState().equals("0")&&h.getState().equals(Const.BOOKMARK_STATE_FLAG)) {
SqBookmark sqBookmark =new SqBookmark();
sqBookmark.setUserid(userID);
sqBookmark.setTitle(h.getTitle());
sqBookmark.setUrl(h.getUrl());
sqBookmark.setUrls(ImportHtml.Urlutils(new URL(h.getUrl())));
if(StringUtils.isBlank(h.getDescription())){
sqBookmark.setDescription(h.getTitle());
}else{
sqBookmark.setDescription(h.getDescription());
}
sqBookmark.setMenuId(Long.valueOf(h.getParentId()));
sqBookmark.setCreateTime(new Date());
iSqBookmarkService.insertSqBookmark(sqBookmark);
}
}
}catch (SSLHandshakeException e){
logger.error("文章解析出错:",e);
@ -90,7 +116,6 @@ public class BrowserController extends BaseController {
catch (Exception e) {
logger.error("导入html异常:",e);
}
return AjaxResult.success("导入成功");
}

View File

@ -9,7 +9,7 @@ ruoyi:
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPathLinux配置 /home/ruoyi/uploadPath
profile: /home/ruoyi/uploadPath
profile: D:/ruoyi/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证