|
@@ -43,9 +43,14 @@ var (
|
|
|
bidSearch_sort = `{"dataweight":-1,"publishtime":-1}`
|
|
|
bidSearch_field_file = `,"filetext","isValidFile"`
|
|
|
bidSearch_domain_field_1 = bidSearch_field_1 + `,"purchasing","s_winner","buyer"` + bidSearch_field_file //领域数据字段基本字段
|
|
|
+
|
|
|
+ BidSearchFieldBase = `"_id","title","publishtime","dataweight","toptype","subtype","type","area","city","s_subscopeclass","bidamount","budget","buyerclass","spidercode","site","projectname","projectcode"` //搜索列表基础字段
|
|
|
+ BidSearchFieldOfVip = BidSearchFieldBase + `,"buyer","buyertel","buyerperson","agency","agencytel","agencyperson","s_winner","winnertel","winnerperson","signendtime","bidendtime","bidopentime","budget","projectinfo","entidlist"` //付费列表字段
|
|
|
+ BidSearchFieldFile = `,"isValidFile"`
|
|
|
+ BidSearchDomainField = BidSearchFieldOfVip + `,"purchasing"` //领域数据字段基本字段
|
|
|
)
|
|
|
|
|
|
-// 剑鱼标讯推送三级页点赞暂弃 改成剑鱼标讯实验室点赞功能
|
|
|
+// Praise 剑鱼标讯推送三级页点赞暂弃 改成剑鱼标讯实验室点赞功能
|
|
|
func (m *Front) Praise() error {
|
|
|
defer util.Catch()
|
|
|
var flag = "F"
|
|
@@ -79,8 +84,117 @@ func (m *Front) Searchinfolist(p string) error {
|
|
|
return m.Redirect("/jylab/supsearch/index.html")
|
|
|
}
|
|
|
|
|
|
-// ajax分页请求
|
|
|
+// PcAjaxReq ajax分页请求
|
|
|
func (m *Front) PcAjaxReq() {
|
|
|
+ territorialization := m.GetString("bid_field") // 领域类型 0101- 医疗
|
|
|
+ tabularflag := m.GetString("tabularflag")
|
|
|
+ userId := util.ObjToString(m.GetSession("userId"))
|
|
|
+ phone := util.ObjToString(m.GetSession("phone"))
|
|
|
+ baseUserId := m.GetSession("base_user_id")
|
|
|
+ currentPage, _ := m.GetInteger("pageNumber")
|
|
|
+ pageSize, _ := m.GetInteger("pageSize")
|
|
|
+ if pageSize == 0 {
|
|
|
+ pageSize = 50
|
|
|
+ }
|
|
|
+ //userId = "63c11681800b227df5874680"//免费
|
|
|
+ //userId = "63d5cc0098f6fae01592ea7f" //付费
|
|
|
+ if tabularflag == "Y" && userId == "" {
|
|
|
+ //判断用户是否登录进行表格查询,否则返回基本数据
|
|
|
+ tabularflag = ""
|
|
|
+ }
|
|
|
+ userInfo := jy.GetVipState(m.Session(), *config.Middleground, userId)
|
|
|
+ if territorialization != "" { // 如果是领域化数据 判断是否是付费用户 是否有权限
|
|
|
+ if (userInfo.BigMember <= 0 && userInfo.VipState <= 0) || (!jy.HasBidFieldPower(config.Middleground, util.Int64All(baseUserId), MedicalFunctionCode)) {
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "list": []map[string]interface{}{},
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ area := m.GetString("area")
|
|
|
+ subtype := m.GetString("subtype")
|
|
|
+ toptype := m.GetString("toptype") //信息类型
|
|
|
+ publishtime := m.GetString("publishtime")
|
|
|
+ selectType := m.GetString("selectType")
|
|
|
+ if selectType == "" {
|
|
|
+ selectType = "title,content"
|
|
|
+ }
|
|
|
+ industry := strings.TrimSpace(m.GetString("industry"))
|
|
|
+ minprice := m.GetString("minprice") //最低价格
|
|
|
+ maxprice := m.GetString("maxprice") //最高价格
|
|
|
+ fileExists := m.GetString("fileExists") //是否有附件--所有用户都可用此功能 0:全部;1:有附件;-1:无附件
|
|
|
+ searchGroup, _ := m.GetInteger("searchGroup") //搜索分组;默认0:全部;1:招标采购搜索;2:超前项目。
|
|
|
+ searchMode, _ := m.GetInteger("searchMode") //搜索模式;默认0:精准模式(不进行系统分词);1:模糊模式(进行系统分词)。
|
|
|
+ wordsMode, _ := m.GetInteger("wordsMode") //搜索关键词模式;默认0:包含所有关键词;1:包含任意关键词。
|
|
|
+ additionalWords := m.GetString("additionalWords") //关键词:附加关键词(副:五组,每组最多15个字符 每组,号隔开)
|
|
|
+ var (
|
|
|
+ //高级筛选 仅付费用户可查询
|
|
|
+ hasBuyerTel, hasWinnerTel string //是否有采购单位电话、是否有中标单位电话 y:有 n:没有
|
|
|
+ buyerclass string //采购单位类别
|
|
|
+ notkey string //排除词
|
|
|
+ isPayedUser bool
|
|
|
+ queryItems []string
|
|
|
+ city string //城市
|
|
|
+ count, total int64
|
|
|
+ isLimit = 1
|
|
|
+ list []*map[string]interface{}
|
|
|
+ heightKeys string //需要高亮的关键词
|
|
|
+ )
|
|
|
+ queryItems = userInfo.GetQueryItems(selectType, util.Int64All(config.Sysconfig["bidSearchOldUserLimit"]))
|
|
|
+ isPayedUser = userInfo.IsPayedUser()
|
|
|
+ if isPayedUser {
|
|
|
+ buyerclass = m.GetString("buyerclass")
|
|
|
+ hasBuyerTel, hasWinnerTel = m.GetString("buyertel"), m.GetString("winnertel")
|
|
|
+ notkey = util.If(strings.Contains(m.GetString("notkey"), ","), strings.ReplaceAll(m.GetString("notkey"), ",", " "), m.GetString("notkey")).(string)
|
|
|
+ city = m.GetString("city")
|
|
|
+ }
|
|
|
+ if userId == "" {
|
|
|
+ //未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
|
|
|
+ if subtype == "" {
|
|
|
+ subtype = "招标预告,招标公告,招标结果,招标信用信息"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ b_word, a_word, s_word := jy.InterceptSearchKW(m.GetString("searchvalue"), util.IntAllDef(config.Sysconfig["keywordsLimit"], 35), len(industry) == 0)
|
|
|
+ if len(s_word) > 0 || len(industry) > 0 || strings.TrimSpace(additionalWords) != "" {
|
|
|
+ searchLimit := public.IsSearchLimit(queryItems)
|
|
|
+ //未登录用户标题、正文都限制,已登录用户只限制正文
|
|
|
+ if userId == "" {
|
|
|
+ searchLimit = true
|
|
|
+ }
|
|
|
+ //全文检索限制
|
|
|
+ if searchLimit {
|
|
|
+ //limitFlag = public.Lst.Flag
|
|
|
+ isLimit = public.Lst.IsLimited(m.Request, m.ResponseWriter, m.Session(), isPayedUser)
|
|
|
+ if isLimit == 1 { //没有被限制
|
|
|
+ defer public.Lst.Limit()
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if isLimit == 1 {
|
|
|
+ searchTypeSwitch, _ := config.Sysconfig["searchTypeSwitch"].(bool)
|
|
|
+ so := NewSearchOptimize(userId, phone, area, city, subtype, toptype, publishtime, strings.Join(queryItems, ","), fmt.Sprintf("%s-%s", minprice, maxprice), industry, buyerclass, hasBuyerTel, hasWinnerTel, fileExists, s_word, additionalWords, notkey, "PC", territorialization, currentPage, pageSize, searchGroup, searchMode, wordsMode, *userInfo, searchTypeSwitch)
|
|
|
+ m.SetSession("selectType", so.SelectType)
|
|
|
+ heightKeys = so.HeightKeys
|
|
|
+ count, total, list = so.GetBidSearchList(false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "limitFlag": false,
|
|
|
+ "status": isLimit,
|
|
|
+ "list": list,
|
|
|
+ "count": count,
|
|
|
+ "total": total,
|
|
|
+ "totalPage": (count + 1) / int64(pageSize),
|
|
|
+ "interceptOtherWord": a_word, //截取后 用于提示的关键词
|
|
|
+ "interceptKeyWords": b_word, //超出限制长度 截取后的关键词
|
|
|
+ "interceptLimit": util.IntAllDef(config.Sysconfig["keywordsLimit"], 35), //限制额度
|
|
|
+ "keywords": m.GetString("searchvalue"), //关键词
|
|
|
+ "heightWords": heightKeys, //需要高亮的关键词词组 主关键词和附加词合并
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// PcAjaxReq_bak ajax分页请求 备份
|
|
|
+func (m *Front) PcAjaxReq_Bak() {
|
|
|
bidField := m.GetString("bid_field") // 领域类型 0101- 医疗
|
|
|
tabularflag := m.GetString("tabularflag")
|
|
|
userId := util.ObjToString(m.GetSession("userId"))
|
|
@@ -207,6 +321,7 @@ func (m *Front) PcAjaxReq() {
|
|
|
"status": isLimit,
|
|
|
"list": list,
|
|
|
"count": count,
|
|
|
+ "total": config.Sysconfig["defaultTotal"],
|
|
|
"totalPage": totalPage,
|
|
|
"interceptWord": a_word,
|
|
|
"interceptLimit": util.IntAllDef(config.Sysconfig["keywordsLimit"], 35),
|
|
@@ -803,152 +918,152 @@ func (m *Front) PcVisitRedirect(sid string) {
|
|
|
|
|
|
// 数据转换
|
|
|
func bidDataConvert(id string, datas *[]map[string]interface{}) (array []map[string]interface{}) {
|
|
|
- if datas == nil || len(*datas) == 0 {
|
|
|
- return array
|
|
|
- }
|
|
|
- index := 0
|
|
|
- public.BidListConvert("", datas)
|
|
|
- for _, v := range *datas {
|
|
|
- if len(array) >= 10 {
|
|
|
- break
|
|
|
- }
|
|
|
- _id, _ := v["_id"].(string)
|
|
|
- if _id == id {
|
|
|
- continue
|
|
|
- }
|
|
|
- v["_id"] = encrypt.EncodeArticleId2ByCheck(_id)
|
|
|
- area, _ := v["area"].(string)
|
|
|
- if area == "A" {
|
|
|
- v["area"] = ""
|
|
|
- }
|
|
|
- tp, _ := v["subtype"].(string)
|
|
|
- if tp == "" {
|
|
|
- tp, _ = v["toptype"].(string)
|
|
|
- }
|
|
|
- if tp == "" {
|
|
|
- tp, _ = v["type"].(string)
|
|
|
- if tp == "bid" {
|
|
|
- tp = "中标"
|
|
|
- } else if tp == "tender" {
|
|
|
- tp = "招标"
|
|
|
- } else {
|
|
|
- tp = ""
|
|
|
- }
|
|
|
- }
|
|
|
- indtry := util.ObjToString(v["industry"])
|
|
|
- v["stypeadd"], v["areaadd"], v["indadd"] = classify(tp, area, indtry)
|
|
|
- v["type"] = tp
|
|
|
- diff := ""
|
|
|
- publishtime, _ := v["publishtime"].(float64)
|
|
|
- if publishtime != 0 {
|
|
|
- diff = util.TimeDiff(time.Unix(util.Int64All(publishtime), 0))
|
|
|
- v["pbtime"] = util.Int64All(publishtime)
|
|
|
- }
|
|
|
- v["publishtime"] = diff
|
|
|
- index++
|
|
|
- v["index"] = index
|
|
|
- array = append(array, v)
|
|
|
- }
|
|
|
- return array
|
|
|
+ if datas == nil || len(*datas) == 0 {
|
|
|
+ return array
|
|
|
+ }
|
|
|
+ index := 0
|
|
|
+ public.BidListConvert("", datas)
|
|
|
+ for _, v := range *datas {
|
|
|
+ if len(array) >= 10 {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ _id, _ := v["_id"].(string)
|
|
|
+ if _id == id {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ v["_id"] = encrypt.EncodeArticleId2ByCheck(_id)
|
|
|
+ area, _ := v["area"].(string)
|
|
|
+ if area == "A" {
|
|
|
+ v["area"] = ""
|
|
|
+ }
|
|
|
+ tp, _ := v["subtype"].(string)
|
|
|
+ if tp == "" {
|
|
|
+ tp, _ = v["toptype"].(string)
|
|
|
+ }
|
|
|
+ if tp == "" {
|
|
|
+ tp, _ = v["type"].(string)
|
|
|
+ if tp == "bid" {
|
|
|
+ tp = "中标"
|
|
|
+ } else if tp == "tender" {
|
|
|
+ tp = "招标"
|
|
|
+ } else {
|
|
|
+ tp = ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ indtry := util.ObjToString(v["industry"])
|
|
|
+ v["stypeadd"], v["areaadd"], v["indadd"] = classify(tp, area, indtry)
|
|
|
+ v["type"] = tp
|
|
|
+ diff := ""
|
|
|
+ publishtime, _ := v["publishtime"].(float64)
|
|
|
+ if publishtime != 0 {
|
|
|
+ diff = util.TimeDiff(time.Unix(util.Int64All(publishtime), 0))
|
|
|
+ v["pbtime"] = util.Int64All(publishtime)
|
|
|
+ }
|
|
|
+ v["publishtime"] = diff
|
|
|
+ index++
|
|
|
+ v["index"] = index
|
|
|
+ array = append(array, v)
|
|
|
+ }
|
|
|
+ return array
|
|
|
}
|
|
|
|
|
|
// 剑鱼标讯保存
|
|
|
func (m *Front) AjaxReq() error {
|
|
|
- defer util.Catch()
|
|
|
- reqType := m.GetString("reqType")
|
|
|
- var flag = "n"
|
|
|
- switch reqType {
|
|
|
- case "feedback": //意见反馈
|
|
|
- data := make(map[string]interface{})
|
|
|
- userId, ok := m.GetSession("userId").(string)
|
|
|
- if !ok || userId == "" {
|
|
|
- break
|
|
|
- }
|
|
|
+ defer util.Catch()
|
|
|
+ reqType := m.GetString("reqType")
|
|
|
+ var flag = "n"
|
|
|
+ switch reqType {
|
|
|
+ case "feedback": //意见反馈
|
|
|
+ data := make(map[string]interface{})
|
|
|
+ userId, ok := m.GetSession("userId").(string)
|
|
|
+ if !ok || userId == "" {
|
|
|
+ break
|
|
|
+ }
|
|
|
userInfo := jyutil.Compatible.Select(userId, `{"s_nickname":1,"s_name":1,"s_phone":1}`)
|
|
|
if userInfo == nil {
|
|
|
- break
|
|
|
- }
|
|
|
- data["i_type"] = 8
|
|
|
- data["s_fromName"] = m.GetString("fromName")
|
|
|
- value := m.GetString("value")
|
|
|
- if len([]rune(value)) > 200 {
|
|
|
- value = util.SubString(value, 0, 200)
|
|
|
- }
|
|
|
- data["s_remark"] = value
|
|
|
- s_nickname := ""
|
|
|
- if (*userInfo)["s_nickname"] != nil {
|
|
|
- s_nickname, _ = (*userInfo)["s_nickname"].(string)
|
|
|
- }
|
|
|
- s_name := ""
|
|
|
- if (*userInfo)["s_name"] != nil {
|
|
|
- s_name, _ = (*userInfo)["s_name"].(string)
|
|
|
- }
|
|
|
- s_phone, _ := (*userInfo)["s_phone"].(string)
|
|
|
- if s_name != "" {
|
|
|
- data["s_submitname"] = s_name
|
|
|
- } else if s_nickname != "" {
|
|
|
- data["s_submitname"] = s_nickname
|
|
|
- } else if s_phone != "" {
|
|
|
- data["s_submitname"] = s_phone
|
|
|
- } else {
|
|
|
- data["s_submitname"] = userId
|
|
|
- }
|
|
|
- data["s_submitid"] = userId
|
|
|
- data["s_title"] = m.GetString("title")
|
|
|
- data["i_status"] = 0
|
|
|
- if s_nickname != "" { //昵称
|
|
|
- data["s_username"] = s_nickname
|
|
|
- } else if s_name != "" { //s_name
|
|
|
- data["s_username"] = s_name
|
|
|
- } else if s_phone != "" { //s_name
|
|
|
- data["s_username"] = s_phone
|
|
|
- } else { //s_name
|
|
|
- data["s_username"] = userId
|
|
|
- }
|
|
|
- data["l_submitdate"] = time.Now().Unix()
|
|
|
- data["s_source"] = m.GetString("source")
|
|
|
- data["s_fkid"] = m.GetString("fkid")
|
|
|
- data["s_from"] = "wx"
|
|
|
- id := mongodb.Save("interaction", data)
|
|
|
- if len(id) > 0 {
|
|
|
- flag = "y"
|
|
|
- }
|
|
|
- break
|
|
|
- case "subscribe": //直接订阅
|
|
|
- if userid := m.GetSession("userId"); userid != nil {
|
|
|
- o_jy := jy.GetSubScribeInfo(m.Session(), mongodb, "f", "10000")
|
|
|
- a_key, _ := (*o_jy)["a_key"].([]interface{})
|
|
|
- keysArray := processKeyword(m.GetString("keys"))
|
|
|
- if keysArray == nil {
|
|
|
- break
|
|
|
- }
|
|
|
- var isExists bool
|
|
|
- for _, v := range a_key {
|
|
|
- //count := 0
|
|
|
- //for _, kay := range keysArray {
|
|
|
- keyMap, _ := v.(map[string]interface{})
|
|
|
- key, _ := keyMap["key"].([]interface{})
|
|
|
- kystr := ""
|
|
|
- for _, ky := range key {
|
|
|
- kystr = kystr + " " + ky.(string)
|
|
|
- }
|
|
|
- if strings.TrimSpace(m.GetString("keys")) == strings.TrimSpace(kystr) {
|
|
|
- isExists = true
|
|
|
- flag = "y"
|
|
|
- break
|
|
|
- }
|
|
|
- //}
|
|
|
- //if count == len(keysArray) {
|
|
|
- // isExists = true
|
|
|
- // flag = "y"
|
|
|
- // break
|
|
|
- //}
|
|
|
- }
|
|
|
- //如果不存在
|
|
|
- if !isExists {
|
|
|
- if len(a_key) >= 10 {
|
|
|
- flag = "o"
|
|
|
- } else {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ data["i_type"] = 8
|
|
|
+ data["s_fromName"] = m.GetString("fromName")
|
|
|
+ value := m.GetString("value")
|
|
|
+ if len([]rune(value)) > 200 {
|
|
|
+ value = util.SubString(value, 0, 200)
|
|
|
+ }
|
|
|
+ data["s_remark"] = value
|
|
|
+ s_nickname := ""
|
|
|
+ if (*userInfo)["s_nickname"] != nil {
|
|
|
+ s_nickname, _ = (*userInfo)["s_nickname"].(string)
|
|
|
+ }
|
|
|
+ s_name := ""
|
|
|
+ if (*userInfo)["s_name"] != nil {
|
|
|
+ s_name, _ = (*userInfo)["s_name"].(string)
|
|
|
+ }
|
|
|
+ s_phone, _ := (*userInfo)["s_phone"].(string)
|
|
|
+ if s_name != "" {
|
|
|
+ data["s_submitname"] = s_name
|
|
|
+ } else if s_nickname != "" {
|
|
|
+ data["s_submitname"] = s_nickname
|
|
|
+ } else if s_phone != "" {
|
|
|
+ data["s_submitname"] = s_phone
|
|
|
+ } else {
|
|
|
+ data["s_submitname"] = userId
|
|
|
+ }
|
|
|
+ data["s_submitid"] = userId
|
|
|
+ data["s_title"] = m.GetString("title")
|
|
|
+ data["i_status"] = 0
|
|
|
+ if s_nickname != "" { //昵称
|
|
|
+ data["s_username"] = s_nickname
|
|
|
+ } else if s_name != "" { //s_name
|
|
|
+ data["s_username"] = s_name
|
|
|
+ } else if s_phone != "" { //s_name
|
|
|
+ data["s_username"] = s_phone
|
|
|
+ } else { //s_name
|
|
|
+ data["s_username"] = userId
|
|
|
+ }
|
|
|
+ data["l_submitdate"] = time.Now().Unix()
|
|
|
+ data["s_source"] = m.GetString("source")
|
|
|
+ data["s_fkid"] = m.GetString("fkid")
|
|
|
+ data["s_from"] = "wx"
|
|
|
+ id := mongodb.Save("interaction", data)
|
|
|
+ if len(id) > 0 {
|
|
|
+ flag = "y"
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case "subscribe": //直接订阅
|
|
|
+ if userid := m.GetSession("userId"); userid != nil {
|
|
|
+ o_jy := jy.GetSubScribeInfo(m.Session(), mongodb, "f", "10000")
|
|
|
+ a_key, _ := (*o_jy)["a_key"].([]interface{})
|
|
|
+ keysArray := processKeyword(m.GetString("keys"))
|
|
|
+ if keysArray == nil {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ var isExists bool
|
|
|
+ for _, v := range a_key {
|
|
|
+ //count := 0
|
|
|
+ //for _, kay := range keysArray {
|
|
|
+ keyMap, _ := v.(map[string]interface{})
|
|
|
+ key, _ := keyMap["key"].([]interface{})
|
|
|
+ kystr := ""
|
|
|
+ for _, ky := range key {
|
|
|
+ kystr = kystr + " " + ky.(string)
|
|
|
+ }
|
|
|
+ if strings.TrimSpace(m.GetString("keys")) == strings.TrimSpace(kystr) {
|
|
|
+ isExists = true
|
|
|
+ flag = "y"
|
|
|
+ break
|
|
|
+ }
|
|
|
+ //}
|
|
|
+ //if count == len(keysArray) {
|
|
|
+ // isExists = true
|
|
|
+ // flag = "y"
|
|
|
+ // break
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ //如果不存在
|
|
|
+ if !isExists {
|
|
|
+ if len(a_key) >= 10 {
|
|
|
+ flag = "o"
|
|
|
+ } else {
|
|
|
if jyutil.Compatible.Update(util.ObjToString(userid),
|
|
|
bson.M{
|
|
|
"$push": bson.M{"o_jy.a_key": bson.M{"key": keysArray, "notkey": []string{}, "from": 1}},
|
|
@@ -956,6 +1071,20 @@ func (m *Front) AjaxReq() error {
|
|
|
}) {
|
|
|
flag = "y"
|
|
|
}
|
|
|
+ } else {
|
|
|
+ query := map[string]interface{}{
|
|
|
+ "i_userid": util.Int64All(m.GetSession("entUserId")),
|
|
|
+ "i_entid": util.Int64All(m.GetSession("entId")),
|
|
|
+ "i_type": 1,
|
|
|
+ }
|
|
|
+ if mongodb.Update("entniche_rule", query,
|
|
|
+ bson.M{
|
|
|
+ "$push": bson.M{"o_entniche.a_key": bson.M{"key": keysArray, "notkey": []string{}, "from": 1}},
|
|
|
+ "$set": bson.M{"i_ts_guide": 1, "o_entniche.l_modifydate": time.Now().Unix()},
|
|
|
+ }, true, false) {
|
|
|
+ flag = "y"
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
}
|
|
@@ -969,96 +1098,96 @@ func (m *Front) AjaxReq() error {
|
|
|
}
|
|
|
|
|
|
const (
|
|
|
- INDEX = "bidding"
|
|
|
- TYPE = "bidding"
|
|
|
- FINDF = `"title"`
|
|
|
+ INDEX = "bidding"
|
|
|
+ TYPE = "bidding"
|
|
|
+ FINDF = `"title"`
|
|
|
)
|
|
|
|
|
|
// 预览结果
|
|
|
func (m *Front) WxpushView() error {
|
|
|
- defer util.Catch()
|
|
|
- userid := util.ObjToString(m.GetSession("userId"))
|
|
|
- openid := util.ObjToString(m.GetSession("s_m_openid"))
|
|
|
- pageSize, _ := m.GetInteger("pageSize")
|
|
|
- if openid == "" || userid == "" {
|
|
|
- return m.Redirect("/swordfish/share/-1")
|
|
|
- }
|
|
|
- a_key, list := public.PushViewDatas(userid, "", bidSearch_field_1, 1, pageSize)
|
|
|
- public.BidListConvert("", list)
|
|
|
- m.T["firstPage"] = list
|
|
|
- m.T["hasNextPage"] = list != nil && len(*list) == pageSize
|
|
|
- m.T["pageSize"] = pageSize
|
|
|
- m.T["a_key"] = a_key
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
- m.T["openid"] = se.EncodeString(openid)
|
|
|
- return m.Render("/weixin/resultpreview.html", &m.T)
|
|
|
+ defer util.Catch()
|
|
|
+ userid := util.ObjToString(m.GetSession("userId"))
|
|
|
+ openid := util.ObjToString(m.GetSession("s_m_openid"))
|
|
|
+ pageSize, _ := m.GetInteger("pageSize")
|
|
|
+ if openid == "" || userid == "" {
|
|
|
+ return m.Redirect("/swordfish/share/-1")
|
|
|
+ }
|
|
|
+ a_key, list := public.PushViewDatas(userid, "", bidSearch_field_1, 1, pageSize)
|
|
|
+ public.BidListConvert("", list)
|
|
|
+ m.T["firstPage"] = list
|
|
|
+ m.T["hasNextPage"] = list != nil && len(*list) == pageSize
|
|
|
+ m.T["pageSize"] = pageSize
|
|
|
+ m.T["a_key"] = a_key
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ m.T["openid"] = se.EncodeString(openid)
|
|
|
+ return m.Render("/weixin/resultpreview.html", &m.T)
|
|
|
}
|
|
|
func (m *Front) WxpushViewPaging() {
|
|
|
- defer util.Catch()
|
|
|
- var list *[]map[string]interface{}
|
|
|
- pageNum, _ := m.GetInteger("pageNum")
|
|
|
- pageSize, _ := m.GetInteger("pageSize")
|
|
|
- if userid := m.Session().Get("userId"); userid != nil {
|
|
|
- _, list = public.PushViewDatas(userid.(string), "", bidSearch_field_1, pageNum, pageSize)
|
|
|
- }
|
|
|
- public.BidListConvert("", list)
|
|
|
- m.ServeJson(map[string]interface{}{
|
|
|
- "list": list,
|
|
|
- "hasNextPage": list != nil && len(*list) == bidsearch.SearchMaxPageCount_WX,
|
|
|
- })
|
|
|
+ defer util.Catch()
|
|
|
+ var list *[]map[string]interface{}
|
|
|
+ pageNum, _ := m.GetInteger("pageNum")
|
|
|
+ pageSize, _ := m.GetInteger("pageSize")
|
|
|
+ if userid := m.Session().Get("userId"); userid != nil {
|
|
|
+ _, list = public.PushViewDatas(userid.(string), "", bidSearch_field_1, pageNum, pageSize)
|
|
|
+ }
|
|
|
+ public.BidListConvert("", list)
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "list": list,
|
|
|
+ "hasNextPage": list != nil && len(*list) == bidsearch.SearchMaxPageCount_WX,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
func (m *Front) Guide(sign string) error {
|
|
|
- defer util.Catch()
|
|
|
- if m.Session().Get("userId") == nil || m.Session().Get("s_m_openid") == nil {
|
|
|
- return m.Redirect("/swordfish/share/-1")
|
|
|
- }
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
- m.T["openid"] = se.EncodeString(myopenid)
|
|
|
- m.T["sign"] = sign
|
|
|
- if sign == "other" {
|
|
|
+ defer util.Catch()
|
|
|
+ if m.Session().Get("userId") == nil || m.Session().Get("s_m_openid") == nil {
|
|
|
+ return m.Redirect("/swordfish/share/-1")
|
|
|
+ }
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
+ m.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ m.T["sign"] = sign
|
|
|
+ if sign == "other" {
|
|
|
userInfo := jyutil.Compatible.Select(m.GetSession("userId").(string), `{"o_jy_msgset":1}`)
|
|
|
if userInfo == nil {
|
|
|
- m.T["msgset"] = (*userInfo)["o_jy_msgset"]
|
|
|
- }
|
|
|
- }
|
|
|
- if sign == "share" {
|
|
|
- return m.Render("/weixin/wxshareguide.html", &m.T)
|
|
|
- } else {
|
|
|
- return m.Render("/weixin/wxindex.html", &m.T)
|
|
|
- }
|
|
|
+ m.T["msgset"] = (*userInfo)["o_jy_msgset"]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if sign == "share" {
|
|
|
+ return m.Render("/weixin/wxshareguide.html", &m.T)
|
|
|
+ } else {
|
|
|
+ return m.Render("/weixin/wxindex.html", &m.T)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func (m *Front) Share(openids string) error {
|
|
|
- return m.Redirect("/swordfish/about")
|
|
|
- //
|
|
|
- defer util.Catch()
|
|
|
- var openid = ""
|
|
|
- var jy_code = ""
|
|
|
- if openids != "-1" {
|
|
|
- wxid_code := strings.Split(openids, "__")
|
|
|
- if len(wxid_code) > 0 {
|
|
|
- openid = wxid_code[0]
|
|
|
- jy_code = wxid_code[1]
|
|
|
- }
|
|
|
- }
|
|
|
- m.T["openid"] = openid
|
|
|
- m.T["jy_code"] = jy_code
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- return m.Render("/weixin/wxshare.html", &m.T)
|
|
|
+ return m.Redirect("/swordfish/about")
|
|
|
+ //
|
|
|
+ defer util.Catch()
|
|
|
+ var openid = ""
|
|
|
+ var jy_code = ""
|
|
|
+ if openids != "-1" {
|
|
|
+ wxid_code := strings.Split(openids, "__")
|
|
|
+ if len(wxid_code) > 0 {
|
|
|
+ openid = wxid_code[0]
|
|
|
+ jy_code = wxid_code[1]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ m.T["openid"] = openid
|
|
|
+ m.T["jy_code"] = jy_code
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ return m.Render("/weixin/wxshare.html", &m.T)
|
|
|
}
|
|
|
|
|
|
/*func (m *Front) WxpushAjaxReq() error {
|
|
@@ -1072,973 +1201,973 @@ func (m *Front) Share(openids string) error {
|
|
|
}*/
|
|
|
|
|
|
func (m *Front) About() error {
|
|
|
- defer util.Catch()
|
|
|
- code := m.GetString("code") //渠道
|
|
|
- // 点浏览器打开时保持在原页面
|
|
|
- come := m.GetString("come")
|
|
|
- flag := m.GetString("flag")
|
|
|
- if !mobileReg.MatchString(m.UserAgent()) && flag == "" {
|
|
|
- return m.Redirect("/front/aboutus.html" + util.If(code != "", "?code="+code, "").(string))
|
|
|
- }
|
|
|
- from_userid, from_openid := "", ""
|
|
|
- if from := m.GetString("from"); from != "" {
|
|
|
- from_userid = se.Decode4Hex(from)
|
|
|
- }
|
|
|
- myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- isSubscribe := false
|
|
|
- if myopenid == "" {
|
|
|
- if m.GetString("state") == "wx" {
|
|
|
- //微信跳回来的
|
|
|
- code := m.GetString("code")
|
|
|
- if code != "" {
|
|
|
- myopenid = jyutil.Getopenid(code)
|
|
|
- }
|
|
|
- } else {
|
|
|
- if public.CheckWxBrowser(m.Request) {
|
|
|
- //所有参数都不再使用,跳到微信验证用户
|
|
|
- return m.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(m.Site()+m.Url()), "wx"), 302)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if myopenid != "" {
|
|
|
- isSubscribe = CheckUserIsSubscribe(myopenid)
|
|
|
- if isSubscribe {
|
|
|
- FindUserAndCreateSess(myopenid, m.Session(), "wx", false)
|
|
|
- myopenid, _ = m.Session().Get("s_m_openid").(string)
|
|
|
- mynickname, _ = m.Session().Get("s_nickname").(string)
|
|
|
- }
|
|
|
- }
|
|
|
- param := m.GetString("param")
|
|
|
- var openid = ""
|
|
|
- var activecode = ""
|
|
|
- //分享后微信新用户打开落地页
|
|
|
- if param != "-1" {
|
|
|
- wxid_code := strings.Split(param, "__")
|
|
|
- if len(wxid_code) > 0 {
|
|
|
- openid = wxid_code[0]
|
|
|
- from_openid = se.Decode4Hex(openid)
|
|
|
- }
|
|
|
- if len(wxid_code) > 1 {
|
|
|
- activecode = wxid_code[1]
|
|
|
- }
|
|
|
- }
|
|
|
- if from_openid != "" { //分享关联
|
|
|
- fromuser, ok := public.MQFW.FindOne("user", map[string]interface{}{"s_m_openid": from_openid})
|
|
|
- if fromuser != nil && len(*fromuser) > 0 && ok {
|
|
|
- from_userid = BsonIdToSId((*fromuser)["_id"])
|
|
|
- }
|
|
|
- }
|
|
|
- if from_userid != "" {
|
|
|
- sharekey := "share_jyb_" + myopenid
|
|
|
- if typ := m.GetString("source"); typ != "" { //用于区分招标信息和文库
|
|
|
- from_userid += "__article" //招标信息
|
|
|
- } else {
|
|
|
- from_userid += "__jydocs" //文库
|
|
|
- }
|
|
|
- ok := redis.Put("other", sharekey, from_userid, 60*5)
|
|
|
- if !ok {
|
|
|
- log.Println("分享用户关联redis出错", "分享者:", from_userid, "被分享者:", myopenid)
|
|
|
- }
|
|
|
- }
|
|
|
- qrcodeType := m.GetString("qrcodeType")
|
|
|
- if qrcodeType != "" {
|
|
|
- activecode = qrcodeType
|
|
|
- }
|
|
|
- m.T["code"] = code
|
|
|
- m.T["source"] = m.GetString("source") //分享类型 app or 公众号
|
|
|
- m.T["activecode"] = activecode
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- m.T["isSubscribe"] = isSubscribe //是否关注
|
|
|
- if openid == "" && myopenid != "" {
|
|
|
- m.T["openid"] = se.EncodeString(myopenid)
|
|
|
- } else {
|
|
|
- m.T["openid"] = openid
|
|
|
- }
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ defer util.Catch()
|
|
|
+ code := m.GetString("code") //渠道
|
|
|
+ // 点浏览器打开时保持在原页面
|
|
|
+ come := m.GetString("come")
|
|
|
+ flag := m.GetString("flag")
|
|
|
+ if !mobileReg.MatchString(m.UserAgent()) && flag == "" {
|
|
|
+ return m.Redirect("/front/aboutus.html" + util.If(code != "", "?code="+code, "").(string))
|
|
|
+ }
|
|
|
+ from_userid, from_openid := "", ""
|
|
|
+ if from := m.GetString("from"); from != "" {
|
|
|
+ from_userid = se.Decode4Hex(from)
|
|
|
+ }
|
|
|
+ myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ isSubscribe := false
|
|
|
+ if myopenid == "" {
|
|
|
+ if m.GetString("state") == "wx" {
|
|
|
+ //微信跳回来的
|
|
|
+ code := m.GetString("code")
|
|
|
+ if code != "" {
|
|
|
+ myopenid = jyutil.Getopenid(code)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if public.CheckWxBrowser(m.Request) {
|
|
|
+ //所有参数都不再使用,跳到微信验证用户
|
|
|
+ return m.Redirect(fmt.Sprintf(config.Wxoauth, url.QueryEscape(m.Site()+m.Url()), "wx"), 302)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if myopenid != "" {
|
|
|
+ isSubscribe = CheckUserIsSubscribe(myopenid)
|
|
|
+ if isSubscribe {
|
|
|
+ FindUserAndCreateSess(myopenid, m.Session(), "wx", false)
|
|
|
+ myopenid, _ = m.Session().Get("s_m_openid").(string)
|
|
|
+ mynickname, _ = m.Session().Get("s_nickname").(string)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ param := m.GetString("param")
|
|
|
+ var openid = ""
|
|
|
+ var activecode = ""
|
|
|
+ //分享后微信新用户打开落地页
|
|
|
+ if param != "-1" {
|
|
|
+ wxid_code := strings.Split(param, "__")
|
|
|
+ if len(wxid_code) > 0 {
|
|
|
+ openid = wxid_code[0]
|
|
|
+ from_openid = se.Decode4Hex(openid)
|
|
|
+ }
|
|
|
+ if len(wxid_code) > 1 {
|
|
|
+ activecode = wxid_code[1]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if from_openid != "" { //分享关联
|
|
|
+ fromuser, ok := public.MQFW.FindOne("user", map[string]interface{}{"s_m_openid": from_openid})
|
|
|
+ if fromuser != nil && len(*fromuser) > 0 && ok {
|
|
|
+ from_userid = BsonIdToSId((*fromuser)["_id"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if from_userid != "" {
|
|
|
+ sharekey := "share_jyb_" + myopenid
|
|
|
+ if typ := m.GetString("source"); typ != "" { //用于区分招标信息和文库
|
|
|
+ from_userid += "__article" //招标信息
|
|
|
+ } else {
|
|
|
+ from_userid += "__jydocs" //文库
|
|
|
+ }
|
|
|
+ ok := redis.Put("other", sharekey, from_userid, 60*5)
|
|
|
+ if !ok {
|
|
|
+ log.Println("分享用户关联redis出错", "分享者:", from_userid, "被分享者:", myopenid)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ qrcodeType := m.GetString("qrcodeType")
|
|
|
+ if qrcodeType != "" {
|
|
|
+ activecode = qrcodeType
|
|
|
+ }
|
|
|
+ m.T["code"] = code
|
|
|
+ m.T["source"] = m.GetString("source") //分享类型 app or 公众号
|
|
|
+ m.T["activecode"] = activecode
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ m.T["isSubscribe"] = isSubscribe //是否关注
|
|
|
+ if openid == "" && myopenid != "" {
|
|
|
+ m.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ } else {
|
|
|
+ m.T["openid"] = openid
|
|
|
+ }
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
|
|
|
- m.T["flag"] = flag
|
|
|
+ m.T["flag"] = flag
|
|
|
|
|
|
- m.T["come"] = come
|
|
|
- if come == "1" && !public.CheckWxBrowser(m.Request) {
|
|
|
- return m.Redirect("/front/downloadapppage/normal?source=weixinAutoRpl")
|
|
|
- }
|
|
|
- m.T["first"], _ = m.GetBool("first")
|
|
|
- var open_infoid = ""
|
|
|
- if m.GetString("source") == "open_infocontent" {
|
|
|
- open_infoid = m.GetString("o")
|
|
|
- m.T["open_infoid"] = open_infoid
|
|
|
- m.T["code"] = "open00" + open_infoid
|
|
|
- return m.Render("/weixin/about.html")
|
|
|
- } else {
|
|
|
- if myopenid == "" {
|
|
|
- if public.CheckWxBrowser(m.Request) {
|
|
|
- if code == "" {
|
|
|
- m.T["code"] = "wx01" //新用户微信访问,统计app下载量
|
|
|
- }
|
|
|
- //微信浏览器访问 基本不走此
|
|
|
- return m.Render("/weixin/sharePage.html")
|
|
|
- } else {
|
|
|
- //非微信浏览器访问
|
|
|
- return m.Redirect("/active/appExt/sh001")
|
|
|
- }
|
|
|
- } else {
|
|
|
- if public.CheckWxBrowser(m.Request) {
|
|
|
- m.T["isWeixin"] = 1
|
|
|
- } else {
|
|
|
- m.T["isWeixin"] = 0
|
|
|
- }
|
|
|
- return m.Render("/weixin/about.html")
|
|
|
- }
|
|
|
- }
|
|
|
+ m.T["come"] = come
|
|
|
+ if come == "1" && !public.CheckWxBrowser(m.Request) {
|
|
|
+ return m.Redirect("/front/downloadapppage/normal?source=weixinAutoRpl")
|
|
|
+ }
|
|
|
+ m.T["first"], _ = m.GetBool("first")
|
|
|
+ var open_infoid = ""
|
|
|
+ if m.GetString("source") == "open_infocontent" {
|
|
|
+ open_infoid = m.GetString("o")
|
|
|
+ m.T["open_infoid"] = open_infoid
|
|
|
+ m.T["code"] = "open00" + open_infoid
|
|
|
+ return m.Render("/weixin/about.html")
|
|
|
+ } else {
|
|
|
+ if myopenid == "" {
|
|
|
+ if public.CheckWxBrowser(m.Request) {
|
|
|
+ if code == "" {
|
|
|
+ m.T["code"] = "wx01" //新用户微信访问,统计app下载量
|
|
|
+ }
|
|
|
+ //微信浏览器访问 基本不走此
|
|
|
+ return m.Render("/weixin/sharePage.html")
|
|
|
+ } else {
|
|
|
+ //非微信浏览器访问
|
|
|
+ return m.Redirect("/active/appExt/sh001")
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if public.CheckWxBrowser(m.Request) {
|
|
|
+ m.T["isWeixin"] = 1
|
|
|
+ } else {
|
|
|
+ m.T["isWeixin"] = 0
|
|
|
+ }
|
|
|
+ return m.Render("/weixin/about.html")
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func (m *Front) Shareabout(openids string) error {
|
|
|
- defer util.Catch()
|
|
|
- var openid = ""
|
|
|
- if openids != "-1" {
|
|
|
- wxid_code := strings.Split(openids, "__")
|
|
|
- if len(wxid_code) > 0 {
|
|
|
- openid = wxid_code[0]
|
|
|
- }
|
|
|
- }
|
|
|
- myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- if openid == "" && myopenid != "" {
|
|
|
- m.T["openid"] = se.EncodeString(myopenid)
|
|
|
- } else {
|
|
|
- m.T["openid"] = openid
|
|
|
- }
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
- m.T["source"] = ""
|
|
|
- if public.CheckWxBrowser(m.Request) {
|
|
|
- m.T["isWeixin"] = 1
|
|
|
- } else {
|
|
|
- m.T["isWeixin"] = 0
|
|
|
- }
|
|
|
- return m.Render("/weixin/about.html")
|
|
|
+ defer util.Catch()
|
|
|
+ var openid = ""
|
|
|
+ if openids != "-1" {
|
|
|
+ wxid_code := strings.Split(openids, "__")
|
|
|
+ if len(wxid_code) > 0 {
|
|
|
+ openid = wxid_code[0]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ if openid == "" && myopenid != "" {
|
|
|
+ m.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ } else {
|
|
|
+ m.T["openid"] = openid
|
|
|
+ }
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ m.T["source"] = ""
|
|
|
+ if public.CheckWxBrowser(m.Request) {
|
|
|
+ m.T["isWeixin"] = 1
|
|
|
+ } else {
|
|
|
+ m.T["isWeixin"] = 0
|
|
|
+ }
|
|
|
+ return m.Render("/weixin/about.html")
|
|
|
}
|
|
|
|
|
|
func (m *Front) Aboutsearch() error {
|
|
|
- myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
- m.T["openid"] = se.EncodeString(myopenid)
|
|
|
- mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
- m.T["nickname"] = mynickname
|
|
|
- m.T["avatar"] = myavatar
|
|
|
- m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
- m.Render("/weixin/aboutsearch.html", &m.T)
|
|
|
- return nil
|
|
|
+ myopenid, _ := m.Session().Get("s_m_openid").(string)
|
|
|
+ m.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ mynickname, _ := m.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := m.Session().Get("s_avatar").(string)
|
|
|
+ m.T["nickname"] = mynickname
|
|
|
+ m.T["avatar"] = myavatar
|
|
|
+ m.T["signature"] = wx.SignJSSDK(m.Site() + m.Url())
|
|
|
+ m.Render("/weixin/aboutsearch.html", &m.T)
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
// 剑鱼标讯微信查询保存网站
|
|
|
func (m *Front) AboutSR() error {
|
|
|
- defer util.Catch()
|
|
|
- var flag = "N"
|
|
|
- var sn = m.GetString("searchname")
|
|
|
- var tp = m.GetString("tp")
|
|
|
- if len(sn) > 0 {
|
|
|
- switch tp {
|
|
|
- case "S": //用户查询网站是否被收录
|
|
|
- userId, ok := m.GetSession("userId").(string)
|
|
|
- if !ok || userId == "" {
|
|
|
- break
|
|
|
- }
|
|
|
- res, err := mongodb.FindOne("bidurlinfo", bson.M{"$or": []bson.M{bson.M{"s_name": sn}, bson.M{"s_url": sn}}})
|
|
|
- if err {
|
|
|
- if len(*res) > 0 {
|
|
|
- flag = "T"
|
|
|
- }
|
|
|
- }
|
|
|
- break
|
|
|
- case "I": //用户提交数据
|
|
|
- data := make(map[string]interface{})
|
|
|
- userId, ok := m.GetSession("userId").(string)
|
|
|
- if !ok || userId == "" {
|
|
|
- break
|
|
|
- }
|
|
|
- userInfo := jyutil.Compatible.Select(userId, `"s_name":1,"s_nickname":1`)
|
|
|
- if userInfo == nil {
|
|
|
- break
|
|
|
- }
|
|
|
- data["i_type"] = 8
|
|
|
- data["s_remark"] = sn
|
|
|
- if (*userInfo)["s_name"] != nil {
|
|
|
- data["s_submitname"] = (*userInfo)["s_name"].(string)
|
|
|
- }
|
|
|
- data["s_submitid"] = userId
|
|
|
- data["s_title"] = m.GetString("title")
|
|
|
- data["i_status"] = 0
|
|
|
- if (*userInfo)["s_nickname"] != nil { //昵称
|
|
|
- data["s_username"] = (*userInfo)["s_nickname"].(string)
|
|
|
- } else if (*userInfo)["s_name"] != nil { //s_name
|
|
|
- data["s_username"] = (*userInfo)["s_name"].(string)
|
|
|
- }
|
|
|
- data["l_submitdate"] = time.Now().Unix()
|
|
|
- data["s_source"] = m.GetString("source")
|
|
|
- data["s_from"] = "wx"
|
|
|
- id := mongodb.Save("interaction", data)
|
|
|
- if len(id) > 0 && len(sn) > 0 {
|
|
|
- flag = "T"
|
|
|
- }
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- m.ServeJson(map[string]interface{}{
|
|
|
- "flag": flag,
|
|
|
- })
|
|
|
- return nil
|
|
|
+ defer util.Catch()
|
|
|
+ var flag = "N"
|
|
|
+ var sn = m.GetString("searchname")
|
|
|
+ var tp = m.GetString("tp")
|
|
|
+ if len(sn) > 0 {
|
|
|
+ switch tp {
|
|
|
+ case "S": //用户查询网站是否被收录
|
|
|
+ userId, ok := m.GetSession("userId").(string)
|
|
|
+ if !ok || userId == "" {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ res, err := mongodb.FindOne("bidurlinfo", bson.M{"$or": []bson.M{bson.M{"s_name": sn}, bson.M{"s_url": sn}}})
|
|
|
+ if err {
|
|
|
+ if len(*res) > 0 {
|
|
|
+ flag = "T"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case "I": //用户提交数据
|
|
|
+ data := make(map[string]interface{})
|
|
|
+ userId, ok := m.GetSession("userId").(string)
|
|
|
+ if !ok || userId == "" {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ userInfo, ok := mongodb.FindById("user", userId, nil)
|
|
|
+ if !ok {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ data["i_type"] = 8
|
|
|
+ data["s_remark"] = sn
|
|
|
+ if (*userInfo)["s_name"] != nil {
|
|
|
+ data["s_submitname"] = (*userInfo)["s_name"].(string)
|
|
|
+ }
|
|
|
+ data["s_submitid"] = userId
|
|
|
+ data["s_title"] = m.GetString("title")
|
|
|
+ data["i_status"] = 0
|
|
|
+ if (*userInfo)["s_nickname"] != nil { //昵称
|
|
|
+ data["s_username"] = (*userInfo)["s_nickname"].(string)
|
|
|
+ } else if (*userInfo)["s_name"] != nil { //s_name
|
|
|
+ data["s_username"] = (*userInfo)["s_name"].(string)
|
|
|
+ }
|
|
|
+ data["l_submitdate"] = time.Now().Unix()
|
|
|
+ data["s_source"] = m.GetString("source")
|
|
|
+ data["s_from"] = "wx"
|
|
|
+ id := mongodb.Save("interaction", data)
|
|
|
+ if len(id) > 0 && len(sn) > 0 {
|
|
|
+ flag = "T"
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "flag": flag,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
// 手动删除30天无更新数据
|
|
|
func (m *Front) DelOL() error {
|
|
|
- defer util.Catch()
|
|
|
- var ids []primitive.ObjectID
|
|
|
- var flag = "F"
|
|
|
- var arrid = strings.Split(m.GetString("arrid"), ",")
|
|
|
- if len(arrid) > 0 {
|
|
|
- for _, chid := range arrid {
|
|
|
- _id, _ := primitive.ObjectIDFromHex(encrypt.DecodeArticleId2ByCheck(chid)[0])
|
|
|
- ids = append(ids, _id)
|
|
|
- }
|
|
|
- }
|
|
|
- userId, ok := m.GetSession("userId").(string)
|
|
|
- if !ok || userId == "" || len(ids) < 1 {
|
|
|
- m.ServeJson(map[string]interface{}{
|
|
|
- "flag": flag,
|
|
|
- })
|
|
|
- return nil
|
|
|
- }
|
|
|
- if datas, ok := mongodb.Find("follow_project", bson.M{"_id": bson.M{"$in": ids}, "s_userid": m.GetSession("userId").(string)}, nil, nil, false, -1, -1); ok && datas != nil {
|
|
|
- for _, v := range *datas {
|
|
|
- go delRelRedis(v["s_userid"], v["a_relationinfo"])
|
|
|
- v["s_followid"] = BsonIdToSId(v["_id"])
|
|
|
- delete(v, "_id")
|
|
|
- v["i_status"] = 2
|
|
|
- mongodb.Save("follow_project_back", v)
|
|
|
- }
|
|
|
- }
|
|
|
- if mongodb.Del("follow_project", bson.M{"_id": bson.M{"$in": ids}, "s_userid": m.GetSession("userId").(string)}) {
|
|
|
- flag = "T"
|
|
|
- }
|
|
|
- m.ServeJson(map[string]interface{}{
|
|
|
- "flag": flag,
|
|
|
- })
|
|
|
- return nil
|
|
|
+ defer util.Catch()
|
|
|
+ var ids []primitive.ObjectID
|
|
|
+ var flag = "F"
|
|
|
+ var arrid = strings.Split(m.GetString("arrid"), ",")
|
|
|
+ if len(arrid) > 0 {
|
|
|
+ for _, chid := range arrid {
|
|
|
+ _id, _ := primitive.ObjectIDFromHex(encrypt.DecodeArticleId2ByCheck(chid)[0])
|
|
|
+ ids = append(ids, _id)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ userId, ok := m.GetSession("userId").(string)
|
|
|
+ if !ok || userId == "" || len(ids) < 1 {
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "flag": flag,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ if datas, ok := mongodb.Find("follow_project", bson.M{"_id": bson.M{"$in": ids}, "s_userid": m.GetSession("userId").(string)}, nil, nil, false, -1, -1); ok && datas != nil {
|
|
|
+ for _, v := range *datas {
|
|
|
+ go delRelRedis(v["s_userid"], v["a_relationinfo"])
|
|
|
+ v["s_followid"] = BsonIdToSId(v["_id"])
|
|
|
+ delete(v, "_id")
|
|
|
+ v["i_status"] = 2
|
|
|
+ mongodb.Save("follow_project_back", v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if mongodb.Del("follow_project", bson.M{"_id": bson.M{"$in": ids}, "s_userid": m.GetSession("userId").(string)}) {
|
|
|
+ flag = "T"
|
|
|
+ }
|
|
|
+ m.ServeJson(map[string]interface{}{
|
|
|
+ "flag": flag,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
// 获取我的反馈列表
|
|
|
func (f *Front) MyFeedbacks() error {
|
|
|
- userId, _ := f.GetSession("userId").(string)
|
|
|
- if userId == "" {
|
|
|
- return f.Render("/_error.html")
|
|
|
- }
|
|
|
- list, ok := mongodb.Find("interaction", bson.M{"s_submitid": userId}, `{"l_submitdate":-1}`, `{"s_remark":1,"l_submitdate":1,"s_opinion":1,"i_status":1}`, false, 0, 200)
|
|
|
- if !ok {
|
|
|
- return nil
|
|
|
- }
|
|
|
- if f.Method() == "GET" {
|
|
|
- f.T["list"] = list
|
|
|
- f.T["flag"] = true
|
|
|
- mynickname, _ := f.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := f.Session().Get("s_avatar").(string)
|
|
|
- myopenid, _ := f.GetSession("s_m_openid").(string)
|
|
|
- f.T["nickname"] = mynickname
|
|
|
- f.T["avatar"] = myavatar
|
|
|
- f.T["signature"] = wx.SignJSSDK(f.Site() + f.Url())
|
|
|
- f.T["openid"] = se.EncodeString(myopenid)
|
|
|
- _, f.T["advertText"] = getRewardText()
|
|
|
- f.T["advertImg"] = config.Sysconfig["advertImg"]
|
|
|
- f.T["advertName"] = config.Sysconfig["advertName"]
|
|
|
- f.T["advertUrl"] = config.Sysconfig["advertUrl"]
|
|
|
- return f.Render("/weixin/feedback.html")
|
|
|
- }
|
|
|
- f.ServeJson(map[string]interface{}{
|
|
|
- "list": list,
|
|
|
- })
|
|
|
- return nil
|
|
|
+ userId, _ := f.GetSession("userId").(string)
|
|
|
+ if userId == "" {
|
|
|
+ return f.Render("/_error.html")
|
|
|
+ }
|
|
|
+ list, ok := mongodb.Find("interaction", bson.M{"s_submitid": userId}, `{"l_submitdate":-1}`, `{"s_remark":1,"l_submitdate":1,"s_opinion":1,"i_status":1}`, false, 0, 200)
|
|
|
+ if !ok {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ if f.Method() == "GET" {
|
|
|
+ f.T["list"] = list
|
|
|
+ f.T["flag"] = true
|
|
|
+ mynickname, _ := f.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := f.Session().Get("s_avatar").(string)
|
|
|
+ myopenid, _ := f.GetSession("s_m_openid").(string)
|
|
|
+ f.T["nickname"] = mynickname
|
|
|
+ f.T["avatar"] = myavatar
|
|
|
+ f.T["signature"] = wx.SignJSSDK(f.Site() + f.Url())
|
|
|
+ f.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ _, f.T["advertText"] = getRewardText()
|
|
|
+ f.T["advertImg"] = config.Sysconfig["advertImg"]
|
|
|
+ f.T["advertName"] = config.Sysconfig["advertName"]
|
|
|
+ f.T["advertUrl"] = config.Sysconfig["advertUrl"]
|
|
|
+ return f.Render("/weixin/feedback.html")
|
|
|
+ }
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "list": list,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
}
|
|
|
func (f *Front) GetRecomKWs() {
|
|
|
- count, _ := f.GetInteger("count")
|
|
|
- f.ServeJson(public.RecomKws.GetRecomKws(f.GetString("value"), count, float32(config.Sysconfig["recommendThreshold"].(float64))))
|
|
|
+ count, _ := f.GetInteger("count")
|
|
|
+ f.ServeJson(public.RecomKws.GetRecomKws(f.GetString("value"), count, float32(config.Sysconfig["recommendThreshold"].(float64))))
|
|
|
}
|
|
|
|
|
|
// 记录用户行为--推荐关键词
|
|
|
func (f *Front) BehaviorRecord() {
|
|
|
- flag := saveBehaviorRecord(f.Session(),
|
|
|
- bson.M{
|
|
|
- "s_word": f.GetString("value"),
|
|
|
- "s_type": f.GetString("type"),
|
|
|
- "s_source": f.GetString("source"),
|
|
|
- })
|
|
|
- f.ServeJson(bson.M{"flag": flag})
|
|
|
+ flag := saveBehaviorRecord(f.Session(),
|
|
|
+ bson.M{
|
|
|
+ "s_word": f.GetString("value"),
|
|
|
+ "s_type": f.GetString("type"),
|
|
|
+ "s_source": f.GetString("source"),
|
|
|
+ })
|
|
|
+ f.ServeJson(bson.M{"flag": flag})
|
|
|
}
|
|
|
|
|
|
// 记录用户行为
|
|
|
func saveBehaviorRecord(sess *httpsession.Session, data bson.M) bool {
|
|
|
- userid, _ := sess.Get("userId").(string)
|
|
|
- //if openId == "" {
|
|
|
- // return false
|
|
|
- //}
|
|
|
- nickName, _ := sess.Get("s_nickname").(string)
|
|
|
- //data["s_openid"] = openId
|
|
|
- data["s_userid"] = userid
|
|
|
- data["s_nickname"] = nickName
|
|
|
- data["l_createtime"] = time.Now().Unix()
|
|
|
- return len(mongodb.Save("behavior", data)) > 0
|
|
|
+ userid, _ := sess.Get("userId").(string)
|
|
|
+ //if openId == "" {
|
|
|
+ // return false
|
|
|
+ //}
|
|
|
+ nickName, _ := sess.Get("s_nickname").(string)
|
|
|
+ //data["s_openid"] = openId
|
|
|
+ data["s_userid"] = userid
|
|
|
+ data["s_nickname"] = nickName
|
|
|
+ data["l_createtime"] = time.Now().Unix()
|
|
|
+ return len(mongodb.Save("behavior", data)) > 0
|
|
|
}
|
|
|
|
|
|
// 取得剑鱼标讯博客的信息列表
|
|
|
func (f *Front) Jyblog(param /*参数*/ string) error {
|
|
|
- querymap := map[string]string{}
|
|
|
- if len(param) == 0 {
|
|
|
- querymap = map[string]string{
|
|
|
- "perPage": f.GetString("perPage"),
|
|
|
- "currentPage": f.GetString("currentPage"),
|
|
|
- "contentType": "jybk",
|
|
|
- "query": f.GetString("query"),
|
|
|
- }
|
|
|
- } else {
|
|
|
- //反转生成map
|
|
|
- paramstr := param[1:]
|
|
|
- bs, _ := base64.StdEncoding.DecodeString(paramstr)
|
|
|
- json.Unmarshal(bs, &querymap)
|
|
|
- }
|
|
|
- var shareid = f.GetString("id")
|
|
|
- if len(shareid) == 0 {
|
|
|
- shareid = fmt.Sprintf("%s%d", config.Seoconfig["jybky"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
|
|
|
- }
|
|
|
- f.T["logid"] = config.Seoconfig["jybky"].(string)
|
|
|
- f.DisableHttpCache()
|
|
|
- shareid = se.EncodeString(shareid)
|
|
|
- data, pagination := jyutil.JyCmsSearch(querymap)
|
|
|
- f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination, "shareid": shareid})
|
|
|
- return nil
|
|
|
+ querymap := map[string]string{}
|
|
|
+ if len(param) == 0 {
|
|
|
+ querymap = map[string]string{
|
|
|
+ "perPage": f.GetString("perPage"),
|
|
|
+ "currentPage": f.GetString("currentPage"),
|
|
|
+ "contentType": "jybk",
|
|
|
+ "query": f.GetString("query"),
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //反转生成map
|
|
|
+ paramstr := param[1:]
|
|
|
+ bs, _ := base64.StdEncoding.DecodeString(paramstr)
|
|
|
+ json.Unmarshal(bs, &querymap)
|
|
|
+ }
|
|
|
+ var shareid = f.GetString("id")
|
|
|
+ if len(shareid) == 0 {
|
|
|
+ shareid = fmt.Sprintf("%s%d", config.Seoconfig["jybky"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
|
|
|
+ }
|
|
|
+ f.T["logid"] = config.Seoconfig["jybky"].(string)
|
|
|
+ f.DisableHttpCache()
|
|
|
+ shareid = se.EncodeString(shareid)
|
|
|
+ data, pagination := jyutil.JyCmsSearch(querymap)
|
|
|
+ f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination, "shareid": shareid})
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
func (f *Front) JyCms(cType, param string) error {
|
|
|
- querymap := map[string]string{}
|
|
|
- if len(param) == 0 {
|
|
|
- querymap = map[string]string{
|
|
|
- "perPage": f.GetString("perPage"),
|
|
|
- "currentPage": f.GetString("currentPage"),
|
|
|
- "contentType": cType,
|
|
|
- "query": f.GetString("query"),
|
|
|
- }
|
|
|
- } else {
|
|
|
- //反转生成map
|
|
|
- paramstr := param[1:]
|
|
|
- bs, _ := base64.StdEncoding.DecodeString(paramstr)
|
|
|
- json.Unmarshal(bs, &querymap)
|
|
|
- }
|
|
|
- f.DisableHttpCache()
|
|
|
- data, pagination := jyutil.JyCmsSearch(querymap)
|
|
|
- return f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination})
|
|
|
+ querymap := map[string]string{}
|
|
|
+ if len(param) == 0 {
|
|
|
+ querymap = map[string]string{
|
|
|
+ "perPage": f.GetString("perPage"),
|
|
|
+ "currentPage": f.GetString("currentPage"),
|
|
|
+ "contentType": cType,
|
|
|
+ "query": f.GetString("query"),
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //反转生成map
|
|
|
+ paramstr := param[1:]
|
|
|
+ bs, _ := base64.StdEncoding.DecodeString(paramstr)
|
|
|
+ json.Unmarshal(bs, &querymap)
|
|
|
+ }
|
|
|
+ f.DisableHttpCache()
|
|
|
+ data, pagination := jyutil.JyCmsSearch(querymap)
|
|
|
+ return f.Render("/pc/jyblog.html", &xweb.T{"querymap": querymap, "data": data, "pagination": pagination})
|
|
|
}
|
|
|
|
|
|
// 博客三级页
|
|
|
func (f *Front) Jybdetail(_id string) error {
|
|
|
- var shareid = f.GetString("id")
|
|
|
- if len(shareid) == 0 {
|
|
|
- shareid = "10" //fmt.Sprintf("%s%d", config.Seoconfig["jybky"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
|
|
|
- }
|
|
|
- f.T["logid"] = config.Seoconfig["jybky"].(string)
|
|
|
- shareid = se.EncodeString(shareid)
|
|
|
- if ret := redis.Get("other", "jyblog_"+_id); ret != nil {
|
|
|
- var retlist *map[string]interface{}
|
|
|
- b, _ := json.Marshal(ret)
|
|
|
- json.Unmarshal(b, &retlist)
|
|
|
- (*retlist)["s_content"] = template.HTML((*retlist)["s_content"].(string))
|
|
|
- (*retlist)["_id"] = (*retlist)["_id"].(string)
|
|
|
- f.T["data"] = retlist
|
|
|
- } else {
|
|
|
- id := se.DecodeString(_id)
|
|
|
- //r := elastic.GetByIdField("content", "content", id, `"_id","s_title","l_createdate","s_pic","s_author","s_editorname","s_contenttype","praise","releasetime","s_subcontent","s_url","s_content","s_source","s_keywords","s_description","s_contenttype","s_pic1"`)
|
|
|
- r, _ := public.MQFW.FindById("content", id, `{"s_title":1,"s_contenttype":1,"s_content":1,"releasetime":1,"s_description":1,"praise":1,"s_source":1,"s_pic":1,"s_pic1":1,"l_createdate":1,"_id":1,"s_author":1,"s_editorname":1,"s_url":1,"s_subcontent":1,"s_keywords":1}`)
|
|
|
- if r != nil {
|
|
|
- tmpdate1, _ := (*r)["l_createdate"]
|
|
|
- (*r)["l_createdate"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate1), 0))
|
|
|
- tmpdate2, _ := (*r)["releasetime"]
|
|
|
- (*r)["releasetime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate2), 0))
|
|
|
- (*r)["s_content"] = template.HTML(util.ObjToString((*r)["s_content"]))
|
|
|
- (*r)["_id"] = se.EncodeString(BsonIdToSId((*r)["_id"]))
|
|
|
- s_pic, _ := (*r)["s_pic"].(string)
|
|
|
- if s_pic != "" {
|
|
|
- s_pic = config.Seoconfig["jyadd"].(string) + s_pic
|
|
|
- }
|
|
|
- (*r)["s_pic"] = s_pic
|
|
|
- s_pic1, _ := (*r)["s_pic1"].(string)
|
|
|
- if s_pic1 != "" {
|
|
|
- s_pic1 = config.Seoconfig["jyadd"].(string) + s_pic1
|
|
|
- }
|
|
|
- (*r)["s_pic1"] = s_pic1
|
|
|
- }
|
|
|
- f.DisableHttpCache()
|
|
|
- redis.Put("other", "jyblog_"+_id, r, 2*60*60)
|
|
|
- f.T["data"] = r
|
|
|
- }
|
|
|
- f.T["shareid"] = shareid
|
|
|
- return f.Render("/pc/jyblogdetail.html", &f.T)
|
|
|
+ var shareid = f.GetString("id")
|
|
|
+ if len(shareid) == 0 {
|
|
|
+ shareid = "10" //fmt.Sprintf("%s%d", config.Seoconfig["jybky"].(string)+fmt.Sprintf("%d", time.Now().UnixNano())[8:14], rand.Intn(9))
|
|
|
+ }
|
|
|
+ f.T["logid"] = config.Seoconfig["jybky"].(string)
|
|
|
+ shareid = se.EncodeString(shareid)
|
|
|
+ if ret := redis.Get("other", "jyblog_"+_id); ret != nil {
|
|
|
+ var retlist *map[string]interface{}
|
|
|
+ b, _ := json.Marshal(ret)
|
|
|
+ json.Unmarshal(b, &retlist)
|
|
|
+ (*retlist)["s_content"] = template.HTML((*retlist)["s_content"].(string))
|
|
|
+ (*retlist)["_id"] = (*retlist)["_id"].(string)
|
|
|
+ f.T["data"] = retlist
|
|
|
+ } else {
|
|
|
+ id := se.DecodeString(_id)
|
|
|
+ //r := elastic.GetByIdField("content", "content", id, `"_id","s_title","l_createdate","s_pic","s_author","s_editorname","s_contenttype","praise","releasetime","s_subcontent","s_url","s_content","s_source","s_keywords","s_description","s_contenttype","s_pic1"`)
|
|
|
+ r, _ := public.MQFW.FindById("content", id, `{"s_title":1,"s_contenttype":1,"s_content":1,"releasetime":1,"s_description":1,"praise":1,"s_source":1,"s_pic":1,"s_pic1":1,"l_createdate":1,"_id":1,"s_author":1,"s_editorname":1,"s_url":1,"s_subcontent":1,"s_keywords":1}`)
|
|
|
+ if r != nil {
|
|
|
+ tmpdate1, _ := (*r)["l_createdate"]
|
|
|
+ (*r)["l_createdate"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate1), 0))
|
|
|
+ tmpdate2, _ := (*r)["releasetime"]
|
|
|
+ (*r)["releasetime"] = util.TimeDiff(time.Unix(util.Int64All(tmpdate2), 0))
|
|
|
+ (*r)["s_content"] = template.HTML(util.ObjToString((*r)["s_content"]))
|
|
|
+ (*r)["_id"] = se.EncodeString(BsonIdToSId((*r)["_id"]))
|
|
|
+ s_pic, _ := (*r)["s_pic"].(string)
|
|
|
+ if s_pic != "" {
|
|
|
+ s_pic = config.Seoconfig["jyadd"].(string) + s_pic
|
|
|
+ }
|
|
|
+ (*r)["s_pic"] = s_pic
|
|
|
+ s_pic1, _ := (*r)["s_pic1"].(string)
|
|
|
+ if s_pic1 != "" {
|
|
|
+ s_pic1 = config.Seoconfig["jyadd"].(string) + s_pic1
|
|
|
+ }
|
|
|
+ (*r)["s_pic1"] = s_pic1
|
|
|
+ }
|
|
|
+ f.DisableHttpCache()
|
|
|
+ redis.Put("other", "jyblog_"+_id, r, 2*60*60)
|
|
|
+ f.T["data"] = r
|
|
|
+ }
|
|
|
+ f.T["shareid"] = shareid
|
|
|
+ return f.Render("/pc/jyblogdetail.html", &f.T)
|
|
|
}
|
|
|
|
|
|
func (f *Front) Blogpraise() error {
|
|
|
- defer util.Catch()
|
|
|
- id := se.DecodeString(f.GetString("id"))
|
|
|
- stype := f.GetString("type")
|
|
|
- flag := "F"
|
|
|
- var blogflag = true
|
|
|
- util.Try(func() {
|
|
|
- if id != "" {
|
|
|
- if stype == "up" {
|
|
|
- blogflag = mongodb.Update("content", `{"_id":"`+id+`"}`, `{ "$inc" : { "praise" : 1 }}`, false, false)
|
|
|
- } else if stype == "down" {
|
|
|
- blogflag = mongodb.Update("content", `{"_id":"`+id+`"}`, `{ "$inc" : { "praise" : -1 }}`, false, false)
|
|
|
- }
|
|
|
- if blogflag {
|
|
|
- flag = "T"
|
|
|
- r, _ := mongodb.FindById("content", id, "")
|
|
|
- elastic.UpdateNewDoc("content", "content", r)
|
|
|
- redis.Del("other", "jyblog_"+f.GetString("id"))
|
|
|
- }
|
|
|
- }
|
|
|
- }, func(e interface{}) {
|
|
|
- log.Println("文章点赞出错", e)
|
|
|
- })
|
|
|
- f.ServeJson(map[string]interface{}{
|
|
|
- "flag": flag,
|
|
|
- })
|
|
|
- return nil
|
|
|
+ defer util.Catch()
|
|
|
+ id := se.DecodeString(f.GetString("id"))
|
|
|
+ stype := f.GetString("type")
|
|
|
+ flag := "F"
|
|
|
+ var blogflag = true
|
|
|
+ util.Try(func() {
|
|
|
+ if id != "" {
|
|
|
+ if stype == "up" {
|
|
|
+ blogflag = mongodb.Update("content", `{"_id":"`+id+`"}`, `{ "$inc" : { "praise" : 1 }}`, false, false)
|
|
|
+ } else if stype == "down" {
|
|
|
+ blogflag = mongodb.Update("content", `{"_id":"`+id+`"}`, `{ "$inc" : { "praise" : -1 }}`, false, false)
|
|
|
+ }
|
|
|
+ if blogflag {
|
|
|
+ flag = "T"
|
|
|
+ r, _ := mongodb.FindById("content", id, "")
|
|
|
+ elastic.UpdateNewDoc("content", "content", r)
|
|
|
+ redis.Del("other", "jyblog_"+f.GetString("id"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, func(e interface{}) {
|
|
|
+ log.Println("文章点赞出错", e)
|
|
|
+ })
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "flag": flag,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
func getRewardText() (string, string) {
|
|
|
- rewardText, _ := config.Sysconfig["rewardText"].([]interface{})
|
|
|
- advertText, _ := config.Sysconfig["advertText"].([]interface{})
|
|
|
- randVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(rewardText))
|
|
|
- if len(advertText) != 0 {
|
|
|
- advVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(advertText))
|
|
|
- return util.ObjToString(rewardText[randVal]), util.ObjToString(advertText[advVal])
|
|
|
- } else {
|
|
|
- return util.ObjToString(rewardText[randVal]), ""
|
|
|
- }
|
|
|
+ rewardText, _ := config.Sysconfig["rewardText"].([]interface{})
|
|
|
+ advertText, _ := config.Sysconfig["advertText"].([]interface{})
|
|
|
+ randVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(rewardText))
|
|
|
+ if len(advertText) != 0 {
|
|
|
+ advVal := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(len(advertText))
|
|
|
+ return util.ObjToString(rewardText[randVal]), util.ObjToString(advertText[advVal])
|
|
|
+ } else {
|
|
|
+ return util.ObjToString(rewardText[randVal]), ""
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func searchresulthtml(list *[]map[string]interface{}) string {
|
|
|
- var listhtml = ""
|
|
|
- var j = 1
|
|
|
- for i := 0; i < len(*list); i++ {
|
|
|
- listdata := (*list)[i]
|
|
|
- j = i + 1
|
|
|
- listhtml += `<li><div class="liLuceneList"><div class="luce-left"><em>` + strconv.Itoa(j) + `.</em>`
|
|
|
- if listdata["title"] != "" {
|
|
|
- listhtml += `<div class="left-title"><a onclick="noIn(this)" dataId="` + util.ObjToString(listdata["_id"]) + `" target="_blank">` + util.ObjToString(listdata["title"]) + `</a></div></div><div class="luce-right">`
|
|
|
- }
|
|
|
- area, _ := listdata["area"].(string)
|
|
|
- area = strings.TrimSpace(area)
|
|
|
- finalType, _ := listdata["subtype"].(string)
|
|
|
- if finalType == "" {
|
|
|
- finalType = util.ObjToString(listdata["toptype"])
|
|
|
- }
|
|
|
- if finalType == "" {
|
|
|
- finalType = util.ObjToString(listdata["type"])
|
|
|
- if finalType == "bid" {
|
|
|
- finalType = "中标"
|
|
|
- } else if finalType == "tender" {
|
|
|
- finalType = "招标"
|
|
|
- } else {
|
|
|
- finalType = ""
|
|
|
- }
|
|
|
- }
|
|
|
- industry := util.ObjToString(listdata["industry"])
|
|
|
- stpadd, areaadd, indadd := classify(finalType, area, industry)
|
|
|
- if area != "" && area != "A" {
|
|
|
- listhtml += `<a href="/list/area/` + areaadd + `.html">` + area + `</a>`
|
|
|
- } else {
|
|
|
- listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
- }
|
|
|
- if finalType != "" {
|
|
|
- listhtml += `<a href="/list/stype/` + stpadd + `.html">` + finalType + `</a>`
|
|
|
- } else {
|
|
|
- listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
- }
|
|
|
- //industry, _ := listdata["industry"].(string)
|
|
|
- if industry != "" {
|
|
|
- listhtml += `<a href="/list/industry/` + indadd + `.html">` + industry + `</a>`
|
|
|
- } else {
|
|
|
- listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
- }
|
|
|
- acount := ""
|
|
|
- if listdata["bidamount"] != nil {
|
|
|
- acount = ConversionMoeny(listdata["bidamount"])
|
|
|
- } else if listdata["budget"] != nil {
|
|
|
- acount = ConversionMoeny(listdata["budget"])
|
|
|
- }
|
|
|
- if acount != "" {
|
|
|
- listhtml += `<a>` + acount + `</a>`
|
|
|
- } else {
|
|
|
- listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
- }
|
|
|
- publishtime, _ := listdata["publishtime"].(float64)
|
|
|
- if publishtime != 0 {
|
|
|
- diff := util.TimeDiff(time.Unix(util.Int64All(publishtime), 0))
|
|
|
- if diff != "" {
|
|
|
- listhtml += `<span class="com-time">` + diff + `</span>`
|
|
|
- }
|
|
|
- }
|
|
|
- listhtml += `</div></div></li>`
|
|
|
- }
|
|
|
- return listhtml
|
|
|
+ var listhtml = ""
|
|
|
+ var j = 1
|
|
|
+ for i := 0; i < len(*list); i++ {
|
|
|
+ listdata := (*list)[i]
|
|
|
+ j = i + 1
|
|
|
+ listhtml += `<li><div class="liLuceneList"><div class="luce-left"><em>` + strconv.Itoa(j) + `.</em>`
|
|
|
+ if listdata["title"] != "" {
|
|
|
+ listhtml += `<div class="left-title"><a onclick="noIn(this)" dataId="` + util.ObjToString(listdata["_id"]) + `" target="_blank">` + util.ObjToString(listdata["title"]) + `</a></div></div><div class="luce-right">`
|
|
|
+ }
|
|
|
+ area, _ := listdata["area"].(string)
|
|
|
+ area = strings.TrimSpace(area)
|
|
|
+ finalType, _ := listdata["subtype"].(string)
|
|
|
+ if finalType == "" {
|
|
|
+ finalType = util.ObjToString(listdata["toptype"])
|
|
|
+ }
|
|
|
+ if finalType == "" {
|
|
|
+ finalType = util.ObjToString(listdata["type"])
|
|
|
+ if finalType == "bid" {
|
|
|
+ finalType = "中标"
|
|
|
+ } else if finalType == "tender" {
|
|
|
+ finalType = "招标"
|
|
|
+ } else {
|
|
|
+ finalType = ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ industry := util.ObjToString(listdata["industry"])
|
|
|
+ stpadd, areaadd, indadd := classify(finalType, area, industry)
|
|
|
+ if area != "" && area != "A" {
|
|
|
+ listhtml += `<a href="/list/area/` + areaadd + `.html">` + area + `</a>`
|
|
|
+ } else {
|
|
|
+ listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
+ }
|
|
|
+ if finalType != "" {
|
|
|
+ listhtml += `<a href="/list/stype/` + stpadd + `.html">` + finalType + `</a>`
|
|
|
+ } else {
|
|
|
+ listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
+ }
|
|
|
+ //industry, _ := listdata["industry"].(string)
|
|
|
+ if industry != "" {
|
|
|
+ listhtml += `<a href="/list/industry/` + indadd + `.html">` + industry + `</a>`
|
|
|
+ } else {
|
|
|
+ listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
+ }
|
|
|
+ acount := ""
|
|
|
+ if listdata["bidamount"] != nil {
|
|
|
+ acount = ConversionMoeny(listdata["bidamount"])
|
|
|
+ } else if listdata["budget"] != nil {
|
|
|
+ acount = ConversionMoeny(listdata["budget"])
|
|
|
+ }
|
|
|
+ if acount != "" {
|
|
|
+ listhtml += `<a>` + acount + `</a>`
|
|
|
+ } else {
|
|
|
+ listhtml += `<a href="#" style="display:none;"></a>`
|
|
|
+ }
|
|
|
+ publishtime, _ := listdata["publishtime"].(float64)
|
|
|
+ if publishtime != 0 {
|
|
|
+ diff := util.TimeDiff(time.Unix(util.Int64All(publishtime), 0))
|
|
|
+ if diff != "" {
|
|
|
+ listhtml += `<span class="com-time">` + diff + `</span>`
|
|
|
+ }
|
|
|
+ }
|
|
|
+ listhtml += `</div></div></li>`
|
|
|
+ }
|
|
|
+ return listhtml
|
|
|
}
|
|
|
|
|
|
func (f *Front) GetClassifyList() error {
|
|
|
- defer util.Catch()
|
|
|
- //判断用户是否开启超级搜索?
|
|
|
+ defer util.Catch()
|
|
|
+ //判断用户是否开启超级搜索?
|
|
|
|
|
|
- classifyname := f.GetString("classifyname")
|
|
|
- data := redis.Get("other", "classify_"+classifyname)
|
|
|
- f.ServeJson(map[string]interface{}{
|
|
|
- "data": data,
|
|
|
- })
|
|
|
- return nil
|
|
|
+ classifyname := f.GetString("classifyname")
|
|
|
+ data := redis.Get("other", "classify_"+classifyname)
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "data": data,
|
|
|
+ })
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
func classify(stp, area, industry string) (string, string, string) {
|
|
|
- var areas, _ = config.Seoconfig["area"].(map[string]interface{})
|
|
|
- var stypes, _ = config.Seoconfig["stype"].(map[string]interface{})
|
|
|
- var industrys, _ = config.Seoconfig["industry"].(map[string]interface{})
|
|
|
- var tpadd = ""
|
|
|
- var areaadd = ""
|
|
|
- var induadd = ""
|
|
|
- if area != "" && area != "A" {
|
|
|
- for k, v := range areas {
|
|
|
- if area == v.(map[string]interface{})["NAME"] {
|
|
|
- areaadd = k
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //
|
|
|
- if stp != "" {
|
|
|
- for k, v := range stypes {
|
|
|
- if stp == v.(map[string]interface{})["NAME"] {
|
|
|
- tpadd = k
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- //
|
|
|
- if industry != "" {
|
|
|
- for k, v := range industrys {
|
|
|
- if strings.Contains(util.ObjToString(v.(map[string]interface{})["NAME"]), industry) {
|
|
|
- induadd = k
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return tpadd, areaadd, induadd
|
|
|
+ var areas, _ = config.Seoconfig["area"].(map[string]interface{})
|
|
|
+ var stypes, _ = config.Seoconfig["stype"].(map[string]interface{})
|
|
|
+ var industrys, _ = config.Seoconfig["industry"].(map[string]interface{})
|
|
|
+ var tpadd = ""
|
|
|
+ var areaadd = ""
|
|
|
+ var induadd = ""
|
|
|
+ if area != "" && area != "A" {
|
|
|
+ for k, v := range areas {
|
|
|
+ if area == v.(map[string]interface{})["NAME"] {
|
|
|
+ areaadd = k
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+ if stp != "" {
|
|
|
+ for k, v := range stypes {
|
|
|
+ if stp == v.(map[string]interface{})["NAME"] {
|
|
|
+ tpadd = k
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //
|
|
|
+ if industry != "" {
|
|
|
+ for k, v := range industrys {
|
|
|
+ if strings.Contains(util.ObjToString(v.(map[string]interface{})["NAME"]), industry) {
|
|
|
+ induadd = k
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return tpadd, areaadd, induadd
|
|
|
}
|
|
|
|
|
|
func (f *Front) HasPushHistory() {
|
|
|
- userId := util.ObjToString(f.GetSession("userId"))
|
|
|
- var industry_ = []string{}
|
|
|
- if userId == "" {
|
|
|
- return
|
|
|
- }
|
|
|
- user, _ := jy.NewSubscribePush().UserInfo(public.MQFW, userId)
|
|
|
- hasKeyFlag := false
|
|
|
- isVipFlag := false
|
|
|
- isPassCount := false
|
|
|
- isExpire := -1
|
|
|
- tedayNum := time.Unix(time.Now().Unix(), 1).Format("20060102")
|
|
|
- isOnTail := 0
|
|
|
- var o_jy map[string]interface{}
|
|
|
- isread := false
|
|
|
- var keys []string
|
|
|
- otherFlag := false
|
|
|
- if user != nil {
|
|
|
- o_jy, _ = (*user)["o_jy"].(map[string]interface{})
|
|
|
- if o_jy != nil || len(o_jy) == 0 {
|
|
|
- a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
- if a_key != nil {
|
|
|
- for _, v := range a_key {
|
|
|
- kv := util.ObjToMap(v)
|
|
|
- keys = append(keys, util.ObjArrToStringArr((*kv)["key"].([]interface{}))...)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if util.IntAll((*user)["i_vip_status"]) == 1 || util.IntAll((*user)["i_vip_status"]) == 2 {
|
|
|
- //
|
|
|
- var threeRemind = int64(3 * 24 * 60 * 60)
|
|
|
- var twoRemind = int64(2 * 24 * 60 * 60)
|
|
|
- var oneRemind = int64(1 * 24 * 60 * 60)
|
|
|
- var o_vipjy map[string]interface{}
|
|
|
- if (*user)["isread"] != nil {
|
|
|
- isread = (*user)["isread"].(bool)
|
|
|
- }
|
|
|
- o_vipjy, _ = (*user)["o_vipjy"].(map[string]interface{})
|
|
|
- a_buyerclass, _ := o_vipjy["a_buyerclass"].([]interface{})
|
|
|
- industry_ = util.ObjArrToStringArr(a_buyerclass)
|
|
|
- if o_vipjy["a_items"] != nil {
|
|
|
- a_itmes := util.ObjArrToMapArr(o_vipjy["a_items"].([]interface{}))
|
|
|
- hasKeyFlag = len(a_itmes) > 0
|
|
|
- }
|
|
|
- isVipFlag = true
|
|
|
- isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 2000
|
|
|
- isOnTail = util.IntAll((*user)["i_vip_status"])
|
|
|
- _endtime := (*user)["l_vip_endtime"]
|
|
|
- //是否到期
|
|
|
- if util.Int64All(_endtime)-time.Now().Unix() < threeRemind && util.Int64All(_endtime)-time.Now().Unix() >= twoRemind {
|
|
|
- isExpire = 3 //即将到期
|
|
|
- } else if util.Int64All(_endtime)-time.Now().Unix() < twoRemind && util.Int64All(_endtime)-time.Now().Unix() >= oneRemind {
|
|
|
- isExpire = 2 //即将到期
|
|
|
- } else if util.Int64All(_endtime)-time.Now().Unix() < oneRemind && util.Int64All(_endtime)-time.Now().Unix() >= 0 {
|
|
|
- isExpire = 1 //即将到期
|
|
|
- }
|
|
|
- //判断首次用户是否推送的带有”其他“
|
|
|
- t, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local)
|
|
|
- today_1 := t.Unix()
|
|
|
- today_2 := t.AddDate(0, 0, 1).Unix()
|
|
|
- if public.PushMysql.CountBySql("select count(1) as count from pushsubscribe where isvip =1 and userid =? and buyerclass=? and (date between ? and ? )", f.GetSession("userId"), 93, today_1, today_2) > 0 {
|
|
|
- otherFlag = true
|
|
|
- }
|
|
|
- } else {
|
|
|
- if (*user)["i_vip_status"] == nil {
|
|
|
- isExpire = 0
|
|
|
- } else {
|
|
|
- isOnTail = util.IntAll((*user)["i_vip_status"])
|
|
|
- }
|
|
|
- if o_jy != nil || len(o_jy) == 0 {
|
|
|
- a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
- hasKeyFlag = len(a_key) > 0
|
|
|
- }
|
|
|
- isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 150
|
|
|
- }
|
|
|
- }
|
|
|
- pageNum, _ := f.GetInteger("pageNum")
|
|
|
- spqp := &jy.SubPushQueryParam{
|
|
|
- Mgo_bidding: public.Mgo_Bidding,
|
|
|
- Bidding: public.DbConf.Mongodb.Bidding.Collection,
|
|
|
- Bidding_back: public.DbConf.Mongodb.Bidding.Collection_back,
|
|
|
- PushMysql: public.PushMysql,
|
|
|
- UserId: userId,
|
|
|
- PageNum: pageNum,
|
|
|
- SelectTime: f.GetString("selectTime"),
|
|
|
- Area: f.GetString("area"),
|
|
|
- Buyerclass: f.GetString("buyerclass"),
|
|
|
- Subtype: f.GetString("subtype"),
|
|
|
- Subscopeclass: f.GetString("subscopeclass"),
|
|
|
- Key: f.GetString("key"),
|
|
|
- City: f.GetString("city"),
|
|
|
- Price: f.GetString("price"), //价格
|
|
|
- FileExists: f.GetString("fileExists"), //附件
|
|
|
- }
|
|
|
- hasNextPage, _, list := jy.NewSubscribePush().Datas(spqp)
|
|
|
- if hasKeyFlag && len(list) == 0 && spqp.IsEmpty() && !isVipFlag {
|
|
|
- flag, data := jy.NewSubscribePush().MakeHistoryDatas(public.MQFW, public.PushMysql, userId, public.PushView)
|
|
|
- if flag && data != nil {
|
|
|
- jsonBytes, err := json.Marshal(data)
|
|
|
- err = json.Unmarshal(jsonBytes, &list)
|
|
|
- if err != nil {
|
|
|
- log.Println("err:", err)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- jy.NewSubscribePush().MakeCollection(userId, public.Mysql, list, FileSignBool)
|
|
|
- //
|
|
|
- f.ServeJson(map[string]interface{}{
|
|
|
- "haskey": hasKeyFlag,
|
|
|
- "data": list,
|
|
|
- "hasNextPage": hasNextPage,
|
|
|
- "isInTSguide": isInTSguide(userId),
|
|
|
- "isVipSub": isVipFlag,
|
|
|
- "isPassCount": isPassCount,
|
|
|
- "isExpire": isExpire,
|
|
|
- "isOnTail": isOnTail,
|
|
|
- "userId": encrypt.EncodeArticleId(userId),
|
|
|
- "keys": keys,
|
|
|
- "otherFlag": otherFlag,
|
|
|
- "industry": industry_,
|
|
|
- "isread": isread,
|
|
|
- })
|
|
|
+ userId := util.ObjToString(f.GetSession("userId"))
|
|
|
+ var industry_ = []string{}
|
|
|
+ if userId == "" {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ user, _ := jy.NewSubscribePush().UserInfo(public.MQFW, userId)
|
|
|
+ hasKeyFlag := false
|
|
|
+ isVipFlag := false
|
|
|
+ isPassCount := false
|
|
|
+ isExpire := -1
|
|
|
+ tedayNum := time.Unix(time.Now().Unix(), 1).Format("20060102")
|
|
|
+ isOnTail := 0
|
|
|
+ var o_jy map[string]interface{}
|
|
|
+ isread := false
|
|
|
+ var keys []string
|
|
|
+ otherFlag := false
|
|
|
+ if user != nil {
|
|
|
+ o_jy, _ = (*user)["o_jy"].(map[string]interface{})
|
|
|
+ if o_jy != nil || len(o_jy) == 0 {
|
|
|
+ a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
+ if a_key != nil {
|
|
|
+ for _, v := range a_key {
|
|
|
+ kv := util.ObjToMap(v)
|
|
|
+ keys = append(keys, util.ObjArrToStringArr((*kv)["key"].([]interface{}))...)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if util.IntAll((*user)["i_vip_status"]) == 1 || util.IntAll((*user)["i_vip_status"]) == 2 {
|
|
|
+ //
|
|
|
+ var threeRemind = int64(3 * 24 * 60 * 60)
|
|
|
+ var twoRemind = int64(2 * 24 * 60 * 60)
|
|
|
+ var oneRemind = int64(1 * 24 * 60 * 60)
|
|
|
+ var o_vipjy map[string]interface{}
|
|
|
+ if (*user)["isread"] != nil {
|
|
|
+ isread = (*user)["isread"].(bool)
|
|
|
+ }
|
|
|
+ o_vipjy, _ = (*user)["o_vipjy"].(map[string]interface{})
|
|
|
+ a_buyerclass, _ := o_vipjy["a_buyerclass"].([]interface{})
|
|
|
+ industry_ = util.ObjArrToStringArr(a_buyerclass)
|
|
|
+ if o_vipjy["a_items"] != nil {
|
|
|
+ a_itmes := util.ObjArrToMapArr(o_vipjy["a_items"].([]interface{}))
|
|
|
+ hasKeyFlag = len(a_itmes) > 0
|
|
|
+ }
|
|
|
+ isVipFlag = true
|
|
|
+ isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 2000
|
|
|
+ isOnTail = util.IntAll((*user)["i_vip_status"])
|
|
|
+ _endtime := (*user)["l_vip_endtime"]
|
|
|
+ //是否到期
|
|
|
+ if util.Int64All(_endtime)-time.Now().Unix() < threeRemind && util.Int64All(_endtime)-time.Now().Unix() >= twoRemind {
|
|
|
+ isExpire = 3 //即将到期
|
|
|
+ } else if util.Int64All(_endtime)-time.Now().Unix() < twoRemind && util.Int64All(_endtime)-time.Now().Unix() >= oneRemind {
|
|
|
+ isExpire = 2 //即将到期
|
|
|
+ } else if util.Int64All(_endtime)-time.Now().Unix() < oneRemind && util.Int64All(_endtime)-time.Now().Unix() >= 0 {
|
|
|
+ isExpire = 1 //即将到期
|
|
|
+ }
|
|
|
+ //判断首次用户是否推送的带有”其他“
|
|
|
+ t, _ := time.ParseInLocation("2006-01-02", time.Now().Format("2006-01-02"), time.Local)
|
|
|
+ today_1 := t.Unix()
|
|
|
+ today_2 := t.AddDate(0, 0, 1).Unix()
|
|
|
+ if public.PushMysql.CountBySql("select count(1) as count from pushsubscribe where isvip =1 and userid =? and buyerclass=? and (date between ? and ? )", f.GetSession("userId"), 93, today_1, today_2) > 0 {
|
|
|
+ otherFlag = true
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (*user)["i_vip_status"] == nil {
|
|
|
+ isExpire = 0
|
|
|
+ } else {
|
|
|
+ isOnTail = util.IntAll((*user)["i_vip_status"])
|
|
|
+ }
|
|
|
+ if o_jy != nil || len(o_jy) == 0 {
|
|
|
+ a_key, _ := o_jy["a_key"].([]interface{})
|
|
|
+ hasKeyFlag = len(a_key) > 0
|
|
|
+ }
|
|
|
+ isPassCount = redis.GetInt("pushcache_2_a", "oncecount_"+tedayNum+"_"+userId) >= 150
|
|
|
+ }
|
|
|
+ }
|
|
|
+ pageNum, _ := f.GetInteger("pageNum")
|
|
|
+ spqp := &jy.SubPushQueryParam{
|
|
|
+ Mgo_bidding: public.Mgo_Bidding,
|
|
|
+ Bidding: public.DbConf.Mongodb.Bidding.Collection,
|
|
|
+ Bidding_back: public.DbConf.Mongodb.Bidding.Collection_back,
|
|
|
+ PushMysql: public.PushMysql,
|
|
|
+ UserId: userId,
|
|
|
+ PageNum: pageNum,
|
|
|
+ SelectTime: f.GetString("selectTime"),
|
|
|
+ Area: f.GetString("area"),
|
|
|
+ Buyerclass: f.GetString("buyerclass"),
|
|
|
+ Subtype: f.GetString("subtype"),
|
|
|
+ Subscopeclass: f.GetString("subscopeclass"),
|
|
|
+ Key: f.GetString("key"),
|
|
|
+ City: f.GetString("city"),
|
|
|
+ Price: f.GetString("price"), //价格
|
|
|
+ FileExists: f.GetString("fileExists"), //附件
|
|
|
+ }
|
|
|
+ hasNextPage, _, list := jy.NewSubscribePush().Datas(spqp)
|
|
|
+ if hasKeyFlag && len(list) == 0 && spqp.IsEmpty() && !isVipFlag {
|
|
|
+ flag, data := jy.NewSubscribePush().MakeHistoryDatas(public.MQFW, public.PushMysql, userId, public.PushView)
|
|
|
+ if flag && data != nil {
|
|
|
+ jsonBytes, err := json.Marshal(data)
|
|
|
+ err = json.Unmarshal(jsonBytes, &list)
|
|
|
+ if err != nil {
|
|
|
+ log.Println("err:", err)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ jy.NewSubscribePush().MakeCollection(userId, public.Mysql, list, FileSignBool)
|
|
|
+ //
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "haskey": hasKeyFlag,
|
|
|
+ "data": list,
|
|
|
+ "hasNextPage": hasNextPage,
|
|
|
+ "isInTSguide": isInTSguide(userId),
|
|
|
+ "isVipSub": isVipFlag,
|
|
|
+ "isPassCount": isPassCount,
|
|
|
+ "isExpire": isExpire,
|
|
|
+ "isOnTail": isOnTail,
|
|
|
+ "userId": encrypt.EncodeArticleId(userId),
|
|
|
+ "keys": keys,
|
|
|
+ "otherFlag": otherFlag,
|
|
|
+ "industry": industry_,
|
|
|
+ "isread": isread,
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
// 历史推送
|
|
|
func (f *Front) Newhistorypush() error {
|
|
|
- myopenid := util.ObjToString(f.GetSession("s_m_openid"))
|
|
|
- userId := util.ObjToString(f.GetSession("userId"))
|
|
|
- if myopenid == "" || userId == "" {
|
|
|
- return f.Redirect("/swordfish/share/-1")
|
|
|
- }
|
|
|
- //
|
|
|
- times := f.GetString("times")
|
|
|
- if times == "" {
|
|
|
- times = f.GetString("pushtime")
|
|
|
- }
|
|
|
- // 打开推送
|
|
|
- data := jyutil.Compatible.Select(userId, `"i_vip_subtips":1,"isread":1`)
|
|
|
- if data != nil && len(*data) > 0 {
|
|
|
- //VIP服务到期
|
|
|
- vipSubtips := (*data)["i_vip_subtips"]
|
|
|
- if vipSubtips == 0 {
|
|
|
- if jyutil.Compatible.Update(userId, bson.M{"$set": bson.M{"i_vip_subtips": 1}}) {
|
|
|
- return f.Redirect("/front/vipsubscribe/renewPage/exprie")
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- f.T["forceShareFlag"] = public.CheckUserNeedForceShare(myopenid, public.ShareType_push, config.Sysconfig)
|
|
|
- mynickname, _ := f.Session().Get("s_nickname").(string)
|
|
|
- myavatar, _ := f.Session().Get("s_avatar").(string)
|
|
|
- f.T["nickname"] = mynickname
|
|
|
- f.T["avatar"] = myavatar
|
|
|
- f.T["signature"] = wx.SignJSSDK(f.Site() + f.Url())
|
|
|
- f.T["openid"] = se.EncodeString(myopenid)
|
|
|
- f.T["stime"] = times
|
|
|
- f.T["isVip"] = util.IntAll((*data)["i_vip_status"]) > 0
|
|
|
- f.T["isread"] = (*data)["isread"]
|
|
|
- f.T["userId"] = userId
|
|
|
- //直播活动和预热活动期间
|
|
|
- if config.ActiveConfig.Live_Active_End > time.Now().Unix() && time.Now().Unix() > config.ActiveConfig.Live_Preheat_Start {
|
|
|
- f.T["LiveState"] = true
|
|
|
- }
|
|
|
- f.T["advertcode"] = f.GetString("advertcode")
|
|
|
- return f.Render("/weixin/historypush.html", &f.T)
|
|
|
+ myopenid := util.ObjToString(f.GetSession("s_m_openid"))
|
|
|
+ userId := util.ObjToString(f.GetSession("userId"))
|
|
|
+ if myopenid == "" || userId == "" {
|
|
|
+ return f.Redirect("/swordfish/share/-1")
|
|
|
+ }
|
|
|
+ //
|
|
|
+ times := f.GetString("times")
|
|
|
+ if times == "" {
|
|
|
+ times = f.GetString("pushtime")
|
|
|
+ }
|
|
|
+ // 打开推送
|
|
|
+ data, ok := mongodb.FindById("user", userId, nil)
|
|
|
+ if ok && data != nil && len(*data) > 0 {
|
|
|
+ //VIP服务到期
|
|
|
+ vipSubtips := (*data)["i_vip_subtips"]
|
|
|
+ if vipSubtips == 0 {
|
|
|
+ if mongodb.UpdateById("user", userId, bson.M{"$set": bson.M{"i_vip_subtips": 1}}) {
|
|
|
+ return f.Redirect("/front/vipsubscribe/renewPage/exprie")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ f.T["forceShareFlag"] = public.CheckUserNeedForceShare(myopenid, public.ShareType_push, config.Sysconfig)
|
|
|
+ mynickname, _ := f.Session().Get("s_nickname").(string)
|
|
|
+ myavatar, _ := f.Session().Get("s_avatar").(string)
|
|
|
+ f.T["nickname"] = mynickname
|
|
|
+ f.T["avatar"] = myavatar
|
|
|
+ f.T["signature"] = wx.SignJSSDK(f.Site() + f.Url())
|
|
|
+ f.T["openid"] = se.EncodeString(myopenid)
|
|
|
+ f.T["stime"] = times
|
|
|
+ f.T["isVip"] = util.IntAll((*data)["i_vip_status"]) > 0
|
|
|
+ f.T["isread"] = (*data)["isread"]
|
|
|
+ f.T["userId"] = userId
|
|
|
+ //直播活动和预热活动期间
|
|
|
+ if config.ActiveConfig.Live_Active_End > time.Now().Unix() && time.Now().Unix() > config.ActiveConfig.Live_Preheat_Start {
|
|
|
+ f.T["LiveState"] = true
|
|
|
+ }
|
|
|
+ f.T["advertcode"] = f.GetString("advertcode")
|
|
|
+ return f.Render("/weixin/historypush.html", &f.T)
|
|
|
}
|
|
|
|
|
|
// 历史推送
|
|
|
func (f *Front) Historypush() error {
|
|
|
- return f.Newhistorypush()
|
|
|
+ return f.Newhistorypush()
|
|
|
}
|
|
|
|
|
|
func (f *Front) HistorypushPaging() error {
|
|
|
- //
|
|
|
- if userId, _ := f.GetSession("userId").(string); userId != "" {
|
|
|
- pageNum, _ := f.GetInteger("pageNum")
|
|
|
- hasNextPage, _, list := jy.NewSubscribePush().Datas(&jy.SubPushQueryParam{
|
|
|
- Mgo_bidding: public.Mgo_Bidding,
|
|
|
- Bidding: public.DbConf.Mongodb.Bidding.Collection,
|
|
|
- Bidding_back: public.DbConf.Mongodb.Bidding.Collection_back,
|
|
|
- PushMysql: public.PushMysql,
|
|
|
- UserId: userId,
|
|
|
- PageNum: pageNum,
|
|
|
- SelectTime: f.GetString("selectTime"),
|
|
|
- Area: f.GetString("area"),
|
|
|
- Buyerclass: f.GetString("buyerclass"),
|
|
|
- Subtype: f.GetString("subtype"),
|
|
|
- Subscopeclass: f.GetString("subscopeclass"),
|
|
|
- Key: f.GetString("key"),
|
|
|
- City: f.GetString("city"),
|
|
|
- Price: f.GetString("price"), //价格
|
|
|
- FileExists: f.GetString("fileExists"), //附件
|
|
|
- })
|
|
|
- jy.NewSubscribePush().MakeCollection(userId, public.Mysql, list, FileSignBool)
|
|
|
- // hasNextPage, list, _ := public.HistoryPush.Datas(userId, pageNum, firstPushTime, formatTime)
|
|
|
- f.ServeJson(map[string]interface{}{
|
|
|
- "hasNextPage": hasNextPage,
|
|
|
- "data": list,
|
|
|
- })
|
|
|
- }
|
|
|
- return nil
|
|
|
+ //
|
|
|
+ if userId, _ := f.GetSession("userId").(string); userId != "" {
|
|
|
+ pageNum, _ := f.GetInteger("pageNum")
|
|
|
+ hasNextPage, _, list := jy.NewSubscribePush().Datas(&jy.SubPushQueryParam{
|
|
|
+ Mgo_bidding: public.Mgo_Bidding,
|
|
|
+ Bidding: public.DbConf.Mongodb.Bidding.Collection,
|
|
|
+ Bidding_back: public.DbConf.Mongodb.Bidding.Collection_back,
|
|
|
+ PushMysql: public.PushMysql,
|
|
|
+ UserId: userId,
|
|
|
+ PageNum: pageNum,
|
|
|
+ SelectTime: f.GetString("selectTime"),
|
|
|
+ Area: f.GetString("area"),
|
|
|
+ Buyerclass: f.GetString("buyerclass"),
|
|
|
+ Subtype: f.GetString("subtype"),
|
|
|
+ Subscopeclass: f.GetString("subscopeclass"),
|
|
|
+ Key: f.GetString("key"),
|
|
|
+ City: f.GetString("city"),
|
|
|
+ Price: f.GetString("price"), //价格
|
|
|
+ FileExists: f.GetString("fileExists"), //附件
|
|
|
+ })
|
|
|
+ jy.NewSubscribePush().MakeCollection(userId, public.Mysql, list, FileSignBool)
|
|
|
+ // hasNextPage, list, _ := public.HistoryPush.Datas(userId, pageNum, firstPushTime, formatTime)
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "hasNextPage": hasNextPage,
|
|
|
+ "data": list,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return nil
|
|
|
}
|
|
|
|
|
|
// 电脑端招标订阅
|
|
|
func (m *Front) Subscribe() error {
|
|
|
- isBuyed := false
|
|
|
- if userId, _ := m.GetSession("userId").(string); userId != "" {
|
|
|
+ isBuyed := false
|
|
|
+ if userId, _ := m.GetSession("userId").(string); userId != "" {
|
|
|
|
|
|
- vStatus := jy.GetVipState(m.Session(), *config.Middleground, userId)
|
|
|
- isBuyed = vStatus.VipState > 0
|
|
|
- }
|
|
|
- m.T["isBuyed"] = isBuyed
|
|
|
- m.T["logid"] = config.Seoconfig["jydyy"].(string)
|
|
|
- return m.Render("/pc/subscribe_new.html", &m.T)
|
|
|
+ vStatus := jy.GetVipState(m.Session(), *config.Middleground, userId)
|
|
|
+ isBuyed = vStatus.VipState > 0
|
|
|
+ }
|
|
|
+ m.T["isBuyed"] = isBuyed
|
|
|
+ m.T["logid"] = config.Seoconfig["jydyy"].(string)
|
|
|
+ return m.Render("/pc/subscribe_new.html", &m.T)
|
|
|
}
|
|
|
|
|
|
// 获取高级查询所需的参数
|
|
|
func getShouldQueryMap(findfield, searchvalue, industry string) []map[string]string {
|
|
|
- mps := []map[string]string{}
|
|
|
- for _, v := range strings.Split(industry, ",") {
|
|
|
- mp := map[string]string{}
|
|
|
- for _, v := range strings.Split(searchvalue, "+") {
|
|
|
- mp[v] = findfield
|
|
|
- }
|
|
|
- mp[v] = "s_subscopeclass"
|
|
|
- mps = append(mps, mp)
|
|
|
- }
|
|
|
- return mps
|
|
|
+ mps := []map[string]string{}
|
|
|
+ for _, v := range strings.Split(industry, ",") {
|
|
|
+ mp := map[string]string{}
|
|
|
+ for _, v := range strings.Split(searchvalue, "+") {
|
|
|
+ mp[v] = findfield
|
|
|
+ }
|
|
|
+ mp[v] = "s_subscopeclass"
|
|
|
+ mps = append(mps, mp)
|
|
|
+ }
|
|
|
+ return mps
|
|
|
}
|
|
|
|
|
|
func getSearchQuery(keyword, industry, minprice, maxprice, hasBuyerTel, hasWinnerTel, findfields, mustquery string) (qstr string) {
|
|
|
- multi_match := `{"multi_match": {"query": "%s","type": "phrase", "fields": [%s]}}`
|
|
|
- //match_phrase := `{"match_phrase": {"s_subscopeclass": "%s"}}`
|
|
|
- query := `{"query":{"bool":{"must":[%s],"must_not":[%s]}}}`
|
|
|
- query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
|
|
|
- //query_bools_must := `{"bool":{"must":[{"range":{"bidamount":{%s}}}],"must_not":[{"term":{"bidamount":0}},{"term":{"budget":0}}]}},{"bool":{"must":[{"term":{"bidamount":0}},{"range":{"budget":{%s}}}]}},{"bool":{"must":[{"term":{"budget":0}},{"range":{"bidamount":{%s}}}]}}`
|
|
|
- query_bools_must := `{"bool":{"must":[{"range":{"bidamount":{%s}}}]}},{"bool":{"must":[{"range":{"budget":{%s}}}],"must_not":[{"range":{"bidamount":{"gte":-1}}}]}}`
|
|
|
- query_bool_must := `{"bool":{"must":[{"terms":{"s_subscopeclass":[%s]}}]}}`
|
|
|
- query_missing := `{"constant_score":{"filter":{"missing":{"field":"%s"}}}}`
|
|
|
- //rge := `{"range": {"bidamount": {%s}}},{"range": {"budget": {%s}}}`
|
|
|
- gte := `"gte": %s`
|
|
|
- lte := `"lte": %s`
|
|
|
- musts, must_not := []string{}, []string{}
|
|
|
- if mustquery != "" {
|
|
|
- musts = append(musts, mustquery)
|
|
|
- }
|
|
|
- if keyword != "" {
|
|
|
- multi_match = fmt.Sprintf(multi_match, "%s", findfields)
|
|
|
- shoulds := []string{}
|
|
|
- for _, v := range strings.Split(keyword, "+") {
|
|
|
- shoulds = append(shoulds, fmt.Sprintf(multi_match, elastic.ReplaceYH(v)))
|
|
|
- }
|
|
|
- musts = append(musts, fmt.Sprintf(elastic.NgramMust, strings.Join(shoulds, ",")))
|
|
|
- }
|
|
|
- if industry != "" {
|
|
|
- industrys := strings.Split(industry, ",")
|
|
|
- musts = append(musts, fmt.Sprintf(query_bool_must, `"`+strings.Join(industrys, `","`)+`"`))
|
|
|
- }
|
|
|
- if minprice != "" || maxprice != "" {
|
|
|
- sq := ``
|
|
|
- if minprice != "" {
|
|
|
- min, _ := strconv.ParseFloat(minprice, 64)
|
|
|
- minprice = fmt.Sprintf("%.0f", min*10000)
|
|
|
- if minprice == "0" {
|
|
|
- minprice = ""
|
|
|
- }
|
|
|
- }
|
|
|
- if maxprice != "" {
|
|
|
- max, _ := strconv.ParseFloat(maxprice, 64)
|
|
|
- maxprice = fmt.Sprintf("%.0f", max*10000)
|
|
|
- if maxprice == "0" {
|
|
|
- maxprice = ""
|
|
|
- }
|
|
|
- }
|
|
|
- if minprice != "" {
|
|
|
- sq += fmt.Sprintf(gte, minprice)
|
|
|
- }
|
|
|
- if minprice != "" && maxprice != "" {
|
|
|
- sq += `,`
|
|
|
- }
|
|
|
- if maxprice != "" {
|
|
|
- sq += fmt.Sprintf(lte, maxprice)
|
|
|
- }
|
|
|
- if minprice != "" || maxprice != "" {
|
|
|
- query_price := fmt.Sprintf(query_bool_should, fmt.Sprintf(query_bools_must, sq, sq))
|
|
|
- musts = append(musts, query_price)
|
|
|
- }
|
|
|
- }
|
|
|
- if hasBuyerTel != "" {
|
|
|
- if hasBuyerTel == "y" {
|
|
|
- must_not = append(must_not, fmt.Sprintf(query_missing, "buyertel"))
|
|
|
- } else {
|
|
|
- musts = append(musts, fmt.Sprintf(query_missing, "buyertel"))
|
|
|
- }
|
|
|
- }
|
|
|
- if hasWinnerTel != "" {
|
|
|
- if hasWinnerTel == "y" {
|
|
|
- must_not = append(must_not, fmt.Sprintf(query_missing, "winnertel"))
|
|
|
- } else {
|
|
|
- musts = append(musts, fmt.Sprintf(query_missing, "winnertel"))
|
|
|
- }
|
|
|
- }
|
|
|
- qstr = fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(must_not, ","))
|
|
|
- return
|
|
|
+ multi_match := `{"multi_match": {"query": "%s","type": "phrase", "fields": [%s]}}`
|
|
|
+ //match_phrase := `{"match_phrase": {"s_subscopeclass": "%s"}}`
|
|
|
+ query := `{"query":{"bool":{"must":[%s],"must_not":[%s]}}}`
|
|
|
+ query_bool_should := `{"bool":{"should":[%s],"minimum_should_match": 1}}`
|
|
|
+ //query_bools_must := `{"bool":{"must":[{"range":{"bidamount":{%s}}}],"must_not":[{"term":{"bidamount":0}},{"term":{"budget":0}}]}},{"bool":{"must":[{"term":{"bidamount":0}},{"range":{"budget":{%s}}}]}},{"bool":{"must":[{"term":{"budget":0}},{"range":{"bidamount":{%s}}}]}}`
|
|
|
+ query_bools_must := `{"bool":{"must":[{"range":{"bidamount":{%s}}}]}},{"bool":{"must":[{"range":{"budget":{%s}}}],"must_not":[{"range":{"bidamount":{"gte":-1}}}]}}`
|
|
|
+ query_bool_must := `{"bool":{"must":[{"terms":{"s_subscopeclass":[%s]}}]}}`
|
|
|
+ query_missing := `{"constant_score":{"filter":{"missing":{"field":"%s"}}}}`
|
|
|
+ //rge := `{"range": {"bidamount": {%s}}},{"range": {"budget": {%s}}}`
|
|
|
+ gte := `"gte": %s`
|
|
|
+ lte := `"lte": %s`
|
|
|
+ musts, must_not := []string{}, []string{}
|
|
|
+ if mustquery != "" {
|
|
|
+ musts = append(musts, mustquery)
|
|
|
+ }
|
|
|
+ if keyword != "" {
|
|
|
+ multi_match = fmt.Sprintf(multi_match, "%s", findfields)
|
|
|
+ shoulds := []string{}
|
|
|
+ for _, v := range strings.Split(keyword, "+") {
|
|
|
+ shoulds = append(shoulds, fmt.Sprintf(multi_match, elastic.ReplaceYH(v)))
|
|
|
+ }
|
|
|
+ musts = append(musts, fmt.Sprintf(elastic.NgramMust, strings.Join(shoulds, ",")))
|
|
|
+ }
|
|
|
+ if industry != "" {
|
|
|
+ industrys := strings.Split(industry, ",")
|
|
|
+ musts = append(musts, fmt.Sprintf(query_bool_must, `"`+strings.Join(industrys, `","`)+`"`))
|
|
|
+ }
|
|
|
+ if minprice != "" || maxprice != "" {
|
|
|
+ sq := ``
|
|
|
+ if minprice != "" {
|
|
|
+ min, _ := strconv.ParseFloat(minprice, 64)
|
|
|
+ minprice = fmt.Sprintf("%.0f", min*10000)
|
|
|
+ if minprice == "0" {
|
|
|
+ minprice = ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if maxprice != "" {
|
|
|
+ max, _ := strconv.ParseFloat(maxprice, 64)
|
|
|
+ maxprice = fmt.Sprintf("%.0f", max*10000)
|
|
|
+ if maxprice == "0" {
|
|
|
+ maxprice = ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if minprice != "" {
|
|
|
+ sq += fmt.Sprintf(gte, minprice)
|
|
|
+ }
|
|
|
+ if minprice != "" && maxprice != "" {
|
|
|
+ sq += `,`
|
|
|
+ }
|
|
|
+ if maxprice != "" {
|
|
|
+ sq += fmt.Sprintf(lte, maxprice)
|
|
|
+ }
|
|
|
+ if minprice != "" || maxprice != "" {
|
|
|
+ query_price := fmt.Sprintf(query_bool_should, fmt.Sprintf(query_bools_must, sq, sq))
|
|
|
+ musts = append(musts, query_price)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if hasBuyerTel != "" {
|
|
|
+ if hasBuyerTel == "y" {
|
|
|
+ must_not = append(must_not, fmt.Sprintf(query_missing, "buyertel"))
|
|
|
+ } else {
|
|
|
+ musts = append(musts, fmt.Sprintf(query_missing, "buyertel"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if hasWinnerTel != "" {
|
|
|
+ if hasWinnerTel == "y" {
|
|
|
+ must_not = append(must_not, fmt.Sprintf(query_missing, "winnertel"))
|
|
|
+ } else {
|
|
|
+ musts = append(musts, fmt.Sprintf(query_missing, "winnertel"))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ qstr = fmt.Sprintf(query, strings.Join(musts, ","), strings.Join(must_not, ","))
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
func wxPushViewDatas(index, itype string, keys []elastic.KeyConfig, allquery, findfields, SortQuery, fields string, start, limit int) *[]map[string]interface{} {
|
|
|
- query_all := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match":1}}}`
|
|
|
- match_detail := `{"match":{"detail":{"query":"%s","operator": "and"}}}`
|
|
|
- minq := `{"multi_match": {"query": "%s","type": "phrase", "fields": [%s]}}`
|
|
|
- highlightStr := `%s: {"fragment_size": %d,"number_of_fragments": 1}`
|
|
|
- query_bool := `{"bool":{"must":[%s],"should":[%s],"must_not":[%s],"minimum_should_match":1}}`
|
|
|
- bool_must := `{"bool":{"must":[%s]}}`
|
|
|
- //
|
|
|
- searchDetail := strings.Contains(findfields, `"detail"`)
|
|
|
- if len(keys) > 0 {
|
|
|
- qstr := ""
|
|
|
- new_minq := fmt.Sprintf(minq, "%s", `"title"`)
|
|
|
- not_new_minq := fmt.Sprintf(minq, "%s", `"title"`) //排除词只查询标题
|
|
|
- musts := []string{}
|
|
|
- for _, qs_words := range keys {
|
|
|
- mq := []string{}
|
|
|
- notmq := []string{}
|
|
|
- shoulds := []string{}
|
|
|
- keywords := []string{}
|
|
|
- boolmusts := []string{}
|
|
|
- for _, qs_word := range qs_words.Keys {
|
|
|
- qs_word = elastic.ReplaceYH(qs_word)
|
|
|
- keywords = append(keywords, qs_word)
|
|
|
- boolmusts = append(boolmusts, fmt.Sprintf(new_minq, qs_word))
|
|
|
- }
|
|
|
- shoulds = append(shoulds, fmt.Sprintf(bool_must, strings.Join(boolmusts, ",")))
|
|
|
- if searchDetail {
|
|
|
- shoulds = append(shoulds, fmt.Sprintf(match_detail, strings.Join(keywords, " ")))
|
|
|
- }
|
|
|
- for _, qs_word := range qs_words.NotKeys {
|
|
|
- notmq = append(notmq, fmt.Sprintf(not_new_minq, elastic.ReplaceYH(qs_word)))
|
|
|
- if searchDetail {
|
|
|
- notmq = append(notmq, fmt.Sprintf(match_detail, elastic.ReplaceYH(qs_word)))
|
|
|
- }
|
|
|
- }
|
|
|
- if len(qs_words.Areas) > 0 {
|
|
|
- mq = append(mq, fmt.Sprintf(`{"terms":{"area":["%s"]}}`, strings.Join(qs_words.Areas, `","`)))
|
|
|
- }
|
|
|
- if len(qs_words.InfoTypes) > 0 {
|
|
|
- mq = append(mq, fmt.Sprintf(`{"terms":{"toptype":["%s"]}}`, strings.Join(qs_words.InfoTypes, `","`)))
|
|
|
- }
|
|
|
- musts = append(musts, fmt.Sprintf(query_bool, strings.Join(mq, ","), strings.Join(shoulds, ","), strings.Join(notmq, ",")))
|
|
|
- }
|
|
|
- qstr = fmt.Sprintf(query_all, "", strings.Join(musts, ","))
|
|
|
-
|
|
|
- qstr = fmt.Sprintf(elastic.FilterQuery, allquery, qstr[1:])
|
|
|
- ws := []string{}
|
|
|
- for _, w := range strings.Split(findfields, ",") {
|
|
|
- ws = append(ws, fmt.Sprintf(highlightStr, w, 1))
|
|
|
- }
|
|
|
- qstr = qstr[:len(qstr)-1] + `,` + fmt.Sprintf(elastic.HL, strings.Join(ws, ",")) + `}`
|
|
|
- if len(fields) > 0 {
|
|
|
- qstr = qstr[:len(qstr)-1] + `,"_source":[` + fields + "]}"
|
|
|
- }
|
|
|
- if len(SortQuery) > 0 {
|
|
|
- qstr = qstr[:len(qstr)-1] + `,"sort":` + SortQuery + `}`
|
|
|
- }
|
|
|
- if start > -1 {
|
|
|
- qstr = qstr[:len(qstr)-1] + `,"from":` + strconv.Itoa(start) + `,"size":` + strconv.Itoa(limit) + "}"
|
|
|
- }
|
|
|
- return elastic.Get(index, itype, qstr)
|
|
|
- } else {
|
|
|
- return nil
|
|
|
- }
|
|
|
+ query_all := `{"query":{"bool":{"must":[%s],"should":[%s],"minimum_should_match":1}}}`
|
|
|
+ match_detail := `{"match":{"detail":{"query":"%s","operator": "and"}}}`
|
|
|
+ minq := `{"multi_match": {"query": "%s","type": "phrase", "fields": [%s]}}`
|
|
|
+ highlightStr := `%s: {"fragment_size": %d,"number_of_fragments": 1}`
|
|
|
+ query_bool := `{"bool":{"must":[%s],"should":[%s],"must_not":[%s],"minimum_should_match":1}}`
|
|
|
+ bool_must := `{"bool":{"must":[%s]}}`
|
|
|
+ //
|
|
|
+ searchDetail := strings.Contains(findfields, `"detail"`)
|
|
|
+ if len(keys) > 0 {
|
|
|
+ qstr := ""
|
|
|
+ new_minq := fmt.Sprintf(minq, "%s", `"title"`)
|
|
|
+ not_new_minq := fmt.Sprintf(minq, "%s", `"title"`) //排除词只查询标题
|
|
|
+ musts := []string{}
|
|
|
+ for _, qs_words := range keys {
|
|
|
+ mq := []string{}
|
|
|
+ notmq := []string{}
|
|
|
+ shoulds := []string{}
|
|
|
+ keywords := []string{}
|
|
|
+ boolmusts := []string{}
|
|
|
+ for _, qs_word := range qs_words.Keys {
|
|
|
+ qs_word = elastic.ReplaceYH(qs_word)
|
|
|
+ keywords = append(keywords, qs_word)
|
|
|
+ boolmusts = append(boolmusts, fmt.Sprintf(new_minq, qs_word))
|
|
|
+ }
|
|
|
+ shoulds = append(shoulds, fmt.Sprintf(bool_must, strings.Join(boolmusts, ",")))
|
|
|
+ if searchDetail {
|
|
|
+ shoulds = append(shoulds, fmt.Sprintf(match_detail, strings.Join(keywords, " ")))
|
|
|
+ }
|
|
|
+ for _, qs_word := range qs_words.NotKeys {
|
|
|
+ notmq = append(notmq, fmt.Sprintf(not_new_minq, elastic.ReplaceYH(qs_word)))
|
|
|
+ if searchDetail {
|
|
|
+ notmq = append(notmq, fmt.Sprintf(match_detail, elastic.ReplaceYH(qs_word)))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if len(qs_words.Areas) > 0 {
|
|
|
+ mq = append(mq, fmt.Sprintf(`{"terms":{"area":["%s"]}}`, strings.Join(qs_words.Areas, `","`)))
|
|
|
+ }
|
|
|
+ if len(qs_words.InfoTypes) > 0 {
|
|
|
+ mq = append(mq, fmt.Sprintf(`{"terms":{"toptype":["%s"]}}`, strings.Join(qs_words.InfoTypes, `","`)))
|
|
|
+ }
|
|
|
+ musts = append(musts, fmt.Sprintf(query_bool, strings.Join(mq, ","), strings.Join(shoulds, ","), strings.Join(notmq, ",")))
|
|
|
+ }
|
|
|
+ qstr = fmt.Sprintf(query_all, "", strings.Join(musts, ","))
|
|
|
+
|
|
|
+ qstr = fmt.Sprintf(elastic.FilterQuery, allquery, qstr[1:])
|
|
|
+ ws := []string{}
|
|
|
+ for _, w := range strings.Split(findfields, ",") {
|
|
|
+ ws = append(ws, fmt.Sprintf(highlightStr, w, 1))
|
|
|
+ }
|
|
|
+ qstr = qstr[:len(qstr)-1] + `,` + fmt.Sprintf(elastic.HL, strings.Join(ws, ",")) + `}`
|
|
|
+ if len(fields) > 0 {
|
|
|
+ qstr = qstr[:len(qstr)-1] + `,"_source":[` + fields + "]}"
|
|
|
+ }
|
|
|
+ if len(SortQuery) > 0 {
|
|
|
+ qstr = qstr[:len(qstr)-1] + `,"sort":` + SortQuery + `}`
|
|
|
+ }
|
|
|
+ if start > -1 {
|
|
|
+ qstr = qstr[:len(qstr)-1] + `,"from":` + strconv.Itoa(start) + `,"size":` + strconv.Itoa(limit) + "}"
|
|
|
+ }
|
|
|
+ return elastic.Get(index, itype, qstr)
|
|
|
+ } else {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 金额转化 金额:0-万元以下单位为元 ,万元以上至亿元以下单位为万元 ,亿元以上单位为亿元。保留 小数点后 2 位,不进行四舍五入。
|
|
|
func ConversionMoeny(i_money interface{}) string {
|
|
|
- m := ""
|
|
|
- if reflect.TypeOf(i_money).Name() == "float64" {
|
|
|
- m = strconv.FormatFloat(util.Float64All(i_money), 'f', -1, 64)
|
|
|
- } else {
|
|
|
- m = util.ObjToString(i_money)
|
|
|
- }
|
|
|
- if m == "" {
|
|
|
- return m
|
|
|
- }
|
|
|
- m_arr := strings.Split(m, ".")
|
|
|
- m_1 := m_arr[0]
|
|
|
- len_m1 := len([]rune(m_1))
|
|
|
- if len_m1 >= 9 {
|
|
|
- m = m_1[0:len_m1-8] + "." + m_1[len_m1-8:len_m1-6] + "亿元"
|
|
|
- } else if len_m1 >= 5 {
|
|
|
- m = m_1[0:len_m1-4] + "." + m_1[len_m1-4:len_m1-2] + "万元"
|
|
|
- } else {
|
|
|
- if len(m_arr) == 1 {
|
|
|
- return m + ".00元"
|
|
|
- }
|
|
|
- m_2 := m_arr[1]
|
|
|
- if len([]rune(m_2)) > 1 {
|
|
|
- m_2 = m_2[0:2]
|
|
|
- } else {
|
|
|
- m_2 = m_2[0:1] + "0"
|
|
|
- }
|
|
|
- m = m_1 + "." + m_2 + "元"
|
|
|
- }
|
|
|
- return m
|
|
|
+ m := ""
|
|
|
+ if reflect.TypeOf(i_money).Name() == "float64" {
|
|
|
+ m = strconv.FormatFloat(util.Float64All(i_money), 'f', -1, 64)
|
|
|
+ } else {
|
|
|
+ m = util.ObjToString(i_money)
|
|
|
+ }
|
|
|
+ if m == "" {
|
|
|
+ return m
|
|
|
+ }
|
|
|
+ m_arr := strings.Split(m, ".")
|
|
|
+ m_1 := m_arr[0]
|
|
|
+ len_m1 := len([]rune(m_1))
|
|
|
+ if len_m1 >= 9 {
|
|
|
+ m = m_1[0:len_m1-8] + "." + m_1[len_m1-8:len_m1-6] + "亿元"
|
|
|
+ } else if len_m1 >= 5 {
|
|
|
+ m = m_1[0:len_m1-4] + "." + m_1[len_m1-4:len_m1-2] + "万元"
|
|
|
+ } else {
|
|
|
+ if len(m_arr) == 1 {
|
|
|
+ return m + ".00元"
|
|
|
+ }
|
|
|
+ m_2 := m_arr[1]
|
|
|
+ if len([]rune(m_2)) > 1 {
|
|
|
+ m_2 = m_2[0:2]
|
|
|
+ } else {
|
|
|
+ m_2 = m_2[0:1] + "0"
|
|
|
+ }
|
|
|
+ m = m_1 + "." + m_2 + "元"
|
|
|
+ }
|
|
|
+ return m
|
|
|
}
|