feat: 新增数据库迁移,重命名 device_no 为 virtual_no,新增 iot_card.virtual_no 和 package.virtual_ratio 字段
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m3s

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-03-14 18:27:28 +08:00
parent b5147d1acb
commit b9c3875c08
77 changed files with 5832 additions and 2393 deletions

View File

@@ -5,7 +5,7 @@ import "time"
type ListDeviceRequest struct {
Page int `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" description:"页码"`
PageSize int `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" description:"每页数量"`
DeviceNo string `json:"device_no" query:"device_no" validate:"omitempty,max=100" maxLength:"100" description:"设备号(模糊查询)"`
VirtualNo string `json:"virtual_no" query:"virtual_no" validate:"omitempty,max=100" maxLength:"100" description:"虚拟号(模糊查询)"`
DeviceName string `json:"device_name" query:"device_name" validate:"omitempty,max=255" maxLength:"255" description:"设备名称(模糊查询)"`
Status *int `json:"status" query:"status" validate:"omitempty,min=1,max=4" minimum:"1" maximum:"4" description:"状态 (1:在库, 2:已分销, 3:已激活, 4:已停用)"`
ShopID *uint `json:"shop_id" query:"shop_id" description:"店铺ID (NULL表示平台库存)"`
@@ -19,7 +19,7 @@ type ListDeviceRequest struct {
type DeviceResponse struct {
ID uint `json:"id" description:"设备ID"`
DeviceNo string `json:"device_no" description:"设备虚拟号/别名"`
VirtualNo string `json:"virtual_no" description:"设备虚拟号/别名"`
IMEI string `json:"imei" description:"设备IMEI"`
SN string `json:"sn" description:"设备序列号"`
DeviceName string `json:"device_name" description:"设备名称"`
@@ -109,9 +109,9 @@ type AllocateDevicesRequest struct {
}
type AllocationDeviceFailedItem struct {
DeviceID uint `json:"device_id" description:"设备ID"`
DeviceNo string `json:"device_no" description:"设备号"`
Reason string `json:"reason" description:"失败原因"`
DeviceID uint `json:"device_id" description:"设备ID"`
VirtualNo string `json:"virtual_no" description:"设备虚拟号"`
Reason string `json:"reason" description:"失败原因"`
}
type AllocateDevicesResponse struct {
@@ -139,9 +139,9 @@ type BatchSetDeviceSeriesBindngRequest struct {
// DeviceSeriesBindngFailedItem 设备系列绑定失败项
type DeviceSeriesBindngFailedItem struct {
DeviceID uint `json:"device_id" description:"设备ID"`
DeviceNo string `json:"device_no" description:"设备号"`
Reason string `json:"reason" description:"失败原因"`
DeviceID uint `json:"device_id" description:"设备ID"`
VirtualNo string `json:"virtual_no" description:"设备虚拟号"`
Reason string `json:"reason" description:"失败原因"`
}
// BatchSetDeviceSeriesBindngResponse 批量设置设备的套餐系列绑定响应
@@ -175,3 +175,17 @@ type SwitchCardRequest struct {
type EmptyResponse struct {
Message string `json:"message,omitempty" description:"提示信息"`
}
// DeviceSuspendResponse 设备停机响应
type DeviceSuspendResponse struct {
SuccessCount int `json:"success_count" description:"成功停机卡数"`
FailCount int `json:"fail_count" description:"失败卡数"`
SkipCount int `json:"skip_count" description:"跳过卡数(未实名或已停机)"`
FailedItems []DeviceSuspendFailItem `json:"failed_items,omitempty" description:"失败详情"`
}
// DeviceSuspendFailItem 设备停机失败项
type DeviceSuspendFailItem struct {
ICCID string `json:"iccid" description:"卡ICCID"`
Reason string `json:"reason" description:"失败原因"`
}