|
@@ -47,6 +47,7 @@ type DataExport2 struct {
|
|
|
*xweb.Action
|
|
|
superSearchExport xweb.Mapper `xweb:"/front/dataExport/superSearchExport"` //数据导出-超级搜索
|
|
|
toCreateOrderPage xweb.Mapper `xweb:"/front/dataExport/toCreateOrderPage/(.*)"` //数据导出-订单页面
|
|
|
+ previewData xweb.Mapper `xweb:"/front/dataExport/previewData/(.*)"` //数据导出-数据预览
|
|
|
sendMailVerify xweb.Mapper `xweb:"/front/dataExport/sendMailVerify"` //发送邮箱验证码
|
|
|
checkMailVerify xweb.Mapper `xweb:"/front/dataExport/checkMailVerify"` //验证邮箱验证码
|
|
|
}
|
|
@@ -66,17 +67,47 @@ func (de *DataExport2) SuperSearchExport() error {
|
|
|
industry := strings.TrimSpace(de.GetString("industry")) //选中的行业
|
|
|
selectType := de.GetString("selectType") //标题 or 全文
|
|
|
|
|
|
- log.Printf("keywords:%s \n publishtime:%s \n area:%s \n subtype:%s \n minprice:%s \n maxprice:%s \n industry:%s \n selectType:%s \n",
|
|
|
- keywords, publishtime, area, subtype, minprice, maxprice, industry, selectType)
|
|
|
+ //格式化keywords
|
|
|
+ KeyWordSave := []KeyWord{}
|
|
|
+ if len(keywords) > 0 {
|
|
|
+ keywordArr := strings.Split(keywords, " ")
|
|
|
+ if len(keywordArr) > 0 {
|
|
|
+ oneKw := KeyWord{}
|
|
|
+ if len(keywordArr) > 1 {
|
|
|
+ kwAppended := []string{}
|
|
|
+ for k, v := range keywordArr {
|
|
|
+ if k == 0 {
|
|
|
+ oneKw.Keyword = v
|
|
|
+ } else {
|
|
|
+ kwAppended = append(kwAppended, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ oneKw.Appended = kwAppended
|
|
|
+ } else {
|
|
|
+ oneKw.Keyword = keywordArr[0]
|
|
|
+ }
|
|
|
+ KeyWordSave = append(KeyWordSave, oneKw)
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ areaSave := []string{}
|
|
|
+ if len(area) > 0 {
|
|
|
+ areaSave = strings.Split(area, ",")
|
|
|
+ }
|
|
|
+ industrySave := []string{}
|
|
|
+ if len(industry) > 0 {
|
|
|
+ industrySave = strings.Split(industry, ",")
|
|
|
+ }
|
|
|
|
|
|
data := map[string]interface{}{
|
|
|
- "keywords": keywords,
|
|
|
+ "keywords": KeyWordSave,
|
|
|
"publishtime": publishtime,
|
|
|
- "area": area,
|
|
|
+ "area": areaSave,
|
|
|
"subtype": subtype,
|
|
|
"minprice": minprice,
|
|
|
"maxprice": maxprice,
|
|
|
- "industry": industry,
|
|
|
+ "industry": industrySave,
|
|
|
"selectType": selectType,
|
|
|
"comeintime": time.Now().Unix(),
|
|
|
"s_openid": openid,
|
|
@@ -94,41 +125,40 @@ func (de *DataExport2) ToCreateOrderPage(_id string) error {
|
|
|
ok bool
|
|
|
msgCount int64
|
|
|
//查询字段
|
|
|
- keywords string
|
|
|
- industry string
|
|
|
+ keywords []KeyWord
|
|
|
+ industry []string
|
|
|
minprice string
|
|
|
maxprice string
|
|
|
selectType string
|
|
|
- area string
|
|
|
+ area []string
|
|
|
publishtime string
|
|
|
subtype string
|
|
|
+ buyer []string //招标单位
|
|
|
+ winner []string //中标单位
|
|
|
)
|
|
|
openid := util.ObjToString(de.GetSession("s_m_openid"))
|
|
|
if openid == "" {
|
|
|
return errors.New("未登录")
|
|
|
}
|
|
|
- //query := make(map[string]interface{})
|
|
|
+
|
|
|
if query, ok = mongodb.FindById(ExportTable, _id, nil); !ok {
|
|
|
return errors.New("未找到搜索记录")
|
|
|
}
|
|
|
- //查询参数
|
|
|
- keywords = (*query)["keywords"].(string)
|
|
|
- industry = (*query)["industry"].(string)
|
|
|
- minprice = (*query)["minprice"].(string)
|
|
|
- maxprice = (*query)["maxprice"].(string)
|
|
|
- subtype = (*query)["subtype"].(string)
|
|
|
- area = (*query)["area"].(string)
|
|
|
- selectType = (*query)["selectType"].(string)
|
|
|
- publishtime = (*query)["publishtime"].(string)
|
|
|
-
|
|
|
- log.Printf("keywords:%s \n publishtime:%s \n area:%s \n subtype:%s \n minprice:%s \n maxprice:%s \n industry:%s \n selectType:%s \n",
|
|
|
- keywords, publishtime, area, subtype, minprice, maxprice, industry, selectType)
|
|
|
|
|
|
- if selectType != "" {
|
|
|
- selectType = "\"" + selectType + "\""
|
|
|
- }
|
|
|
+ keywords = getKeyWordArrFromDbResult((*query)["keywords"])
|
|
|
+ industry = getStringArrFromDbResult((*query)["industry"])
|
|
|
+ minprice = util.ObjToString((*query)["minprice"])
|
|
|
+ maxprice = util.ObjToString((*query)["maxprice"])
|
|
|
+ subtype = util.ObjToString((*query)["subtype"])
|
|
|
+ area = getStringArrFromDbResult((*query)["area"])
|
|
|
+ selectType = util.ObjToString((*query)["selectType"])
|
|
|
+ publishtime = util.ObjToString((*query)["publishtime"])
|
|
|
+ subtype = util.ObjToString((*query)["subtype"])
|
|
|
+ buyer = getStringArrFromDbResult((*query)["buyer"])
|
|
|
+ winner = getStringArrFromDbResult((*query)["winner"])
|
|
|
|
|
|
- qstr := getSearchQuery(keywords, industry, minprice, maxprice, selectType, getBidSearchQuery(area, publishtime, subtype))
|
|
|
+ //qstr := getSearchQuery(keywords, industry, minprice, maxprice, selectType, getBidSearchQuery(area, publishtime, subtype))
|
|
|
+ qstr := getDataExportSql(keywords, industry, minprice, maxprice, subtype, area, selectType, publishtime, buyer, winner)
|
|
|
msgCount = elastic.Count(INDEX, TYPE, qstr)
|
|
|
|
|
|
if msgCount > ExConf.MsgMaxCount {
|
|
@@ -145,6 +175,94 @@ func (de *DataExport2) ToCreateOrderPage(_id string) error {
|
|
|
de.Render("/pc/createOrderPage.html", &de.T)
|
|
|
return nil
|
|
|
}
|
|
|
+func getKeyWordArrFromDbResult(k interface{}) (arr []KeyWord) {
|
|
|
+ if k == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ kArr := k.([]interface{})
|
|
|
+ for _, v := range kArr {
|
|
|
+ kw := KeyWord{}
|
|
|
+ b, e := json.Marshal(v)
|
|
|
+ if e != nil {
|
|
|
+ log.Println(e.Error())
|
|
|
+ }
|
|
|
+ json.Unmarshal(b, &kw)
|
|
|
+ arr = append(arr, kw)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+func getStringArrFromDbResult(c interface{}) (arr []string) {
|
|
|
+ if c != nil {
|
|
|
+ cArr := c.([]interface{})
|
|
|
+ arr = util.ObjArrToStringArr(cArr)
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+func (de *DataExport2) PreviewData(_id string) error {
|
|
|
+ var (
|
|
|
+ query *map[string]interface{}
|
|
|
+ ok bool
|
|
|
+ //查询字段
|
|
|
+ keywords []KeyWord
|
|
|
+ industry []string
|
|
|
+ minprice string
|
|
|
+ maxprice string
|
|
|
+ selectType string
|
|
|
+ area []string
|
|
|
+ publishtime string
|
|
|
+ subtype string
|
|
|
+ buyer []string //招标单位
|
|
|
+ winner []string //中标单位
|
|
|
+ )
|
|
|
+ dataType := de.GetString("dataType")
|
|
|
+ openid := util.ObjToString(de.GetSession("s_m_openid"))
|
|
|
+ if openid == "" {
|
|
|
+ return errors.New("未登录")
|
|
|
+ }
|
|
|
+
|
|
|
+ if query, ok = mongodb.FindById(ExportTable, _id, nil); !ok {
|
|
|
+ return errors.New("未找到搜索记录")
|
|
|
+ }
|
|
|
+
|
|
|
+ keywords = getKeyWordArrFromDbResult((*query)["keywords"])
|
|
|
+ industry = getStringArrFromDbResult((*query)["industry"])
|
|
|
+ minprice = util.ObjToString((*query)["minprice"])
|
|
|
+ maxprice = util.ObjToString((*query)["maxprice"])
|
|
|
+ subtype = util.ObjToString((*query)["subtype"])
|
|
|
+ area = getStringArrFromDbResult((*query)["area"])
|
|
|
+ selectType = util.ObjToString((*query)["selectType"])
|
|
|
+ publishtime = util.ObjToString((*query)["publishtime"])
|
|
|
+ subtype = util.ObjToString((*query)["subtype"])
|
|
|
+ buyer = getStringArrFromDbResult((*query)["buyer"])
|
|
|
+ winner = getStringArrFromDbResult((*query)["winner"])
|
|
|
+
|
|
|
+ dataexport_field := `"_id","title","description","area","city","publishtime","projectname","buyer","winner","bidamount","subtype"`
|
|
|
+ if dataType == "2" {
|
|
|
+ dataexport_field += `,"href","projectcode","buyerperson","buyertel","budget","bidopentime","agency"`
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询
|
|
|
+ qstr := getDataExportSql(keywords, industry, minprice, maxprice, subtype, area, selectType, publishtime, buyer, winner)
|
|
|
+ res := elastic.GetAllByIk(INDEX, TYPE, qstr, "", bidSearch_sort, dataexport_field, 0, 5, 5, false)
|
|
|
+ //格式化输出
|
|
|
+ for k, v := range *res {
|
|
|
+ v["index"] = k + 1
|
|
|
+ if v["bidamount"] != nil {
|
|
|
+ v["bidamount"] = v["bidamount"].(float64) / 10000
|
|
|
+ }
|
|
|
+ if v["publishtime"] != nil {
|
|
|
+ date := v["publishtime"]
|
|
|
+ v["publishtime"] = util.FormatDateWithObj(&date, util.Date_Short_Layout)
|
|
|
+ }
|
|
|
+ if v["_id"] != nil {
|
|
|
+ v["url"] = config.Sysconfig["webdomain"].(string) + "/article/content/" + util.CommonEncodeArticle("content", v["_id"].(string)) + ".html"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ de.T["data"] = res
|
|
|
+ de.T["dataType"] = dataType
|
|
|
+ de.Render("/pc/previewData.html", &de.T)
|
|
|
+ return nil
|
|
|
+}
|
|
|
|
|
|
func (de *DataExport2) SendMailVerify() {
|
|
|
email := de.GetString("email")
|