当前位置: 首页 > wzjs >正文

免费制作网站的步骤 怎样做网站网络营销工具

免费制作网站的步骤 怎样做网站,网络营销工具,Wordpress多站点为什么注册不了,中安消防安全网站建设介绍 系统中的路由配置可以根据用户的身份、角色或其他权限信息动态生成,而不是固定在系统中。不同的用户根据其权限会看到不同的路由,访问不同的页面。对应各部门不同的权限。 效果 [{"id": 1,"menuName": "用户管理"…

介绍

系统中的路由配置可以根据用户的身份、角色或其他权限信息动态生成,而不是固定在系统中。不同的用户根据其权限会看到不同的路由,访问不同的页面。对应各部门不同的权限。

效果

[{"id": 1,"menuName": "用户管理","path": "/user","icon": null,"child": [{"id": 2,"menuName": "个人中心","path": "/info","icon": null,"child": [{"id": 7,"menuName": "修改密码","path": "/alterPassword","icon": null}]},{"id": 3,"menuName": "添加用户","path": "/addUser","icon": null}]},{"id": 4,"menuName": "系统管理","path": "/sysManange","icon": null,"child": [{"id": 5,"menuName": "站点配置","path": "/siteConfig","icon": null}]}
]

用户表设计

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (`id` int(11) NOT NULL COMMENT '编号',`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '用户名',PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;INSERT INTO `user` VALUES (1, 'dpc520');SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

角色表设计

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `role`;
CREATE TABLE `role`  (`id` int(11) NOT NULL COMMENT '编号',`role_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '角色名称',`role_key` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '权限字符串',PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;INSERT INTO `role` VALUES (1, '超级管理员', 'admin');SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

菜单表设计

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu`  (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID',`menu_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '菜单名称',`parent_id` int(11) NULL DEFAULT NULL COMMENT '父亲ID',`path` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '路由路径',`icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT '图标',PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;INSERT INTO `menu` VALUES (1, '用户管理', 0, '/user', NULL);
INSERT INTO `menu` VALUES (2, '个人中心', 1, '/info', NULL);
INSERT INTO `menu` VALUES (3, '添加用户', 1, '/addUser', NULL);
INSERT INTO `menu` VALUES (4, '系统管理', 0, '/sysManange', NULL);
INSERT INTO `menu` VALUES (5, '站点配置', 4, '/siteConfig', NULL);
INSERT INTO `menu` VALUES (7, '修改密码', 2, '/alterPassword', NULL);SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

用户与角色关联

对应不同用户的身份

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role`  (`user_id` int(11) NOT NULL COMMENT '用户id',`role_id` int(11) NOT NULL COMMENT '角色id',PRIMARY KEY (`user_id`, `role_id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Fixed;INSERT INTO `user_role` VALUES (1, 1);SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

角色与菜单关联

对应不同角色查看不同菜单的权限

在这里插入图片描述

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `role_menu`;
CREATE TABLE `role_menu`  (`role_id` int(11) NOT NULL COMMENT '角色ID',`menu_id` int(11) NOT NULL COMMENT '菜单ID',PRIMARY KEY (`role_id`, `menu_id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Fixed;INSERT INTO `role_menu` VALUES (1, 1);
INSERT INTO `role_menu` VALUES (1, 2);
INSERT INTO `role_menu` VALUES (1, 3);
INSERT INTO `role_menu` VALUES (1, 4);
INSERT INTO `role_menu` VALUES (1, 5);
INSERT INTO `role_menu` VALUES (1, 7);SET FOREIGN_KEY_CHECKS = 1;

SQL语句

根据用户ID,查出对应的角色,根据角色查出对应的菜单

SELECT m.id ,m.menu_name ,m.parent_id,m.path,m.icon FROM user u
LEFT JOIN user_role ur ON ur.user_id=u.id
LEFT JOIN role r ON ur.role_id=r.id
LEFT JOIN role_menu rm ON  rm.role_id=r.id
LEFT JOIN menu m  ON  rm.menu_id=m.id
WHERE u.id=1 ORDER BY m.parent_id ASC

查出数据
在这里插入图片描述

后端根据id和parent_id进行菜单的匹配


控制器

@RestController
@RequestMapping("/menu")
@RequiredArgsConstructor
public class MenuController {private final IMenuService menuService;@GetMapping("/getMenu")public List<Menu> getMenu(){return menuService.getMenuList();}}

实体类

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("menu")
public class Menu implements Serializable {private static final long serialVersionUID = 1L;/*** 菜单ID*/@TableId(value = "id", type = IdType.AUTO)private Integer id;/*** 菜单名称*/@TableField("menu_name")private String menuName;/*** 父亲ID*/@TableField("parent_id")@JsonIgnore // 不返回该字段private Integer parentId;/*** 路由路径*/@TableField("path")private String path;/*** 菜单图标*/@TableField("icon")private String icon;/*** 子菜单*/@JsonInclude(JsonInclude.Include.NON_NULL)@TableField(exist=false)List<Menu> child;}

业务层

@Service 
@RequiredArgsConstructor
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {private final MenuMapper mapper;/*** 获取菜单列表* @return 返回构建好的菜单列表(包含顶级菜单及其子菜单)*/@Overridepublic List<Menu> getMenuList() {// 从数据库获取所有菜单列表List<Menu> list = mapper.getMenuList();// 创建一个返回给前端的菜单列表List<Menu> returnList = new ArrayList<Menu>();// 遍历数据库中获取的菜单列表for (Iterator<Menu> iterator = list.iterator(); iterator.hasNext();){// 获取当前菜单Menu t = iterator.next();// 判断是否为顶级菜单(ParentId 为 0)if (t.getParentId() == 0){// 如果是顶级菜单,查找并设置其子菜单recursionFn(list, t);// 将该菜单加入到返回列表returnList.add(t);}}// 返回构建好的菜单列表return returnList;}/*** 递归查找并设置子菜单* @param list 菜单列表* @param t 当前菜单(可能是父菜单)*/private void recursionFn(List<Menu> list, Menu t){// 获取当前菜单的所有子菜单List<Menu> childList = getChildList(list, t);// 设置当前菜单的子菜单t.setChild(childList);// 遍历子菜单,递归处理每个子菜单的子菜单for (Menu tChild : childList){if (hasChild(list, tChild)){// 如果子菜单还有子菜单,递归调用recursionFn(list, tChild);}}}/*** 获取某个菜单的所有子菜单* @param list 菜单列表* @param t 当前菜单(父菜单)* @return 当前菜单的子菜单列表*/private List<Menu> getChildList(List<Menu> list, Menu t){// 存储当前菜单的子菜单List<Menu> tlist = new ArrayList<Menu>();// 使用迭代器遍历菜单列表Iterator<Menu> it = list.iterator();while (it.hasNext()){// 获取当前菜单Menu n = it.next();// 如果菜单的 ParentId 等于当前菜单的 ID,表示该菜单是当前菜单的子菜单if (n.getParentId() == t.getId()){// 将子菜单添加到子菜单列表中tlist.add(n);}}// 返回子菜单列表return tlist;}/*** 判断一个菜单是否有子菜单* @param list 菜单列表* @param t 当前菜单(父菜单)* @return 如果当前菜单有子菜单则返回 true,否则返回 false*/private boolean hasChild(List<Menu> list, Menu t){// 如果获取的子菜单列表的大小大于 0,说明当前菜单有子菜单return getChildList(list, t).size() > 0;}
}

数据层

<select id="getMenuList"  resultMap="menuList">SELECT m.id ,m.menu_name ,m.parent_id,m.path,m.icon FROM user uLEFT JOIN user_role ur ON ur.user_id=u.idLEFT JOIN role r ON ur.role_id=r.idLEFT JOIN role_menu rm ON  rm.role_id=r.idLEFT JOIN menu m  ON  rm.menu_id=m.idWHERE u.id=1 ORDER BY m.parent_id ASC
</select><resultMap id="menuList" type="com.role.web.pojo.Menu" autoMapping="true"><id property="id" column="id"></id><result property="menuName" column="menu_name"></result>
</resultMap>
http://www.dtcms.com/wzjs/426083.html

相关文章:

  • 网站建设需求问卷产品如何做市场推广
  • 政府网站开发项目书网络公司网络推广服务
  • 云空间网站2021年年度关键词排名
  • 国家和住房城乡建设部网站首页百度广告投放平台
  • 网站模板中心 网站推荐免费注册个人网站不花钱
  • 成都网站建设科技公司百度客服中心人工在线咨询
  • 低价网站建设多少钱杭州网站建设 seo
  • 企业网站cms源码cpu优化软件
  • 福州网站建设机构企业seo的措施有哪些
  • 集团网站开发360站长平台
  • logo模板素材六年级下册数学优化设计答案
  • 阿里云如何搭建网站搜索引擎优化的基本原理
  • dreamweaver怎么制作网站谷歌seo课程
  • 中堂仿做网站足球世界排名
  • 广州品牌网站建设网站的网络推广
  • wordpress post data做网络优化哪家公司比较好
  • 做网批有专门的网站吗市场策划方案
  • 中国社交网站做多外国人的线上推广策略
  • 东莞南城做网站广州网站制作公司
  • 网站维护电话网页设计可以自学吗
  • 国内网站空间主机营销案例网站
  • 长沙网站制作公司在哪里班级优化大师的利和弊
  • 百度开放云做网站怎么做线上推广
  • 做网站赌博的推广是不是犯罪的百度seo建议
  • 济南网站优化建设如何做一个网站
  • 南京网站开发南京乐识专业营销培训课程2022
  • 商城类网站建设步骤b站推广网站2024
  • 在大网站做网页广告需要多少钱优势的seo网站优化排名
  • 网站美工的重要性汽车网络营销推广方案
  • 网站开发管理课程设计说明网站快速排名