Просмотр исходного кода

修改后台菜单bug,完成域增加APP功能

huangyh 6 лет назад
Родитель
Сommit
1ab02fa09c

+ 118 - 0
controllers/partial/SysAppController.go

@@ -324,6 +324,124 @@ func SysApp_GetRoleAppFunTree(c *entitys.CtrlContext) {
 
 }
 
+// _GetDomainAppFunTree
+// @Title _GetDomainAppFunTree
+// @Description 域添加APP功能
+// @Param	domain_id    string  false  "域id"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_GetDomainAppFunTree(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{}{}
+	domainAppFuns, err := c.App.GetBusinessDb(domain.Domain).SqlTemplateClient("sys_app_get_app_fun_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("", domainAppFuns)
+
+	sysAppFuns, err := c.Db.SqlTemplateClient("sys_app_get_app_fun_tree.tpl", &paramMap).Query().List()
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "get sys_menu tree: " + err.Error(), nil})
+		return
+	}
+
+	sysTree, err := sysutils.BuildTree("", sysAppFuns)
+
+	if err == nil {
+		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})
+	}
+}
+
+// _AddDomainAppFuns
+// @Title _AddDomainAppFuns
+// @Description 域添加菜单
+// @Param	      false  "添加域app_fun"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_AddDomainAppFuns(c *entitys.CtrlContext) {
+	var paramObj0 struct {
+		//域名ID
+		DomainId string `json:"domain_id"`
+		//菜单
+		AppFuns []sysmodel.SysAppFun `json:"app_funs"`
+	}
+	err := c.Ctx.BindJSON(&paramObj0)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "BindJSON error: " + err.Error(), nil})
+		return
+	}
+
+	var domain sysmodel.SysDomain
+	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
+	}
+
+	var appFunIds = make([]string, len(paramObj0.AppFuns))
+	for i := range paramObj0.AppFuns {
+		appFunIds[i] = paramObj0.AppFuns[i].Id
+	}
+	var appFuns []sysmodel.SysAppFun
+	err = c.Db.In("id", appFunIds).Find(&appFuns)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "find menu error: " + err.Error(), nil})
+		return
+	}
+	for i := range appFuns {
+		for j := range paramObj0.AppFuns {
+			if appFuns[i].Id == paramObj0.AppFuns[j].Id {
+				appFuns[i].Name = paramObj0.AppFuns[j].Name
+				break
+			}
+		}
+	}
+
+	session := c.App.GetBusinessDb(domain.Domain).NewSession()
+	defer session.Close()
+	session.Begin()
+
+	_, err = c.App.GetBusinessDb(domain.Domain).SQL("delete from sys_app_fun where del_flag = ?", "").Execute()
+	if err != nil {
+		session.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
+		return
+	}
+	if len(paramObj0.AppFuns) <= 0 {
+		session.Commit()
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "the menus is empty", nil})
+		return
+	}
+	_, err = c.App.GetBusinessDb(domain.Domain).Insert(&paramObj0.AppFuns)
+	if err != nil {
+		session.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "Insert menu error: " + err.Error(), nil})
+		return
+	}
+
+	session.Commit()
+
+	ret := __none_func_system__(paramObj0)
+	if ret {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
 func __none_func_sys_app__(params ...interface{}) bool {
 	return true
 }

+ 40 - 4
controllers/partial/SystemController.go

@@ -401,8 +401,7 @@ func System_UpdatePassword(c *entitys.CtrlContext) {
 	var user sysmodel.SysUser
 	err := c.Ctx.BindJSON(&user)
 
-	tk, _ := c.Ctx.Get("token")
-	operator := tk.(*entitys.Token)
+	operatorId := c.Ctx.GetString("user_id")
 
 	if err != nil {
 		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
@@ -411,7 +410,7 @@ func System_UpdatePassword(c *entitys.CtrlContext) {
 
 	user.Password = sysutils.HashPassword(user.Password, "")
 
-	paramMap := map[string]interface{}{"id": user.Id, "password": user.Password, "last_update_time": time.Now().UnixNano(), "last_update_by": operator.UserId}
+	paramMap := map[string]interface{}{"id": user.Id, "password": user.Password, "last_update_time": time.Now().UnixNano(), "last_update_by": operatorId}
 	_, err = c.PlatformDbEngine.SqlMapClient("update_user_password", &paramMap).Execute()
 
 	if err == nil {
@@ -785,14 +784,51 @@ func System_UpdateMenu(c *entitys.CtrlContext) {
 	paramObj0.LastUpdateBy = user.UserId
 	paramObj0.LastUpdateTime = time.Now().UnixNano()
 
+	sess := c.Db.NewSession()
+	sess.Begin()
 	paramMap, err := sysutils.BeanToMap(&paramObj0)
-	_, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
+	_, err = sess.SqlMapClient("update_sys_menu", paramMap).Execute()
+	if err != nil {
+		sess.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+
+	//	查找目录,修改Inheritance值
+	//childrenNodes := []sysmodel.SysMenu{}
+	childrenNode := new(sysmodel.SysMenu)
+	rows, err := sess.SqlMapClient("select_children_menu", paramObj0.Id).Rows(childrenNode)
+	if err != nil {
+		sess.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return
+	}
+
+	defer rows.Close()
+	for rows.Next() {
+		err = rows.Scan(childrenNode)
+		if err != nil {
+			sess.Rollback()
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
+		childrenNode.Inheritance = fmt.Sprintf("%s%s|", paramObj0.Inheritance, childrenNode.Id)
+		childrenNode.LastUpdateBy = user.UserId
+		childrenNode.LastUpdateTime = time.Now().UnixNano()
+		paramMap, _ := sysutils.BeanToMap(childrenNode)
+		_, err = c.Db.SqlMapClient("update_sys_menu", paramMap).Execute()
+		if err != nil {
+			break
+		}
+	}
 
 	if err == nil {
+		sess.Commit()
 		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
 	} else {
+		sess.Rollback()
 		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
 	}
+
 }
 
 // _AddOrg

+ 18 - 0
light-apiengine.xml

@@ -640,6 +640,20 @@
             </api>
             <api name="get_role_app_fun_tree" desc="获取角色APP功能树" function="tree" table="sys_role_app_fun" method="get,post" >
             </api>
+            <api name="get_domain_app_fun_tree" desc="域添加APP功能" method="get,put">
+                <param name="domain_id"  type="string" desc="域id"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="add_domain_app_funs" desc="域添加菜单" method="post,get,put">
+                <param name=""  ref="add_domain_app_funs" desc="添加域app_fun"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
         </controller>
     </controllers>
     <beans>
@@ -708,6 +722,10 @@
             <prop name="domain_id" caption="域名ID" type="string" />
             <prop name="menus" caption="菜单" type="string array" />
         </bean>
+        <bean name="add_domain_app_funs" desc="添加域菜单">
+            <prop name="domain_id" caption="域名ID" type="string" />
+            <prop name="app_funs" caption="功能" type="string array" />
+        </bean>
     </beans>
     <tables>
         <table name="sys_user" desc="用户表">

+ 17 - 0
models/AddDomainAppFuns_gen.go

@@ -0,0 +1,17 @@
+package models
+
+import (
+//__import_packages__
+)
+
+type AddDomainAppFuns struct {
+
+	//域名ID
+	DomainId string `json:"domain_id"`
+	//功能
+	AppFuns []string `json:"app_funs"`
+}
+
+func init() {
+	AddTableName("add_domain_app_funs")
+}

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

@@ -4,6 +4,11 @@
         `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 id = ?
     </sql>
+    <sql id="select_children_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 parent = ?
+    </sql>
     <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`

+ 0 - 2
sqlconfig/system_controller/system_find_menu_page_count.tpl

@@ -31,6 +31,4 @@ where
 {{end}}
 {{if ne .user_id ""}}
     and sys_user.id = '{{.user_id}}'
-{{else}}
-    group by sys_menu.id
 {{end}}