设备绑定支持

This commit is contained in:
zjf committed 2026-01-26 20:01:40 +08:00
1 parent a1d9b4d3fc
commit 2849fdbcb0
5 files changed
+212

No files matched your search

@@ -0,0 +1,24 @@
package cn.iocoder.yudao.module.product.controller.admin.device.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Schema(description = "管理后台 - 贩卖机信息精简 Response VO")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DeviceSimpleRespVO {
@Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long id;
@Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "贩卖机001")
private String name;
@Schema(description = "设备IMEI", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456789012345")
private String deviceId;
}
@@ -0,0 +1,23 @@
package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
@Schema(description = "管理后台 - 用户绑定设备 Request VO")
@Data
public class UserBindDeviceReqVO {
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
@NotNull(message = "用户ID不能为空")
private Long userId;
@Schema(description = "设备ID列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1, 2, 3]")
@NotEmpty(message = "设备ID列表不能为空")
private List<Long> deviceIds;
}
@@ -0,0 +1,19 @@
package cn.iocoder.yudao.module.system.controller.admin.user.vo.user;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Schema(description = "管理后台 - 用户设备信息 Response VO")
@Data
public class UserDeviceRespVO {
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
private Long userId;
@Schema(description = "绑定的设备ID列表", example = "[1, 2, 3]")
private List<Long> deviceIds;
}
@@ -0,0 +1,42 @@
package cn.iocoder.yudao.module.system.dal.dataobject.user;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户和设备关联 DO
*
* @author 芋道源码
*/
@TableName("system_user_device")
@KeySequence("system_user_device_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
public class UserDeviceDO extends BaseDO {
/**
* 自增主键
*/
@TableId
private Long id;
/**
* 用户 ID
*
* 关联 {@link AdminUserDO#getId()}
*/
private Long userId;
/**
* 设备 ID
*
* 关联 product_device 表的 id
*/
private Long deviceId;
}
@@ -0,0 +1,104 @@
package cn.iocoder.yudao.module.system.dal.mysql.user;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.dal.dataobject.user.UserDeviceDO;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.Mapper;
import java.util.Collection;
import java.util.List;
/**
* 用户和设备关联 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface UserDeviceMapper extends BaseMapperX<UserDeviceDO> {
/**
* 根据用户ID查询设备关联列表
*
* @param userId 用户ID
* @return 设备关联列表
*/
default List<UserDeviceDO> selectListByUserId(Long userId) {
return selectList(UserDeviceDO::getUserId, userId);
}
/**
* 根据设备ID查询用户关联列表
*
* @param deviceId 设备ID
* @return 用户关联列表
*/
default List<UserDeviceDO> selectListByDeviceId(Long deviceId) {
return selectList(UserDeviceDO::getDeviceId, deviceId);
}
/**
* 根据用户ID和设备ID查询关联
*
* @param userId 用户ID
* @param deviceId 设备ID
* @return 关联记录
*/
default UserDeviceDO selectByUserIdAndDeviceId(Long userId, Long deviceId) {
return selectOne(new LambdaQueryWrapperX<UserDeviceDO>()
.eq(UserDeviceDO::getUserId, userId)
.eq(UserDeviceDO::getDeviceId, deviceId));
}
/**
* 根据用户ID删除设备关联
*
* @param userId 用户ID
* @param deviceIds 设备ID集合
*/
default void deleteByUserIdAndDeviceIds(Long userId, Collection<Long> deviceIds) {
delete(new LambdaQueryWrapperX<UserDeviceDO>()
.eq(UserDeviceDO::getUserId, userId)
.in(UserDeviceDO::getDeviceId, deviceIds));
}
/**
* 根据用户ID删除所有设备关联
*
* @param userId 用户ID
*/
default void deleteByUserId(Long userId) {
delete(Wrappers.lambdaUpdate(UserDeviceDO.class).eq(UserDeviceDO::getUserId, userId));
}
/**
* 根据设备ID删除所有用户关联
*
* @param deviceId 设备ID
*/
default void deleteByDeviceId(Long deviceId) {
delete(Wrappers.lambdaUpdate(UserDeviceDO.class).eq(UserDeviceDO::getDeviceId, deviceId));
}
/**
* 根据用户ID集合查询设备ID列表
*
* @param userIds 用户ID集合
* @return 设备关联列表
*/
default List<UserDeviceDO> selectListByUserIds(Collection<Long> userIds) {
return selectList(UserDeviceDO::getUserId, userIds);
}
/**
* 根据设备ID集合查询用户ID列表
*
* @param deviceIds 设备ID集合
* @return 用户关联列表
*/
default List<UserDeviceDO> selectListByDeviceIds(Collection<Long> deviceIds) {
return selectList(UserDeviceDO::getDeviceId, deviceIds);
}
}