Merge branch 'lichang' into lite

This commit is contained in:
TsMask
2025-03-06 18:03:58 +08:00
6 changed files with 136 additions and 17 deletions

View File

@@ -25,6 +25,7 @@ func ConfigurationInit() {
logger.InitLogger()
// 连接数据库实例
db.Connect()
db.ImportSQL()
// 连接Redis实例
redis.Connect()
// 启动调度任务实例

View File

@@ -31,6 +31,10 @@ func initFlag() {
// --c /etc/restconf.yaml
// -c /etc/restconf.yaml
pflag.StringP("config", "c", "./etc/restconf.yaml", "Specify Configuration File")
// --sqlPath ./sql/20250228.sql
pflag.String("sqlPath", "", "Execution SQL File Path")
// --sqlSource default
pflag.String("sqlSource", "default", "Execution SQL Database Source")
// --version
// -V
pVersion := pflag.BoolP("version", "V", false, "Output program version")
@@ -96,6 +100,21 @@ func initViper(configDir *embed.FS) {
conf.Set("runTime", time.Now())
}
// readExternalConfig 读取外部文件配置(放弃旧的配置序列化时候才用)
func readExternalConfig(configPaht string) {
f, err := os.Open(configPaht)
if err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
defer f.Close()
if err = conf.MergeConfig(f); err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
}
// 配置文件读取进行内部参数合并
func configInMerge(configFile string) {
// 指定配置文件读取序列化
@@ -156,21 +175,6 @@ func SetAssetsDirFS(assetsDir *embed.FS) {
conf.Set("AssetsDir", assetsDir)
}
// readExternalConfig 读取外部文件配置
func readExternalConfig(configPaht string) {
f, err := os.Open(configPaht)
if err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
defer f.Close()
if err = conf.MergeConfig(f); err != nil {
log.Fatalf("config external file read error: %s", err)
return
}
}
// IsSystemUser 用户是否为系统管理员
func IsSystemUser(userId int64) bool {
if userId <= 0 {

View File

@@ -0,0 +1,104 @@
package db
import (
"bufio"
"log"
"os"
"path/filepath"
"strings"
"gorm.io/gorm"
"be.ems/src/framework/config"
)
// ImportSQL 导入SQL
func ImportSQL() {
sqlPath := config.Get("sqlPath").(string)
if sqlPath == "" {
return
}
sqlSource := config.Get("sqlSource").(string)
if sqlSource == "" {
sqlSource = config.Get("database.defaultDataSourceName").(string)
}
// 数据源
db := DB(sqlSource)
if db == nil {
log.Fatalln("not database source")
return
}
// 获取路径信息
fileInfo, err := os.Stat(sqlPath)
if err != nil {
log.Fatalln(err.Error())
return
}
// 处理目录或文件
if fileInfo.IsDir() {
// 处理目录
files, err := os.ReadDir(sqlPath)
if err != nil {
log.Fatalln(err.Error())
return
}
for _, file := range files {
if file.IsDir() {
continue
}
if !strings.HasSuffix(file.Name(), ".sql") {
continue
}
processSQLFile(db, filepath.Join(sqlPath, file.Name()))
}
} else {
// 处理单个文件
processSQLFile(db, sqlPath)
}
log.Println("Import SQL End")
os.Exit(1)
}
// 处理单个SQL文件的通用函数
func processSQLFile(db *gorm.DB, filePath string) {
file, err := os.Open(filePath)
if err != nil {
log.Fatalln(err.Error())
return
}
defer file.Close()
// 逐行读取 SQL 文件
scanner := bufio.NewScanner(file)
var sqlBuilder strings.Builder
for scanner.Scan() {
line := strings.TrimSpace(scanner.Text())
// 跳过注释和空行
if strings.HasPrefix(line, "--") || strings.TrimSpace(line) == "" {
continue
}
// 跳过配置语句
if strings.HasPrefix(line, "/*!") {
continue
}
sqlBuilder.WriteString(line + "\n")
// 当遇到分号时,执行 SQL 语句
if strings.HasSuffix(line, ";") {
// 执行 SQL 语句
if err := db.Exec(sqlBuilder.String()).Error; err != nil {
log.Fatalln(err.Error())
return
}
sqlBuilder.Reset()
continue
}
}
}

View File

@@ -2,6 +2,7 @@ package repository
import (
"fmt"
"strings"
"be.ems/src/framework/database/db"
"be.ems/src/framework/logger"
@@ -36,7 +37,9 @@ func (r *UDMAuthUser) SelectPage(query map[string]string) (int64, []model.UDMAut
tx = tx.Where("ne_id = ?", v)
}
if v, ok := query["imsis"]; ok && v != "" {
tx = tx.Where("imsi in ?", v)
arr := strings.Split(v, ",")
tx = tx.Where("imsi in ?", arr)
query["pageSize"] = fmt.Sprint(len(arr))
}
var total int64 = 0

View File

@@ -2,6 +2,7 @@ package repository
import (
"fmt"
"strings"
"be.ems/src/framework/database/db"
"be.ems/src/framework/logger"
@@ -39,7 +40,9 @@ func (r *UDMSubUser) SelectPage(query map[string]string) (int64, []model.UDMSubU
tx = tx.Where("ne_id =?", v)
}
if v, ok := query["imsis"]; ok && v != "" {
tx = tx.Where("imsi in ?", v)
arr := strings.Split(v, ",")
tx = tx.Where("imsi in ?", arr)
query["pageSize"] = fmt.Sprint(len(arr))
}
var total int64 = 0

View File

@@ -231,8 +231,12 @@ func (s SysDictTypeController) Remove(c *gin.Context) {
//
// PUT /refresh
func (s SysDictTypeController) Refresh(c *gin.Context) {
// 重新加载-字典数据
s.sysDictTypeService.CacheClean("*")
s.sysDictTypeService.CacheLoad("*")
// 重新加载-多语言
service.NewSysI18n.CacheClean("*")
service.NewSysI18n.CacheLoad("*")
c.JSON(200, resp.Ok(nil))
}