Selaa lähdekoodia

feat:新增支持达梦

Roc 3 päivää sitten
vanhempi
commit
d7ad4d874d
2 muutettua tiedostoa jossa 66 lisäystä ja 5 poistoa
  1. 65 5
      init_serve/task.go
  2. 1 0
      models/eta_business.go

+ 65 - 5
init_serve/task.go

@@ -40,11 +40,26 @@ func InitTask() {
 		}
 		tableName := fmt.Sprintf("sys_menu_%s_bak", time.Now().Format(utils.FormatDateUnSpace))
 		sqlStr := "# 备份表\n# create table " + tableName + " like sys_menu;\n# insert into " + tableName + " select * from sys_menu;\n\n"
-		sqlStr += "delete from sys_menu where 1=1;\nINSERT INTO sys_menu (`menu_id`, `parent_id`, `name`, `sort`, `path`, `icon_path`, `component`, `hidden`, `is_level`, `level_path`, `menu_type`, `button_code`, `create_time`, `modify_time`,`api`,`name_en`) VALUES "
+		sqlStr += getFront(v.DbType)
 
-		sqlStr += getMenuStr(menuList)
+		tableKey := ""
+		modeName := ``
+		switch v.DbType {
+		case 1: // dm
+			tableKey = `"`
+			modeName = `eta_master.`
+		default:
+			// 默认mysql
+			tableKey = "`"
+		}
+
+		sqlStr += "delete from " + modeName + "sys_menu where 1=1;\nINSERT INTO " + modeName + "sys_menu (`menu_id`, `parent_id`, `name`, `sort`, `path`, `icon_path`, `component`, `hidden`, `is_level`, `level_path`, `menu_type`, `button_code`, `create_time`, `modify_time`,`api`,`name_en`) VALUES "
+
+		sqlStr = strings.Replace(sqlStr, "`", tableKey, -1)
 
-		sqlStr += "SELECT role_id INTO @sys_id FROM sys_role WHERE role_name = 'admin';\nDELETE FROM sys_role_menu WHERE role_id = @sys_id;\nINSERT INTO sys_role_menu(`role_id`, `menu_id`, `type`)\nSELECT @sys_id, menu_id, 0 FROM sys_menu;"
+		sqlStr += getMenuStr(menuList, v.DbType)
+
+		sqlStr += getEndSql(v.DbType)
 
 		err = writeFile(baseDir, sqlStr, v)
 		if err != nil {
@@ -56,11 +71,56 @@ func InitTask() {
 	fmt.Println("生成完成")
 }
 
-func getMenuStr(menuList []*models.EtaBusinessMenu) (str string) {
+func getFront(dbType int) string {
+	switch dbType {
+	case 0: // mysql
+		return ``
+
+	case 1:
+		return "SET IDENTITY_INSERT eta_master.sys_menu ON;\n"
+	}
+
+	return ``
+}
+
+// getEndSql
+// @Description: 获取结束的sql
+// @author: Roc
+// @datetime 2025-06-03 16:11:30
+// @param dbType int
+// @return string
+func getEndSql(dbType int) string {
+	switch dbType {
+	case 0: // mysql
+
+		return "SELECT role_id INTO @sys_id FROM sys_role WHERE role_name = 'admin';\nDELETE FROM sys_role_menu WHERE role_id = @sys_id;\nINSERT INTO sys_role_menu(`role_id`, `menu_id`, `type`)\nSELECT @sys_id, menu_id, 0 FROM sys_menu;"
+
+	case 1:
+		return "-- 定义变量\nDECLARE\n  sys_id INT;\nBEGIN\n  -- 查询角色ID并赋值给变量\n  SELECT role_id INTO sys_id FROM eta_master.sys_role WHERE role_name = 'admin';\n\n  -- 删除角色菜单关联\n  DELETE FROM eta_master.sys_role_menu WHERE role_id = sys_id;\n\n  -- 插入新的角色菜单关联\n  INSERT INTO eta_master.sys_role_menu (role_id, menu_id, type)\n  SELECT sys_id, menu_id, 0 FROM eta_master.sys_menu;\nEND;\n /\nSET IDENTITY_INSERT eta_master.sys_menu OFF;\n"
+	}
+
+	return ``
+}
+
+func getMenuStr(menuList []*models.EtaBusinessMenu, dbType int) (str string) {
+
+	tableKey := ""
+	switch dbType {
+	case 1: // dm
+		tableKey = `'`
+	default:
+		// 默认mysql
+		tableKey = `"`
+
+	}
+
 	menuStrList := []string{}
 	for _, v := range menuList {
 		tmpStr := fmt.Sprintf(`(%d, %d, "%s", %d, "%s","%s", "%s",%d, %d, "%s", %d, "%s", "%s", "%s", "%s", "%s")`,
 			v.MenuId, v.ParentId, v.Name, v.Sort, v.Path, v.IconPath, v.Component, v.Hidden, v.IsLevel, v.LevelPath, v.MenuType, v.ButtonCode, v.CreateTime.Format(utils.FormatDateTime), v.ModifyTime.Format(utils.FormatDateTime), v.Api, v.NameEn)
+
+		tmpStr = strings.Replace(tmpStr, `"`, tableKey, -1)
+
 		menuStrList = append(menuStrList, tmpStr)
 
 	}
@@ -72,7 +132,7 @@ func getMenuStr(menuList []*models.EtaBusinessMenu) (str string) {
 
 // writeFile 文件写入
 func writeFile(baseDir, str string, etaBusiness *models.EtaBusiness) (err error) {
-	file, err := os.OpenFile(baseDir+"/"+time.Now().Format(utils.FormatDateMouthDayUnSpace)+"_"+etaBusiness.BusinessName+"_"+etaBusiness.BusinessCode+".txt", os.O_WRONLY|os.O_CREATE, 0666)
+	file, err := os.OpenFile(baseDir+"/"+time.Now().Format(utils.FormatDateMouthDayUnSpace)+"_"+etaBusiness.BusinessName+"_"+etaBusiness.BusinessCode+".txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
 	if err != nil {
 		fmt.Println(err)
 		return

+ 1 - 0
models/eta_business.go

@@ -11,6 +11,7 @@ type EtaBusiness struct {
 	BusinessName  string `description:"商家名称"`
 	BusinessCode  string `description:"商家编码"`
 	Enable        int    `description:"状态:0-禁用;1-启用"`
+	DbType        int    `description:"数据库类型,枚举值,0:mysql,1:达梦数据库"`
 	CreateTime    time.Time
 	ModifyTime    time.Time
 }