chore: 初始开源发布

iotlcm-openapi:对外 OpenAPI 网关(V3 接口 + 旧版兼容接口)。

- Go module:iotlcm-openapi → git.5iot.com/iotlcm-public/iotlcm-openapi(178 文件)
- 凭据与地址脱敏:JWT signingKey、MySQL DSN、Redis 口令、
  RabbitMQ DSN 全部改为 ${*} 占位;私网 IP → 文档地址段
- 7 处真实手机号 → 合法 11 位编造号
- 启动 banner 统一 IOTLCM 方块字 + 社区惯例署名
- 移除内部资产:CI 触发器
- Dockerfile 改用公共基础镜像,移除 GOPRIVATE 内网设置
- README 重写(原为 GoFrame 模板占位文案),补 Apache-2.0 LICENSE,
  LF 行尾 + .gitattributes
This commit is contained in:
MiFaZhan
2026-10-23 14:15:47 +08:00
commit 88dfe5c640
482 changed files with 34475 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
package common
import (
"context"
"git.5iot.com/iotlcm-public/iotlcm-openapi/api/common/v1"
)
type ICommonV1 interface {
SimSubscribe(ctx context.Context, req *v1.SimSubscribeReq) (res *v1.SingleRenewRes, err error)
BatchSimSubscribe(ctx context.Context, req *v1.BatchSimSubscribeReq) (res *v1.RenewRes, err error)
SimTrafficCutoff(ctx context.Context, req *v1.SimTrafficCutoffReq) (res *v1.SingleTrafficCutoffRes, err error)
BatchSimTrafficCutoff(ctx context.Context, req *v1.BatchSimTrafficCutoffReq) (res *v1.TrafficCutoffConfigRes, err error)
}
+57
View File
@@ -0,0 +1,57 @@
package v1
import (
"github.com/gogf/gf/v2/frame/g"
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
)
type SimSubscribeReq struct {
g.Meta `path:"/sim-subscribe" method:"POST" tags:"V3 Change API" summary:"Single SIM subscription renewal"`
AppId string `json:"appId" v:"required#appId is required"`
Iccid string `json:"iccid,omitempty"`
Msisdn string `json:"msisdn,omitempty"`
Imsi string `json:"imsi,omitempty"`
PackageId string `json:"packageId" v:"required#packageId is required"`
Validity int `json:"validity" v:"required|min:1#validity is required|validity must be greater than 0"`
Remark string `json:"remark,omitempty"`
}
type BatchSimSubscribeReq struct {
g.Meta `path:"/batch-sim-subscribe" method:"POST" tags:"V3 Change API" summary:"Batch SIM subscription renewal"`
AppId string `json:"appId" v:"required#appId is required"`
Cards []model.CommonRenewCard `json:"cards,omitempty"`
Iccid []string `json:"iccid,omitempty"`
PackageId string `json:"packageId" v:"required#packageId is required"`
Validity int `json:"validity" v:"required|min:1#validity is required|validity must be greater than 0"`
Remark string `json:"remark,omitempty"`
}
type RenewReq struct {
g.Meta `path:"/renew" method:"POST" tags:"V3 Common API" summary:"Renewal compatibility endpoint"`
model.CommonRenewParam
}
type RenewRes struct{ model.CommonRenewRes }
type SingleRenewRes struct{ model.CommonSingleRenewRes }
type TrafficCutoffConfigRes struct {
model.CommonTrafficCutoffConfigRes
}
type SingleTrafficCutoffRes struct {
model.CommonSingleTrafficCutoffRes
}
type SimTrafficCutoffReq struct {
g.Meta `path:"/sim-traffic-cutoff" method:"POST" tags:"V3 Change API" summary:"Single traffic cutoff configuration"`
model.CommonTrafficCutoffSingleParam
}
type BatchSimTrafficCutoffReq struct {
g.Meta `path:"/batch-sim-traffic-cutoff" method:"POST" tags:"V3 Change API" summary:"Batch traffic cutoff configuration"`
model.CommonTrafficCutoffConfigParam
}
type TrafficCutoffConfigReq struct {
g.Meta `path:"/traffic-cutoff-config" method:"POST" tags:"V3 Common API" summary:"Batch traffic cutoff compatibility endpoint"`
model.CommonTrafficCutoffConfigParam
}
+20
View File
@@ -0,0 +1,20 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package old_api
import (
"context"
"git.5iot.com/iotlcm-public/iotlcm-openapi/api/old_api/v1"
)
type IOldApiV1 interface {
CardInfo(ctx context.Context, req *v1.CardInfoReq) (res *v1.CardInfoRes, err error)
SimDataUsage(ctx context.Context, req *v1.SimDataUsageReq) (res *v1.SimDataUsageRes, err error)
SimDataUsageMonthly(ctx context.Context, req *v1.SimDataUsageMonthlyReq) (res *v1.SimDataUsageMonthlyRes, err error)
SimStatus(ctx context.Context, req *v1.SimStatusReq) (res *v1.SimStatusRes, err error)
SimSession(ctx context.Context, req *v1.SimSessionReq) (res *v1.SimSessionRes, err error)
SimCardInfoList(ctx context.Context, req *v1.SimCardInfoListReq) (res *v1.SimCardInfoListRes, err error)
}
+59
View File
@@ -0,0 +1,59 @@
package v1
import (
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
"github.com/gogf/gf/v2/frame/g"
)
type CardInfoReq struct {
g.Meta `path:"/cardInfo" method:"POST" tags:"old_Sim" summary:"查询SIM信息"`
model.SimCardInfoInput
}
type CardInfoRes struct {
model.SimCardInfoOutput
}
type SimDataUsageReq struct {
g.Meta `path:"/simDataUsage" method:"POST" tags:"old_Sim" summary:"查询SIM账期用量"`
model.SimDataUsageOldInput
}
type SimDataUsageRes struct {
model.SimDataUsageOldOutput
}
type SimDataUsageMonthlyReq struct {
g.Meta `path:"/simDataUsageMonthly" method:"POST" tags:"old_Sim" summary:"查询SIM历史用量"`
model.SimDataUsageMonthlyOldInput
}
type SimDataUsageMonthlyRes struct {
model.SimDataUsageMonthlyOldOutput
}
type SimStatusReq struct {
g.Meta `path:"/simStatus" method:"POST" tags:"old_Sim" summary:"查询SIM状态"`
model.SimStatusOldInput
}
type SimStatusRes struct {
model.SimStatusOldOutput
}
type SimSessionReq struct {
g.Meta `path:"/simSession" method:"POST" tags:"old_Sim" summary:"查询SIM会话"`
model.SimStatusOnlineOldInput
}
type SimSessionRes struct {
model.SimStatusOnlineOldOutput
}
type SimCardInfoListReq struct {
g.Meta `path:"/queryCardInfoList" method:"POST" tags:"old_Sim" summary:"查询SIM卡列表"`
model.QueryCardInfoListInput
}
type SimCardInfoListRes = []model.QueryCardInfoListOutput
+26
View File
@@ -0,0 +1,26 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package query
import (
"context"
"git.5iot.com/iotlcm-public/iotlcm-openapi/api/query/v1"
)
type IQueryV1 interface {
QuerySimInfo(ctx context.Context, req *v1.QuerySimInfoReq) (res *v1.QuerySimInfoRes, err error)
QuerySimLimit(ctx context.Context, req *v1.QuerySimLimitReq) (res *v1.QuerySimLimitRes, err error)
QuerySimImei(ctx context.Context, req *v1.QuerySimImeiReq) (res *v1.QuerySimImeiRes, err error)
QuerySimUsage(ctx context.Context, req *v1.QuerySimUsageReq) (res *v1.QuerySimUsageRes, err error)
QuerySimStatus(ctx context.Context, req *v1.QuerySimStatusReq) (res *v1.QuerySimStatusRes, err error)
QueryTrafficCutoffConfig(ctx context.Context, req *v1.QueryTrafficCutoffConfigReq) (res *v1.QueryTrafficCutoffConfigRes, err error)
QueryBatchStatus(ctx context.Context, req *v1.QueryBatchStatusReq) (res *v1.QueryBatchStatusRes, err error)
QuerySimStatusBatch(ctx context.Context, req *v1.QuerySimStatusBatchReq) (res *v1.QuerySimStatusBatchRes, err error)
QuerySimUsageBatch(ctx context.Context, req *v1.QuerySimUsageBatchReq) (res *v1.QuerySimUsageBatchRes, err error)
QuerySimImeiBatch(ctx context.Context, req *v1.QuerySimImeiBatchReq) (res *v1.QuerySimImeiBatchRes, err error)
Token(ctx context.Context, req *v1.TokenReq) (res *v1.TokenRes, err error)
OperatorToken(ctx context.Context, req *v1.OperatorTokenReq) (res *v1.OperatorTokenRes, err error)
}
+97
View File
@@ -0,0 +1,97 @@
package v1
import (
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
"github.com/gogf/gf/v2/frame/g"
)
type QuerySimInfoReq struct {
g.Meta `path:"/sim-info" method:"POST" tags:"V3查询接口" summary:"查询SIM信息"`
model.QuerySimInput
}
type QuerySimInfoRes struct {
model.QuerySimInfoOutput
}
type QuerySimLimitReq struct {
g.Meta `path:"/sim-limit" method:"POST" tags:"V3查询接口" summary:"查询SIM流量限制"`
model.QuerySimInput
}
type QuerySimLimitRes struct {
model.QuerySimLimitOutput
}
type QuerySimImeiReq struct {
g.Meta `path:"/sim-imei" method:"POST" tags:"V3查询接口" summary:"查询SIM IMEI"`
model.QuerySimInput
}
type QuerySimImeiRes struct {
model.QuerySimImeiOutput
}
type QuerySimUsageReq struct {
g.Meta `path:"/sim-usage" method:"POST" tags:"V3查询接口" summary:"查询SIM流量使用"`
model.QuerySimInput
}
type QuerySimUsageRes struct {
model.QuerySimUsageOutput
}
type QuerySimStatusReq struct {
g.Meta `path:"/sim-status" method:"POST" tags:"V3查询接口" summary:"查询SIM卡状态"`
model.QuerySimInput
}
type QuerySimStatusRes struct {
model.QuerySimCardStatusOutput
}
type QueryTrafficCutoffConfigReq struct {
g.Meta `path:"/traffic-cutoff-config" method:"POST" tags:"V3查询接口" summary:"批量查询达量断网配置"`
model.QueryTrafficCutoffConfigParam
}
type QueryTrafficCutoffConfigRes struct {
model.QueryTrafficCutoffConfigOutput
}
type QueryBatchStatusReq struct {
g.Meta `path:"/batch-status" method:"POST" tags:"V3查询接口" summary:"查询批次状态"`
model.QueryBatchStatusParam
}
type QueryBatchStatusRes struct {
model.QueryBatchStatusOutput
}
type QuerySimStatusBatchReq struct {
g.Meta `path:"/sim-status-batch" method:"POST" tags:"V3查询接口" summary:"批量查询SIM卡状态"`
model.QuerySimStatusBatchParam
}
type QuerySimStatusBatchRes struct {
model.QuerySimStatusBatchOutput
}
type QuerySimUsageBatchReq struct {
g.Meta `path:"/sim-usage-batch" method:"POST" tags:"V3查询接口" summary:"批量查询SIM流量使用"`
model.QuerySimUsageBatchParam
}
type QuerySimUsageBatchRes struct {
model.QuerySimUsageBatchOutput
}
type QuerySimImeiBatchReq struct {
g.Meta `path:"/sim-imei-batch" method:"POST" tags:"V3查询接口" summary:"批量查询SIM IMEI"`
model.QuerySimImeiBatchParam
}
type QuerySimImeiBatchRes struct {
model.QuerySimImeiBatchOutput
}
+25
View File
@@ -0,0 +1,25 @@
package v1
import (
"git.5iot.com/iotlcm-public/iotlcm-openapi/internal/model"
"github.com/gogf/gf/v2/frame/g"
)
// 获取Token
type TokenReq struct {
g.Meta `path:"/token" method:"POST" tags:"V3-Token获取" summary:"获取平台API Token"`
model.TokenInputApi
}
type TokenRes struct {
model.TokenOutputApi
}
// 共享运营商token
type OperatorTokenReq struct {
g.Meta `path:"/operator-token" method:"POST" tags:"共享Token" summary:"共享运营商Token(需传入appId+chanKey)"`
model.OperatorTokenInput
}
type OperatorTokenRes struct {
model.OperatorTokenOutput
}