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 { *Handler conferenceService service.ConferenceService conf *viper.Viper } func NewConferenceHandler(handler *Handler, conferenceService service.ConferenceService, conf *viper.Viper) *ConferenceHandler { return &ConferenceHandler{ Handler: handler, conferenceService: conferenceService, conf: conf, } } // RoomOps 会议室运维概览统计数据 func (h *ConferenceHandler) RoomOps(ctx *gin.Context) { roomOpsurl := h.conf.GetString("conference.baseurl") + h.conf.GetString("conference.roomOps") request, err := h.conferenceService.SendRequest(http.DefaultClient, "GET", roomOpsurl, nil) if err != nil { resp.HandleError(ctx, 1203, "获取会议概要失败", nil) return } if gjson.Get(string(request), "code").Int() == 0 { s := gjson.Get(string(request), "data").String() resp.HandleSuccess(ctx, s) return } 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) if err != nil { resp.HandleError(ctx, 1203, "获取数据大屏信息失败", nil) 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, "获取数据大屏信息失败", 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)) }