Browse Source

'增加域添加菜单'

huangyh 6 years ago
parent
commit
72ff52defd

+ 26 - 0
controllers/gen/SystemController_gen.go

@@ -396,3 +396,29 @@ func (c *SystemController) UpdateDomain(ctx *gin.Context) {
 	partial.System_UpdateDomain(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
 }
 
+// AddDomainMenu
+// @Title AddDomainMenu
+// @Description 域添加菜单         
+// @Param	      false  "添加域菜单bean"  
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /add_domain_menu  [post,get,put]
+func (c *SystemController) AddDomainMenu(ctx *gin.Context) {
+	//
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.System_AddDomainMenu(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// GetDomainMenuTree
+// @Title GetDomainMenuTree
+// @Description 域添加菜单         
+// @Param	domain_id    string  false  "域id"  
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /get_domain_menu_tree  [get,put]
+func (c *SystemController) GetDomainMenuTree(ctx *gin.Context) {
+	//
+	db:=c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.System_GetDomainMenuTree(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+

+ 61 - 2
controllers/partial/SystemController.go

@@ -791,13 +791,21 @@ func System_AddDomainMenu(c *entitys.CtrlContext) {
 	c.Ctx.BindJSON(&paramObj0)
 
 	var domain sysmodel.SysDomain
-	_, err := c.Db.SqlMapClient("", paramObj0.DomainId).Get(&domain)
+	param := map[string]interface{}{"id": paramObj0.DomainId}
+	_, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
 	if err != nil {
 		c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
 		return
 	}
 
-	_, err = c.App.GetBusinessDb(domain.Domain).Insert(paramObj0.Menus)
+	var menus []sysmodel.SysMenu
+	err = c.Db.In("id", paramObj0.Menus).Find(&menus)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
+		return
+	}
+
+	_, err = c.App.GetBusinessDb(domain.Domain).Insert(&menus)
 	if err != nil {
 		c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
 		return
@@ -811,6 +819,57 @@ func System_AddDomainMenu(c *entitys.CtrlContext) {
 	}
 }
 
+// _GetDomainMenuTree
+// @Title _GetDomainMenuTree
+// @Description 域添加菜单
+// @Param	domain_id    string  false  "域id"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func System_GetDomainMenuTree(c *entitys.CtrlContext) {
+	domain_id := c.Ctx.Query("domain_id")
+
+	var domain sysmodel.SysDomain
+	param := map[string]interface{}{"id": domain_id}
+	_, err := c.Db.SqlMapClient("selectone_sys_domain", &param).Get(&domain)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "not find domain error: " + err.Error(), nil})
+		return
+	}
+
+	paramMap := map[string]interface{}{"sort": "name"}
+	domainMenus, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "get domain_menu tree: " + err.Error(), nil})
+		return
+	}
+	domainTree, err := sysutils.BuildTree("", domainMenus)
+
+	sysMenus, err := c.Db.SqlTemplateClient("system_get_menu_tree.tpl", &paramMap).Query().List()
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
+		return
+	}
+
+	//剔除域已存在的菜单
+	for i, sysMenu := range sysMenus {
+		for _, domainMenu := range domainMenus {
+			if sysMenu["id"].(string) == domainMenu["id"].(string) {
+				//删除数组元素
+				sysMenus = append(sysMenus[:i], sysMenus[i+1:]...)
+			}
+		}
+	}
+
+	sysTree, err := sysutils.BuildTree("", sysMenus)
+
+	ret := __none_func_system__(domain_id)
+	if ret {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "domain_tree": domainTree}})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
 func __none_func_system__(params ...interface{}) bool {
 	return true
 }

+ 8 - 1
light-apiengine.xml

@@ -229,6 +229,13 @@
                     <failure ref="$sys_return"></failure>
                 </return>
             </api>
+            <api name="get_domain_menu_tree" desc="域添加菜单" method="get,put">
+                <param name="domain_id"  type="string" desc="域id"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
         </controller>
         <controller name="api" desc="api接口">
             <api name="api_doc" method="get" desc="api文档">
@@ -298,7 +305,7 @@
         </bean>
         <bean name="add_domain_menu" desc="添加域菜单">
             <prop name="domain_id" caption="域名ID" type="string" />
-            <prop name="menus" caption="菜单" type="$sys_menu array" />
+            <prop name="menus" caption="菜单" type="string array" />
         </bean>
     </beans>
     <tables>

+ 6 - 0
routers/system_gen.go

@@ -108,5 +108,11 @@ func registerSystemRouter(e *engine.ApiEngine){
 	v1.GET("/update_domain",ctrler.UpdateDomain)
 	v1.POST("/update_domain",ctrler.UpdateDomain)
 
+	v1.GET("/add_domain_menu",ctrler.AddDomainMenu)
+	v1.POST("/add_domain_menu",ctrler.AddDomainMenu)
+
+	v1.GET("/get_domain_menu_tree",ctrler.GetDomainMenuTree)
+	//v1.POST("/get_domain_menu_tree",ctrler.GetDomainMenuTree)
+
 }
 

+ 7 - 0
sqlconfig/light-apiengine-develop/sys_menu.xml

@@ -0,0 +1,7 @@
+<sqlMap>
+    <sql id="select_sys_menu">
+        select
+        `id`,`name`,`code`,`parent`,`inheritance`,`url`,`component`,`perms`,`type`,`icon`,`order_num`,`create_by`,`create_time`,`last_update_by`,`last_update_time`,`del_flag`
+        from sys_menu where del_flag = 0
+    </sql>
+</sqlMap>

+ 14 - 14
utils/tree_util.go

@@ -1,25 +1,25 @@
 package utils
 
 import (
-	"github.com/xormplus/xorm"
-	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
-	"fmt"
 	"container/list"
+	"fmt"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
+	"github.com/xormplus/xorm"
 )
 
 // 树形结构
-func TreeSearch(engine *xorm.Engine, controllername string, apiname string, tableName string, paramMap map[string]interface{})([]*models.TreeNode, error){
-	stplkey := fmt.Sprintf("%s_%s.tpl",controllername, apiname)
+func TreeSearch(engine *xorm.Engine, controllername string, apiname string, tableName string, paramMap map[string]interface{}) ([]*models.TreeNode, error) {
+	stplkey := fmt.Sprintf("%s_%s.tpl", controllername, apiname)
 	result, err := engine.SqlTemplateClient(stplkey, &paramMap).Query().List()
-	if err != nil{
+	if err != nil {
 		fmt.Println(err)
 		return nil, err
 	}
 
-	return buildTree("", result)
+	return BuildTree("", result)
 }
 
-func buildTree(root string, treeSrcs []map[string]interface{}) ([]*models.TreeNode, error) {
+func BuildTree(root string, treeSrcs []map[string]interface{}) ([]*models.TreeNode, error) {
 	rootArr := []*models.TreeNode{}
 
 	paramsArr := treeSrcs
@@ -44,7 +44,7 @@ func buildTree(root string, treeSrcs []map[string]interface{}) ([]*models.TreeNo
 				Id:     value,
 				Text:   text,
 				Parent: parent,
-				Tag: params,
+				Tag:    params,
 			}
 			treeNodeList.PushBack(node)
 			rootArr = append(rootArr, node)
@@ -53,7 +53,7 @@ func buildTree(root string, treeSrcs []map[string]interface{}) ([]*models.TreeNo
 				Id:     value,
 				Text:   text,
 				Parent: parent,
-				Tag: params,
+				Tag:    params,
 			})
 		}
 	}
@@ -81,14 +81,14 @@ func buildTree(root string, treeSrcs []map[string]interface{}) ([]*models.TreeNo
 	return rootArr, nil
 }
 
-func toString(v interface{}, defaultValue string)string{
-	if v == nil{
+func toString(v interface{}, defaultValue string) string {
+	if v == nil {
 		return defaultValue
 	}
 	strv, flag := v.(string)
-	if !flag{
+	if !flag {
 		return defaultValue
-	}else{
+	} else {
 		return strv
 	}
 }