utils.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. package library
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/crypto/gmd5"
  5. "github.com/gogf/gf/encoding/gcharset"
  6. "github.com/gogf/gf/encoding/gjson"
  7. "github.com/gogf/gf/encoding/gurl"
  8. "github.com/gogf/gf/errors/gerror"
  9. "github.com/gogf/gf/frame/g"
  10. "github.com/gogf/gf/net/ghttp"
  11. "github.com/gogf/gf/os/gtime"
  12. "net"
  13. )
  14. //密码加密
  15. func EncryptPassword(password, salt string) string {
  16. return gmd5.MustEncryptString(gmd5.MustEncryptString(password) + gmd5.MustEncryptString(salt))
  17. }
  18. //时间戳转 yyyy-MM-dd HH:mm:ss
  19. func TimeStampToDateTime(timeStamp int64) string {
  20. tm := gtime.NewFromTimeStamp(timeStamp)
  21. return tm.Format("Y-m-d H:i:s")
  22. }
  23. //时间戳转 yyyy-MM-dd
  24. func TimeStampToDate(timeStamp int64) string {
  25. tm := gtime.NewFromTimeStamp(timeStamp)
  26. return tm.Format("Y-m-d")
  27. }
  28. //获取当前请求接口域名
  29. func GetDomain(r *ghttp.Request) (string, error) {
  30. pathInfo, err := gurl.ParseURL(r.GetUrl(), -1)
  31. if err != nil {
  32. g.Log().Error(err)
  33. err = gerror.New("解析附件路径失败")
  34. return "", err
  35. }
  36. return fmt.Sprintf("%s://%s:%s/", pathInfo["scheme"], pathInfo["host"], pathInfo["port"]), nil
  37. }
  38. //获取客户端IP
  39. func GetClientIp(r *ghttp.Request) string {
  40. ip := r.Header.Get("X-Forwarded-For")
  41. if ip == "" {
  42. ip = r.GetClientIp()
  43. }
  44. return ip
  45. }
  46. //服务端ip
  47. func GetLocalIP() (ip string, err error) {
  48. addrs, err := net.InterfaceAddrs()
  49. if err != nil {
  50. return
  51. }
  52. for _, addr := range addrs {
  53. ipAddr, ok := addr.(*net.IPNet)
  54. if !ok {
  55. continue
  56. }
  57. if ipAddr.IP.IsLoopback() {
  58. continue
  59. }
  60. if !ipAddr.IP.IsGlobalUnicast() {
  61. continue
  62. }
  63. return ipAddr.IP.String(), nil
  64. }
  65. return
  66. }
  67. //获取ip所属城市
  68. func GetCityByIp(ip string) string {
  69. if ip == "" {
  70. return ""
  71. }
  72. if ip == "[::1]" || ip == "127.0.0.1" {
  73. return "内网IP"
  74. }
  75. url := "http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=" + ip
  76. bytes := g.Client().GetBytes(url)
  77. src := string(bytes)
  78. srcCharset := "GBK"
  79. tmp, _ := gcharset.ToUTF8(srcCharset, src)
  80. json, err := gjson.DecodeToJson(tmp)
  81. if err != nil {
  82. return ""
  83. }
  84. if json.GetInt("code") == 0 {
  85. city := fmt.Sprintf("%s %s", json.GetString("pro"), json.GetString("city"))
  86. return city
  87. } else {
  88. return ""
  89. }
  90. }
  91. //日期字符串转时间戳(秒)
  92. func StrToTimestamp(dateStr string) int64 {
  93. tm, err := gtime.StrToTime(dateStr)
  94. if err != nil {
  95. g.Log().Error(err)
  96. return 0
  97. }
  98. return tm.Timestamp()
  99. }