scenario.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package model
  2. import (
  3. "app.yhyue.com/moapp/jybase/encrypt"
  4. "net/url"
  5. "regexp"
  6. "strings"
  7. )
  8. const (
  9. IndexPage = iota + 1 //b=0
  10. DetailPage
  11. WorkDesk //c=1 相当于c=iota
  12. )
  13. var (
  14. regExpDetail = regexp.MustCompile("^/article/(\\w+)/(.*).html")
  15. scenarioName = map[int]string{
  16. IndexPage: "index", //网站首页
  17. DetailPage: "detail", //三级页
  18. WorkDesk: "workDesk", //工作桌面
  19. }
  20. )
  21. // GetScenario 获取场景
  22. func GetScenario(refer string) int {
  23. u, err := url.Parse(refer)
  24. if err == nil {
  25. if strings.HasPrefix(u.Path, "/page_workDesktop") {
  26. if strings.HasPrefix(u.Path, "/page_workDesktop/work-bench/page") {
  27. uu, err := url.Parse(u.Query().Get("link"))
  28. if err == nil && regExpDetail.MatchString(uu.Path) {
  29. return DetailPage
  30. }
  31. }
  32. return WorkDesk
  33. }
  34. }
  35. return IndexPage
  36. }
  37. // GetScenarioAndInfoId 获取场景和信息id
  38. func GetScenarioAndInfoId(refer string) (scenario int, sid string) {
  39. u, err := url.Parse(refer)
  40. if err == nil {
  41. if strings.HasPrefix(u.Path, "/page_workDesktop") {
  42. if strings.HasPrefix(u.Path, "/page_workDesktop/work-bench/page") {
  43. uu, err := url.Parse(u.Query().Get("link"))
  44. if err == nil && uu.Path != "" {
  45. if arr := regExpDetail.FindStringSubmatch(uu.Path); len(arr) == 3 {
  46. if idArr := encrypt.CommonDecodeArticle(arr[1], arr[2]); len(idArr) > 0 {
  47. sid = idArr[0]
  48. }
  49. return DetailPage, sid
  50. }
  51. }
  52. }
  53. return WorkDesk, ""
  54. }
  55. }
  56. return IndexPage, ""
  57. }