package synchro

import (
	"fmt"
	"github.com/druidcaesa/gotool"
	"time"
	"ulink-admin/modules/system/models/model"
	"ulink-admin/modules/system/models/req"
	"ulink-admin/pkg/base"
)

func init() {
	err := base.SqlDB.Sync2(
		new(model.SysAttachment),
		new(model.SysNotice),
		new(model.SysOperLog),
		new(model.SysRoleMenu),
		//new(model.SysMember),
		new(model.SysDept),
	)
	if err != nil {
		fmt.Printf("数据库[sys_]前缀表批量同步出错:%s", err.Error())
	}
}

func init() {
	cfg := new(model.SysConfig)
	err := base.SqlDB.Sync2(cfg)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", cfg.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(cfg)
		if empty {
			everyone := []model.SysConfig{
				{Id: 1, ConfigName: "主框架页-默认皮肤样式名称", ConfigKey: "sys.index.skinName", ConfigValue: "skin-blue", ConfigType: "Y", CreateBy: "admin", CreateTime: time.Now(), Remark: "蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow"},
				{Id: 2, ConfigName: "用户管理-账号初始密码", ConfigKey: "sys.user.initPassword", ConfigValue: "123456", ConfigType: "Y", CreateBy: "admin", CreateTime: time.Now(), Remark: "初始化密码 123456"},
				{Id: 3, ConfigName: "主框架页-侧边栏主题", ConfigKey: "sys.index.sideTheme", ConfigValue: "theme-dark", ConfigType: "Y", CreateBy: "admin", CreateTime: time.Now(), Remark: "深色主题theme-dark,浅色主题theme-light"},
			}
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(cfg.TableName()).Insert(&everyone)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", cfg.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	data := new(model.SysDictData)
	err := base.SqlDB.Sync2(data)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", data.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(data)
		if empty {
			everyone := []model.SysDictData{
				{
					Id:         1,
					DictSort:   1,
					DictLabel:  "男",
					DictValue:  "0",
					DictType:   "sys_user_sex",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "性别男",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         2,
					DictSort:   2,
					DictLabel:  "女",
					DictValue:  "1",
					DictType:   "sys_user_sex",
					IsDefault:  "N",
					Status:     0,
					Remark:     "性别女",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         3,
					DictSort:   3,
					DictLabel:  "未知",
					DictValue:  "2",
					DictType:   "sys_user_sex",
					IsDefault:  "N",
					Status:     0,
					Remark:     "性别未知",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         4,
					DictSort:   1,
					DictLabel:  "显示",
					DictValue:  "0",
					DictType:   "sys_show_hide",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "显示菜单",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         5,
					DictSort:   2,
					DictLabel:  "隐藏",
					DictValue:  "1",
					DictType:   "sys_show_hide",
					IsDefault:  "N",
					Status:     0,
					Remark:     "隐藏菜单",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         6,
					DictSort:   1,
					DictLabel:  "正常",
					DictValue:  "0",
					DictType:   "sys_normal_disable",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "正常状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         7,
					DictSort:   2,
					DictLabel:  "停用",
					DictValue:  "1",
					DictType:   "sys_normal_disable",
					IsDefault:  "N",
					Status:     0,
					Remark:     "停用状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         8,
					DictSort:   1,
					DictLabel:  "正常",
					DictValue:  "0",
					DictType:   "sys_job_status",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "正常状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         9,
					DictSort:   2,
					DictLabel:  "暂停",
					DictValue:  "1",
					DictType:   "sys_job_status",
					IsDefault:  "N",
					Status:     0,
					Remark:     "停用状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         10,
					DictSort:   1,
					DictLabel:  "默认",
					DictValue:  "DEFAULT",
					DictType:   "sys_job_group",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "默认分组",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         11,
					DictSort:   2,
					DictLabel:  "系统",
					DictValue:  "SYSTEM",
					DictType:   "sys_job_group",
					IsDefault:  "N",
					Status:     0,
					Remark:     "系统分组",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         12,
					DictSort:   1,
					DictLabel:  "是",
					DictValue:  "Y",
					DictType:   "sys_yes_no",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "系统默认是",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         13,
					DictSort:   2,
					DictLabel:  "否",
					DictValue:  "N",
					DictType:   "sys_yes_no",
					IsDefault:  "N",
					Status:     0,
					Remark:     "系统默认否",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         14,
					DictSort:   1,
					DictLabel:  "通知",
					DictValue:  "1",
					DictType:   "sys_notice_type",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "通知",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         15,
					DictSort:   2,
					DictLabel:  "公告",
					DictValue:  "2",
					DictType:   "sys_notice_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "公告",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         16,
					DictSort:   1,
					DictLabel:  "正常",
					DictValue:  "0",
					DictType:   "sys_notice_status",
					IsDefault:  "Y",
					Status:     0,
					Remark:     "正常状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         17,
					DictSort:   2,
					DictLabel:  "关闭",
					DictValue:  "1",
					DictType:   "sys_notice_status",
					IsDefault:  "N",
					Status:     0,
					Remark:     "关闭状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         18,
					DictSort:   1,
					DictLabel:  "新增",
					DictValue:  "1",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "新增操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         19,
					DictSort:   2,
					DictLabel:  "修改",
					DictValue:  "2",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "修改操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         20,
					DictSort:   3,
					DictLabel:  "删除",
					DictValue:  "3",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "删除操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         21,
					DictSort:   4,
					DictLabel:  "授权",
					DictValue:  "4",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "授权操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         22,
					DictSort:   5,
					DictLabel:  "导出",
					DictValue:  "5",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "导出操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         23,
					DictSort:   6,
					DictLabel:  "导入",
					DictValue:  "6",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "导入操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         24,
					DictSort:   7,
					DictLabel:  "强退",
					DictValue:  "7",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "强退操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         25,
					DictSort:   8,
					DictLabel:  "生成代码",
					DictValue:  "8",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "生成操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         26,
					DictSort:   9,
					DictLabel:  "清空数据",
					DictValue:  "9",
					DictType:   "sys_oper_type",
					IsDefault:  "N",
					Status:     0,
					Remark:     "清空操作",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         27,
					DictSort:   1,
					DictLabel:  "成功",
					DictValue:  "0",
					DictType:   "sys_common_status",
					IsDefault:  "N",
					Status:     0,
					Remark:     "正常状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         28,
					DictSort:   2,
					DictLabel:  "失败",
					DictValue:  "1",
					DictType:   "sys_common_status",
					IsDefault:  "N",
					Status:     0,
					Remark:     "停用状态",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
			}
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(data.TableName()).Insert(&everyone)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", data.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	data := new(model.SysDictType)
	err := base.SqlDB.Sync2(data)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", data.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(data)
		if empty {
			everyone := []model.SysDictType{
				{
					Id:         1,
					DictName:   "用户性别",
					DictType:   "sys_user_sex",
					Status:     0,
					Remark:     "用户性别列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         2,
					DictName:   "菜单状态",
					DictType:   "sys_show_hide",
					Status:     0,
					Remark:     "菜单状态列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         3,
					DictName:   "系统开关",
					DictType:   "sys_normal_disable",
					Status:     0,
					Remark:     "系统开关列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         4,
					DictName:   "任务状态",
					DictType:   "sys_job_status",
					Status:     0,
					Remark:     "任务状态列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         5,
					DictName:   "任务分组",
					DictType:   "sys_job_group",
					Status:     0,
					Remark:     "任务分组列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         6,
					DictName:   "系统是否",
					DictType:   "sys_yes_no",
					Status:     0,
					Remark:     "系统是否列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         7,
					DictName:   "通知类型",
					DictType:   "sys_notice_type",
					Status:     0,
					Remark:     "通知类型列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         8,
					DictName:   "通知状态",
					DictType:   "sys_notice_status",
					Status:     0,
					Remark:     "通知状态列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         9,
					DictName:   "操作类型",
					DictType:   "sys_oper_type",
					Status:     0,
					Remark:     "操作类型列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
				{
					Id:         10,
					DictName:   "系统状态",
					DictType:   "sys_common_status",
					Status:     0,
					Remark:     "登录状态列表",
					CreateTime: time.Now(),
					CreateBy:   "admin",
				},
			}
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(data.TableName()).Insert(&everyone)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", data.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	data := new(model.SysInfo)
	err := base.SqlDB.Sync2(data)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", data.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(data)
		if empty {
			data = &model.SysInfo{
				Id:         1,
				Label:      "智汇外卖系统",
				Image:      "",
				IsDel:      "0",
				CreateBy:   "admin",
				UpdateBy:   "admin",
				CreateTime: time.Now(),
				UpdateTime: time.Now(),
			}
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(data.TableName()).Insert(data)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", data.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	data := new(model.SysMenu)
	err := base.SqlDB.Sync2(data)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", data.TableName(), err.Error())
	} else {

		empty, _ := base.SqlDB.IsTableEmpty(data)
		everyone := []model.SysMenu{
			{
				Id:         1,
				ParentId:   0,
				MenuName:   "系统管理",
				OrderNum:   99,
				Path:       "system",
				MenuType:   "M",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "",
				Icon:       "system",
				Remark:     "系统管理目录",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         100,
				ParentId:   1,
				MenuName:   "员工管理",
				OrderNum:   1,
				Path:       "user",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:list",
				Icon:       "user",
				Remark:     "用户管理菜单",
				Status:     "0",
				Component:  "system/user/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         101,
				ParentId:   1,
				MenuName:   "角色管理",
				OrderNum:   2,
				Path:       "role",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:list",
				Icon:       "peoples",
				Remark:     "角色管理菜单",
				Status:     "0",
				Component:  "system/role/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         102,
				ParentId:   1,
				MenuName:   "菜单管理",
				OrderNum:   3,
				Path:       "menu",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:menu:list",
				Icon:       "tree-table",
				Remark:     "菜单管理菜单",
				Status:     "0",
				Component:  "system/menu/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:        103,
				ParentId:  1,
				MenuName:  "部门管理",
				OrderNum:  4,
				Path:      "dept",
				MenuType:  "C",
				Visible:   false,
				IsFrame:   1,
				IsCache:   0,
				Perms:     "system:dept:list",
				Icon:      "tree",
				Remark:    "部门管理菜单",
				Status:    "0",
				Component: "system/dept/index",
				CreateBy:  "系统生成",
			},
			{
				Id:         105,
				ParentId:   1,
				MenuName:   "字典管理",
				OrderNum:   6,
				Path:       "dict",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:list",
				Icon:       "dict",
				Remark:     "字典管理菜单",
				Status:     "0",
				Component:  "system/dict/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         106,
				ParentId:   1,
				MenuName:   "参数设置",
				OrderNum:   7,
				Path:       "config",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:list",
				Icon:       "edit",
				Remark:     "参数设置菜单",
				Status:     "0",
				Component:  "system/config/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         107,
				ParentId:   1,
				MenuName:   "通知公告",
				OrderNum:   8,
				Path:       "notice",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    1,
				Perms:      "system:notice:list",
				Icon:       "message",
				Remark:     "通知公告菜单",
				Status:     "0",
				Component:  "system/notice/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1001,
				ParentId:   100,
				MenuName:   "用户查询",
				OrderNum:   1,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:list",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1002,
				ParentId:   100,
				MenuName:   "用户新增",
				OrderNum:   2,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1003,
				ParentId:   100,
				MenuName:   "用户修改",
				OrderNum:   3,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1004,
				ParentId:   100,
				MenuName:   "用户删除",
				OrderNum:   4,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1005,
				ParentId:   100,
				MenuName:   "用户导出",
				OrderNum:   5,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:export",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1006,
				ParentId:   100,
				MenuName:   "用户导入",
				OrderNum:   6,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:import",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1007,
				ParentId:   100,
				MenuName:   "重置密码",
				OrderNum:   7,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:user:resetPwd",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1008,
				ParentId:   101,
				MenuName:   "角色查询",
				OrderNum:   1,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:query",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1009,
				ParentId:   101,
				MenuName:   "角色新增",
				OrderNum:   2,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1010,
				ParentId:   101,
				MenuName:   "角色修改",
				OrderNum:   3,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1011,
				ParentId:   101,
				MenuName:   "角色删除",
				OrderNum:   4,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1012,
				ParentId:   101,
				MenuName:   "角色导出",
				OrderNum:   5,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:role:export",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1013,
				ParentId:   102,
				MenuName:   "菜单查询",
				OrderNum:   1,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:menu:query",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1014,
				ParentId:   102,
				MenuName:   "菜单新增",
				OrderNum:   2,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:menu:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1015,
				ParentId:   102,
				MenuName:   "菜单修改",
				OrderNum:   3,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:menu:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1016,
				ParentId:   102,
				MenuName:   "菜单删除",
				OrderNum:   4,
				Path:       "",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:menu:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:        1017,
				ParentId:  103,
				MenuName:  "部门查询",
				OrderNum:  1,
				Path:      "",
				MenuType:  "F",
				Visible:   false,
				IsFrame:   1,
				IsCache:   0,
				Perms:     "system:dept:query",
				Icon:      "#",
				Remark:    "",
				Status:    "0",
				Component: "",
				CreateBy:  "系统生成",
			},
			{
				Id:        1018,
				ParentId:  103,
				MenuName:  "部门新增",
				OrderNum:  2,
				Path:      "",
				MenuType:  "F",
				Visible:   false,
				IsFrame:   1,
				IsCache:   0,
				Perms:     "system:dept:add",
				Icon:      "#",
				Remark:    "",
				Status:    "0",
				Component: "",
				CreateBy:  "系统生成",
			},
			{
				Id:        1019,
				ParentId:  103,
				MenuName:  "部门修改",
				OrderNum:  3,
				Path:      "",
				MenuType:  "F",
				Visible:   false,
				IsFrame:   1,
				IsCache:   0,
				Perms:     "system:dept:edit",
				Icon:      "#",
				Remark:    "",
				Status:    "0",
				Component: "",
				CreateBy:  "系统生成",
			},
			{
				Id:        1020,
				ParentId:  103,
				MenuName:  "部门删除",
				OrderNum:  4,
				Path:      "",
				MenuType:  "F",
				Visible:   false,
				IsFrame:   1,
				IsCache:   0,
				Perms:     "system:dept:remove",
				Icon:      "#",
				Remark:    "",
				Status:    "0",
				Component: "",
				CreateBy:  "系统生成",
			},
			{
				Id:         1026,
				ParentId:   105,
				MenuName:   "字典查询",
				OrderNum:   1,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:query",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1027,
				ParentId:   105,
				MenuName:   "字典新增",
				OrderNum:   2,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1028,
				ParentId:   105,
				MenuName:   "字典修改",
				OrderNum:   3,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1029,
				ParentId:   105,
				MenuName:   "字典删除",
				OrderNum:   4,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1030,
				ParentId:   105,
				MenuName:   "字典导出",
				OrderNum:   5,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:dict:export",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1031,
				ParentId:   106,
				MenuName:   "参数查询",
				OrderNum:   1,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:query",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1032,
				ParentId:   106,
				MenuName:   "参数新增",
				OrderNum:   2,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1033,
				ParentId:   106,
				MenuName:   "参数修改",
				OrderNum:   3,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1034,
				ParentId:   106,
				MenuName:   "参数删除",
				OrderNum:   4,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1035,
				ParentId:   106,
				MenuName:   "参数导出",
				OrderNum:   5,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:config:export",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1036,
				ParentId:   107,
				MenuName:   "公告查询",
				OrderNum:   1,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:notice:query",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1037,
				ParentId:   107,
				MenuName:   "公告新增",
				OrderNum:   2,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:notice:add",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1038,
				ParentId:   107,
				MenuName:   "公告修改",
				OrderNum:   3,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:notice:edit",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         1039,
				ParentId:   107,
				MenuName:   "公告删除",
				OrderNum:   4,
				Path:       "#",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:notice:remove",
				Icon:       "#",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2000,
				ParentId:   0,
				MenuName:   "工具管理",
				OrderNum:   98,
				Path:       "tool",
				MenuType:   "M",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "",
				Icon:       "tool",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2001,
				ParentId:   2000,
				MenuName:   "代码生成",
				OrderNum:   1,
				Path:       "gen",
				MenuType:   "C",
				Visible:    true,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "tool:gen:list",
				Icon:       "code",
				Remark:     "",
				Status:     "0",
				Component:  "tool/gen",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2003,
				ParentId:   1,
				MenuName:   "日志管理",
				OrderNum:   2,
				Path:       "log",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:sysOperLog:list",
				Icon:       "bug",
				Remark:     "",
				Status:     "0",
				Component:  "system/sys-oper-log/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2147,
				ParentId:   1,
				MenuName:   "会员列表",
				OrderNum:   0,
				Path:       "sysMember",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:sysMember:list",
				Icon:       "peoples",
				Remark:     "",
				Status:     "0",
				Component:  "system/sys-member/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2148,
				ParentId:   2147,
				MenuName:   "查询",
				OrderNum:   1,
				Path:       "sysMember/list:get",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:list",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2149,
				ParentId:   2147,
				MenuName:   "新增",
				OrderNum:   2,
				Path:       "sysMember/list/add:post",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:add",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2150,
				ParentId:   2147,
				MenuName:   "修改",
				OrderNum:   3,
				Path:       "sysMember/:put",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:edit",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2151,
				ParentId:   2147,
				MenuName:   "删除",
				OrderNum:   4,
				Path:       "sysMember/:delete",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:remove",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2152,
				ParentId:   2147,
				MenuName:   "详情",
				OrderNum:   5,
				Path:       "sysMember/list:detail;",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:detail",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2153,
				ParentId:   2147,
				MenuName:   "导出",
				OrderNum:   6,
				Path:       "sysMember/list:export",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysMember:export",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2161,
				ParentId:   1,
				MenuName:   "系统配置",
				OrderNum:   0,
				Path:       "sysInfo",
				MenuType:   "C",
				Visible:    false,
				IsFrame:    1,
				IsCache:    0,
				Perms:      "system:sysInfo:list",
				Icon:       "server",
				Remark:     "",
				Status:     "0",
				Component:  "system/sys-info/index",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2162,
				ParentId:   2161,
				MenuName:   "查询",
				OrderNum:   1,
				Path:       "sysInfo/list:get",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:list",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2163,
				ParentId:   2161,
				MenuName:   "新增",
				OrderNum:   2,
				Path:       "sysInfo/list/add:post",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:add",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2164,
				ParentId:   2161,
				MenuName:   "修改",
				OrderNum:   3,
				Path:       "sysInfo/:put",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:edit",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2165,
				ParentId:   2161,
				MenuName:   "删除",
				OrderNum:   4,
				Path:       "sysInfo/:delete",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:remove",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2166,
				ParentId:   2161,
				MenuName:   "详情",
				OrderNum:   5,
				Path:       "sysInfo/list:detail;",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:detail",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
			{
				Id:         2167,
				ParentId:   2161,
				MenuName:   "导出",
				OrderNum:   6,
				Path:       "sysInfo/list:export",
				MenuType:   "F",
				Visible:    false,
				IsFrame:    0,
				IsCache:    0,
				Perms:      "system:sysInfo:export",
				Icon:       "",
				Remark:     "",
				Status:     "0",
				Component:  "",
				CreateTime: time.Now(),
				CreateBy:   "admin",
			},
		}
		if empty {
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(data.TableName()).Insert(&everyone)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", data.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		} else {
			list := make([]model.SysMenu, 0)
			err = base.SqlDB.Table(data.TableName()).Asc("id").Find(&list)
			if err != nil {
				fmt.Printf("数据库表[%s]查询数据出错:%s", data.TableName(), err.Error())
			} else {
				addList := make([]model.SysMenu, 0)
				/*	for index, menu := range everyone {
					if index < length {
						sysMenu := list[index]
						if menu.Id == sysMenu.Id && menu.IsDifferent(sysMenu) {
							_, err = base.SqlDB.Table(menu.TableName()).ID(menu.Id).Update(menu)
							if err != nil {
								fmt.Printf("数据库表[%s]更新[Id=%v]的数据出错:%s", menu.TableName(), menu.Id, err.Error())
							}
						}
					} else {
						addList = append(addList, menu)
					}
				}*/
				for _, newMenu := range everyone {
					isHave := false
					for _, oldMenu := range list {
						if newMenu.Id == oldMenu.Id {
							isHave = true
							break
						}
					}
					if !isHave {
						addList = append(addList, newMenu)
					}
				}
				if len(addList) > 0 {
					session := base.SqlDB.NewSession()
					_ = session.Begin()
					fmt.Printf("model.SysMenu.addList:%+v\n", addList)
					_, err = session.Table(data.TableName()).Insert(&addList)
					if err != nil {
						fmt.Printf("数据库表[%s]插入新增默认数据出错:%s", data.TableName(), err.Error())
						_ = session.Rollback()
					}
					_ = session.Commit()
				}
			}
		}
	}
}

func init() {
	user := new(model.SysUser)
	err := base.SqlDB.Sync2(user)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", user.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(user)
		if empty {
			user.Id = 1
			user.UserName = "admin"
			user.NickName = "超级管理员"
			user.UserType = req.SystemUserType
			user.Sex = "0"
			user.Avatar = "/defaultAvatar"
			user.Password = gotool.BcryptUtils.Generate("admin123")
			user.Status = "0"
			user.DelFlag = "0"
			user.NewVoucherFlag = "0"
			user.CreateBy = user.UserName
			user.UpdateBy = user.UserName
			user.CreateTime = time.Now()
			user.UpdateTime = time.Now()
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(user.TableName()).
				Cols("user_name", "nick_name", "user_type",
					"sex", "avatar", "password", "status", "del_flag",
					"new_voucher_flag", "create_by", "create_time").Insert(user)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", user.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	role := new(model.SysRole)
	err := base.SqlDB.Sync2(role)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", role.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(role)
		if empty {
			role.RoleName = "超级管理员"
			role.RoleKey = "admin"
			role.RoleSort = 1
			role.DataScope = "1"
			role.MenuCheckStrictly = true
			role.DeptCheckStrictly = true
			role.Status = "0"
			role.DelFlag = "0"
			role.CreateBy = role.RoleKey
			role.UpdateBy = role.RoleKey
			role.CreateTime = time.Now()
			role.UpdateTime = time.Now()
			role.Remark = role.RoleName
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(role.TableName()).Insert(role)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", role.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}

func init() {
	userRole := new(model.SysUserRole)
	err := base.SqlDB.Sync2(userRole)
	if err != nil {
		fmt.Printf("数据库表[%s]同步出错:%s", userRole.TableName(), err.Error())
	} else {
		empty, _ := base.SqlDB.IsTableEmpty(userRole)
		if empty {
			userRole.Id = 1
			userRole.UserId = 1
			userRole.RoleId = 1
			session := base.SqlDB.NewSession()
			_ = session.Begin()
			_, err = session.Table(userRole.TableName()).Insert(userRole)
			if err != nil {
				fmt.Printf("数据库表[%s]插入默认数据出错:%s", userRole.TableName(), err.Error())
				_ = session.Rollback()
			}
			_ = session.Commit()
		}
	}
}