| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- package gen
- import (
- "fmt"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
- "git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
- sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
- sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
- "github.com/gin-gonic/gin"
- "github.com/xormplus/xorm"
- "regexp"
- "time"
- )
- // SystemController operations for System
- type DomainController struct {
- apiengine *engine.ApiEngine
- }
- func NewDomainController(e *engine.ApiEngine) *DomainController {
- controller := &DomainController{e}
- return controller
- }
- // AddDomain
- // @Title AddDomain
- // @Description 添加域
- // @Param false "域"
- // @Success 200 {object} sysReturn
- // @Failure 403 :id is empty
- // @router /add_domain [post,get,put]
- func (c *DomainController) AddDomain(ctx *gin.Context) {
- //
- var paramObj0 sysmodel.SysDomain
- ctx.BindJSON(¶mObj0)
- //1、测试连接串
- //db, err := xorm.NewEngine("mysql", paramObj0.DataSource)
- //if err == nil {
- // engine.initOrmEngine(db, "mysql")
- // c.BusinessOrmEngine[v.Domain] = db
- //}
- var db *xorm.Engine
- var err error
- dbname := paramObj0.DataSource
- reg := regexp.MustCompile("(.*)/(.*)(\\?.*)")
- strings := reg.FindStringSubmatch(dbname)
- if len(strings) > 3 {
- dbname = strings[2]
- db, err = xorm.NewEngine("mysql", strings[1]+"/")
- if err != nil {
- ctx.JSON(500, sysmodel.SysReturn{500, "连接数据库错误:" + err.Error(), nil})
- return
- }
- db.ShowSQL(true)
- _, err = db.Sql("CREATE DATABASE IF NOT EXISTS `" + dbname + "` default charset utf8 COLLATE utf8_general_ci").Execute()
- if err != nil {
- fmt.Println("create database error", err)
- ctx.JSON(500, sysmodel.SysReturn{500, "create database error " + err.Error(), nil})
- return
- } else {
- fmt.Println("create database success:", dbname)
- }
- //创建数据库后,重新连接,避免出现 No database selected 错误
- db, err = xorm.NewEngine("mysql", strings[0])
- err = c.InitDomainDb(db, paramObj0)
- if err != nil {
- ctx.JSON(500, sysmodel.SysReturn{500, "init domain db error: " + err.Error(), nil})
- return
- }
- c.apiengine.BusinessOrmEngine[paramObj0.Domain] = db
- }
- tk, _ := ctx.Get("token")
- user := tk.(*entitys.Token)
- paramObj0.Id = sysutils.NewUUID()
- paramObj0.CreateBy = user.UserId
- paramObj0.LastUpdateBy = user.UserId
- paramObj0.CreateTime = sysmodel.NowLocal()
- paramObj0.LastUpdateTime = time.Now().UnixNano()
- paramObj0.DelFlag = 0
- paramMap, err := sysutils.BeanToMap(¶mObj0)
- if err != nil {
- ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
- return
- }
- _, err = c.apiengine.PlatformOrmEngine.SqlMapClient("insert_sys_domain", paramMap).Execute()
- if err == nil {
- ctx.JSON(200, sysmodel.SysReturn{200, "", paramObj0.Id})
- } else {
- ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
- }
- }
- func (c *DomainController) InitDomainDb(db *xorm.Engine, domain sysmodel.SysDomain) error {
- users := sysmodel.SysUser{
- Id: sysutils.NewUUID(),
- Name: "管理员",
- LoginId: domain.Domain,
- Domain: domain.Domain,
- Password: sysutils.HashPassword("123456", ""),
- CreateTime: time.Now(),
- }
- roles := []sysmodel.SysRole{
- {
- Id: "487c50a4-caad-4557-80c8-aca81af9f371",
- Name: "管理员",
- CreateTime: time.Now(),
- },
- }
- userRoles := []sysmodel.SysUserRole{
- {
- Id: "587c50a4-caad-4557-80c8-aca81af9f370",
- RoleId: "387c50a4-caad-4557-80c8-aca81af9f371",
- UserId: users.Id,
- CreateTime: time.Now(),
- },
- }
- //for _, model := range sysmodel.ModelNameList {
- // fmt.Println(model)
- //}
- //创建表
- //config.AppConfig.SyncDb = true
- //sysmodel.SyncDb(db)
- //config.AppConfig.SyncDb = false
- _, err := db.Sql("CREATE TABLE IF NOT EXISTS `sys_attachment` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `name` VARCHAR(36) NOT NULL, `size` INT NOT NULL, `ext` VARCHAR(36) NOT NULL, `hash` VARCHAR(255) NOT NULL, `url` VARCHAR(200) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- _, err = db.Sql("CREATE TABLE IF NOT EXISTS `sys_org` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `parent` VARCHAR(36) NULL, `inheritance` VARCHAR(500) NULL, `name` VARCHAR(36) NOT NULL, `full_name` VARCHAR(36) NOT NULL, `leader` VARCHAR(36) NOT NULL, `type` INT NOT NULL, `order` INT NOT NULL, `status` INT NOT NULL, `domain` VARCHAR(36) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `last_update_by` VARCHAR(36) NOT NULL, `last_update_time` BIGINT(20) NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- _, err = db.Sql("CREATE TABLE IF NOT EXISTS `sys_permission` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `perms` VARCHAR(100) NOT NULL, `domain` VARCHAR(255) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `last_update_by` VARCHAR(36) NOT NULL, `last_update_time` BIGINT(20) NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- _, err = db.Sql("CREATE TABLE IF NOT EXISTS `sys_role_menu` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `role_id` VARCHAR(36) NOT NULL, `menu_id` VARCHAR(36) NOT NULL, `domain` VARCHAR(255) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `last_update_by` VARCHAR(36) NOT NULL, `last_update_time` BIGINT(20) NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- _, err = db.Sql("CREATE TABLE IF NOT EXISTS `sys_role` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `name` VARCHAR(36) NOT NULL, `code` VARCHAR(36) NOT NULL, `remark` VARCHAR(100) NOT NULL, `status` INT NOT NULL, `domain` VARCHAR(50) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `last_update_by` VARCHAR(36) NOT NULL, `last_update_time` BIGINT(20) NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- _, err = db.Sql("CREATE TABLE IF NOT EXISTS `sys_user_role` (`id` VARCHAR(36) PRIMARY KEY NOT NULL, `user_id` VARCHAR(36) NOT NULL, `role_id` VARCHAR(36) NOT NULL, `domain` VARCHAR(50) NOT NULL, `create_by` VARCHAR(36) NOT NULL, `create_time` DATETIME NOT NULL, `last_update_by` VARCHAR(36) NOT NULL, `last_update_time` BIGINT(20) NOT NULL, `del_flag` INT NOT NULL)").Execute()
- if err != nil {
- return err
- }
- //平台插入管理员
- _, err = c.apiengine.PlatformOrmEngine.Insert(users)
- if err != nil {
- return err
- }
- //域插入角色
- _, err = db.Insert(roles)
- if err != nil {
- return err
- }
- _, err = db.Insert(userRoles)
- if err != nil {
- return err
- }
- return nil
- }
|