|
@@ -4,7 +4,6 @@ import (
|
|
"database/sql"
|
|
"database/sql"
|
|
"errors"
|
|
"errors"
|
|
"fmt"
|
|
"fmt"
|
|
- "github.com/gogf/gf/v2/util/gconv"
|
|
|
|
"jy/src/jfw/config"
|
|
"jy/src/jfw/config"
|
|
"jy/src/jfw/wx"
|
|
"jy/src/jfw/wx"
|
|
"log"
|
|
"log"
|
|
@@ -12,18 +11,17 @@ import (
|
|
"net/url"
|
|
"net/url"
|
|
"strconv"
|
|
"strconv"
|
|
|
|
|
|
|
|
+ "github.com/gogf/gf/v2/util/gconv"
|
|
|
|
+
|
|
"jy/src/jfw/jyutil"
|
|
"jy/src/jfw/jyutil"
|
|
|
|
|
|
"app.yhyue.com/moapp/jypkg/public"
|
|
"app.yhyue.com/moapp/jypkg/public"
|
|
|
|
|
|
util "app.yhyue.com/moapp/jybase/common"
|
|
util "app.yhyue.com/moapp/jybase/common"
|
|
"app.yhyue.com/moapp/jybase/date"
|
|
"app.yhyue.com/moapp/jybase/date"
|
|
-
|
|
|
|
- . "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
|
|
|
+ mg "app.yhyue.com/moapp/jybase/mongodb"
|
|
|
|
|
|
elastic "app.yhyue.com/moapp/jybase/es"
|
|
elastic "app.yhyue.com/moapp/jybase/es"
|
|
- "app.yhyue.com/moapp/jybase/fsw"
|
|
|
|
-
|
|
|
|
"regexp"
|
|
"regexp"
|
|
"strings"
|
|
"strings"
|
|
"time"
|
|
"time"
|
|
@@ -44,43 +42,44 @@ type Short struct {
|
|
nologinArticle xweb.Mapper `xweb:"/nologin/(\\w+)/(.*).html"` //([pm]) 无需登录
|
|
nologinArticle xweb.Mapper `xweb:"/nologin/(\\w+)/(.*).html"` //([pm]) 无需登录
|
|
}
|
|
}
|
|
|
|
|
|
-var mobileReg = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
|
|
|
|
-var DateFullLayout = "2006-01-02 15:04:05"
|
|
|
|
-var Map_stype = map[string]bool{
|
|
|
|
- "content": true,
|
|
|
|
- "entservice": true,
|
|
|
|
- "bdprivate": true,
|
|
|
|
- "mailprivate": true,
|
|
|
|
- "bdcontent": true,
|
|
|
|
- "indexcontent": true,
|
|
|
|
- "advancedProject": true,
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var TypeCodeMap = map[string]string{
|
|
|
|
- "拟建": "拟建项目",
|
|
|
|
- "采购意向": "采购意向",
|
|
|
|
- "预告": "招标预告",
|
|
|
|
- "预审": "资格预审",
|
|
|
|
- "预审结果": "资格预审结果",
|
|
|
|
- "论证意见": "论证意见",
|
|
|
|
- "需求公示": "需求公示",
|
|
|
|
- "招标": "公开招标",
|
|
|
|
- "邀标": "邀请招标",
|
|
|
|
- "询价": "询价采购",
|
|
|
|
- "竞谈": "竞争性谈判",
|
|
|
|
- "单一": "单一来源采购",
|
|
|
|
- "竞价": "竞价公告",
|
|
|
|
- "变更": "变更公告",
|
|
|
|
- "中标": "中标公示",
|
|
|
|
- "成交": "成交公告",
|
|
|
|
- "废标": "废标公告",
|
|
|
|
- "流标": "流标公告",
|
|
|
|
- "合同": "合同公告信息",
|
|
|
|
- "验收": "验收公告信息",
|
|
|
|
- "违规": "违规信息",
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var seoAgentReg = regexp.MustCompile("Baiduspider|360Spider|bingbot|Googlebot")
|
|
|
|
|
|
+var (
|
|
|
|
+ mobileReg = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
|
|
|
|
+ DateFullLayout = "2006-01-02 15:04:05"
|
|
|
|
+ Map_stype = map[string]bool{
|
|
|
|
+ "content": true,
|
|
|
|
+ "entservice": true,
|
|
|
|
+ "bdprivate": true,
|
|
|
|
+ "mailprivate": true,
|
|
|
|
+ "bdcontent": true,
|
|
|
|
+ "indexcontent": true,
|
|
|
|
+ "advancedProject": true,
|
|
|
|
+ }
|
|
|
|
+ seoAgentReg = regexp.MustCompile("Baiduspider|360Spider|bingbot|Googlebot")
|
|
|
|
+ detailNeedMosaic map[string]interface{}
|
|
|
|
+ TypeCodeMap = map[string]string{
|
|
|
|
+ "拟建": "拟建项目",
|
|
|
|
+ "采购意向": "采购意向",
|
|
|
|
+ "预告": "招标预告",
|
|
|
|
+ "预审": "资格预审",
|
|
|
|
+ "预审结果": "资格预审结果",
|
|
|
|
+ "论证意见": "论证意见",
|
|
|
|
+ "需求公示": "需求公示",
|
|
|
|
+ "招标": "公开招标",
|
|
|
|
+ "邀标": "邀请招标",
|
|
|
|
+ "询价": "询价采购",
|
|
|
|
+ "竞谈": "竞争性谈判",
|
|
|
|
+ "单一": "单一来源采购",
|
|
|
|
+ "竞价": "竞价公告",
|
|
|
|
+ "变更": "变更公告",
|
|
|
|
+ "中标": "中标公示",
|
|
|
|
+ "成交": "成交公告",
|
|
|
|
+ "废标": "废标公告",
|
|
|
|
+ "流标": "流标公告",
|
|
|
|
+ "合同": "合同公告信息",
|
|
|
|
+ "验收": "验收公告信息",
|
|
|
|
+ "违规": "违规信息",
|
|
|
|
+ }
|
|
|
|
+)
|
|
|
|
|
|
func (s *Short) Article(stype, id string) error {
|
|
func (s *Short) Article(stype, id string) error {
|
|
userId, _ := s.GetSession("userId").(string)
|
|
userId, _ := s.GetSession("userId").(string)
|
|
@@ -211,6 +210,7 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
|
|
ssOpenid := s.Session().Get("s_m_openid")
|
|
ssOpenid := s.Session().Get("s_m_openid")
|
|
po, bo, wo, obj := pcVRT(sid, industry, stype, true)
|
|
po, bo, wo, obj := pcVRT(sid, industry, stype, true)
|
|
if obj != nil && len(obj) > 0 {
|
|
if obj != nil && len(obj) > 0 {
|
|
|
|
+
|
|
if len(po) > 0 {
|
|
if len(po) > 0 {
|
|
s.T["projectOther"] = po
|
|
s.T["projectOther"] = po
|
|
}
|
|
}
|
|
@@ -276,7 +276,7 @@ func (s *Short) LoginCommon(userId, stype, id string) error {
|
|
if userId == "" && ssOpenid != nil {
|
|
if userId == "" && ssOpenid != nil {
|
|
res, ok = mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid, "s_unionid": bson.M{"$ne": ssOpenid}}, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1,"l_vip_starttime":1}`)
|
|
res, ok = mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid, "s_unionid": bson.M{"$ne": ssOpenid}}, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1,"l_vip_starttime":1}`)
|
|
if ok {
|
|
if ok {
|
|
- userId = BsonIdToSId((*res)["_id"])
|
|
|
|
|
|
+ userId = mg.BsonIdToSId((*res)["_id"])
|
|
}
|
|
}
|
|
} else if userId != "" {
|
|
} else if userId != "" {
|
|
//判断用户是否是vip
|
|
//判断用户是否是vip
|
|
@@ -703,7 +703,7 @@ func UserPermission(userId string, ssOpenid interface{}) (bool, bool, bool) {
|
|
)
|
|
)
|
|
if userId == "" && ssOpenid != nil {
|
|
if userId == "" && ssOpenid != nil {
|
|
res, _ = mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid, "s_unionid": bson.M{"$ne": ssOpenid}}, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1}`)
|
|
res, _ = mongodb.FindOneByField("user", bson.M{"s_m_openid": ssOpenid, "s_unionid": bson.M{"$ne": ssOpenid}}, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1}`)
|
|
- userId = BsonIdToSId((*res)["_id"])
|
|
|
|
|
|
+ userId = mg.BsonIdToSId((*res)["_id"])
|
|
} else {
|
|
} else {
|
|
//判断用户是否是vip
|
|
//判断用户是否是vip
|
|
res = jyutil.Compatible.Select(userId, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1}`)
|
|
res = jyutil.Compatible.Select(userId, `{"i_vip_status":1,"i_member_status":1,"s_m_phone":1,"s_phone":1}`)
|
|
@@ -911,7 +911,7 @@ func getwinnertel(company interface{}) string {
|
|
func GetUserId(openid string) string {
|
|
func GetUserId(openid string) string {
|
|
data, ok := public.MQFW.FindOne("user", map[string]interface{}{"s_m_openid": openid})
|
|
data, ok := public.MQFW.FindOne("user", map[string]interface{}{"s_m_openid": openid})
|
|
if data != nil && len(*data) > 0 && ok {
|
|
if data != nil && len(*data) > 0 && ok {
|
|
- userid := BsonIdToSId((*data)["_id"])
|
|
|
|
|
|
+ userid := mg.BsonIdToSId((*data)["_id"])
|
|
return userid
|
|
return userid
|
|
}
|
|
}
|
|
return ""
|
|
return ""
|
|
@@ -954,30 +954,48 @@ func ReplaceStringByRegex(str, rule, replace string) (string, error) {
|
|
// 未登录用户进行数据过滤 name 配置文件
|
|
// 未登录用户进行数据过滤 name 配置文件
|
|
func Filter(obj map[string]interface{}) map[string]interface{} {
|
|
func Filter(obj map[string]interface{}) map[string]interface{} {
|
|
detail := fmt.Sprint(obj["detail"])
|
|
detail := fmt.Sprint(obj["detail"])
|
|
- mosaicText := util.ObjToString(config.Sysconfig["detailMosaicTxt"])
|
|
|
|
- for k, _ := range obj {
|
|
|
|
- needMosaic, _ := config.Sysconfig["needMosaic"].(map[string]interface{})
|
|
|
|
- if ok, _ := needMosaic[k].(bool); ok {
|
|
|
|
- if util.ObjToString(obj[k]) != "" {
|
|
|
|
- detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), mosaicText)
|
|
|
|
- //敏感词过滤
|
|
|
|
- }
|
|
|
|
- if k == "winnerMap" {
|
|
|
|
- winnerMap, _ := obj[k].(map[string]interface{})
|
|
|
|
- mosaicMap := map[string]interface{}{}
|
|
|
|
- for i := 0; i < len(winnerMap); i++ {
|
|
|
|
- mosaicMap[mosaicText] = mosaicText
|
|
|
|
|
|
+ mosaicText := fmt.Sprintf(`<span style="color:#2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
|
|
|
|
+ detailText := fmt.Sprintf(`<span class="noLoginMosaic" style="color: #2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
|
|
|
|
+ //for k, _ := range obj {
|
|
|
|
+ // if ok, _ := detailNeedMosaic[k].(bool); ok {
|
|
|
|
+ // if util.ObjToString(obj[k]) != "" {
|
|
|
|
+ // detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), detailText)
|
|
|
|
+ // }
|
|
|
|
+ // //中标企业信息
|
|
|
|
+ // if k == "winnerMap" && obj[k] != nil {
|
|
|
|
+ // winnerNewMap := map[string]interface{}{}
|
|
|
|
+ // winnerMap := util.ObjToMap(obj[k])
|
|
|
|
+ // for _, wv := range *winnerMap {
|
|
|
|
+ // winnerNewMap[mosaicText] = wv
|
|
|
|
+ // }
|
|
|
|
+ // obj[k] = winnerNewMap
|
|
|
|
+ // } else {
|
|
|
|
+ // obj[k] = mosaicText
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
|
|
+ //
|
|
|
|
+ for dk, dv := range detailNeedMosaic {
|
|
|
|
+ if !dv.(bool) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ if util.ObjToString(obj[dk]) != "" {
|
|
|
|
+ detail = strings.ReplaceAll(detail, util.ObjToString(obj[dk]), detailText)
|
|
|
|
+ }
|
|
|
|
+ //中标企业信息
|
|
|
|
+ if dk == "winnerMap" {
|
|
|
|
+ winnerNewMap := map[string]interface{}{}
|
|
|
|
+ if obj[dk] != nil {
|
|
|
|
+ winnerMap := util.ObjToMap(obj[dk])
|
|
|
|
+ for _, wv := range *winnerMap {
|
|
|
|
+ winnerNewMap[mosaicText] = wv
|
|
}
|
|
}
|
|
- obj["winnerMap"] = mosaicMap
|
|
|
|
- } else {
|
|
|
|
- obj[k] = mosaicText
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ obj[dk] = winnerNewMap
|
|
|
|
+ } else {
|
|
|
|
+ obj[dk] = mosaicText
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //数字打码
|
|
|
|
- detail = RegDetail(detail)
|
|
|
|
- detail = fsw.Repl(detail)
|
|
|
|
obj["detail"] = detail
|
|
obj["detail"] = detail
|
|
return obj
|
|
return obj
|
|
}
|
|
}
|
|
@@ -985,31 +1003,53 @@ func Filter(obj map[string]interface{}) map[string]interface{} {
|
|
// 未登录用户进行数据过滤 name 配置文件
|
|
// 未登录用户进行数据过滤 name 配置文件
|
|
func SearchFilter(obj map[string]interface{}) map[string]interface{} {
|
|
func SearchFilter(obj map[string]interface{}) map[string]interface{} {
|
|
//detail := fmt.Sprint(obj["detail"])
|
|
//detail := fmt.Sprint(obj["detail"])
|
|
- mosaicText := util.ObjToString(config.Sysconfig["detailMosaicTxt"])
|
|
|
|
- for k, _ := range obj {
|
|
|
|
- needMosaic, _ := config.Sysconfig["searchMosaic"].(map[string]interface{})
|
|
|
|
- if ok, _ := needMosaic[k].(bool); ok {
|
|
|
|
- //if util.ObjToString(obj[k]) != "" {
|
|
|
|
- // detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), mosaicText)
|
|
|
|
- // //敏感词过滤
|
|
|
|
- //}
|
|
|
|
- if k == "winnerMap" {
|
|
|
|
- winnerMap, _ := obj[k].(map[string]interface{})
|
|
|
|
- mosaicMap := map[string]interface{}{}
|
|
|
|
- for i := 0; i < len(winnerMap); i++ {
|
|
|
|
- mosaicMap[mosaicText] = mosaicText
|
|
|
|
- }
|
|
|
|
- obj["winnerMap"] = mosaicMap
|
|
|
|
- } else {
|
|
|
|
- obj[k] = mosaicText
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ //mosaicText := fmt.Sprintf(`<span style="cursor:pointer;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
|
|
|
|
+ //for k, _ := range obj {
|
|
|
|
+ // needMosaic, _ := config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
|
|
|
|
+ // if ok, _ := needMosaic[k].(bool); ok {
|
|
|
|
+ // //if util.ObjToString(obj[k]) != "" {
|
|
|
|
+ // // detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), mosaicText)
|
|
|
|
+ // // //敏感词过滤
|
|
|
|
+ // //}
|
|
|
|
+ // if k == "winnerMap" {
|
|
|
|
+ // winnerMap, _ := obj[k].(map[string]interface{})
|
|
|
|
+ // mosaicMap := map[string]interface{}{}
|
|
|
|
+ // for i := 0; i < len(winnerMap); i++ {
|
|
|
|
+ // mosaicMap[mosaicText] = mosaicText
|
|
|
|
+ // }
|
|
|
|
+ // obj["winnerMap"] = mosaicMap
|
|
|
|
+ // } else {
|
|
|
|
+ // obj[k] = mosaicText
|
|
|
|
+ // }
|
|
|
|
+ //
|
|
|
|
+ // }
|
|
|
|
+ //}
|
|
//数字打码
|
|
//数字打码
|
|
//detail = RegDetail(detail)
|
|
//detail = RegDetail(detail)
|
|
//detail = fsw.Repl(detail)
|
|
//detail = fsw.Repl(detail)
|
|
//obj["detail"] = detail
|
|
//obj["detail"] = detail
|
|
|
|
+
|
|
|
|
+ if detailNeedMosaic == nil {
|
|
|
|
+ detailNeedMosaic, _ = config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
|
|
|
|
+ }
|
|
|
|
+ for dk, dv := range detailNeedMosaic {
|
|
|
|
+ if !dv.(bool) {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ //中标企业信息
|
|
|
|
+ if dk == "winnerMap" {
|
|
|
|
+ winnerNewMap := map[string]interface{}{}
|
|
|
|
+ if obj[dk] != nil {
|
|
|
|
+ winnerMap := util.ObjToMap(obj[dk])
|
|
|
|
+ for _, wv := range *winnerMap {
|
|
|
|
+ winnerNewMap[util.ObjToString(config.Sysconfig["detailMosaic"])] = wv
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ obj[dk] = winnerNewMap
|
|
|
|
+ } else {
|
|
|
|
+ obj[dk] = util.ObjToString(config.Sysconfig["detailMosaic"])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
return obj
|
|
return obj
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1023,6 +1063,9 @@ func (s *Short) NologinArticle(stype, id string) error {
|
|
if userId != "" { //已登录用户直接跳转至正常三级页
|
|
if userId != "" { //已登录用户直接跳转至正常三级页
|
|
return s.LoginCommon(userId, stype, id)
|
|
return s.LoginCommon(userId, stype, id)
|
|
}
|
|
}
|
|
|
|
+ if detailNeedMosaic == nil {
|
|
|
|
+ detailNeedMosaic, _ = config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
|
|
|
|
+ }
|
|
return s.NologinCommon(userId, stype, id, sids[0])
|
|
return s.NologinCommon(userId, stype, id, sids[0])
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1040,7 +1083,7 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
|
|
//s.T["keywords"] = s.GetString("kds")
|
|
//s.T["keywords"] = s.GetString("kds")
|
|
|
|
|
|
s.DisableHttpCache()
|
|
s.DisableHttpCache()
|
|
- po, bo, wo, obj := pcVRT(sid, industry, stype, false || false || false)
|
|
|
|
|
|
+ po, bo, wo, obj := pcVRT(sid, industry, stype, false)
|
|
if obj != nil && len(obj) > 0 {
|
|
if obj != nil && len(obj) > 0 {
|
|
if len(po) > 0 {
|
|
if len(po) > 0 {
|
|
s.T["projectOther"] = po
|
|
s.T["projectOther"] = po
|
|
@@ -1064,6 +1107,7 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
|
|
obj = Filter(obj)
|
|
obj = Filter(obj)
|
|
//obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
|
|
//obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
|
|
}
|
|
}
|
|
|
|
+ obj["agency"] = ""
|
|
if obj["publishtime"] != nil {
|
|
if obj["publishtime"] != nil {
|
|
obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["publishtime"]), 0).Format(date.Date_Short_Layout)
|
|
obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["publishtime"]), 0).Format(date.Date_Short_Layout)
|
|
}
|
|
}
|