wangchuanjin vor 2 Jahren
Ursprung
Commit
c9afd45ba9
2 geänderte Dateien mit 145 neuen und 0 gelöschten Zeilen
  1. 40 0
      jylabutil/authority.go
  2. 105 0
      jylabutil/entsearch.go

+ 40 - 0
jylabutil/authority.go

@@ -0,0 +1,40 @@
+// Package jylabutil authority
+package jylabutil
+
+import (
+	"app.yhyue.com/moapp/jypkg/public"
+
+	qu "app.yhyue.com/moapp/jybase/common"
+)
+
+/**设置用户权限
+userid 用户_id
+field  用户权限属性字段
+value  用户权限值
+*/
+func UpdateAuthory(userid, field string, value int) bool {
+	b := public.MQFW.UpdateById("user", userid,
+		map[string]interface{}{
+			"$set": map[string]interface{}{
+				field: value,
+			},
+		})
+	return b
+}
+
+/**获取当前模块是否有权限
+userid 用户_id
+field  用户权限属性字段
+*/
+func IsAuthorized(userid, field string) bool {
+	user, b := public.MQFW.FindById("user", userid, nil)
+	if len(*user) > 0 && b {
+		if qu.Int64All((*user)[field]) == 1 {
+			return true
+		} else {
+			return false
+		}
+	} else {
+		return false
+	}
+}

+ 105 - 0
jylabutil/entsearch.go

@@ -0,0 +1,105 @@
+// Package jylabutil search
+package jylabutil
+
+import (
+	"fmt"
+	"strings"
+
+	elastic "app.yhyue.com/moapp/jybase/esv1"
+)
+
+/**即时获取企业名称列表
+name  名称
+limit 取几条
+*/
+func GetEenNameImmediate(name string, limit int) []map[string]interface{} {
+	query := `{"query": {
+			    "bool": {
+			      "must_not":[{"term": {"winnersign": "1"}}],
+			      "should": [{
+			          "bool": {"must": [{"multi_match": {"query": "` + name + `", "type": "phrase","fields": ["name"], "analyzer": "my_ngram"}}]}
+			        }],
+				  "minimum_should_match": 1
+			    }
+			  },
+			  "_source": ["name","_id"],
+			  "from": 0,"size": ` + fmt.Sprint(limit) + `
+			}`
+	list := *elastic.Get("winner", "winner", query)
+	return list
+}
+
+/*根据企业名称、地区、中标价获取项目列表
+entname 企业名称
+area	区域多值","号隔开
+lower	下限单位万
+upper	上限单位万
+pagenum	页码
+pagesize每页数量
+*/
+func GetProjectByEntName(entname string, area string, lower, upper float64, fields string, pagenum, pagesize int, getCount bool) (int, []map[string]interface{}) {
+	if pagenum < 1 {
+		pagenum = 1
+	}
+	mastquery := getSearchQuery(entname, area, lower, upper)
+	var count int
+	if getCount && pagenum == 1 {
+		countQuery := `{"query":{"bool":{"must":[` + mastquery + `]}}}`
+		count = int(elastic.Count("projectset", "projectset", countQuery))
+	}
+	order := `CUSTOM_"sort": {
+	    "_script": {
+	      	"script": "doc['jgtime']?doc['jgtime'].value:doc['zbtime'].value",
+	      	"lang": "groovy",
+	      	"type": "number",
+	      	"order": "desc"
+	    }
+	}`
+	list := *elastic.GetByNgram(
+		"projectset", "projectset",
+		``, mastquery,
+		"",
+		order, fields, (pagenum-1)*pagesize, pagesize,
+	)
+	return count, list
+}
+
+func getSearchQuery(entname, area string, lower, upper float64) string {
+	query := ``
+	if entname != "" {
+		query = `{"term":{"s_winner":"` + entname + `"}}`
+	}
+	if area != "" {
+		if len(query) > 0 {
+			query += ","
+		}
+		query += `{"terms":{"area":[`
+		for k, v := range strings.Split(area, ",") {
+			if k > 0 {
+				query += `,`
+			}
+			query += `"` + v + `"`
+		}
+		query += `]}}`
+	}
+	if lower > 0 && upper > 0 {
+		if len(query) > 0 {
+			query += ","
+		}
+		query += `{"range":{"bidamount":{"gte":` + fmt.Sprint(lower*10000) + `,"lte":` + fmt.Sprint(upper*10000) + `}}}`
+	} else {
+		if lower > 0 {
+			if len(query) > 0 {
+				query += ","
+			}
+			query += `{"range":{"bidamount":{"gte":` + fmt.Sprint(lower*10000) + `}}}`
+		}
+		if upper > 0 {
+			if len(query) > 0 {
+				query += ","
+			}
+			query += `{"range":{"bidamount":{"lte":` + fmt.Sprint(upper*10000) + `}}}`
+		}
+	}
+	return query
+}