mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 15:13:55 +08:00
用户模块和设备模块存在循环引用,把用户模块常用方法抽出一个工具类,以后设备模块等和用户相关的模块,直接引用工具类,避免循环引用
--DeviceServiceImpl.java 修改设备模块获取用户名的方式,使用用户工具类 --SysUserService.java 新建用户工具类,定义了赋值用户名方法 --SysUserServiceImpl.java 实现工具类,重写了赋值用户名的方法
This commit is contained in:
+6
-8
@@ -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<DeviceDao, DeviceEntity> 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<DeviceDao, DeviceEntity>
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
|
||||
// 添加构造函数来初始化 deviceMapper
|
||||
public DeviceServiceImpl(DeviceDao deviceDao, SysUserService sysUserService,
|
||||
public DeviceServiceImpl(DeviceDao deviceDao, SysUserUtilService sysUserUtilService,
|
||||
@Value("${app.fronted-url:http://localhost:8001}") String frontedUrl,
|
||||
RedisTemplate<String, Object> 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<DeviceDao, DeviceEntity>
|
||||
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();
|
||||
|
||||
@@ -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<String> setter);
|
||||
}
|
||||
+26
@@ -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<SysUserDao, SysUserEntity> implements SysUserUtilService {
|
||||
|
||||
private RedisUtils redisUtils;
|
||||
|
||||
@Override
|
||||
public void assignUsername(Long userId, Consumer<String> setter) {
|
||||
SysUserEntity entity = baseDao.selectById(userId);
|
||||
if (entity != null) {
|
||||
setter.accept(entity.getUsername());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user