diff --git a/business/jxstore/cms/permission.go b/business/jxstore/cms/permission.go index bd4478436..f201b00ef 100644 --- a/business/jxstore/cms/permission.go +++ b/business/jxstore/cms/permission.go @@ -2,6 +2,7 @@ package cms import ( "fmt" + "time" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -17,14 +18,14 @@ func AddMenu(ctx *jxcontext.Context, menu *model.Menu) (err error) { db = dao.GetDB() ) if menu == nil { - return fmt.Errorf("添加失败!function nil") + return fmt.Errorf("添加失败!menu nil") } if menu.Name == "" || menu.Level == 0 { - return fmt.Errorf("添加失败!function 名称和等级必须有值!") + return fmt.Errorf("添加失败!menu 名称和等级必须有值!") } menus, err := dao.GetMenu(db, menu.Name, menu.Level) if len(menus) > 0 { - return fmt.Errorf("添加失败!已存在相同名称的 fuction name : %v", menu.Name) + return fmt.Errorf("添加失败!已存在相同名称的 menu name : %v", menu.Name) } dao.Begin(db) defer func() { @@ -38,3 +39,36 @@ func AddMenu(ctx *jxcontext.Context, menu *model.Menu) (err error) { dao.Commit(db) return err } + +func UpdateMenu(ctx *jxcontext.Context, menuID int, payload map[string]interface{}, isDelete bool) (num int64, err error) { + var ( + db = dao.GetDB() + ) + menu := &model.Menu{} + menu.ID = menuID + err = dao.GetEntity(db, menu) + if err != nil { + return 0, err + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + if !isDelete { + valid := dao.StrictMakeMapByStructObject(payload, menu, ctx.GetUserName()) + if len(valid) > 0 { + if num, err = dao.UpdateEntityLogically(db, menu, valid, ctx.GetUserName(), nil); err != nil { + dao.Rollback(db) + return 0, err + } + } + } else { + menu.DeletedAt = time.Now() + num, err = dao.UpdateEntity(db, menu, "DeletedAt") + } + dao.Commit(db) + return num, err +} diff --git a/controllers/permission.go b/controllers/permission.go index 9ad211e3f..74cca41f9 100644 --- a/controllers/permission.go +++ b/controllers/permission.go @@ -40,3 +40,22 @@ func (c *PowerController) GetMenu() { return retVal, "", err }) } + +// @Title 修改功能(菜单) +// @Description 修改功能(菜单) +// @Param token header string true "认证token" +// @Param payload formData string true "Menu json实体" +// @Param menuID formData int true "菜单ID" +// @Param isDelete formData bool true "是否是删除" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateMenu [put] +func (c *PowerController) UpdateMenu() { + c.callUpdateMenu(func(params *tPowerUpdateMenuParams) (retVal interface{}, errCode string, err error) { + payload := make(map[string]interface{}) + if err = utils.UnmarshalUseNumber([]byte(params.Payload), payload); err == nil { + retVal, err = cms.UpdateMenu(params.Ctx, params.MenuID, payload, params.IsDelete) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 5b66a9281..64420960d 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1449,6 +1449,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:PowerController"], + beego.ControllerComments{ + Method: "UpdateMenu", + Router: `/UpdateMenu`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ReportController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:ReportController"], beego.ControllerComments{ Method: "AutoFocusStoreSkus",