修改 前端菜单 管理菜单,角色前后端分配 及通道创建失败的问题

This commit is contained in:
LEED
2025-07-07 22:26:26 +08:00
parent b2cee8aeb7
commit ac40c5e5ec
29 changed files with 899 additions and 81 deletions

View File

@@ -168,7 +168,9 @@ public class SysDeptController extends BaseController
// List<SysMenu> sysMenuList = sysMenuService.selectMenuList(new SysMenu(), 1L, request.getHeader(LANGUAGE));
SysDept sysDept = deptService.selectDeptById(dept.getParentId());
List<SysMenu> sysMenuList = sysMenuService.selectMenuList(new SysMenu(), sysDept.getDeptUserId());
List<SysMenu> sysMenuListF = sysMenuService.selectMenuListF(new SysMenu(), sysDept.getDeptUserId());
Long[] menuIdList = sysMenuList.stream().map(SysMenu::getMenuId).toArray(Long[]::new);
Long[] menuIdListF = sysMenuListF.stream().map(SysMenu::getMenuId).toArray(Long[]::new);
SysRole sysRole = new SysRole();
sysRole.setRoleName("管理员");
sysRole.setRoleKey("manager");
@@ -176,6 +178,7 @@ public class SysDeptController extends BaseController
sysRole.setStatus("0");
sysRole.setDeptId(dept.getDeptId());
sysRole.setMenuIds(menuIdList);
sysRole.setMenuFIds(menuIdListF);
sysRoleService.insertRole(sysRole);
// 注册机构管理员用户

View File

@@ -125,4 +125,13 @@ public class SysLoginController
List<SysMenu> menus = menuService.selectMenuTreeByUserId(userId, request.getHeader(LANGUAGE));
return AjaxResult.success(menuService.buildMenus(menus));
}
@ApiOperation("获取路由信息")
@GetMapping("getBRouters")
public AjaxResult getBusRouters(HttpServletRequest request)
{
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuTreeByUserIdF(userId, request.getHeader(LANGUAGE));
return AjaxResult.success(menuService.buildMenus(menus));
}
}

View File

@@ -42,6 +42,17 @@ public class SysMenuController extends BaseController
List<SysMenu> menus = menuService.selectMenuList(menu, getUserId());
return success(menus);
}
/**
* 获取菜单列表
*/
@ApiOperation("获取菜单列表")
@PreAuthorize("@ss.hasPermi('system:menu:list')")
@GetMapping("/listF")
public AjaxResult listF(SysMenu menu)
{
List<SysMenu> menus = menuService.selectMenuListF(menu, getUserId());
return success(menus);
}
/**
* 根据菜单编号获取详细信息
@@ -54,6 +65,13 @@ public class SysMenuController extends BaseController
return success(menuService.selectMenuById(menuId));
}
@ApiOperation("根据菜单编号获取详细信息")
@PreAuthorize("@ss.hasPermi('system:menu:query')")
@GetMapping(value = "/F/{menuId}")
public AjaxResult getInfoF(@PathVariable Long menuId)
{
return success(menuService.selectMenuByIdF(menuId));
}
/**
* 获取菜单下拉树列表
*/
@@ -65,6 +83,14 @@ public class SysMenuController extends BaseController
return success(menuService.buildMenuTreeSelect(menus));
}
@ApiOperation("获取菜单下拉树列表")
@GetMapping("/treeselectF")
public AjaxResult treeselectF(SysMenu menu)
{
List<SysMenu> menus = menuService.selectMenuListF(menu, getUserId());
return success(menuService.buildMenuTreeSelect(menus));
}
/**
* 加载对应角色菜单列表树
*/
@@ -73,13 +99,23 @@ public class SysMenuController extends BaseController
public AjaxResult roleMenuTreeselect(@RequestParam Long roleId, @RequestParam Long deptId)
{
List<SysMenu> menus = menuService.deptRoleMenuTreeselect(deptId, roleId);
// List<SysMenu> menus = menuService.selectMenuList(getUserId(), request.getHeader(LANGUAGE));
AjaxResult ajax = AjaxResult.success();
ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
ajax.put("menus", menuService.buildMenuTreeSelect(menus));
return ajax;
}
@ApiOperation("加载对应角色菜单列表树")
@GetMapping(value = "/roleMenuTreeselectF")
public AjaxResult roleMenuTreeselectF(@RequestParam Long roleId, @RequestParam Long deptId)
{
List<SysMenu> menus = menuService.deptRoleMenuTreeselectF(deptId, roleId);
AjaxResult ajax = AjaxResult.success();
ajax.put("checkedKeys", menuService.selectMenuListByRoleIdF(roleId));
ajax.put("menus", menuService.buildMenuTreeSelect(menus));
return ajax;
}
/**
* 新增菜单
*/
@@ -100,10 +136,27 @@ public class SysMenuController extends BaseController
menu.setCreateBy(getUsername());
return toAjax(menuService.insertMenu(menu));
}
@ApiOperation("新增菜单")
@PreAuthorize("@ss.hasPermi('system:menu:add')")
@Log(title = "菜单管理", businessType = BusinessType.INSERT)
@PostMapping(value = "/F")
public AjaxResult addF(@Validated @RequestBody SysMenu menu)
{
if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUniqueF(menu)))
{
return error(StringUtils.format(MessageUtils.message("menu.add.failed.name.exists"), menu.getMenuName()));
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
{
return error(StringUtils.format(MessageUtils.message("menu.add.failed.path.not.valid"), menu.getMenuName()));
}
menu.setCreateBy(getUsername());
return toAjax(menuService.insertMenuF(menu));
}
/**
* 修改菜单
*/
@ApiOperation("修改菜单")
@PreAuthorize("@ss.hasPermi('system:menu:edit')")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@@ -126,9 +179,32 @@ public class SysMenuController extends BaseController
return toAjax(menuService.updateMenu(menu));
}
@ApiOperation("修改菜单")
@PreAuthorize("@ss.hasPermi('system:menu:edit')")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@PutMapping(value = "/F")
public AjaxResult editF(@Validated @RequestBody SysMenu menu)
{
if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUniqueF(menu)))
{
return error(StringUtils.format(MessageUtils.message("menu.update.failed.name.exists"), menu.getMenuName()));
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath()))
{
return error(StringUtils.format(MessageUtils.message("menu.update.failed.path.not.valid"), menu.getMenuName()));
}
else if (menu.getMenuId().equals(menu.getParentId()))
{
return error(StringUtils.format(MessageUtils.message("menu.update.failed.parent.not.valid"), menu.getMenuName()));
}
menu.setUpdateBy(getUsername());
return toAjax(menuService.updateMenuF(menu));
}
/**
* 删除菜单
*/
@ApiOperation("删除菜单")
@PreAuthorize("@ss.hasPermi('system:menu:remove')")
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
@@ -145,6 +221,22 @@ public class SysMenuController extends BaseController
}
return toAjax(menuService.deleteMenuById(menuId));
}
@ApiOperation("删除菜单")
@PreAuthorize("@ss.hasPermi('system:menu:remove')")
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
@DeleteMapping("/F/{menuId}")
public AjaxResult removeF(@PathVariable("menuId") Long menuId)
{
if (menuService.hasChildByMenuId(menuId))
{
return warn(MessageUtils.message("menu.delete.failed.child.exists"));
}
if (menuService.checkMenuExistRoleF(menuId))
{
return warn(MessageUtils.message("menu.delete.failed.role.exists"));
}
return toAjax(menuService.deleteMenuByIdF(menuId));
}
/**
* 加载对应部门菜单列表树
@@ -156,4 +248,11 @@ public class SysMenuController extends BaseController
List<SysMenu> menus = menuService.deptMenuTreeselect(deptId);
return success(menuService.buildMenuTreeSelect(menus));
}
@ApiOperation("加载对应部门菜单列表树")
@GetMapping(value = "/deptMenuTreeselectF/{deptId}")
public AjaxResult deptMenuTreeselectF(@PathVariable("deptId") Long deptId)
{
List<SysMenu> menus = menuService.deptMenuTreeselectF(deptId);
return success(menuService.buildMenuTreeSelect(menus));
}
}

View File

@@ -61,6 +61,8 @@ public class SysMenu extends BaseEntity
/** 是否缓存0缓存 1不缓存 */
@ApiModelProperty("是否缓存0缓存 1不缓存")
private String isCache;
@ApiModelProperty("是否缓存0后端 1业务")
private Integer bg;
/** 类型M目录 C菜单 F按钮 */
@ApiModelProperty("类型M目录 C菜单 F按钮")
@@ -279,6 +281,14 @@ public class SysMenu extends BaseEntity
this.children = children;
}
public Integer getBg() {
return bg;
}
public void setBg(Integer bg) {
this.bg = bg;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@@ -61,6 +61,9 @@ public class SysRole extends BaseEntity
@Excel(name = "角色状态", readConverterExp = "0=正常,1=停用")
private String status;
private String im;
private String ib;
/** 删除标志0代表存在 2代表删除 */
@ApiModelProperty("删除标志")
private String delFlag;
@@ -71,7 +74,9 @@ public class SysRole extends BaseEntity
/** 菜单组 */
@ApiModelProperty("菜单组")
private Long[] menuIds;
/** 菜单组 */
@ApiModelProperty("菜单组")
private Long[] menuFIds;
/** 部门组(数据权限) */
@ApiModelProperty("部门组")
private Long[] deptIds;
@@ -105,6 +110,14 @@ public class SysRole extends BaseEntity
*/
private Boolean manager;
public Long[] getMenuFIds() {
return menuFIds;
}
public void setMenuFIds(Long[] menuFIds) {
this.menuFIds = menuFIds;
}
public Boolean getManager() {
return manager;
}
@@ -300,6 +313,22 @@ public class SysRole extends BaseEntity
this.permissions = permissions;
}
public String getIm() {
return im;
}
public void setIm(String im) {
this.im = im;
}
public String getIb() {
return ib;
}
public void setIb(String ib) {
this.ib = ib;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@@ -31,13 +31,14 @@ public class LoginBody
*/
private String uuid;
/**
* 手机号
*/
private String phonenumber;
/**
* 登录平台 1-web2-移动端3-小程序
* 登录平台 0-前端 1-管理2-移动端3-小程序
*/
private Integer sourceType;
@@ -46,6 +47,9 @@ public class LoginBody
*/
private String smsCode;
public Long getDeptId() {
return deptId;
}

View File

@@ -21,6 +21,7 @@ import com.xinda.framework.manager.factory.AsyncFactory;
import com.xinda.framework.security.context.AuthenticationContextHolder;
import com.xinda.system.service.ISysConfigService;
import com.xinda.system.service.ISysDeptService;
import com.xinda.system.service.ISysRoleService;
import com.xinda.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@@ -62,6 +63,8 @@ public class SysLoginService {
@Resource
private ISysDeptService sysDeptService;
@Resource
private ISysRoleService sysRoleService;
/**
* 登录验证
*
@@ -175,9 +178,9 @@ public class SysLoginService {
public String login(Long deptId,String username, String password, String code, String uuid, Integer sourceType, String language) {
boolean captchaEnabled = configService.selectCaptchaEnabled();
// 验证码开关
if (captchaEnabled) {
validateCaptcha(username, code, uuid);
}
// if (captchaEnabled) {
// validateCaptcha(username, code, uuid);
// }
// 用户验证
Authentication authentication = null;
try {
@@ -205,6 +208,19 @@ public class SysLoginService {
if (null != sourceType && 1 == sourceType && null == userDeptId) {
throw new ServiceException("web端只允许租户登录");
}
if (null != sourceType && 1 == sourceType && !SysUser.isAdmin(loginUser.getUserId())) {
int msize = sysRoleService.selectRoleByUserIdAndIm(loginUser.getUserId()).size();
if(msize==0){
throw new ServiceException("该用户无管理端权限!");
}
}else if(null != sourceType && 0 == sourceType && !SysUser.isAdmin(loginUser.getUserId())){
int bsize = sysRoleService.selectRoleByUserIdAndIb(loginUser.getUserId()).size();
if(bsize==0){
throw new ServiceException("该用户无前端权限!");
}
}
// if (!"admin".equals(loginUser.getUsername()) && null != sourceType) {
// Long deptId = loginUser.getDeptId();
// if (1 == sourceType && null == deptId) {

View File

@@ -97,7 +97,7 @@ public class DeviceStatusConsumer {
if (device.getAgenciesId() == null) {
//设置删除状态 todo
// device.setDelFlag("2");
deviceService.deleteDeviceByDeviceId(device.getDeviceId());
deviceService.deleteDeviceById(device.getDeviceId());
}
}
}

View File

@@ -5,7 +5,8 @@ spring:
timeout: 10000
# 以下为单机配置
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 127.0.0.1
# host: 127.0.0.1
host: redis
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
@@ -27,8 +28,8 @@ server:
# HTTPS配置 默认不开启
ssl:
# 是否开启HTTPS访问 默认关闭
# enabled: false
enabled: true
enabled: false
# enabled: true
# 证书文件路径您需要使用实际的证书名称替换domain_name.jks。
key-store: classpath:xinda.online.jks
# 证书密码 修改为对应密码

View File

@@ -73,5 +73,7 @@ public abstract class Server {
log.warn("=>服务:{},在端口:{},已经停止!", config.name, config.port);
}
public void shutdownGracefully() {
stop();
}
}

View File

@@ -52,7 +52,6 @@ public class NettyConfig {
public NettyConfig(int workerGroup,
int businessGroup,
int readerIdleTime,

View File

@@ -0,0 +1,137 @@
//package com.xinda.mqtt.server;
//
//
//import com.xinda.common.constant.XinDaConstant;
//import com.xinda.mqtt.handler.adapter.MqttMessageAdapter;
//import com.xinda.server.Server;
//import groovy.util.logging.Slf4j;
//import io.netty.bootstrap.AbstractBootstrap;
//import io.netty.bootstrap.ServerBootstrap;
//import io.netty.buffer.PooledByteBufAllocator;
//import io.netty.channel.ChannelInitializer;
//import io.netty.channel.ChannelOption;
//import io.netty.channel.ServerChannel;
//import io.netty.channel.epoll.Epoll;
//import io.netty.channel.epoll.EpollEventLoopGroup;
//import io.netty.channel.epoll.EpollServerSocketChannel;
//import io.netty.channel.nio.NioEventLoopGroup;
//import io.netty.channel.socket.nio.NioServerSocketChannel;
//import io.netty.channel.socket.nio.NioSocketChannel;
//import io.netty.handler.codec.mqtt.MqttDecoder;
//import io.netty.handler.codec.mqtt.MqttEncoder;
//import io.netty.handler.logging.LogLevel;
//import io.netty.handler.logging.LoggingHandler;
//import io.netty.handler.timeout.IdleStateHandler;
//import io.netty.util.concurrent.DefaultThreadFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.util.concurrent.LinkedBlockingQueue;
//import java.util.concurrent.ThreadPoolExecutor;
//import java.util.concurrent.TimeUnit;
//
///**
// * MQTT Broker 服务端,基于 Netty 实现。
// * 负责接收客户端连接、处理 MQTT 协议相关的消息。
// * 通过优化 Netty 配置提升高并发连接和消息处理性能。
// *
// * 主要优化点:
// * 1. 增加 worker 线程数,提升并发处理能力。
// * 2. 增大 backlog防止高并发连接时丢失请求。
// * 3. 启用 TCP 参数(如 TCP_NODELAY、SO_REUSEADDR降低延迟。
// * 4. 增大收发缓冲区,提升吞吐量。
// * 5. 使用 PooledByteBufAllocator 提升内存分配效率。
// * 6. 业务线程池支持突发流量。
// */
//@Component
//@Slf4j
//public class MqttServer2 extends Server {
// /**
// * MQTT 消息适配器,负责处理所有 MQTT 协议相关的消息。
// */
// @Autowired
// private MqttMessageAdapter messageAdapter;
//
// /**
// * 初始化 Netty 服务端,设置各项性能参数。
// *
// * @return Netty ServerBootstrap 实例
// */
// @Override
// protected AbstractBootstrap initialize() {
// // boss 线程负责接收连接,通常设置为 1 即可
// int bossThreads = 1;
// // worker 线程负责处理 IO根据 CPU 核心数设置,提升并发能力
// int workerThreads = Math.max(4, Runtime.getRuntime().availableProcessors() * 4);
// Class<? extends ServerChannel> channelClass;
// long startInit = System.currentTimeMillis();
// // Epoll 优先(仅限 Linux否则 NIO
// if (Epoll.isAvailable()) {
//// log.info("[性能优化] 使用 EpollEventLoopGroup");
// bossGroup = new EpollEventLoopGroup(bossThreads, new DefaultThreadFactory(config.name + "-Boss", Thread.MAX_PRIORITY));
// workerGroup = new EpollEventLoopGroup(workerThreads, new DefaultThreadFactory(config.name + "-Worker", Thread.MAX_PRIORITY));
// channelClass = EpollServerSocketChannel.class;
// } else {
//// log.info("[性能优化] 使用 NioEventLoopGroup");
// bossGroup = new NioEventLoopGroup(bossThreads, new DefaultThreadFactory(config.name + "-Boss", Thread.MAX_PRIORITY));
// workerGroup = new NioEventLoopGroup(workerThreads, new DefaultThreadFactory(config.name + "-Worker", Thread.MAX_PRIORITY));
// channelClass = NioServerSocketChannel.class;
// }
//
// // 业务线程池,处理耗时操作,避免阻塞 Netty IO 线程
// if (config.businessCore > 0) {
// int core = Math.max(8, config.businessCore * 2);
// int max = Math.max(16, config.businessCore * 4);
// businessService = new ThreadPoolExecutor(
// core,
// max, // 允许突发时扩展
// 120L, TimeUnit.SECONDS, // 空闲线程存活时间
// new LinkedBlockingQueue<>(4096), // 增加队列长度,防止高并发丢任务
// new DefaultThreadFactory(config.name + "-Business", true, Thread.NORM_PRIORITY),
// new ThreadPoolExecutor.CallerRunsPolicy()); // 队列满时由调用者处理,防止任务丢失
//// log.info("[性能优化] 业务线程池 core={} max={} queue=4096", core, max);
// }
// long endInit = System.currentTimeMillis();
//// log.info("[性能日志] Netty 服务端初始化耗时: {} ms", (endInit - startInit));
// return new ServerBootstrap()
// // 绑定 boss 和 worker 线程组
// .group(bossGroup, workerGroup)
// // 指定服务端通道类型
// .channel(channelClass)
// // 设置 Netty 日志级别
// .handler(new LoggingHandler(LogLevel.INFO))
// // 设置服务端 accept 队列长度,提升高并发连接能力
// .option(ChannelOption.SO_BACKLOG, 4096)
// // 启用端口复用,提升端口重启和高并发下的可用性
// .option(ChannelOption.SO_REUSEADDR, true)
// // 启用 TCP 保活
// .childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE)
// // 禁用 Nagle 算法,降低延迟
// .childOption(ChannelOption.TCP_NODELAY, true)
// // 增大发送缓冲区
// .childOption(ChannelOption.SO_SNDBUF, 4 * 1024 * 1024)
// // 增大接收缓冲区
// .childOption(ChannelOption.SO_RCVBUF, 4 * 1024 * 1024)
// // 使用池化内存分配器,提升内存分配效率
// .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT)
// // 初始化每个新连接的处理 pipeline
// .childHandler(new ChannelInitializer<NioSocketChannel>() {
// @Override
// protected void initChannel(NioSocketChannel channel) {
// long startConn = System.nanoTime();
// // 客户端心跳检测机制,防止空闲连接占用资源
// channel.pipeline()
// .addFirst(XinDaConstant.SERVER.IDLE
// , new IdleStateHandler(config.readerIdleTime, config.writerIdleTime, config.allIdleTime, TimeUnit.SECONDS))
// // MQTT 协议解码器,支持最大 2MB 报文
// .addLast(XinDaConstant.SERVER.DECODER, new MqttDecoder(1024 * 1024 * 2))
// // MQTT 协议编码器
// .addLast(XinDaConstant.SERVER.ENCODER, MqttEncoder.INSTANCE)
// // 业务消息适配器,处理所有 MQTT 消息
// .addLast(messageAdapter);
// long endConn = System.nanoTime();
//// log.debug("[性能日志] 新连接 pipeline 初始化耗时: {} μs", (endConn - startConn) / 1000);
// }
// });
// }
//}

View File

@@ -0,0 +1,71 @@
package com.xinda.mqtt.server;
import com.xinda.common.constant.XinDaConstant;
import com.xinda.mqtt.handler.adapter.MqttMessageAdapter;
import com.xinda.server.Server;
import io.netty.bootstrap.AbstractBootstrap;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelOption;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.mqtt.MqttDecoder;
import io.netty.handler.codec.mqtt.MqttEncoder;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import io.netty.handler.timeout.IdleStateHandler;
import io.netty.util.concurrent.DefaultThreadFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Component
@Slf4j
public class MqttServer3 extends Server {
@Autowired
private MqttMessageAdapter messageAdapter;
@Override
protected AbstractBootstrap initialize() {
bossGroup = new NioEventLoopGroup(1, new DefaultThreadFactory(config.name, Thread.MAX_PRIORITY));
workerGroup = new NioEventLoopGroup(config.workerCore, new DefaultThreadFactory(config.name, Thread.MAX_PRIORITY));
if (config.businessCore > 0) {
businessService = new ThreadPoolExecutor(config.businessCore, config.businessCore, 1L,
TimeUnit.SECONDS, new LinkedBlockingQueue<>(), new DefaultThreadFactory(config.name, true, Thread.NORM_PRIORITY));
}
return new ServerBootstrap()
.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.handler(new LoggingHandler(LogLevel.INFO))
// 设置服务端 accept 队列长度,提升高并发连接能力
.option(ChannelOption.SO_BACKLOG, 2048)
// 启用端口复用,提升端口重启和高并发下的可用性
.option(ChannelOption.SO_REUSEADDR, true)
// 禁用 Nagle 算法,降低延迟
.childOption(ChannelOption.TCP_NODELAY, true)
.childOption(ChannelOption.SO_KEEPALIVE, Boolean.TRUE)
.childHandler(new ChannelInitializer<NioSocketChannel>() {
@Override
protected void initChannel(NioSocketChannel channel) {
//客户端心跳检测机制
channel.pipeline()
.addFirst(XinDaConstant.SERVER.IDLE
, new IdleStateHandler(config.readerIdleTime, config.writerIdleTime, config.allIdleTime, TimeUnit.SECONDS))
.addLast(XinDaConstant.SERVER.DECODER, new MqttDecoder(1024 * 1024 * 2))
.addLast(XinDaConstant.SERVER.ENCODER, MqttEncoder.INSTANCE)
.addLast(messageAdapter);
}
});
}
}

View File

@@ -32,7 +32,8 @@
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId> <!-- Use 'netty-all' for 4.0 or above -->
<version>4.1.56.Final</version>
<version>4.1.74.Final</version>
<!-- <version>4.1.56.Final</version>-->
<scope>compile</scope>
</dependency>

View File

@@ -82,7 +82,18 @@ public class SipLayer {
SipProvider startUdpListener() throws Exception {
if (sipConfig.isEnabled()) {
log.info("startUdpListener");
ListeningPoint udpListeningPoint = sipStack.createListeningPoint(sipConfig.getIp(), sipConfig.getPort(), "UDP");
// ListeningPoint udpListeningPoint = sipStack.createListeningPoint(sipConfig.getIp(), sipConfig.getPort(), "UDP");
ListeningPoint udpListeningPoint;
try {
udpListeningPoint = sipStack.createListeningPoint(sipConfig.getIp(), sipConfig.getPort(), "UDP");
} catch (Exception e) {
log.error("Bind failed on {}:{}, trying backup IP",sipConfig.getIp(), sipConfig.getPort());
udpListeningPoint = sipStack.createListeningPoint(
"0.0.0.0",
sipConfig.getPort(),
"UDP"
);
}
SipProvider udpSipProvider = sipStack.createSipProvider(udpListeningPoint);
udpSipProvider.addSipListener(gbSIPListener);
log.info("Sip Server UDP 启动成功 port {}", sipConfig.getPort());

View File

@@ -65,7 +65,7 @@ public class SipDeviceChannelServiceImpl implements ISipDeviceChannelService {
if (deviceChannel == null) {
Product product = productService.getProductBySerialNumber(deviceId);
if (product != null) {
insertSipDeviceChannel(channel);
insertSipDeviceChannelNew(channel);
} else {
log.error("未注册设备:{}", deviceId);
}
@@ -196,6 +196,18 @@ public class SipDeviceChannelServiceImpl implements ISipDeviceChannelService {
return sipDeviceChannelMapper.insertSipDeviceChannel(sipDeviceChannel);
}
public int insertSipDeviceChannelNew(SipDeviceChannel sipDeviceChannel) {
Product product = productService.getProductBySerialNumber(sipDeviceChannel.getDeviceSipId());
if (product != null) {
sipDeviceChannel.setTenantName(product.getTenantName());
sipDeviceChannel.setProductId(product.getProductId());
sipDeviceChannel.setProductName(product.getProductName());
}
sipDeviceChannel.setCreateTime(DateUtils.getNowDate());
return sipDeviceChannelMapper.insertSipDeviceChannel(sipDeviceChannel);
}
/**
* 修改监控设备通道信息
*

View File

@@ -202,7 +202,7 @@ public interface IDeviceService
* @return 结果
*/
public AjaxResult deleteDeviceByDeviceId(Long deviceId) throws SchedulerException;
public void deleteDeviceById(Long deviceId) ;
/**
* 生成设备唯一编号
* @return 结果

View File

@@ -1370,6 +1370,67 @@ public class DeviceServiceImpl implements IDeviceService {
return AjaxResult.success();
}
/**
* 删除设备
*
* @param deviceId 需要删除的设备主键
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDeviceById(Long deviceId){
//查询设备
Device device = deviceMapper.selectDeviceByDeviceId(deviceId);
// 2.3版本更改 设备管理者和设备拥有者为true普通用户如果不是设备所有者只能删除设备用户和用户自己的设备关联分组信息
// 查绑定用户被分享用户配置的场景,需要把场景删掉
DeviceUser deviceUser = deviceUserMapper.selectDeviceUserByDeviceId(deviceId);
List<Long> userIdSceneList = new ArrayList<>();
if (null != deviceUser) {
userIdSceneList.add(deviceUser.getUserId());
}
Long[] shareSceneIds = null;
List<DeviceShare> deviceShares = deviceShareService.selectDeviceShareByDeviceId(deviceId);
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(deviceShares)) {
List<Long> userIdList = deviceShares.stream().map(DeviceShare::getUserId).collect(Collectors.toList());
userIdSceneList.addAll(userIdList);
}
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(userIdSceneList)) {
shareSceneIds = sceneDeviceMapper.listSceneIdByDeviceIdAndUserId(device.getSerialNumber(), userIdSceneList);
}
if (null != shareSceneIds && shareSceneIds.length > 0) {
sceneService.deleteSceneBySceneIds(shareSceneIds);
}
// 删除设备分组。 租户、管理员和设备所有者
deviceMapper.deleteDeviceGroupByDeviceId(new UserIdDeviceIdModel(null, deviceId));
// 删除设备用户。
deviceUserMapper.deleteDeviceUserByDeviceId(new UserIdDeviceIdModel(null, deviceId));
deviceShareService.deleteDeviceShareByDeviceId(deviceId);
// 删除定时任务 TODO - emq兼容
// deviceJobService.deleteJobByDeviceIds(new Long[]{deviceId});
// 批量删除设备监测日志
logService.deleteDeviceLogByDeviceNumber(device.getSerialNumber());
// 批量删除设备事件日志 DeviceNumber
eventLogService.deleteEventLogByDeviceNumber(device.getSerialNumber());
// 批量删除设备功能日志
functionLogService.deleteFunctionLogByDeviceNumber(device.getSerialNumber());
// 批量删除设备告警记录
alertLogService.deleteAlertLogBySerialNumber(device.getSerialNumber());
// redis中删除设备物模型状态
String key = RedisKeyBuilder.buildTSLVCacheKey(device.getProductId(), device.getSerialNumber());
redisCache.deleteObject(key);
// 删除设备
deviceMapper.deleteDeviceByDeviceIds(new Long[]{deviceId});
// redis中删除规则脚本
String cacheKey = RedisKeyBuilder.buildDeviceMsgCacheKey(device.getSerialNumber());
redisCache.deleteObject(cacheKey);
// 删除设备
deviceMapper.deleteDeviceByDeviceIds(new Long[]{deviceId});
}
/**
* 根据设备编号查询协议编码

View File

@@ -18,6 +18,7 @@ public interface SysMenuMapper
* @return 菜单列表
*/
public List<SysMenu> selectMenuList(SysMenu menu);
public List<SysMenu> selectMenuListF(SysMenu menu);
/**
* 根据用户所有权限
@@ -33,7 +34,7 @@ public interface SysMenuMapper
* @return 菜单列表
*/
public List<SysMenu> selectMenuListByUserId(SysMenu menu);
public List<SysMenu> selectMenuListByUserIdF(SysMenu menu);
/**
* 根据角色ID查询权限
*
@@ -56,14 +57,15 @@ public interface SysMenuMapper
* @return 菜单列表
*/
public List<SysMenu> selectMenuTreeAll(@Param("language") String language);
public List<SysMenu> selectMenuTreeAllF(@Param("language") String language);
/**
* 根据用户ID查询菜单
*
* @param userId 用户ID
* @return 菜单列表
*/
public List<SysMenu> selectMenuTreeByUserId(@Param("userId") Long userId, @Param("language") String language);
public List<SysMenu> selectMenuTreeByUserId(@Param("userId") Long userId,@Param("language") String language);
public List<SysMenu> selectMenuTreeByUserIdF(@Param("userId") Long userId,@Param("language") String language);
/**
* 根据角色ID查询菜单树信息
@@ -73,7 +75,7 @@ public interface SysMenuMapper
* @return 选中菜单列表
*/
public List<Long> selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
public List<Long> selectMenuListByRoleIdF(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly);
/**
* 根据菜单ID查询信息
*
@@ -81,7 +83,7 @@ public interface SysMenuMapper
* @return 菜单信息
*/
public SysMenu selectMenuById(@Param("menuId") Long menuId, @Param("language") String language);
public SysMenu selectMenuByIdF(@Param("menuId") Long menuId, @Param("language") String language);
/**
* 是否存在菜单子节点
*
@@ -89,7 +91,7 @@ public interface SysMenuMapper
* @return 结果
*/
public int hasChildByMenuId(Long menuId);
public int hasChildByMenuIdF(Long menuId);
/**
* 新增菜单信息
*
@@ -97,7 +99,7 @@ public interface SysMenuMapper
* @return 结果
*/
public int insertMenu(SysMenu menu);
public int insertMenuF(SysMenu menu);
/**
* 修改菜单信息
*
@@ -105,7 +107,7 @@ public interface SysMenuMapper
* @return 结果
*/
public int updateMenu(SysMenu menu);
public int updateMenuF(SysMenu menu);
/**
* 删除菜单管理信息
*
@@ -113,7 +115,7 @@ public interface SysMenuMapper
* @return 结果
*/
public int deleteMenuById(Long menuId);
public int deleteMenuByIdF(Long menuId);
/**
* 校验菜单名称是否唯一
*
@@ -122,4 +124,5 @@ public interface SysMenuMapper
* @return 结果
*/
public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId);
public SysMenu checkMenuNameUniqueF(@Param("menuName") String menuName, @Param("parentId") Long parentId);
}

View File

@@ -27,6 +27,9 @@ public interface SysRoleMapper
*/
public List<SysRole> selectRolePermissionByUserId(Long userId);
public List<SysRole> selectRoleByUserIdAndIm(Long userId);
public List<SysRole> selectRoleByUserIdAndIb(Long userId);
/**
* 查询所有角色
*

View File

@@ -17,7 +17,7 @@ public interface SysRoleMenuMapper
* @return 结果
*/
public int checkMenuExistRole(Long menuId);
public int checkMenuExistRoleF(Long menuId);
/**
* 通过角色ID删除角色和菜单关联
*
@@ -25,7 +25,7 @@ public interface SysRoleMenuMapper
* @return 结果
*/
public int deleteRoleMenuByRoleId(Long roleId);
public int deleteRoleMenuByRoleIdF(Long roleId);
/**
* 批量删除角色菜单关联信息
*
@@ -33,7 +33,7 @@ public interface SysRoleMenuMapper
* @return 结果
*/
public int deleteRoleMenu(Long[] ids);
public int deleteRoleMenuF(Long[] ids);
/**
* 批量新增角色菜单信息
*
@@ -41,11 +41,12 @@ public interface SysRoleMenuMapper
* @return 结果
*/
public int batchRoleMenu(List<SysRoleMenu> roleMenuList);
public int batchRoleMenuF(List<SysRoleMenu> roleMenuList);
/**
* 查询角色权限
* @param roleId 角色id
* @return java.util.List<com.xinda.system.domain.SysRoleMenu>
*/
List<SysRoleMenu> selectRoleMenuList(Long roleId);
List<SysRoleMenu> selectRoleMenuListF(Long roleId);
}

View File

@@ -20,7 +20,7 @@ public interface ISysMenuService
* @return 菜单列表
*/
public List<SysMenu> selectMenuList(Long userId);
public List<SysMenu> selectMenuListF(Long userId);
/**
* 根据用户查询系统菜单列表
*
@@ -29,6 +29,7 @@ public interface ISysMenuService
* @return 菜单列表
*/
public List<SysMenu> selectMenuList(SysMenu menu, Long userId);
public List<SysMenu> selectMenuListF(SysMenu menu, Long userId);
/**
* 根据用户ID查询权限
@@ -54,7 +55,7 @@ public interface ISysMenuService
* @return 菜单列表
*/
public List<SysMenu> selectMenuTreeByUserId(Long userId, String language);
public List<SysMenu> selectMenuTreeByUserIdF(Long userId, String language);
/**
* 根据角色ID查询菜单树信息
*
@@ -62,7 +63,7 @@ public interface ISysMenuService
* @return 选中菜单列表
*/
public List<Long> selectMenuListByRoleId(Long roleId);
public List<Long> selectMenuListByRoleIdF(Long roleId);
/**
* 构建前端路由所需要的菜单
*
@@ -94,6 +95,7 @@ public interface ISysMenuService
* @return 菜单信息
*/
public SysMenu selectMenuById(Long menuId);
public SysMenu selectMenuByIdF(Long menuId);
/**
* 是否存在菜单子节点
@@ -102,7 +104,7 @@ public interface ISysMenuService
* @return 结果 true 存在 false 不存在
*/
public boolean hasChildByMenuId(Long menuId);
public boolean hasChildByMenuIdF(Long menuId);
/**
* 查询菜单是否存在角色
*
@@ -110,7 +112,7 @@ public interface ISysMenuService
* @return 结果 true 存在 false 不存在
*/
public boolean checkMenuExistRole(Long menuId);
public boolean checkMenuExistRoleF(Long menuId);
/**
* 新增保存菜单信息
*
@@ -118,7 +120,7 @@ public interface ISysMenuService
* @return 结果
*/
public int insertMenu(SysMenu menu);
public int insertMenuF(SysMenu menu);
/**
* 修改保存菜单信息
*
@@ -126,7 +128,7 @@ public interface ISysMenuService
* @return 结果
*/
public int updateMenu(SysMenu menu);
public int updateMenuF(SysMenu menu);
/**
* 删除菜单管理信息
*
@@ -134,7 +136,7 @@ public interface ISysMenuService
* @return 结果
*/
public int deleteMenuById(Long menuId);
public int deleteMenuByIdF(Long menuId);
/**
* 校验菜单名称是否唯一
*
@@ -142,8 +144,9 @@ public interface ISysMenuService
* @return 结果
*/
public String checkMenuNameUnique(SysMenu menu);
public String checkMenuNameUniqueF(SysMenu menu);
List<SysMenu> deptMenuTreeselect(Long deptId);
List<SysMenu> deptMenuTreeselectF(Long deptId);
List<SysMenu> deptRoleMenuTreeselect(Long deptId, Long roleId);
List<SysMenu> deptRoleMenuTreeselectF(Long deptId, Long roleId);
}

View File

@@ -170,5 +170,6 @@ public interface ISysRoleService
* @return 结果
*/
public int insertAuthUsers(Long roleId, Long[] userIds);
public List<SysRole> selectRoleByUserIdAndIm(Long userId);
public List<SysRole> selectRoleByUserIdAndIb(Long userId);
}

View File

@@ -66,6 +66,12 @@ public class SysMenuServiceImpl implements ISysMenuService
return selectMenuList(new SysMenu(), userId);
}
@Override
public List<SysMenu> selectMenuListF(Long userId)
{
return selectMenuListF(new SysMenu(), userId);
}
/**
* 查询系统菜单列表
*
@@ -73,7 +79,7 @@ public class SysMenuServiceImpl implements ISysMenuService
* @return 菜单列表
*/
@Override
public List<SysMenu> selectMenuList(SysMenu menu, Long userId)
public List<SysMenu> selectMenuList(SysMenu menu,Long userId)
{
menu.setLanguage(SecurityUtils.getLanguage());
List<SysMenu> menuList = null;
@@ -89,6 +95,23 @@ public class SysMenuServiceImpl implements ISysMenuService
}
return menuList;
}
@Override
public List<SysMenu> selectMenuListF(SysMenu menu,Long userId)
{
menu.setLanguage(SecurityUtils.getLanguage());
List<SysMenu> menuList = null;
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId))
{
menuList = menuMapper.selectMenuListF(menu);
}
else
{
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserIdF(menu);
}
return menuList;
}
/**
* 根据用户ID查询权限
@@ -154,6 +177,21 @@ public class SysMenuServiceImpl implements ISysMenuService
return getChildPerms(menus, 0);
}
@Override
public List<SysMenu> selectMenuTreeByUserIdF(Long userId, String language)
{
List<SysMenu> menus = null;
if (SecurityUtils.isAdmin(userId))
{
menus = menuMapper.selectMenuTreeAllF(language);
}
else
{
menus = menuMapper.selectMenuTreeByUserIdF(userId, language);
}
return getChildPerms(menus, 0);
}
/**
* 根据角色ID查询菜单树信息
*
@@ -167,6 +205,13 @@ public class SysMenuServiceImpl implements ISysMenuService
return menuMapper.selectMenuListByRoleId(roleId, role.isMenuCheckStrictly());
}
@Override
public List<Long> selectMenuListByRoleIdF(Long roleId)
{
SysRole role = roleMapper.selectRoleById(roleId);
return menuMapper.selectMenuListByRoleIdF(roleId, role.isMenuCheckStrictly());
}
/**
* 构建前端路由所需要的菜单
*
@@ -278,6 +323,12 @@ public class SysMenuServiceImpl implements ISysMenuService
return menuMapper.selectMenuById(menuId, SecurityUtils.getLanguage());
}
@Override
public SysMenu selectMenuByIdF(Long menuId)
{
return menuMapper.selectMenuByIdF(menuId, SecurityUtils.getLanguage());
}
/**
* 是否存在菜单子节点
*
@@ -290,7 +341,12 @@ public class SysMenuServiceImpl implements ISysMenuService
int result = menuMapper.hasChildByMenuId(menuId);
return result > 0;
}
@Override
public boolean hasChildByMenuIdF(Long menuId)
{
int result = menuMapper.hasChildByMenuIdF(menuId);
return result > 0;
}
/**
* 查询菜单使用数量
*
@@ -303,7 +359,12 @@ public class SysMenuServiceImpl implements ISysMenuService
int result = roleMenuMapper.checkMenuExistRole(menuId);
return result > 0;
}
@Override
public boolean checkMenuExistRoleF(Long menuId)
{
int result = roleMenuMapper.checkMenuExistRoleF(menuId);
return result > 0;
}
/**
* 新增保存菜单信息
*
@@ -315,6 +376,11 @@ public class SysMenuServiceImpl implements ISysMenuService
{
return menuMapper.insertMenu(menu);
}
@Override
public int insertMenuF(SysMenu menu)
{
return menuMapper.insertMenuF(menu);
}
/**
* 修改保存菜单信息
@@ -327,7 +393,11 @@ public class SysMenuServiceImpl implements ISysMenuService
{
return menuMapper.updateMenu(menu);
}
@Override
public int updateMenuF(SysMenu menu)
{
return menuMapper.updateMenuF(menu);
}
/**
* 删除菜单管理信息
*
@@ -339,7 +409,11 @@ public class SysMenuServiceImpl implements ISysMenuService
{
return menuMapper.deleteMenuById(menuId);
}
@Override
public int deleteMenuByIdF(Long menuId)
{
return menuMapper.deleteMenuByIdF(menuId);
}
/**
* 校验菜单名称是否唯一
*
@@ -359,6 +433,19 @@ public class SysMenuServiceImpl implements ISysMenuService
return UserConstants.UNIQUE;
}
@Override
public String checkMenuNameUniqueF(SysMenu menu)
{
Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
// 仅匹配菜单表存储的菜单名称,不匹配菜单翻译表存储的对应语言名称
SysMenu info = menuMapper.checkMenuNameUniqueF(menu.getMenuName(), menu.getParentId());
if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue())
{
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
@Override
public List<SysMenu> deptMenuTreeselect(Long deptId) {
SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
@@ -368,6 +455,15 @@ public class SysMenuServiceImpl implements ISysMenuService
return this.selectMenuList(sysDept.getDeptUserId());
}
@Override
public List<SysMenu> deptMenuTreeselectF(Long deptId) {
SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
if (ObjectUtil.isNull(sysDept) && null == sysDept.getDeptUserId()) {
return new ArrayList<>();
}
return this.selectMenuListF(sysDept.getDeptUserId());
}
@Override
public List<SysMenu> deptRoleMenuTreeselect(Long deptId, Long roleId) {
LoginUser loginUser = getLoginUser();
@@ -389,6 +485,27 @@ public class SysMenuServiceImpl implements ISysMenuService
return this.selectMenuList(new SysMenu(), sysDept.getDeptUserId());
}
@Override
public List<SysMenu> deptRoleMenuTreeselectF(Long deptId, Long roleId) {
LoginUser loginUser = getLoginUser();
Long userDeptId = loginUser.getDeptId();
Long deptUserId = loginUser.getUser().getDept().getDeptUserId();
SysRole sysRole = roleMapper.selectRoleById(roleId);
// List<SysUserRole> sysUserRoleList = sysUserRoleMapper.selectRoleByUserId(sysDept.getDeptUserId());
// SysUserRole sysUserRole = sysUserRoleList.stream().filter(s -> roleId.equals(s.getRoleId())).findAny().orElse(null);
// if (ObjectUtil.isNotNull(sysUserRole)) {
// return menuMapper.selectMenuList(new SysMenu());
// }
if (!deptId.equals(userDeptId) && "manager".equals(sysRole.getRoleKey())) {
return this.selectMenuListF(deptUserId);
}
SysDept sysDept = sysDeptMapper.selectDeptById(deptId);
if (ObjectUtil.isNull(sysDept) && null == sysDept.getDeptUserId()) {
return new ArrayList<>();
}
return this.selectMenuListF(new SysMenu(), sysDept.getDeptUserId());
}
/**
* 获取路由名称
*
@@ -515,6 +632,7 @@ public class SysMenuServiceImpl implements ISysMenuService
return returnList;
}
/**
* 递归列表
*

View File

@@ -206,7 +206,7 @@ public class SysRoleServiceImpl implements ISysRoleService
* @param roleId 角色ID
* @return 角色对象信息
*/
@Cacheable(value = "role", key = "#root.methodName + '_' + #roleId", unless = "#result == null")
// @Cacheable(value = "role", key = "#root.methodName + '_' + #roleId", unless = "#result == null")
@Override
public SysRole selectRoleById(Long roleId)
{
@@ -347,6 +347,7 @@ public class SysRoleServiceImpl implements ISysRoleService
roleMapper.updateRole(role);
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(role.getRoleId());
roleMenuMapper.deleteRoleMenuByRoleIdF(role.getRoleId());
return insertRoleMenu(role);
}
@@ -390,6 +391,21 @@ public class SysRoleServiceImpl implements ISysRoleService
*/
public int insertRoleMenu(SysRole role)
{
int rowsF = 1;
// 新增用户与角色管理
List<SysRoleMenu> listF = new ArrayList<SysRoleMenu>();
if (role.getMenuFIds() != null && role.getMenuFIds().length > 0){
for (Long menuId : role.getMenuFIds())
{
SysRoleMenu rmf = new SysRoleMenu();
rmf.setRoleId(role.getRoleId());
rmf.setMenuId(menuId);
listF.add(rmf);
}
roleMenuMapper.batchRoleMenuF(listF);
}
int rows = 1;
// 新增用户与角色管理
List<SysRoleMenu> list = new ArrayList<SysRoleMenu>();
@@ -404,6 +420,7 @@ public class SysRoleServiceImpl implements ISysRoleService
{
rows = roleMenuMapper.batchRoleMenu(list);
}
return rows;
}
@@ -444,6 +461,7 @@ public class SysRoleServiceImpl implements ISysRoleService
{
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenuByRoleId(roleId);
roleMenuMapper.deleteRoleMenuByRoleIdF(roleId);
// 删除角色与部门关联
roleDeptMapper.deleteRoleDeptByRoleId(roleId);
return roleMapper.deleteRoleById(roleId);
@@ -472,6 +490,7 @@ public class SysRoleServiceImpl implements ISysRoleService
}
// 删除角色与菜单关联
roleMenuMapper.deleteRoleMenu(roleIds);
roleMenuMapper.deleteRoleMenuF(roleIds);
// 删除角色与部门关联
roleDeptMapper.deleteRoleDept(roleIds);
return roleMapper.deleteRoleByIds(roleIds);
@@ -525,4 +544,14 @@ public class SysRoleServiceImpl implements ISysRoleService
}
return userRoleMapper.batchUserRole(list);
}
@Override
public List<SysRole> selectRoleByUserIdAndIm(Long userId) {
return roleMapper.selectRoleByUserIdAndIm(userId);
}
@Override
public List<SysRole> selectRoleByUserIdAndIb(Long userId) {
return roleMapper.selectRoleByUserIdAndIb(userId);
}
}

View File

@@ -208,7 +208,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<delete id="deleteDeptById" parameterType="Long">
update sys_dept set del_flag = '2' where dept_id = #{deptId}
delete from sys_dept where dept_id = #{deptId}
</delete>
<select id="selectSeniorDeptUser" resultType="java.lang.Long">

View File

@@ -31,14 +31,14 @@
select menu_id, menu_name, parent_id, order_num, path, component, `query`, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
from sys_menu
</sql>
<sql id="selectMenuF">
select menu_id, menu_name, parent_id, order_num, path, component, `query`, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
from sys_menu_f
</sql>
<select id="selectMenuList" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct m.menu_id,
case
when #{language} = 'zh-CN' then m.menu_name
when #{language} = 'en-US' then t.en_us
else m.menu_name
end as menu_name,
m. menu_name,
m.parent_id, m.order_num, m.path, m.component, m.query, m.is_frame, m.is_cache, m.menu_type, m.visible, m.status, ifnull(m.perms,'') as perms, m.icon, m.create_time
from sys_menu m
left join sys_menu_translate t on m.menu_id = t.id
@@ -55,34 +55,70 @@
</where>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListF" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct m.menu_id,
m.menu_name,
m.parent_id, m.order_num, m.path, m.component, m.query, m.is_frame, m.is_cache, m.menu_type, m.visible, m.status, ifnull(m.perms,'') as perms, m.icon, m.create_time
from sys_menu_f m
<where>
<if test="menuName != null and menuName != ''">
AND m.menu_name like concat('%', #{menuName}, '%')
</if>
<if test="visible != null and visible != ''">
AND m.visible = #{visible}
</if>
<if test="status != null and status != ''">
AND m.status = #{status}
</if>
</where>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuTreeAll" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
case
when #{language} = 'zh-CN' then m.menu_name
when #{language} = 'en-US' then t.en_us
else m.menu_name
end as menu_name,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m
left join sys_menu_translate t on m.menu_id = t.id
where m.menu_type in ('M', 'C') and m.status = 0
order by m.parent_id, m.order_num
</select>
<select id="selectMenuTreeAllF" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu_f m
where m.menu_type in ('M', 'C') and m.status = 0
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListByUserId" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
case
when #{language} = 'zh-CN' then m.menu_name
when #{language} = 'en-US' then t.en_us
else m.menu_name
end as menu_name,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
left join sys_menu_translate t on m.menu_id = t.id
where ur.user_id = #{params.userId}
<if test="menuName != null and menuName != ''">
AND m.menu_name like concat('%', #{menuName}, '%')
</if>
<if test="visible != null and visible != ''">
AND m.visible = #{visible}
</if>
<if test="status != null and status != ''">
AND m.status = #{status}
</if>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListByUserIdF" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
where ur.user_id = #{params.userId}
<if test="menuName != null and menuName != ''">
AND m.menu_name like concat('%', #{menuName}, '%')
@@ -98,18 +134,26 @@
<select id="selectMenuTreeByUserId" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
case
when #{language} = 'zh-CN' then m.menu_name
when #{language} = 'en-US' then t.en_us
else m.menu_name
end as menu_name,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
left join sys_user u on ur.user_id = u.user_id
left join sys_menu_translate t on m.menu_id = t.id
where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0 AND ro.status = 0
order by m.parent_id, m.order_num
</select>
<select id="selectMenuTreeByUserIdF" resultMap="SysMenuResult">
select distinct m.menu_id, m.parent_id,
m.menu_name,
m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
left join sys_user u on ur.user_id = u.user_id
where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.status = 0 AND ro.status = 0
order by m.parent_id, m.order_num
</select>
@@ -125,12 +169,29 @@
order by m.parent_id, m.order_num
</select>
<select id="selectMenuListByRoleIdF" resultType="Long">
select m.menu_id
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
where rm.role_id = #{roleId}
<if test="menuCheckStrictly">
and m.menu_id not in (select m.parent_id from sys_menu_f m inner join sys_role_menu_f rm on m.menu_id = rm.menu_id and rm.role_id = #{roleId})
</if>
order by m.parent_id, m.order_num
</select>
<select id="selectMenuPerms" resultType="String">
select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
</select>
<select id="selectMenuPermsF" resultType="String">
select distinct m.perms
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
</select>
<select id="selectMenuPermsByUserId" parameterType="Long" resultType="String">
select distinct m.perms
@@ -140,6 +201,14 @@
left join sys_role r on r.role_id = ur.role_id
where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
</select>
<select id="selectMenuPermsByUserIdF" parameterType="Long" resultType="String">
select distinct m.perms
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role r on r.role_id = ur.role_id
where m.status = '0' and r.status = '0' and ur.user_id = #{userId}
</select>
<select id="selectMenuPermsByRoleId" parameterType="Long" resultType="String">
select distinct m.perms
@@ -148,28 +217,46 @@
where m.status = '0' and rm.role_id = #{roleId}
</select>
<select id="selectMenuPermsByRoleIdF" parameterType="Long" resultType="String">
select distinct m.perms
from sys_menu_f m
left join sys_role_menu_f rm on m.menu_id = rm.menu_id
where m.status = '0' and rm.role_id = #{roleId}
</select>
<select id="selectMenuById" resultMap="SysMenuResult">
select distinct m.menu_id,
case
when #{language} = 'zh-CN' then m.menu_name
when #{language} = 'en-US' then t.en_us
else m.menu_name
end as menu_name,
m.menu_name,
m.parent_id, m.order_num, m.path, m.component, m.query, m.is_frame, m.is_cache, m.menu_type, m.visible, m.status, ifnull(m.perms,'') as perms, m.icon, m.create_time
from sys_menu m
left join sys_menu_translate t on m.menu_id = t.id
where m.menu_id = #{menuId}
</select>
<select id="selectMenuByIdF" resultMap="SysMenuResult">
select distinct m.menu_id,
m.menu_name,
m.parent_id, m.order_num, m.path, m.component, m.query, m.is_frame, m.is_cache, m.menu_type, m.visible, m.status, ifnull(m.perms,'') as perms, m.icon, m.create_time
from sys_menu_f m
where m.menu_id = #{menuId}
</select>
<select id="hasChildByMenuId" resultType="Integer">
select count(1) from sys_menu where parent_id = #{menuId}
</select>
<select id="hasChildByMenuIdF" resultType="Integer">
select count(1) from sys_menu_f where parent_id = #{menuId}
</select>
<select id="checkMenuNameUnique" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
from sys_menu
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select>
<select id="checkMenuNameUniqueF" parameterType="com.xinda.common.core.domain.entity.SysMenu" resultMap="SysMenuResult">
select distinct menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time
from sys_menu_f
where menu_name=#{menuName} and parent_id = #{parentId} limit 1
</select>
<update id="updateMenu" parameterType="com.xinda.common.core.domain.entity.SysMenu">
update sys_menu
@@ -194,6 +281,29 @@
where menu_id = #{menuId}
</update>
<update id="updateMenuF" parameterType="com.xinda.common.core.domain.entity.SysMenu">
update sys_menu_f
<set>
<if test="menuName != null and menuName != ''">menu_name = #{menuName},</if>
<if test="parentId != null">parent_id = #{parentId},</if>
<if test="orderNum != null">order_num = #{orderNum},</if>
<if test="path != null and path != ''">path = #{path},</if>
<if test="component != null">component = #{component},</if>
<if test="query != null">`query` = #{query},</if>
<if test="isFrame != null and isFrame != ''">is_frame = #{isFrame},</if>
<if test="isCache != null and isCache != ''">is_cache = #{isCache},</if>
<if test="menuType != null and menuType != ''">menu_type = #{menuType},</if>
<if test="visible != null">visible = #{visible},</if>
<if test="status != null">status = #{status},</if>
<if test="perms !=null">perms = #{perms},</if>
<if test="icon !=null and icon != ''">icon = #{icon},</if>
<if test="remark != null and remark != ''">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = sysdate()
</set>
where menu_id = #{menuId}
</update>
<insert id="insertMenu" parameterType="com.xinda.common.core.domain.entity.SysMenu">
insert into sys_menu(
<if test="menuId != null and menuId != 0">menu_id,</if>
@@ -234,8 +344,51 @@
)
</insert>
<insert id="insertMenuF" parameterType="com.xinda.common.core.domain.entity.SysMenu">
insert into sys_menu_f(
<if test="menuId != null and menuId != 0">menu_id,</if>
<if test="parentId != null and parentId != 0">parent_id,</if>
<if test="menuName != null and menuName != ''">menu_name,</if>
<if test="orderNum != null">order_num,</if>
<if test="path != null and path != ''">path,</if>
<if test="component != null and component != ''">component,</if>
<if test="query != null and query != ''">`query`,</if>
<if test="isFrame != null and isFrame != ''">is_frame,</if>
<if test="isCache != null and isCache != ''">is_cache,</if>
<if test="menuType != null and menuType != ''">menu_type,</if>
<if test="visible != null">visible,</if>
<if test="status != null">status,</if>
<if test="perms !=null and perms != ''">perms,</if>
<if test="icon != null and icon != ''">icon,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
create_time
)values(
<if test="menuId != null and menuId != 0">#{menuId},</if>
<if test="parentId != null and parentId != 0">#{parentId},</if>
<if test="menuName != null and menuName != ''">#{menuName},</if>
<if test="orderNum != null">#{orderNum},</if>
<if test="path != null and path != ''">#{path},</if>
<if test="component != null and component != ''">#{component},</if>
<if test="query != null and query != ''">#{query},</if>
<if test="isFrame != null and isFrame != ''">#{isFrame},</if>
<if test="isCache != null and isCache != ''">#{isCache},</if>
<if test="menuType != null and menuType != ''">#{menuType},</if>
<if test="visible != null">#{visible},</if>
<if test="status != null">#{status},</if>
<if test="perms !=null and perms != ''">#{perms},</if>
<if test="icon != null and icon != ''">#{icon},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate()
)
</insert>
<delete id="deleteMenuById" parameterType="Long">
delete from sys_menu where menu_id = #{menuId}
</delete>
<delete id="deleteMenuByIdF" parameterType="Long">
delete from sys_menu_f where menu_id = #{menuId}
</delete>
</mapper>

View File

@@ -13,6 +13,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="menuCheckStrictly" column="menu_check_strictly" />
<result property="deptCheckStrictly" column="dept_check_strictly" />
<result property="status" column="status" />
<result property="im" column="im" />
<result property="ib" column="ib" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@@ -23,7 +25,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectRoleVo">
select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.menu_check_strictly, r.dept_check_strictly,
r.status, r.del_flag, r.create_time, r.remark
r.status,r.im,r.ib, r.del_flag, r.create_time, r.remark
from sys_role r
left join sys_user_role ur on ur.role_id = r.role_id
left join sys_user u on u.user_id = ur.user_id
@@ -61,6 +63,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE r.del_flag = '0' and ur.user_id = #{userId}
</select>
<select id="selectRoleByUserIdAndIm" parameterType="Long" resultMap="SysRoleResult">
<include refid="selectRoleVo"/>
WHERE r.del_flag = '0'and r.im = '1' and ur.user_id = #{userId}
</select>
<select id="selectRoleByUserIdAndIb" parameterType="Long" resultMap="SysRoleResult">
<include refid="selectRoleVo"/>
WHERE r.del_flag = '0'and r.ib = '1' and ur.user_id = #{userId}
</select>
<select id="selectRoleAll" resultMap="SysRoleResult">
<include refid="selectRoleVo"/>
</select>
@@ -117,6 +129,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="menuCheckStrictly != null">menu_check_strictly,</if>
<if test="deptCheckStrictly != null">dept_check_strictly,</if>
<if test="status != null and status != ''">status,</if>
<if test="im != null and im != ''">im,</if>
<if test="ib != null and im != ''">ib,</if>
<if test="remark != null and remark != ''">remark,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
create_time
@@ -129,6 +143,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="menuCheckStrictly != null">#{menuCheckStrictly},</if>
<if test="deptCheckStrictly != null">#{deptCheckStrictly},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="im != null and im != ''">im,</if>
<if test="ib != null and im != ''">ib,</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate()
@@ -145,6 +161,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="menuCheckStrictly != null">menu_check_strictly = #{menuCheckStrictly},</if>
<if test="deptCheckStrictly != null">dept_check_strictly = #{deptCheckStrictly},</if>
<if test="status != null and status != ''">status = #{status},</if>
<if test="im != null and im != ''">im = #{im},</if>
<if test="ib != null and ib != ''">ib = #{ib},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = sysdate()

View File

@@ -13,15 +13,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select count(1) from sys_role_menu where menu_id = #{menuId}
</select>
<select id="checkMenuExistRoleF" resultType="Integer">
select count(1) from sys_role_menu_f where menu_id = #{menuId}
</select>
<select id="selectRoleMenuList" resultType="com.xinda.system.domain.SysRoleMenu">
select *
from sys_role_menu
where role_id = #{roleId}
</select>
<select id="selectRoleMenuListF" resultType="com.xinda.system.domain.SysRoleMenu">
select *
from sys_role_menu_f
where role_id = #{roleId}
</select>
<delete id="deleteRoleMenuByRoleId" parameterType="Long">
delete from sys_role_menu where role_id=#{roleId}
</delete>
<delete id="deleteRoleMenuByRoleIdF" parameterType="Long">
delete from sys_role_menu_f where role_id=#{roleId}
</delete>
<delete id="deleteRoleMenu" parameterType="Long">
delete from sys_role_menu where role_id in
@@ -29,6 +41,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{roleId}
</foreach>
</delete>
<delete id="deleteRoleMenuF" parameterType="Long">
delete from sys_role_menu_f where role_id in
<foreach collection="array" item="ids" index="roleId" open="(" separator="," close=")">
#{roleId}
</foreach>
</delete>
<insert id="batchRoleMenu">
insert into sys_role_menu(role_id, menu_id) values
@@ -36,5 +54,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
(#{item.roleId},#{item.menuId})
</foreach>
</insert>
<insert id="batchRoleMenuF">
insert into sys_role_menu_f(role_id, menu_id) values
<foreach item="item" index="index" collection="list" separator=",">
(#{item.roleId},#{item.menuId})
</foreach>
</insert>
</mapper>