package enterprise import ( "errors" "fmt" "git.u8t.cn/open/goutil" "github.com/tidwall/gjson" ) var ( corpId = 1000 ) type VerifyCode struct { Username string `json:"username"` Timestamp string `json:"timestamp"` } type StaffInfo struct { Username string `json:"username"` Realname string `json:"realname"` Phone string `json:"phone"` } type StaffUser struct { Enterprise } func NewStaffUser(baseUrl, token string) *StaffUser { return &StaffUser{ Enterprise: Enterprise{ baseUrl: baseUrl, token: token, }, } } func (e *StaffUser) SendVerifyCode(username, scene string) (*VerifyCode, error) { var reqBody string reqBody = fmt.Sprintf(`{"username":"%s","scene":"%s"}`, username, scene) reqUrl := e.GetBaseUrl() + "/api/staff/verify/code" body, err := goutil.HttpPost(reqUrl, e.GetHeader(), []byte(reqBody)) if err != nil { return nil, err } g := gjson.ParseBytes(body) if g.Get("code").Int() != 0 { return nil, errors.New(string(body)) } r := new(VerifyCode) r.Timestamp = g.Get("data.timestamp").String() r.Username = g.Get("data.username").String() return r, nil } func (e *StaffUser) Login(username, timestamp, code string) (*StaffInfo, error) { reqBody := fmt.Sprintf(`{"username":"%s","timestamp":"%s","code":"%s"}`, username, timestamp, code) reqUrl := e.GetBaseUrl() + "/api/staff/login" body, err := goutil.HttpPost(reqUrl, e.GetHeader(), []byte(reqBody)) if err != nil { return nil, err } g := gjson.ParseBytes(body) if g.Get("code").Int() != 0 { return nil, errors.New(string(body)) } r := new(StaffInfo) r.Realname = g.Get("data.realname").String() r.Username = g.Get("data.username").String() r.Phone = g.Get("data.phone").String() return r, nil }