github.com/infraboard/keyauth@v0.8.1/apps/wxwork/wxwork.go (about) 1 package wxwork 2 3 import ( 4 "fmt" 5 6 "github.com/infraboard/keyauth/apps/provider/auth/wxwork" 7 "github.com/infraboard/keyauth/apps/token/session" 8 "github.com/infraboard/mcube/http/request" 9 "github.com/infraboard/mcube/types/ftime" 10 ) 11 12 type WechatWork interface { 13 SaveConfig(*SaveConfRequest) (*WechatWorkConfig, error) 14 QueryConfig(*QueryConfigRequest) (*WechatWorkSet, error) 15 DescribeConfig(*DescribeWechatWorkConf) (*WechatWorkConfig, error) 16 DeleteConfig(*DescribeWechatWorkConf) error 17 } 18 19 func NewSaveConfRequest() *SaveConfRequest { 20 return &SaveConfRequest{ 21 Session: session.NewSession(), 22 Enabled: true, 23 Config: wxwork.NewDefaultConfig(), 24 } 25 } 26 27 // NewWechatWorkConfig todo 28 func NewWechatWorkConfig(req *SaveConfRequest) (*WechatWorkConfig, error) { 29 tk := req.GetToken() 30 if tk == nil { 31 return nil, fmt.Errorf("token requird") 32 } 33 34 if err := req.Config.Validate(); err != nil { 35 return nil, err 36 } 37 38 ins := &WechatWorkConfig{ 39 Domain: tk.Domain, 40 Creater: tk.Account, 41 CreateAt: ftime.Now(), 42 UpdateAt: ftime.Now(), 43 SaveConfRequest: req, 44 } 45 return ins, nil 46 } 47 48 // NewDefaultWechatWorkConfig todo 49 func NewDefaultWechatWorkConfig() *WechatWorkConfig { 50 return &WechatWorkConfig{ 51 SaveConfRequest: NewSaveConfRequest(), 52 } 53 } 54 55 type WechatWorkConfig struct { 56 Domain string `bson:"_id" json:"domain,omitempty"` // 所属域ID 57 Creater string `bson:"creater" json:"creater,omitempty"` // 创建人 58 CreateAt ftime.Time `bson:"create_at" json:"create_at,omitempty"` // 创建时间 59 UpdateAt ftime.Time `bson:"update_at" json:"update_at,omitempty"` // 更新时间 60 *SaveConfRequest `bson:",inline"` 61 } 62 63 // NewConfigSet 实例化 64 func NewConfigSet(req *request.PageRequest) *WechatWorkSet { 65 return &WechatWorkSet{ 66 PageRequest: req, 67 Items: []*WechatWorkConfig{}, 68 } 69 } 70 71 // WechatWorkSet 列表 72 type WechatWorkSet struct { 73 *request.PageRequest 74 75 Total int64 `json:"total"` 76 Items []*WechatWorkConfig `json:"items"` 77 } 78 79 // Add 添加应用 80 func (s *WechatWorkSet) Add(item *WechatWorkConfig) { 81 s.Items = append(s.Items, item) 82 } 83 84 // NewDescribeConfWithDomain todo 85 func NewDescribeConfWithDomain(domain string) *DescribeWechatWorkConf { 86 return &DescribeWechatWorkConf{ 87 Domain: domain, 88 } 89 } 90 91 // DescribeWechatWorkConf 描述配置 92 type DescribeWechatWorkConf struct { 93 Domain string 94 } 95 96 func (req *DescribeWechatWorkConf) Validate() error { 97 if req.Domain == "" { 98 return fmt.Errorf("domain required") 99 } 100 101 return nil 102 } 103 104 // NewQueryConfigRequest todo 105 func NewQueryConfigRequest(pageReq *request.PageRequest) *QueryConfigRequest { 106 return &QueryConfigRequest{ 107 Session: session.NewSession(), 108 PageRequest: pageReq, 109 } 110 } 111 112 // QueryConfigRequest 查询企业微信配置 113 type QueryConfigRequest struct { 114 *session.Session 115 *request.PageRequest 116 } 117 118 type SaveConfRequest struct { 119 Enabled bool `bson:"enabled" json:"enabled"` 120 *wxwork.Config `bson:",inline"` 121 *session.Session `bson:"-" json:"-"` 122 } 123 124 // QueryWechatWorkConfRequest 查询企业微信配置 125 type QueryWechatWorkConfRequest struct { 126 *session.Session 127 *request.PageRequest 128 } 129 130 // DeleteWechatWorkConf todo 131 type DeleteWechatWorkConf struct { 132 ID string 133 }