package utils import ( "errors" "fmt" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" ) // 定义接口给外部调用 var SessionTalentInfo = sessionTalentInfo{} // 定义类 type sessionTalentInfo struct { } // 为类绑定方法 func (*sessionTalentInfo) GetTalentIdFromSession(r *ghttp.Request) (string, error) { //在前端request1111.js中手动把token加入header中的 t := r.GetHeader("Token") if t == "" { return "", errors.New("not found info by token") } //通过token从请求的session中获得信息,session是用来存储用户对话的地方 infoMap := r.Session.Get(t) if infoMap == nil { return "", errors.New("info in session not found") } //g.Map类似字典 sInfoMap, ok := infoMap.(g.Map) if !ok { return "", errors.New("info in session is not a map") } fmt.Println("session") fmt.Println(sInfoMap) sTid := sInfoMap["talentId"] if sTid == nil { return "", errors.New("session map not contains key talentId") } tid := sTid.(string) return tid, nil } func (*sessionTalentInfo) GetOpenIdFromSession(r *ghttp.Request) (string, error) { t := r.GetHeader("Token") if t == "" { return "", errors.New("not found info by token") } infoMap := r.Session.Get(t) if infoMap == nil { return "", errors.New("info in session not found") } sInfoMap, ok := infoMap.(g.Map) if !ok { return "", errors.New("info in session is not a map") } openId := sInfoMap["wxOpenId"] if openId == nil { return "", errors.New("session map not contains key wxOpenId") } return openId.(string), nil }