|
|
@@ -0,0 +1,180 @@
|
|
|
+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
|
|
|
+
|
|
|
+}
|