Browse Source

添加APP功能菜单

huangyh 6 năm trước cách đây
mục cha
commit
5920a9ca7d

+ 157 - 0
controllers/gen/SysAppController_gen.go

@@ -0,0 +1,157 @@
+package gen
+
+import (
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/partial"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
+	"github.com/gin-gonic/gin"
+)
+
+// SysAppController operations for SysApp
+type SysAppController struct {
+	apiengine *engine.ApiEngine
+}
+
+func NewSysAppController(e *engine.ApiEngine) *SysAppController {
+	controller := &SysAppController{e}
+	return controller
+}
+
+// AddAppFun
+// @Title AddAppFun
+// @Description 添加APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /add_app_fun  [post,get,put]
+func (c *SysAppController) AddAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_AddAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// DelAppFun
+// @Title DelAppFun
+// @Description 删除app功能
+// @Param	id    string  false  "APP功能ID"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /del_app_fun  [post,get,put]
+func (c *SysAppController) DelAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_DelAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// UpdateAppFun
+// @Title UpdateAppFun
+// @Description 更新APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /update_app_fun  [post,get,put]
+func (c *SysAppController) UpdateAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_UpdateAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// FindAppFunPage
+// @Title FindAppFunPage
+// @Description 分页获取APP功能
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /find_app_fun_page  [get,post]
+func (c *SysAppController) FindAppFunPage(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_FindAppFunPage(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// GetAppFunTree
+// @Title GetAppFunTree
+// @Description 获取APP功能树
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /get_app_fun_tree  [get,post]
+func (c *SysAppController) GetAppFunTree(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_GetAppFunTree(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// AddRoleAppFun
+// @Title AddRoleAppFun
+// @Description 添加角色APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /add_role_app_fun  [post,get,put]
+func (c *SysAppController) AddRoleAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_AddRoleAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// DelRoleAppFun
+// @Title DelRoleAppFun
+// @Description 删除角色APP功能
+// @Param	id    string  false  "APP功能ID"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /del_role_app_fun  [post,get,put]
+func (c *SysAppController) DelRoleAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_DelRoleAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// UpdateRoleAppFun
+// @Title UpdateRoleAppFun
+// @Description 更新角色APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /update_role_app_fun  [post,get,put]
+func (c *SysAppController) UpdateRoleAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_UpdateRoleAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// GetRoleAppFun
+// @Title GetRoleAppFun
+// @Description 获取角色APP功能
+// @Param	role_id    string  false  "角色id"
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /get_role_app_fun  [get]
+func (c *SysAppController) GetRoleAppFun(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_GetRoleAppFun(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// FindRoleAppFunPage
+// @Title FindRoleAppFunPage
+// @Description 分页获取角色APP功能
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /find_role_app_fun_page  [get,post]
+func (c *SysAppController) FindRoleAppFunPage(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_FindRoleAppFunPage(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}
+
+// GetRoleAppFunTree
+// @Title GetRoleAppFunTree
+// @Description 获取角色APP功能树
+// @Success 200 {object} sysReturn
+// @Failure 403 :id is empty
+// @router /get_role_app_fun_tree  [get,post]
+func (c *SysAppController) GetRoleAppFunTree(ctx *gin.Context) {
+	//
+	db := c.apiengine.BusinessOrmEngine[ctx.GetString("domain")]
+	partial.SysApp_GetRoleAppFunTree(&entitys.CtrlContext{c.apiengine, ctx, db, c.apiengine.PlatformOrmEngine})
+}

+ 330 - 0
controllers/partial/SysAppController.go

@@ -0,0 +1,330 @@
+package partial
+
+import (
+	"fmt"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
+	"time"
+
+	//sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
+	sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
+	sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
+	"strconv"
+	//__import_packages__
+)
+
+// _AddAppFun
+// @Title _AddAppFun
+// @Description 添加APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_AddAppFun(c *entitys.CtrlContext) {
+	var paramObj0 models.SysAppFun
+	c.Ctx.BindJSON(&paramObj0)
+
+	user_id := c.Ctx.GetString("user_id")
+
+	paramObj0.Id = sysutils.NewUUID()
+	paramObj0.CreateBy = user_id
+	paramObj0.LastUpdateBy = user_id
+	paramObj0.CreateTime = models.NowLocal()
+	paramObj0.LastUpdateTime = time.Now().UnixNano()
+	paramObj0.DelFlag = 0
+
+	if paramObj0.Parent != "" {
+		parentNodes := []sysmodel.SysAppFun{}
+		err := c.Db.SqlMapClient("select_parent_app_fun", paramObj0.Parent).Find(&parentNodes)
+		if err != nil {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
+		paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
+	} else {
+		paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
+	}
+
+	paramMap, err := sysutils.BeanToMap(&paramObj0)
+	_, err = c.Db.SqlMapClient("insert_sys_app_fun", paramMap).Execute()
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+}
+
+// _DelAppFun
+// @Title _DelAppFun
+// @Description 删除app功能
+// @Param	id    string  false  "APP功能ID"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_DelAppFun(c *entitys.CtrlContext) {
+	type Param struct {
+		Id string `json:"id"`
+	}
+	var params []Param
+	c.Ctx.BindJSON(&params)
+	ids := []string{}
+	for _, param := range params {
+		ids = append(ids, param.Id)
+	}
+
+	_, err := c.Db.Table(new(models.SysAppFun)).In("id", ids).Update(map[string]interface{}{"del_flag": 1})
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
+// _UpdateAppFun
+// @Title _UpdateAppFun
+// @Description 更新APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_UpdateAppFun(c *entitys.CtrlContext) {
+	var paramObj0 models.SysAppFun
+	c.Ctx.BindJSON(&paramObj0)
+
+	tk, _ := c.Ctx.Get("token")
+	user := tk.(*entitys.Token)
+
+	if paramObj0.Parent != "" {
+		parentNodes := []sysmodel.SysAppFun{}
+		err := c.Db.SqlMapClient("select_parent_app_fun", paramObj0.Parent).Find(&parentNodes)
+		if err != nil {
+			c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+			return
+		}
+		paramObj0.Inheritance = fmt.Sprintf("|%s%s", paramObj0.Id, parentNodes[0].Inheritance)
+	} else {
+		paramObj0.Inheritance = fmt.Sprintf("|%s|", paramObj0.Id)
+	}
+
+	paramObj0.LastUpdateBy = user.UserId
+	paramObj0.LastUpdateTime = time.Now().UnixNano()
+
+	paramMap, err := sysutils.BeanToMap(&paramObj0)
+	_, err = c.Db.SqlMapClient("update_sys_app_fun", paramMap).Execute()
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+}
+
+// _FindAppFunPage
+// @Title _FindAppFunPage
+// @Description 分页获取APP功能
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_FindAppFunPage(c *entitys.CtrlContext) {
+
+	page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
+	rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
+
+	name := c.Ctx.DefaultQuery("name", "")
+	code := c.Ctx.DefaultQuery("code", "")
+	cn_id := c.Ctx.DefaultQuery("cn_id", "")
+	hidden := c.Ctx.DefaultQuery("hidden", "")
+
+	paramMap_i_t := map[string]interface{}{"page": page, "rows": rows, "name": name, "code": code, "cn_id": cn_id, "hidden": hidden}
+	result, err := sysutils.PageSearch(c.Db, "sys_app", "find_app_fun_page", "sys_app_fun", paramMap_i_t)
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+
+}
+
+// _GetAppFunTree
+// @Title _GetAppFunTree
+// @Description 获取APP功能树
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_GetAppFunTree(c *entitys.CtrlContext) {
+
+	code := c.Ctx.DefaultQuery("code", "")
+
+	paramMap_i_t := map[string]interface{}{"sort": "name", "code": code}
+	result, err := sysutils.TreeSearch(c.Db, "sys_app", "get_app_fun_tree", "sys_app_fun", paramMap_i_t)
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+
+}
+
+// _AddRoleAppFun
+// @Title _AddRoleAppFun
+// @Description 添加角色APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_AddRoleAppFun(c *entitys.CtrlContext) {
+	user_id := c.Ctx.GetString("user_id")
+
+	var paramObj0 struct {
+		AppFunIds []string `json:"app_fun_ids"`
+		RoleId    string   `json:"role_id"`
+	}
+
+	c.Ctx.BindJSON(&paramObj0)
+
+	session := c.Db.NewSession()
+	defer session.Close()
+	session.Begin()
+	_, err := session.SqlMapClient("del_role_app_fun", paramObj0.RoleId).Execute()
+	if err != nil {
+		session.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return
+	}
+
+	var roleAppFuns []*sysmodel.SysRoleAppFun
+	for _, menu := range paramObj0.AppFunIds {
+		roleAppFun := &sysmodel.SysRoleAppFun{}
+		roleAppFun.Id = sysutils.NewUUID()
+		roleAppFun.AppFunId = menu
+		roleAppFun.RoleId = paramObj0.RoleId
+		roleAppFun.CreateBy = user_id
+		roleAppFun.CreateTime = sysmodel.NowLocal()
+
+		roleAppFuns = append(roleAppFuns, roleAppFun)
+	}
+
+	_, err = session.InsertMulti(&roleAppFuns)
+	if err != nil {
+		session.Rollback()
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, 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})
+	}
+}
+
+// _DelRoleAppFun
+// @Title _DelRoleAppFun
+// @Description 删除角色APP功能
+// @Param	id    string  false  "APP功能ID"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_DelRoleAppFun(c *entitys.CtrlContext) {
+	id := c.Ctx.Query("id")
+
+	ret := __none_func_sys_app__(id)
+	if ret {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
+// _UpdateRoleAppFun
+// @Title _UpdateRoleAppFun
+// @Description 更新角色APP功能
+// @Param	    string  false  "功能"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_UpdateRoleAppFun(c *entitys.CtrlContext) {
+	var paramObj0 models.SysRoleAppFun
+	c.Ctx.BindJSON(&paramObj0)
+	ret := __none_func_sys_app__(paramObj0)
+	if ret {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", nil})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
+// _GetRoleAppFunTree
+// @Title _GetRoleAppFunTree
+// @Description 获取角色APP功能
+// @Param	role_id    string  false  "角色id"
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_GetRoleAppFun(c *entitys.CtrlContext) {
+	role_id := c.Ctx.Query("role_id")
+
+	paramMap := map[string]interface{}{"user_id": "", "sort": "name", "hidden": 0}
+	sysTree, err := sysutils.TreeSearch(c.Db, "sys_app", "get_app_fun_tree", "sys_app_fun", paramMap)
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return
+	}
+
+	paramMap2 := map[string]interface{}{"role_id": role_id}
+	roleAppFun, err := c.Db.SqlMapClient("get_role_app_fun_tree", &paramMap2).Query().List()
+	if err != nil {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+		return
+	}
+
+	roleTree, err := sysutils.BuildTree("", roleAppFun)
+
+	ret := __none_func_system__(role_id)
+	if ret {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", map[string]interface{}{"sys_tree": sysTree, "role_tree": roleTree}})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, "", nil})
+	}
+}
+
+// _FindRoleAppFunPage
+// @Title _FindRoleAppFunPage
+// @Description 分页获取角色APP功能
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_FindRoleAppFunPage(c *entitys.CtrlContext) {
+
+	page, _ := strconv.Atoi(c.Ctx.DefaultQuery("page", "1"))
+	rows, _ := strconv.Atoi(c.Ctx.DefaultQuery("rows", "10"))
+
+	paramMap_i_t := map[string]interface{}{"page": page, "rows": rows}
+	result, err := sysutils.PageSearch(c.Db, "sys_app", "find_role_app_fun_page", "sys_role_app_fun", paramMap_i_t)
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+
+}
+
+// _GetRoleAppFunTree
+// @Title _GetRoleAppFunTree
+// @Description 获取角色APP功能树
+// @Success 200 {object} Account
+// @Failure 403 :id is empty
+func SysApp_GetRoleAppFunTree(c *entitys.CtrlContext) {
+
+	user_id := c.Ctx.GetString("user_id")
+	code := c.Ctx.DefaultQuery("code", "")
+
+	paramMap_i_t := map[string]interface{}{"sort": "name", "user_id": user_id, "code": code}
+	result, err := sysutils.TreeSearch(c.Db, "sys_app", "get_role_app_fun_tree", "sys_role_app_fun", paramMap_i_t)
+
+	if err == nil {
+		c.Ctx.JSON(200, sysmodel.SysReturn{200, "", result})
+	} else {
+		c.Ctx.JSON(500, sysmodel.SysReturn{500, err.Error(), nil})
+	}
+
+}
+
+func __none_func_sys_app__(params ...interface{}) bool {
+	return true
+}

+ 94 - 0
light-apiengine.xml

@@ -582,6 +582,65 @@
                 </return>
             </api>
         </controller>
+        <controller name="sys_app" desc="APP相关功能接口">
+            <api name="add_app_fun" desc="添加APP功能" method="post,get,put">
+                <param name="" ref="$sys_app_fun" type="string" desc="功能"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="del_app_fun" desc="删除app功能" method="post,get,put">
+                <param name="id"  type="string" desc="APP功能ID"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="update_app_fun" desc="更新APP功能" method="post,get,put">
+                <param name="" ref="$sys_app_fun" type="string" desc="功能"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="find_app_fun_page" desc="分页获取APP功能" function="page" table="sys_app_fun" method="get,post" >
+            </api>
+            <api name="get_app_fun_tree" desc="获取APP功能树" function="tree" table="sys_app_fun" method="get,post" >
+            </api>
+            <api name="add_role_app_fun" desc="添加角色APP功能" method="post,get,put">
+                <param name="" ref="$sys_role_app_fun" type="string" desc="功能"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="del_role_app_fun" desc="删除角色APP功能" method="post,get,put">
+                <param name="id"  type="string" desc="APP功能ID"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="update_role_app_fun" desc="更新角色APP功能" method="post,get,put">
+                <param name="" ref="$sys_role_app_fun" type="string" desc="功能"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="get_role_app_fun" desc="获取角色APP功能" method="get">
+                <param name="role_id"  type="string" desc="角色id"/>
+                <return>
+                    <success ref="$sys_return"></success>
+                    <failure ref="$sys_return"></failure>
+                </return>
+            </api>
+            <api name="find_role_app_fun_page" desc="分页获取角色APP功能" function="page" table="sys_role_app_fun" method="get,post" >
+            </api>
+            <api name="get_role_app_fun_tree" desc="获取角色APP功能树" function="tree" table="sys_role_app_fun" method="get,post" >
+            </api>
+        </controller>
     </controllers>
     <beans>
         <bean name="sys_org_tree" desc="组织架构" inher="$sys_org">
@@ -962,5 +1021,40 @@
             <column isNull="false" name="last_update_time" caption="最后更新时间" type="int64" />
             <column isNull="false" name="del_flag" caption="是否删除 1:删除   0:正常" type="int32"/>
         </table>
+        <table name="sys_app_fun" desc="APP功能表">
+            <column isNull="false" isPK="true" name="id" caption="主键" dbtype="varchar(36)"
+                    type="string" size="36">
+                <auto value="$uuid" update="false">
+                </auto>
+            </column>
+            <column isNull="false" name="name" caption="名称" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="code" caption="编码" type="string" size="100" dbtype="varchar(100)"/>
+            <column isNull="true" name="parent" caption="父模块ID,一级菜单为null" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="true" name="inheritance" caption="继承关系" type="string" size="500" dbtype="varchar(500)"/>
+            <column isNull="false" name="icon" caption="icon图标" type="string" size="100" dbtype="varchar(100)"/>
+            <column isNull="false" name="imgae" caption="图片" type="string" size="100" dbtype="varchar(100)"/>
+            <column isNull="false" name="url" caption="跳转地址" type="string" size="100" dbtype="varchar(100)"/>
+            <column isNull="false" name="order_num" caption="排序" type="int32"/>
+            <column isNull="false" name="hidden" caption="是否隐藏 1:隐藏   0:显示" type="int32"/>
+            <column isNull="false" name="create_by" caption="创建人" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="create_time" caption="创建时间" type="local_time" />
+            <column isNull="false" name="last_update_by" caption="最后更新人" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="last_update_time" caption="最后更新时间" type="int64" />
+            <column isNull="false" name="del_flag" caption="是否删除 1:删除   0:正常" type="int32"/>
+        </table>
+        <table name="sys_role_app_fun" desc="角色对应APP功能">
+            <column isNull="false" isPK="true" name="id" caption="主键" dbtype="varchar(36)"
+                    type="string" size="36">
+                <auto value="$uuid" update="false">
+                </auto>
+            </column>
+            <column isNull="false" name="role_id" caption="角色ID" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="app_fun_id" caption="APP功能ID" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="create_by" caption="创建人" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="create_time" caption="创建时间" type="local_time" />
+            <column isNull="false" name="last_update_by" caption="最后更新人" type="string" size="36" dbtype="varchar(36)"/>
+            <column isNull="false" name="last_update_time" caption="最后更新时间" type="int64" />
+            <column isNull="false" name="del_flag" caption="是否删除 1:删除   0:正常" type="int32"/>
+        </table>
     </tables>
 </application>

+ 47 - 0
models/SysAppFun_gen.go

@@ -0,0 +1,47 @@
+package models
+
+import (
+//__import_packages__
+)
+
+type SysAppFun struct {
+	//主键
+	Id string `xorm:"'id' varchar(36) pk notnull "json:"id"`
+	//名称
+	Name string `xorm:"'name' varchar(36) notnull "json:"name"`
+	//编码
+	Code string `xorm:"'code' varchar(100) notnull "json:"code"`
+	//父模块ID,一级菜单为null
+	Parent string `xorm:"'parent' varchar(36) null "json:"parent"`
+	//继承关系
+	Inheritance string `xorm:"'inheritance' varchar(500) null "json:"inheritance"`
+	//icon图标
+	Icon string `xorm:"'icon' varchar(100) notnull "json:"icon"`
+	//图片
+	Imgae string `xorm:"'imgae' varchar(100) notnull "json:"imgae"`
+	//跳转地址
+	Url string `xorm:"'url' varchar(100) notnull "json:"url"`
+	//排序
+	OrderNum int32 `xorm:"'order_num' notnull "json:"order_num"`
+	//是否隐藏 1:隐藏   0:显示
+	Hidden int32 `xorm:"'hidden' notnull "json:"hidden"`
+	//创建人
+	CreateBy string `xorm:"'create_by' varchar(36) notnull "json:"create_by"`
+	//创建时间
+	CreateTime LocalTime `xorm:"'create_time' notnull "json:"create_time"`
+	//最后更新人
+	LastUpdateBy string `xorm:"'last_update_by' varchar(36) notnull "json:"last_update_by"`
+	//最后更新时间
+	LastUpdateTime int64 `xorm:"'last_update_time' notnull "json:"last_update_time"`
+	//是否删除 1:删除   0:正常
+	DelFlag int32 `xorm:"'del_flag' notnull "json:"del_flag"`
+}
+
+func (t *SysAppFun) TableName() string {
+	return "sys_app_fun"
+}
+
+func init() {
+	AddTableName("sys_app_fun")
+	RegisterModel(new(SysAppFun))
+}

+ 33 - 0
models/SysRoleAppFun_gen.go

@@ -0,0 +1,33 @@
+package models
+
+import (
+//__import_packages__
+)
+
+type SysRoleAppFun struct {
+	//主键
+	Id string `xorm:"'id' varchar(36) pk notnull "json:"id"`
+	//角色ID
+	RoleId string `xorm:"'role_id' varchar(36) notnull "json:"role_id"`
+	//APP功能ID
+	AppFunId string `xorm:"'app_fun_id' varchar(36) notnull "json:"app_fun_id"`
+	//创建人
+	CreateBy string `xorm:"'create_by' varchar(36) notnull "json:"create_by"`
+	//创建时间
+	CreateTime LocalTime `xorm:"'create_time' notnull "json:"create_time"`
+	//最后更新人
+	LastUpdateBy string `xorm:"'last_update_by' varchar(36) notnull "json:"last_update_by"`
+	//最后更新时间
+	LastUpdateTime int64 `xorm:"'last_update_time' notnull "json:"last_update_time"`
+	//是否删除 1:删除   0:正常
+	DelFlag int32 `xorm:"'del_flag' notnull "json:"del_flag"`
+}
+
+func (t *SysRoleAppFun) TableName() string {
+	return "sys_role_app_fun"
+}
+
+func init() {
+	AddTableName("sys_role_app_fun")
+	RegisterModel(new(SysRoleAppFun))
+}

+ 55 - 0
routers/sys_app_gen.go

@@ -0,0 +1,55 @@
+package routers
+
+import (
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/controllers/gen"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/engine"
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/middleware"
+)
+
+func init() {
+	addRegisterHandler(registerSysAppRouter)
+}
+
+func registerSysAppRouter(e *engine.ApiEngine) {
+	api := e.GinEngine.Group("/api")
+	v1 := api.Group("/v1/sys_app")
+	v1.Use(middleware.LoginWare())
+	if len(_router["sys_app"]) > 0 {
+		v1.Use(_router["sys_app"]...)
+	}
+	ctrler := gen.NewSysAppController(e)
+
+	v1.GET("/add_app_fun", ctrler.AddAppFun)
+	v1.POST("/add_app_fun", ctrler.AddAppFun)
+
+	v1.GET("/del_app_fun", ctrler.DelAppFun)
+	v1.POST("/del_app_fun", ctrler.DelAppFun)
+
+	v1.GET("/update_app_fun", ctrler.UpdateAppFun)
+	v1.POST("/update_app_fun", ctrler.UpdateAppFun)
+
+	v1.GET("/find_app_fun_page", ctrler.FindAppFunPage)
+	v1.POST("/find_app_fun_page", ctrler.FindAppFunPage)
+
+	v1.GET("/get_app_fun_tree", ctrler.GetAppFunTree)
+	v1.POST("/get_app_fun_tree", ctrler.GetAppFunTree)
+
+	v1.GET("/add_role_app_fun", ctrler.AddRoleAppFun)
+	v1.POST("/add_role_app_fun", ctrler.AddRoleAppFun)
+
+	v1.GET("/del_role_app_fun", ctrler.DelRoleAppFun)
+	v1.POST("/del_role_app_fun", ctrler.DelRoleAppFun)
+
+	v1.GET("/update_role_app_fun", ctrler.UpdateRoleAppFun)
+	v1.POST("/update_role_app_fun", ctrler.UpdateRoleAppFun)
+
+	v1.GET("/get_role_app_fun", ctrler.GetRoleAppFun)
+	//v1.POST("/get_role_app_fun",ctrler.GetRoleAppFun)
+
+	v1.GET("/find_role_app_fun_page", ctrler.FindRoleAppFunPage)
+	v1.POST("/find_role_app_fun_page", ctrler.FindRoleAppFunPage)
+
+	v1.GET("/get_role_app_fun_tree", ctrler.GetRoleAppFunTree)
+	v1.POST("/get_role_app_fun_tree", ctrler.GetRoleAppFunTree)
+
+}

+ 18 - 0
sqlconfig/light-apiengine-develop/sys_app_fun.xml

@@ -0,0 +1,18 @@
+<sqlMap>
+    <sql id="select_parent_app_fun">
+        select
+        `id`,`name`,`code`,`parent`,`inheritance`,`icon`,`imgae`,`url`,`order_num`,`hidden`,`create_by`,`create_time`,`last_update_by`,`last_update_time`,`del_flag`
+        from sys_app_fun where id = ?
+    </sql>
+    <sql id="select_sys_app_fun">
+        select
+        `id`,`name`,`code`,`parent`,`inheritance`,`icon`,`imgae`,`url`,`order_num`,`hidden`,`create_by`,`create_time`,`last_update_by`,`last_update_time`,`del_flag`
+        from sys_app_fun where del_flag = 0
+    </sql>
+    <sql id="delete_all_sys_app_fun">
+        delete from sys_app_fun
+    </sql>
+    <sql id="delete_backend_sys_app_fun">
+        delete from sys_app_fun where sys_app_fun.type >= 0
+    </sql>
+</sqlMap>

+ 10 - 0
sqlconfig/light-apiengine-develop/sys_role.xml

@@ -16,7 +16,17 @@
         and sys_role_menu.role_id = ?role_id
         and sys_menu.del_flag = 0
     </sql>
+    <sql id="get_role_app_fun_tree">
+        select sys_app_fun.* from sys_app_fun, sys_role_app_fun
+        where
+        sys_app_fun.id = sys_role_app_fun.app_fun_id
+        and sys_role_app_fun.role_id = ?role_id
+        and sys_app_fun.del_flag = 0
+    </sql>
     <sql id="del_role_menu">
         delete from sys_role_menu where role_id = ?
     </sql>
+    <sql id="del_role_app_fun">
+        delete from sys_role_app_fun where role_id = ?
+    </sql>
 </sqlMap>

+ 16 - 0
sqlconfig/sys_app_controller/sys_app_find_app_fun_page_count.tpl

@@ -0,0 +1,16 @@
+
+select
+    count(*) records
+from
+    sys_app_fun
+where
+	del_flag = 0
+{{if ne .name ""}}
+    and sys_app_fun.name like '%{{.name}}%'
+{{end}}
+{{if ne .code ""}}
+    and sys_app_fun.code like '%{{.code}}%'
+{{end}}
+{{if ne .cn_id ""}}
+    and sys_app_fun.inheritance like '%{{.cn_id}}%'
+{{end}}

+ 18 - 0
sqlconfig/sys_app_controller/sys_app_find_app_fun_page_select.tpl

@@ -0,0 +1,18 @@
+
+select
+    sys_app_fun.*
+from
+    sys_app_fun
+where
+    del_flag = 0
+{{if ne .name ""}}
+    and sys_app_fun.name like '%{{.name}}%'
+{{end}}
+{{if ne .code ""}}
+    and sys_app_fun.code like '%{{.code}}%'
+{{end}}
+{{if ne .cn_id ""}}
+    and sys_app_fun.inheritance like '%{{.cn_id}}%'
+{{end}}
+order by order_num
+LIMIT {{.rows}} OFFSET {{.offset}}

+ 7 - 0
sqlconfig/sys_app_controller/sys_app_find_role_app_fun_page_count.tpl

@@ -0,0 +1,7 @@
+
+select
+    count(*) records
+from
+    sys_role_app_fun
+where
+	del_flag = 0

+ 8 - 0
sqlconfig/sys_app_controller/sys_app_find_role_app_fun_page_select.tpl

@@ -0,0 +1,8 @@
+
+select
+    sys_role_app_fun.*
+from
+    sys_role_app_fun
+where
+    del_flag = 0
+LIMIT {{.rows}} OFFSET {{.offset}}

+ 6 - 0
sqlconfig/sys_app_controller/sys_app_get_app_fun_tree.tpl

@@ -0,0 +1,6 @@
+select
+    *
+from
+    sys_app_fun
+where
+    del_flag = 0

+ 38 - 0
sqlconfig/sys_app_controller/sys_app_get_role_app_fun_tree.tpl

@@ -0,0 +1,38 @@
+{{if ne .code ""}}
+        SELECT
+    	    DISTINCT sys_app_fun.id,
+            sys_app_fun.*
+        FROM
+            sys_role_app_fun
+        LEFT JOIN
+            sys_app_fun
+        ON
+            sys_role_app_fun.app_fun_id = sys_app_fun.id
+        LEFT JOIN
+            sys_role
+        ON
+            sys_role.id = sys_role_app_fun.role_id
+        LEFT JOIN
+            sys_user_role
+        ON
+            sys_user_role.role_id = sys_role.id
+        LEFT JOIN
+            (SELECT * FROM sys_app_fun WHERE sys_app_fun.code = '{{.code}}') parent
+        ON
+    	sys_app_fun.inheritance LIKE CONCAT('%',parent.id,'%')
+        WHERE
+            sys_app_fun.del_flag = 0
+            and parent.code = '{{.code}}'
+        {{if ne .user_id ""}}
+            and sys_user_role.user_id = '{{.user_id}}'
+        {{end}}
+{{else}}
+    select
+        sys_app_fun.*
+    from
+        sys_role_app_fun,
+        sys_app_fun
+    where
+        sys_role_app_fun.app_fun_id = sys_app_fun.id
+        and del_flag = 0
+{{end}}