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  }