优化导入
This commit is contained in:
		| @@ -54,7 +54,8 @@ public class BrowserController extends BaseController { | ||||
|     @RequestMapping("/import") | ||||
|     @PreAuthorize("@ss.hasPermi('bookmark:browser:export')") | ||||
|     public AjaxResult importCollect(@RequestParam("htmlFile") MultipartFile htmlFile){ | ||||
|         logger.debug("开始上传状态是:"); | ||||
|         long startTime = System.currentTimeMillis(); | ||||
|         logger.info("开始上传状态是:"+ startTime ); | ||||
|         SysUser sysUser=getAuthUser(); | ||||
|         Long userID= sysUser.getUserId(); | ||||
|         //防止重复上传 | ||||
| @@ -83,7 +84,14 @@ public class BrowserController extends BaseController { | ||||
|         catch (Exception e) { | ||||
|             logger.error("导入html异常:",e); | ||||
|         } | ||||
|  | ||||
|         long endTime = System.currentTimeMillis(); | ||||
|  | ||||
|         float seconds = (endTime - startTime) / 1000F; | ||||
|         logger.info("导入用时:"+ Float.toString(seconds) ); | ||||
|  | ||||
|         return AjaxResult.success("导入成功"); | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -105,9 +105,9 @@ public class SqBookmarkController extends BaseController | ||||
|      */ | ||||
|     @GetMapping("/selectBymenuIdUserID") | ||||
|     @PreAuthorize("@ss.hasPermi('bookmark:bookmark:common:listsousou')") | ||||
|     public TableDataInfo selectBymenuIdUserID(Long menuId,Integer sort,String sousuo) { | ||||
|     public TableDataInfo selectBymenuIdUserID(Long menuId,Integer sort,String sousuo,Integer bookmarkStar,Integer start) { | ||||
|         startPage(); | ||||
|         List<SqBookmark> list = sqBookmarkService.selectBymenuIdUserID(menuId,getAuthUser().getUserId(),sort,sousuo); | ||||
|         List<SqBookmark> list = sqBookmarkService.selectBymenuIdUserID(menuId,getAuthUser().getUserId(),sort,sousuo,bookmarkStar,start); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|     /** | ||||
|   | ||||
| @@ -4,6 +4,7 @@ import com.ruoyi.bookmark.domain.SqBookmark; | ||||
| import com.ruoyi.bookmark.domain.SqMenu; | ||||
| import com.ruoyi.bookmark.mapper.SqBookmarkMapper; | ||||
| import com.ruoyi.bookmark.mapper.SqMenuMapper; | ||||
| import com.ruoyi.bookmark.service.ISqBookmarkService; | ||||
| import com.ruoyi.bookmark.service.ISqMenuService; | ||||
| import com.ruoyi.bookmark.service.impl.SqMenuServiceImpl; | ||||
| import org.apache.ibatis.session.ExecutorType; | ||||
| @@ -31,6 +32,8 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|     @Autowired | ||||
|     private ISqMenuService iSqMenuService; | ||||
|     @Autowired | ||||
|     private ISqBookmarkService iSqBookmarkService; | ||||
|     @Autowired | ||||
|     SqBookmarkMapper sqBookmarkMapper; | ||||
|     @Autowired | ||||
|     SqlSessionTemplate sqlSessionTemplate; | ||||
| @@ -87,6 +90,7 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|  | ||||
|     /** | ||||
|      * 初始化是否有下级目录 subordinate 0无下级 1有下级 | ||||
|      * 批量计算新的目录下书签数量 | ||||
|      * | ||||
|      * @param | ||||
|      * @return | ||||
| @@ -94,6 +98,17 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|  | ||||
|     @Test | ||||
|     public void test3() { | ||||
|         iSqBookmarkService.bookmarkMenuCount(1L,442L); | ||||
|  | ||||
|     } | ||||
|     /** | ||||
|      * 初始化是否有下级目录 subordinate 0无下级 1有下级 | ||||
|      * | ||||
|      * @param | ||||
|      * @return | ||||
|      */ | ||||
|     @Test | ||||
|     public void test7() { | ||||
|         SqMenu sqMenu2 = new SqMenu(); | ||||
|         sqMenu2.setUserId(1L); | ||||
|         List<SqMenu> sqs = sqMenuMapper.select(sqMenu2); | ||||
| @@ -117,6 +132,11 @@ public class SqMenuTest extends BaseSpringBootTest{ | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|     //测试mybatis的事务 | ||||
|     @Test | ||||
|     public void test4() throws Exception { | ||||
|   | ||||
							
								
								
									
										41
									
								
								ruoyi-ui/src/components/Bkhead/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								ruoyi-ui/src/components/Bkhead/index.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,41 @@ | ||||
| <template> | ||||
|     <div> | ||||
|         <div style="width: 100%;height:30px;background-color: #fafcff"> | ||||
|  | ||||
|  | ||||
|           <el-breadcrumb separator-class="el-icon-arrow-right"> | ||||
|             <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item> | ||||
|             <el-breadcrumb-item>活动管理</el-breadcrumb-item> | ||||
|             <el-breadcrumb-item>活动列表</el-breadcrumb-item> | ||||
|             <el-breadcrumb-item>活动详情</el-breadcrumb-item> | ||||
|           </el-breadcrumb> | ||||
|  | ||||
|         </div> | ||||
|     </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   export default { | ||||
|     components: { | ||||
|  | ||||
|     }, | ||||
|     props: { | ||||
|       highlighted: null,//搜索是否高亮 | ||||
|       sousuo: null, | ||||
|     }, | ||||
|     data: function () { | ||||
|       return { | ||||
|         isdescription:null | ||||
|       } | ||||
|     }, | ||||
|     mounted(){ | ||||
|  | ||||
|     }, | ||||
|     methods: { | ||||
|  | ||||
|     } | ||||
|   } | ||||
| </script> | ||||
| <style scoped> | ||||
|  | ||||
| </style> | ||||
| @@ -1,8 +1,7 @@ | ||||
| <template> | ||||
|   <div> | ||||
|  | ||||
| <!--    STYLE="position: relative"--> | ||||
|     <div v-for="bm in bookmarkList"  class="bookmark"   @click="winurl(bm.noteId,bm.tiymceUeditor,bm.bookmarkId,bm.url)" @mouseover="enter(bm.bookmarkId)" @mouseleave="leave()" > | ||||
|     <div v-for="bm in bookmarkList"  class="bookmark"    @click="winurl(bm.noteId,bm.tiymceUeditor,bm.bookmarkId,bm.url)" @mouseover="enter(bm.bookmarkId)" @mouseleave="leave()" > | ||||
|       <div class="bookmark-item" > | ||||
|          <span class="bookmark-title" v-if="highlighted" v-html="highLight(bm.title,sousuo)"/> | ||||
|  | ||||
| @@ -204,7 +203,6 @@ | ||||
|   .bookmark-item { | ||||
|     display: flex; | ||||
|     height: 24px; | ||||
|     /* font-size: 13px; */ | ||||
|     overflow: hidden; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -55,6 +55,11 @@ export const constantRoutes = [ | ||||
|         component: (resolve) => require(['@/views/redirect'], resolve) | ||||
|       } | ||||
|     ] | ||||
|   } | ||||
|   ,{ | ||||
|     path: '/daohang', | ||||
|     component: resolve => require(['../views/bookmark/menu/index.vue'], resolve), | ||||
|     hidden: true | ||||
|   }, | ||||
|   { | ||||
|     path: '/login', | ||||
| @@ -206,6 +211,16 @@ export const constantRoutes = [ | ||||
|           requireAuth: true,//加该字段,表示进入这个路由是需要登录的true | ||||
|         }, | ||||
|       } | ||||
|       , | ||||
|       { | ||||
|         path: '/profile', | ||||
|         name: 'Profile', | ||||
|         component: (resolve) => require(['@/views/system/user/profile/index'], resolve), | ||||
|         meta: { | ||||
|           title: '个人中心', icon: 'user', | ||||
|           requireAuth: true, | ||||
|         } | ||||
|       }, | ||||
|     ], | ||||
|  | ||||
|   }, | ||||
|   | ||||
| @@ -34,42 +34,34 @@ | ||||
|             </el-dropdown-menu> | ||||
|           </el-dropdown> | ||||
|         </div> | ||||
|  | ||||
|  | ||||
|         <div class="header-list"> | ||||
| <!--          <el-dropdown trigger="click" size="small" :hide-on-click="false">--> | ||||
| <!--              <span class="el-dropdown-link">--> | ||||
|           <el-dropdown trigger="click" size="small" :hide-on-click="false"> | ||||
|               <span class="el-dropdown-link"> | ||||
|            <el-avatar :size="28" | ||||
|                       src="https://up.raindrop.io/collection/templates/social-media-logos-6/97social.png"></el-avatar> | ||||
| <!--              </span>--> | ||||
| <!--            <el-dropdown-menu slot="dropdown" class="sq-dropdown">--> | ||||
| <!--              <el-dropdown-item class="filter-item" icon="el-icon-plus" command="a">外观显示</el-dropdown-item>--> | ||||
| <!--              <el-dropdown-item class="filter-item" icon="el-icon-plus" command="b">用户中心</el-dropdown-item>--> | ||||
| <!--              <el-dropdown-item class="filter-item" icon="el-icon-plus" command="d">建议反馈</el-dropdown-item>--> | ||||
| <!--              <el-dropdown-item class="filter-item" icon="el-icon-plus" command="e">退出登录</el-dropdown-item>--> | ||||
| <!--            </el-dropdown-menu>--> | ||||
| <!--          </el-dropdown>--> | ||||
|               </span> | ||||
|             <el-dropdown-menu slot="dropdown" class="sq-dropdown"> | ||||
|               <el-dropdown-item class="filter-item" icon="el-icon-plus" command="a">外观显示</el-dropdown-item> | ||||
|               <el-dropdown-item class="filter-item" icon="el-icon-plus" command="b">用户中心</el-dropdown-item> | ||||
|               <el-dropdown-item class="filter-item" icon="el-icon-plus" command="d">建议反馈</el-dropdown-item> | ||||
|               <el-dropdown-item class="filter-item" icon="el-icon-plus" command="e">退出登录</el-dropdown-item> | ||||
|             </el-dropdown-menu> | ||||
|           </el-dropdown> | ||||
|         </div> | ||||
|       </el-header> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|           <div class="filter-tbar"> | ||||
|             <div class="filter-classification"> | ||||
|               <div  :class="['classification',property=='0'?' classification-click':'']" @click="showopen(0)"><span>网页</span></div> | ||||
|               <div :class="['classification',property=='1'?' classification-click':'']" @click="showopen(1)"><span>文本</span></div> | ||||
|               <div :class="['classification',property=='2'?' classification-click':'']" @click="showopen(2)"><span>其他</span></div> | ||||
|               <!--        <div class="classification" @click="showopen(3)"><span>其他</span></div>--> | ||||
|             </div> | ||||
|             <div class="setUpThe"> | ||||
|               <div class="filter-content"> | ||||
|                 <el-dropdown trigger="hover" size="small" @command="handleCommand"> | ||||
|                   <div class="el-dropdown-link dropdownList"> | ||||
|                     <i class="el-icon-document-checked "></i> | ||||
| <!--                    <span>排序</span>--> | ||||
|                   </div> | ||||
|                   <el-dropdown-menu slot="dropdown" class="filter-sort-dropdown"> | ||||
|                     <el-dropdown-item class="filter-item" command="0"><i class="el-icon-bottom"></i>按时间排序(正) | ||||
| @@ -88,7 +80,6 @@ | ||||
|                 <el-dropdown trigger="hover" size="small"> | ||||
|                   <div class="el-dropdown-link dropdownList"> | ||||
|                     <i class="el-icon-tickets "></i> | ||||
| <!--                    <span>列表</span>--> | ||||
|                   </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> | ||||
| @@ -100,19 +91,7 @@ | ||||
|                 </el-dropdown> | ||||
|  | ||||
|               </div> | ||||
|               <!--        <div class="filter-content">--> | ||||
|               <!--          <el-dropdown trigger="hover" size="small">--> | ||||
|               <!--            <div class="el-dropdown-link dropdownList">--> | ||||
|               <!--              <i class="el-icon-setting "></i> <span>设置</span>--> | ||||
|               <!--            </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>排序</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> | ||||
|  | ||||
| @@ -130,73 +109,9 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|  | ||||
|           <!--    默认展示--> | ||||
| <!--          <div class="bookmarklist" :style="datalist" infinite-scroll-distance="10" v-loading="loading"--> | ||||
| <!--               v-if="showbookmark"--> | ||||
| <!--               v-infinite-scroll="load"--> | ||||
| <!--               infinite-scroll-disabled="disabled" style="overflow:auto;" infinite-scroll-immediate="false">--> | ||||
| <!--            <el-row>--> | ||||
| <!--              <!–        <hr class="bookamrk-hr" v-if="!queryParams.sousuo!=''"/>–>--> | ||||
| <!--              <el-col :span="24" v-for="bm in bookmarkList">--> | ||||
| <!--                <div class="editBookamrk ">--> | ||||
| <!--                  <div class="editlist">--> | ||||
| <!--                    <div>--> | ||||
| <!--                      <el-button plain size="small" @click="handleUpdate(bm.bookmarkId)">修改</el-button>--> | ||||
| <!--                    </div>--> | ||||
| <!--                    <div>--> | ||||
| <!--                      <el-button plain size="small" @click="handleDelete(bm.bookmarkId)">删除</el-button>--> | ||||
| <!--                    </div>--> | ||||
| <!--                    <div>--> | ||||
| <!--                      <el-button plain size="small">笔记</el-button>--> | ||||
| <!--                    </div>--> | ||||
| <!--                    <div>--> | ||||
| <!--                      <el-button plain size="small">分享</el-button>--> | ||||
| <!--                    </div>--> | ||||
| <!--                  </div>--> | ||||
| <!--                </div>--> | ||||
|  | ||||
|  | ||||
| <!--                <div class="bookmark " :data-id="bm.id" @click="windowurl(bm.url,bm.bookmarkId)">--> | ||||
| <!--                  <p class="bookmark-title" v-if="highlighted"><span v-html="highLight(bm.title,queryParams.sousuo)"/>--> | ||||
| <!--                  </p>--> | ||||
| <!--                  <p class="bookmark-title" v-if="!highlighted">{{bm.title}}</p>--> | ||||
| <!--                  <div class="">--> | ||||
| <!--                    <p class="description" v-if="highlighted"><span--> | ||||
| <!--                      v-html="highLight(bm.description,queryParams.sousuo)"/>--> | ||||
| <!--                    </p>--> | ||||
| <!--                    <p class="description" v-if="!highlighted">{{bm.description}}</p>--> | ||||
| <!--                  </div>--> | ||||
| <!--                  <div class="info-wrap">--> | ||||
| <!--                    <div class="info">--> | ||||
| <!--                      <div class="bookmark-icon">--> | ||||
| <!--                        <!–                    <img :err-src='bm.icon'   :ng-src="bm.icon"  :src="bm.icon"  />–>--> | ||||
| <!--                        <img :ng-src="'https://favicon.lucq.fun/?url=http://'+bm.urls"--> | ||||
| <!--                             :src="'https://favicon.lucq.fun/?url=http://'+bm.urls"--> | ||||
| <!--                             onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQEAYAAABPYyMiAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAAASAAAAEgARslrPgAAAmVJREFUSMftlG1IU2EUx8+5jRHzg+5OiD64WTBBjSY5ZybUJMaMiIUICUKFIGmoIIogYWKFBmtDxN1tBKIWvlS6SR+iLFDBXqSMgmzbvQ7fkAjcINmQ5u7pQwyCiOvWx/p/fPj9/5znnPM8AP+VolRTjjHhTlmZipzEk9GYao4sVaMYxXp62NgIdpLBCuLP05mZZHOYZA3p5KgMjBcUwCmw4PfVVYiBGmbW1zMzOU4QCgtTvdAeRESEyNZyJbx+dDTjVv/9YFSjSScnfabsbPYMF+AbxsYS3F5TfwPZAacpMNfUBEAljK24mMJwlLIUClTAdfwok9FXWBTtc3Phzqv7c/RWa8KnrHZM8VltbRjC92AxGkEPRpSJInjJQPpIBJoZC6nn50M19dM5J/v6/lhRxgXXDX9Qp1POcmHh2sTEQbfbvVmrUCTbr4RPaeMe8Q0eTyI36VkrW50mftjrPWCyDn9oSUuTdj4Y/1Qpl7NdzkNC98iIqsIxHdQVFaU8eWW1U1guLy1lr3Acr3O7pXi227EhDLpcCZ8UL/kK8LIYjxtDIRhEP8xGIlI8bcAKvY3FGB/zYvf81pYUL/0PvGTKoTUvjzbgCx5ZWlJq3a5lQa1Ge3yTWnp64ASYqVcUoXn3Jtja2/EpRtHj89FF8Tb25ufDOwCo8/lSL0BF/eDPzcVXeA7WDAa6J9rES1VVdJqx41JHBwCE8BgA3JU9B+3AACziMwjv7MAaPQb/wgIAnP2rDpCWtpkncjm+Ro34bWgo3FkX0O6bnARARCT6hSR6YzazXa7DfLyigo7TNtObxNb/s/oB7V8JFvW/8IQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMDItMDJUMTg6MTE6NTgrMDg6MDCoc6tpAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTAyLTAyVDE4OjExOjU4KzA4OjAw2S4T1QAAAGd0RVh0c3ZnOmJhc2UtdXJpAGZpbGU6Ly8vaG9tZS9hZG1pbi9pY29uLWZvbnQvdG1wL2ljb25fNWhyOG55Nmo1bWMvamluZ2RpYW5hbmxpX2tvbmd3dWppYW94aW5nX3Nob3VjYW5nLnN2Z4/vilwAAAAASUVORK5CYII='"--> | ||||
| <!--                             alt="" ng-show="bm.urls">--> | ||||
| <!--                      </div>--> | ||||
| <!--                      <div class="bookmark-official">{{bm.urls}} · </div>--> | ||||
| <!--                      <div class="bookmark-time">{{bm.createTime|changeTime}}</div>--> | ||||
| <!--                      <div class="bookmark-time" v-for="t in bm.sqTags">--> | ||||
| <!--                        <el-tag class="bookmark-list-tag" data-bookmarkId="t.bookmarkId" data-tagId="t.tagId"--> | ||||
| <!--                                size="mini">--> | ||||
| <!--                          {{t.name}}--> | ||||
| <!--                        </el-tag>--> | ||||
|  | ||||
| <!--                      </div>--> | ||||
|  | ||||
|  | ||||
| <!--                    </div>--> | ||||
| <!--                  </div>--> | ||||
| <!--                </div>--> | ||||
| <!--              </el-col>--> | ||||
|  | ||||
| <!--            </el-row>--> | ||||
| <!--            <p v-if="listloading" class="listhint"><i class="el-icon-loading"></i>加载中...</p>--> | ||||
| <!--            <p v-if="listnoMore" class="listhint">没有更多了</p>--> | ||||
| <!--          </div>--> | ||||
| <!--              三窗口展示--> | ||||
|         <div class="bookmarklist" :style="datalist"  infinite-scroll-distance="10" v-loading="loading" v-if="showbookmark" | ||||
|         <div class="bookmarklist" :style="datalist"  infinite-scroll-distance="10" v-loading="loading" v-if="!showimg" | ||||
|              v-infinite-scroll="load" | ||||
|              infinite-scroll-disabled="disabled" style="overflow:auto;" infinite-scroll-immediate="false"> | ||||
|     <BookmarkOne @on-windowurl="windowurl" @on-handleUpdate="handleUpdate" @on-handleDelete="handleDelete" :key="property" :property="property"  :highlighted="highlighted" :sousuo="sousuo"  :listloading="listloading" :loading="loading" :bookmarkList="bookmarkList"></BookmarkOne> | ||||
| @@ -349,7 +264,6 @@ | ||||
|         // 是否显示弹出层 | ||||
|         open: false, | ||||
|         busy: false, | ||||
|         showbookmark: true, | ||||
|         showimg: false, | ||||
|         loading: false, | ||||
|         iframeLoading:false, | ||||
| @@ -511,7 +425,7 @@ | ||||
|  | ||||
|     }, | ||||
|     mounted() { | ||||
|       this.closeIsMain() | ||||
|       this.closeIsMain(); | ||||
|  | ||||
|     }, | ||||
|     methods: { | ||||
| @@ -833,7 +747,7 @@ | ||||
|             this.bookmarkList = response.rows; | ||||
|             this.total = response.total; | ||||
|             this.loading = false; | ||||
|             this.showimg=response.rows==0?true:false; | ||||
|             this.showimg=response.total==0?true:false; | ||||
|             this.listloading = false | ||||
|           } else { | ||||
|             this.showimg = true; | ||||
|   | ||||
| @@ -1,5 +1,9 @@ | ||||
| <template> | ||||
|   <div > | ||||
|  | ||||
|  | ||||
|     <Bkhead></Bkhead> | ||||
|  | ||||
|     <div style="width:360px;height:260px;margin: 0 auto;margin-top: 40px"> | ||||
|       <el-upload | ||||
|         ref="upload" | ||||
| @@ -59,11 +63,13 @@ | ||||
| </template> | ||||
|  | ||||
| <script > | ||||
|  | ||||
|  import Bkhead from "../../../components/Bkhead"; | ||||
|  import { getToken } from "@/utils/auth"; | ||||
|   export default { | ||||
|     name: "", | ||||
|  | ||||
|     components: { | ||||
|       Bkhead | ||||
|     }, | ||||
|     data() { | ||||
|       return { | ||||
|         // 用户导入参数 | ||||
|   | ||||
| @@ -37,7 +37,8 @@ | ||||
|             <div class="aside-title"><i class="el-icon-s-comment"></i><span>意见反馈</span></div> | ||||
| <!--            <div class="aside-title" @click="ceshi"><i class="el-icon-s-comment"></i><span>测试页面</span></div>--> | ||||
| <!--            <div class="aside-title" @click="NqEdit"><i class="el-icon-s-comment"></i><span>NqQuillEdit编辑器</span></div>--> | ||||
|             <div class="aside-title " style="margin-bottom: 100px" @click="gotool"><i class="el-icon-s-grid"></i><span>工具箱</span></div> | ||||
|             <div class="aside-title "  @click="gotool"><i class="el-icon-s-grid"></i><span>工具箱</span></div> | ||||
|             <div class="aside-title " style="margin-bottom: 100px" @click="goUser"><i class="el-icon-s-custom"></i><span>个人中心</span></div> | ||||
|  | ||||
|           </div> | ||||
|  | ||||
| @@ -907,6 +908,13 @@ | ||||
|           path: "/tool", | ||||
|         }) | ||||
|       }, | ||||
|       /** 个人中心**/ | ||||
|       goUser() { | ||||
|         var that = this; | ||||
|         that.$router.push({ | ||||
|           path: "/profile", | ||||
|         }) | ||||
|       }, | ||||
|       editBookmark: function (e) { | ||||
|         this.reset(); | ||||
|         this.getTreeselect(); | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| <template > | ||||
|   <div class="main"> | ||||
|  | ||||
|     <div class="index-top"></div> | ||||
| <!--    <div class="index-top"></div>--> | ||||
|  | ||||
| <!--    <!–github–>--> | ||||
| <!--    <a @click="zreaZtree" class="github-corner" target="_blank" title="Follow me on GitHub" aria-label="Follow me on GitHub">--> | ||||
| @@ -11,29 +11,37 @@ | ||||
| <!--      </svg>--> | ||||
| <!--    </a>--> | ||||
|  | ||||
|  | ||||
|  | ||||
|     <div class="sousou"> | ||||
| <!--      //搜索--> | ||||
|       <div style="width: 50%;height: 200px;margin: 0 auto;margin-top: 19%"> | ||||
|         <div > | ||||
|           <div class="choice-top notcopy" v-for="iconlist in iconlist"> | ||||
|             <el-tooltip  :visible-arrow="visiblearro" :enterable="enterable" class="item"  effect="dark" :content="iconlist.title" placement="top" > | ||||
|             <div @click="sendEventDataTop($event)" :data-icon="iconlist.icon"><img  :ng-src="'https://favicon.lucq.fun/?url='+iconlist.icon" err-src="./images/default.ico"  ng-click="detailBookmark(bookmark);$event.stopPropagation()" :src="'https://favicon.lucq.fun/?url='+iconlist.icon"  ></div> | ||||
|             </el-tooltip> | ||||
|           </div> | ||||
|       <div style="width: 700px;"> | ||||
| <!--        <div >--> | ||||
| <!--          <div class="choice-top notcopy" v-for="iconlist in iconlist">--> | ||||
| <!--            <el-tooltip  :visible-arrow="visiblearro" :enterable="enterable" class="item"  effect="dark" :content="iconlist.title" placement="top" >--> | ||||
| <!--            <div @click="sendEventDataTop($event)" :data-icon="iconlist.icon"><img  :ng-src="'https://favicon.lucq.fun/?url='+iconlist.icon" err-src="./images/default.ico"  ng-click="detailBookmark(bookmark);$event.stopPropagation()" :src="'https://favicon.lucq.fun/?url='+iconlist.icon"  ></div>--> | ||||
| <!--            </el-tooltip>--> | ||||
| <!--          </div>--> | ||||
|  | ||||
|         </div> | ||||
| <!--        </div>--> | ||||
|  | ||||
|         <div style="margin-top: 15px;"> | ||||
|           <el-input placeholder="百度一下" v-model="sousou" class="sousoucss notcopy" ref="sousouref"> | ||||
|             <img @click="IsCord()"  slot="prefix"  :src="sousouicon" style="width: 20px;height: 20px;position: absolute;top: 50%;margin-top: -10px;"> | ||||
|               <el-button   slot="append" icon="el-icon-search"  circle @click="getUrl"></el-button> | ||||
|              <el-button  type="primary" slot="append" icon="el-icon-search" style="width: 80px"  @click="getUrl"></el-button> | ||||
|           </el-input> | ||||
|         </div> | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|         <transition name="el-zoom-in-top"> | ||||
|             <el-card class="box-card notcopy" v-show="isSousouCard" style="width: 100%;opacity: 0.7;margin-top: 10px;height:200px;overflow:auto"> | ||||
|             <el-card class="box-card notcopy" v-show="isSousouCard" style="width: 100%;opacity: 0.7;margin-top: 10px;height:250px;overflow:auto"> | ||||
|  | ||||
|               <div class="choice" v-for="iconlist in iconlist" > | ||||
|             <div  @click="sendEventData($event)" :data-icon="iconlist.icon"><img err-src="https://favicon.lucq.fun/?url=https://www.5118.com/"  class="sousouicon"  :ng-src="'https://favicon.lucq.fun/?url='+iconlist.icon"  :src="'https://favicon.lucq.fun/?url='+iconlist.icon"  ><span>{{iconlist.title}}</span></div> | ||||
| @@ -159,13 +167,28 @@ | ||||
|   } | ||||
| </script> | ||||
| <style scoped> | ||||
|   body{ | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   .main{ | ||||
|     font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; | ||||
|     /*background-image: url("https://s1.ax1x.com/2020/08/11/aOHstP.jpg");*/ | ||||
|     background-repeat: no-repeat; | ||||
|     background-size: 100% 100%; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     /*align-items: center;*/ | ||||
|     padding-top: 20%; | ||||
|     height: 100%; | ||||
|     background-color: #f7f7f7; | ||||
|     background-image: url("https://s1.ax1x.com/2020/08/11/aOHstP.jpg"); | ||||
|     background-size: cover; | ||||
|   } | ||||
|  | ||||
|   /*.sousou{*/ | ||||
|   /*  display: flex;*/ | ||||
|   /*  flex-direction: row;  !* 子元素横向排列 *!*/ | ||||
|   /*  justify-content: center; !* 相对父元素水平居中 *!*/ | ||||
|   /*  align-items: center; !*  子元素相对父元素垂直居中 *!*/ | ||||
|   /*}*/ | ||||
|  | ||||
|   .sousoucss{ | ||||
|     opacity: 0.6; | ||||
| @@ -216,7 +239,7 @@ | ||||
|     margin-right: 1px; | ||||
|   } | ||||
|   .choice div:hover{ | ||||
|     color: #1c84c6; | ||||
|     color: #1f1f1f; | ||||
|  | ||||
|   } | ||||
| /**顶部*/ | ||||
|   | ||||
| @@ -22,6 +22,7 @@ import java.util.Map; | ||||
|  */ | ||||
| @Table(name="sq_bookmark") | ||||
| @Data | ||||
| @ToString | ||||
| public class SqBookmark | ||||
| { | ||||
|     private static final long serialVersionUID = 1L; | ||||
| @@ -83,7 +84,7 @@ public class SqBookmark | ||||
|  | ||||
|     /** 0公开显示 1隐藏显示 2好友显示 3稍后再看 */ | ||||
|     @Excel(name = "0公开显示 1隐藏显示 2好友显示 3稍后再看") | ||||
|     @Column(name = "Start") | ||||
|     @Column(name = "start") | ||||
|     private Integer start; | ||||
|  | ||||
|     /** 0非星标 1星标 */ | ||||
|   | ||||
| @@ -22,7 +22,7 @@ public interface SqBookmarkMapper extends MyMapper<SqBookmark> | ||||
|      * @param userID 用户ID | ||||
|      * @return 书签管理 | ||||
|      */ | ||||
|     public List<SqBookmark> selectBymenuIdUserID(@Param("menuID") Long menuID, @Param("userID") Long userID,@Param("sort")Integer sort,@Param("sousuo") String sousuo); | ||||
|     public List<SqBookmark> selectBymenuIdUserID(@Param("menuID") Long menuID, @Param("userID") Long userID,@Param("sort")Integer sort,@Param("sousuo") String sousuo,@Param("bookmarkStar") Integer bookmarkStar,@Param("start") Integer start); | ||||
|  | ||||
|     /** | ||||
|      * 查询书签管理 | ||||
|   | ||||
| @@ -24,9 +24,11 @@ public interface ISqBookmarkService | ||||
|      * @param userID 用户ID | ||||
|      * @param sort 排序方式 | ||||
|      * @param sousou 搜索 | ||||
|      * @param bookmarkStar 0非星标 1星标 | ||||
|      * @param start 书签状态 | ||||
|      * @return 书签管理 | ||||
|      */ | ||||
|     public List<SqBookmark> selectBymenuIdUserID(Long menuID,Long userID,Integer sort,String sousou); | ||||
|     public List<SqBookmark> selectBymenuIdUserID(Long menuID,Long userID,Integer sort,String sousou,Integer bookmarkStar,Integer start); | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -141,4 +143,9 @@ public interface ISqBookmarkService | ||||
|      * | ||||
|      * */ | ||||
|     List<SqBookmark> bookmarkRepetition(Long userId); | ||||
|  | ||||
|     /** | ||||
|      *  重新计算目录下的书签数量和 目录的结构 | ||||
|      */ | ||||
|     public void bookmarkMenuCount(Long userId,Long menuId); | ||||
| } | ||||
|   | ||||
| @@ -74,8 +74,8 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|      * @return 书签管理 | ||||
|      */ | ||||
|     @Override | ||||
|     public List<SqBookmark> selectBymenuIdUserID(Long menuID, Long userID,Integer sort,String sousou) { | ||||
|         return sqBookmarkMapper.selectBymenuIdUserID(menuID,userID, sort,sousou); | ||||
|     public List<SqBookmark> selectBymenuIdUserID(Long menuID, Long userID,Integer sort,String sousou,Integer bookmarkStar,Integer start) { | ||||
|         return sqBookmarkMapper.selectBymenuIdUserID(menuID,userID, sort,sousou,bookmarkStar,start); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -328,6 +328,8 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|         List<HtmlName> listMenu= list.stream().filter(m-> m.getState().equals("0")).collect(Collectors.toList()); | ||||
|         //id排序 防止已添加的父id漏修改 id升序 | ||||
|         listMenu.sort(Comparator.comparing(HtmlName::getId)); | ||||
|         //顶级目录ID | ||||
|         Long k = null; | ||||
|         //1.添加目录 | ||||
|         for (HtmlName h : listMenu) { | ||||
|             String id=h.getId(); | ||||
| @@ -335,7 +337,7 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|             SqMenu sqMenu = new SqMenu(userID,h.getTitle(),Long.valueOf(h.getParentId()), Const.MenuIocURL); | ||||
|             int countId =  sqMenuMapper.insertSqMenu(sqMenu); | ||||
|             if(countId!=0){ | ||||
|                 Long k=Long.valueOf(sqMenu.getMenuId().toString()); | ||||
|                 k=Long.valueOf(sqMenu.getMenuId().toString()); | ||||
|                 //批量修改对应的父目录id | ||||
|                 listMenu = ImportHtml.listFilter(listMenu,k,id); | ||||
|                 //批量修改对应的书签id | ||||
| @@ -343,29 +345,33 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|             } | ||||
|         } | ||||
|         //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()); | ||||
|                 try { | ||||
|         try { | ||||
|             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(StringUtils.substring(h.getTitle(), 0, 30)); | ||||
|                     sqBookmark.setUrl(h.getUrl()); | ||||
|                     sqBookmark.setUrls(ImportHtml.Urlutils(new URL(h.getUrl()))); | ||||
|                 } catch (MalformedURLException e) { | ||||
|                     e.printStackTrace(); | ||||
|                     logger.info("导入书签,获取host出错!"); | ||||
|  | ||||
|                     if (StringUtils.isBlank(h.getDescription())) { | ||||
|                         sqBookmark.setDescription(StringUtils.substring(h.getTitle(), 0, 30)); | ||||
|                     } else { | ||||
|                         sqBookmark.setDescription(StringUtils.substring(h.getDescription(), 0, 40)); | ||||
|                     } | ||||
|                     sqBookmark.setMenuId(Long.valueOf(h.getParentId())); | ||||
|                     sqBookmark.setCreateTime(new Date()); | ||||
|                     sqBookmarkMapper.insertSqBookmark(sqBookmark); | ||||
|                 } | ||||
|                 if(StringUtils.isBlank(h.getDescription())){ | ||||
|                     sqBookmark.setDescription(h.getTitle()); | ||||
|                 }else{ | ||||
|                     sqBookmark.setDescription(h.getDescription()); | ||||
|                 } | ||||
|                 sqBookmark.setMenuId(Long.valueOf(h.getParentId())); | ||||
|                 sqBookmark.setCreateTime(new Date()); | ||||
|                 sqBookmarkMapper.insertSqBookmark(sqBookmark); | ||||
|             } | ||||
|         } catch (MalformedURLException e) { | ||||
|             e.printStackTrace(); | ||||
|             logger.info("导入书签,获取出错!"); | ||||
|         } | ||||
|  | ||||
|         //3.开始计算目录的结构 和 目录的书签数量 | ||||
|             bookmarkMenuCount(userID,k); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -386,6 +392,35 @@ public class SqBookmarkServiceImpl implements ISqBookmarkService | ||||
|     public List<SqBookmark> bookmarkRepetition(Long userId) { | ||||
|         return sqBookmarkMapper.bookmarkRepetition(userId); | ||||
|     } | ||||
|     @Override | ||||
|     public void bookmarkMenuCount(Long userId,Long menuId){ | ||||
|         SqMenu sqMenu2 = new SqMenu(); | ||||
|         sqMenu2.setUserId(userId); | ||||
| //        sqMenu2.setParentId(menuId); | ||||
|         List<SqMenu> sqs = sqMenuMapper.select(sqMenu2); | ||||
|         for (SqMenu s : sqs) { | ||||
|             SqMenu sq = new SqMenu(); | ||||
|             sq.setParentId(s.getMenuId()); | ||||
|             List<SqMenu> lists = sqMenuMapper.select(sq); | ||||
|             if (lists!=null&&!lists.isEmpty()) | ||||
|             { | ||||
|                 int count = sqBookmarkMapper.countBookMakeByMenuId(s.getMenuId()); | ||||
|                 SqMenu sqMenu = new SqMenu(); | ||||
|                 sqMenu.setMenuId(s.getMenuId()); | ||||
|                 sqMenu.setSubordinate(1); | ||||
|                 sqMenu.setBookmarkCount(count); | ||||
|                 sqMenuMapper.updateSqMenu(sqMenu); | ||||
|             }else{ | ||||
|                 int count = sqBookmarkMapper.countBookMakeByMenuId(s.getMenuId()); | ||||
|                 SqMenu sqMenu = new SqMenu(); | ||||
|                 sqMenu.setMenuId(s.getMenuId()); | ||||
|                 sqMenu.setSubordinate(0); | ||||
|                 sqMenu.setBookmarkCount(count); | ||||
|                 sqMenuMapper.updateSqMenu(sqMenu); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -145,6 +145,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||
|         <include refid="selectSqBookmarkVo"/> | ||||
|         where   userid=#{userID} | ||||
|         <if test="sousuo == null  or sousuo == ''"> and menu_id = #{menuID}</if> | ||||
|         <if test="bookmarkStar != null  and bookmarkStar != ''"> and bookmark_star = #{bookmarkStar}</if> | ||||
|         <if test="start != null  and start != ''"> and start = #{start}</if> | ||||
|         <if test="sousuo != null  and sousuo != ''"> and title like concat('%', #{sousuo}, '%')</if> | ||||
|         order by | ||||
|         <choose> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user