123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- 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) GetDeviceList(pageNum int, pageSize int, deviceType string) (devices []*models.Device, total int, err error) {
-
- offset := (pageNum - 1) * pageSize
- db := s.rdb.Model(&models.Device{}).Where("1=1")
-
- if deviceType != "" {
- db = db.Where("device_type = ?", deviceType)
- }
- err = db.Count(&total).Offset(offset).Limit(pageSize).Find(&devices).Error
- return
- }
-
- func (s *DeviceService) GetDeviceList1(pageNum int, pageSize int, deviceType string) (devices []*models.DeviceVO, total int, err error) {
- offset := (pageNum - 1) * pageSize
- sql := "select a.*,b.batch_num ,b.production_date ,b.expire_date ,b.register_num ,v.name as vendor_name,v.address ,v.contact ,v.production_license ,v.production_corporate ,v.production_address from device as a inner join device_batch as b on a.batch_number =b.id inner join vendor v on b.vendor_id =v.id where 1=1"
- dbc := s.rdb.Model(&models.Device{})
- if deviceType != "" {
- dbc = dbc.Where("device_type = ?", deviceType)
- sql = sql + " and a.device_type = ?"
- }
- err = dbc.Count(&total).Error
- if err != nil {
- return
- }
- db := s.rdb.Raw(sql)
- if deviceType != "" {
- db = s.rdb.Raw(sql, deviceType)
- }
- err = db.Offset(offset).Limit(pageSize).Find(&devices).Error
- return
- }
-
- func (s *DeviceService) GetDeviceInfo1(id int) (models.DeviceVO, error) {
- var device models.DeviceVO
- sql := "select a.*,b.batch_num ,b.production_date ,b.expire_date ,b.register_num ,v.name as vendor_name,v.address ,v.contact ,v.production_license ,v.production_corporate ,v.production_address from device as a inner join device_batch as b on a.batch_number =b.id inner join vendor v on b.vendor_id =v.id where a.id=? "
-
- err := s.rdb.Raw(sql, id).First(&device).Error
- if err == gorm.ErrRecordNotFound {
- err = nil
- }
- return device, err
- }
-
- func (s *DeviceService) GetDeviceInfo(id int) (models.Device, error) {
- var device models.Device
- err := s.rdb.Model(&device).First(&device, id).Error
- if err == gorm.ErrRecordNotFound {
- err = nil
- }
- return device, err
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- func (s *DeviceService) GetDeviceByNo(serialno string) (models.Device, error) {
- var device models.Device
- err := s.rdb.Model(&device).Where("serialno = ?", serialno).First(&device).Error
- if err == gorm.ErrRecordNotFound {
- err = nil
- }
- return device, err
- }
-
- 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, userId).Scan(&devices).Error
- if err != nil {
- return nil, err
- }
- return devices, nil
- }
-
- func (s *DeviceService) BindDevice(userId uint64, qrcode string) error {
- var device models.Device
- err := s.rdb.Model(&device).Where("qr_code = ? and delete_flag =0", qrcode).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 = ?", device.Id).First(dr).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- dr = &models.DeviceRelate{
- UserId: userId,
- DeviceId: device.Id,
- 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).Updates(map[string]interface{}{"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) BindDeviceById(userId, 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 = ?", device.Id).First(dr).Error
- if err != nil {
- if err == gorm.ErrRecordNotFound {
- dr = &models.DeviceRelate{
- UserId: userId,
- DeviceId: device.Id,
- 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).Updates(map[string]interface{}{"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).Where("id=?", dr.Id).Update("delete_flag", 1).Error
- }
-
- func (s *DeviceService) CreateDeviceMessageLog(log models.DeviceMessageLog) error {
- return s.wdb.Model(&log).Create(&log).Error
- }
-
- func (s *DeviceService) GetDeviceRelateByDeviceId(deviceId uint64) (*models.DeviceRelate, error) {
- dr := &models.DeviceRelate{}
- err := s.rdb.Model(dr).Where("device_id = ?", deviceId).First(dr).Error
- if err != nil && err != gorm.ErrRecordNotFound {
- return nil, err
- }
- return dr, nil
- }
|