123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package service
- import (
- "city_chips/internal/model"
- "city_chips/internal/repository"
- "encoding/json"
- "errors"
- "github.com/spf13/viper"
- "github.com/zxbit2011/hikvisionOpenAPIGo"
- )
- type HikvisionService interface {
- Hikvision(url string, body map[string]string, timeout int) (hikvisionOpenAPIGo.Result, error)
- }
- func NewHikvisionService(service *Service, hikvisionRepository repository.HikvisionRepository, conf *viper.Viper) HikvisionService {
- return &hikvisionService{
- Service: service,
- hikvisionRepository: hikvisionRepository,
- conf: conf,
- }
- }
- type hikvisionService struct {
- *Service
- hikvisionRepository repository.HikvisionRepository
- conf *viper.Viper
- }
- // Hikvision 海康威视对接
- func (s *hikvisionService) Hikvision(url string, body map[string]string, timeout int) (hikvisionOpenAPIGo.Result, error) {
- config := hikvisionOpenAPIGo.HKConfig{
- Ip: s.conf.GetString("hikvision.Ip"),
- Port: s.conf.GetInt("hikvision.Port"),
- AppKey: s.conf.GetString("hikvision.AppKey"),
- Secret: s.conf.GetString("hikvision.Secret"),
- IsHttps: s.conf.GetBool("hikvision.IsHttps"),
- }
- result, err := config.HttpPost(url, body, timeout)
- return result, err
- }
- // DeviceResource 根据设备类型获取设备资源
- func (s *hikvisionService) DeviceResource(Device string) (error, model.DeviceResource) {
- var deviceResource model.DeviceResource
- m := make(map[string]string)
- m["pageNo"] = "1"
- m["pageSize"] = s.conf.GetString("hikvision.pageSize")
- m["resourceType"] = Device
- hikvision, err := s.Hikvision(s.conf.GetString("hikvision.api.deviceResource"), m, 15)
- if err != nil {
- return errors.New("获取设备资源失败"), deviceResource
- }
- if hikvision.Code != "0" {
- return errors.New("获取设备资源失败"), deviceResource
- }
- marshalString, err := json.Marshal(hikvision)
- if err != nil {
- return errors.New("json序列化失败"), deviceResource
- }
- err = json.Unmarshal(marshalString, &deviceResource)
- if err != nil {
- return errors.New("json反序列化失败"), deviceResource
- }
- return nil, deviceResource
- }
- // GetRegionsRoot 获取根目录资源信息
- func (s *hikvisionService) GetRegionsRoot(Device string) (error, model.RegionsRoot) {
- var regionsRoot model.RegionsRoot
- hikvision, err := s.Hikvision(s.conf.GetString("hikvision.api.regionsRoot"), nil, 15)
- if err != nil {
- return errors.New("获取根目录资源失败"), regionsRoot
- }
- if hikvision.Code != "0" {
- return errors.New("获取根目录资源失败"), regionsRoot
- }
- marshalString, err := json.Marshal(hikvision)
- if err != nil {
- return errors.New("json序列化失败"), regionsRoot
- }
- err = json.Unmarshal(marshalString, ®ionsRoot)
- if err != nil {
- return errors.New("json反序列化失败"), regionsRoot
- }
- return nil, regionsRoot
- }
- // GetRegionsSubRegions 获取子目录资源信息
- func (s *hikvisionService) GetRegionsSubRegions(Device string) (error, model.RegionsSubRegions) {
- var regionsSubRegions model.RegionsSubRegions
- m := make(map[string]string)
- m["pageNo"] = "1"
- m["pageSize"] = s.conf.GetString("hikvision.pageSize")
- m["parentIndexCode"] = "0"
- m["resourceType"] = "0"
- m["cascadeFlag"] = "0"
- hikvision, err := s.Hikvision(s.conf.GetString("hikvision.api.regionsSubRegions"), m, 15)
- if err != nil {
- return errors.New("获取子目录资源信息失败"), regionsSubRegions
- }
- if hikvision.Code != "0" {
- return errors.New("获取子目录资源信息失败"), regionsSubRegions
- }
- marshalString, err := json.Marshal(hikvision)
- if err != nil {
- return errors.New("json序列化失败"), regionsSubRegions
- }
- err = json.Unmarshal(marshalString, ®ionsSubRegions)
- if err != nil {
- return errors.New("json反序列化失败"), regionsSubRegions
- }
- return nil, regionsSubRegions
- }
|