!613 refactor 优化代码
* update 优化代码
| | |
| | | @Slf4j |
| | | @NoArgsConstructor(access = AccessLevel.PRIVATE) |
| | | public class Threads { |
| | | |
| | | /** |
| | | * sleep等待,单位为毫秒 |
| | | */ |
| | | public static void sleep(long milliseconds) { |
| | | try { |
| | | Thread.sleep(milliseconds); |
| | | } catch (InterruptedException e) { |
| | | return; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 停止线程池 |
| | | * 先使用shutdown, 停止接收新任务并尝试完成所有已存在任务. |
| | |
| | | private String pass; |
| | | |
| | | /** |
| | | * 发送方,遵循RFC-822标准 |
| | | * 发送方,遵循RFC-822标准<br> |
| | | * 发件人可以是以下形式: |
| | | * |
| | | * <pre> |
| | | * 1. user@xxx.xx |
| | | * 2. name <user@xxx.xx> |
| | | * </pre> |
| | | */ |
| | | private String from; |
| | | |
| | |
| | | SseMessageDto broadcastMessage = new SseMessageDto(); |
| | | broadcastMessage.setMessage(sseMessageDto.getMessage()); |
| | | broadcastMessage.setUserIds(sseMessageDto.getUserIds()); |
| | | RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> { |
| | | RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> |
| | | log.info("SSE发送主题订阅消息topic:{} session keys:{} message:{}", |
| | | SSE_TOPIC, sseMessageDto.getUserIds(), sseMessageDto.getMessage()); |
| | | }); |
| | | SSE_TOPIC, sseMessageDto.getUserIds(), sseMessageDto.getMessage()) |
| | | ); |
| | | } |
| | | |
| | | /** |
| | |
| | | public void publishAll(String message) { |
| | | SseMessageDto broadcastMessage = new SseMessageDto(); |
| | | broadcastMessage.setMessage(message); |
| | | RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> { |
| | | log.info("SSE发送主题订阅消息topic:{} message:{}", SSE_TOPIC, message); |
| | | }); |
| | | RedisUtils.publish(SSE_TOPIC, broadcastMessage, consumer -> |
| | | log.info("SSE发送主题订阅消息topic:{} message:{}", SSE_TOPIC, message) |
| | | ); |
| | | } |
| | | } |
| | |
| | | package org.dromara.demo.controller; |
| | | |
| | | import cn.hutool.core.thread.ThreadUtil; |
| | | import org.dromara.common.core.constant.CacheNames; |
| | | import org.dromara.common.core.domain.R; |
| | | import org.dromara.common.redis.utils.RedisUtils; |
| | |
| | | RedisUtils.setCacheObject(key, value); |
| | | boolean flag = RedisUtils.expire(key, Duration.ofSeconds(10)); |
| | | System.out.println("***********" + flag); |
| | | try { |
| | | Thread.sleep(11 * 1000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | ThreadUtil.sleep(11 * 1000); |
| | | Object obj = RedisUtils.getCacheObject(key); |
| | | return R.ok(value.equals(obj)); |
| | | } |
| | |
| | | package org.dromara.demo.controller; |
| | | |
| | | import cn.hutool.core.thread.ThreadUtil; |
| | | import com.baomidou.lock.LockInfo; |
| | | import com.baomidou.lock.LockTemplate; |
| | | import com.baomidou.lock.annotation.Lock4j; |
| | |
| | | @Lock4j(keys = {"#key"}) |
| | | @GetMapping("/testLock4j") |
| | | public R<String> testLock4j(String key, String value) { |
| | | System.out.println("start:" + key + ",time:" + LocalTime.now().toString()); |
| | | try { |
| | | Thread.sleep(10000); |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | System.out.println("end :" + key + ",time:" + LocalTime.now().toString()); |
| | | System.out.println("start:" + key + ",time:" + LocalTime.now()); |
| | | ThreadUtil.sleep(10000); |
| | | System.out.println("end :" + key + ",time:" + LocalTime.now()); |
| | | return R.ok("操作成功", value); |
| | | } |
| | | |
| | |
| | | } |
| | | // 获取锁成功,处理业务 |
| | | try { |
| | | try { |
| | | Thread.sleep(8000); |
| | | } catch (InterruptedException e) { |
| | | // |
| | | } |
| | | ThreadUtil.sleep(8000); |
| | | System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName()); |
| | | } finally { |
| | | //释放锁 |
| | |
| | | @Log(title = "客户端管理", businessType = BusinessType.UPDATE) |
| | | @PutMapping("/changeStatus") |
| | | public R<Void> changeStatus(@RequestBody SysClientBo bo) { |
| | | return toAjax(sysClientService.updateUserStatus(bo.getClientId(), bo.getStatus())); |
| | | return toAjax(sysClientService.updateClientStatus(bo.getClientId(), bo.getStatus())); |
| | | } |
| | | |
| | | /** |
| | |
| | | @GetMapping("/optionselect") |
| | | public R<List<SysUserVo>> optionselect(@RequestParam(required = false) Long[] userIds, |
| | | @RequestParam(required = false) Long deptId) { |
| | | return R.ok(userService.selectUserByIds(userIds == null ? null : List.of(userIds), deptId)); |
| | | return R.ok(userService.selectUserByIds(ArrayUtil.isEmpty(userIds) ? null : List.of(userIds), deptId)); |
| | | } |
| | | |
| | | /** |
| | |
| | | /** |
| | | * 修改状态 |
| | | */ |
| | | int updateUserStatus(String clientId, String status); |
| | | int updateClientStatus(String clientId, String status); |
| | | |
| | | /** |
| | | * 校验并批量删除客户端管理信息 |
| | |
| | | */ |
| | | @CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId") |
| | | @Override |
| | | public int updateUserStatus(String clientId, String status) { |
| | | public int updateClientStatus(String clientId, String status) { |
| | | return baseMapper.update(null, |
| | | new LambdaUpdateWrapper<SysClient>() |
| | | .set(SysClient::getStatus, status) |
| | |
| | | .setName(dept.getDeptName()) |
| | | .setWeight(dept.getOrderNum()) |
| | | .putExtra("disabled", SystemConstants.DISABLE.equals(dept.getStatus()))); |
| | | Tree<Long> tree = trees.stream().filter(it -> it.getId().longValue() == d.getDeptId()).findFirst().get(); |
| | | Tree<Long> tree = StreamUtils.findFirst(trees, it -> it.getId().longValue() == d.getDeptId()); |
| | | treeList.add(tree); |
| | | } |
| | | } |
| | |
| | | .between(params.get("beginTime") != null && params.get("endTime") != null, |
| | | SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")); |
| | | if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { |
| | | pageQuery.setOrderByColumn("info_id"); |
| | | pageQuery.setIsAsc("desc"); |
| | | lqw.orderByDesc(SysLogininfor::getInfoId); |
| | | } |
| | | Page<SysLogininforVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | return TableDataInfo.build(page); |
| | |
| | | public TableDataInfo<SysOperLogVo> selectPageOperLogList(SysOperLogBo operLog, PageQuery pageQuery) { |
| | | LambdaQueryWrapper<SysOperLog> lqw = buildQueryWrapper(operLog); |
| | | if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { |
| | | pageQuery.setOrderByColumn("oper_id"); |
| | | pageQuery.setIsAsc("desc"); |
| | | lqw.orderByDesc(SysOperLog::getOperId); |
| | | } |
| | | Page<SysOperLogVo> page = baseMapper.selectVoPage(pageQuery.build(), lqw); |
| | | return TableDataInfo.build(page); |