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

怎么开网站使用vue做的商城网站

怎么开网站,使用vue做的商城网站,中文域名是什么,wordpress转到手机端十一、后台模块-菜单列表 菜单指的是权限菜单#xff0c;也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表#xff0c;不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…十一、后台模块-菜单列表 菜单指的是权限菜单也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径 是否需求token头 GET system/menu/list 是 请求参数是query格式的  { status : 状态menuName 菜单名 } 响应格式: {code:200,data:[{component:组件路径,icon:build,id:2023,isFrame:1,menuName:菜单名称,menuType:C,orderNum:0,parentId:0,path:write,perms:权限字符串,remark:备注信息,status:0,visible:0},{icon:system,id:1,isFrame:1,menuName:菜单名称,menuType:M,orderNum:1,parentId:0,path:system,perms:权限字符串,remark:备注信息,status:0,visible:0}],msg:操作成功 } 2.2 代码实现 第一步: 在keke-framework工程的Vo目录新建MenuVo类写入如下用于把指定字段返回给前端 package com.keke.domain.vo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data NoArgsConstructor AllArgsConstructor public class AdminMenuVo {//菜单IDprivate Long id;//菜单名称private String menuName;//父菜单IDprivate Long parentId;//显示顺序private Integer orderNum;//路由地址private String path;//组件路径private String component;//是否为外链0是 1否private Integer isFrame;//菜单类型M目录 C菜单 F按钮private String menuType;//菜单状态0显示 1隐藏private String visible;//菜单状态0正常 1停用private String status;//权限标识private String perms;//菜单图标private String icon;//备注private String remark; }第二步: 在keke-admin工程的controller目录新建MenuController类写入如下是查询菜单列表的访问接口 package com.keke.controller;import com.keke.domain.ResponseResult; import com.keke.domain.entity.Menu; import com.keke.service.MenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/system/menu) public class MenuController {Autowiredprivate MenuService menuService;//查询菜单列表GetMapping(/list)public ResponseResult selectAllMenu(Menu menu){return menuService.selectAllMenu(menu);} }第三步把keke-framework工程的MenuService接口修改为如下增加了查询菜单列表的接口 package com.keke.service;import com.baomidou.mybatisplus.extension.service.IService; import com.keke.domain.ResponseResult; import com.keke.domain.entity.Menu;import java.util.List;/*** 菜单权限表(Menu)表服务接口** author makejava* since 2023-10-18 20:55:48*/ public interface MenuService extends IServiceMenu {//查询用户权限信息ListString selectPermsByUserId(Long userId);//查询用户的路由信息也就是权限菜单ListMenu selectRouterMenuTreeByUserId(Long userId);ResponseResult selectAllMenu(Menu menu);}第四步: 把keke-framework工程的MenuServiceImpl类修改为如下增加了查询菜单列表的具体代码实现 package com.keke.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.keke.constants.SystemConstants; import com.keke.domain.ResponseResult; import com.keke.domain.entity.Menu; import com.keke.domain.vo.AdminMenuVo; import com.keke.mapper.MenuMapper; import com.keke.service.MenuService; import com.keke.utils.BeanCopyUtils; import com.keke.utils.SecurityUtils; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils;import java.util.List; import java.util.function.Function; import java.util.stream.Collectors;/*** 菜单权限表(Menu)表服务实现类** author makejava* since 2023-10-18 20:55:48*/ Service(menuService) public class MenuServiceImpl extends ServiceImplMenuMapper, Menu implements MenuService {//根据用户id查询权限关键字Overridepublic ListString selectPermsByUserId(Long userId) {//如果用户id为1代表管理员roles 中只需要有admin// permissions中需要有所有菜单类型为C(菜单)或者F(按钮)的状态为正常的未被删除的权限if(SecurityUtils.isAdmin()) {LambdaQueryWrapperMenu lambdaQueryWrapper new LambdaQueryWrapper();lambdaQueryWrapper.in(Menu::getMenuType, SystemConstants.MENU, SystemConstants.BUTTON);lambdaQueryWrapper.eq(Menu::getStatus, SystemConstants.STATUS_NORMAL);//由于我们的逻辑删除字段已经配置了所以无需封装lambdaQueryWrapperListMenu menuList list(lambdaQueryWrapper);//我们需要的是String类型的集合这里我们要进行数据的处理这里采用流的方式ListString permissions menuList.stream().map(new FunctionMenu, String() {Overridepublic String apply(Menu menu) {String perms menu.getPerms();return perms;}}).collect(Collectors.toList());return permissions;}//否则返回这个用户所具有的权限//这里我们需要进行连表查询因为我们的用户先和角色关联然后角色才跟权限关联MenuMapper menuMapper getBaseMapper();//我们期望menuMapper中有一个方法可以直接帮我们去实现这个复杂的逻辑这里直接返回return menuMapper.selectPermsByUserId(userId);}Overridepublic ListMenu selectRouterMenuTreeByUserId(Long userId) {MenuMapper menuMapper getBaseMapper();ListMenu menus null;//如果是管理员返回所有if(SecurityUtils.isAdmin()){menus menuMapper.selectAllRoutersMenu();}else {//如果不是管理员返回对应用户的菜单menus menuMapper.selectRoutersMenuTreeByUserId(userId);}//因为上面的查询都是从数据库进行查询所以无法封装children这里构建TreeListMenu menuTree buildMenuTree(menus,0L);return menuTree;}Overridepublic ResponseResult selectAllMenu(Menu menu) {//可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询LambdaQueryWrapperMenu lambdaQueryWrapper new LambdaQueryWrapper();lambdaQueryWrapper.like(StringUtils.hasText(menu.getMenuName()),Menu::getMenuName,menu.getMenuName());lambdaQueryWrapper.eq(StringUtils.hasText(menu.getStatus()),Menu::getStatus,menu.getStatus());//排序 parent_id和order_numlambdaQueryWrapper.orderByAsc(Menu::getParentId,Menu::getOrderNum);ListMenu menus list(lambdaQueryWrapper);ListAdminMenuVo adminMenuVos BeanCopyUtils.copyBeanList(menus, AdminMenuVo.class);return ResponseResult.okResult(adminMenuVos);}/*** 构建MenuTree* 思路先找第一层级的菜单就是找到id于parentId的对应关系然后把parentId设置为Id的children* param menus* return*/private ListMenu buildMenuTree(ListMenu menus,Long parentId) {//转化流处理ListMenu menuTree menus.stream()//过滤掉除一级菜单之外的菜单.filter(menu - menu.getParentId().equals(parentId))//然后将获取其子菜单设置到children字段并返回.map(m - m.setChildren(gerChildren(m, menus))).collect(Collectors.toList());return menuTree;}//获取当前菜单的子菜单private ListMenu gerChildren(Menu menu, ListMenu menus) {//流处理遍历每一个流对象筛选出流对象的parentIdmenu的id即过滤ListMenu children menus.stream().filter(m - m.getParentId().equals(menu.getId()))//这里其实不必要写这一步的逻辑是如果有三级//可以把流对象中再过筛选出子菜单设置给对应的children并返回.map(m - m.setChildren(gerChildren(m,menus))).collect(Collectors.toList());return children;}}2.3 测试 运行前端工程打开redis打开菜单管理 2. 新增菜单 2.1 接口分析 新增权限菜单 请求方式 请求路径 是否需求token头 POST system/menu 是 请求体参数: Menu类对应的json格式 响应格式: {code:200,msg:操作成功 } 2.2 代码实现 第一步: 把keke-framework工程的Menu类修改为如下注意有四个字段使用了mybatisplus的字段自增 package com.keke.domain.entity;import java.util.Date; import java.util.List;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import com.baomidou.mybatisplus.annotation.TableName; import lombok.experimental.Accessors;/*** 菜单权限表(Menu)表实体类** author makejava* since 2023-10-18 20:55:24*/ SuppressWarnings(serial) Data NoArgsConstructor AllArgsConstructor Accessors(chain true) TableName(sys_menu) public class Menu {//菜单IDprivate Long id;//菜单名称private String menuName;//父菜单IDprivate Long parentId;//显示顺序private Integer orderNum;//路由地址private String path;//组件路径private String component;//是否为外链0是 1否private Integer isFrame;//菜单类型M目录 C菜单 F按钮private String menuType;//菜单状态0显示 1隐藏private String visible;//菜单状态0正常 1停用private String status;//权限标识private String perms;//菜单图标private String icon;//创建者TableField(fill FieldFill.INSERT)private Long createBy;//创建时间TableField(fill FieldFill.INSERT)private Date createTime;//更新者TableField(fill FieldFill.INSERT_UPDATE)private Long updateBy;//更新时间TableField(fill FieldFill.INSERT_UPDATE)private Date updateTime;//备注private String remark;private String delFlag;//由于数据库没有children字段所以我们要添加TableField(exist false)注解// 让mybatis在查表时不查询这个字段TableField(exist false)private ListMenu children; }第二步: 把huanf-framework工程的MenuController类修改为如下增加了新增菜单的具体代码实现 package com.keke.controller;import com.keke.domain.ResponseResult; import com.keke.domain.entity.Menu; import com.keke.service.MenuService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;RestController RequestMapping(/system/menu) public class MenuController {Autowiredprivate MenuService menuService;//查询菜单列表GetMapping(/list)public ResponseResult selectAllMenu(Menu menu){return menuService.selectAllMenu(menu);}//新增菜单PostMappingpublic ResponseResult add(RequestBody Menu menu) {menuService.save(menu);return ResponseResult.okResult();}}2.3 测试 启动工程打开前端工程redis 测试在 系统管理 页面点击 新增能否可以添加测试目录类型的菜单
http://www.w-s-a.com/news/618787/

相关文章:

  • 南宁网站推广费用创意网页设计素材模板
  • 深圳技术支持 骏域网站建设wordpress 酒主题
  • 东莞网站建设+旅游网站改版数据来源表改怎么做
  • 手机端做的优秀的网站设计企业做网站大概多少钱
  • 优化网站使用体验手机网站解析域名
  • 网站制作 商务做网站的软件名字全拼
  • 阿里巴巴网官方网站温州网站建设设计
  • 传奇购买域名做网站国外网站设计 网址
  • 西安凤城二路网站建设seo网站是什么
  • 网站后台如何更换在线qq咨询代码在线种子资源网
  • 东莞网站优化制作免费中文wordpress主题下载
  • 东莞建筑设计院排名网络优化论文
  • 做牙工作网站郑州前端开发培训机构
  • 温州专业建站网站制作的管理
  • 公司网站开发策划书有没有专门做教程的网站
  • 江苏省工程建设信息网站一天赚1000块钱的游戏
  • 制作响应式网站报价品牌建设整体体系包括什么
  • 网站推广策划报告目前做win7系统最好的网站
  • 东莞网站建设咨询公江西网站建设平台
  • 什么是网站功能源码下载站
  • 石家庄制作网站的公司双柏县住房和城乡建设局网站
  • 影视vip网站建设教程ppt模板免费下载 素材红色
  • 内蒙古城乡建设部网站首页平台网站建设ppt
  • 集约化网站建设项目官方网站建设
  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品
  • 免费建网站代码查询做导员的网站
  • 做网站的软件电子可以看女人不易做网站
  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设