feat(后端): 后端代码修改

master
rdpnr_puzhi 2025-08-08 18:10:47 +08:00
parent c3d3ab36e3
commit cf036ae0fd
15 changed files with 272 additions and 71 deletions

View File

@ -0,0 +1,91 @@
package com.unisinsight.project.controller;
import com.unisinsight.project.entity.req.DeviceUserReq;
import com.unisinsight.project.entity.res.ImageRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.ClientService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
/**
* @description:
* @author: rdpnr_puzhi
* @create: 2025/08/08
*/
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/client")
@Api(tags = "客户端类")
public class ClientController {
@Resource
private ClientService clientService;
@Resource
private DeviceUserMappingService deviceUserMappingService;
@ApiOperation(value = "用户认证")
@PostMapping("/auth")
public Result<List<ImageRes>> authentication(@RequestParam("deviceId") String deviceId) {
if (Objects.isNull(deviceId)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户认证请求参数为:{}", deviceId);
return Result.successResult();
}
@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)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户登录请求参数为,deviceId:{},username:{},password:{}", deviceId, username, password);
DeviceUserReq deviceUserReq = new DeviceUserReq();
deviceUserReq.setDeviceId(deviceId);
deviceUserReq.setUserName(username);
deviceUserReq.setPassword(password);
return deviceUserMappingService.loginUser(deviceUserReq);
}
@ApiOperation(value = "获取镜像列表")
@PostMapping("/getImageList")
public Result<?> getImageList(@RequestParam("deviceId") String deviceId,
@RequestParam("token") String token) {
if (Objects.isNull(deviceId) || Objects.isNull(token)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("获取镜像列表请求参数为,deviceId:{},token:{}", deviceId, token);
return clientService.getImageList(deviceId, token);
}
@ApiOperation(value = "版本更新")
@PostMapping("/update")
public Result<?> getImageUpdate(@RequestParam("deviceId") String deviceId) {
if (Objects.isNull(deviceId)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("获取镜像列表请求参数为,deviceId:{}", deviceId);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("version", "1.0.0");
hashMap.put("url", "https://intent-bathhouse.name");
return Result.successResult(hashMap);
}
}

View File

@ -27,7 +27,7 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/device")
@Api(tags = "终端Controller")
@Api(tags = "终端")
public class DeviceController {
@Resource

View File

@ -26,7 +26,7 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/device/image/mapping")
@Api(tags = "终端镜像映射关系Controller")
@Api(tags = "终端镜像映射关系")
public class DeviceImageMappingController {
@Resource

View File

@ -26,7 +26,7 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/device/user/mapping")
@Api(tags = "终端用户映射关系Controller")
@Api(tags = "终端用户映射关系")
public class DeviceUserMappingController {
@Resource

View File

@ -27,7 +27,7 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/image")
@Api(tags = "镜像Controller")
@Api(tags = "镜像")
public class ImageController {
@Resource

View File

@ -2,22 +2,21 @@ package com.unisinsight.project.controller;
import cn.hutool.json.JSONUtil;
import com.unisinsight.project.entity.req.DeleteIdReq;
import com.unisinsight.project.entity.req.DeviceUserReq;
import com.unisinsight.project.entity.req.UserReq;
import com.unisinsight.project.entity.res.ImageRes;
import com.unisinsight.project.entity.res.PageResult;
import com.unisinsight.project.entity.res.UserRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.service.DeviceUserMappingService;
import com.unisinsight.project.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
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.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
@ -28,16 +27,13 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/user")
@Api(tags = "用户处理Controller")
@Api(tags = "用户处理")
public class UserController {
@Resource
private UserService userService;
@Resource
private DeviceUserMappingService deviceUserMappingService;
@ApiOperation(value = "用户新增")
@PostMapping("/add")
public Result<?> insertUser(@RequestBody UserReq userReq) {
@ -88,30 +84,5 @@ public class UserController {
return userService.selectPageUser(userReq);
}
@ApiOperation(value = "用户认证")
@PostMapping("/auth")
public Result<List<ImageRes>> authentication(@RequestParam("deviceId") String deviceId) {
if (Objects.isNull(deviceId)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户认证请求参数为:{}", deviceId);
return Result.successResult();
}
@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)) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
log.info("用户登录请求参数为,deviceId:{},username:{},password:{}", deviceId, username, password);
DeviceUserReq deviceUserReq = new DeviceUserReq();
deviceUserReq.setDeviceId(deviceId);
deviceUserReq.setUserName(username);
deviceUserReq.setPassword(password);
return deviceUserMappingService.loginUser(deviceUserReq);
}
}

View File

@ -27,7 +27,7 @@ import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/api/nex/v1/user/device/group")
@Api(tags = "用户、终端分组Controller")
@Api(tags = "用户、终端分组")
public class UserDeviceGroupController {
@Resource
@ -63,4 +63,5 @@ public class UserDeviceGroupController {
return groupService.query(groupReq);
}
}

View File

@ -28,6 +28,12 @@ public class UserRes implements Serializable {
@JsonProperty("user_group_id")
private Long userGroupId;
/**
*
*/
@ApiModelProperty(value = "用户组ID")
@JsonProperty("user_group_name")
private String userGroupName;
/**
*

View File

@ -39,13 +39,13 @@ public class Result<T> {
public Result() {
}
public Result(String errorCode, String message) {
this.code = errorCode;
public Result(String code, String message) {
this.code = code;
this.message = message;
}
public Result(String errorCode, String message, T data) {
this.code = errorCode;
public Result(String code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}

View File

@ -0,0 +1,8 @@
package com.unisinsight.project.service;
import com.unisinsight.project.exception.Result;
public interface ClientService {
Result<?> getImageList(String deviceId, String token);
}

View File

@ -0,0 +1,73 @@
package com.unisinsight.project.service.impl;
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.dao.Image;
import com.unisinsight.project.entity.res.ImageRes;
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.service.ClientService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description:
* @author: rdpnr_puzhi
* @create: 2025/08/08
*/
@Service
@Slf4j
public class ClientServiceImpl implements ClientService {
@Resource
private ImageMapper imageMapper;
@Resource
private DeviceImageMappingMapper deviceImageMappingMapper;
@Override
public Result<?> getImageList(String deviceId, String token) {
QueryWrapper<DeviceImageMapping> deviceImageMappingQueryWrapper = new QueryWrapper<>();
deviceImageMappingQueryWrapper.lambda().eq(DeviceImageMapping::getDeviceId, deviceId);
List<DeviceImageMapping> deviceImageMappings = deviceImageMappingMapper.selectList(deviceImageMappingQueryWrapper);
if (CollectionUtil.isEmpty(deviceImageMappings)) {
return Result.errorResultMessage(BaseErrorCode.PARAMS_CHK_ERROR, "请先配置终端镜像");
}
List<Long> imageIdList = deviceImageMappings.stream().map(DeviceImageMapping::getImageId).collect(Collectors.toList());
QueryWrapper<Image> imageQueryWrapper = new QueryWrapper<>();
String imageListStr = StringUtils.join(imageIdList, ",");
log.info("用户登录查询镜像id结果:{}", JSONUtil.toJsonStr(imageListStr));
imageQueryWrapper.lambda().in(Image::getId, imageListStr);
List<Image> images = imageMapper.selectList(imageQueryWrapper);
log.info("用户登录查询镜像结果:{}", JSONUtil.toJsonStr(images));
List<ImageRes> imageRes = BeanUtil.copyToList(images, ImageRes.class);
List<HashMap<String, Object>> collect = imageRes.stream().distinct().map(e -> {
HashMap<String, Object> hashMap = new HashMap<>();
if (StringUtils.isNotBlank(e.getImageName())) {
hashMap.put("name", e.getImageName());
}
if (StringUtils.isNotBlank(e.getBtPath())) {
hashMap.put("torrent", e.getBtPath());
}
return hashMap;
}).collect(Collectors.toList());
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("list", collect);
return Result.successResult(hashMap);
}
}

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.unisinsight.project.entity.dao.Device;
import com.unisinsight.project.entity.dao.UserDeviceGroup;
import com.unisinsight.project.entity.req.DeleteIdReq;
import com.unisinsight.project.entity.req.DeviceReq;
import com.unisinsight.project.entity.res.DeviceRes;
@ -15,6 +16,7 @@ import com.unisinsight.project.entity.res.PageResult;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.DeviceMapper;
import com.unisinsight.project.mapper.UserDeviceGroupMapper;
import com.unisinsight.project.service.DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@ -22,6 +24,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author rdpnr_puzhi
@ -36,6 +40,10 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device>
@Resource
private DeviceMapper deviceMapper;
@Resource
private UserDeviceGroupMapper groupMapper;
@Override
public Result<?> insert(DeviceReq deviceReq) {
Device device = BeanUtil.copyProperties(deviceReq, Device.class);
@ -101,6 +109,18 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device>
return Result.successResult();
} else {
PageResult<DeviceRes> convert = PageResult.convertIPage(userPage, DeviceRes.class);
List<DeviceRes> deviceResList = convert.getData();
QueryWrapper<UserDeviceGroup> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UserDeviceGroup::getType, 2);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(wrapper);
List<DeviceRes> resList = deviceResList.stream().distinct().peek(device -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (device.getDeviceGroupId().equals(userDeviceGroup.getId())) {
device.setDeviceGroupName(userDeviceGroup.getName());
}
}
}).collect(Collectors.toList());
convert.setData(resList);
return Result.successResult(convert);
}
}

View File

@ -6,19 +6,14 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
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.DeviceUserMapping;
import com.unisinsight.project.entity.dao.Image;
import com.unisinsight.project.entity.dao.User;
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.entity.res.ImageRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.DeviceImageMappingMapper;
import com.unisinsight.project.mapper.DeviceUserMappingMapper;
import com.unisinsight.project.mapper.ImageMapper;
import com.unisinsight.project.mapper.UserMapper;
import com.unisinsight.project.service.DeviceUserMappingService;
import lombok.extern.slf4j.Slf4j;
@ -27,6 +22,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@ -46,11 +42,6 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
@Resource
private UserMapper userMapper;
@Resource
private ImageMapper imageMapper;
@Resource
private DeviceImageMappingMapper deviceImageMappingMapper;
@Override
public Result<?> insert(DeviceUserMappingReq deviceUserMappingReq) {
@ -109,7 +100,7 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
List<User> userList = userMapper.selectList(groupWrapper);
log.info("用户id查询结果:{}", JSONUtil.toJsonStr(userList));
if (CollectionUtil.isNotEmpty(userList)) {
User user = userList.stream().filter(e -> e.getUserName().equals(deviceUserReq.getUserName())).findAny().orElse(null);
User user = userList.stream().distinct().filter(e -> e.getUserName().equals(deviceUserReq.getUserName())).findAny().orElse(null);
users.add(user);
}
@ -124,7 +115,7 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
List<User> userDeviceGroups = userMapper.selectList(groupWrapper);
log.info("用户组id查询结果:{}", JSONUtil.toJsonStr(userDeviceGroups));
if (CollectionUtil.isNotEmpty(userDeviceGroups)) {
User user = userDeviceGroups.stream().filter(e -> e.getUserName().equals(deviceUserReq.getUserName())).findAny().orElse(null);
User user = userDeviceGroups.stream().distinct().filter(e -> e.getUserName().equals(deviceUserReq.getUserName())).findAny().orElse(null);
users.add(user);
}
}
@ -137,23 +128,10 @@ public class DeviceUserMappingServiceImpl extends ServiceImpl<DeviceUserMappingM
if (!users.get(0).getPassword().equals(deviceUserReq.getPassword())) {
return Result.errorResultMessage(BaseErrorCode.PARAMS_CHK_ERROR, "密码错误,请重新输入");
}
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("token", users.get(0).getId());
QueryWrapper<DeviceImageMapping> deviceImageMappingQueryWrapper = new QueryWrapper<>();
deviceImageMappingQueryWrapper.lambda().eq(DeviceImageMapping::getDeviceId, deviceUserReq.getDeviceId());
List<DeviceImageMapping> deviceImageMappings = deviceImageMappingMapper.selectList(deviceImageMappingQueryWrapper);
if (CollectionUtil.isEmpty(deviceImageMappings)) {
return Result.errorResultMessage(BaseErrorCode.PARAMS_CHK_ERROR, "请先配置终端镜像");
}
List<Long> imageIdList = deviceImageMappings.stream().map(DeviceImageMapping::getImageId).collect(Collectors.toList());
QueryWrapper<Image> imageQueryWrapper = new QueryWrapper<>();
String imageListStr = StringUtils.join(imageIdList, ",");
log.info("用户登录查询镜像id结果:{}", JSONUtil.toJsonStr(imageListStr));
imageQueryWrapper.lambda().in(Image::getId, imageListStr);
List<Image> images = imageMapper.selectList(imageQueryWrapper);
log.info("用户登录查询镜像结果:{}", JSONUtil.toJsonStr(images));
List<ImageRes> imageRes = BeanUtil.copyToList(images, ImageRes.class);
return Result.successResult(imageRes);
return new Result<>("200", "登录成功", hashMap);
}
}

View File

@ -36,7 +36,38 @@ public class UserDeviceGroupServiceImpl extends ServiceImpl<UserDeviceGroupMappe
@Override
public Result<?> insert(UserDeviceGroupReq groupReq) {
if (groupReq.getName().equals("用户顶级组织a") || groupReq.getName().equals("终端顶级组织b")) {
return Result.errorResult(BaseErrorCode.PARAMS_CHK_ERROR);
}
UserDeviceGroup group = BeanUtil.copyProperties(groupReq, UserDeviceGroup.class);
QueryWrapper<UserDeviceGroup> wrapper = new QueryWrapper<>();
if (ObjectUtils.isEmpty(group.getParentId())) {
if (group.getType() == 1) {
wrapper.lambda().eq(UserDeviceGroup::getType, 1);
wrapper.lambda().eq(UserDeviceGroup::getName, "用户顶级组织a");
} else {
wrapper.lambda().eq(UserDeviceGroup::getType, 2);
wrapper.lambda().eq(UserDeviceGroup::getName, "终端顶级组织b");
}
UserDeviceGroup userDeviceGroup = groupMapper.selectOne(wrapper);
if (ObjectUtils.isNotEmpty(userDeviceGroup)) {
group.setParentId(userDeviceGroup.getId());
group.setParentName(userDeviceGroup.getName());
group.setPath(group.getId().toString());
group.setIndex(group.getId().toString());
}
} else {
UserDeviceGroup groupParent = groupMapper.selectById(group.getParentId());
if (StringUtils.isBlank(group.getParentName())) {
group.setParentName(groupParent.getName());
}
if (StringUtils.isBlank(groupParent.getPath())) {
group.setPath(groupParent.getId().toString());
} else {
group.setPath(groupParent.getPath() + "," + groupParent.getId());
}
}
group.setCreateUser("admin");
int insert = groupMapper.insert(group);
log.info("分组新增insert:{}", insert);

View File

@ -8,12 +8,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.unisinsight.project.entity.dao.User;
import com.unisinsight.project.entity.dao.UserDeviceGroup;
import com.unisinsight.project.entity.req.DeleteIdReq;
import com.unisinsight.project.entity.req.UserReq;
import com.unisinsight.project.entity.res.PageResult;
import com.unisinsight.project.entity.res.UserRes;
import com.unisinsight.project.exception.BaseErrorCode;
import com.unisinsight.project.exception.Result;
import com.unisinsight.project.mapper.UserDeviceGroupMapper;
import com.unisinsight.project.mapper.UserMapper;
import com.unisinsight.project.service.UserService;
import lombok.extern.slf4j.Slf4j;
@ -22,6 +24,8 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author rdpnr_puzhi
@ -36,6 +40,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
@Resource
private UserMapper userMapper;
@Resource
private UserDeviceGroupMapper groupMapper;
@Override
public Result<?> insert(UserReq userReq) {
User user = BeanUtil.copyProperties(userReq, User.class);
@ -99,6 +107,18 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
return Result.successResult();
} else {
PageResult<UserRes> convert = PageResult.convertIPage(userPage, UserRes.class);
List<UserRes> userResList = convert.getData();
QueryWrapper<UserDeviceGroup> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(UserDeviceGroup::getType, 1);
List<UserDeviceGroup> userDeviceGroups = groupMapper.selectList(wrapper);
List<UserRes> resList = userResList.stream().distinct().peek(user -> {
for (UserDeviceGroup userDeviceGroup : userDeviceGroups) {
if (user.getUserGroupId().equals(userDeviceGroup.getId())) {
user.setUserGroupName(userDeviceGroup.getName());
}
}
}).collect(Collectors.toList());
convert.setData(resList);
return Result.successResult(convert);
}
}
@ -114,6 +134,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User>
log.info("查询用户返回:{}", JSONUtil.toJsonStr(userRes));
return Result.successResult(userRes);
}
}