| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package parking
- import (
- "errors"
- "server/dao"
- "server/global"
- "server/model/parking/request"
- )
- type deviceService struct{}
- func NewDeviceService() *deviceService {
- return &deviceService{}
- }
- // CreateDevice 创建设备
- func (s *deviceService) CreateDevice(req request.DeviceCreate) error {
- // 检查设备编码是否已存在
- var existingDevice dao.Device
- result := global.GVA_DB.Where("device_code = ?", req.DeviceCode).First(&existingDevice)
- if result.RowsAffected > 0 {
- return errors.New("设备编码已存在")
- }
- device := dao.Device{
- DeviceCode: req.DeviceCode,
- DeviceName: req.DeviceName,
- DeviceType: req.DeviceType,
- IPAddress: req.IPAddress,
- Port: req.Port,
- Status: "offline", // 初始状态为离线
- Description: req.Description,
- }
- return global.GVA_DB.Create(&device).Error
- }
- // UpdateDevice 更新设备
- func (s *deviceService) UpdateDevice(req request.DeviceUpdate) error {
- var device dao.Device
- result := global.GVA_DB.First(&device, req.ID)
- if result.RowsAffected == 0 {
- return errors.New("设备不存在")
- }
- // 检查设备编码是否被其他设备使用
- var existingDevice dao.Device
- result = global.GVA_DB.Where("device_code = ? AND id != ?", req.DeviceCode, req.ID).First(&existingDevice)
- if result.RowsAffected > 0 {
- return errors.New("设备编码已被其他设备使用")
- }
- device.DeviceCode = req.DeviceCode
- device.DeviceName = req.DeviceName
- device.DeviceType = req.DeviceType
- device.IPAddress = req.IPAddress
- device.Port = req.Port
- device.Description = req.Description
- return global.GVA_DB.Save(&device).Error
- }
- // GetDeviceByID 根据ID获取设备
- func (s *deviceService) GetDeviceByID(id uint) (dao.Device, error) {
- var device dao.Device
- result := global.GVA_DB.First(&device, id)
- if result.RowsAffected == 0 {
- return dao.Device{}, errors.New("设备不存在")
- }
- return device, nil
- }
- // GetDeviceByCode 根据编码获取设备
- func (s *deviceService) GetDeviceByCode(code string) (dao.Device, error) {
- var device dao.Device
- result := global.GVA_DB.Where("device_code = ?", code).First(&device)
- if result.RowsAffected == 0 {
- return dao.Device{}, errors.New("设备不存在")
- }
- return device, nil
- }
- // ListDevices 获取设备列表
- func (s *deviceService) ListDevices(req request.DeviceQuery) (int64, []dao.Device, error) {
- var devices []dao.Device
- var total int64
- query := global.GVA_DB.Model(&dao.Device{})
- if req.DeviceCode != "" {
- query = query.Where("device_code LIKE ?", "%"+req.DeviceCode+"%")
- }
- if req.DeviceName != "" {
- query = query.Where("device_name LIKE ?", "%"+req.DeviceName+"%")
- }
- if req.DeviceType != "" {
- query = query.Where("device_type = ?", req.DeviceType)
- }
- if req.Status != "" {
- query = query.Where("status = ?", req.Status)
- }
- // 计算总数
- query.Count(&total)
- // 分页查询
- offset := (req.Page - 1) * req.PageSize
- result := query.Offset(offset).Limit(req.PageSize).Find(&devices)
- if result.Error != nil {
- return 0, nil, result.Error
- }
- return total, devices, nil
- }
- // DeleteDevice 删除设备
- func (s *deviceService) DeleteDevice(id uint) error {
- result := global.GVA_DB.Delete(&dao.Device{}, id)
- if result.RowsAffected == 0 {
- return errors.New("设备不存在")
- }
- return result.Error
- }
- // UpdateDeviceStatus 更新设备状态
- func (s *deviceService) UpdateDeviceStatus(id uint, status string) error {
- var device dao.Device
- result := global.GVA_DB.First(&device, id)
- if result.RowsAffected == 0 {
- return errors.New("设备不存在")
- }
- device.Status = status
- return global.GVA_DB.Save(&device).Error
- }
|