Documentation ¶
Index ¶
- Variables
- func Close()
- func ParseConfig() (err error)
- func RsyncDingDingData() (err error)
- type ApiResponse
- type Config
- type Database
- type Department
- func GetDepartmentByName(name string) (department *Department, err error)
- func GetDepartmentByid(departmentId int) (department *Department, err error)
- func GetDepartmentList(offset int, limit int) (departments []*Department, err error)
- func GetUserDepartments(user *User) (departments []*Department, err error)
- type DingConfig
- type DingDepartment
- type DingDing
- func (ding *DingDing) GetAccessToken() (accessToken string, err error)
- func (ding *DingDing) GetDepartmentUserList(departmentID int, offset int, size int) (userList []*DingUser, err error)
- func (ding *DingDing) ListDepartment() (departments []*DingDepartment, err error)
- func (ding *DingDing) SendWorkerMessage(workMessage *WorkerMessage, message *Message) (success bool, err error)
- type DingMessage
- type DingUser
- type HttpConfig
- type ImageMsg
- type MarkdownMsg
- type Message
- type TextMsg
- type User
- func GetDepartmentUsers(department *Department) (users []User, err error)
- func GetUserByMobile(mobile string) (user *User, err error)
- func GetUserByName(name string) (user *User, err error)
- func GetUserByid(userId string) (user *User, err error)
- func GetUserList(offset int, limit int) (users []*User, err error)
- type WorkerMessage
Constants ¶
This section is empty.
Variables ¶
var NotFountError = errors.New("Not Found")
错误
Functions ¶
Types ¶
type ApiResponse ¶
type ApiResponse struct { Errcode int `json:"errcode"` // 错误代码,无错误代码是0 Errmsg string `json:"errmsg"` // 错误消息 AccessToken string `json:"access_token,omitempty"` // Access Token Department []*DingDepartment `json:"department,omitempty"` // 部门列表 UserList []*DingUser `json:"userlist,omitempty"` // 用户列表 TaskId int64 `json:"task_id,omitempty"` // 任务ID,比如:发送消息 RequestID string `json:"request_id,omitempty"` // 请求ID,比如:发送消息的响应 }
DingDing Api Response
type Config ¶
type Config struct { Http *HttpConfig DingDing *DingConfig Database *Database Debug bool }
DingDing 项目配置
type Database ¶
type Database struct { Host string `json:"host",yaml:"host"` // 数据库地址 Port int `json:"port", yaml:"port"` // 端口号 User string `json:"user", yaml:"user"` // 用户 Password string `json:"password", yaml:"password"` // 用户密码 Database string `json:"database", yaml: "database"` // 数据库 }
MySQL数据库相关配置
type Department ¶
type Department struct { gorm.Model Name string `gorm:"type:varchar(80);NOT NULL" json:"name"` // 部门名称 DingID int `gorm:"unique_index" json:"ding_id"` // 部门ID【对应DingDing中的ID】 DingData json.RawMessage `gorm:"type:text" json:"ding_data,omitempty"` // 对应的钉钉数据 Description string `gorm:"type:text" json:"description"` // 描述 Users []*User `gorm:"many2many:user_departments"` // 部门用户 }
部门
func GetDepartmentByName ¶
func GetDepartmentByName(name string) (department *Department, err error)
根据部门名字获取到用户
func GetDepartmentByid ¶
func GetDepartmentByid(departmentId int) (department *Department, err error)
根据部门ID或者dingId获取到用户
func GetDepartmentList ¶
func GetDepartmentList(offset int, limit int) (departments []*Department, err error)
获取部门列表
func GetUserDepartments ¶
func GetUserDepartments(user *User) (departments []*Department, err error)
获取用户的部门
type DingConfig ¶
type DingConfig struct { AgentID int `json:"agentid", yaml:"agentid"` AppKey string `json:"appkey", yaml: "appkey"` SecretKey string `json:"secretkey", yaml: "secretkey"` }
DingDing开发者相关配置
type DingDepartment ¶
type DingDepartment struct { ID int `json:"id"` // 部门ID Name string `json:"name"` // 部门名称 ParentID int `json:"parentid"` // 父部门ID CreateDeptGroup bool `json:"createDeptGroup"` // 是否同步创建一个关联此部门的企业群 AutoAddUser bool `json:"autoAddUser"` // 当群创建好之后,是否有新人加入部门会自动加入该群 }
DingDing Department
type DingDing ¶
type DingDing struct { AgentId int `json:"agent_id"` // 注册钉钉应用的时候的应用ID,发送工作通知消息的时候会用到agent_id AppKey string `json:"app_key"` // App Key:应用的唯一表示Key AppSecret string `json:"app_secret"` // App Secret:应用的秘钥 AccessToken string `json:"access_token"` // Access Token }
DingDing 注册应用后可获取到的信息 企业内部应用/小程序 --> 创建应用-->应用首页 --> 查看信息: 可看到相关字段
func (*DingDing) GetAccessToken ¶
获取AccessToken 一切操作的前提 文档:https://ding-doc.dingtalk.com/doc#/serverapi2/eev437 请求方法:GET 请求地址:https://oapi.dingtalk.com/gettoken?appkey=key&appsecret=secret GET参数说明: appkey:必须,应用的唯一表示Key appsecret:必须,应用的秘钥
func (*DingDing) GetDepartmentUserList ¶
func (ding *DingDing) GetDepartmentUserList(departmentID int, offset int, size int) (userList []*DingUser, err error)
获取部门用户详情列表 Method: GET URL: https://oapi.dingtalk.com/user/listbypage?access_token=ACCESS_TOKEN&department_id=1
func (*DingDing) ListDepartment ¶
func (ding *DingDing) ListDepartment() (departments []*DingDepartment, err error)
部门相关api 请求方式:GET(HTTPS) 请求地址:https://oapi.dingtalk.com/department/list?access_token=ACCESS_TOKEN
func (*DingDing) SendWorkerMessage ¶
func (ding *DingDing) SendWorkerMessage(workMessage *WorkerMessage, message *Message) (success bool, err error)
发送工作通知消息 Method: POST URL:https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=ACCESS_TOKEN 参数:
type DingMessage ¶
type DingMessage struct { MsgType string `json:"msgtype"` // 消息类型 Text *TextMsg `json:"text, omitempty"` // msgType是text的消息内容 Image *ImageMsg `json:"image, omitempty"` // msgType是image的消息内容 Markdown *MarkdownMsg `json:"markdown, omitempty"` // msgType是markdown的消息内容 }
DingDing Message 参考文档:https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup
type DingUser ¶
type DingUser struct { UserId string `json:"userid"` // 员工在当前企业内的唯一标识,也称staffid,可由企业在创建时指定,并代表一定含义比如工号,创建后不可改变 Unionid string `json:"unionid"` // 员工在当前开发者企业内的唯一表示,系统生成,固定值,不可改变 Mobile string `json:"mobile"` // 手机号 Tel string `json:"tel"` // 分机号 WorkPlace string `json:"workPlace"` //办公地点 Remark string `json:"remark"` // 备注 IsAdmin bool `json:"isAdmin"` // 是否是企业的管理员 IsBoss bool `json:"isBoss"` // 是否未企业的老板 IsHide bool `json:"isHide"` // 是否隐藏号码 IsLeader bool `json:"isLeader"` // 是否未部门的主管 Name string `json:"name"` // 成员名称 Active bool `json:"active"` // 表示该用户是否激活了钉钉 Department []int `json:"department"` // 成员所属的部门ID列表 Position string `json:"position"` // 职位信息 Email string `json:"email"` // 员工的有些 OrgEmail string `json:"orgEmail, omitempty"` // 员工的企业邮箱,如果员工的企业邮箱没有开通,返回信息中不包含 Avatar string `json:"avatar"` // 头像Url HiredDate string `json:"hiredDate"` // 入职时间 StateCode string `json:"stateCode"` // 国家地区码 }
DingDing User
type HttpConfig ¶
type HttpConfig struct { Host string `json:"host",yaml:"host"` Port int `json:"port", yaml:"port"` Timeout int `json:"timeout", yaml: "timeout"` BasicAuth map[string]string `json:"basicauth", yaml: "basicauth"` }
Http Config
type ImageMsg ¶
type ImageMsg struct {
MediaId string `json:"media_id"` // 媒体文件Id,可以通过媒体文件接口上传图片获取
}
type MarkdownMsg ¶
type MarkdownMsg struct { Title string `json:"title"` // markdown的标题 Text string `json:"text"` // 消息正文的内容 }
Markdown Message
type Message ¶
type Message struct { gorm.Model //UserID uint `gorm:"index" json:"user_id"` // 用户ID Success bool `gorm:"index;NOT NULL" json:"success"` // 消息是否成功 Users []*User `gorm:"many2many:message_users" json:"users"` // 消息接收的用户 Title string `gorm:"type:varchar(128)" json:"title,omitempty"` // 消息标题 MsgType string `gorm:"type:varchar(40);NOT NULL" json:"msg_type"` // 消息类型:text、markdown等 Content string `gorm:"type:text;NOT NULL" json:"content"` // 消息内容 DingData json.RawMessage `gorm:"type:text" json:"ding_data,omitempty"` // Ding Message DingResponse json.RawMessage `gorm:"type:varchar(512)" json:"ding_response",omitempty` // 发送消息的响应结果 }
发送的消息
func GetMessageList ¶
获取发送的钉钉消息列表
func GetUserMessageList ¶
获取用户消息列表
type User ¶
type User struct { gorm.Model Username string `gorm:"type:varchar(40);INDEX;NOT NULL" json:"username"` // 用户名 DingID string `gorm:"size:100;UNIQUE_INDEX" json:"ding_id"` // 对应DingDing中的ID Mobile string `gorm:"type:varchar(40)" json:"mobile"` // 手机号 Position string `gorm:"type:varchar(40)" json:"position"` // 职位 Departments []*Department `gorm:"many2many:user_departments;" json:"departments,omitempty"` // 用户所在的部门 DingData json.RawMessage `gorm:"type:text" json:"ding_data,omitempty"` // 对应的钉钉数据 Messages []*Message `gorm:"many2many:message_users" json:"messages,omitempty"` // 用户的消息 }
func GetDepartmentUsers ¶
func GetDepartmentUsers(department *Department) (users []User, err error)
获取部门的用户
type WorkerMessage ¶
type WorkerMessage struct { AgentID int `json:"agent_id"` // 【必须】应用agentId UseridList string `json:"userid_list,omitempty"` // 接受者的用户userid列表,最大列表长度:100,逗号分隔 DeptIdList string `json:"dept_id_list,omitempty"` // 接受者的部门id列表,最大列表长度:20,接受者是部门id下(包括子部门)的所有用户 ToAllUser bool `json:"to_all_user,omitempty"` // 是否发送给企业全部用户 Msg *DingMessage `json:"msg"` // 【必须】消息内容 }
发送工作通知消息