package app import ( . "code.hoteas.com/golang/hotime" . "code.hoteas.com/golang/hotime/common" "sort" "strings" ) type paixuArr []Map func (x paixuArr) Len() int { return len(x) } func (x paixuArr) Less(i, j int) bool { return x[i].GetCeilInt64("count") > x[j].GetCeilInt64("count") } func (x paixuArr) Swap(i, j int) { x[i], x[j] = x[j], x[i] } var DeclareCtr = Ctr{ "info": func(that *Context) { id := ObjToInt(that.Req.FormValue("id")) if id == 0 { that.Display(3, "请求参数异常") return } res := that.Db.Get("declare", "*", Map{"id": id}) if res == nil { that.Display(4, "找不到通知公告") return } res["click_num"] = res.GetCeilInt64("click_num") + res.GetCeilInt64("click_num_base") + 1 delete(res, "click_num_base") res["favorite_num"] = res.GetCeilInt64("favorite_num") + res.GetCeilInt64("favorite_num_base") delete(res, "favorite_num_base") article := that.Db.Get("article", "*", Map{"id": res.GetCeilInt64("article_id")}) if article != nil { article["click_num"] = article.GetCeilInt64("click_num") + article.GetCeilInt64("click_num_base") + 1 delete(article, "click_num_base") article["favorite_num"] = article.GetCeilInt64("favorite_num") + article.GetCeilInt64("favorite_num_base") delete(article, "favorite_num_base") } res["article"] = article //浏览量加1 that.Db.Update("declare", Map{"click_num[#]": "click_num+1"}, Map{"id": id}) //浏览量加1 that.Db.Update("article", Map{"click_num[#]": "click_num+1"}, Map{"id": res.GetCeilInt64("article_id")}) //查询是否已关注 if that.Session("user_id").Data != nil { favorite := that.Db.Get("favorite", "user_id,declare_id", Map{"AND": Map{"declare_id": id, "user_id": that.Session("user_id").ToCeilInt(), "del_flag": 0}}) res["favorite"] = favorite } that.Display(0, res) }, //政策匹配 "match": func(that *Context) { if that.Session("user_id").Data == nil { that.Display(2, "没有登录") return } user := that.Db.Get("user", "*", Map{"id": that.Session("user_id").Data}) if user == nil { that.Display(4, "找不到用户") return } companyName := that.Req.FormValue("company_name") if companyName == "" { that.Display(3, "参数错误") return } qu := that.Req.FormValue("register_address") qus := strings.Split(qu, "/") for _, v := range qus { if v != "" { qu = v } } if !strings.Contains(qu, "区") && !strings.Contains(qu, "县") { qu = "没有此项数据随意填充的" } company := that.Db.Get("company", "*", Map{"user_id": that.Session("user_id").Data}) delete(company, "id") delete(company, "salesman_id") delete(company, "provider_id") delete(company, "user_id") delete(company, "del_flag") delete(company, "state") delete(company, "create_time") delete(company, "modify_time") data := Map{} for k, _ := range company { if that.Req.Form[k] != nil { if k == "technology_center_flag" || k == "engineering_center_flag" || k == "engineering_laboratory_flag" || k == "key_laboratory_flag" || k == "industrial_design_center_flag" { data[k] = ObjToStr(that.Req.Form[k]) } else { data[k] = that.Req.FormValue(k) } } } //如果企业名称相同则允许变更企业信息 if companyName == company.GetString("name") { that.Db.Update("company", company, Map{"user_id": that.Session("user_id").Data}) } if companyName != company.GetString("name") { //扫码绑定后,第一次使用匹配功能,自动进行认证,并更新企业信息 if user.GetCeilInt("certification_flag") == 0 && user.GetCeilInt64("salesman_id") != 0 { that.Db.Update("user", Map{"certification_flag": 1}, Map{"id": user.GetCeilInt("id")}) company["name"] = companyName that.Db.Update("company", company, Map{"user_id": that.Session("user_id").Data}) } //其余情况,不存储数据 } tags := that.Req.Form["tags"] declares := map[int64]Map{} //标签分析 if tags != nil { for _, v := range tags { dtag := that.Db.Select("declare_tag", Map{"[><]`declare`": "declare_tag.declare_id=declare.id"}, "declare_tag.declare_id", Map{"AND": Map{"OR": Map{"declare.policy_level": Slice{"省", "市"}, "declare.dispatch_department[~]": qu}, "declare_tag.tag_id": v}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["tag_count"] = 1 } } } //企业规模分析 dtag := that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "company_scale[<=]": ObjToInt(that.Req.FormValue("company_scale"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["company_scale_count"] = 1 } //是否是有效期内的科技型中小企业称号:0-否,1-是 if ObjToInt(that.Req.FormValue("smes_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "smes_flag": ObjToInt(that.Req.FormValue("smes_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["smes_flag_count"] = 1 } } //是否是有效期内的高新区技术企业称号:0-否,1-是 if ObjToInt(that.Req.FormValue("htzte_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "htzte_flag": ObjToInt(that.Req.FormValue("htzte_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["htzte_flag_count"] = 1 } } //是否是有效期内的工程中心称号:0-否,1-市级,2-省级,3-国家级 flags := that.Req.Form["engineering_center_flag"] flagslice := Slice{} if flags != nil { for _, v := range flags { if v == "0" { continue } flagslice = append(flagslice, v) } } dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "engineering_center_flag": flagslice}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["engineering_center_flag_count"] = 1 } //是否是有效期内的工程实验室称号:0-否,1-市级,2-省级,3-国家级 flags = that.Req.Form["engineering_laboratory_flag"] flagslice = Slice{} if flags != nil { for _, v := range flags { if v == "0" { continue } flagslice = append(flagslice, v) } } dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "engineering_laboratory_flag": flagslice}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["engineering_laboratory_flag_count"] = 1 } //是否是有效期内的重点实验室称号:0-否,1-市级,2-省级,3-国家级 flags = that.Req.Form["key_laboratory_flag"] flagslice = Slice{} if flags != nil { for _, v := range flags { if v == "0" { continue } flagslice = append(flagslice, v) } } dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "key_laboratory_flag": flagslice}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["key_laboratory_flag_count"] = 1 } //是否是有效期内的工业设计中心称号:0-否,1-市级,2-省级,3-国家级 flags = that.Req.Form["industrial_design_center_flag"] flagslice = Slice{} if flags != nil { for _, v := range flags { if v == "0" { continue } flagslice = append(flagslice, v) } } dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "industrial_design_center_flag": flagslice}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["industrial_design_center_flag_count"] = 1 } //上年度有无研发投入:0-否,1-是 if ObjToInt(that.Req.FormValue("research_input_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"del_flag": 0, "research_input_flag": ObjToInt(that.Req.FormValue("research_input_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["research_input_flag_count"] = 1 } } //有无授权发明专利:0-否,1-是 if ObjToInt(that.Req.FormValue("invention_patent_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "invention_patent_flag": ObjToInt(that.Req.FormValue("invention_patent_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["invention_patent_flag_count"] = 1 } } //有无国际科技合作:0-否,1-是 if ObjToInt(that.Req.FormValue("international_cooperation_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "international_cooperation_flag": ObjToInt(that.Req.FormValue("international_cooperation_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["international_cooperation_flag_count"] = 1 } } //上年度有无固定资产投入:0-否,1-是 if ObjToInt(that.Req.FormValue("investment_fixed_assets_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "investment_fixed_assets_flag": ObjToInt(that.Req.FormValue("investment_fixed_assets_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["investment_fixed_assets_flag_count"] = 1 } } //高层次人才情况:0-否,1-3个及以上博士-1,2-1个及以上博士-2,3-知名企业中高管1个及以上 dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "high_level_talents_flag": ObjToInt(that.Req.FormValue("high_level_talents_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["high_level_talents_flag_count"] = 1 } //企业股东或成员是否有国内外高校或科研院在编、全职人员:0-否,1-是 if ObjToInt(that.Req.FormValue("shareholders_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "shareholders_flag": ObjToInt(that.Req.FormValue("shareholders_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["shareholders_flag_count"] = 1 } } //企业有无从外地引进博士学历人才:0-否,1-是 if ObjToInt(that.Req.FormValue("nonlocal_dr_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "nonlocal_dr_flag": ObjToInt(that.Req.FormValue("nonlocal_dr_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["nonlocal_dr_flag"] = 1 } } //上年度是否有贷款/融资或未来有贷款/融资计划:0-否,1-是 if ObjToInt(that.Req.FormValue("loan_flag")) > 0 { dtag = that.Db.Select("declare", "id AS declare_id", Map{"AND": Map{"OR": Map{"policy_level": Slice{"省", "市"}, "dispatch_department[~]": qu}, "del_flag": 0, "loan_flag": ObjToInt(that.Req.FormValue("loan_flag"))}}) for _, v1 := range dtag { if declares[v1.GetCeilInt64("declare_id")] == nil { declares[v1.GetCeilInt64("declare_id")] = v1 } declares[v1.GetCeilInt64("declare_id")]["count"] = declares[v1.GetCeilInt64("declare_id")].GetCeilInt64("count") + 1 declares[v1.GetCeilInt64("declare_id")]["loan_flag"] = 1 } } px := paixuArr{} for _, v := range declares { px = append(px, v) } //获取到排序后的数据 sort.Sort(px) var res []Map for _, v := range px { id := v.GetCeilInt("declare_id") article := that.Db.Get("article", "id,title,description,department_id,click_num+click_num_base AS click_num,"+ "favorite_num_base+favorite_num AS favorite_num,dispatch_num,dispatch_name,prepare_date,release_time,expire_date,area_id,status,declare_id,declare_id,declare_id", Map{"declare_id": id}) article["declare"] = that.Db.Get("declare", "money_scope_min,money_scope_max,status", Map{"id": id}) res = append(res, article) } minMoney := float64(0) maxMoney := float64(0) for _, v := range res { if v.GetMap("declare") != nil { if v.GetMap("declare").GetFloat64("money_scope_min") < minMoney { minMoney = v.GetMap("declare").GetFloat64("money_scope_min") } if v.GetMap("declare").GetFloat64("money_scope_max") > maxMoney { maxMoney = v.GetMap("declare").GetFloat64("money_scope_max") } } } seData := Map{ "user_id": that.Session("user_id").Data, "search_company_name": companyName, "policy_match_count": len(res), "json_data": ObjToStr(company), "create_time[#]": "now()", "modify_time[#]": "now()", "del_flag": 0, } if maxMoney != minMoney { seData["money_scope"] = ObjToStr(minMoney) + "-" + ObjToStr(maxMoney) + "万元" } else if maxMoney == 0 { seData["money_scope"] = "" } else { seData["money_scope"] = ObjToStr(maxMoney) + "万元" } //匹配记录存储 that.Db.Insert("search_record", seData) that.Display(0, res) }, //用户微信公众号或者小程序登录 "search": func(that *Context) { page := ObjToInt(that.Req.FormValue("page")) pageSize := ObjToInt(that.Req.FormValue("pageSize")) if page < 1 { page = 1 } if pageSize <= 0 { pageSize = 20 } data := Map{"del_flag": 0, "declare_id[!]": nil} keywords := that.Req.FormValue("keywords") if keywords != "" { data["OR"] = Map{"title[~]": keywords, "description[~]": keywords, "content[~]": keywords} } startTime := that.Req.FormValue("starttime") finishTime := that.Req.FormValue("finishtime") if startTime != "" { data["release_date[>=]"] = startTime } if finishTime != "" { data["release_date[<=]"] = finishTime } dispatchName := that.Req.FormValue("dispatch_name") if dispatchName != "" { data["dispatch_name"] = dispatchName } if len(data) > 1 { data = Map{"AND": data, "ORDER": "release_time DESC"} } count := that.Db.Count("article", data) res := that.Db.Page(page, pageSize).PageSelect("article", "id,title,description,department_id,click_num+click_num_base AS click_num,"+ "favorite_num_base+favorite_num AS favorite_num,dispatch_num,dispatch_name,prepare_date,release_time,expire_date,area_id,status,declare_id,declare_id,declare_id", data) for _, v := range res { //if v.GetCeilInt("declare_id")>0{ // v["declare"]=that.Db.Get("declare","id,tag",Map{"id":v.GetCeilInt("declare_id")}) //} //if v.GetCeilInt("declare_id")>0{ // v["declare"]=that.Db.Get("declare","tag",Map{"id":v.GetCeilInt("declare_id")}) //} if v.GetCeilInt("declare_id") > 0 { v["declare"] = that.Db.Get("declare", "money_scope_min,money_scope_max,status", Map{"id": v.GetCeilInt("declare_id")}) } } that.Display(0, Map{"total": count, "data": res}) }, }