# NiKit **Repository Path**: njd0608/ni-kit ## Basic Information - **Project Name**: NiKit - **Description**: 个人工具。。。。。。。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-24 - **Last Updated**: 2026-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ni-kit 本项目已提供可复用的齐犇物联网卡查询包:`gitee.com/njd0608/ni-kit/pkg/tibiot` 同时提供萤石云查询包:`gitee.com/njd0608/ni-kit/pkg/ezviz` ## 在其他项目中引入 1. 添加依赖(示例) ```bash go get gitee.com/njd0608/ni-kit@latest ``` ## 齐犇物联网卡查询 ```go package main import ( "context" "log" "gitee.com/njd0608/ni-kit/pkg/tibiot" ) func main() { client, err := tibiot.NewClient(tibiot.Config{ UserName: "你的用户名", Password: "你的密码", }) if err != nil { log.Fatal(err) } res, err := client.QueryCardInfo(context.Background(), tibiot.QueryCardInfoRequest{ ICCID: "8986xxxxxxxxxxxx", }) if err != nil { log.Fatal(err) } log.Printf("iccid=%s status=%s flow=%s", res.ICCID, res.CardStatus, res.CardFlow) } ``` ## 萤石云设备查询 ```go package main import ( "context" "log" "gitee.com/njd0608/ni-kit/pkg/ezviz" ) func main() { client, err := ezviz.NewClient(ezviz.Config{ AppKey: "你的AppKey", AppSecret: "你的AppSecret", }) if err != nil { log.Fatal(err) } res, err := client.GetDeviceList(context.Background(), ezviz.GetDeviceListRequest{ PageStart: 1, PageSize: 20, }) if err != nil { log.Fatal(err) } log.Printf("设备总数: %d, 当前页: %d", res.PageTotal, len(res.Devices)) if len(res.Devices) == 0 { return } serial := res.Devices[0].DeviceSerial url, err := client.GetAddress(context.Background(), ezviz.GetAddressRequest{ DeviceSerial: serial, }) if err != nil { log.Fatal(err) } log.Printf("播放地址: %s", url) picURL, err := client.GetCapture(context.Background(), ezviz.GetCaptureRequest{ DeviceSerial: serial, }) if err != nil { log.Fatal(err) } log.Printf("截图地址: %s", picURL) } ``` 支持的方法: - `GetDeviceList`:设备列表 - `GetAddress`:获取直播流地址 - `GetCapture`:获取截图 - `GetDeviceStatus`:设备状态 - `GetAlarmList`:告警列表 - `EncryptOff`:关闭视频加密 ## Excel 导出 ```go package main import ( "gitee.com/njd0608/ni-kit/pkg/excel" ) func main() { _ = excel.WriteFile(excel.ExportRequest{ SheetName: "订单列表", Headers: []string{"订单号", "客户", "金额", "备注"}, Rows: [][]any{ {"NO-001", "张三", 199.9, "首次下单,备注较长时会自动换行"}, {"NO-002", "李四", 999.0, "VIP"}, }, Options: &excel.Options{ Theme: excel.Theme{ HeaderFillColor: "#0F766E", HeaderFontColor: "#FFFFFF", StripeColor: "#F0FDFA", }, Columns: []excel.ColumnOption{ {Header: "订单号", Width: 18, Align: "center"}, {Header: "金额", Width: 14, Align: "right", NumFmt: 4}, {Header: "备注", MinWidth: 20, MaxWidth: 40, WrapText: boolPtr(true)}, }, }, }, "./orders.xlsx") } func boolPtr(v bool) *bool { return &v } ``` 上传云端(可选): ```go res, err := excel.WriteFileWithResult(excel.ExportRequest{ SheetName: "报表", Headers: []string{"姓名", "电话"}, Rows: [][]any{{"张三", "13800000000"}}, UploadToCloud: true, BusinessKey: "report", CloudURL: "https://.cos.ap-shanghai.myqcloud.com", CloudSecretID: "", CloudSecretKey: "", // FileName 不传时,会自动用时间算法生成 }, "./report.xlsx") if err != nil { panic(err) } fmt.Println("云地址:", res.CloudURL) ```