Files
iotlcm/onelink-mock/README.md
T

5.3 KiB
Raw Permalink Blame History

OneLink 挡板服务

基于《中移物联网物联卡能力开放调用参考文档 V26.01.1》实现的本地挡板服务。

功能

  • Go 后端,兼容 /v5/ec/... 和 /ec/... 两种路径。
  • Vue3 管理台,管理多个 appid/password、SIM 卡基础信息、状态和固定流量参数。
  • Token 有效期 3600 秒,支持 refresh=0/1。
  • 不再连接 MySQL,也不再查询 t_sim_card_info。
  • SIM 卡数据由后端一键生成,持久化到本地 SQLite 表 mock_t_sim_card。
  • 月流量固定为 18432 KB,不再按时间自动增长。
  • 支持按入库模板导出 Excel。

数据源

服务使用 SQLite 数据库作为唯一持久化数据源。默认数据库路径:

data/onelink_mock.db

可以通过环境变量覆盖:

BAFFLE_SQLITE_PATH=C:\sqlite\onelink_mock.db

后端通过 GoFrame SQLite 驱动直接访问数据库,不依赖本机安装 sqlite3 命令行工具。

Docker 镜像内会安装 sqlite 命令行工具。

一键生成

管理台顶部可输入生成数量,点击“一键生成”后追加新卡数据。

生成逻辑:

  • 不删除旧卡。
  • 不查询旧卡做重复对比。
  • ICCID/MSISDN/IMSI/IMEI 与生成时间戳和序号相关,降低重复概率。
  • 删除卡只在管理台删卡或业务删除逻辑触发时发生。

固定生成值:

chanKey=channel_yd_mock
cardType=1
upPkgCode=CMIOT-SD-500M-24M-D01
suppliersCode=SUP_CMCC
insertToPlugEnabled=true
carrierTrafficCutoffEnabled=false
hasTestPeriod=true
testPeriodDays=30
hasSilentPeriod=false
silentPeriodDays=
silentPeriodLatestExpiryDate=

流量固定值:

current_month_usage_kb=18432
monthly_usage_kb=18432
daily_usage_kb=614.4
pool_usage_bytes=18874368
growth_per_minute_kb=0
auto_growth_enabled=false

Excel 导出

管理台点击“导出 Excel”会下载当前卡数据,表头顺序为:

ICCID
MSISDN
IMSI
IMEI
通道编号
卡类型
上游套餐编码
供应商编码
上游激活时间
是否贴片转插拔
是否运营商达量断网
协议到期时间
是否有测试期
测试期天数
测试期最晚过期日期
是否有沉默期
沉默期天数
沉默期最晚过期日期

其中:

  • 协议到期时间 为激活日期后 1 年。
  • 测试期最晚过期日期 为激活日期后 30 天。
  • 是否有沉默期=false 时,沉默期天数和截止日期导出为空。

已实现接口

  • ec/get/token
  • ec/query/sim-basic-info
  • ec/query/sim-session
  • ec/query/sim-status
  • ec/query/sim-stop-reason
  • ec/query/sim-frozen-state-info
  • ec/query/sim-apn-session-info
  • ec/query/sim-activated-features-info
  • ec/query/sim-operating-status
  • ec/query/sim-data-diagnosis
  • ec/query/sim-imei
  • ec/query/sim-data-usage-inpool
  • ec/query/sim-data-usage
  • ec/query/sim-data-usage-monthly/batch
  • ec/query/sim-data-usage-daily/batch
  • ec/query/apn-info
  • ec/query/card-bind-status
  • ec/query/on-off-status
  • ec/query/region-limit-status
  • ec/change/sim-status
  • ec/operate/sim-apn-function

Chan-compatible unified APIs (GET and POST):

  • GET|POST /sim/query/sim-basic-info
  • GET|POST /sim/query/sim-session
  • GET|POST /sim/query/sim-status
  • GET|POST /sim/query/sim-status-batch
  • GET|POST /sim/query/sim-card-bind-status
  • GET|POST /sim/query/sim-device-status
  • GET|POST /sim/query/sim-region-limit-status
  • GET|POST /sim/query/sim-imei
  • GET|POST /sim/query/sim-datausage
  • GET|POST /sim/query/sim-datausage-monthly
  • GET|POST /sim/query/sim-datausage-monthly-batch
  • GET|POST /sim/query/sim-datausage-daily
  • GET|POST /sim/query/sim-datausage-daily-batch
  • GET|POST /sim/query/sim-apn-info
  • GET|POST /sim/change/sim-status
  • GET|POST /sim/change/sim-apn

Chan requests use simKeys and reqData; responses are per-SIM arrays with code, message, simKey, and resData. The chan endpoints reuse the same SQLite SIM cards as the OneLink endpoints.

管理接口:

  • GET /api/state
  • POST /api/generate
  • GET /api/cards/export
  • POST /api/appids
  • POST /api/cards
  • DELETE /api/cards

环境变量

变量 必填 说明
BAFFLE_ADDR 否 监听地址,默认 :8080
BAFFLE_SQLITE_PATH 否 SQLite 数据库路径,默认 data/onelink_mock.db

本地启动

1. 启动后端

PowerShell:

$env:BAFFLE_ADDR=":8080"
$env:BAFFLE_SQLITE_PATH="C:\sqlite\onelink_mock.db"
go run .

后端默认监听:

http://127.0.0.1:8080

2. 启动前端

cd frontend
pnpm install --frozen-lockfile
pnpm run dev

前端 dev server 默认监听:

http://127.0.0.1:5173/

Docker 启动

docker compose up -d --build

访问地址:

http://127.0.0.1:18080/onelink-mock/

停止:

docker compose down

默认测试认证

appid=demo_appid
password=demo_password

获取 Token:

http://localhost:8080/v5/ec/get/token?appid=demo_appid&password=demo_password&transid=demo_appid2026070209300000000001

Admin query APIs

GET /api/cards?keyword=<msisdn-or-iccid-or-imsi>&page=1&pageSize=20
GET /api/orders?page=1&pageSize=20

Orders are persisted in the SQLite mock_order table and retain all nine fields after a service restart. Existing mock_t_sim_card data is preserved.