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()); + } + } +}