Procházet zdrojové kódy

生成较为真实模拟数据

huangyan před 1 měsícem
rodič
revize
4b2feb5fbf

+ 4 - 9
internal/handler/broadcast.go

@@ -4,7 +4,6 @@ import (
 	"city_chips/internal/model"
 	"city_chips/internal/service"
 	"city_chips/pkg/helper/resp"
-	"fmt"
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/viper"
 	"math/rand"
@@ -31,22 +30,18 @@ func (h *BroadcastHandler) GetBroadcast(ctx *gin.Context) {
 	terminal := make(map[string]any)
 	var device []model.DeviceList
 	var termin []model.TerminalLog
-	for i := 0; i < 10; i++ {
-		sprintf := fmt.Sprintf("设备%v", i+1)
+	for i := 0; i < 20; i++ {
 		list := model.DeviceList{
 			Id:          i + 1,
-			DeviceName:  sprintf,
+			DeviceName:  model.GetRandomItem(model.GBDeviceName),
 			UseState:    rand.Intn(2),
 			OnlineState: rand.Intn(2),
 		}
-		device = append(device, list)
-	}
-	for i := 0; i < 10; i++ {
-		sprintf := fmt.Sprintf("设备%v", i+1)
 		log := model.TerminalLog{
-			TerminalLog:  sprintf,
+			TerminalLog:  model.GetRandomItem(model.GBterminalLogs),
 			TerminalTime: time.Now().Format("2006-01-02 15:04:05"),
 		}
+		device = append(device, list)
 		termin = append(termin, log)
 	}
 

+ 18 - 28
internal/handler/hikvision.go

@@ -41,11 +41,10 @@ func (h *HikvisionHandler) GetMonitor(ctx *gin.Context) {
 		LicensePlateRecognition[name] = rand.Intn(100)
 		Blacklist[name] = rand.Intn(100)
 	}
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("监控设备%v", i+1)
+	for i := 0; i < 20; i++ {
 		m2 := model.Monitor{
 			Id:   i + 1,
-			Name: name,
+			Name: model.GetRandomItem(model.MonitorDeviceNames),
 		}
 		monitor = append(monitor, m2)
 	}
@@ -76,10 +75,9 @@ func (h *HikvisionHandler) GetInvade(ctx *gin.Context) {
 		AlarmTrend24Hour[name] = rand.Intn(100)
 	}
 	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("设备%v", i+1)
 		inspection := model.Device{
 			Id:    i + 1,
-			Name:  name,
+			Name:  model.GetRandomItem(model.IntrusionDeviceNames),
 			State: rand.Intn(2),
 			Date:  time.Now().Format("2006-01-02 15:04:05"),
 		}
@@ -111,11 +109,10 @@ func (h *HikvisionHandler) GetElectronicInspections(ctx *gin.Context) {
 		name := fmt.Sprintf("%v时", i+1)
 		Inspect[name] = rand.Intn(100)
 	}
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("设备%v", i+1)
+	for i := 0; i < 20; i++ {
 		m2 := model.Device{
 			Id:    i + 1,
-			Name:  name,
+			Name:  model.GetRandomItem(model.RealInspectionDeviceNames),
 			State: rand.Intn(2),
 			Date:  time.Now().Format("2006-01-02 15:04:05"),
 		}
@@ -123,12 +120,12 @@ func (h *HikvisionHandler) GetElectronicInspections(ctx *gin.Context) {
 	}
 	for i := 0; i < 10; i++ {
 		name := fmt.Sprintf("巡检事件%v", i+1)
-		Location := fmt.Sprintf("位置%v", i+1)
 		inspection := model.RealTimeInspection{
 			Id:       i + 1,
-			Name:     name,
-			Location: Location,
+			Name:     model.GetRandomItem(model.InspectionEvents),
+			Location: model.GetRandomItem(model.InspectionLocations),
 			Event:    name,
+			Date:     time.Now().Format("2006-01-02 15:04:05"),
 		}
 		realTime = append(realTime, inspection)
 	}
@@ -148,13 +145,12 @@ func (h *HikvisionHandler) GetVisitor(ctx *gin.Context) {
 	PrevailingTrends := make(map[string]any)
 	var visitor []model.Visitor
 	for i := 0; i < 24; i++ {
-		name := fmt.Sprintf("人员%v", i+1)
 		address := fmt.Sprintf("%v时", i+1)
 		m2 := model.Visitor{
 			Id:       i + 1,
-			Name:     name,
+			Name:     model.GetRandomItem(model.VisitorNames),
 			State:    rand.Intn(2),
-			Phone:    strconv.Itoa(rand.Intn(1000000000)),
+			Phone:    model.GeneratePhoneNumber(),
 			Location: address,
 			Date:     time.Now().Format("2006-01-02 15:04:05"),
 		}
@@ -189,24 +185,20 @@ func (h *HikvisionHandler) GetPassenger(ctx *gin.Context) {
 	var event []model.RealTimeInspection
 	for i := 0; i < 7; i++ {
 		sprintf := fmt.Sprintf("2025-5-%v", i+1)
-		ranking := fmt.Sprintf("类型-%v", i+1)
-		rankings[ranking] = rand.Intn(100)
+		rankings[model.GetRandomItem(model.CustomerGroups)] = rand.Intn(100)
 		Type1[sprintf] = rand.Intn(100)
 		Type2[sprintf] = rand.Intn(100)
 		Type3[sprintf] = rand.Intn(100)
 		Type4[sprintf] = rand.Intn(100)
 	}
 	for i := 0; i < 3; i++ {
-		sprintf := fmt.Sprintf("客群-%v", i+1)
-		customers[sprintf] = rand.Intn(100)
+		customers[model.GetRandomItem(model.CustomerGroups)] = rand.Intn(100)
 	}
 	for i := 0; i < 10; i++ {
-		sprintf := fmt.Sprintf("安全事件-%v", i+1)
-		location := fmt.Sprintf("位置-%v", i+1)
 		inspection := model.RealTimeInspection{
 			Id:       i + 1,
-			Name:     sprintf,
-			Location: location,
+			Name:     model.GetRandomItem(model.SecurityEvents),
+			Location: model.GetRandomItem(model.LocationsADD),
 			Event:    time.Now().Format("2006-01-02 15:04:05"),
 		}
 		event = append(event, inspection)
@@ -247,18 +239,16 @@ func (h *HikvisionHandler) GetAccess(ctx *gin.Context) {
 		Cumulative[sprintf] = rand.Intn(100)
 	}
 	for i := 0; i < 10; i++ {
-		sprintf := fmt.Sprintf("设备-%v", i+1)
-		location := fmt.Sprintf("位置-%v", i+1)
 		inspection := model.RealTimeInspection{
 			Id:       i + 1,
-			Name:     sprintf,
-			Location: location,
+			Name:     model.GetRandomItem(model.MJDeviceNames),
+			Location: model.GetRandomItem(model.MJlocations),
 			Event:    time.Now().Format("2006-01-02 15:04:05"),
 		}
 		alarm := model.AlarmList{
 			Id:           i + 1,
-			AlarmContent: fmt.Sprintf("设备-%v", i+1),
-			Location:     location,
+			AlarmContent: model.GetRandomItem(model.MJDeviceNames),
+			Location:     model.GetRandomItem(model.MJlocations),
 			State:        rand.Intn(2),
 			Date:         time.Now().Format("2006-01-02 15:04:05"),
 		}

+ 3 - 7
internal/handler/illuminating.go

@@ -36,24 +36,20 @@ func (h *IlluminatingHandler) GetIlluminating(ctx *gin.Context) {
 	var eventList []model.EventList
 	var runAnalyse model.RunAnalyse
 	for i := 0; i < 20; i++ {
-		name := fmt.Sprintf("回路%v", i+1)
 		device := model.IlluminatingDevice{
 			Id:             i + 1,
-			DeviceName:     name,
+			DeviceName:     model.GetRandomItem(model.IlluminatingDeviceNames),
 			SwitchStatus:   rand.Intn(2),
 			OnlinePresence: rand.Intn(2),
 		}
-		illuminatingDevice = append(illuminatingDevice, device)
-	}
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("设备%v", i+1)
 		list := model.EventList{
 			Id:           i + 1,
-			DeviceName:   name,
+			DeviceName:   model.GetRandomItem(model.LightingEvents),
 			DeviceStatus: rand.Intn(2),
 			EventDate:    time.Now().Format("2006-01-02 15:04:05"),
 		}
 		eventList = append(eventList, list)
+		illuminatingDevice = append(illuminatingDevice, device)
 	}
 	for i := 0; i < 7; i++ {
 		date := fmt.Sprintf("2025-5-%v", i+1)

+ 2 - 5
internal/handler/information.go

@@ -4,7 +4,6 @@ import (
 	"city_chips/internal/model"
 	"city_chips/internal/service"
 	"city_chips/pkg/helper/resp"
-	"fmt"
 	"github.com/gin-gonic/gin"
 	"github.com/spf13/viper"
 	"math/rand"
@@ -35,19 +34,17 @@ func (h *InformationHandler) GetInformation(ctx *gin.Context) {
 	var Large []model.LargeController
 	var information []model.InformationCount
 	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("显示大屏%v", i+1)
 		records := model.LargeController{
 			Id:         i + 1,
-			DeviceName: name,
+			DeviceName: model.LargeScreenNames[i],
 			UseState:   rand.Intn(2),
 		}
 		Large = append(Large, records)
 	}
 	for i := 0; i < 4; i++ {
-		name := fmt.Sprintf("类型%v", i+1)
 		count := model.InformationCount{
 			Id:              i + 1,
-			InformationType: name,
+			InformationType: model.InfoTypes[rand.Intn(len(model.InfoTypes)-1)],
 			Vale:            rand.Intn(1000),
 		}
 		information = append(information, count)

+ 14 - 15
internal/handler/intelligentbuildingcontrol.go

@@ -4,7 +4,6 @@ import (
 	"city_chips/internal/model"
 	"city_chips/internal/service"
 	"city_chips/pkg/helper/resp"
-	"fmt"
 	"github.com/spf13/viper"
 	"math/rand"
 	"time"
@@ -30,24 +29,24 @@ func NewIntelligentBuildingControlHandler(
 	}
 }
 
+// 示例:创建一个报警记录
+func generateAlarm() model.AlarmList {
+	return model.AlarmList{
+		Id:           rand.Intn(100),
+		Name:         model.GetRandomItem(model.DeviceNames),
+		State:        rand.Intn(2), // 假设0为正常,1为报警
+		Date:         time.Now().Format("2006-01-02 15:04:05"),
+		Location:     model.GetRandomItem(model.Locations),
+		AlarmContent: model.GetRandomItem(model.AlarmContents),
+	}
+}
 func (h *IntelligentBuildingControlHandler) GetIntelligentBuildingControl(ctx *gin.Context) {
 	m := make(map[string]any)
 	var device []model.AlarmList
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("设备%v", i+1)
-		location := fmt.Sprintf("位置%v", i+1)
-		alarm := fmt.Sprintf("报警时间%v", i+1)
-		inspection := model.AlarmList{
-			Id:           i + 1,
-			Name:         name,
-			State:        rand.Intn(2),
-			Date:         time.Now().Format("2006-01-02 15:04:05"),
-			Location:     location,
-			AlarmContent: alarm,
-		}
-		device = append(device, inspection)
+	for i := 0; i < 20; i++ {
+		alarm := generateAlarm()
+		device = append(device, alarm)
 	}
-
 	m["DeviceCount"] = rand.Intn(100) //设备总数
 	m["StopState"] = rand.Intn(100)   //停止状态
 	m["RunState"] = rand.Intn(100)    //运行状态

+ 5 - 9
internal/handler/property.go

@@ -59,25 +59,21 @@ func (h *PropertyHandler) GetProperty(ctx *gin.Context) {
 		garageCount[date] = garage
 	}
 	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("人员%v", i+1)
-		records := model.AccessRecords{
-			Name:  name,
+		acce := model.AccessRecords{
+			Name:  model.Names[i],
 			State: 0,
 			Date:  time.Now().Format("2006-01-02 15:04:05"),
 		}
-		accessRecords = append(accessRecords, records)
-	}
-
-	for i := 0; i < 10; i++ {
-		name := fmt.Sprintf("贵A%v", i+1)
 		records := model.GarRecords{
-			GarName: name,
+			GarName: model.GenerateLicensePlate(),
 			State:   0,
 			GarImag: "https://img95.699pic.com/photo/40041/1120.jpg_wh860.jpg",
 			Date:    time.Now().Format("2006-01-02 15:04:05"),
 		}
 		garRecords = append(garRecords, records)
+		accessRecords = append(accessRecords, acce)
 	}
+
 	m["HousesCount"] = rand.Intn(100)     //房屋数
 	m["HouseholdCount"] = rand.Intn(100)  //住户数
 	m["DrivewayCount"] = rand.Intn(100)   //车位数

+ 1 - 0
internal/model/hikvision.go

@@ -14,6 +14,7 @@ type RealTimeInspection struct {
 	Name     string `json:"Name"`     //名称
 	Location string `json:"Location"` //位置
 	Event    string `json:"Event"`    //事件-列3
+	Date     string `json:"Date"`
 }
 type Device struct {
 	Id    int    `json:"Id"`

+ 241 - 0
internal/model/mock.go

@@ -0,0 +1,241 @@
+package model
+
+import (
+	"fmt"
+	"math/rand"
+)
+
+// 预先定义好设备名、位置、报警内容
+var DeviceNames = []string{"控制器", "温度传感器", "湿度传感器", "CO2传感器", "光照传感器", "烟雾探测器", "门禁控制器", "电动阀门", "执行机构", "智能电表", "水流量计", "视频监控摄像头", "新风机组控制器", "风机盘管控制器"}
+var Locations = []string{"B1停车场", "1F大厅", "2F办公室A区", "3F会议室", "4F数据中心机房", "5F行政办公区", "6F设备间", "7F技术层", "8F研发部", "9F控制室", "10F高管办公室", "11F员工休息区", "12F屋顶空调机房"}
+var AlarmContents = []string{"通信中断", "温度过高", "CO2浓度超标", "电源异常", "信号丢失", "非法入侵", "门磁状态异常", "数据采集失败", "电机过载", "湿度异常", "烟雾报警", "存储空间不足", "设备离线", "校准失败"}
+
+// 广播系统设备名称
+var GBDeviceName = []string{
+	"主控主机", "数字音频处理器", "功率放大器", "扬声器终端", "消防联动控制器",
+	"分区控制器", "远程控制终端", "背景音乐播放器", "紧急广播麦克风", "网络音频终端",
+}
+
+// 终端日志内容
+var GBterminalLogs = []string{
+	"系统启动成功", "设备已上线", "音频播放测试完成", "分区3扬声器无响应", "功率放大器过热警告",
+	"接收到消防中心紧急广播信号", "背景音乐播放已暂停", "网络连接中断", "设备配置更新成功",
+	"紧急广播已触发", "音频文件加载失败", "麦克风输入信号异常", "设备离线,请检查网络",
+	"音量调节至75%", "定时任务执行完成",
+}
+
+// 姓名列表
+var Names = []string{
+	"张伟", "王芳", "李强", "刘洋", "陈敏",
+	"杨丽", "黄勇", "周杰", "徐娟", "吴斌",
+}
+
+// 大屏名称列表
+var LargeScreenNames = []string{
+	"一楼大厅主显示屏",
+	"二楼导引信息屏",
+	"三楼会议中心显示屏",
+	"四楼候梯厅信息屏",
+	"五楼行政办公区公告屏",
+	"六楼机房监控屏",
+	"七楼研发部展示屏",
+	"八楼高管会议室主屏",
+	"九楼控制室监控大屏",
+	"十楼展厅互动显示终端",
+}
+
+// 信息类型
+var InfoTypes = []string{
+	"紧急通知",
+	"天气预报",
+	"新闻资讯",
+	"活动公告",
+	"失物招领",
+	"寻人启事",
+	"交通信息",
+	"安全提示",
+	"健康小贴士",
+	"楼层导览图",
+	"公司介绍",
+	"产品广告",
+	"会议议程",
+	"欢迎词",
+	"实时数据统计",
+}
+
+// 智能照明设备名称
+var IlluminatingDeviceNames = []string{
+	"大厅主照明回路",
+	"走廊应急照明回路",
+	"办公区普通照明回路",
+	"会议室调光控制模块",
+	"楼梯间感应照明回路",
+	"电梯厅常亮灯组",
+	"地下车库LED照明组",
+	"出入口门厅灯控",
+	"安全出口指示灯回路",
+	"景观装饰灯带控制器",
+}
+
+// 真实照明事件描述
+var LightingEvents = []string{
+	"设备正常开启", "设备已关闭", "通信中断", "灯具故障报警",
+	"过载保护触发", "电压异常警告", "传感器无信号", "自动模式启动",
+	"手动操作执行", "定时任务完成", "夜间节能模式激活", "紧急照明切换成功",
+}
+var MonitorDeviceNames = []string{
+	"前门摄像头",
+	"后门监控器",
+	"停车场入口摄像机",
+	"停车场出口监控",
+	"一楼大厅监控",
+	"二楼走廊摄像头",
+	"电梯内摄像头",
+	"仓库监控点",
+	"办公室监控",
+	"紧急出口摄像头",
+}
+
+// 真实入侵报警系统设备名称列表
+var IntrusionDeviceNames = []string{
+	"前门磁性传感器",
+	"后门磁性传感器",
+	"一楼窗户红外探测器",
+	"二楼走廊运动传感器",
+	"仓库玻璃破碎探测器",
+	"紧急出口门磁开关",
+	"电梯厅摄像头监控",
+	"办公室烟雾探测器",
+	"财务室震动传感器",
+	"数据中心红外对射探测器",
+}
+
+// 真实巡查事件名称列表
+var InspectionEvents = []string{
+	"设备巡检完成",
+	"安全检查无异常",
+	"发现可疑人员",
+	"紧急出口畅通",
+	"灭火器压力正常",
+	"监控系统运行正常",
+	"报警系统测试成功",
+	"门禁系统工作正常",
+	"走廊照明完好",
+	"消防栓未被遮挡",
+}
+
+// 真实巡查位置列表
+var InspectionLocations = []string{
+	"前门入口",
+	"一楼大厅",
+	"二楼办公室",
+	"三楼会议室",
+	"四楼休息区",
+	"五楼机房",
+	"地下停车场",
+	"仓库区域",
+	"紧急疏散通道",
+	"屋顶平台",
+}
+
+// 真实巡更设备名称列表
+var RealInspectionDeviceNames = []string{
+	"智能巡更棒X1",
+	"RFID读卡器RC-200",
+	"红外感应巡检点A3",
+	"无线巡检按钮WB-5",
+	"指纹识别巡检终端F9",
+	"NFC近场通信模块N1",
+	"防水巡检打卡器W10",
+	"蓝牙信标巡检点B1",
+	"二维码巡检标签Q7",
+	"门磁联动巡检器D3",
+}
+
+// 真实访客姓名列表
+var VisitorNames = []string{
+	"张伟", "王芳", "李强", "刘洋", "陈敏",
+	"杨丽", "黄勇", "周杰", "徐娟", "吴斌",
+	"孙磊", "胡静", "朱莉", "何涛", "罗红",
+	"高翔", "林雪", "夏军", "崔健", "马莉",
+	"郭峰", "于娜", "潘龙", "谢芳",
+}
+
+// 安全事件 & 位置
+var SecurityEvents = []string{
+	"人群聚集预警", "出入口异常闯入", "儿童走失事件", "老人跌倒检测",
+	"可疑人员徘徊", "物品遗留警报", "消防通道堵塞", "闸机故障报警",
+	"人脸识别不匹配", "黑名单人员出现",
+}
+var LocationsADD = []string{
+	"一楼主入口", "二楼扶梯口", "三楼休息区", "地下停车场A区",
+	"东侧安检口", "西侧出站口", "中央服务台", "电梯间C座",
+	"男厕入口", "女厕入口",
+}
+
+// 客群类型
+var CustomerGroups = []string{
+	"普通消费者", "潜在客户", "回头客", "高价值客户", "带小孩家庭",
+	"老年顾客", "情侣顾客", "商务人士", "学生群体", "游客群体",
+}
+var MJDeviceNames = []string{
+	"前门读卡器",
+	"后门指纹识别终端",
+	"东侧闸机",
+	"西侧人脸识别终端",
+	"南侧紧急出口按钮",
+	"北侧门禁控制器",
+	"一楼大厅入口控制",
+	"二楼会议室门禁",
+	"三楼休息区入口",
+	"四楼电梯口门禁",
+}
+var MJlocations = []string{
+	"前门",
+	"后门",
+	"东侧通道",
+	"西侧走廊",
+	"南侧紧急出口",
+	"北侧员工入口",
+	"一楼大厅",
+	"二楼会议室",
+	"三楼休息区",
+	"四楼电梯间",
+}
+var MJalarmContents = []string{
+	"读卡失败,请重试。",
+	"未授权访问尝试。",
+	"设备离线,无法连接。",
+	"传感器故障,需维护。",
+	"非法闯入警告!",
+	"门长时间未关闭。",
+	"电池电量低,即将失效。",
+	"门禁控制器异常重启。",
+	"人脸识别失败,权限不足。",
+	"紧急出口被激活。",
+}
+
+// 生成随机电话号码
+func GeneratePhoneNumber() string {
+	return fmt.Sprintf("1%010d", rand.Intn(1000000000))
+}
+
+// 随机生成车牌号
+func GenerateLicensePlate() string {
+	province := []string{"京", "沪", "粤", "浙", "苏", "鲁", "湘", "鄂", "川"}
+	cityLetter := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand.Intn(26)]
+	return fmt.Sprintf("%s%c%s", province[rand.Intn(len(province))], cityLetter, RandomString(5))
+}
+
+// 生成固定长度的随机字符串(数字+字母)
+func RandomString(n int) string {
+	const letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+	b := make([]byte, n)
+	for i := range b {
+		b[i] = letters[rand.Intn(len(letters))]
+	}
+	return string(b)
+}
+func GetRandomItem(items []string) string {
+	return items[rand.Intn(len(items))]
+}