基于 Echarts + Golang gin 实现的动态实时可视化数据大屏展示范例一

参考这个案例https://blog.csdn.net/lildkdkdkjf/article/details/106571356,手痒,改成Golang版:)

先看效果图:

实现原理:

前端Echarts实现:https://echarts.apache.org/zh/index.html,前端就不贴了,在最后的网盘地址里下载。

后台Golang实现,用https://github.com/gin-gonic/gin启动一个http服务,加载页面。再用https://github.com/zserge/lorca调用本机的Chrome浏览器访问该页面。用https://github.com/astaxie/beego/orm访问数据库,模拟获取数据。

关键代码:

main.go

package main

import (
	"fmt"
	"time"

	"github.com/go-vgo/robotgo"
	"github.com/zserge/lorca"
)

var ui lorca.UI
var loadFinished bool

//模拟刷新数据
func ChangeData() {
	for 1 == 1 {
		time.Sleep(1000)
		change_all_json()
		//db_change_common()
		//db_read_common()
		if loadFinished == true {
			ui.Eval(`
               async_data();
			`)
		}
	}
}

func main() {
	go init_http_server()
	ui, _ = lorca.New(fmt.Sprintf("http://%s:%d", ip, port), "", 1024, 768)

	//记得在html里加<body onload=loadFinished()>
	ui.Bind("loadFinished", func() { loadFinished = true })

	//需要先安装mingw64,http://www.mingw-w64.org/doku.php/download
	robotgo.KeyTap(`f11`) //全屏

	defer ui.Close()

	go ChangeData()
	<-ui.Done()
}

httpserver.go

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
)

var ip string = "localhost"   //监听IP,配置项
var port int = 8815      //监听端口,配置项

func init_http_server() {
	router := gin.Default()
	router.Static("/css", "./css")
	router.Static("/font", "./font")
	router.Static("/images", "./images")
	router.Static("/js", "./js")
	router.Static("/json", "./json")
	router.Static("/picture", "./picture")
	router.LoadHTMLFiles("./index.html")
	router.GET("/", func(c *gin.Context) {
		c.HTML(200, "index.html", nil)
	})
	router.Run(fmt.Sprintf(":%d", port))
}

 database.go

package main

import (
	"fmt"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql" // import your used driver
	"strconv"

	"encoding/json"
)

func init() {
	orm.RegisterDataBase("default", "mysql", "user:password@tcp(ip:3306)/database?charset=utf8", 30)
}

func db_change_common(){
	total_pv := int64(100000)
	total_income := int64(200000)
	start := int64(100000)
	end := int64(400000)

	total_pv = total_pv + RandInt64(start, end)
	total_income = total_income + RandInt64(start, end)
	fmt.Printf("%d\n", total_pv)
	fmt.Printf("%d\n", total_income)

	//更新数据库
	db := orm.NewOrm()
	sql := fmt.Sprintf("update bigscreeen_common set total_pv=%d, total_income = %d ", total_pv, total_income)
	fmt.Println(sql)
	_, err := db.Raw(sql).Exec()
	if err != nil {
		fmt.Printf("err: %s\n", err.Error())
	}else{
		fmt.Println("ok")
	}
}

func db_read_common() {
	db := orm.NewOrm()
	var maps []orm.Params
	var num int64
	num, err := db.Raw("SELECT * FROM bigscreeen_common").Values(&maps)
	if err != nil {
		fmt.Printf("err: %s\n", err.Error())
		return
	}else{
		if num > 0 {
			fmt.Println("ok")
		} else {
			fmt.Println("no data")
			return
		}
	}
    var common Common
    common.Total_pv, _ = strconv.ParseInt((maps[0]["total_pv"]).(string), 10, 64)
	common.Total_income, _ = strconv.ParseInt((maps[0]["total_income"]).(string), 10, 64)
    b_common, _ := json.Marshal(common)
	write_config(common_FILENAME, string(b_common))
}

//func main() {
//	db_change_common()
//	db_read_common()
//}

示例程序在这的“大数据可视化展示”里,包含完整的前端源码。运行GoDataV.exe前记得安装最新的Chrome浏览器,按F11放大缩小。

链接:https://pan.baidu.com/s/1WoBGL42yemaJLu_Plw5blQ 
提取码:gkrm 

需要linux或Mac版的请找作者编译一个。

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
基于golang gin微信点餐小程序的设计与实现需要考虑以下几个方面: 1. 架构设计:可以使用MVC(Model-View-Controller)架构,将代码按功能模块划分成不同的包,便于管理和维护。 2. 数据库设计:根据需求,设计适当的数据库结构,存储菜单信息、用户信息、订单信息等。可以使用关系型数据库如MySQL或非关系型数据库如MongoDB。 3. 用户认证与授权:使用微信小程序的登录功能进行用户认证,获取用户的OpenID等信息。为了保护用户数据安全,可以使用JWT(JSON Web Token)生成访问令牌,并设置权限控制,确保只有授权的用户能够访问相关接口。 4. 页面设计与交互:根据需求设计小程序的首页、菜单页、购物车、订单页等页面,合理安排页面布局和交互逻辑。可以使用小程序自带的模板或自定义组件进行页面开发。 5. 菜单管理:实现菜单的增删改查功能,包括菜品的图片、名称、价格、描述等信息。为了提高用户体验,可以增加搜索和排序等功能。 6. 购物车与订单管理:用户选择菜品后,将菜品添加到购物车,并生成相应的订单。可以实现购物车的增删改查功能,以及订单的支付、取消等功能。 7. 接口设计与实现:根据需求设计合适的API接口,包括菜单管理接口、用户认证接口、购物车接口、订单接口等。使用golanggin框架实现这些接口,并进行参数校验、错误处理等。 8. 部署与测试:将小程序部署到服务器上,并进行测试,确保功能正常运行。可以使用Postman等工具对API接口进行测试,模拟用户操作验证功能是否正确。 基于以上几个方面的设计与实现,可以打造一个基于golang gin的微信点餐小程序,实现用户点餐、下单和支付的功能,提供便捷的餐饮服务。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称6550523

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值