Redis实现接口防重复点击

This commit is contained in:
WangHao
2021-02-13 20:52:17 +08:00
parent 38e4f2aa04
commit fec325e383
7 changed files with 117 additions and 85 deletions

View File

@ -9,6 +9,7 @@ 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.core.redis.RedisUtil;
import com.ruoyi.common.utils.bookmarkhtml.Const;
import com.ruoyi.common.utils.bookmarkhtml.HtmlName;
import com.ruoyi.common.utils.bookmarkhtml.ImportHtml;
@ -50,7 +51,6 @@ public class BrowserController extends BaseController {
private ISqBookmarkService iSqBookmarkService;
@RequestMapping("/import")
@PreAuthorize("@ss.hasPermi('bookmark:bookmark:list')")
public AjaxResult importCollect(@RequestParam("htmlFile") MultipartFile htmlFile){
@ -58,52 +58,19 @@ public class BrowserController extends BaseController {
SysUser sysUser=getAuthUser();
Long userID= sysUser.getUserId();
//防止重复上传
Long htmlFlag = iSqMenuService.noRepetition(Const.IMPORTHTML,userID,300L);
if(htmlFlag.intValue()!=0){
return AjaxResult.success("导入操作频繁请"+htmlFlag.intValue()+"秒后再操作!");
}
try {
//解析HTML
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);
}
}
//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);
}
}
//处理导入的html数据
iSqBookmarkService.addALLBookMarkByHtml(list,userID);
}catch (SSLHandshakeException e){
logger.error("文章解析出错:",e);
}