158 lines
3.0 KiB
Go
158 lines
3.0 KiB
Go
package model
|
|
|
|
import (
|
|
"fmt"
|
|
"git.hpds.cc/Component/logging"
|
|
"github.com/go-redis/redis"
|
|
_ "github.com/go-sql-driver/mysql"
|
|
"go.uber.org/zap"
|
|
"hpds-iot-web/config"
|
|
"os"
|
|
"time"
|
|
"xorm.io/xorm"
|
|
"xorm.io/xorm/dialects"
|
|
)
|
|
|
|
type Statistics struct {
|
|
Total int64
|
|
}
|
|
|
|
var (
|
|
DB *xorm.Engine
|
|
Redis *redis.Client
|
|
)
|
|
|
|
func New(driveName, dsn string, showSql bool, logger *logging.Logger) {
|
|
DB, _ = NewDbConnection(driveName, dsn)
|
|
DB.ShowSQL(showSql)
|
|
DB.Dialect().SetQuotePolicy(dialects.QuotePolicyReserved)
|
|
err := DB.Sync2(
|
|
&Brand{},
|
|
&Dataset{},
|
|
&DatasetDetail{},
|
|
&DatasetOperationLog{},
|
|
&DetectionTask{},
|
|
&Device{},
|
|
&DeviceType{},
|
|
&Disease{},
|
|
&DiseaseType{},
|
|
&FileManager{},
|
|
&Gnss{},
|
|
&LabelFile{},
|
|
&MatterAttribute{},
|
|
&MatterCategory{},
|
|
&MatterEvent{},
|
|
&MatterEventParams{},
|
|
&MatterModel{},
|
|
&MatterService{},
|
|
&MatterServiceParams{},
|
|
&MatterVersion{},
|
|
&Model{},
|
|
&ModelVersion{},
|
|
&MultiLevelPlatform{},
|
|
&Node{},
|
|
&NodeState{},
|
|
&IssueModel{},
|
|
&OriginalData{},
|
|
&Owner{},
|
|
&Project{},
|
|
&ProjectResult{},
|
|
&SystemMenu{},
|
|
&OperationLog{},
|
|
&SystemRoleMenu{},
|
|
&SystemRoleRoute{},
|
|
&SystemRole{},
|
|
&SystemUser{},
|
|
&SystemUserRole{},
|
|
&Task{},
|
|
&TaskLog{},
|
|
&TaskResult{},
|
|
&TrainingDataset{},
|
|
&TrainingDatasetDetail{},
|
|
&TrainTask{},
|
|
&TrainTaskLog{},
|
|
&TrainTaskResult{},
|
|
)
|
|
if err != nil {
|
|
logger.Error("同步数据库表结构", zap.Error(err))
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
func NewDbConnection(driveName, dsn string) (db *xorm.Engine, err error) {
|
|
db, err = xorm.NewEngine(driveName, dsn)
|
|
if err != nil {
|
|
zap.L().Error("创建数据库连接", zap.Error(err))
|
|
os.Exit(-1)
|
|
}
|
|
db.SetMaxOpenConns(300)
|
|
return
|
|
}
|
|
|
|
func NewCache(c config.CacheConfig) {
|
|
Redis = redis.NewClient(&redis.Options{
|
|
Addr: fmt.Sprintf("%s:%d", c.Host, c.Port),
|
|
Password: c.Pass, // no password set
|
|
DB: c.DB, // use default DB
|
|
PoolSize: c.PoolSize, // Redis连接池大小
|
|
MaxRetries: 3, // 最大重试次数
|
|
IdleTimeout: 10 * time.Second, // 空闲链接超时时间
|
|
})
|
|
pong, err := Redis.Ping().Result()
|
|
if err == redis.Nil {
|
|
zap.L().Error("访问Redis异常", zap.Error(fmt.Errorf("redis.Nil")))
|
|
} else if err != nil {
|
|
zap.L().Error("访问Redis异常", zap.Error(err))
|
|
} else {
|
|
zap.L().Info("Redis连接成功", zap.String("pong", pong))
|
|
}
|
|
}
|
|
|
|
func GetTrainCategory(categoryId int) string {
|
|
switch categoryId {
|
|
case 1:
|
|
return "train"
|
|
case 2:
|
|
return "val"
|
|
case 3:
|
|
return "test"
|
|
}
|
|
return "other"
|
|
}
|
|
|
|
func GetBizType(categoryId int) string {
|
|
switch categoryId {
|
|
case 1:
|
|
return "道路"
|
|
case 2:
|
|
return "桥梁"
|
|
case 3:
|
|
return "隧道"
|
|
case 4:
|
|
return "边坡"
|
|
}
|
|
return "其他"
|
|
}
|
|
|
|
func GetFileType(categoryId int) string {
|
|
switch categoryId {
|
|
case 1:
|
|
return "图片"
|
|
case 2:
|
|
return "视频"
|
|
case 3:
|
|
return "雷达图谱"
|
|
}
|
|
return "其他"
|
|
}
|
|
|
|
func GetLabelType(typeId int) string {
|
|
switch typeId {
|
|
case 1:
|
|
return "有病害"
|
|
case 2:
|
|
return "无病害"
|
|
}
|
|
return "其他分类"
|
|
}
|