enterprise.go 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. package controller
  2. import (
  3. util "app.yhyue.com/moapp/jybase/common"
  4. "app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
  5. "encoding/json"
  6. "errors"
  7. "fmt"
  8. "github.com/gogf/gf/v2/frame/g"
  9. "github.com/gogf/gf/v2/net/ghttp"
  10. "github.com/gogf/gf/v2/os/gctx"
  11. "github.com/gogf/gf/v2/util/gconv"
  12. "jyseo/internal/service"
  13. "jyseo/utility"
  14. "strings"
  15. "time"
  16. )
  17. // 0 采购单位 1-中标单位
  18. func getRequestType(r *ghttp.Request) (int, string, error) {
  19. if strings.HasPrefix(r.RequestURI, "/dw/") {
  20. return 0, "dw", nil
  21. } else if strings.HasPrefix(r.RequestURI, "/qy/") {
  22. return 1, "qy", nil
  23. } else {
  24. return -1, "", fmt.Errorf("未知路由")
  25. }
  26. }
  27. func EnterpriseList(r *ghttp.Request) {
  28. pageNum := r.Get("pageNum", 1).Int() //页码
  29. status, flag, err := getRequestType(r)
  30. if err != nil {
  31. service.HtmlRender.NotFound(r)
  32. return
  33. }
  34. res, err := service.JySeoEnterprises.GetEnterprisesList(r.Context(), status == 1, pageNum, 50, 5000)
  35. if err != nil {
  36. g.Log().Errorf(r.Context(), err.Error())
  37. service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
  38. return
  39. }
  40. service.HtmlRender.Render(r, "enterprise_list.html",
  41. g.Map{
  42. "flag": flag,
  43. "list": res.List,
  44. //"tdk": service.JySeoTdk.GetAreaSTypeListTdk(r.Context(), sTypeNode.Code, areaNode.Name),
  45. "pagination": service.GetLetterPaging(pageNum, gconv.Int(res.Total), fmt.Sprintf("/%s/p%s", flag, "%d")),
  46. },
  47. )
  48. }
  49. func EnterpriseDetail(r *ghttp.Request) {
  50. seoId := r.Get("seoId").String() //页码
  51. status, flag, err := getRequestType(r)
  52. if err != nil {
  53. service.HtmlRender.NotFound(r)
  54. return
  55. }
  56. // 若已经登录,重定向至已登录链接
  57. if logined, sessVal := utility.GetJySessionVal(r); logined {
  58. LoginIntercept(r, seoId, status, sessVal)
  59. return
  60. }
  61. rData := g.Map{"flag": flag}
  62. switch status {
  63. case 0: //采购单位
  64. baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, false)
  65. if baseInfo == nil || len(baseInfo) == 0 {
  66. service.HtmlRender.NotFound(r)
  67. return
  68. }
  69. rData["entDetail"] = baseInfo
  70. dynamicNews, _ := service.JySeoEnterprises.GetDynamicNews(r.Context(), gconv.String(baseInfo["name"]), false)
  71. rData["dynamicNews"] = dynamicNews
  72. rData["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["name"]), false)
  73. rData["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", false) //其他企业推荐
  74. case 1: //中标企业
  75. baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, true)
  76. if baseInfo == nil || len(baseInfo) == 0 {
  77. service.HtmlRender.NotFound(r)
  78. return
  79. }
  80. //芝麻曝光日志存储
  81. var (
  82. entId = gconv.String(baseInfo["entId"])
  83. )
  84. if labels := gconv.Maps(baseInfo["zhima_labels"]); len(labels) > 0 {
  85. var userFlag string
  86. hasLogin, sessMap := utility.GetJySessionVal(r)
  87. if hasLogin {
  88. userFlag = gconv.String(sessMap["userId"])
  89. }
  90. if userFlag == "" {
  91. if cv := r.Cookie.Get("JYTrustedId"); !cv.IsEmpty() {
  92. userFlag = cv.String()
  93. }
  94. }
  95. go service.JySeoEnterprises.SaveZhiMaLog(map[string]interface{}{
  96. "s_entId": entId,
  97. "s_name": baseInfo["name"],
  98. "credit_no": baseInfo["credit_no"],
  99. "s_userId": userFlag,
  100. "l_date": time.Now().Unix(),
  101. })
  102. }
  103. rData["entDetail"] = baseInfo //企业基本信息
  104. dynamicNews, _ := service.JySeoEnterprises.GetDynamicNews(r.Context(), gconv.String(baseInfo["entId"]), true) //企业动态
  105. rData["dynamicNews"] = dynamicNews //企业中标动态
  106. rData["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["entId"]), true) //关联采购单位
  107. rData["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", true) //其他企业推荐
  108. }
  109. service.HtmlRender.Render(r, "enterprise_detail.html", rData)
  110. }
  111. func AnalysisAudit(r *ghttp.Request) {
  112. _, sessVal := utility.GetJySessionVal(r)
  113. userId := gconv.String(sessVal["userId"])
  114. phone := gconv.String(sessVal["phone"])
  115. errMsg := func() error {
  116. phones := g.Cfg().MustGet(gctx.New(), "phone", "13027620557").String()
  117. if phone == "" || !strings.Contains(phones, phone) {
  118. g.Log().Printf(r.Context(), "配置手机号:%s,登录手机号:%s\n", phones, phone)
  119. return errors.New("手机号用户无权益")
  120. }
  121. byMap := make(map[string]interface{})
  122. //接受参数
  123. rb := r.GetBody()
  124. _ = json.Unmarshal(rb, &byMap)
  125. g.Log().Printf(r.Context(), "参数%v\n", byMap)
  126. return service.AnalysisHtmlSave(byMap)
  127. }()
  128. if errMsg != nil {
  129. g.Log().Printf(r.Context(), "%s AnalysisAudit Error:%s\n", userId, errMsg.Error())
  130. }
  131. r.Response.Write(utility.NewResult(nil, errMsg))
  132. }
  133. func LoginIntercept(r *ghttp.Request, seoId string, status int, sess map[string]interface{}) {
  134. var redirectUrl, queryResult string
  135. baseInfo := service.JySeoEnterprises.GetEntDetailMsg(r.Context(), seoId, status == 1)
  136. if baseInfo == nil || len(baseInfo) == 0 {
  137. service.HtmlRender.NotFound(r)
  138. return
  139. }
  140. switch status {
  141. case 0:
  142. queryResult = gconv.String(baseInfo["name"])
  143. case 1:
  144. queryResult = gconv.String(baseInfo["entId"])
  145. }
  146. if queryResult == "" {
  147. service.HtmlRender.NotFound(r)
  148. return
  149. }
  150. if status == 1 {
  151. queryResult = utility.EncodeId(queryResult)
  152. }
  153. if utility.IsMobile(r.Request.UserAgent()) {
  154. if status == 0 {
  155. redirectUrl = fmt.Sprintf("/jyapp/big/page/free_buyer_loading?entName=%s", queryResult)
  156. } else {
  157. redirectUrl = fmt.Sprintf("/jyapp/big/page/ent_portrait?eId=%s", queryResult)
  158. }
  159. r.Response.RedirectTo(redirectUrl, 301)
  160. } else {
  161. userPower := jy.GetBigVipUserBaseMsgBySessVal(sess, *utility.Middleground)
  162. entId := util.IntAll(sess["entId"])
  163. var (
  164. isEntnicheNew bool
  165. isEntService = userPower.Data.Ent.PowerSource > 0 && userPower.Data.Entniche.IsEntPower > 0 //商机管理服务
  166. isEntniche = userPower.EntnicheStatus > 0
  167. )
  168. if entId > 0 && userPower.EntInfo[entId] != nil {
  169. isEntniche = userPower.EntInfo[entId].Status == 1 && userPower.EntInfo[entId].IsPower
  170. isEntnicheNew = userPower.EntInfo[entId].IsNew && isEntniche
  171. if isEntService = userPower.EntInfo[entId].IsService && userPower.EntInfo[entId].IsPower; isEntService {
  172. isEntnicheNew = false
  173. isEntniche = false
  174. }
  175. }
  176. //登录后 推荐和相关企业数据
  177. if status == 1 {
  178. baseInfo["eid"] = queryResult
  179. baseInfo["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["entId"]), true) //关联
  180. baseInfo["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", true) //推荐
  181. } else {
  182. baseInfo["otherEnt"] = service.JySeoEnterprises.RelevanceData(r.Context(), gconv.String(baseInfo["name"]), false) //关联
  183. baseInfo["recommendedEnt"] = service.JySeoEnterprises.RecommendedData(r.Context(), gconv.String(baseInfo["area"]), "", false) //推荐
  184. }
  185. baseInfo["isEntnicheNew"] = isEntnicheNew
  186. //pc端登录前后url一致
  187. if status == 0 {
  188. service.HtmlRender.Render(r, "enterprise_detail_login_buyer.html", baseInfo)
  189. } else {
  190. service.HtmlRender.Render(r, "enterprise_detail_login_winner.html", baseInfo)
  191. }
  192. }
  193. }