From 083e7071f00aa3c4274556d1a9f4be6d295c952e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=89=91=E9=9B=A8?= <2375294554@qq.com> Date: Thu, 3 Apr 2025 09:41:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=A8=A1=E5=9D=97=E5=92=8C?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=A8=A1=E5=9D=97=E5=AD=98=E5=9C=A8=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E5=BC=95=E7=94=A8=EF=BC=8C=E6=8A=8A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=B8=B8=E7=94=A8=E6=96=B9=E6=B3=95=E6=8A=BD?= =?UTF-8?q?=E5=87=BA=E4=B8=80=E4=B8=AA=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E5=90=8E=E8=AE=BE=E5=A4=87=E6=A8=A1=E5=9D=97=E7=AD=89?= =?UTF-8?q?=E5=92=8C=E7=94=A8=E6=88=B7=E7=9B=B8=E5=85=B3=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=BC=95=E7=94=A8=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=EF=BC=8C=E9=81=BF=E5=85=8D=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E5=BC=95=E7=94=A8=20--DeviceServiceImpl.java=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=BE=E5=A4=87=E6=A8=A1=E5=9D=97=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E7=9A=84=E6=96=B9=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=94=A8=E6=88=B7=E5=B7=A5=E5=85=B7=E7=B1=BB?= =?UTF-8?q?=20--SysUserService.java=20=E6=96=B0=E5=BB=BA=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E5=AE=9A=E4=B9=89=E4=BA=86?= =?UTF-8?q?=E8=B5=8B=E5=80=BC=E7=94=A8=E6=88=B7=E5=90=8D=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20--SysUserServiceImpl.java=20=E5=AE=9E=E7=8E=B0=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E7=B1=BB=EF=BC=8C=E9=87=8D=E5=86=99=E4=BA=86=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E7=94=A8=E6=88=B7=E5=90=8D=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DeviceServiceImpl.java | 14 +++++----- .../sys/service/SysUserUtilService.java | 19 ++++++++++++++ .../service/impl/SysUserUtilServiceImpl.java | 26 +++++++++++++++++++ 3 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserUtilService.java create mode 100644 main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserUtilServiceImpl.java diff --git a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java index 06b64d9e..f94038b8 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/device/service/impl/DeviceServiceImpl.java @@ -22,7 +22,6 @@ import cn.hutool.core.util.RandomUtil; import xiaozhi.common.constant.Constant; import xiaozhi.common.exception.RenException; import xiaozhi.common.page.ExtendPageData; -import xiaozhi.common.page.PageData; import xiaozhi.common.service.impl.BaseServiceImpl; import xiaozhi.common.user.UserDetail; import xiaozhi.common.utils.ConvertUtils; @@ -36,14 +35,14 @@ import xiaozhi.modules.device.entity.DeviceEntity; import xiaozhi.modules.device.service.DeviceService; import xiaozhi.modules.device.vo.UserShowDeviceListVO; import xiaozhi.modules.security.user.SecurityUser; -import xiaozhi.modules.sys.service.SysUserService; +import xiaozhi.modules.sys.service.SysUserUtilService; @Service public class DeviceServiceImpl extends BaseServiceImpl implements DeviceService { private final DeviceDao deviceDao; - private final SysUserService sysUserService; + private final SysUserUtilService sysUserUtilService; private final String frontedUrl; @@ -51,11 +50,11 @@ public class DeviceServiceImpl extends BaseServiceImpl private final RedisTemplate redisTemplate; // 添加构造函数来初始化 deviceMapper - public DeviceServiceImpl(DeviceDao deviceDao, SysUserService sysUserService, + public DeviceServiceImpl(DeviceDao deviceDao, SysUserUtilService sysUserUtilService, @Value("${app.fronted-url:http://localhost:8001}") String frontedUrl, RedisTemplate redisTemplate) { this.deviceDao = deviceDao; - this.sysUserService = sysUserService; + this.sysUserUtilService = sysUserUtilService; this.frontedUrl = frontedUrl; this.redisTemplate = redisTemplate; } @@ -239,9 +238,8 @@ public class DeviceServiceImpl extends BaseServiceImpl UserShowDeviceListVO vo = ConvertUtils.sourceToTarget(device, UserShowDeviceListVO.class); // 把最后修改的时间,改为简短描述的时间 vo.setRecentChatTime(DateUtils.getShortTime(device.getUpdateDate())); - // 获取用户名 - String username = sysUserService.getByUserId(device.getUserId()).getUsername(); - vo.setBindUserName(username); + sysUserUtilService.assignUsername(device.getUserId(), + vo::setBindUserName); vo.setDeviceType(device.getBoard()); return vo; }).toList(); diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserUtilService.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserUtilService.java new file mode 100644 index 00000000..0fa3fc4a --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/SysUserUtilService.java @@ -0,0 +1,19 @@ +package xiaozhi.modules.sys.service; + + +import java.util.function.Consumer; + +/** + * 定义一个系统用户工具类,避免和用户模块循环依赖 + * 如用户和设备互相依赖,用户需要获取所有设备,设备又需要获取每个设备的用户名 + * @author zjy + * @since 2025-4-2 + */ +public interface SysUserUtilService { + /** + * 赋值用户名 + * @param userId 用户id + * @param setter 赋值方法 + */ + void assignUsername( Long userId, Consumer setter); +} diff --git a/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserUtilServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserUtilServiceImpl.java new file mode 100644 index 00000000..513da17b --- /dev/null +++ b/main/manager-api/src/main/java/xiaozhi/modules/sys/service/impl/SysUserUtilServiceImpl.java @@ -0,0 +1,26 @@ +package xiaozhi.modules.sys.service.impl; + +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; +import xiaozhi.common.redis.RedisUtils; +import xiaozhi.common.service.impl.BaseServiceImpl; +import xiaozhi.modules.sys.dao.SysUserDao; +import xiaozhi.modules.sys.entity.SysUserEntity; +import xiaozhi.modules.sys.service.SysUserUtilService; + +import java.util.function.Consumer; + +@Service +@AllArgsConstructor +public class SysUserUtilServiceImpl extends BaseServiceImpl implements SysUserUtilService { + + private RedisUtils redisUtils; + + @Override + public void assignUsername(Long userId, Consumer setter) { + SysUserEntity entity = baseDao.selectById(userId); + if (entity != null) { + setter.accept(entity.getUsername()); + } + } +}