html 后台参数attribute_平台管理后台与商家菜单资源管理:商家权限及其菜单资源管理设计...

商家权限及其菜单资源管理设计

在商家的菜单体系中,我们设计了一个三级菜单,分别为分类、模块和资源。其中,分类菜单是顶级菜单,表示一个微服务应用;模块菜单是一个二级菜单,表示一个应用功能(实体)的主页;资源菜单是三级菜单,表示一个实体的增删改查中某一个具体的操作的权限。

在平台管理后台中,必须对这些菜单进行统一管理。下面就对各个菜单的管理及其设计分别加以说明。

分类菜单管理设计

分类菜单是一个顶级菜单,它所连接的是一个Web微服务应用,如库存管理、订单管理等,所以顶级菜单只在SSO首页中进行展示。

在分类菜单中管理包括增删改查等操作内容,下面以分类菜单查询的设计为例进行说明。首先使用控制器设计MerchantKindController,通过调用商家服务KindRestService取得分类菜单数据;然后将查询结果转换为视图输出,即返回 show.html的视图设计,实现代码如下所示:

@Controller@RequestMapping("/merchantkind")public class MerchantKindController {private static Logger logger =LoggerFactory.getLogger (MerchantKindController.class);@Autowiredprivate KindRestService kindRestService;CRequestMapping(value="/{id} ")public String show(ModelMap model, @PathVariable Long id) {String json = kindRestService.findById(id);model.addAttribute ("kind",new Gson ().fromJson(json, KindQo.class));return "merchantkind/show";}}

在show.html 的视图设计中,通过对话框的方式显示了show.html 的页面内容。其中,页面设计部分的实现代码如下所示:

分类信息

名称链接服务日期
返回

完成设计后的显示效果如图11-3所示。

399ebdbeebc57f567972ffe51826bcfc.png

图11-3所显示的内容是一个“订单系统”的分类菜单的查询信息,其中“链接服务”使用的是订单微服务应用的实例名称。当操作者打开使用微服务名称作为顶级菜单的链接时,将通过服务名称找到相应的链接地址再进行访问。

模块菜单管理设计

模块菜单是商家管理后台的一个二级菜单,它表示一个应用中的一个业务类型。例如,在顶级菜单“订单系统”中可以包含“订单管理”和“订单报表”等模块菜单。

在模块菜单中包括菜单的增删改查等操作内容,下面以新建模块菜单的设计为例进行说明。

如下所示是一个新建模块菜单的控制器MerchantModelController 的设计:

@Controller@RequestMapping ("/merchantmodel")public class MerchantModelController {private static Logger logger =LoggerFactory.getLogger (MerchantModelController.class);@Autowiredprivate KindRestService kindRestService;@Autowiredprivate ModelRestService modelRestService;@RequestMapping( "/new")public String create (ModelMap model,HttpServletRequest request){String json = kindRestService.findList();List kindQos = new Gson() .fromJson(json,newTypeToken>() {-getType());//缓存模块列表request.getSession().setAttribute ("kinds",kindQos);model. addAttribute("kinds", kindQ0s);return "merchantmodel/new";}@RequestMapping(value="/save", method = RequestMethod.POST)@ResponseBodypublic String save (Mode1Qo modelQo,HttpServletRequest request) throwsException {//通过模块工D指定关联对象String kid = request.getParameter ( "kid");//获取模块列表List kindQos =(List)request.getsession().getAttribute("kinds");for(KindQo kindQo : kindQos){if (kindQo.getId() .compareTo (new Long (kid)) == 0){modelQ0. setKind(kindQo);break;}}String ret = modelRestService.create (modelQ0);logger.info("新增=”+ret);return ret;}}

需要注意的是,这里使用了查询对象ModelQo来获取表单的参数。这与使用实体对象来获

取参数略有不同,即使用查询对象不能得到所天联的对家,所以垃里史n组相对负,而不基示模块所关联的分类对象的ID,然后从我们在会话中保存的对象列表中取得相关对象,而不是

使用kid这样的参数直接取得所关联的分类对象。

在相关页面的视图设计上,也必须要有与之对应的设计。如下所示是一个新建模块菜单的视图new.html的设计:

名称*URL日期分类
20?#strings.substring (kind.name,0,20)+'...' :kind.name } ">*
确定返回

其中,在模块菜单所关联的分类使用的select控件中,使用了kid这个参数来取得分类对象的ID。

在完成设计后,模块菜单管理的显示效果如图11-4所示。

375bd48c0557852d295604906f708d04.png

在图11-4中,URL是进入订单管理主页的一个链接地址,菜单所关联的上级菜单为“订单系统”。从这个设计中可以看出,二级的链接地址是一个应用的主页。

资源菜单管理设计

资源菜单是商家管理后台的一个三级菜单,如对于模块菜单“订单管理”来说,它可以含有“订单修改”和“订单删除”等子菜单。资源菜单是最小的权限管理单元,在权限管理设计中它是角色所关联的访问对象。

在资源菜单中包括增删改查等操作内容,下面以资源编辑的设计为例进行说明。

资源编辑控制器 MerchantResourceController的设计部分的代码如下所示:

@Controller@RequestMapping("/merchantresource")public class MerchantResourceController{private static Logger logger =LoggerFactory.getLogger (MerchantResourceController.class);@Autowiredprivate ResourceRestService resourceRestService;@Autowiredprivate ModelRestService modelRestService;@RequestMapping ("/index")public string index (ModelMap model,Principal user) throws Exception"model .addAttribute( "user",user);return "merchantresource/index";@RequestMapping("/edit/{id} ")public String edit(@PathVariable Long id,ModelMap model, HttpServletRequestrequest) {String json = resourceRestService.findById(id);ResourceQo resourceQo = new Gson().fromJson(json,ResourceQo.classString models - modelRestService.findList();List modelQoList = new Gson().fromJson(models,newTypeToken>() {].getType();//缓存模块列表request.getSession().setAttribute ("models",modelQoList);model .addAttribute( "models",modelQoList);model.addAttribute("resource", resourceQ0);return "merchantresource/edit";}@RequestMapping (method = RequestMethod. POST, value="/update")@ResponseBodypublic String update(ResourceQo resourceQo,HttpServletRequest requestthrows Exception{//通过模块ID指定关联对象String mid - request.getParameter ( "mid");//获取模块列表List modelQos = (List)request.getSession() .getAttribute ( "models");for(ModelQo modelQ0 : modelQos){if (modelQo.getId().compareTo(new Long (mid)) ==0){resourceQo .setModel (modelQ0);break;}}String ret = resourceRestService.update(resourceQ0);logger.info(”修改="+ret);return ret;}}

在进行资源编辑之前,首先取出模块列表,并使用这个模块列表在页面中设计一个下拉框。然后在资源编辑时从这个下拉框中选择一个模块设置它的上级菜单。最后在数据保存时,通过模块D取出相应的对象进行保存。

其对应的页面视图edit.html的设计如下所示:

资源信息

名称*模块
*
URL日期
确定返回<

这里对于模块下拉列表使用了mid的方式进行引用。完成设计后,资源管理的显示效果如图11-5所示。

38d5914c2bd0f9b1843f86bb7cd45b7c.png

从图11-5中可以看出,三级菜单是在一个应用中对某一个实体进行增删改查时的一项操作权限,URL是一个执行订单修改的链接地址。在链接地址后面增加的几个符号“/**”是为了方便权限的检查,也可以省略不用,而所关联的模块菜单“订单管理”就是订单修改的上级菜单。

本文给大家讲解的内容是平台管理后台与商家菜单资源管理:商家权限及其菜单资源管理设计

  1. 下篇文章给大家讲解的是平台管理后台与商家菜单资源管理:商家角色管理设计;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值