商家权限及其菜单资源管理设计
在商家的菜单体系中,我们设计了一个三级菜单,分别为分类、模块和资源。其中,分类菜单是顶级菜单,表示一个微服务应用;模块菜单是一个二级菜单,表示一个应用功能(实体)的主页;资源菜单是三级菜单,表示一个实体的增删改查中某一个具体的操作的权限。
在平台管理后台中,必须对这些菜单进行统一管理。下面就对各个菜单的管理及其设计分别加以说明。
分类菜单管理设计
分类菜单是一个顶级菜单,它所连接的是一个Web微服务应用,如库存管理、订单管理等,所以顶级菜单只在SSO首页中进行展示。
在分类菜单中管理包括增删改查等操作内容,下面以分类菜单查询的设计为例进行说明。首先使用控制器设计MerchantKindController,通过调用商家服务KindRestService取得分类菜单数据;然后将查询结果转换为视图输出,即返回 show.html的视图设计,实现代码如下所示:
@Controller
@RequestMapping("/merchantkind")
public class MerchantKindController {
private static Logger logger =
LoggerFactory.getLogger (MerchantKindController.class);
@Autowired
private 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 的页面内容。其中,页面设计部分的实现代码如下所示:
<html xmlns:th="http://www.thymeleaf.org"><div class= "addInfBtn">
<h3 class="itemTit"><span>分类信息</span></h3><table class="addNewInfList">
<tr>
<th>名称</th>
<td width="240"><input class="inp-list w-200 clear-mr f-left"
type="text" th:value="$ {kind.name}" readonly="true"/></td>
<th>链接服务</th>
<td width="240">
<input class="inp-list w-200 clear-mr f-left" type="text"
th:value="${kind. link] " readonly="true"/>
</td>
</tr><tr>
<th>日期</th><td>
<input onfocus="WdatePicker({dateFmt: 'yyyy-MM-dd HH:mm : ss
type="text" class="inp-list w-200 clear-mr f-left" th:value="$(kind.created) ?$(#dates. format (kind.created,'yyYy-MM-dd HH:mm:ss')] :'"/>
</td>
</tr></table>
<div class="bottomBtnBox">
<a class="btn-93X38 backBtn" href=" javascript:closeDialog(0)">返回</a></div>
</div>