gitee.com/larksuite/oapi-sdk-go/v3@v3.0.3/service/acs/v1/api.go (about) 1 // Package acs code generated by oapi sdk gen 2 /* 3 * MIT License 4 * 5 * Copyright (c) 2022 Lark Technologies Pte. Ltd. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 8 * 9 * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software. 10 * 11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 12 */ 13 14 package larkacs 15 16 import ( 17 "bytes" 18 "context" 19 "net/http" 20 21 "gitee.com/larksuite/oapi-sdk-go/v3/core" 22 ) 23 24 func NewService(config *larkcore.Config) *AcsService { 25 a := &AcsService{config: config} 26 a.AccessRecord = &accessRecord{service: a} 27 a.AccessRecordAccessPhoto = &accessRecordAccessPhoto{service: a} 28 a.Device = &device{service: a} 29 a.User = &user{service: a} 30 a.UserFace = &userFace{service: a} 31 return a 32 } 33 34 type AcsService struct { 35 config *larkcore.Config 36 AccessRecord *accessRecord // 门禁记录 37 AccessRecordAccessPhoto *accessRecordAccessPhoto // 识别图片 38 Device *device // 门禁设备 39 User *user // 用户 40 UserFace *userFace // 人脸图片 41 } 42 43 type accessRecord struct { 44 service *AcsService 45 } 46 type accessRecordAccessPhoto struct { 47 service *AcsService 48 } 49 type device struct { 50 service *AcsService 51 } 52 type user struct { 53 service *AcsService 54 } 55 type userFace struct { 56 service *AcsService 57 } 58 59 // 获取门禁记录列表 60 // 61 // - 用户在门禁考勤机上成功开门或打卡后,智能门禁应用都会生成一条门禁记录。;;该接口返回满足查询参数的识别记录 62 // 63 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/access_record/list 64 // 65 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/list_accessRecord.go 66 func (a *accessRecord) List(ctx context.Context, req *ListAccessRecordReq, options ...larkcore.RequestOptionFunc) (*ListAccessRecordResp, error) { 67 // 发起请求 68 apiReq := req.apiReq 69 apiReq.ApiPath = "/open-apis/acs/v1/access_records" 70 apiReq.HttpMethod = http.MethodGet 71 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 72 apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...) 73 if err != nil { 74 return nil, err 75 } 76 // 反序列响应结果 77 resp := &ListAccessRecordResp{ApiResp: apiResp} 78 err = apiResp.JSONUnmarshalBody(resp) 79 if err != nil { 80 return nil, err 81 } 82 return resp, err 83 } 84 func (a *accessRecord) ListByIterator(ctx context.Context, req *ListAccessRecordReq, options ...larkcore.RequestOptionFunc) (*ListAccessRecordIterator, error) { 85 return &ListAccessRecordIterator{ 86 ctx: ctx, 87 req: req, 88 listFunc: a.List, 89 options: options, 90 limit: req.Limit}, nil 91 } 92 93 // 下载人脸识别图片 94 // 95 // - 用户在门禁考勤机上成功开门或打卡后,智能门禁应用都会生成一条门禁记录,对于使用人脸识别方式进行开门的识别记录,还会有抓拍图。;;可以用该接口下载开门时的人脸识别照片 96 // 97 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/access_record-access_photo/get 98 // 99 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/get_accessRecordAccessPhoto.go 100 func (a *accessRecordAccessPhoto) Get(ctx context.Context, req *GetAccessRecordAccessPhotoReq, options ...larkcore.RequestOptionFunc) (*GetAccessRecordAccessPhotoResp, error) { 101 // 发起请求 102 apiReq := req.apiReq 103 apiReq.ApiPath = "/open-apis/acs/v1/access_records/:access_record_id/access_photo" 104 apiReq.HttpMethod = http.MethodGet 105 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 106 apiResp, err := larkcore.Request(ctx, apiReq, a.service.config, options...) 107 if err != nil { 108 return nil, err 109 } 110 // 反序列响应结果 111 resp := &GetAccessRecordAccessPhotoResp{ApiResp: apiResp} 112 // 如果是下载,则设置响应结果 113 if apiResp.StatusCode == http.StatusOK { 114 resp.File = bytes.NewBuffer(apiResp.RawBody) 115 resp.FileName = larkcore.FileNameByHeader(apiResp.Header) 116 return resp, err 117 } 118 err = apiResp.JSONUnmarshalBody(resp) 119 if err != nil { 120 return nil, err 121 } 122 return resp, err 123 } 124 125 // 获取设备列表 126 // 127 // - 使用该接口获取租户内所有设备 128 // 129 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/device/list 130 // 131 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/list_device.go 132 func (d *device) List(ctx context.Context, options ...larkcore.RequestOptionFunc) (*ListDeviceResp, error) { 133 // 发起请求 134 apiReq := &larkcore.ApiReq{ 135 PathParams: larkcore.PathParams{}, 136 QueryParams: larkcore.QueryParams{}, 137 } 138 apiReq.ApiPath = "/open-apis/acs/v1/devices" 139 apiReq.HttpMethod = http.MethodGet 140 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 141 apiResp, err := larkcore.Request(ctx, apiReq, d.service.config, options...) 142 if err != nil { 143 return nil, err 144 } 145 // 反序列响应结果 146 resp := &ListDeviceResp{ApiResp: apiResp} 147 err = apiResp.JSONUnmarshalBody(resp) 148 if err != nil { 149 return nil, err 150 } 151 return resp, err 152 } 153 154 // 获取单个用户信息 155 // 156 // - 该接口用于获取智能门禁中单个用户的信息。 157 // 158 // - 只能获取已加入智能门禁权限组的用户 159 // 160 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/user/get 161 // 162 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/get_user.go 163 func (u *user) Get(ctx context.Context, req *GetUserReq, options ...larkcore.RequestOptionFunc) (*GetUserResp, error) { 164 // 发起请求 165 apiReq := req.apiReq 166 apiReq.ApiPath = "/open-apis/acs/v1/users/:user_id" 167 apiReq.HttpMethod = http.MethodGet 168 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 169 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 170 if err != nil { 171 return nil, err 172 } 173 // 反序列响应结果 174 resp := &GetUserResp{ApiResp: apiResp} 175 err = apiResp.JSONUnmarshalBody(resp) 176 if err != nil { 177 return nil, err 178 } 179 return resp, err 180 } 181 182 // 获取用户列表 183 // 184 // - 使用该接口获取智能门禁中所有用户信息 185 // 186 // - 只能获取已加入智能门禁权限组的用户 187 // 188 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/user/list 189 // 190 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/list_user.go 191 func (u *user) List(ctx context.Context, req *ListUserReq, options ...larkcore.RequestOptionFunc) (*ListUserResp, error) { 192 // 发起请求 193 apiReq := req.apiReq 194 apiReq.ApiPath = "/open-apis/acs/v1/users" 195 apiReq.HttpMethod = http.MethodGet 196 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 197 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 198 if err != nil { 199 return nil, err 200 } 201 // 反序列响应结果 202 resp := &ListUserResp{ApiResp: apiResp} 203 err = apiResp.JSONUnmarshalBody(resp) 204 if err != nil { 205 return nil, err 206 } 207 return resp, err 208 } 209 func (u *user) ListByIterator(ctx context.Context, req *ListUserReq, options ...larkcore.RequestOptionFunc) (*ListUserIterator, error) { 210 return &ListUserIterator{ 211 ctx: ctx, 212 req: req, 213 listFunc: u.List, 214 options: options, 215 limit: req.Limit}, nil 216 } 217 218 // 修改用户部分信息 219 // 220 // - 飞书智能门禁在人脸识别成功后会有韦根信号输出,输出用户的卡号。;对于使用韦根协议的门禁系统,企业可使用该接口录入用户卡号。 221 // 222 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/user/patch 223 // 224 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/patch_user.go 225 func (u *user) Patch(ctx context.Context, req *PatchUserReq, options ...larkcore.RequestOptionFunc) (*PatchUserResp, error) { 226 // 发起请求 227 apiReq := req.apiReq 228 apiReq.ApiPath = "/open-apis/acs/v1/users/:user_id" 229 apiReq.HttpMethod = http.MethodPatch 230 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 231 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 232 if err != nil { 233 return nil, err 234 } 235 // 反序列响应结果 236 resp := &PatchUserResp{ApiResp: apiResp} 237 err = apiResp.JSONUnmarshalBody(resp) 238 if err != nil { 239 return nil, err 240 } 241 return resp, err 242 } 243 244 // 下载人脸图片 245 // 246 // - 对于已经录入人脸图片的用户,可以使用该接口下载用户人脸图片 247 // 248 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/user-face/get 249 // 250 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/get_userFace.go 251 func (u *userFace) Get(ctx context.Context, req *GetUserFaceReq, options ...larkcore.RequestOptionFunc) (*GetUserFaceResp, error) { 252 // 发起请求 253 apiReq := req.apiReq 254 apiReq.ApiPath = "/open-apis/acs/v1/users/:user_id/face" 255 apiReq.HttpMethod = http.MethodGet 256 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 257 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 258 if err != nil { 259 return nil, err 260 } 261 // 反序列响应结果 262 resp := &GetUserFaceResp{ApiResp: apiResp} 263 // 如果是下载,则设置响应结果 264 if apiResp.StatusCode == http.StatusOK { 265 resp.File = bytes.NewBuffer(apiResp.RawBody) 266 resp.FileName = larkcore.FileNameByHeader(apiResp.Header) 267 return resp, err 268 } 269 err = apiResp.JSONUnmarshalBody(resp) 270 if err != nil { 271 return nil, err 272 } 273 return resp, err 274 } 275 276 // 上传人脸图片 277 // 278 // - 用户需要录入人脸图片才可以使用门禁考勤机。使用该 API 上传门禁用户的人脸图片。 279 // 280 // - 官网API文档链接:https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/acs-v1/user-face/update 281 // 282 // - 使用Demo链接:https://github.com/larksuite/oapi-sdk-go/tree/v3_main/sample/apiall/acsv1/update_userFace.go 283 func (u *userFace) Update(ctx context.Context, req *UpdateUserFaceReq, options ...larkcore.RequestOptionFunc) (*UpdateUserFaceResp, error) { 284 options = append(options, larkcore.WithFileUpload()) 285 // 发起请求 286 apiReq := req.apiReq 287 apiReq.ApiPath = "/open-apis/acs/v1/users/:user_id/face" 288 apiReq.HttpMethod = http.MethodPut 289 apiReq.SupportedAccessTokenTypes = []larkcore.AccessTokenType{larkcore.AccessTokenTypeTenant} 290 apiResp, err := larkcore.Request(ctx, apiReq, u.service.config, options...) 291 if err != nil { 292 return nil, err 293 } 294 // 反序列响应结果 295 resp := &UpdateUserFaceResp{ApiResp: apiResp} 296 err = apiResp.JSONUnmarshalBody(resp) 297 if err != nil { 298 return nil, err 299 } 300 return resp, err 301 }