package controller import ( util "app.yhyue.com/moapp/jybase/common" "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy" "encoding/json" "errors" "fmt" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gctx" "github.com/gogf/gf/v2/util/gconv" "jyseo/internal/service" "jyseo/utility" "strings" "time" ) // 0 采购单位 1-中标单位 func getRequestType(r *ghttp.Request) (int, string, error) { if strings.HasPrefix(r.RequestURI, "/dw/") { return 0, "dw", nil } else if strings.HasPrefix(r.RequestURI, "/qy/") { return 1, "qy", nil } else { return -1, "", fmt.Errorf("未知路由") } } func EnterpriseList(r *ghttp.Request) { pageNum := r.Get("pageNum", 1).Int() //页码 status, flag, err := getRequestType(r) if err != nil { service.HtmlRender.NotFound(r) return } res, err := service.JySeoEnterprises.GetEnterprisesList(r.Context(), status == 1, pageNum, 50, 5000) if err != nil { g.Log().Errorf(r.Context(), err.Error()) service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常")) return } service.HtmlRender.Render(r, "enterprise_list.html", g.Map{ "flag": flag, "list": res.List, //"tdk": service.JySeoTdk.GetAreaSTypeListTdk(r.Context(), sTypeNode.Code, areaNode.Name), "pagination": service.GetLetterPaging(pageNum, gconv.Int(res.Total), fmt.Sprintf("/%s/p%s", flag, "%d")), }, ) } func EnterpriseDetail(r *ghttp.Request) { seoId := r.Get("seoId").String() //页码 status, flag, err := getRequestType(r) if err != nil { service.HtmlRender.NotFound(r) return } // 若已经登录,重定向至已登录链接 if logined, sessVal := utility.GetJySessionVal(r); logined { LoginIntercept(r, seoId, status, sessVal) return } rData := g.Map{"flag": flag} switch status { case 0: //采购单位 baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, false) if baseInfo == nil || len(baseInfo) == 0 { service.HtmlRender.NotFound(r) return } rData["entDetail"] = baseInfo dynamicNews, _ := service.JySeoEnterprises.GetDynamicNews(r.Context(), gconv.String(baseInfo["name"]), false) rData["dynamicNews"] = dynamicNews rData["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["name"]), false) rData["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", false) //其他企业推荐 case 1: //中标企业 baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, true) if baseInfo == nil || len(baseInfo) == 0 { service.HtmlRender.NotFound(r) return } //芝麻曝光日志存储 var ( entId = gconv.String(baseInfo["entId"]) ) if labels := gconv.Maps(baseInfo["zhima_labels"]); len(labels) > 0 { var userFlag string hasLogin, sessMap := utility.GetJySessionVal(r) if hasLogin { userFlag = gconv.String(sessMap["userId"]) } if userFlag == "" { if cv := r.Cookie.Get("JYTrustedId"); !cv.IsEmpty() { userFlag = cv.String() } } go service.JySeoEnterprises.SaveZhiMaLog(map[string]interface{}{ "s_entId": entId, "s_name": baseInfo["name"], "credit_no": baseInfo["credit_no"], "s_userId": userFlag, "l_date": time.Now().Unix(), }) } rData["entDetail"] = baseInfo //企业基本信息 dynamicNews, _ := service.JySeoEnterprises.GetDynamicNews(r.Context(), gconv.String(baseInfo["entId"]), true) //企业动态 rData["dynamicNews"] = dynamicNews //企业中标动态 rData["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["entId"]), true) //关联采购单位 rData["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", true) //其他企业推荐 } service.HtmlRender.Render(r, "enterprise_detail.html", rData) } func AnalysisAudit(r *ghttp.Request) { _, sessVal := utility.GetJySessionVal(r) userId := gconv.String(sessVal["userId"]) phone := gconv.String(sessVal["phone"]) errMsg := func() error { phones := g.Cfg().MustGet(gctx.New(), "phone", "13027620557").String() if phone == "" || !strings.Contains(phones, phone) { g.Log().Printf(r.Context(), "配置手机号:%s,登录手机号:%s\n", phones, phone) return errors.New("手机号用户无权益") } byMap := make(map[string]interface{}) //接受参数 rb := r.GetBody() _ = json.Unmarshal(rb, &byMap) g.Log().Printf(r.Context(), "参数%v\n", byMap) return service.AnalysisHtmlSave(byMap) }() if errMsg != nil { g.Log().Printf(r.Context(), "%s AnalysisAudit Error:%s\n", userId, errMsg.Error()) } r.Response.Write(utility.NewResult(nil, errMsg)) } func LoginIntercept(r *ghttp.Request, seoId string, status int, sess map[string]interface{}) { var redirectUrl, queryResult string baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, status == 1) if baseInfo == nil || len(baseInfo) == 0 { service.HtmlRender.NotFound(r) return } switch status { case 0: queryResult = gconv.String(baseInfo["name"]) case 1: queryResult = gconv.String(baseInfo["entId"]) } if queryResult == "" { service.HtmlRender.NotFound(r) return } if status == 1 { queryResult = utility.EncodeId(queryResult) } if utility.IsMobile(r.Request.UserAgent()) { if status == 0 { redirectUrl = fmt.Sprintf("/jyapp/big/page/free_buyer_loading?entName=%s", queryResult) } else { redirectUrl = fmt.Sprintf("/jyapp/big/page/ent_portrait?eId=%s", queryResult) } r.Response.RedirectTo(redirectUrl, 301) } else { userPower := jy.GetBigVipUserBaseMsgBySessVal(sess, *utility.Middleground) entId := util.IntAll(sess["entId"]) var ( isEntnicheNew bool isEntService = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务 isEntniche = userPower.EntnicheStatus > 0 ) if entId > 0 && userPower.EntInfo[entId] != nil { isEntniche = userPower.EntInfo[entId].Status == 1 && userPower.EntInfo[entId].IsPower isEntnicheNew = userPower.EntInfo[entId].IsNew && isEntniche if isEntService = userPower.EntInfo[entId].IsService && userPower.EntInfo[entId].IsPower; isEntService { isEntnicheNew = false isEntniche = false } } //登录后 推荐和相关企业数据 if status == 1 { baseInfo["eid"] = queryResult baseInfo["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["entId"]), true) //关联 baseInfo["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", true) //推荐 } else { baseInfo["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["name"]), false) //关联 baseInfo["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", false) //推荐 } baseInfo["isEntnicheNew"] = isEntnicheNew //pc端登录前后url一致 if status == 0 { service.HtmlRender.Render(r, "enterprise_detail_login_buyer.html", baseInfo) } else { service.HtmlRender.Render(r, "enterprise_detail_login_winner.html", baseInfo) } } }