base

package
v0.0.0-...-3f08e25 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2020 License: MIT Imports: 13 Imported by: 0

README

说明

/api/v0版本的相关api。

Documentation

Index

Constants

This section is empty.

Variables

View Source
var NotFountError = errors.New("Not Found")

错误

Functions

func Close

func Close()

func ParseConfig

func ParseConfig() (err error)

解析项目的相关配置

func RsyncDingDingData

func RsyncDingDingData() (err error)

从dingding中同步部门和用户数据

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 项目配置

func GetConfig

func GetConfig() *Config

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 NewDing

func NewDing() (ding *DingDing)

func (*DingDing) GetAccessToken

func (ding *DingDing) GetAccessToken() (accessToken string, err error)

获取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 GetMessageByid

func GetMessageByid(msgId int) (message *Message, err error)

根据消息id获取消息

func GetMessageList

func GetMessageList(offset int, limit int) (messages []*Message, err error)

获取发送的钉钉消息列表

func GetUserMessageList

func GetUserMessageList(user *User, offset int, limit int) (messages []*Message, err error)

获取用户消息列表

func (*Message) Save

func (msg *Message) Save()

type TextMsg

type TextMsg struct {
	Content string `json:"content"` // 文本消息内容
}

Text Message

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)

获取部门的用户

func GetUserByMobile

func GetUserByMobile(mobile string) (user *User, err error)

根据手机号获取用户

func GetUserByName

func GetUserByName(name string) (user *User, err error)

根据用户名字获取到用户

func GetUserByid

func GetUserByid(userId string) (user *User, err error)

根据用户ID或者dingId获取到用户

func GetUserList

func GetUserList(offset int, limit int) (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"`                    // 【必须】消息内容
}

发送工作通知消息

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL