|
@@ -11,21 +11,23 @@ import (
|
|
"github.com/go-xweb/xweb"
|
|
"github.com/go-xweb/xweb"
|
|
)
|
|
)
|
|
|
|
|
|
-//大会员画像接口
|
|
|
|
|
|
+//EntPortrait 大会员画像接口
|
|
type EntPortrait struct {
|
|
type EntPortrait struct {
|
|
*xweb.Action
|
|
*xweb.Action
|
|
//中标企业画像
|
|
//中标企业画像
|
|
- entDetail xweb.Mapper `xweb:"/portrait/ent/detail"` //企业基本信息
|
|
|
|
- winnerNewMsg xweb.Mapper `xweb:"/portrait/winner/getNewMsg"` //最新项目动态(需购买项目进度监控)
|
|
|
|
- winnerContacts xweb.Mapper `xweb:"/portrait/winner/contacts"` //历史项目联系方式
|
|
|
|
- winnerPortrait xweb.Mapper `xweb:"/portrait/winner/getData"` //最新项目动态
|
|
|
|
|
|
+ entDetail xweb.Mapper `xweb:"/portrait/ent/detail"` //企业基本信息
|
|
|
|
+ winnerNewMsg xweb.Mapper `xweb:"/portrait/winner/getNewMsg"` //最新项目动态(需购买项目进度监控)
|
|
|
|
+ winnerContacts xweb.Mapper `xweb:"/portrait/winner/contacts"` //历史项目联系方式
|
|
|
|
+ winnerPortrait xweb.Mapper `xweb:"/portrait/winner/getData"` //最新项目动态
|
|
|
|
+ winnerMiniPortrait xweb.Mapper `xweb:"/portrait/winner/miniData"` //三级页展示中标企业基础画像信息
|
|
//采购单位画像
|
|
//采购单位画像
|
|
- buyerNewMsg xweb.Mapper `xweb:"/portrait/buyer/getNewMsg"` //最新项目动态
|
|
|
|
- buyerContacts xweb.Mapper `xweb:"/portrait/buyer/contacts"` //采购项目联系方式
|
|
|
|
- buyerPortrait xweb.Mapper `xweb:"/portrait/buyer/getData"` //最新项目动态
|
|
|
|
|
|
+ buyerNewMsg xweb.Mapper `xweb:"/portrait/buyer/getNewMsg"` //最新项目动态
|
|
|
|
+ buyerContacts xweb.Mapper `xweb:"/portrait/buyer/contacts"` //采购项目联系方式
|
|
|
|
+ buyerPortrait xweb.Mapper `xweb:"/portrait/buyer/getData"` //最新项目动态
|
|
|
|
+ buyerMiniPortrait xweb.Mapper `xweb:"/portrait/buyer/miniData"` //三级页展示采购单位基础画像信息
|
|
}
|
|
}
|
|
|
|
|
|
-//企业基本信息
|
|
|
|
|
|
+//EntDetail 企业基本信息
|
|
func (this *EntPortrait) EntDetail() {
|
|
func (this *EntPortrait) EntDetail() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -46,6 +48,7 @@ func (this *EntPortrait) EntDetail() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+//WinnerContacts 中标企业历史联系人
|
|
func (this *EntPortrait) WinnerContacts() {
|
|
func (this *EntPortrait) WinnerContacts() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -53,7 +56,7 @@ func (this *EntPortrait) WinnerContacts() {
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- if false && !hasPower {
|
|
|
|
|
|
+ if !hasPower {
|
|
return nil, fmt.Errorf("非法请求")
|
|
return nil, fmt.Errorf("非法请求")
|
|
}
|
|
}
|
|
entId := util.DecodeId(this.GetString("entId"))
|
|
entId := util.DecodeId(this.GetString("entId"))
|
|
@@ -71,7 +74,7 @@ func (this *EntPortrait) WinnerContacts() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
-//企业画像-最新项目动态
|
|
|
|
|
|
+//WinnerNewMsg 企业画像-最新项目动态
|
|
func (this *EntPortrait) WinnerNewMsg() {
|
|
func (this *EntPortrait) WinnerNewMsg() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -123,7 +126,7 @@ func (this *EntPortrait) WinnerNewMsg() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
-//企业画像-画像数据查询
|
|
|
|
|
|
+//WinnerPortrait 企业画像-画像数据查询
|
|
func (this *EntPortrait) WinnerPortrait() {
|
|
func (this *EntPortrait) WinnerPortrait() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -131,14 +134,43 @@ func (this *EntPortrait) WinnerPortrait() {
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- if !hasPower {
|
|
|
|
- return nil, fmt.Errorf("非法请求")
|
|
|
|
- }
|
|
|
|
entId := this.GetString("entId")
|
|
entId := this.GetString("entId")
|
|
- rData, err := cepm.WinnerPortraitData(util.DecodeId(entId))
|
|
|
|
|
|
+ rData, err := cepm.WinnerPortraitData(util.DecodeId(entId), hasPower)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ return rData, nil
|
|
|
|
+ }()
|
|
|
|
+ if errMsg != nil {
|
|
|
|
+ log.Printf("%s WinnerPortrait获取企业画像标信息出错:%s\n", userId, errMsg.Error())
|
|
|
|
+ }
|
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//WinnerMiniPortrait 三级页中标单位引流数据展示(免费)
|
|
|
|
+func (this *EntPortrait) WinnerMiniPortrait() {
|
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
|
+ cepm, _, err := entity.CreatePortraitManager(userId, "entPortrait")
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
|
|
+ entId := util.DecodeId(this.GetString("entId"))
|
|
|
|
+ rData, err := cepm.WinnerMiniPortraitData(entId) //项目个数,项目金额
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ //公司状态
|
|
|
|
+ if entInfo, err := cepm.GetEntInfo(entId); err == nil {
|
|
|
|
+ rData["status"] = entInfo["status"]
|
|
|
|
+ rData["type"] = entInfo["type"]
|
|
|
|
+ }
|
|
|
|
+ //项目动态数量
|
|
|
|
+ rData["biddingCount"] = cepm.GetWinnerNewCount(entId)
|
|
|
|
+ //历史联系人
|
|
|
|
+ if contactList, err := cepm.GetWinnerContactsMsg(entId); err == nil {
|
|
|
|
+ rData["contactList"], rData["contactCount"] = formatContact(contactList)
|
|
|
|
+ }
|
|
return rData, nil
|
|
return rData, nil
|
|
}()
|
|
}()
|
|
if errMsg != nil {
|
|
if errMsg != nil {
|
|
@@ -147,7 +179,7 @@ func (this *EntPortrait) WinnerPortrait() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
-//采购单位画像-最新招标动态
|
|
|
|
|
|
+//BuyerNewMsg 采购单位画像-最新招标动态(免费用户仅可查看3条记录,付费50条)
|
|
func (this *EntPortrait) BuyerNewMsg() {
|
|
func (this *EntPortrait) BuyerNewMsg() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -178,7 +210,7 @@ func (this *EntPortrait) BuyerNewMsg() {
|
|
limit = entity.PortraitNewMegsLimit - start
|
|
limit = entity.PortraitNewMegsLimit - start
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+ //免费用户仅可查看三条记录
|
|
rData, err := cepm.GetBuyerNewMsg(buyer, start, limit, hasPower)
|
|
rData, err := cepm.GetBuyerNewMsg(buyer, start, limit, hasPower)
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
@@ -197,7 +229,7 @@ func (this *EntPortrait) BuyerNewMsg() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
-//采购单位联系人
|
|
|
|
|
|
+//BuyerContacts 采购单位联系人(必须开通会员)
|
|
func (this *EntPortrait) BuyerContacts() {
|
|
func (this *EntPortrait) BuyerContacts() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -205,7 +237,7 @@ func (this *EntPortrait) BuyerContacts() {
|
|
if err != nil {
|
|
if err != nil {
|
|
return nil, err
|
|
return nil, err
|
|
}
|
|
}
|
|
- if false && !hasPower {
|
|
|
|
|
|
+ if !hasPower {
|
|
return nil, fmt.Errorf("非法请求")
|
|
return nil, fmt.Errorf("非法请求")
|
|
}
|
|
}
|
|
buyerName := this.GetString("buyer")
|
|
buyerName := this.GetString("buyer")
|
|
@@ -223,7 +255,7 @@ func (this *EntPortrait) BuyerContacts() {
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
|
|
-//采购单位画像-数据
|
|
|
|
|
|
+//BuyerPortrait 采购单位画像-数据(免费用户可查看基本信息、项目统计、合作企业资本、年龄及地区分布)
|
|
func (this *EntPortrait) BuyerPortrait() {
|
|
func (this *EntPortrait) BuyerPortrait() {
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
userId := qutil.ObjToString(this.GetSession("userId"))
|
|
rData, errMsg := func() (interface{}, error) {
|
|
rData, errMsg := func() (interface{}, error) {
|
|
@@ -240,7 +272,73 @@ func (this *EntPortrait) BuyerPortrait() {
|
|
return rData, nil
|
|
return rData, nil
|
|
}()
|
|
}()
|
|
if errMsg != nil {
|
|
if errMsg != nil {
|
|
- log.Printf("%s WinnerPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
|
|
|
|
|
|
+ log.Printf("%s BuyerPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
|
|
|
|
+ }
|
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//BuyerMiniPortrait 三级页采购单位引流数据展示(免费)
|
|
|
|
+func (this *EntPortrait) BuyerMiniPortrait() {
|
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
|
+ cepm, _, err := entity.CreatePortraitManager(userId, "buyerPortrait")
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ entName := this.GetString("buyer")
|
|
|
|
+ //所在地(省、市)、采购单位类型、采购项目数量、采购规模
|
|
|
|
+ rData, err := cepm.BuyerMiniPortraitData(entName)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ //招标动态数量
|
|
|
|
+ rData["biddingCount"] = cepm.GetBuyerNewCount(entName)
|
|
|
|
+ //采购联系人数量及历史联系人方式,成交时间(加密展示2条)
|
|
|
|
+ if contactList, err := cepm.GetBuyerContactsMsg(entName); err == nil {
|
|
|
|
+ rData["contactList"], rData["contactCount"] = formatContact(contactList)
|
|
|
|
+ }
|
|
|
|
+ return rData, nil
|
|
|
|
+ }()
|
|
|
|
+ if errMsg != nil {
|
|
|
|
+ log.Printf("%s BuyerMiniPortrait获取采购单位画像标信息出错:%s\n", userId, errMsg.Error())
|
|
}
|
|
}
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
this.ServeJson(NewResult(rData, errMsg))
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+//formatContact 格式化混淆联系人电话
|
|
|
|
+func formatContact(contactList []map[string]interface{}) (confusing []map[string]interface{}, total int) {
|
|
|
|
+ total = len(contactList)
|
|
|
|
+ deConfusingMap := make(map[string]bool) //去重
|
|
|
|
+ for _, contactMap := range contactList {
|
|
|
|
+ var thePhone string
|
|
|
|
+ rowData, _ := contactMap["contacts"].(map[string]string)
|
|
|
|
+ for phone := range rowData {
|
|
|
|
+ if !deConfusingMap[phone] && phone != "" {
|
|
|
|
+ thePhone = phone
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if len(thePhone) < 7 {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var confusingPhone string
|
|
|
|
+ if len([]rune(thePhone)) == 11 {
|
|
|
|
+ confusingPhone = thePhone[:3] + "****" + thePhone[8:]
|
|
|
|
+ } else if len([]rune(thePhone)) == 7 {
|
|
|
|
+ confusingPhone = thePhone[:2] + "***" + thePhone[5:]
|
|
|
|
+ } else {
|
|
|
|
+ confusingPhone = thePhone[:5] + "***" + thePhone[8:]
|
|
|
|
+ }
|
|
|
|
+ deConfusingMap[confusingPhone] = true
|
|
|
|
+
|
|
|
|
+ confusing = append(confusing, map[string]interface{}{
|
|
|
|
+ "contact": confusingPhone,
|
|
|
|
+ "date": contactMap["date"],
|
|
|
|
+ })
|
|
|
|
+ //仅返回两条
|
|
|
|
+ if len(confusing) == 2 {
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|