diff --git a/core/src/main/java/com/dite/znpt/constant/Message.java b/core/src/main/java/com/dite/znpt/constant/Message.java index 5736018..c12a266 100644 --- a/core/src/main/java/com/dite/znpt/constant/Message.java +++ b/core/src/main/java/com/dite/znpt/constant/Message.java @@ -31,6 +31,7 @@ public class Message implements Serializable { public static final String POST_ID_NOT_EXIST = "岗位id不存在"; public static final String POST_ID_NOT_EXIST_OR_ILLEGAL = "岗位id不存在或者不合法"; public static final String ROLE_ID_NOT_EXIST = "角色id不存在"; + public static final String ROLE_CODE_EXIST = "角色编码已经存在"; public static final String ROLE_ID_NOT_EXIST_OR_ILLEGAL = "角色id不存在或者不合法"; public static final String MENU_ID_NOT_EXIST = "菜单id不存在"; public static final String MENU_ID_NOT_EXIST_OR_ILLEGAL = "菜单id不存在或者不合法"; diff --git a/core/src/main/java/com/dite/znpt/context/UserContext.java b/core/src/main/java/com/dite/znpt/context/UserContext.java index fdd2bdf..e92b61c 100644 --- a/core/src/main/java/com/dite/znpt/context/UserContext.java +++ b/core/src/main/java/com/dite/znpt/context/UserContext.java @@ -4,7 +4,7 @@ package com.dite.znpt.context; import cn.hutool.extra.spring.SpringUtil; import com.dite.znpt.domain.vo.UserResp; -import com.dite.znpt.service.RedisService; +import com.dite.znpt.service.impl.RedisService; /** * @author wujinsong diff --git a/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java index 4758cd4..7161d33 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/MenuEntity.java @@ -67,4 +67,8 @@ public class MenuEntity extends AuditableEntity implements Serializable { @ApiModelProperty("权限标识") @TableField("perms") private String perms; + + @ApiModelProperty("终端类型(PC-电脑端,APP-移动端)") + @TableField("terminal_type") + private String terminalType; } diff --git a/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java b/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java index 43331dd..cf47658 100644 --- a/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java +++ b/core/src/main/java/com/dite/znpt/domain/entity/RoleEntity.java @@ -38,6 +38,11 @@ public class RoleEntity extends AuditableEntity implements Serializable { @TableField("role_name") private String roleName; + @ExcelProperty("角色编码") + @ApiModelProperty("角色编码") + @TableField("role_code") + private String roleCode; + @ExcelProperty("角色权限字符") @ApiModelProperty("角色权限字符") @TableField("role_key") diff --git a/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java b/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java index 5783322..b283c5b 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/MenuReq.java @@ -47,6 +47,10 @@ public class MenuReq implements Serializable { @ApiModelProperty("参数") private String perms; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "终端类型不能为空") + @ApiModelProperty("终端类型") + private String terminalType; + } diff --git a/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java b/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java index 40134e0..3e44035 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/RoleReq.java @@ -26,6 +26,11 @@ public class RoleReq implements Serializable { @ApiModelProperty("角色名称") private String roleName; + @NotBlank(groups = {ValidationGroup.Insert.class, ValidationGroup.Update.class}, message = "角色编码不能为空") + @Size(max = 20, message = "角色编码不能超过20个字符") + @ApiModelProperty("角色编码") + private String roleCode; + @NotBlank(groups = {ValidationGroup.Insert.class}, message = "角色权限字符不能为空") @Size(groups = {ValidationGroup.Insert.class}, max = 20, message = "角色权限字符不能超过20个字符") @ApiModelProperty("角色权限字符") diff --git a/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java b/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java index a8c5390..22853e6 100644 --- a/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java +++ b/core/src/main/java/com/dite/znpt/domain/vo/RoleResp.java @@ -25,6 +25,9 @@ public class RoleResp implements Serializable { @ApiModelProperty("角色名称") private String roleName; + @ApiModelProperty("角色编码") + private String roleCode; + @ApiModelProperty("角色权限字符") private String roleKey; diff --git a/core/src/main/java/com/dite/znpt/enums/TerminalTypeEnum.java b/core/src/main/java/com/dite/znpt/enums/TerminalTypeEnum.java new file mode 100644 index 0000000..70f5d0e --- /dev/null +++ b/core/src/main/java/com/dite/znpt/enums/TerminalTypeEnum.java @@ -0,0 +1,50 @@ +package com.dite.znpt.enums; + +import cn.hutool.json.JSONObject; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: gaoxiong + * @Date: 2025/6/24 21:53 + * @Description: + */ +@Getter +public enum TerminalTypeEnum { + PC("PC","电脑端"), + APP("APP","移动端"); + + private final String code; + private final String desc; + + TerminalTypeEnum(String code, String desc){ + this.code = code; + this.desc = desc; + } + + public static TerminalTypeEnum getByCode(String code){ + for (TerminalTypeEnum e : TerminalTypeEnum.values() ) { + if(e.code.equals(code)){ + return e; + } + } + return null; + } + + public static String getDescByCode(String code){ + TerminalTypeEnum e = getByCode(code); + return null == e ? null : e.desc; + } + + public static List listAll(){ + List list = new ArrayList<>(TerminalTypeEnum.values().length); + for (TerminalTypeEnum e : TerminalTypeEnum.values() ) { + JSONObject jsonObject = new JSONObject(); + jsonObject.set(e.code, e.desc); + list.add(jsonObject); + } + return list; + } +} diff --git a/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java b/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java index 831a489..56b6d3f 100644 --- a/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java +++ b/core/src/main/java/com/dite/znpt/mapper/MenuMapper.java @@ -20,7 +20,7 @@ public interface MenuMapper extends BaseMapper { * @param menuName * @return **/ - List upwardRecursionSelect(@Param("menuName") String menuName); + List upwardRecursionSelect(@Param("menuName") String menuName, @Param("terminalType") String terminalType); /** * @Author Bear.G @@ -29,5 +29,5 @@ public interface MenuMapper extends BaseMapper { * @param menuId * @return **/ - List downwardRecursionSelect(@Param("menuId") String menuId); + List downwardRecursionSelect(@Param("menuId") String menuId, @Param("terminalType") String terminalType); } diff --git a/core/src/main/java/com/dite/znpt/service/MenuService.java b/core/src/main/java/com/dite/znpt/service/MenuService.java index d57c773..e87f2bb 100644 --- a/core/src/main/java/com/dite/znpt/service/MenuService.java +++ b/core/src/main/java/com/dite/znpt/service/MenuService.java @@ -15,7 +15,7 @@ import java.util.List; */ public interface MenuService extends IService { - List> tree(String menuName); + List> tree(String menuName, String terminalType); MenuResp detail(String menuId); void save(MenuReq req); void update(String menuId, MenuReq req); diff --git a/core/src/main/java/com/dite/znpt/service/impl/AuthServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/AuthServiceImpl.java index 36e9d97..29591f1 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/AuthServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/AuthServiceImpl.java @@ -2,25 +2,30 @@ package com.dite.znpt.service.impl; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpUtil; +import cn.dev33.satoken.stp.parameter.SaLoginParameter; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentInfo; +import cn.hutool.http.useragent.UserAgentUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.dite.znpt.constant.Constants; import com.dite.znpt.converts.Converts; import com.dite.znpt.domain.Result; -import com.dite.znpt.domain.entity.DeptEntity; -import com.dite.znpt.domain.entity.MenuEntity; -import com.dite.znpt.domain.entity.RoleMenuEntity; -import com.dite.znpt.domain.entity.UserEntity; +import com.dite.znpt.domain.entity.*; import com.dite.znpt.domain.vo.LoginReq; import com.dite.znpt.domain.vo.RoleResp; import com.dite.znpt.domain.vo.UserInfo; +import com.dite.znpt.enums.TerminalTypeEnum; import com.dite.znpt.service.*; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.List; @@ -61,13 +66,16 @@ public class AuthServiceImpl implements AuthService { }catch (Exception e){ return Result.error(Constants.PASSWORD_EXCEPTION, Constants.PASSWORD_EXCEPTION_MESSAGE); } - if(!user.getStatus().equals(Constants.STATUS_1)){ + if(!user.getStatus().equals(Constants.STATUS_0)){ return Result.error(Constants.USER_DISABLE_EXCEPTION, Constants.USER_DISABLE_EXCEPTION_MESSAGE); } if(user.getIsDefaultPassword()){ return Result.error(Constants.DEFAULT_PASSWORD_EXCEPTION, Constants.DEFAULT_PASSWORD_EXCEPTION_MESSAGE); } - StpUtil.login(user.getUserId()); + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = servletRequestAttributes.getRequest(); + UserAgent userAgent = UserAgentUtil.parse(request .getHeader("User-Agent")); + StpUtil.login(user.getUserId(), new SaLoginParameter().setDeviceType(userAgent.isMobile() ? TerminalTypeEnum.APP.getCode() : TerminalTypeEnum.PC.getCode())); saveSession(user.getUserId()); return Result.ok(StpUtil.getTokenInfo()); } @@ -110,9 +118,13 @@ public class AuthServiceImpl implements AuthService { if(CollUtil.isEmpty(roleIds)){ return new ArrayList<>(); } - List menuIds = roleMenuService.list(Wrappers.lambdaQuery(RoleMenuEntity.class).in(CollUtil.isNotEmpty(roleIds), RoleMenuEntity::getRoleId, roleIds)).stream().map(RoleMenuEntity::getMenuId).toList(); + List menuIds = roleMenuService.list( + Wrappers.lambdaQuery(RoleMenuEntity.class) + .in(CollUtil.isNotEmpty(roleIds), RoleMenuEntity::getRoleId, roleIds) + ).stream().map(RoleMenuEntity::getMenuId).toList(); List menuList = menuService.list( - Wrappers.lambdaQuery(MenuEntity.class).in(CollUtil.isNotEmpty(menuIds), MenuEntity::getMenuId,menuIds) + Wrappers.lambdaQuery(MenuEntity.class) + .in(CollUtil.isNotEmpty(menuIds), MenuEntity::getMenuId,menuIds).eq(MenuEntity::getTerminalType, StpUtil.getLoginDeviceType()) ).stream().filter(menu -> Constants.VISIBLE_0.equals(menu.getVisible())).toList(); return MenuServiceImpl.buildMenuTree(menuList); } diff --git a/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java index 3034c91..ed656af 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/MenuServiceImpl.java @@ -1,5 +1,6 @@ package com.dite.znpt.service.impl; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.lang.tree.TreeNodeConfig; import cn.hutool.core.lang.tree.TreeUtil; @@ -27,8 +28,8 @@ import java.util.List; public class MenuServiceImpl extends ServiceImpl implements MenuService { @Override - public List> tree(String menuName) { - List menuList = StrUtil.isBlank(menuName) ? this.baseMapper.downwardRecursionSelect(null) : this.baseMapper.upwardRecursionSelect(menuName); + public List> tree(String menuName, String terminalType) { + List menuList = StrUtil.isBlank(menuName) ? this.baseMapper.downwardRecursionSelect(null, terminalType) : this.baseMapper.upwardRecursionSelect(menuName, terminalType); return buildMenuTree(menuList); } diff --git a/core/src/main/java/com/dite/znpt/service/RedisService.java b/core/src/main/java/com/dite/znpt/service/impl/RedisService.java similarity index 94% rename from core/src/main/java/com/dite/znpt/service/RedisService.java rename to core/src/main/java/com/dite/znpt/service/impl/RedisService.java index 485ba3d..6145799 100644 --- a/core/src/main/java/com/dite/znpt/service/RedisService.java +++ b/core/src/main/java/com/dite/znpt/service/impl/RedisService.java @@ -1,17 +1,10 @@ -package com.dite.znpt.service; +package com.dite.znpt.service.impl; -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; -import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component; import java.util.*; diff --git a/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java b/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java index fa1cb66..543d507 100644 --- a/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java +++ b/core/src/main/java/com/dite/znpt/service/impl/RoleServiceImpl.java @@ -1,5 +1,6 @@ package com.dite.znpt.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -45,6 +46,10 @@ public class RoleServiceImpl extends ServiceImpl impleme @Transactional(rollbackFor = Exception.class) @Override public void save(RoleReq req) { + List roles = this.list(Wrappers.lambdaQuery(RoleEntity.class).eq(RoleEntity::getRoleCode, req.getRoleCode()).eq(RoleEntity::getDelFlag, Constants.DEL_FLAG_0)); + if(CollUtil.isNotEmpty(roles)){ + throw new ServiceException(Message.ROLE_CODE_EXIST); + } RoleEntity entity = Converts.INSTANCE.toRoleEntity(req); this.save(entity); } @@ -52,10 +57,16 @@ public class RoleServiceImpl extends ServiceImpl impleme @Transactional(rollbackFor = Exception.class) @Override public void update(String roleId, RoleReq req) { - RoleEntity originEntity = this.getById(roleId); - if(null == originEntity || !Constants.DEL_FLAG_0.equals(originEntity.getDelFlag())) { + RoleEntity role = this.getById(roleId); + if(null == role || !Constants.DEL_FLAG_0.equals(role.getDelFlag())) { throw new ServiceException(Message.ROLE_ID_NOT_EXIST); } + if(!role.getRoleCode().equals(req.getRoleCode())){ + List roles = this.list(Wrappers.lambdaQuery(RoleEntity.class).eq(RoleEntity::getRoleCode, req.getRoleCode()).eq(RoleEntity::getDelFlag, Constants.DEL_FLAG_0)); + if(CollUtil.isNotEmpty(roles)){ + throw new ServiceException(Message.ROLE_CODE_EXIST); + } + } RoleEntity entity = Converts.INSTANCE.toRoleEntity(req); entity.setRoleId(roleId); entity.setRoleKey(null); diff --git a/core/src/main/resources/mapper/MenuMapper.xml b/core/src/main/resources/mapper/MenuMapper.xml index f2a0ca3..34436b1 100644 --- a/core/src/main/resources/mapper/MenuMapper.xml +++ b/core/src/main/resources/mapper/MenuMapper.xml @@ -6,7 +6,7 @@ WITH RECURSIVE SubMenus AS ( SELECT * FROM menu - + WHERE terminal_type = #{terminalType} AND menu_id = #{menuId} -- 起始菜单ID @@ -33,7 +32,6 @@ AND parent_id = '0' -- 起始菜单 - UNION ALL SELECT d.* FROM menu d INNER JOIN SubMenus sd ON d.parent_id = sd.menu_id ) SELECT * FROM SubMenus; diff --git a/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerCache.java b/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerCache.java index f4b8237..4f13dad 100644 --- a/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerCache.java +++ b/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerCache.java @@ -1,10 +1,9 @@ package com.dite.znpt.monitor.media.zlm.cache; import com.dite.znpt.monitor.media.zlm.dto.ServerItem; -import com.dite.znpt.service.RedisService; +import com.dite.znpt.service.impl.RedisService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; /** diff --git a/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerChannelCache.java b/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerChannelCache.java index df1bb2b..27b7fbb 100644 --- a/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerChannelCache.java +++ b/sip/src/main/java/com/dite/znpt/monitor/media/zlm/cache/MediaServerChannelCache.java @@ -2,7 +2,7 @@ package com.dite.znpt.monitor.media.zlm.cache; import cn.hutool.core.util.StrUtil; import com.dite.znpt.monitor.media.zlm.dto.MediaItem; -import com.dite.znpt.service.RedisService; +import com.dite.znpt.service.impl.RedisService; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/sip/src/main/java/com/dite/znpt/monitor/service/impl/DeviceVideoServiceImpl.java b/sip/src/main/java/com/dite/znpt/monitor/service/impl/DeviceVideoServiceImpl.java index 58444ec..8c00abb 100644 --- a/sip/src/main/java/com/dite/znpt/monitor/service/impl/DeviceVideoServiceImpl.java +++ b/sip/src/main/java/com/dite/znpt/monitor/service/impl/DeviceVideoServiceImpl.java @@ -24,7 +24,7 @@ import com.dite.znpt.monitor.service.DeviceVideoChannelService; import com.dite.znpt.monitor.service.DeviceVideoService; import com.dite.znpt.monitor.sip.transmit.cmd.ISipDeviceCommander; import com.dite.znpt.monitor.utils.DictUtils; -import com.dite.znpt.service.RedisService; +import com.dite.znpt.service.impl.RedisService; import com.github.pagehelper.PageInfo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/sip/src/main/java/com/dite/znpt/monitor/sip/transmit/cmd/impl/SipDeviceCommanderImpl.java b/sip/src/main/java/com/dite/znpt/monitor/sip/transmit/cmd/impl/SipDeviceCommanderImpl.java index bc686a9..72672fc 100644 --- a/sip/src/main/java/com/dite/znpt/monitor/sip/transmit/cmd/impl/SipDeviceCommanderImpl.java +++ b/sip/src/main/java/com/dite/znpt/monitor/sip/transmit/cmd/impl/SipDeviceCommanderImpl.java @@ -6,7 +6,7 @@ import com.dite.znpt.monitor.domain.entity.DeviceVideoEntity; import com.dite.znpt.monitor.media.zlm.ZlmService; import com.dite.znpt.monitor.sip.transmit.cmd.ISipDeviceCommander; import com.dite.znpt.monitor.sip.transmit.cmd.SipRequestHeaderProvider; -import com.dite.znpt.service.RedisService; +import com.dite.znpt.service.impl.RedisService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; diff --git a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java index 8933223..bdefa42 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/CommonController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/CommonController.java @@ -107,8 +107,7 @@ public class CommonController { @ApiOperation(value = "上传图片", httpMethod = "POST") @PostMapping("/upload-image/{imageSource}") - public Result uploadImage(@PathVariable String imageSource, ImageWorkReq workReq, - MultipartFile file) throws IOException { + public Result uploadImage(@PathVariable String imageSource, ImageWorkReq workReq, MultipartFile file) throws IOException { if(null == file){ throw new ServiceException(Message.IMAGE_IS_EMPTY); } @@ -128,5 +127,23 @@ public class CommonController { return Result.ok(MenuTypeEnum.listAll()); } + @ApiOperation(value = "查询终端类型", httpMethod = "GET") + @GetMapping("/list/terminal-type") + public Result listTerminalType(){ + return Result.ok(TerminalTypeEnum.listAll()); + } + + @ApiOperation(value = "查询在职状态", httpMethod = "GET") + @GetMapping("/list/user_status") + public Result listUserStatus(){ + return Result.ok(UserStatusEnum.listAll()); + } + + @ApiOperation(value = "查询员工性质", httpMethod = "GET") + @GetMapping("/list/user_type") + public Result listUserType(){ + return Result.ok(UserTypeEnum.listAll()); + } + } diff --git a/web/src/main/java/com/dite/znpt/web/controller/MenuController.java b/web/src/main/java/com/dite/znpt/web/controller/MenuController.java index cc39b84..2f651f7 100644 --- a/web/src/main/java/com/dite/znpt/web/controller/MenuController.java +++ b/web/src/main/java/com/dite/znpt/web/controller/MenuController.java @@ -25,8 +25,8 @@ public class MenuController { @ApiOperation(value = "查询菜单树", httpMethod = "GET") @GetMapping("/tree") - public Result tree (@RequestParam(name = "menuName", required = false) String menuName) { - return Result.ok(menuService.tree(menuName)); + public Result tree (@RequestParam(name = "menuName", required = false) String menuName, @RequestParam(defaultValue = "PC") String terminalType) { + return Result.ok(menuService.tree(menuName, terminalType)); } @ApiOperation(value = "查询菜单详情", httpMethod = "GET")