Forráskód Böngészése

获取会议室详情,地点详情,会议室列表

huangyan 2 hónapja
szülő
commit
192d5ebc94

+ 7 - 0
cmd/server/Z_Build.bat

@@ -0,0 +1,7 @@
+cd %~dp0
+set GOARCH=amd64
+set GOOS=linux
+set GOPATH=E:\gopath
+set GO111MODULE=auto
+
+go build -o city_chips main.go

+ 4 - 0
config/local.yml

@@ -48,6 +48,7 @@ hikvision:
     visitorInfo: "/api/v1/visitorInfo/count" #获取今日访客信息包含:今日来访总人数(已签离人数,未签离人数),预约人数
 #会议系统
 conference:
+  pageSize: 9999
   mobile: "14000000000"
   password: "admin@123456"
   baseurl: "http://183.129.224.253:9998/api"
@@ -55,3 +56,6 @@ conference:
   login: "/login"
   roomOps: "/ops/statistic/roomOps" #获取会议概要
   dataAnalysis: "/dataAnalysis" #数据大屏
+  getRoomsByLocationId: "/meetingRoom/getRoomsByLocationId" #获取会议室数据
+  meetingRoom: "/meetingRoom" #会议室详情
+  location: "/location" #地点详情

+ 2 - 2
go.mod

@@ -1,9 +1,8 @@
 module city_chips
 
-go 1.23
+go 1.23.0
 
 require (
-	github.com/bytedance/sonic v1.9.1
 	github.com/gin-gonic/gin v1.9.1
 	github.com/google/uuid v1.3.0
 	github.com/google/wire v0.5.0
@@ -20,6 +19,7 @@ require (
 )
 
 require (
+	github.com/bytedance/sonic v1.9.1 // indirect
 	github.com/cespare/xxhash/v2 v2.2.0 // indirect
 	github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
 	github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect

+ 104 - 1
internal/handler/conference.go

@@ -1,12 +1,15 @@
 package handler
 
 import (
+	"city_chips/internal/model"
 	"city_chips/internal/service"
 	"city_chips/pkg/helper/resp"
+	"encoding/json"
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/viper"
 	"github.com/tidwall/gjson"
 	"net/http"
+	"time"
 )
 
 type ConferenceHandler struct {
@@ -38,6 +41,8 @@ func (h *ConferenceHandler) RoomOps(ctx *gin.Context) {
 	}
 	resp.HandleError(ctx, 1203, "获取会议概要失败", nil)
 }
+
+// DataAnalysis 数据大屏
 func (h *ConferenceHandler) DataAnalysis(ctx *gin.Context) {
 	dataAnalysisurl := h.conf.GetString("conference.baseurl") + h.conf.GetString("conference.dataAnalysis")
 	request, err := h.conferenceService.SendRequest(http.DefaultClient, "GET", dataAnalysisurl, nil)
@@ -46,9 +51,107 @@ func (h *ConferenceHandler) DataAnalysis(ctx *gin.Context) {
 		return
 	}
 	if gjson.Get(string(request), "code").Int() == 0 {
-		s := gjson.Get(string(request), "data").String()
+		s := gjson.Get(string(request), "data").Value()
 		resp.HandleSuccess(ctx, s)
 		return
 	}
 	resp.HandleError(ctx, 1203, "获取数据大屏信息失败", nil)
 }
+
+// GetRoomsByLocationId  获取会议室数据
+func (h *ConferenceHandler) GetRoomsByLocationId(ctx *gin.Context) {
+	getRoomsByLocationId := h.conf.GetString("conference.baseurl") + h.conf.GetString("conference.getRoomsByLocationId")
+	now := time.Now().Format("2006-01-02")
+	m := make(map[string]any)
+	m["date"] = now
+	m["appoint_time"] = ""
+	m["search"] = ""
+	m["locationId"] = []int{}
+	m["capacity"] = []string{}
+	m["deviceType"] = []string{}
+	m["roomType"] = []int{}
+	m["status"] = ""
+	m["page"] = 1
+	m["page_size"] = h.conf.GetInt("conference.pageSize")
+	request, err := h.conferenceService.SendRequest(http.DefaultClient, "POST", getRoomsByLocationId, m)
+	if err != nil {
+		resp.HandleError(ctx, 1203, "获取会议室数据失败", err)
+		return
+	}
+	var rooms model.Room
+	var meetingRoomDetail []model.MeetingRoomDetail
+	if gjson.Get(string(request), "code").Int() == 0 {
+		//s := gjson.Get(string(request), "data").Value()
+		err = json.Unmarshal(request, &rooms)
+		if err != nil {
+			h.logger.Error("json序列化失败")
+			resp.HandleError(ctx, 1203, "json序列化失败", nil)
+			return
+		}
+		for _, v := range rooms.Data.List {
+			//log.Println("会议室id:", v.Id)
+			//log.Println("地点id:", v.LocationId)
+			//log.Println("地点名称:", v.LocationName)
+			//log.Println("企业id:", v.CompanyId)
+			//log.Println("状态:", v.Status)
+			//log.Println("使用:", v.Usage)
+			//log.Println("会议室名称:", v.Name)
+			detail := model.MeetingRoomDetail{
+				Id:           v.Id,
+				LocationId:   v.LocationId,
+				LocationName: v.LocationName,
+				CompanyId:    v.CompanyId,
+				Status:       v.Status,
+				Usage:        v.Usage,
+				Name:         v.Name,
+			}
+			meetingRoomDetail = append(meetingRoomDetail, detail)
+		}
+	} else {
+		resp.HandleError(ctx, 1203, "获取会议室数据失败", string(request))
+		return
+	}
+	resp.HandleSuccess(ctx, meetingRoomDetail)
+}
+
+// MeetingRoomById 会议室详情
+func (h *ConferenceHandler) MeetingRoomById(ctx *gin.Context) {
+	id := ctx.Query("id")
+	if len(id) <= 0 {
+		resp.HandleError(ctx, 1203, "缺少必要参数id", nil)
+		return
+	}
+	dataAnalysisurl := h.conf.GetString("conference.baseurl") + h.conf.GetString("conference.meetingRoom") + "/" + id
+	request, err := h.conferenceService.SendRequest(http.DefaultClient, "GET", dataAnalysisurl, nil)
+	if err != nil {
+		resp.HandleError(ctx, 1203, "获取会议室详情失败", err)
+		return
+	}
+	if gjson.Get(string(request), "code").Int() == 0 {
+		s := gjson.Get(string(request), "data").Value()
+		resp.HandleSuccess(ctx, s)
+		return
+	}
+	resp.HandleError(ctx, 1203, "获取会议室详情失败", string(request))
+}
+
+// Location 地点详情
+func (h *ConferenceHandler) Location(ctx *gin.Context) {
+	id := ctx.Query("id")
+	if len(id) <= 0 {
+		resp.HandleError(ctx, 1203, "缺少必要参数id", nil)
+		return
+	}
+	dataAnalysisurl := h.conf.GetString("conference.baseurl") + h.conf.GetString("conference.location") + "/" + id
+	request, err := h.conferenceService.SendRequest(http.DefaultClient, "GET", dataAnalysisurl, nil)
+	if err != nil {
+		resp.HandleError(ctx, 1203, "获取地点详情失败", err)
+		return
+	}
+	if gjson.Get(string(request), "code").Int() == 0 {
+		s := gjson.Get(string(request), "data").Value()
+		resp.HandleSuccess(ctx, s)
+		return
+	}
+	resp.HandleError(ctx, 1203, "获取地点详情失败", string(request))
+}

+ 219 - 0
internal/model/conference.go

@@ -5,6 +5,225 @@ import "gorm.io/gorm"
 type Conference struct {
 	gorm.Model
 }
+type Rooms struct {
+	Count         int           `json:"count"`
+	Id            int           `json:"id"`
+	LocationId    int           `json:"location_id"`
+	CompanyId     int           `json:"company_id"`
+	Name          string        `json:"name"`
+	Seats         int           `json:"seats"`
+	VrLink        interface{}   `json:"vr_link"`
+	Status        int           `json:"status"`
+	Images        []interface{} `json:"images"`
+	DepartmentIds interface{}   `json:"department_ids"`
+	DeviceIds     struct {
+		Aio         []interface{} `json:"aio"`
+		Screen      []int         `json:"screen"`
+		Camera      []interface{} `json:"camera"`
+		DeviceCheck []string      `json:"device_check"`
+		CentralFile []interface{} `json:"central_file"`
+	} `json:"device_ids"`
+	AuditUsers      string        `json:"audit_users"`
+	FreeDepartments string        `json:"free_departments"`
+	MeetingConflict int           `json:"meeting_conflict"`
+	ForbiddenType   int           `json:"forbidden_type"`
+	ForbiddenInfo   interface{}   `json:"forbidden_info"`
+	CreatedAt       string        `json:"created_at"`
+	UpdatedAt       string        `json:"updated_at"`
+	DeletedAt       interface{}   `json:"deleted_at"`
+	SeatImg         string        `json:"seat_img"`
+	PaperlessIp     string        `json:"paperless_ip"`
+	PaperlessId     int           `json:"paperless_id"`
+	RecordIp        string        `json:"record_ip"`
+	VcsTerminalId   string        `json:"vcs_terminal_id"`
+	LogisticsUser   string        `json:"logistics_user"`
+	OpenAudit       int           `json:"open_audit"`
+	VisibleType     int           `json:"visible_type"`
+	VisibleExternal int           `json:"visible_external"`
+	VisibleUserIds  []interface{} `json:"visible_user_ids"`
+	OpenTimeInfo    []struct {
+		StartTime string   `json:"start_time"`
+		EndTime   string   `json:"end_time"`
+		Val       []string `json:"val"`
+	} `json:"open_time_info"`
+	DeviceNames    string        `json:"device_names"`
+	Scene          []interface{} `json:"scene"`
+	AccessCode     string        `json:"access_code"`
+	Path           string        `json:"path"`
+	DeviceTypeName []interface{} `json:"device_type_name"`
+	DeviceNameArr  []string      `json:"device_name_arr"`
+	RoomTypeName   []string      `json:"room_type_name"`
+	Usage          struct {
+		AppointTime []struct {
+			StartTime string `json:"start_time"`
+			EndTime   string `json:"end_time"`
+		} `json:"appointTime"`
+		OpenTime []struct {
+			StartTime string   `json:"start_time"`
+			EndTime   string   `json:"end_time"`
+			Val       []string `json:"val"`
+		} `json:"openTime"`
+		ForbiddenTime []struct {
+			StartTime string `json:"start_time"`
+			EndTime   string `json:"end_time"`
+		} `json:"forbiddenTime"`
+		SpareTime []struct {
+			StartTime string `json:"start_time"`
+			EndTime   string `json:"end_time"`
+		} `json:"spareTime"`
+		CleanTime []struct {
+			StartTime string `json:"start_time"`
+			EndTime   string `json:"end_time"`
+		} `json:"cleanTime"`
+	} `json:"usage"`
+}
+
+type Datas struct {
+	Id                 int         `json:"id"`
+	LocationId         int         `json:"location_id"`
+	CompanyId          int         `json:"company_id"`
+	Name               string      `json:"name"`
+	Seats              int         `json:"seats"`
+	VrLink             string      `json:"vr_link"`
+	Status             int         `json:"status"`
+	Images             []string    `json:"images"`
+	DepartmentIds      string      `json:"department_ids"`
+	DeviceIds          *string     `json:"device_ids"`
+	TimeLimit          int         `json:"time_limit"`
+	TimeInterval       int         `json:"time_interval"`
+	AuditUsers         string      `json:"audit_users"`
+	FreeDepartments    string      `json:"free_departments"`
+	MeetingConflict    int         `json:"meeting_conflict"`
+	ForbiddenType      int         `json:"forbidden_type"`
+	ForbiddenInfo      string      `json:"forbidden_info"`
+	SignActiveSwitch   int         `json:"sign_active_switch"`
+	SignActiveTime     int         `json:"sign_active_time"`
+	SignActiveUser     string      `json:"sign_active_user"`
+	AutoReleaseSetting string      `json:"auto_release_setting"`
+	CreatedAt          string      `json:"created_at"`
+	UpdatedAt          string      `json:"updated_at"`
+	DeletedAt          interface{} `json:"deleted_at"`
+	SeatImg            string      `json:"seat_img"`
+	PaperlessIp        string      `json:"paperless_ip"`
+	PaperlessId        int         `json:"paperless_id"`
+	LocationName       string      `json:"location_name"`
+	DeviceTypeName     []string    `json:"device_type_name"`
+	RoomTypeName       []string    `json:"room_type_name"`
+	DepartmentName     []string    `json:"department_name"`
+	Usage              Usage       `json:"usage"`
+}
+type Usage struct {
+	AppointTime []struct {
+		EndTime   string `json:"end_time"`
+		StartTime string `json:"start_time"`
+	} `json:"appointTime"`
+	CleanTime []struct {
+		EndTime   string `json:"end_time"`
+		StartTime string `json:"start_time"`
+	} `json:"cleanTime"`
+	ForbiddenTime []struct {
+		EndTime   string `json:"end_time"`
+		StartTime string `json:"start_time"`
+	} `json:"forbiddenTime"`
+	OpenTime []struct {
+		EndTime   string   `json:"end_time"`
+		StartTime string   `json:"start_time"`
+		Val       []string `json:"val,omitempty"`
+	} `json:"openTime"`
+	SpareTime []struct {
+		EndTime   string   `json:"end_time"`
+		StartTime string   `json:"start_time"`
+		Val       []string `json:"val,omitempty"`
+	} `json:"spareTime"`
+}
+type Room struct {
+	Code    int    `json:"code"`
+	Message string `json:"message"`
+	Data    struct {
+		List []struct {
+			AccessCode    string      `json:"access_code"`
+			AuditUsers    string      `json:"audit_users"`
+			CompanyId     int         `json:"company_id"`
+			CreatedAt     string      `json:"created_at"`
+			DeletedAt     interface{} `json:"deleted_at"`
+			DepartmentIds interface{} `json:"department_ids"`
+			DeviceIds     struct {
+				Aio         []interface{} `json:"aio"`
+				Camera      []interface{} `json:"camera,omitempty"`
+				CentralFile interface{}   `json:"central_file"`
+				DeviceCheck []string      `json:"device_check"`
+				Screen      []int         `json:"screen"`
+			} `json:"device_ids"`
+			DeviceNameArr   []string      `json:"device_name_arr"`
+			DeviceNames     string        `json:"device_names"`
+			DeviceTypeName  []interface{} `json:"device_type_name"`
+			ForbiddenInfo   interface{}   `json:"forbidden_info"`
+			ForbiddenType   int           `json:"forbidden_type"`
+			FreeDepartments string        `json:"free_departments"`
+			Id              int           `json:"id"`
+			Images          []string      `json:"images"`
+			LocationId      int           `json:"location_id"`
+			LocationName    string        `json:"location_name"`
+			LogisticsUser   string        `json:"logistics_user"`
+			MeetingConflict int           `json:"meeting_conflict"`
+			Name            string        `json:"name"`
+			OpenAudit       int           `json:"open_audit"`
+			OpenTimeInfo    []struct {
+				EndTime   string   `json:"end_time"`
+				StartTime string   `json:"start_time"`
+				Val       []string `json:"val"`
+			} `json:"open_time_info"`
+			PaperlessId  int         `json:"paperless_id"`
+			PaperlessIp  string      `json:"paperless_ip"`
+			RecordIp     string      `json:"record_ip"`
+			RoomTypeName []string    `json:"room_type_name"`
+			Scene        interface{} `json:"scene"`
+			SeatImg      string      `json:"seat_img"`
+			Seats        int         `json:"seats"`
+			Status       int         `json:"status"`
+			UpdatedAt    string      `json:"updated_at"`
+			Usage        struct {
+				AppointTime []struct {
+					EndTime   string `json:"end_time"`
+					StartTime string `json:"start_time"`
+				} `json:"appointTime"`
+				CleanTime []struct {
+					EndTime   string `json:"end_time"`
+					StartTime string `json:"start_time"`
+				} `json:"cleanTime"`
+				ForbiddenTime []struct {
+					EndTime   string `json:"end_time"`
+					StartTime string `json:"start_time"`
+				} `json:"forbiddenTime"`
+				OpenTime []struct {
+					EndTime   string   `json:"end_time"`
+					StartTime string   `json:"start_time"`
+					Val       []string `json:"val,omitempty"`
+				} `json:"openTime"`
+				SpareTime []struct {
+					EndTime   string   `json:"end_time"`
+					StartTime string   `json:"start_time"`
+					Val       []string `json:"val,omitempty"`
+				} `json:"spareTime"`
+			} `json:"usage"`
+			VcsTerminalId   string        `json:"vcs_terminal_id"`
+			VisibleExternal int           `json:"visible_external"`
+			VisibleType     int           `json:"visible_type"`
+			VisibleUserIds  []interface{} `json:"visible_user_ids"`
+			VrLink          interface{}   `json:"vr_link"`
+		} `json:"list"`
+		Total int `json:"total"`
+	} `json:"data"`
+}
+type MeetingRoomDetail struct {
+	Id           int    `json:"id"`            //会议室id
+	LocationId   int    `json:"location_id"`   //地点id
+	LocationName string `json:"location_name"` //地点名称
+	CompanyId    int    `json:"company_id"`    //企业id
+	Status       int    `json:"status"`        //状态
+	Usage        Usage  `json:"usage"`         //使用时间段
+	Name         string `json:"name"`          //会议室名称
+}
 
 func (m *Conference) TableName() string {
 	return "conference"

+ 1 - 1
internal/repository/conference.go

@@ -2,7 +2,7 @@ package repository
 
 import (
 	"city_chips/internal/model"
-	
+	"context"
 )
 
 type ConferenceRepository interface {

+ 3 - 0
internal/server/http.go

@@ -30,6 +30,9 @@ func NewServerHTTP(logger *log.Logger, accessHandler *handler.AccessControlHandl
 	{
 		Conference.GET("/roomOps", conference.RoomOps)
 		Conference.GET("/dataAnalysis", conference.DataAnalysis)
+		Conference.GET("/getRoomsByLocationId", conference.GetRoomsByLocationId)
+		Conference.GET("/meetingRoomById", conference.MeetingRoomById)
+		Conference.GET("/location", conference.Location)
 	}
 	return r
 }