package godingtalk import ( "fmt" "net/url" ) type User struct { OAPIResponse Userid string Name string Mobile string Tel string Remark string Order int IsAdmin bool IsBoss bool IsLeader bool Active bool Department []int Position string Email string OrgEmail string Avatar string Extattr interface{} } type UserList struct { OAPIResponse HasMore bool Userlist []User } type Department struct { OAPIResponse Id int Name string ParentId int Order int DeptPerimits string UserPerimits string OuterDept bool OuterPermitDepts string OuterPermitUsers string OrgDeptOwner string DeptManagerUseridList string } type DepartmentList struct { OAPIResponse Departments []Department `json:"department"` } // DepartmentList is 获取部门列表 func (c *DingTalkClient) DepartmentList() (DepartmentList, error) { var data DepartmentList err := c.httpRPC("department/list", nil, nil, &data) return data, err } //DepartmentDetail is 获取部门详情 func (c *DingTalkClient) DepartmentDetail(id int) (Department, error) { var data Department params := url.Values{} params.Add("id", fmt.Sprintf("%d", id)) err := c.httpRPC("department/get", params, nil, &data) return data, err } //UserList is 获取部门成员 func (c *DingTalkClient) UserList(departmentID, offset, size int) (UserList, error) { var data UserList if size > 100 { return data, fmt.Errorf("size 最大100") } params := url.Values{} params.Add("department_id", fmt.Sprintf("%d", departmentID)) params.Add("offset", fmt.Sprintf("%d", offset)) params.Add("size", fmt.Sprintf("%d", size)) err := c.httpRPC("user/list", params, nil, &data) return data, err } //CreateChat is func (c *DingTalkClient) CreateChat(name string, owner string, useridlist []string) (string, error) { var data struct { OAPIResponse Chatid string } request := map[string]interface{}{ "name": name, "owner": owner, "useridlist": useridlist, } err := c.httpRPC("chat/create", nil, request, &data) return data.Chatid, err } //UserInfoByCode 校验免登录码并换取用户身份 func (c *DingTalkClient) UserInfoByCode(code string) (User, error) { var data User params := url.Values{} params.Add("code", code) err := c.httpRPC("user/getuserinfo", params, nil, &data) return data, err } //UserInfoByUserId 获取用户详情 func (c *DingTalkClient) UserInfoByUserId(userid string) (User, error) { var data User params := url.Values{} params.Add("userid", userid) err := c.httpRPC("user/get", params, nil, &data) return data, err } //UseridByUnionId 通过UnionId获取玩家Userid func (c *DingTalkClient) UseridByUnionId(unionid string) (string, error) { var data struct { OAPIResponse UserID string `json:"userid"` } params := url.Values{} params.Add("unionid", unionid) err := c.httpRPC("user/getUseridByUnionid", params, nil, &data) if err != nil { return "", err } return data.UserID, err } //UseridByMobile 通过手机号获取Userid func (c *DingTalkClient) UseridByMobile(mobile string) (string, error) { var data struct { OAPIResponse UserID string `json:"userid"` } params := url.Values{} params.Add("mobile", mobile) err := c.httpRPC("user/get_by_mobile", params, nil, &data) return data.UserID, err }