浏览代码

Merge remote-tracking branch 'origin/dev' into dev

Vanessa 1 年之前
父节点
当前提交
e87504e2b4
共有 3 个文件被更改,包括 25 次插入6 次删除
  1. 1 1
      kernel/api/search.go
  2. 19 5
      kernel/model/asset_content.go
  3. 5 0
      kernel/model/assets_watcher.go

+ 1 - 1
kernel/api/search.go

@@ -365,7 +365,7 @@ func parseSearchAssetContentArgs(arg map[string]interface{}) (page, pageSize int
 		method = int(methodArg.(float64))
 	}
 
-	// orderBy:0:相关度(默认),1:按更新时间升序,2:按更新时间降序
+	// orderBy:0:按相关度降序,1:按相关度升序,2:按更新时间升序,3:按更新时间降序
 	orderByArg := arg["orderBy"]
 	if nil != orderByArg {
 		orderBy = int(orderByArg.(float64))

+ 19 - 5
kernel/model/asset_content.go

@@ -77,7 +77,7 @@ func GetAssetContent(id, query string, queryMethod int) (ret *AssetContent) {
 // FullTextSearchAssetContent 搜索资源文件内容。
 //
 // method:0:关键字,1:查询语法,2:SQL,3:正则表达式
-// orderBy: 0:相关度(默认),1:按更新时间升序,2:按更新时间降序
+// orderBy: 0:按相关度降序,1:按相关度升序,2:按更新时间升序,3:按更新时间降序
 func FullTextSearchAssetContent(query string, types map[string]bool, method, orderBy, page, pageSize int) (ret []*AssetContent, matchedAssetCount, pageCount int) {
 	query = strings.TrimSpace(query)
 	beforeLen := 36
@@ -238,11 +238,20 @@ func buildAssetContentTypeFilter(types map[string]bool) string {
 
 	var buf bytes.Buffer
 	buf.WriteString("(")
-	for k, _ := range types {
+	for k, enabled := range types {
+		if !enabled {
+			continue
+		}
+
 		buf.WriteString("'")
 		buf.WriteString(k)
 		buf.WriteString("',")
 	}
+	if 1 == buf.Len() {
+		buf.WriteString(")")
+		return buf.String()
+	}
+
 	buf.Truncate(buf.Len() - 1)
 	buf.WriteString(")")
 	return buf.String()
@@ -253,8 +262,10 @@ func buildAssetContentOrderBy(orderBy int) string {
 	case 0:
 		return "ORDER BY rank DESC"
 	case 1:
-		return "ORDER BY updated ASC"
+		return "ORDER BY rank ASC"
 	case 2:
+		return "ORDER BY updated ASC"
+	case 3:
 		return "ORDER BY updated DESC"
 	default:
 		return "ORDER BY rank DESC"
@@ -444,9 +455,12 @@ func copyTempAsset(absPath string) (ret string) {
 		return
 	}
 
+	filelock.RWLock.Lock()
+	defer filelock.RWLock.Unlock()
+
 	ret = filepath.Join(dir, gulu.Rand.String(7)+".docx")
-	if err := filelock.Copy(absPath, ret); nil != err {
-		logging.LogErrorf("copy [%s] to [%s] failed: [%s]", absPath, ret, err)
+	if err := gulu.File.Copy(absPath, ret); nil != err {
+		logging.LogErrorf("copy [src=%s, dest=%s] failed: %s", absPath, ret, err)
 		return
 	}
 	return

+ 5 - 0
kernel/model/assets_watcher.go

@@ -73,6 +73,11 @@ func watchAssets() {
 
 				lastEvent = event
 				timer.Reset(time.Millisecond * 100)
+
+				if lastEvent.Op&fsnotify.Rename == fsnotify.Rename {
+					// 索引资源文件内容
+					IndexAssetContent(lastEvent.Name)
+				}
 			case err, ok := <-assetsWatcher.Errors:
 				if !ok {
 					return