From 30e1905f0b5d29e973937658452e9fb1ff489b46 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 11 四月 2024 18:22:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java | 55 ++++++++++ ycl-server/src/main/java/com/ycl/websocket/WebsocketServer.java | 57 +++++++++++ ycl-server/src/main/java/com/ycl/system/mapper/SysUserMapper.java | 7 + ycl-server/src/main/java/com/ycl/platform/service/impl/YwPeopleServiceImpl.java | 25 ++++ ycl-server/pom.xml | 8 + ycl-server/src/main/java/com/ycl/system/mapper/SysUserRoleMapper.java | 7 + ycl-server/src/main/java/com/ycl/platform/controller/YwUnitController.java | 14 +- ycl-server/src/main/resources/mapper/system/SysUserRoleMapper.xml | 7 + ycl-server/src/main/java/com/ycl/PlatformApplication.java | 7 + ycl-server/src/main/java/com/ycl/platform/controller/YwPeopleController.java | 14 +- ycl-server/src/main/java/com/ycl/websocket/WebSocketHandler.java | 67 +++++++++++++ ycl-server/src/main/resources/mapper/system/SysRoleMapper.xml | 8 + ycl-server/src/main/resources/mapper/system/SysUserMapper.xml | 9 + ycl-server/src/main/java/com/ycl/system/mapper/SysRoleMapper.java | 8 + 14 files changed, 267 insertions(+), 26 deletions(-) diff --git a/ycl-server/pom.xml b/ycl-server/pom.xml index 931bb3f..3a4c1b9 100644 --- a/ycl-server/pom.xml +++ b/ycl-server/pom.xml @@ -17,6 +17,14 @@ </properties> <dependencies> + + <!--netty--> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + </dependency> + + <!-- 浠g爜鐢熸垚--> <dependency> <groupId>com.ycl</groupId> diff --git a/ycl-server/src/main/java/com/ycl/PlatformApplication.java b/ycl-server/src/main/java/com/ycl/PlatformApplication.java index fe80f2e..73a10aa 100644 --- a/ycl-server/src/main/java/com/ycl/PlatformApplication.java +++ b/ycl-server/src/main/java/com/ycl/PlatformApplication.java @@ -1,5 +1,6 @@ package com.ycl; +import com.ycl.websocket.WebsocketServer; import lombok.extern.slf4j.Slf4j; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; @@ -15,5 +16,11 @@ public static void main(String[] args) { SpringApplication.run(PlatformApplication.class, args); log.info("(鈾モ棤鈥库棤)锞夛緸 鑷础杩愮淮骞冲彴鍚姩鎴愬姛 醿�(麓凇`醿�)锞�"); + try { + WebsocketServer.runWebsocket(); + log.info("websocket鍚姩鎴愬姛"); + } catch (Exception e) { + log.info("websocket鍚姩澶辫触"); + } } } diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/YwPeopleController.java b/ycl-server/src/main/java/com/ycl/platform/controller/YwPeopleController.java index 46900da..8d6617a 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/YwPeopleController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/YwPeopleController.java @@ -5,6 +5,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import lombok.RequiredArgsConstructor; + +import java.util.Arrays; import java.util.List; import jakarta.validation.constraints.NotEmpty; import io.swagger.annotations.Api; @@ -42,16 +44,10 @@ return ywPeopleService.update(form); } - @DeleteMapping("/{id}") - @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") - public Result removeById(@PathVariable("id") String id) { - return ywPeopleService.removeById(id); - } - - @DeleteMapping("/batch") + @DeleteMapping("/{ids}") @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") - public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { - return ywPeopleService.remove(ids); + public Result remove(@PathVariable String ids) { + return ywPeopleService.remove(Arrays.asList(ids.split(","))); } // @PreAuthorize("@ss.hasPermi('unit:people:page')") diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/YwUnitController.java b/ycl-server/src/main/java/com/ycl/platform/controller/YwUnitController.java index 7bda29c..0c01b88 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/YwUnitController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/YwUnitController.java @@ -14,6 +14,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import lombok.RequiredArgsConstructor; + +import java.util.Arrays; import java.util.List; import jakarta.validation.constraints.NotEmpty; @@ -48,16 +50,10 @@ return ywUnitService.update(form); } - @DeleteMapping("/{id}") - @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") - public Result removeById(@PathVariable("id") String id) { - return ywUnitService.removeById(id); - } - - @DeleteMapping("/batch") + @DeleteMapping("/{ids}") @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") - public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { - return ywUnitService.remove(ids); + public Result remove(@PathVariable String ids) { + return ywUnitService.remove(Arrays.asList(ids.split(","))); } // @PreAuthorize("@ss.hasPermi('unit:list')") diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPeopleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPeopleServiceImpl.java index 52a2c6b..a362ac8 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPeopleServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwPeopleServiceImpl.java @@ -10,12 +10,19 @@ import com.ycl.platform.domain.form.YwPeopleForm; import com.ycl.platform.domain.vo.YwPeopleVO; import com.ycl.platform.domain.query.YwPeopleQuery; + +import java.util.Collections; import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.system.domain.SysUserRole; +import com.ycl.system.entity.SysRole; import com.ycl.system.entity.SysUser; +import com.ycl.system.mapper.SysRoleMapper; import com.ycl.system.mapper.SysUserMapper; +import com.ycl.system.mapper.SysUserRoleMapper; import com.ycl.system.page.PageUtil; +import com.ycl.utils.SecurityUtils; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.beans.BeanUtils; @@ -41,8 +48,9 @@ private final YwPeopleMapper ywPeopleMapper; private final YwUnitMapper ywUnitMapper; - private final PasswordEncoder passwordEncoder; private final SysUserMapper sysUserMapper; + private final SysUserRoleMapper sysUserRoleMapper; + private final SysRoleMapper sysRoleMapper; /** * 娣诲姞 @@ -56,6 +64,14 @@ SysUser sysUser = new SysUser(); fullUser(sysUser, form); sysUserMapper.insertUser(sysUser); + // 鑾峰彇杩愮淮浜哄憳瑙掕壊 + SysRole sysRole = sysRoleMapper.selectRoleByKey("yw_user"); + if (Objects.isNull(sysRole)) { return Result.error("杩愮淮瑙掕壊涓嶅瓨鍦�"); } + // 缁戝畾璐﹀彿瑙掕壊鍏崇郴 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(sysRole.getRoleId()); + sysUserRole.setUserId(sysUser.getUserId()); + sysUserRoleMapper.batchUserRole(Collections.singletonList(sysUserRole)); YwPeople entity = YwPeopleForm.getEntityByForm(form, null); entity.setUserId(sysUser.getUserId()); @@ -73,7 +89,7 @@ */ public void fullUser(SysUser sysUser, YwPeopleForm form) { sysUser.setUserName(form.getYwPersonAccount()); - sysUser.setPassword(passwordEncoder.encode("123456")); + sysUser.setPassword(SecurityUtils.encryptPassword("123456")); sysUser.setStatus("0"); sysUser.setDelFlag("0"); sysUser.setFirstLogin((short) 0); @@ -119,7 +135,10 @@ .list(); List<Long> userIds = list.stream().map(YwPeople::getUserId).collect(Collectors.toList()); baseMapper.deleteBatchIds(ids); - sysUserMapper.deleteUserByIds((Long[]) userIds.toArray()); + if (!userIds.isEmpty()) { + sysUserRoleMapper.deleteUserRoleByUserIds(userIds); + sysUserMapper.deleteUserByIds(userIds.toArray(new Long[0])); + } return Result.ok("鍒犻櫎鎴愬姛"); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java index 8f9d143..c91c0e6 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/YwUnitServiceImpl.java @@ -1,7 +1,9 @@ package com.ycl.platform.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -12,12 +14,20 @@ import com.ycl.platform.domain.vo.YwUnitVO; import com.ycl.system.Result; import com.ycl.platform.mapper.YwUnitMapper; +import com.ycl.system.domain.SysUserRole; +import com.ycl.system.entity.SysRole; +import com.ycl.system.entity.SysUser; +import com.ycl.system.mapper.SysRoleMapper; +import com.ycl.system.mapper.SysUserMapper; +import com.ycl.system.mapper.SysUserRoleMapper; import com.ycl.system.page.PageUtil; import com.ycl.platform.service.YwUnitService; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.utils.DateUtils; +import com.ycl.utils.SecurityUtils; import org.springframework.stereotype.Service; import org.springframework.beans.BeanUtils; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.util.Objects; @@ -37,6 +47,9 @@ public class YwUnitServiceImpl extends ServiceImpl<YwUnitMapper, YwUnit> implements YwUnitService { private final YwUnitMapper ywUnitMapper; + private final SysUserMapper sysUserMapper; + private final SysUserRoleMapper sysUserRoleMapper; + private final SysRoleMapper sysRoleMapper; /** * 娣诲姞 @@ -44,10 +57,26 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result add(YwUnitForm form) { - // todo 澧炲姞瀵瑰簲璐﹀彿 YwUnit entity = YwUnitForm.getEntityByForm(form, null); if(baseMapper.insert(entity) > 0) { + // 鏂板杩愮淮浜哄憳璐﹀彿 + SysUser sysUser = new SysUser(); + sysUser.setDeptId(null); + sysUser.setUserName(entity.getUnitAdminAccount()); + sysUser.setNickName(entity.getUnitContact()); + sysUser.setPhonenumber(entity.getUnitContactPhone()); + sysUser.setPassword(SecurityUtils.encryptPassword("123456")); + sysUserMapper.insertUser(sysUser); + // 鑾峰彇杩愮淮浜哄憳瑙掕壊 + SysRole sysRole = sysRoleMapper.selectRoleByKey("yw_user"); + if (Objects.isNull(sysRole)) { return Result.error("杩愮淮瑙掕壊涓嶅瓨鍦�"); } + // 缁戝畾璐﹀彿瑙掕壊鍏崇郴 + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(sysRole.getRoleId()); + sysUserRole.setUserId(sysUser.getUserId()); + sysUserRoleMapper.batchUserRole(Collections.singletonList(sysUserRole)); return Result.ok("娣诲姞鎴愬姛"); } return Result.error("娣诲姞澶辫触"); @@ -59,14 +88,21 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result update(YwUnitForm form) { - // todo 淇敼瀵瑰簲璐﹀彿 YwUnit entity = baseMapper.selectById(form.getId()); // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); BeanUtils.copyProperties(form, entity); if (baseMapper.updateById(entity) > 0) { + // 淇敼杩愮淮鍗曚綅璐﹀彿淇℃伅 + SysUser sysUser = sysUserMapper.selectUserByUserName(entity.getUnitAdminAccount()); + if (Objects.nonNull(sysUser)) { + sysUser.setPhonenumber(entity.getUnitContactPhone()); + sysUser.setNickName(entity.getUnitContact()); + sysUserMapper.updateUser(sysUser); + } return Result.ok("淇敼鎴愬姛"); } return Result.error("淇敼澶辫触"); @@ -78,7 +114,16 @@ * @return */ @Override + @Transactional(rollbackFor = Exception.class) public Result remove(List<String> ids) { + List<Long> userIds = sysUserMapper.selectUserIdByNames( + baseMapper.selectList( + new LambdaQueryWrapper<YwUnit>().in(YwUnit::getId, ids)) + .stream().map(YwUnit::getUnitAdminAccount).toList()); + if (!userIds.isEmpty()) { + sysUserMapper.deleteUserByIds(userIds.toArray(new Long[0])); + sysUserRoleMapper.deleteUserRoleByUserIds(userIds); + } if(baseMapper.deleteBatchIds(ids) > 0) { return Result.ok("鍒犻櫎鎴愬姛"); } @@ -92,6 +137,12 @@ */ @Override public Result removeById(String id) { + // 鍒犻櫎杩愮淮浜哄憳璐﹀彿 + SysUser sysUser = sysUserMapper.selectUserByUserName(baseMapper.selectById(id).getUnitAdminAccount()); + if (Objects.nonNull(sysUser)) { + sysUserRoleMapper.deleteUserRoleByUserId(sysUser.getUserId()); + sysUserMapper.deleteUserById(sysUser.getUserId()); + } if(baseMapper.deleteById(id) > 0) { return Result.ok("鍒犻櫎鎴愬姛"); } diff --git a/ycl-server/src/main/java/com/ycl/system/mapper/SysRoleMapper.java b/ycl-server/src/main/java/com/ycl/system/mapper/SysRoleMapper.java index a13df4b..eb620c0 100644 --- a/ycl-server/src/main/java/com/ycl/system/mapper/SysRoleMapper.java +++ b/ycl-server/src/main/java/com/ycl/system/mapper/SysRoleMapper.java @@ -1,5 +1,6 @@ package com.ycl.system.mapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ycl.system.entity.SysRole; import org.apache.ibatis.annotations.Mapper; @@ -107,4 +108,11 @@ * @return 缁撴灉 */ public int deleteRoleByIds(Long[] roleIds); + + /** + * 鏍规嵁瑙掕壊缂栫爜鏌ヨ瑙掕壊 + * @param roleKey 瑙掕壊缂栫爜 + * @return 瑙掕壊 + */ + SysRole selectRoleByKey(String roleKey); } diff --git a/ycl-server/src/main/java/com/ycl/system/mapper/SysUserMapper.java b/ycl-server/src/main/java/com/ycl/system/mapper/SysUserMapper.java index f34637a..d101871 100644 --- a/ycl-server/src/main/java/com/ycl/system/mapper/SysUserMapper.java +++ b/ycl-server/src/main/java/com/ycl/system/mapper/SysUserMapper.java @@ -127,4 +127,11 @@ * @return 缁撴灉 */ public SysUser checkEmailUnique(String email); + + /** + * 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴穒d + * @param names 鐢ㄦ埛鍚� + * @return 鐢ㄦ埛id + */ + List<Long> selectUserIdByNames(List<String> names); } diff --git a/ycl-server/src/main/java/com/ycl/system/mapper/SysUserRoleMapper.java b/ycl-server/src/main/java/com/ycl/system/mapper/SysUserRoleMapper.java index 22f6c7c..936b6d2 100644 --- a/ycl-server/src/main/java/com/ycl/system/mapper/SysUserRoleMapper.java +++ b/ycl-server/src/main/java/com/ycl/system/mapper/SysUserRoleMapper.java @@ -64,4 +64,11 @@ public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); void exchange(@Param("roleId")Integer roleId,@Param("userId") Long userId); + + /** + * 鏍规嵁鐢ㄦ埛id鎵归噺鍒犻櫎 + * @param userIds 鐢ㄦ埛缂栧彿 + * @return 鎿嶄綔缁撴灉 + */ + int deleteUserRoleByUserIds(List<Long> userIds); } diff --git a/ycl-server/src/main/java/com/ycl/websocket/WebSocketHandler.java b/ycl-server/src/main/java/com/ycl/websocket/WebSocketHandler.java new file mode 100644 index 0000000..351bf42 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/websocket/WebSocketHandler.java @@ -0,0 +1,67 @@ +package com.ycl.websocket; + +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.SimpleChannelInboundHandler; +import io.netty.channel.group.ChannelGroup; +import io.netty.channel.group.DefaultChannelGroup; +import io.netty.handler.codec.http.websocketx.*; +import io.netty.util.concurrent.GlobalEventExecutor; + +import java.util.Objects; + + +public class WebSocketHandler extends SimpleChannelInboundHandler { + + public static ChannelGroup connects = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE); + + @Override + protected void channelRead0(ChannelHandlerContext ctx, Object o) throws Exception { + if(Objects.nonNull(o) && o instanceof WebSocketFrame){ + this.handleWebSocketFrame(ctx, (WebSocketFrame) o); + } + } + + @Override + public void channelActive(ChannelHandlerContext ctx) throws Exception { + System.out.println("鏈夋柊鐨勫鎴风杩炴帴涓婁簡"); + connects.add(ctx.channel()); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + System.out.println("鏈夊鎴风鏂紑杩炴帴浜�"); + connects.remove(ctx.channel()); + } + + // 澶勭悊ws鏁版嵁 + private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) { + // 澶勭悊鍏抽棴杩炴帴 + if (frame instanceof CloseWebSocketFrame) { + connects.remove(ctx.channel()); + ctx.close(); + return; + } + if (frame instanceof TextWebSocketFrame) { + // 澶勭悊鏂囨湰娑堟伅 + String text = ((TextWebSocketFrame) frame).text(); + System.out.println("鏈嶅姟鍣ㄦ敹鍒板鎴风鏁版嵁锛�" +text); + // 姝ゅ涓虹兢鍙戯紝鍗曠嫭鍙戝彲浣跨敤connects.find(ctx.channel().id()).writeAndFlush()鍙戦�� + connects.writeAndFlush(new TextWebSocketFrame("浣犲ソ瀹㈡埛绔�")); + // ... + } else if (frame instanceof BinaryWebSocketFrame) { + // 澶勭悊浜岃繘鍒舵秷鎭� + // ... + } else if (frame instanceof PingWebSocketFrame) { + // 澶勭悊 Ping 娑堟伅 + // 鏀跺埌 Ping 娑堟伅锛屽洖搴斾竴涓� Pong 娑堟伅锛堣〃鏄庢垜杩樻椿鐫�锛� + ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content().retain())); + } else if (frame instanceof PongWebSocketFrame) { + // 澶勭悊 Pong 娑堟伅 + // pong娑堟伅濡傛灉娌℃湁鐗瑰畾闇�姹傦紝涓嶇敤澶勭悊 + } else if (frame instanceof ContinuationWebSocketFrame) { + // 澶勭悊杩炵画甯ф秷鎭紙姣旇緝澶х殑鏁版嵁锛屽垎鐗囷級 + // ... + } + } + +} diff --git a/ycl-server/src/main/java/com/ycl/websocket/WebsocketServer.java b/ycl-server/src/main/java/com/ycl/websocket/WebsocketServer.java new file mode 100644 index 0000000..25acb1f --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/websocket/WebsocketServer.java @@ -0,0 +1,57 @@ +package com.ycl.websocket; + +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioServerSocketChannel; +import io.netty.handler.codec.http.HttpServerCodec; +import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler; + +/** + * webscoket 鏈嶅姟 + * + * @author锛歺p + * @date锛�2024/4/11 17:47 + */ +public class WebsocketServer { + + public static void runWebsocket() throws Exception { + // 澶勭悊 I/O 鎿嶄綔鐨勫绾跨▼浜嬩欢寰幆缁勶紙绾跨▼姹狅級銆俠ossGroup鐢ㄤ簬鎺ユ敹浼犲叆鐨勮繛鎺ワ紝workerGroup鐢ㄤ簬澶勭悊IO鎿嶄綔 + EventLoopGroup bossGroup = new NioEventLoopGroup(); + EventLoopGroup workerGroup = new NioEventLoopGroup(); + try { + // 鏈嶅姟鍣ㄥ紩瀵�(鍚姩)绫伙紝鎻愪緵浜嗕竴浜涙柟娉曚娇寮�鍙戣�呰兘澶熺畝鍗曠殑鍚姩鏈嶅姟绔� + ServerBootstrap b = new ServerBootstrap(); + b.group(bossGroup, workerGroup) + // 鎸囧畾鏈嶅姟鍣ㄩ�氶亾(涓汇�佸瓙閫氶亾)鐨勫疄鐜扮被 + .channel(NioServerSocketChannel.class) + // 璁剧疆閫氶亾鍒濆鍖栧櫒(ChannelInitializer)锛屾瘡娆″垱寤虹殑閫氶亾閮芥寜杩欎釜鍒濆鍖� + .childHandler(new ChannelInitializer<SocketChannel>() { + @Override + public void initChannel(SocketChannel ch) throws Exception { + // websocket鐨勬彙鎵嬮樁娈垫槸浣跨敤鐨凥ttp锛屾墍浠ラ渶瑕佹坊澶勭悊http璇锋眰锛� + // 鐢ㄤ簬灏� HTTP 璇锋眰鍜屽搷搴旇浆鎹负瀛楄妭娴佷互鍙婂皢瀛楄妭娴佽浆鎹负 HTTP 璇锋眰鍜屽搷搴� + ch.pipeline().addLast(new HttpServerCodec()); + ch.pipeline().addLast(new WebSocketServerProtocolHandler("/ws", null, true, 6000)); + ch.pipeline().addLast(new WebSocketHandler()); + } + }) + // 璁剧疆鏈嶅姟鍣ㄩ�氶亾(涓婚�氶亾)鐨勯�夐」锛屾澶勬槸璁剧疆杩炴帴璇锋眰闃熷垪鐨勬渶澶ч暱搴︽槸128 + .option(ChannelOption.SO_BACKLOG, 128); + + // 缁戝畾鏈嶅姟鍣ㄥ埌鎸囧畾鐨勭鍙o紝骞朵笖绛夊緟缁戝畾鎿嶄綔瀹屾垚銆� + ChannelFuture f = b.bind(8084).sync(); + + // 绛夊緟鏈嶅姟鍣ㄧ殑閫氶亾鍏抽棴銆� + f.channel().closeFuture().sync(); + } finally { + workerGroup.shutdownGracefully(); + bossGroup.shutdownGracefully(); + } + } + +} diff --git a/ycl-server/src/main/resources/mapper/system/SysRoleMapper.xml b/ycl-server/src/main/resources/mapper/system/SysRoleMapper.xml index 86adbf5..d1a41e8 100644 --- a/ycl-server/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/ycl-server/src/main/resources/mapper/system/SysRoleMapper.xml @@ -92,8 +92,12 @@ <include refid="selectRoleVo"/> where r.role_key=#{roleKey} and r.del_flag = '0' limit 1 </select> - - <insert id="insertRole" parameterType="com.ycl.system.entity.SysRole" useGeneratedKeys="true" keyProperty="roleId"> + + <select id="selectRoleByKey" resultType="com.ycl.system.entity.SysRole"> + select * from sys_role where role_key = #{roleKey} and del_flag = '0' limit 1 + </select> + + <insert id="insertRole" parameterType="com.ycl.system.entity.SysRole" useGeneratedKeys="true" keyProperty="roleId"> insert into sys_role( <if test="roleId != null and roleId != 0">role_id,</if> <if test="roleName != null and roleName != ''">role_name,</if> diff --git a/ycl-server/src/main/resources/mapper/system/SysUserMapper.xml b/ycl-server/src/main/resources/mapper/system/SysUserMapper.xml index b61b865..194c2b2 100644 --- a/ycl-server/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ycl-server/src/main/resources/mapper/system/SysUserMapper.xml @@ -142,7 +142,14 @@ <select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult"> select user_id, email from sys_user where email = #{email} and del_flag = '0' limit 1 </select> - + + <select id="selectUserIdByNames" resultType="java.lang.Long"> + select user_id from sys_user where user_name in + <foreach item="item" index="index" collection="names" open="(" separator="," close=")"> + #{item} + </foreach> + </select> + <insert id="insertUser" parameterType="com.ycl.system.entity.SysUser" useGeneratedKeys="true" keyProperty="userId"> insert into sys_user( <if test="userId != null and userId != 0">user_id,</if> diff --git a/ycl-server/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ycl-server/src/main/resources/mapper/system/SysUserRoleMapper.xml index 7a5c65a..8e079e5 100644 --- a/ycl-server/src/main/resources/mapper/system/SysUserRoleMapper.xml +++ b/ycl-server/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -41,4 +41,11 @@ #{userId} </foreach> </delete> + + <delete id="deleteUserRoleByUserIds"> + delete from sys_user_role where user_id in + <foreach collection="userIds" item="userId" open="(" separator="," close=")"> + #{userId} + </foreach> + </delete> </mapper> \ No newline at end of file -- Gitblit v1.8.0