package logic import ( "git.rtzhtech.cn/iss/public-lib/dao" "git.rtzhtech.cn/iss/public-lib/dto" "git.rtzhtech.cn/iss/public-lib/model" "git.rtzhtech.cn/iss/public-lib/svc" "github.com/gogf/gf/v2/util/gconv" "gorm.io/gen/field" ) type DeviceLogic struct { //ctx context.Context SvcCtx *svc.ServiceContext } // NewDeviceLogic // @Description: 设备 // @return *DeviceLogic func NewDeviceLogic() *DeviceLogic { return &DeviceLogic{ //ctx: ctx, SvcCtx: svc.SvcCtx, } } // AddDevice // @Description: 添加 // @receiver l // @param in // @return error func (l *DeviceLogic) AddDevice(in *model.DevDevinfo) error { in.ID = 0 err := l.SvcCtx.DevDevinfo.Create(in) return err } //func (l *DeviceLogic) AddDevice2(in *model.DevDevinfo) error { // m := gconv.Map(in) // err := l.SvcCtx.DevDevinfo.Base.Replace(m) // return err //} // DelDevice // @Description: 删除 // @receiver l // @param deviceId // @return error func (l *DeviceLogic) DelDevice(deviceId int32) error { do := l.SvcCtx.DevDevinfo _devMpinfo := l.SvcCtx.DevMpinfo _devCpinfo := l.SvcCtx.DevCpinfo mpInfoLogic := NewMpInfoLogic() cpInfoLogic := NewCpInfoLogic() //删除测点 var mpId []int64 _devMpinfo.Select(_devMpinfo.Mpid).Where(_devMpinfo.Deviceid.Eq(deviceId)).Scan(&mpId) for _, v := range mpId { mpInfoLogic.DelMpInfo(v) } //删除动作点 var cpId []int64 _devCpinfo.Select(_devCpinfo.Cpid).Where(_devCpinfo.Deviceid.Eq(deviceId)).Scan(&cpId) for _, v := range cpId { cpInfoLogic.DelCpInfo(v) } _, err := do.Where(do.Deviceid.Eq(deviceId)).Delete() return err } // ModifyDevice // @Description: 修改 // @receiver l // @param in // @param fields 更新字段,当field为null时,更新in的全部字段 // @return error func (l *DeviceLogic) ModifyDevice(in *model.DevDevinfo, fields ...string) error { do := l.SvcCtx.DevDevinfo var err error _do := do.Omit(do.ID).Where(do.Deviceid.Eq(in.Deviceid)) if fields == nil { m := gconv.Map(in) _, err = _do.Updates(m) return err } var fieldList []field.Expr for _, v := range fields { _f, ok := do.GetFieldByName(v) if ok { fieldList = append(fieldList, _f) } } _, err = _do.Select(fieldList...).Updates(in) return err } func (l *DeviceLogic) getDeviceCond(req *dto.GetDeviceReq) *dao.Condition { _dao := l.SvcCtx.DevDevinfo cond := NewCondition(&req.LimitPage) if req.AppId > 0 { cond.Where[_dao.Appid.String()] = req.AppId } if req.DeviceName != "" { cond.Where[_dao.Devicename.String()+" like ?"] = "%" + req.DeviceName + "%" } return cond } // GetDeviceInfo // @Description: 分页查询 // @receiver l // @param where 查询条件 // @param page // @param limit // @return []*model.DevDevinfo // @return error func (l *DeviceLogic) GetDeviceInfo(req *dto.GetDeviceReq) (*dto.GetDeviceResp, error) { cond := l.getDeviceCond(req) resp := &dto.GetDeviceResp{} err := l.SvcCtx.DevDevinfo.Base.Find(cond, &resp.List) if err != nil { return nil, err } err = l.SvcCtx.DevDevinfo.Base.Count(cond, &resp.Total) return resp, err } // GetDeviceCount // @Description:查询满足条件的总数 // @receiver l // @param where 查询条件 // @return int64 // @return error func (l *DeviceLogic) GetDeviceCount(req *dto.GetDeviceReq) (int64, error) { cond := l.getDeviceCond(req) var count int64 err := l.SvcCtx.DevDevinfo.Base.Count(cond, &count) if err != nil { return 0, err } return count, err }