yxh преди 4 години
родител
ревизия
1442644698
променени са 2 файла, в които са добавени 97 реда и са изтрити 0 реда
  1. 3 0
      internal/app/system/controller/user.go
  2. 94 0
      library/libUtils/utils.go

+ 3 - 0
internal/app/system/controller/user.go

@@ -25,5 +25,8 @@ func (c *UserController) Login(ctx context.Context, req *system.UserLoginReq) (r
 			return
 			return
 		}
 		}
 	}
 	}
+	//ip := libUtils.GetClientIp(ctx)
+	//userAgent := libUtils.GetUserAgent(ctx)
+
 	return
 	return
 }
 }

+ 94 - 0
library/libUtils/utils.go

@@ -0,0 +1,94 @@
+/*
+* @desc:工具
+* @company:云南奇讯科技有限公司
+* @Author: yixiaohu
+* @Date:   2022/3/4 22:16
+ */
+
+package libUtils
+
+import (
+	"context"
+	"fmt"
+	"github.com/gogf/gf/v2/crypto/gmd5"
+	"github.com/gogf/gf/v2/encoding/gcharset"
+	"github.com/gogf/gf/v2/encoding/gjson"
+	"github.com/gogf/gf/v2/encoding/gurl"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/net/ghttp"
+	"net"
+)
+
+// EncryptPassword 密码加密
+func EncryptPassword(password, salt string) string {
+	return gmd5.MustEncryptString(gmd5.MustEncryptString(password) + gmd5.MustEncryptString(salt))
+}
+
+// GetDomain 获取当前请求接口域名
+func GetDomain(ctx context.Context) string {
+	r := g.RequestFromCtx(ctx)
+	pathInfo, err := gurl.ParseURL(r.GetUrl(), -1)
+	if err != nil {
+		g.Log().Error(ctx, err)
+		return ""
+	}
+	return fmt.Sprintf("%s://%s:%s/", pathInfo["scheme"], pathInfo["host"], pathInfo["port"])
+}
+
+// GetClientIp 获取客户端IP
+func GetClientIp(ctx context.Context) string {
+	return g.RequestFromCtx(ctx).GetClientIp()
+}
+
+// GetUserAgent 获取user-agent
+func GetUserAgent(ctx context.Context) string {
+	return ghttp.RequestFromCtx(ctx).Header.Get("User-Agent")
+}
+
+// GetLocalIP 服务端ip
+func GetLocalIP() (ip string, err error) {
+	var addrs []net.Addr
+	addrs, err = net.InterfaceAddrs()
+	if err != nil {
+		return
+	}
+	for _, addr := range addrs {
+		ipAddr, ok := addr.(*net.IPNet)
+		if !ok {
+			continue
+		}
+		if ipAddr.IP.IsLoopback() {
+			continue
+		}
+		if !ipAddr.IP.IsGlobalUnicast() {
+			continue
+		}
+		return ipAddr.IP.String(), nil
+	}
+	return
+}
+
+// GetCityByIp 获取ip所属城市
+func GetCityByIp(ip string) string {
+	if ip == "" {
+		return ""
+	}
+	if ip == "[::1]" || ip == "127.0.0.1" {
+		return "内网IP"
+	}
+	url := "http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=" + ip
+	bytes := g.Client().GetBytes(context.TODO(), url)
+	src := string(bytes)
+	srcCharset := "GBK"
+	tmp, _ := gcharset.ToUTF8(srcCharset, src)
+	json, err := gjson.DecodeToJson(tmp)
+	if err != nil {
+		return ""
+	}
+	if json.Get("code").Int() == 0 {
+		city := fmt.Sprintf("%s %s", json.Get("pro").String(), json.Get("city").String())
+		return city
+	} else {
+		return ""
+	}
+}