feat(后端): 联调修改

master
rdpnr_puzhi 2025-08-11 18:55:20 +08:00
parent f95d382c30
commit 725932dfc2
22 changed files with 401 additions and 87 deletions

View File

@ -1,20 +1,24 @@
package com.unisinsight.project.controller;
import cn.hutool.json.JSONUtil;
import com.unisinsight.project.entity.req.DeviceReq;
import com.unisinsight.project.entity.req.DeviceUserReq;
import com.unisinsight.project.entity.res.ImageRes;
import com.unisinsight.project.entity.req.LoginReq;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.ClientService;
import com.unisinsight.project.service.DeviceService;
import com.unisinsight.project.service.DeviceUserMappingService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
@ -35,52 +39,77 @@ public class ClientController {
@Resource
private DeviceUserMappingService deviceUserMappingService;
@Resource
private DeviceService deviceService;
@ApiOperation(value = "用户认证")
@PostMapping("/auth")
public Result<List<ImageRes>> authentication(@RequestParam("deviceId") String deviceId) {
if (Objects.isNull(deviceId)) {
@PostMapping("/authentication")
public Result<?> authentication(@RequestBody LoginReq loginReq) {
if (Objects.isNull(loginReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户认证请求参数为:{}", deviceId);
return Result.successResult();
log.info("用户认证请求参数为:{}", JSONUtil.toJsonStr(loginReq));
DeviceReq deviceReq = new DeviceReq();
deviceReq.setDeviceId(loginReq.getDeviceId());
deviceReq.setDeviceName("默认终端");
deviceReq.setDeviceGroupId(3L);
deviceReq.setDeviceGroupName("默认终端分组");
return deviceService.insert(deviceReq);
}
@ApiOperation(value = "用户登录")
@PostMapping("/login")
public Result<?> loginUser(@RequestParam("deviceId") String deviceId,
@RequestParam("username") String username,
@RequestParam("password") String password) {
if (Objects.isNull(deviceId) || Objects.isNull(username) || Objects.isNull(password)) {
public Result<?> loginUser(@RequestBody LoginReq loginReq) {
if (Objects.isNull(loginReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户登录请求参数为,deviceId:{},username:{},password:{}", deviceId, username, password);
log.info("用户登录请求参数为:{}", JSONUtil.toJsonStr(loginReq));
DeviceUserReq deviceUserReq = new DeviceUserReq();
deviceUserReq.setDeviceId(deviceId);
deviceUserReq.setUserName(username);
deviceUserReq.setPassword(password);
return deviceUserMappingService.loginUser(deviceUserReq);
deviceUserReq.setDeviceId(loginReq.getDeviceId());
deviceUserReq.setUserName(loginReq.getUsername());
deviceUserReq.setPassword(loginReq.getPassword());
//todo 后面再调
// Result<?> result = deviceUserMappingService.loginUser(deviceUserReq);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("token", "123456");
return Result.successResult(hashMap);
}
@ApiOperation(value = "获取镜像列表")
@PostMapping("/getImageList")
public Result<?> getImageList(@RequestParam("deviceId") String deviceId,
@RequestParam("token") String token) {
if (Objects.isNull(deviceId) || Objects.isNull(token)) {
public Result<?> getImageList(@RequestBody LoginReq loginReq) {
if (Objects.isNull(loginReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("获取镜像列表请求参数为,deviceId:{},token:{}", deviceId, token);
log.info("获取镜像列表请求参数为:{}", JSONUtil.toJsonStr(loginReq));
return clientService.getImageList(deviceId, token);
// Result<?> imageList = clientService.getImageList(loginReq.getDeviceId(), loginReq.getToken());
List<HashMap<String, Object>> hashMaps = new ArrayList<>();
HashMap<String, Object> map = new HashMap<>();
map.put("name", "ubuntu-20.04.6-desktop-amd64.iso");
map.put("torrent", "https://releases.ubuntu.com/20.04.6/ubuntu-20.04.6-desktop-amd64.iso.torrent");
hashMaps.add(map);
HashMap<String, Object> map1 = new HashMap<>();
map1.put("name", "uos_nbd_20250806.qcow2");
map1.put("torrent", "http://10.100.51.86:8114/api/vdi/file/down/win10_v2307_uefi_demo.vhdx.torrent");
hashMaps.add(map1);
HashMap<String, Object> map2 = new HashMap<>();
map2.put("name", "win10_v2307_uefi_demo.vhdx");
map2.put("torrent", "http://10.100.51.86:8114/api/vdi/file/down/win10_v2307_uefi_demo.vhdx.torrent");
hashMaps.add(map2);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("list", hashMaps);
return Result.successResult(hashMap);
}
@ApiOperation(value = "版本更新")
@PostMapping("/update")
public Result<?> getImageUpdate(@RequestParam("deviceId") String deviceId) {
if (Objects.isNull(deviceId)) {
public Result<?> getImageUpdate(@RequestBody LoginReq loginReq) {
if (Objects.isNull(loginReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("获取镜像列表请求参数为,deviceId:{}", deviceId);
log.info("版本更新请求参数为:{}", JSONUtil.toJsonStr(loginReq));
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("version", "1.0.0");
hashMap.put("url", "https://intent-bathhouse.name");

View File

@ -1,8 +1,13 @@
package com.unisinsight.project.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.unisinsight.project.entity.dao.DeviceImageMapping;
import com.unisinsight.project.entity.req.DeviceImageMappingReq;
import com.unisinsight.project.entity.res.DeviceImageMappingRes;
import com.unisinsight.project.entity.res.ListReq;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.DeviceImageMappingService;
@ -17,6 +22,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @description:
@ -34,12 +41,50 @@ public class DeviceImageMappingController {
@ApiOperation(value = "终端镜像映射新增")
@PostMapping("/add")
public Result<?> insert(@RequestBody DeviceImageMappingReq deviceImageMappingReq) {
if (Objects.isNull(deviceImageMappingReq)) {
public Result<?> insert(@RequestBody ListReq<DeviceImageMappingReq> deviceImageMappingReq) {
if (Objects.isNull(deviceImageMappingReq.getData())) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("终端镜像映射新增请求参数为:{}", JSONUtil.toJsonStr(deviceImageMappingReq));
return deviceImageMappingService.insert(deviceImageMappingReq);
List<DeviceImageMappingReq> reqData = deviceImageMappingReq.getData();
List<DeviceImageMappingReq> addList = reqData.stream().filter(e -> Objects.isNull(e.getId())).collect(Collectors.toList());
QueryWrapper<DeviceImageMapping> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(DeviceImageMapping::getDeviceId, reqData.get(0).getDeviceId());
List<DeviceImageMapping> list = deviceImageMappingService.list(wrapper);
if (CollectionUtil.isNotEmpty(list)) {
Set<Long> requestIds = reqData.stream()
.map(DeviceImageMappingReq::getId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
List<Long> idsToDelete = list.stream()
.map(DeviceImageMapping::getId)
.filter(Objects::nonNull)
.filter(id -> !requestIds.contains(id))
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(idsToDelete)) {
deviceImageMappingService.removeByIds(idsToDelete);
log.info("删除了 {} 条不匹配的旧数据ID列表: {}", idsToDelete.size(), idsToDelete);
}
}
if (CollectionUtil.isNotEmpty(addList)) {
List<DeviceImageMapping> deviceImageMappings = BeanUtil.copyToList(addList, DeviceImageMapping.class);
List<DeviceImageMapping> deviceImageMappingList = deviceImageMappings.stream().peek(e -> {
e.setCreateUser("admin");
}).collect(Collectors.toList());
boolean insert = deviceImageMappingService.saveBatch(deviceImageMappingList);
log.info("终端镜像映射新增insert:{}", insert);
if (!insert) {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
}
}
return Result.successResult();
}
@ApiOperation(value = "终端镜像映射查询")

View File

@ -1,8 +1,13 @@
package com.unisinsight.project.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.unisinsight.project.entity.dao.DeviceUserMapping;
import com.unisinsight.project.entity.req.DeviceUserMappingReq;
import com.unisinsight.project.entity.res.DeviceUserMappingRes;
import com.unisinsight.project.entity.res.ListReq;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.DeviceUserMappingService;
@ -17,6 +22,8 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @description: DeviceUserMappingController
@ -34,12 +41,48 @@ public class DeviceUserMappingController {
@ApiOperation(value = "终端用户映射新增")
@PostMapping("/add")
public Result<?> insert(@RequestBody DeviceUserMappingReq deviceUserMappingReq) {
if (Objects.isNull(deviceUserMappingReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
public Result<?> insert(@RequestBody ListReq<DeviceUserMappingReq> deviceUserMappingReq) {
if (Objects.isNull(deviceUserMappingReq.getData())) {
return Result.errorResult(BaseErrorCode.PARAMETERS_INVALID);
}
log.info("终端用户映射新增请求参数为:{}", JSONUtil.toJsonStr(deviceUserMappingReq));
return deviceUserMappingService.insert(deviceUserMappingReq);
List<DeviceUserMappingReq> userMappingReqData = deviceUserMappingReq.getData();
List<DeviceUserMappingReq> addList = userMappingReqData.stream().filter(e -> Objects.isNull(e.getId())).collect(Collectors.toList());
QueryWrapper<DeviceUserMapping> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(DeviceUserMapping::getDeviceId, userMappingReqData.get(0).getDeviceId());
List<DeviceUserMapping> list = deviceUserMappingService.list(wrapper);
if (CollectionUtil.isNotEmpty(list)) {
Set<Long> requestIds = userMappingReqData.stream()
.map(DeviceUserMappingReq::getId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
List<Long> idsToDelete = list.stream()
.map(DeviceUserMapping::getId)
.filter(Objects::nonNull)
.filter(id -> !requestIds.contains(id))
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(idsToDelete)) {
deviceUserMappingService.removeByIds(idsToDelete);
log.info("删除了 {} 条不匹配的旧数据ID列表: {}", idsToDelete.size(), idsToDelete);
}
}
if (CollectionUtil.isNotEmpty(addList)) {
List<DeviceUserMapping> deviceUserMappings = BeanUtil.copyToList(addList, DeviceUserMapping.class);
List<DeviceUserMapping> deviceUserMapping = deviceUserMappings.stream().peek(e -> {
e.setCreateUser("admin");
}).collect(Collectors.toList());
boolean insert = deviceUserMappingService.saveBatch(deviceUserMapping);
log.info("终端用户映射新增insert:{}", insert);
if (!insert) {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
}
}
return Result.successResult();
}
@ApiOperation(value = "终端用户映射查询")
@ -53,5 +96,4 @@ public class DeviceUserMappingController {
}
}

View File

@ -1,11 +1,14 @@
package com.unisinsight.project.controller;
import com.unisinsight.project.entity.dao.Image;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.ImageMapper;
import com.unisinsight.project.util.DigestUtil;
import io.swagger.annotations.*;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@ -168,6 +171,21 @@ public class FileChunkController {
}
}
@PostMapping("/cancel/upload")
@ApiOperation(value = "取消上传文件")
public Result<?> cancelUpload(@RequestParam("file_id") String fileId) {
if (ObjectUtils.isEmpty(fileId)) {
return Result.errorResult(BaseErrorCode.PARAMETERS_EMPTY);
}
log.info("取消上传,清理临时文件: {}", fileId);
try {
cleanupTempFiles(fileId);
} catch (IOException ex) {
log.error("清理临时文件失败,fileId:{}, {}", fileId, ex.getMessage(), ex);
}
return Result.successResult();
}
/**
*
*

View File

@ -67,8 +67,8 @@ public class UserController {
@ApiOperation(value = "用户删除")
@PostMapping("/delete")
public Result<?> deleteUser(@RequestBody DeleteIdReq deleteIdReq) {
if (Objects.isNull(deleteIdReq)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
if (Objects.isNull(deleteIdReq.getId())) {
return Result.errorResult(BaseErrorCode.PARAMETERS_INVALID);
}
log.info("用户删除请求参数为:{}", JSONUtil.toJsonStr(deleteIdReq));
return userService.delete(deleteIdReq);

View File

@ -84,7 +84,7 @@ public class DeviceUserMapping implements Serializable {
* : 1-2-
*/
@TableField(value = "type")
private String type;
private Integer type;
@TableField(exist = false)
private static final long serialVersionUID = 1L;

View File

@ -26,7 +26,7 @@ public class Image implements Serializable {
private String imageName;
/**
*
* 1VHD 2VHDX 3QCOW2
*/
@TableField(value = "image_type")
private Integer imageType;

View File

@ -55,7 +55,7 @@ public class DeviceUserMappingReq implements Serializable {
*/
@ApiModelProperty("类型: 1-用户2-用户组")
@JsonProperty("type")
private String type;
private Integer type;
/**
*

View File

@ -30,7 +30,7 @@ public class ImageReq implements Serializable {
private String imageName;
/**
*
* 1VHD 2VHDX 3QCOW2
*/
@ApiModelProperty("镜像类型")
@JsonProperty("image_type")

View File

@ -0,0 +1,34 @@
package com.unisinsight.project.entity.req;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: rdpnr_puzhi
* @create: 2025/08/11
*/
@ApiModel("客户端请求类")
@Data
public class LoginReq {
@ApiModelProperty("设备id")
@JsonProperty("device_id")
private String deviceId;
@ApiModelProperty("用户名")
@JsonProperty("username")
private String username;
@ApiModelProperty("密码")
@JsonProperty("password")
private String password;
@ApiModelProperty("token")
@JsonProperty("token")
private String token;
}

View File

@ -32,6 +32,13 @@ public class DeviceImageMappingRes implements Serializable {
@JsonProperty("device_group_id")
private Long deviceGroupId;
/**
*
*/
@ApiModelProperty("分组名称")
@JsonProperty("device_group_name")
private String deviceGroupName;
/**
* ID
*/
@ -39,6 +46,13 @@ public class DeviceImageMappingRes implements Serializable {
@JsonProperty("image_id")
private Long imageId;
/**
*
*/
@ApiModelProperty("镜像名称")
@JsonProperty("image_name")
private String imageName;
/**
*
*/

View File

@ -36,6 +36,13 @@ public class DeviceUserMappingRes implements Serializable {
@JsonProperty("device_group_id")
private Long deviceGroupId;
/**
*
*/
@ApiModelProperty("分组名称")
@JsonProperty("device_group_name")
private String deviceGroupName;
/**
* ID
*/
@ -49,13 +56,20 @@ public class DeviceUserMappingRes implements Serializable {
@ApiModelProperty("用户ID")
@JsonProperty("user_id")
private Long userId;
/**
*
*/
@ApiModelProperty(value = "用户名")
@JsonProperty("user_name")
private String userName;
/**
* : 1-2-
*/
@ApiModelProperty("类型: 1-用户2-用户组")
@JsonProperty("type")
private String type;
private Integer type;
/**
*

View File

@ -0,0 +1,23 @@
package com.unisinsight.project.entity.res;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: rdpnr_puzhi
* @create: 2025/08/11
*/
@ApiModel("list请求类")
@Data
public class ListReq<T> {
@ApiModelProperty("数据列表")
@JsonProperty("data")
private List<T> data;
}

View File

@ -12,7 +12,6 @@ import com.unisinsight.project.exception.Result;
*/
public interface DeviceImageMappingService extends IService<DeviceImageMapping> {
Result<?> insert(DeviceImageMappingReq deviceImageMappingReq);
Result select(DeviceImageMappingReq deviceImageMappingReq);
}

View File

@ -1,7 +1,7 @@
package com.unisinsight.project.service;
import com.unisinsight.project.entity.dao.DeviceUserMapping;
import com.baomidou.mybatisplus.extension.service.IService;
import com.unisinsight.project.entity.dao.DeviceUserMapping;
import com.unisinsight.project.entity.req.DeviceUserMappingReq;
import com.unisinsight.project.entity.req.DeviceUserReq;
import com.unisinsight.project.exception.Result;
@ -13,7 +13,6 @@ import com.unisinsight.project.exception.Result;
*/
public interface DeviceUserMappingService extends IService<DeviceUserMapping> {
Result<?> insert(DeviceUserMappingReq deviceUserMappingReq);
Result select(DeviceUserMappingReq deviceUserMappingReq);

View File

@ -4,20 +4,25 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.unisinsight.project.entity.dao.DeviceImageMapping;
import com.unisinsight.project.entity.dao.Image;
import com.unisinsight.project.entity.dao.UserDeviceGroup;
import com.unisinsight.project.entity.req.DeviceImageMappingReq;
import com.unisinsight.project.entity.res.DeviceImageMappingRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.DeviceImageMappingMapper;
import com.unisinsight.project.mapper.ImageMapper;
import com.unisinsight.project.mapper.UserDeviceGroupMapper;
import com.unisinsight.project.service.DeviceImageMappingService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author rdpnr_puzhi
@ -32,18 +37,11 @@ public class DeviceImageMappingServiceImpl extends ServiceImpl<DeviceImageMappin
@Resource
private DeviceImageMappingMapper deviceImageMappingMapper;
@Override
public Result<?> insert(DeviceImageMappingReq deviceImageMappingReq) {
DeviceImageMapping deviceImageMapping = BeanUtil.copyProperties(deviceImageMappingReq, DeviceImageMapping.class);
deviceImageMapping.setCreateUser("admin");
int insert = deviceImageMappingMapper.insert(deviceImageMapping);
log.info("终端镜像映射新增insert:{}", insert);
if (insert == 1) {
return Result.successResult();
} else {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
}
}
@Resource
private ImageMapper imageMapper;
@Resource
private UserDeviceGroupMapper groupMapper;
@Override
public Result<?> select(DeviceImageMappingReq deviceImageMappingReq) {
@ -61,6 +59,35 @@ public class DeviceImageMappingServiceImpl extends ServiceImpl<DeviceImageMappin
return Result.successResult();
} else {
List<DeviceImageMappingRes> deviceImageMappingRes = BeanUtil.copyToList(deviceUserMappings, DeviceImageMappingRes.class);
List<Long> imageIds = deviceImageMappingRes.stream().map(DeviceImageMappingRes::getImageId).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(imageIds)) {
LambdaQueryWrapper<Image> imageLambdaQueryWrapper = new QueryWrapper<Image>().lambda().eq(Image::getId, imageIds);
List<Image> images = imageMapper.selectList(imageLambdaQueryWrapper);
if (CollectionUtil.isNotEmpty(images)) {
deviceImageMappingRes.forEach(deviceImage -> {
images.forEach(image -> {
if (ObjectUtil.isNotEmpty(deviceImage.getImageId()) && image.getId().equals(deviceImage.getImageId())) {
deviceImage.setImageName(image.getImageName());
}
});
});
}
}
List<Long> groupIdList = deviceImageMappingRes.stream().map(DeviceImageMappingRes::getDeviceGroupId).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(groupIdList)) {
LambdaQueryWrapper<UserDeviceGroup> groupLambdaQueryWrapper = new QueryWrapper<UserDeviceGroup>().lambda().eq(UserDeviceGroup::getId, groupIdList);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(groupLambdaQueryWrapper);
if (CollectionUtil.isNotEmpty(userDeviceGroups)) {
deviceImageMappingRes.forEach(deviceImage -> {
userDeviceGroups.forEach(userDeviceGroup -> {
if (ObjectUtil.isNotEmpty(deviceImage.getImageId()) && userDeviceGroup.getId().equals(deviceImage.getImageId())) {
deviceImage.setDeviceGroupName(userDeviceGroup.getName());
}
});
});
}
}
return Result.successResult(deviceImageMappingRes);
}
}

View File

@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -87,7 +88,7 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device>
QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotBlank(deviceReq.getDeviceName())) {
queryWrapper.lambda().eq(Device::getDeviceName, deviceReq.getDeviceName());
queryWrapper.lambda().like(Device::getDeviceName, deviceReq.getDeviceName());
}
if (StringUtils.isNotBlank(deviceReq.getDeviceGroupName())) {
queryWrapper.lambda().eq(Device::getDeviceGroupName, deviceReq.getDeviceGroupName());
@ -96,10 +97,10 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device>
queryWrapper.lambda().eq(Device::getDeviceGroupId, deviceReq.getDeviceGroupId());
}
if (StringUtils.isNotBlank(deviceReq.getIpAddr())) {
queryWrapper.lambda().like(Device::getIpAddr, deviceReq.getIpAddr());
queryWrapper.lambda().eq(Device::getIpAddr, deviceReq.getIpAddr());
}
if (ObjectUtils.isNotEmpty(deviceReq.getDeviceType())) {
queryWrapper.lambda().like(Device::getDeviceType, deviceReq.getDeviceType());
queryWrapper.lambda().eq(Device::getDeviceType, deviceReq.getDeviceType());
}
IPage<Device> userPage = deviceMapper.selectPage(page, queryWrapper);
@ -110,12 +111,13 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device>
} else {
PageResult<DeviceRes> convert = PageResult.convertIPage(userPage, DeviceRes.class);
List<DeviceRes> deviceResList = convert.getData();
List<Long> deviceIdList = deviceResList.stream().distinct().map(DeviceRes::getDeviceGroupId).filter(Objects::nonNull).collect(Collectors.toList());
QueryWrapper<UserDeviceGroup> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UserDeviceGroup::getType, 2);
wrapper.lambda().in(UserDeviceGroup::getId, deviceIdList);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(wrapper);
List<DeviceRes> resList = deviceResList.stream().distinct().peek(device -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (device.getDeviceGroupId().equals(userDeviceGroup.getId())) {
if (!ObjectUtils.isEmpty(device.getDeviceGroupId()) && device.getDeviceGroupId().equals(userDeviceGroup.getId())) {
device.setDeviceGroupName(userDeviceGroup.getName());
}
}

View File

@ -8,22 +8,23 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.unisinsight.project.entity.dao.DeviceUserMapping;
import com.unisinsight.project.entity.dao.User;
import com.unisinsight.project.entity.dao.UserDeviceGroup;
import com.unisinsight.project.entity.req.DeviceUserMappingReq;
import com.unisinsight.project.entity.req.DeviceUserReq;
import com.unisinsight.project.entity.res.DeviceUserMappingRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.DeviceUserMappingMapper;
import com.unisinsight.project.mapper.UserDeviceGroupMapper;
import com.unisinsight.project.mapper.UserMapper;
import com.unisinsight.project.service.DeviceUserMappingService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -41,27 +42,22 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
@Resource
private UserMapper userMapper;
@Resource
private UserDeviceGroupMapper groupMapper;
@Override
public Result<?> insert(DeviceUserMappingReq deviceUserMappingReq) {
DeviceUserMapping deviceUserMapping = BeanUtil.copyProperties(deviceUserMappingReq, DeviceUserMapping.class);
deviceUserMapping.setCreateUser("admin");
int insert = deviceUserMappingMapper.insert(deviceUserMapping);
log.info("终端用户映射新增insert:{}", insert);
if (insert == 1) {
return Result.successResult();
} else {
return Result.errorResult(BaseErrorCode.HTTP_ERROR_CODE_500);
}
public boolean saveBatch(Collection<DeviceUserMapping> entityList) {
return super.saveBatch(entityList);
}
@Override
public Result<?> select(DeviceUserMappingReq deviceUserMappingReq) {
DeviceUserMapping deviceUserMapping = BeanUtil.copyProperties(deviceUserMappingReq, DeviceUserMapping.class);
QueryWrapper<DeviceUserMapping> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(DeviceUserMapping::getDeviceId, deviceUserMapping.getDeviceId());
if (ObjectUtil.isNotEmpty(deviceUserMapping.getType())) {
wrapper.lambda().eq(DeviceUserMapping::getType, deviceUserMapping.getType());
}
@ -74,7 +70,68 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
return Result.successResult();
} else {
List<DeviceUserMappingRes> deviceUserMappingRes = BeanUtil.copyToList(deviceUserMappings, DeviceUserMappingRes.class);
return Result.successResult(deviceUserMappingRes);
if (ObjectUtil.isEmpty(deviceUserMappingReq.getType())) {
List<Long> userList = deviceUserMappingRes.stream().distinct().map(DeviceUserMappingRes::getUserId).filter(Objects::nonNull).collect(Collectors.toList());
userList = new ArrayList<>(new HashSet<>(userList));
if (CollectionUtil.isNotEmpty(userList)) {
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.lambda().in(User::getId, userList);
List<User> users = userMapper.selectList(userQueryWrapper);
deviceUserMappingRes = deviceUserMappingRes.stream().distinct().peek(device -> {
for (User user : users) {
if (!ObjectUtils.isEmpty(device.getUserId()) && device.getUserId().equals(user.getId())) {
device.setUserName(user.getUserName());
}
}
}).collect(Collectors.toList());
}
List<Long> deviceList = deviceUserMappingRes.stream().distinct().map(DeviceUserMappingRes::getDeviceGroupId).filter(Objects::nonNull).collect(Collectors.toList());
deviceList = new ArrayList<>(new HashSet<>(deviceList));
if (CollectionUtil.isNotEmpty(deviceList)) {
QueryWrapper<UserDeviceGroup> groupQueryWrapper = new QueryWrapper<>();
groupQueryWrapper.lambda().in(UserDeviceGroup::getId, deviceList);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(groupQueryWrapper);
deviceUserMappingRes = deviceUserMappingRes.stream().distinct().peek(device -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (!ObjectUtils.isEmpty(device.getDeviceGroupId()) && device.getDeviceGroupId().equals(userDeviceGroup.getId())) {
device.setDeviceGroupName(userDeviceGroup.getName());
}
}
}).collect(Collectors.toList());
}
return Result.successResult(deviceUserMappingRes);
} else if (deviceUserMappingReq.getType() == 1) {
List<Long> userList = deviceUserMappingRes.stream().distinct().map(DeviceUserMappingRes::getUserId).filter(Objects::nonNull).collect(Collectors.toList());
userList = new ArrayList<>(new HashSet<>(userList));
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.lambda().in(User::getId, userList);
List<User> users = userMapper.selectList(userQueryWrapper);
List<DeviceUserMappingRes> collect = deviceUserMappingRes.stream().distinct().peek(device -> {
for (User user : users) {
if (!ObjectUtils.isEmpty(device.getUserId()) && device.getUserId().equals(user.getId())) {
device.setUserName(user.getUserName());
}
}
}).collect(Collectors.toList());
return Result.successResult(collect);
} else {
List<Long> deviceList = deviceUserMappingRes.stream().distinct().map(DeviceUserMappingRes::getDeviceGroupId).filter(Objects::nonNull).collect(Collectors.toList());
deviceList = new ArrayList<>(new HashSet<>(deviceList));
QueryWrapper<UserDeviceGroup> groupQueryWrapper = new QueryWrapper<>();
groupQueryWrapper.lambda().eq(UserDeviceGroup::getType, 1);
groupQueryWrapper.lambda().in(UserDeviceGroup::getId, deviceList);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(groupQueryWrapper);
List<DeviceUserMappingRes> collect = deviceUserMappingRes.stream().distinct().peek(device -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (!ObjectUtils.isEmpty(device.getDeviceGroupId()) && device.getDeviceGroupId().equals(userDeviceGroup.getId())) {
device.setDeviceGroupName(userDeviceGroup.getName());
}
}
}).collect(Collectors.toList());
return Result.successResult(collect);
}
}
}
@ -90,7 +147,7 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
log.info("用户登录查询映射结果:{}", JSONUtil.toJsonStr(deviceUserMappings));
List<User> users = new ArrayList<>();
List<Long> userIdList = deviceUserMappings.stream().map(DeviceUserMapping::getUserId).collect(Collectors.toList());
List<Long> userIdList = deviceUserMappings.stream().map(DeviceUserMapping::getUserId).filter(Objects::nonNull).collect(Collectors.toList());
log.info("用户登录查询用户id结果:{}", JSONUtil.toJsonStr(userIdList));
if (CollectionUtil.isNotEmpty(userIdList)) {
QueryWrapper<User> groupWrapper = new QueryWrapper<>();
@ -105,7 +162,7 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
}
}
List<Long> groupList = deviceUserMappings.stream().map(DeviceUserMapping::getUserGroupId).collect(Collectors.toList());
List<Long> groupList = deviceUserMappings.stream().map(DeviceUserMapping::getUserGroupId).filter(Objects::nonNull).collect(Collectors.toList());
log.info("用户登录查询用户组id结果:{}", JSONUtil.toJsonStr(groupList));
if (CollectionUtil.isNotEmpty(groupList)) {
QueryWrapper<User> groupWrapper = new QueryWrapper<>();

View File

@ -44,14 +44,11 @@ public class ImageServiceImpl extends ServiceImpl<ImageMapper, Image>
Page<Image> page = new Page<>(imageReq.getPageNum(), imageReq.getPageSize());
QueryWrapper<Image> queryWrapper = new QueryWrapper<>();
if (ObjectUtils.isNotEmpty(imageReq.getId())) {
queryWrapper.lambda().eq(Image::getId, imageReq.getId());
}
if (StringUtils.isNotBlank(imageReq.getImageName())) {
queryWrapper.lambda().like(Image::getImageName, imageReq.getImageName());
}
if (ObjectUtils.isNotEmpty(imageReq.getImageType())) {
queryWrapper.lambda().like(Image::getImageType, imageReq.getImageType());
queryWrapper.lambda().eq(Image::getImageType, imageReq.getImageType());
}
IPage<Image> imageIPage = imageMapper.selectPage(page, queryWrapper);

View File

@ -53,8 +53,8 @@ public class UserDeviceGroupServiceImpl extends ServiceImpl<UserDeviceGroupMappe
if (ObjectUtils.isNotEmpty(userDeviceGroup)) {
group.setParentId(userDeviceGroup.getId());
group.setParentName(userDeviceGroup.getName());
group.setPath(group.getId().toString());
group.setIndex(group.getId().toString());
group.setPath(userDeviceGroup.getId().toString());
group.setIndex(userDeviceGroup.getId().toString());
}
} else {
UserDeviceGroup groupParent = groupMapper.selectById(group.getParentId());

View File

@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@ -94,10 +95,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
queryWrapper.lambda().like(User::getUserName, userReq.getUserName());
}
if (StringUtils.isNotBlank(userReq.getIdentityNo())) {
queryWrapper.lambda().like(User::getIdentityNo, userReq.getIdentityNo());
queryWrapper.lambda().eq(User::getIdentityNo, userReq.getIdentityNo());
}
if (StringUtils.isNotBlank(userReq.getCellPhone())) {
queryWrapper.lambda().like(User::getCellPhone, userReq.getCellPhone());
queryWrapper.lambda().eq(User::getCellPhone, userReq.getCellPhone());
}
IPage<User> userPage = userMapper.selectPage(page, queryWrapper);
@ -108,12 +109,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
} else {
PageResult<UserRes> convert = PageResult.convertIPage(userPage, UserRes.class);
List<UserRes> userResList = convert.getData();
List<Long> collect = userResList.stream().distinct().map(UserRes::getUserGroupId).filter(Objects::nonNull).collect(Collectors.toList());
QueryWrapper<UserDeviceGroup> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UserDeviceGroup::getType, 1);
wrapper.lambda().in(UserDeviceGroup::getId, collect);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(wrapper);
List<UserRes> resList = userResList.stream().distinct().peek(user -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (user.getUserGroupId().equals(userDeviceGroup.getId())) {
if (!ObjectUtils.isEmpty(user.getUserGroupId()) && user.getUserGroupId().equals(userDeviceGroup.getId())) {
user.setUserGroupName(userDeviceGroup.getName());
}
}

View File

@ -0,0 +1,12 @@
-- 数据初始化
INSERT INTO "public"."user_device_group" ("id", "name", "type", "path", "deleted")
VALUES (1, '用户顶级组织a', '1', '1', 0),
(2, '终端顶级组织b', '2', '2', 0)
ON CONFLICT (id) DO NOTHING;
INSERT INTO "public"."user_device_group" ("id", "name", "parent_id", "parent_name", "index", "type", "path", "deleted")
VALUES (3, '默认终端分组', 2, '终端顶级组织', '3', 2, '2', 0)
ON CONFLICT (id) DO NOTHING;
-- 更新序列
SELECT setval('user_device_group_id_seq', (SELECT COALESCE(MAX(id), 0) FROM "public"."user_device_group"));