Compare commits
No commits in common. "121ec9b684246a89e270a5d1a78249ccdd029daf" and "44df4b564d26bae18cc0c5cc3a2f18ff1849fe21" have entirely different histories.
121ec9b684
...
44df4b564d
@ -1,15 +0,0 @@
|
|||||||
package github.benjamin.equipreservebackend.config;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
|
|
||||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
public class WebConfig implements WebMvcConfigurer {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
|
||||||
registry.addResourceHandler("/device_image/**")
|
|
||||||
.addResourceLocations("file:" + System.getProperty("user.dir") + "/device_image/");
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,16 +4,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import github.benjamin.equipreservebackend.entity.Device;
|
import github.benjamin.equipreservebackend.entity.Device;
|
||||||
import github.benjamin.equipreservebackend.response.ResponseResult;
|
import github.benjamin.equipreservebackend.response.ResponseResult;
|
||||||
import github.benjamin.equipreservebackend.service.DeviceService;
|
import github.benjamin.equipreservebackend.service.DeviceService;
|
||||||
import github.benjamin.equipreservebackend.service.ReservationService;
|
|
||||||
import github.benjamin.equipreservebackend.vo.DeviceUserVO;
|
import github.benjamin.equipreservebackend.vo.DeviceUserVO;
|
||||||
import github.benjamin.equipreservebackend.vo.TimeRangeVO;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@ -22,8 +19,6 @@ public class DeviceController {
|
|||||||
|
|
||||||
private final DeviceService deviceService;
|
private final DeviceService deviceService;
|
||||||
|
|
||||||
private final ReservationService reservationService;
|
|
||||||
|
|
||||||
@PreAuthorize("hasRole('USER')")
|
@PreAuthorize("hasRole('USER')")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public ResponseResult<Page<DeviceUserVO>> getDevices(@RequestParam(defaultValue = "1") Integer page,
|
public ResponseResult<Page<DeviceUserVO>> getDevices(@RequestParam(defaultValue = "1") Integer page,
|
||||||
@ -34,13 +29,6 @@ public class DeviceController {
|
|||||||
return ResponseResult.success(res);
|
return ResponseResult.success(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasRole('USER')")
|
|
||||||
@GetMapping ("/unavailable-times/{id}")
|
|
||||||
public ResponseResult<List<TimeRangeVO>> getUnavailableTimes(@PathVariable Long id) {
|
|
||||||
List<TimeRangeVO> res = reservationService.getUnavailableTimes(id);
|
|
||||||
return ResponseResult.success(res);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PreAuthorize("hasRole('DEVICE_ADMIN')")
|
@PreAuthorize("hasRole('DEVICE_ADMIN')")
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ResponseResult<?> addDevice(@RequestBody Device device){
|
public ResponseResult<?> addDevice(@RequestBody Device device){
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
package github.benjamin.equipreservebackend.mapper;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import github.benjamin.equipreservebackend.entity.Team;
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public interface TeamMapper extends BaseMapper<Team> {
|
|
||||||
}
|
|
@ -2,7 +2,6 @@ package github.benjamin.equipreservebackend.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import github.benjamin.equipreservebackend.entity.Reservation;
|
import github.benjamin.equipreservebackend.entity.Reservation;
|
||||||
import github.benjamin.equipreservebackend.vo.TimeRangeVO;
|
|
||||||
import github.benjamin.equipreservebackend.vo.UserReservationVO;
|
import github.benjamin.equipreservebackend.vo.UserReservationVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -14,6 +13,4 @@ public interface ReservationService {
|
|||||||
void addReservation(Reservation reservation);
|
void addReservation(Reservation reservation);
|
||||||
|
|
||||||
Page<UserReservationVO> getUserReservationVO(Long userId, Page<Reservation> pageRequest);
|
Page<UserReservationVO> getUserReservationVO(Long userId, Page<Reservation> pageRequest);
|
||||||
|
|
||||||
List<TimeRangeVO> getUnavailableTimes(Long id);
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
package github.benjamin.equipreservebackend.service;
|
|
||||||
|
|
||||||
public interface TeamService {
|
|
||||||
}
|
|
@ -5,21 +5,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import github.benjamin.equipreservebackend.constant.ReservationStatus;
|
import github.benjamin.equipreservebackend.constant.ReservationStatus;
|
||||||
import github.benjamin.equipreservebackend.entity.Device;
|
import github.benjamin.equipreservebackend.entity.Device;
|
||||||
import github.benjamin.equipreservebackend.entity.Reservation;
|
import github.benjamin.equipreservebackend.entity.Reservation;
|
||||||
import github.benjamin.equipreservebackend.entity.Team;
|
|
||||||
import github.benjamin.equipreservebackend.entity.User;
|
import github.benjamin.equipreservebackend.entity.User;
|
||||||
import github.benjamin.equipreservebackend.mapper.DeviceMapper;
|
import github.benjamin.equipreservebackend.mapper.DeviceMapper;
|
||||||
import github.benjamin.equipreservebackend.mapper.ReservationMapper;
|
import github.benjamin.equipreservebackend.mapper.ReservationMapper;
|
||||||
import github.benjamin.equipreservebackend.mapper.TeamMapper;
|
|
||||||
import github.benjamin.equipreservebackend.mapper.UserMapper;
|
import github.benjamin.equipreservebackend.mapper.UserMapper;
|
||||||
import github.benjamin.equipreservebackend.service.ReservationService;
|
import github.benjamin.equipreservebackend.service.ReservationService;
|
||||||
import github.benjamin.equipreservebackend.utils.PageUtil;
|
import github.benjamin.equipreservebackend.utils.PageUtil;
|
||||||
import github.benjamin.equipreservebackend.vo.TimeRangeVO;
|
|
||||||
import github.benjamin.equipreservebackend.vo.UserReservationVO;
|
import github.benjamin.equipreservebackend.vo.UserReservationVO;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -37,8 +33,6 @@ public class ReservationServiceImpl implements ReservationService {
|
|||||||
|
|
||||||
private final UserMapper userMapper;
|
private final UserMapper userMapper;
|
||||||
|
|
||||||
private final TeamMapper teamMapper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 未来days天内有预约的设备显示为“有预约”
|
* 未来days天内有预约的设备显示为“有预约”
|
||||||
*/
|
*/
|
||||||
@ -47,24 +41,15 @@ public class ReservationServiceImpl implements ReservationService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Reservation> getApprovedReservationsByDeviceIds(List<Long> devicesIds) {
|
public List<Reservation> getApprovedReservationsByDeviceIds(List<Long> devicesIds) {
|
||||||
LocalDate now = LocalDate.now();
|
LocalDateTime endTime = LocalDateTime.now().plusDays(days);
|
||||||
LocalDate endTime = now.plusDays(days);
|
|
||||||
return reservationMapper.selectList(new LambdaQueryWrapper<Reservation>()
|
return reservationMapper.selectList(new LambdaQueryWrapper<Reservation>()
|
||||||
.in(Reservation::getDeviceId, devicesIds)
|
.in(Reservation::getDeviceId, devicesIds)
|
||||||
.eq(Reservation::getStatus, ReservationStatus.APPROVED)
|
.eq(Reservation::getStatus, ReservationStatus.APPROVED)
|
||||||
.between(Reservation::getStartTime, now, endTime));
|
.lt(Reservation::getEndTime, endTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addReservation(Reservation reservation) {
|
public void addReservation(Reservation reservation) {
|
||||||
User user = userMapper.selectById(reservation.getUserId());
|
|
||||||
Team team = teamMapper.selectById(user.getTeamId());
|
|
||||||
Device device = deviceMapper.selectById(reservation.getDeviceId());
|
|
||||||
|
|
||||||
reservation.setApplicantName(user.getName());
|
|
||||||
reservation.setApplicantTeam(team.getName());
|
|
||||||
reservation.setApplicantContact(user.getPhone());
|
|
||||||
reservation.setDeviceAdminId(device.getDeviceAdminId());
|
|
||||||
reservation.setStatus(String.valueOf(ReservationStatus.PENDING_LEADER));
|
reservation.setStatus(String.valueOf(ReservationStatus.PENDING_LEADER));
|
||||||
reservationMapper.insert(reservation);
|
reservationMapper.insert(reservation);
|
||||||
}
|
}
|
||||||
@ -109,16 +94,4 @@ public class ReservationServiceImpl implements ReservationService {
|
|||||||
res.setRecords(vos);
|
res.setRecords(vos);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<TimeRangeVO> getUnavailableTimes(Long id) {
|
|
||||||
List<Reservation> reservations = reservationMapper.selectList(new LambdaQueryWrapper<Reservation>()
|
|
||||||
.eq(Reservation::getDeviceId, id)
|
|
||||||
.eq(Reservation::getStatus, "APPROVED")
|
|
||||||
.gt(Reservation::getEndTime, LocalDate.now()));
|
|
||||||
|
|
||||||
return reservations.stream()
|
|
||||||
.map(r -> new TimeRangeVO(r.getStartTime(), r.getEndTime()))
|
|
||||||
.toList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package github.benjamin.equipreservebackend.vo;
|
package github.benjamin.equipreservebackend.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|
||||||
import github.benjamin.equipreservebackend.entity.Device;
|
import github.benjamin.equipreservebackend.entity.Device;
|
||||||
import github.benjamin.equipreservebackend.entity.User;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
@ -11,7 +8,6 @@ import lombok.NoArgsConstructor;
|
|||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class DeviceUserVO {
|
public class DeviceUserVO {
|
||||||
|
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
|
||||||
private Long deviceId;
|
private Long deviceId;
|
||||||
private String name;
|
private String name;
|
||||||
private String usageRequirement;
|
private String usageRequirement;
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package github.benjamin.equipreservebackend.vo;
|
package github.benjamin.equipreservebackend.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
|
||||||
import github.benjamin.equipreservebackend.entity.Role;
|
import github.benjamin.equipreservebackend.entity.Role;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -12,7 +10,6 @@ import java.util.List;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class LoginResponse {
|
public class LoginResponse {
|
||||||
|
|
||||||
@JsonSerialize(using = ToStringSerializer.class)
|
|
||||||
private Long userId;
|
private Long userId;
|
||||||
private String name;
|
private String name;
|
||||||
private List<String> roles;
|
private List<String> roles;
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package github.benjamin.equipreservebackend.vo;
|
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
public class TimeRangeVO {
|
|
||||||
|
|
||||||
private LocalDate startTime;
|
|
||||||
private LocalDate endTime;
|
|
||||||
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user