Files
zmkgC/database/db.go
2025-07-07 20:11:59 +08:00

159 lines
5.4 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package database
import (
"gorm.io/gorm"
)
const (
DEFAULTPWD = "123456"
DEFAULTUSR = "admin"
OFFLINE_DB = "database.ydb"
)
var sourceDBMap = map[string]SourceObj{}
/*服务器端MySQL的连接实例*/
var ormIncestance *gorm.DB
/*获取服务端的数据库连接实例*/
func GetORMDBInstance() *gorm.DB {
return ormIncestance
}
func SetORMDBInstance(db *gorm.DB) {
ormIncestance = db
sourceDBMap = make(map[string]SourceObj)
InitTable()
}
type DataSource struct {
Url string //数据请求地址
Type string //数据类型
}
type SourceInfo struct {
MaxLevel int `json:"maximumLevel"`
MinLevel int `json:"minimumLevel"`
West string `json:"west"`
South string `json:"south"`
East string `json:"east"`
North string `json:"north"`
ProFile string `json:"pro_file"`
TilingScheme int `json:"tiling_scheme"` //是否需要加投影
}
type SourceObj struct {
DataSource
DB *gorm.DB //链接对象
Gzip bool //是否压缩
ContentType string //响应头
Info SourceInfo //资源信息
}
// 保存资源连接对象
func SetSourceDB(sourceId string, obj SourceObj) {
sourceDBMap[sourceId] = obj
}
// 获取资源连接对象
func GetSourceDB(sourceId string) SourceObj {
return sourceDBMap[sourceId]
}
type SOURCE struct {
//gorm.Model
//ProjectID string `json:"project_id" gorm:"type:varchar(128);comment:'项目id'" dc:"项目id"`
//SourceName string `json:"source_name" gorm:"type:varchar(128);comment:'资源名称'" dc:"资源名称"`
SourceID string `json:"source_id" gorm:"type:varchar(128);comment:'资源id'" dc:"资源id"`
//SourceType string `json:"source_type" gorm:"type:varchar(128);comment:'资源类型'" dc:"资源类型"`
//IsShow int `json:"is_show" gorm:"type:int(11);comment:'初次渲染的时候是否显示'" dc:"初次渲染的时候是否显示"`
//Detail string `json:"detail" gorm:"comment:'资源的一些自带参数,序列话的字符串'" dc:"资源的一些自带参数,序列话的字符串"`
//PID string `json:"p_id" gorm:"type:varchar(128);comment:'父id'" dc:"父id"`
SourcePath string `json:"source_path" gorm:"type:varchar(512);comments:'资源路径'" dc:"资源路径"`
//LayerIndex int `json:"layer_index" gorm:"type:int(11);comment:'二维图层在地球上的顺序序号'" dc:"二维图层在地球上的顺序序号"`
//TreeIndex int `json:"tree_index" gorm:"type:int(11);comment:'结构树上的顺序序号'" dc:"结构树上的顺序序号"`
//RichText string `json:"rich_text" comments:"富文本内容" dc:"富文本内容"`
}
func (SOURCE) TableName() string {
return "zmkg_gis_sources"
}
type USER struct {
gorm.Model
Username string `json:"username"`
Password string `json:"password"`
}
func InitTable() {
createMarkerTable()
createUserTable()
createGfbInfoTable()
}
func createMarkerTable() {
if !GetORMDBInstance().Migrator().HasTable(&SOURCE{}) {
GetORMDBInstance().Migrator().AutoMigrate(&SOURCE{})
}
}
func createUserTable() {
if !GetORMDBInstance().Migrator().HasTable(&USER{}) {
err := GetORMDBInstance().Migrator().AutoMigrate(&USER{})
if err != nil {
return
}
user := USER{Username: DEFAULTUSR, Password: DEFAULTPWD}
users := []USER{user}
GetORMDBInstance().Create(&users)
}
}
/*光伏板导入*/
type GFB struct {
ProjectID string `json:"project_id" gorm:"type:varchar(128);comment:'项目id'" dc:"项目id"`
PhotovoltaicNumber string `json:"photovoltaic_number"`
PhotovoltaicNumberGis string `json:"photovoltaic_number_gis"`
}
func (GFB) TableName() string {
return "bus_scheduled_weekly_photovoltaic"
}
type FzInfo struct {
gorm.Model
ProjectID string `json:"project_id" gorm:"type:varchar(128);comment:'项目id'" dc:"项目id"`
PhotovoltaicNumber string `json:"photovoltaic_number"gorm:"type:varchar(128);comment:'光伏板编号candela里面的实例名称'" dc:"光伏板编号" `
ZhuangBianHao string `json:"zhuang_bian_hao"gorm:"type:varchar(255);comment:'桩编号'" dc:"桩编号" `
X string `json:"x"gorm:"type:varchar(255);comment:'X'" dc:"X" `
Y string `json:"y"gorm:"type:varchar(255);comment:'Y'" dc:"Y" `
ZTop string `json:"z_top"gorm:"type:varchar(255);comment:'顶部高程'" dc:"顶部高程" `
ZBottom string `json:"z_bottom"gorm:"type:varchar(255);comment:'底部高程'" dc:"底部高程" `
FZName string `json:"fz_name"gorm:"type:varchar(255);comment:'方阵名称'" dc:"方阵名称" `
//ZhuangJianJu string `json:"zhuang_jian_ju"gorm:"type:varchar(255);comment:'桩间距'" dc:"桩间距" `
//ColorNum int `json:"color_num"gorm:"comment:'颜色编号" dc:"颜色编号" `
//Positions string `json:"positions"gorm:"comment:'光伏板桩号坐标'" dc:"光伏板桩号坐标" `
//Params string `json:"params"gorm:"comment:'参数'" dc:"参数" `
}
func (FzInfo) TableName() string {
return "zmkg_fz_infos"
}
func createGfbInfoTable() {
if !GetORMDBInstance().Migrator().HasTable(&FzInfo{}) {
GetORMDBInstance().Migrator().AutoMigrate(&FzInfo{})
}
}
type Project struct {
ID int64 `json:"id"`
}
func (Project) TableName() string {
return "sys_project"
}
func CheckProjectIsExists(project_id int64) bool {
RowsAffected := GetORMDBInstance().Model(&Project{}).Where(&Project{project_id}).Find(&Project{}).RowsAffected
if RowsAffected > 0 {
return true
}
return false
}