1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package service
-
- import (
- "errors"
- "sws_xcx/models"
-
- "github.com/jinzhu/gorm"
- )
-
- type DeviceService struct {
- rdb *gorm.DB
- wdb *gorm.DB
- }
-
- func NewDeviceService() *DeviceService {
- return &DeviceService{
- rdb: ReadDB(),
- wdb: WriteDB(),
- }
- }
-
- func (s *DeviceService) GetDeviceInfo(id int) (*models.Device, error) {
- var device models.Device
- err := s.rdb.Model(&device).First(&device, id).Error
- if err != nil {
- return nil, err
- }
- return &device, nil
- }
-
- func (s *DeviceService) GetMyDevices(userId uint64) ([]*models.Device, error) {
- var devices []*models.Device
- sql := "select d.* from device as d inner join device_relate as dr on d.id = dr.device_id where dr.user_id = ? and dr.delete_flag = 0"
- err := s.rdb.Raw(sql).Scan(&devices).Error
- if err != nil {
- return nil, err
- }
- return devices, nil
- }
-
- func (s *DeviceService) BindDevice(userId uint64, deviceId uint64) error {
- var device models.Device
- err := s.rdb.Model(&device).Where("id = ? and delete_flag =0", deviceId).First(&device).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return errors.New("设备不存在")
- }
- return err
- }
- dr := &models.DeviceRelate{}
- err = s.rdb.Model(dr).Where("device_id = ?", deviceId).First(dr).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- dr = &models.DeviceRelate{
- UserId: userId,
- DeviceId: deviceId,
- Name: device.DeviceName,
- }
-
- return s.wdb.Model(dr).Create(dr).Error
- }
- return err
- }
-
- if dr.UserId != userId {
- if dr.DeleteFlag == 0 {
- return errors.New("该设备已绑定其他用户")
- } else { //其他用户解绑了设备
- return s.wdb.Model(dr).Update("delete_flag", 0, "user_id", userId).Error
- }
- } else if dr.DeleteFlag == 1 { //直接解绑了该设备 重新绑定
-
- return s.wdb.Model(dr).Update("delete_flag", 0).Error
-
- } else {
- return errors.New("设备已绑定")
- }
-
- }
-
- func (s *DeviceService) UnbindDevice(userId uint64, deviceId uint64) error {
- var device models.Device
- err := s.rdb.Model(&device).Where("id = ? and delete_flag =0", deviceId).First(&device).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- return errors.New("设备不存在")
- }
- return err
- }
-
- dr := &models.DeviceRelate{}
- err = s.rdb.Model(dr).Where("device_id = ? and user_id = ?", deviceId, userId).First(dr).Error
- if err != nil {
- return err
- }
- return s.wdb.Model(dr).Update("delete_flag", 1).Error
- }
|