This commit is contained in:
@@ -93,6 +93,9 @@ func (s *Service) List(ctx context.Context, req *dto.ListDeviceRequest) (*dto.Li
|
||||
if req.Status != nil {
|
||||
filters["status"] = *req.Status
|
||||
}
|
||||
if req.ActivationStatus != nil {
|
||||
filters["activation_status"] = *req.ActivationStatus
|
||||
}
|
||||
shopIDs, hasShopIDs := normalizeShopIDs(req.ShopIDs)
|
||||
if hasShopIDs {
|
||||
filters["shop_ids"] = shopIDs
|
||||
@@ -129,14 +132,19 @@ func (s *Service) List(ctx context.Context, req *dto.ListDeviceRequest) (*dto.Li
|
||||
|
||||
shopMap := s.loadShopData(ctx, devices)
|
||||
seriesMap := s.loadSeriesNames(ctx, devices)
|
||||
bindingCounts, err := s.getBindingCounts(ctx, s.extractDeviceIDs(devices))
|
||||
deviceIDs := s.extractDeviceIDs(devices)
|
||||
bindingCounts, err := s.getBindingCounts(ctx, deviceIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
activationStatuses, err := s.deviceStore.GetActivationStatusMap(ctx, deviceIDs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
list := make([]*dto.DeviceResponse, 0, len(devices))
|
||||
for _, device := range devices {
|
||||
item := s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts)
|
||||
item := s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts, activationStatuses)
|
||||
list = append(list, item)
|
||||
}
|
||||
|
||||
@@ -183,8 +191,12 @@ func (s *Service) Get(ctx context.Context, id uint) (*dto.DeviceResponse, error)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
activationStatuses, err := s.deviceStore.GetActivationStatusMap(ctx, []uint{device.ID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts), nil
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts, activationStatuses), nil
|
||||
}
|
||||
|
||||
// GetByDeviceNo 通过设备号获取设备详情
|
||||
@@ -203,8 +215,12 @@ func (s *Service) GetByDeviceNo(ctx context.Context, deviceNo string) (*dto.Devi
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
activationStatuses, err := s.deviceStore.GetActivationStatusMap(ctx, []uint{device.ID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts), nil
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts, activationStatuses), nil
|
||||
}
|
||||
|
||||
// GetByIdentifier 通过任意标识符获取设备详情
|
||||
@@ -224,8 +240,12 @@ func (s *Service) GetByIdentifier(ctx context.Context, identifier string) (*dto.
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
activationStatuses, err := s.deviceStore.GetActivationStatusMap(ctx, []uint{device.ID})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts), nil
|
||||
return s.toDeviceResponse(device, shopMap, seriesMap, bindingCounts, activationStatuses), nil
|
||||
}
|
||||
|
||||
// GetDeviceByIdentifier 通过任意标识符获取设备模型(内部使用,不转为 DTO)
|
||||
@@ -884,31 +904,34 @@ func (s *Service) extractDeviceIDs(devices []*model.Device) []uint {
|
||||
return ids
|
||||
}
|
||||
|
||||
func (s *Service) toDeviceResponse(device *model.Device, shopMap map[uint]string, seriesMap map[uint]string, bindingCounts map[uint]int64) *dto.DeviceResponse {
|
||||
func (s *Service) toDeviceResponse(device *model.Device, shopMap map[uint]string, seriesMap map[uint]string, bindingCounts map[uint]int64, activationStatuses map[uint]int) *dto.DeviceResponse {
|
||||
activationStatus := activationStatuses[device.ID]
|
||||
resp := &dto.DeviceResponse{
|
||||
ID: device.ID,
|
||||
VirtualNo: device.VirtualNo,
|
||||
IMEI: device.IMEI,
|
||||
SN: device.SN,
|
||||
DeviceName: device.DeviceName,
|
||||
DeviceModel: device.DeviceModel,
|
||||
DeviceType: device.DeviceType,
|
||||
MaxSimSlots: device.MaxSimSlots,
|
||||
Manufacturer: device.Manufacturer,
|
||||
BatchNo: device.BatchNo,
|
||||
ShopID: device.ShopID,
|
||||
Status: device.Status,
|
||||
StatusName: s.getDeviceStatusName(device.Status),
|
||||
BoundCardCount: int(bindingCounts[device.ID]),
|
||||
SeriesID: device.SeriesID,
|
||||
ActivatedAt: device.ActivatedAt,
|
||||
CreatedAt: device.CreatedAt,
|
||||
UpdatedAt: device.UpdatedAt,
|
||||
OnlineStatus: device.OnlineStatus,
|
||||
LastOnlineTime: device.LastOnlineTime,
|
||||
SoftwareVersion: device.SoftwareVersion,
|
||||
SwitchMode: device.SwitchMode,
|
||||
LastGatewaySyncAt: device.LastGatewaySyncAt,
|
||||
ID: device.ID,
|
||||
VirtualNo: device.VirtualNo,
|
||||
IMEI: device.IMEI,
|
||||
SN: device.SN,
|
||||
DeviceName: device.DeviceName,
|
||||
DeviceModel: device.DeviceModel,
|
||||
DeviceType: device.DeviceType,
|
||||
MaxSimSlots: device.MaxSimSlots,
|
||||
Manufacturer: device.Manufacturer,
|
||||
BatchNo: device.BatchNo,
|
||||
ShopID: device.ShopID,
|
||||
Status: device.Status,
|
||||
StatusName: constants.GetDeviceStatusName(device.Status),
|
||||
ActivationStatus: activationStatus,
|
||||
ActivationStatusName: constants.GetActivationStatusName(activationStatus),
|
||||
BoundCardCount: int(bindingCounts[device.ID]),
|
||||
SeriesID: device.SeriesID,
|
||||
ActivatedAt: device.ActivatedAt,
|
||||
CreatedAt: device.CreatedAt,
|
||||
UpdatedAt: device.UpdatedAt,
|
||||
OnlineStatus: device.OnlineStatus,
|
||||
LastOnlineTime: device.LastOnlineTime,
|
||||
SoftwareVersion: device.SoftwareVersion,
|
||||
SwitchMode: device.SwitchMode,
|
||||
LastGatewaySyncAt: device.LastGatewaySyncAt,
|
||||
}
|
||||
|
||||
if device.ShopID != nil && *device.ShopID > 0 {
|
||||
@@ -922,21 +945,6 @@ func (s *Service) toDeviceResponse(device *model.Device, shopMap map[uint]string
|
||||
return resp
|
||||
}
|
||||
|
||||
func (s *Service) getDeviceStatusName(status int) string {
|
||||
switch status {
|
||||
case constants.DeviceStatusInStock:
|
||||
return "在库"
|
||||
case constants.DeviceStatusDistributed:
|
||||
return "已分销"
|
||||
case constants.DeviceStatusActivated:
|
||||
return "已激活"
|
||||
case constants.DeviceStatusSuspended:
|
||||
return "已停用"
|
||||
default:
|
||||
return "未知"
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Service) buildAllocationRecords(devices []*model.Device, successDeviceIDs []uint, fromShopID *uint, toShopID uint, operatorID uint, allocationNo, remark string) []*model.AssetAllocationRecord {
|
||||
successIDSet := make(map[uint]bool)
|
||||
for _, id := range successDeviceIDs {
|
||||
@@ -1312,6 +1320,7 @@ func hasDeviceSeriesBindingFilters(req *dto.BatchSetDeviceSeriesBindngRequest) b
|
||||
return req.VirtualNo != "" ||
|
||||
req.DeviceName != "" ||
|
||||
req.Status != nil ||
|
||||
req.ActivationStatus != nil ||
|
||||
req.ShopID != nil ||
|
||||
len(req.ShopIDs) > 0 ||
|
||||
req.FilterSeriesID != nil ||
|
||||
@@ -1355,6 +1364,9 @@ func buildDeviceSeriesBindingFilters(req *dto.BatchSetDeviceSeriesBindngRequest)
|
||||
if req.Status != nil {
|
||||
filters["status"] = *req.Status
|
||||
}
|
||||
if req.ActivationStatus != nil {
|
||||
filters["activation_status"] = *req.ActivationStatus
|
||||
}
|
||||
shopIDs, hasShopIDs := normalizeShopIDs(req.ShopIDs)
|
||||
if hasShopIDs {
|
||||
filters["shop_ids"] = shopIDs
|
||||
|
||||
Reference in New Issue
Block a user