Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
- 新增 GET /api/admin/devices/by-imei/:imei 接口,支持通过设备号查询设备详情 - 新增 GET /api/admin/iot-cards/by-iccid/:iccid 接口,支持通过ICCID查询单卡详情 - 添加对应的 Service 层方法和 Handler - 更新 OpenAPI 文档 - 添加集成测试并修复测试环境配置(使用环境变量) - 归档已完成的 OpenSpec 变更记录 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
125 lines
6.7 KiB
Go
125 lines
6.7 KiB
Go
package dto
|
|
|
|
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:"设备号(模糊查询)"`
|
|
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表示平台库存)"`
|
|
BatchNo string `json:"batch_no" query:"batch_no" validate:"omitempty,max=100" maxLength:"100" description:"批次号"`
|
|
DeviceType string `json:"device_type" query:"device_type" validate:"omitempty,max=50" maxLength:"50" description:"设备类型"`
|
|
Manufacturer string `json:"manufacturer" query:"manufacturer" validate:"omitempty,max=255" maxLength:"255" description:"制造商(模糊查询)"`
|
|
CreatedAtStart *time.Time `json:"created_at_start" query:"created_at_start" description:"创建时间起始"`
|
|
CreatedAtEnd *time.Time `json:"created_at_end" query:"created_at_end" description:"创建时间结束"`
|
|
}
|
|
|
|
type DeviceResponse struct {
|
|
ID uint `json:"id" description:"设备ID"`
|
|
DeviceNo string `json:"device_no" description:"设备号"`
|
|
DeviceName string `json:"device_name" description:"设备名称"`
|
|
DeviceModel string `json:"device_model" description:"设备型号"`
|
|
DeviceType string `json:"device_type" description:"设备类型"`
|
|
MaxSimSlots int `json:"max_sim_slots" description:"最大插槽数"`
|
|
Manufacturer string `json:"manufacturer" description:"制造商"`
|
|
BatchNo string `json:"batch_no" description:"批次号"`
|
|
ShopID *uint `json:"shop_id,omitempty" description:"店铺ID"`
|
|
ShopName string `json:"shop_name,omitempty" description:"店铺名称"`
|
|
Status int `json:"status" description:"状态 (1:在库, 2:已分销, 3:已激活, 4:已停用)"`
|
|
StatusName string `json:"status_name" description:"状态名称"`
|
|
BoundCardCount int `json:"bound_card_count" description:"已绑定卡数量"`
|
|
ActivatedAt *time.Time `json:"activated_at,omitempty" description:"激活时间"`
|
|
CreatedAt time.Time `json:"created_at" description:"创建时间"`
|
|
UpdatedAt time.Time `json:"updated_at" description:"更新时间"`
|
|
}
|
|
|
|
type ListDeviceResponse struct {
|
|
List []*DeviceResponse `json:"list" description:"设备列表"`
|
|
Total int64 `json:"total" description:"总数"`
|
|
Page int `json:"page" description:"当前页码"`
|
|
PageSize int `json:"page_size" description:"每页数量"`
|
|
TotalPages int `json:"total_pages" description:"总页数"`
|
|
}
|
|
|
|
type GetDeviceRequest struct {
|
|
ID uint `path:"id" description:"设备ID" required:"true"`
|
|
}
|
|
|
|
type GetDeviceByIMEIRequest struct {
|
|
DeviceNo string `path:"imei" description:"设备号(IMEI)" required:"true"`
|
|
}
|
|
|
|
type DeleteDeviceRequest struct {
|
|
ID uint `path:"id" description:"设备ID" required:"true"`
|
|
}
|
|
|
|
type ListDeviceCardsRequest struct {
|
|
ID uint `path:"id" description:"设备ID" required:"true"`
|
|
}
|
|
|
|
type DeviceCardBindingResponse struct {
|
|
ID uint `json:"id" description:"绑定记录ID"`
|
|
SlotPosition int `json:"slot_position" description:"插槽位置 (1-4)"`
|
|
IotCardID uint `json:"iot_card_id" description:"IoT卡ID"`
|
|
ICCID string `json:"iccid" description:"ICCID"`
|
|
MSISDN string `json:"msisdn,omitempty" description:"接入号"`
|
|
CarrierName string `json:"carrier_name,omitempty" description:"运营商名称"`
|
|
Status int `json:"status" description:"卡状态 (1:在库, 2:已分销, 3:已激活, 4:已停用)"`
|
|
BindTime *time.Time `json:"bind_time,omitempty" description:"绑定时间"`
|
|
}
|
|
|
|
type ListDeviceCardsResponse struct {
|
|
Bindings []*DeviceCardBindingResponse `json:"bindings" description:"绑定列表"`
|
|
}
|
|
|
|
type BindCardToDeviceRequest struct {
|
|
ID uint `path:"id" description:"设备ID" required:"true"`
|
|
IotCardID uint `json:"iot_card_id" validate:"required,min=1" required:"true" minimum:"1" description:"IoT卡ID"`
|
|
SlotPosition int `json:"slot_position" validate:"required,min=1,max=4" required:"true" minimum:"1" maximum:"4" description:"插槽位置 (1-4)"`
|
|
}
|
|
|
|
type BindCardToDeviceResponse struct {
|
|
BindingID uint `json:"binding_id" description:"绑定记录ID"`
|
|
Message string `json:"message" description:"提示信息"`
|
|
}
|
|
|
|
type UnbindCardFromDeviceRequest struct {
|
|
ID uint `path:"id" description:"设备ID" required:"true"`
|
|
CardID uint `path:"cardId" description:"IoT卡ID" required:"true"`
|
|
}
|
|
|
|
type UnbindCardFromDeviceResponse struct {
|
|
Message string `json:"message" description:"提示信息"`
|
|
}
|
|
|
|
type AllocateDevicesRequest struct {
|
|
TargetShopID uint `json:"target_shop_id" validate:"required,min=1" required:"true" minimum:"1" description:"目标店铺ID"`
|
|
DeviceIDs []uint `json:"device_ids" validate:"required,min=1,max=100" required:"true" minItems:"1" maxItems:"100" description:"设备ID列表"`
|
|
Remark string `json:"remark" validate:"omitempty,max=500" maxLength:"500" description:"备注"`
|
|
}
|
|
|
|
type AllocationDeviceFailedItem struct {
|
|
DeviceID uint `json:"device_id" description:"设备ID"`
|
|
DeviceNo string `json:"device_no" description:"设备号"`
|
|
Reason string `json:"reason" description:"失败原因"`
|
|
}
|
|
|
|
type AllocateDevicesResponse struct {
|
|
SuccessCount int `json:"success_count" description:"成功数量"`
|
|
FailCount int `json:"fail_count" description:"失败数量"`
|
|
FailedItems []AllocationDeviceFailedItem `json:"failed_items" description:"失败详情列表"`
|
|
}
|
|
|
|
type RecallDevicesRequest struct {
|
|
DeviceIDs []uint `json:"device_ids" validate:"required,min=1,max=100" required:"true" minItems:"1" maxItems:"100" description:"设备ID列表"`
|
|
Remark string `json:"remark" validate:"omitempty,max=500" maxLength:"500" description:"备注"`
|
|
}
|
|
|
|
type RecallDevicesResponse struct {
|
|
SuccessCount int `json:"success_count" description:"成功数量"`
|
|
FailCount int `json:"fail_count" description:"失败数量"`
|
|
FailedItems []AllocationDeviceFailedItem `json:"failed_items" description:"失败详情列表"`
|
|
}
|