util.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package utility
  2. import (
  3. "app.yhyue.com/moapp/jybase/encrypt"
  4. "context"
  5. "fmt"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. "github.com/gogf/gf/v2/util/gconv"
  9. "reflect"
  10. "regexp"
  11. "strconv"
  12. "strings"
  13. "sync"
  14. )
  15. // ConversionMoney 金额格式化
  16. func ConversionMoney(i_money interface{}) string {
  17. if i_money == nil {
  18. return ""
  19. }
  20. m := ""
  21. if reflect.TypeOf(i_money).Name() == "float64" {
  22. m = strconv.FormatFloat(gconv.Float64(i_money), 'f', -1, 64)
  23. } else {
  24. m = gconv.String(i_money)
  25. }
  26. if m == "" {
  27. return m
  28. }
  29. m_arr := strings.Split(m, ".")
  30. m_1 := m_arr[0]
  31. len_m1 := len([]rune(m_1))
  32. if len_m1 >= 9 {
  33. m = m_1[0:len_m1-8] + "." + m_1[len_m1-8:len_m1-6] + "亿元"
  34. } else if len_m1 >= 5 {
  35. m = m_1[0:len_m1-4] + "." + m_1[len_m1-4:len_m1-2] + "万元"
  36. } else {
  37. if len(m_arr) == 1 {
  38. return m + ".00元"
  39. }
  40. m_2 := m_arr[1]
  41. if len([]rune(m_2)) > 1 {
  42. m_2 = m_2[0:2]
  43. } else {
  44. m_2 = m_2[0:1] + "0"
  45. }
  46. m = m_1 + "." + m_2 + "元"
  47. }
  48. return m
  49. }
  50. var mobileReg = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
  51. func GetCommonRenderPatch(agent, value string) string {
  52. if IsMobile(agent) {
  53. return fmt.Sprintf("mobile/%s", value)
  54. }
  55. return fmt.Sprintf("pc/%s", value)
  56. }
  57. func IsMobile(agent string) bool {
  58. if mobileReg.MatchString(agent) {
  59. return true
  60. }
  61. return false
  62. }
  63. var getCacheRenderFilePaths = getRenderFilePaths()
  64. func GetCommonRenderCachePaths(agent, value string) []string {
  65. return getCacheRenderFilePaths(IsMobile(agent), value)
  66. }
  67. func getRenderFilePaths() func(bool, string) []string {
  68. cacheMap := map[string]map[bool][]string{}
  69. lock := sync.Mutex{}
  70. return func(isMobile bool, filename string) []string {
  71. lock.Lock()
  72. defer lock.Unlock()
  73. if m, ok := cacheMap[filename]; ok && len(m) == 2 {
  74. return m[isMobile]
  75. }
  76. cacheMap[filename] = map[bool][]string{
  77. true: {fmt.Sprintf("mobile/%s", filename), fmt.Sprintf("pc/%s", filename)},
  78. false: {fmt.Sprintf("pc/%s", filename)},
  79. }
  80. return cacheMap[filename][isMobile]
  81. }
  82. }
  83. func EncodeId(sid string) string {
  84. if sid == "" || sid == "-" { //不存在的id为-
  85. return ""
  86. }
  87. return encrypt.EncodeArticleId2ByCheck(sid)
  88. }
  89. func DecodeId(eid string) string {
  90. if eid == "" {
  91. return ""
  92. }
  93. return encrypt.DecodeArticleId2ByCheck(eid)[0]
  94. }
  95. // JySessionLoginEd 是否已经登录
  96. func JySessionLoginEd(r *ghttp.Request) bool {
  97. val := r.Cookie.Get("SESSIONID")
  98. if val.IsNil() {
  99. return false
  100. }
  101. sessionId := val.String()
  102. if sessionId == "" {
  103. return false
  104. }
  105. if gVal, _ := g.Redis("session").Get(context.Background(), sessionId); !gVal.IsEmpty() {
  106. if gconv.String(gVal.Map()["userId"]) != "" {
  107. return true
  108. }
  109. }
  110. return false
  111. }