|
@@ -0,0 +1,237 @@
|
|
|
+package portrait
|
|
|
+
|
|
|
+import (
|
|
|
+ . "api"
|
|
|
+ "db"
|
|
|
+ "entity"
|
|
|
+ "fmt"
|
|
|
+ "github.com/go-xweb/xweb"
|
|
|
+ "log"
|
|
|
+ qutil "qfw/util"
|
|
|
+ "qfw/util/elastic"
|
|
|
+ "qfw/util/jy"
|
|
|
+ "strings"
|
|
|
+ "util"
|
|
|
+)
|
|
|
+
|
|
|
+//超级订阅升级版画像接口
|
|
|
+type SubVipPortrait struct {
|
|
|
+ *xweb.Action
|
|
|
+ subVipEntDetail xweb.Mapper `xweb:"/portrait/subVipPortrait/entDetail"` //企业基本信息
|
|
|
+ subVipPortrait xweb.Mapper `xweb:"/portrait/subVipPortrait/winner"` //超级订阅升级版查看画像
|
|
|
+ subVipWinnerNewMsg xweb.Mapper `xweb:"/portrait/subVipPortrait/winnerNewMsg"` //超级订阅升级版查看最新项目动态
|
|
|
+ portraitUsage xweb.Mapper `xweb:"/portrait/subVipPortrait/usage"` //超级订阅升级版画像浏览详情
|
|
|
+ portraitRecord xweb.Mapper `xweb:"/portrait/subVipPortrait/record"` //超级订阅升级版画像浏览记录
|
|
|
+}
|
|
|
+
|
|
|
+//超级订阅升级版查询基本信息
|
|
|
+func (this *SubVipPortrait) SubVipEntDetail() {
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
+ cepm, _, err := entity.CreateSubVipPortraitManager(userId, "entDetail")
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ entId := this.GetString("entId")
|
|
|
+ entInfo, err := cepm.GetEntInfo(util.DecodeId(entId))
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return entInfo, nil
|
|
|
+ }()
|
|
|
+ if errMsg != nil {
|
|
|
+ log.Printf("%s 企业画像-查询企业基本信息:%s\n", userId, errMsg.Error())
|
|
|
+ }
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
+}
|
|
|
+
|
|
|
+//超级订阅升级版查看最新中标动态
|
|
|
+func (this *SubVipPortrait) SubVipWinnerNewMsg() {
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
+ cepm, bigMsg, err := entity.CreateSubVipPortraitManager(userId, "entNewMsg")
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ entId := util.DecodeId(this.GetString("entId"))
|
|
|
+ if entId == "" {
|
|
|
+ return nil, fmt.Errorf("参数异常")
|
|
|
+ }
|
|
|
+ //校验超级订阅画像浏览次数
|
|
|
+ if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ count, _ := this.GetInt("count")
|
|
|
+ pageNum, _ := this.GetInteger("pageNum")
|
|
|
+ limit, _ := this.GetInteger("pageSize")
|
|
|
+ if limit == 0 {
|
|
|
+ limit = 3
|
|
|
+ }
|
|
|
+ var start = 0
|
|
|
+ if pageNum > 0 {
|
|
|
+ start = (pageNum - 1) * limit
|
|
|
+ }
|
|
|
+
|
|
|
+ if pageSign := this.GetString("pageSign"); pageSign != "" { //more:4-23条;max:24-50条(移动端)
|
|
|
+ if pageSign == "more" {
|
|
|
+ start = 3
|
|
|
+ limit = 20
|
|
|
+ } else if pageSign == "max" {
|
|
|
+ start = 20 + 3
|
|
|
+ limit = entity.PortraitNewMegsLimit - start
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rData, err := cepm.GetWinnerNewMsg(entId, start, limit)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if count == 0 {
|
|
|
+ count = cepm.GetWinnerNewCount(entId)
|
|
|
+ }
|
|
|
+ return map[string]interface{}{
|
|
|
+ "list": rData,
|
|
|
+ "count": count,
|
|
|
+ }, nil
|
|
|
+ }()
|
|
|
+ if errMsg != nil {
|
|
|
+ log.Printf("%s SubVipPortrait-SubVipWinnerNewMsg 获取企业最新中标信息出错:%s\n", userId, errMsg.Error())
|
|
|
+ }
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
+}
|
|
|
+
|
|
|
+//超级订阅升级版查看企业画像
|
|
|
+func (this *SubVipPortrait) SubVipPortrait() {
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
+ cepm, bigMsg, err := entity.CreateSubVipPortraitManager(userId, "entPortrait")
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ entId := util.DecodeId(this.GetString("entId"))
|
|
|
+ if entId == "" {
|
|
|
+ return nil, fmt.Errorf("参数异常")
|
|
|
+ }
|
|
|
+ //校验超级订阅画像浏览次数
|
|
|
+ if err = bigMsg.SubVipPortraitTimesCheck(db.Mysql, entId); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ rData, err := cepm.WinnerPortraitData(entId)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ return rData, nil
|
|
|
+ }()
|
|
|
+ if errMsg != nil {
|
|
|
+ log.Printf("%s SubVipPortrait 获取企业画像标信息出错:%s\n", userId, errMsg.Error())
|
|
|
+ }
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
+}
|
|
|
+
|
|
|
+//超级订阅升级版画像浏览量查询
|
|
|
+func (this *SubVipPortrait) PortraitUsage() {
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
+ bigMsg := jy.GetBigVipUserBaseMsg(userId, db.Mysql, db.Mgo)
|
|
|
+ if bigMsg.VipStatus <= 0 && bigMsg.Vip_BuySet.Upgrade != 1 {
|
|
|
+ return nil, fmt.Errorf("非法请求")
|
|
|
+ }
|
|
|
+ total, usage := bigMsg.SubVipPortraitUsage()
|
|
|
+ return map[string]interface{}{
|
|
|
+ "total": total,
|
|
|
+ "usage": usage,
|
|
|
+ }, nil
|
|
|
+ }()
|
|
|
+ if errMsg != nil {
|
|
|
+ log.Printf("%s SubVipPortrait-portraitUsage 企业画像浏览量查询出错:%s\n", userId, errMsg.Error())
|
|
|
+ }
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
+}
|
|
|
+
|
|
|
+//超级订阅升级版画像查看记录
|
|
|
+func (this *SubVipPortrait) PortraitRecord() {
|
|
|
+ userId := qutil.ObjToString(this.GetSession("userId"))
|
|
|
+ rData, errMsg := func() (interface{}, error) {
|
|
|
+ year, _ := this.GetInteger("year")
|
|
|
+ month, _ := this.GetInteger("month")
|
|
|
+ pageNum, _ := this.GetInteger("pageNum")
|
|
|
+ pageSize, _ := this.GetInteger("pageSize")
|
|
|
+ if year == 0 || month == 0 || pageSize <= 0 || pageSize > 100 {
|
|
|
+ return nil, fmt.Errorf("请求参数异常")
|
|
|
+ }
|
|
|
+ bigMsg := jy.GetBigVipUserBaseMsg(userId, db.Mysql, db.Mgo)
|
|
|
+ if bigMsg.VipStatus <= 0 && bigMsg.Vip_BuySet.Upgrade != 1 {
|
|
|
+ return nil, fmt.Errorf("非法请求")
|
|
|
+ }
|
|
|
+ //获取画像企业id
|
|
|
+ recordList, total := bigMsg.GetPortraitRecord(db.Mysql, year, month, pageNum, pageSize, pageNum == 0)
|
|
|
+ //followCheckMap, entDetailMap := func() (follcheck map[string]bool, entMsg map[string]map[string]interface{}) {
|
|
|
+ // var swg sync.WaitGroup
|
|
|
+ // swg.Add(2)
|
|
|
+ // //补全关注状态
|
|
|
+ // go func() {
|
|
|
+ // follcheck = getEntListFollow(userId, recordList)
|
|
|
+ // swg.Done()
|
|
|
+ // }()
|
|
|
+ // //补全企业信息
|
|
|
+ // go func() {
|
|
|
+ // entMsg = gitEntListMsg(recordList)
|
|
|
+ // swg.Done()
|
|
|
+ // }()
|
|
|
+ // swg.Wait()
|
|
|
+ // return
|
|
|
+ //}()
|
|
|
+ entDetailMap := gitEntListMsg(recordList)
|
|
|
+ var infoList []map[string]interface{}
|
|
|
+ for _, eid := range recordList {
|
|
|
+ if entDetail, ok := entDetailMap[eid]; ok && entDetail != nil {
|
|
|
+ entDetail["id"] = util.EncodeId(eid)
|
|
|
+ //entDetail["followed"] = followCheckMap[eid]
|
|
|
+ infoList = append(infoList, entDetail)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ returnMap := map[string]interface{}{
|
|
|
+ "list": infoList,
|
|
|
+ }
|
|
|
+ if total != -1 {
|
|
|
+ returnMap["total"] = total
|
|
|
+ }
|
|
|
+ return returnMap, nil
|
|
|
+ }()
|
|
|
+ if errMsg != nil {
|
|
|
+ log.Printf("%s SubVipPortrait-PortraitRecord 企业画像浏览记录查询出错:%s\n", userId, errMsg.Error())
|
|
|
+ }
|
|
|
+ this.ServeJson(NewResult(rData, errMsg))
|
|
|
+}
|
|
|
+
|
|
|
+func getEntListFollow(userId string, ids []string) (followMap map[string]bool) {
|
|
|
+ followMap = make(map[string]bool)
|
|
|
+ followed, _ := db.Mgo.Find("follow_entinfo_bigvip", map[string]interface{}{
|
|
|
+ "s_userid": userId,
|
|
|
+ "s_id": map[string]interface{}{"$in": ids},
|
|
|
+ }, nil, `{"s_id":1}`, false, -1, -1)
|
|
|
+ if followed == nil || len(*followed) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, row := range *followed {
|
|
|
+ if entId, _ := row["id"].(string); entId != "" {
|
|
|
+ followMap[entId] = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+func gitEntListMsg(ids []string) (detail map[string]map[string]interface{}) {
|
|
|
+ detail = make(map[string]map[string]interface{})
|
|
|
+ ids_str := `"` + strings.Join(ids, `","`) + `"`
|
|
|
+ rData := elastic.Get("qyxy", "qyxy", fmt.Sprintf(`{"query":{"bool":{"must":[{"terms":{"id":[%s]}}]}},"_source":["_id","company_name","company_status","legal_person","capital","company_address","company_shortname","company_phone","establish_date"],"size":%d}`, ids_str, len(ids)))
|
|
|
+ if rData == nil || len(*rData) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, data := range *rData {
|
|
|
+ if id, ok := data["_id"].(string); ok && id != "" {
|
|
|
+ detail[id] = data
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|