Удален контроллер Visits за ненадобностью. Добавлен функционал счиатывания кода

This commit is contained in:
Daniil Makeev 2025-02-19 11:48:31 +03:00
parent 61b23d9afb
commit ae3b001d8f
11 changed files with 61 additions and 17 deletions

View File

@ -2,8 +2,10 @@ package com.example.onomatopoeiaback;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
@SpringBootApplication
// отключаем стандартную шизанастройку в spring security
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class })
public class OnomatopoeiaBackApplication {
public static void main(String[] args) {

View File

@ -11,6 +11,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@ -37,9 +39,18 @@ public class EmployeeController {
return new ResponseEntity<>(null, employeeService.auth(username));
}
@GetMapping("/{username}/visits")
public ResponseEntity<List<Visit>> visits(
@PathVariable String username,
@RequestParam Integer offset,
@RequestParam Integer limit
) {
return ResponseEntity.ok(employeeService.getVisits(username, offset, limit));
}
@PatchMapping("/{username}/open")
public ResponseEntity<Visit> open(@PathVariable String username, @RequestBody VisitDTO visitDTO) {
visitService.open(username, visitDTO);
visitService.register(username, visitDTO);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@ -3,6 +3,7 @@ package com.example.onomatopoeiaback.controller;
import com.example.onomatopoeiaback.domain.qrcode.QrCode;
import com.example.onomatopoeiaback.service.QrCodeService;
import org.springframework.http.ResponseEntity;
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;
@ -17,6 +18,7 @@ public class QrCodeController {
this.qrCodeService = qrCodeService;
}
@PostMapping("/create")
public ResponseEntity<QrCode> createQrCode(@RequestParam String name) {
return ResponseEntity.ok(qrCodeService.createQrCode(name));
}

View File

@ -1,5 +1,6 @@
package com.example.onomatopoeiaback.domain.employee;
import com.example.onomatopoeiaback.domain.visit.Visit;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.*;
import lombok.Getter;
@ -7,6 +8,8 @@ import lombok.NonNull;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Entity
@Table(name = "employee")

View File

@ -1,5 +1,6 @@
package com.example.onomatopoeiaback.domain.visit;
import com.example.onomatopoeiaback.domain.employee.Employee;
import com.example.onomatopoeiaback.domain.qrcode.QrCode;
import jakarta.persistence.*;
import lombok.Getter;
@ -23,4 +24,6 @@ public class Visit {
private VisitType visitType;
@NonNull
private LocalDateTime visitTime;
@ManyToOne
private Employee employee;
}

View File

@ -1,7 +1,12 @@
package com.example.onomatopoeiaback.repository;
import com.example.onomatopoeiaback.domain.qrcode.QrCode;
import lombok.NonNull;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface QrCodeRepository extends JpaRepository<QrCode, Long> {
@NonNull
Optional<QrCode> findById(@NonNull Long id);
}

View File

@ -6,5 +6,4 @@ import org.springframework.stereotype.Repository;
@Repository
public interface VisitRepository extends JpaRepository<Visit, Long> {
Visit getVisitByValue(long value);
}

View File

@ -2,7 +2,9 @@ package com.example.onomatopoeiaback.service;
import com.example.onomatopoeiaback.domain.employee.Employee;
import com.example.onomatopoeiaback.domain.employee.EmployeeDTO;
import com.example.onomatopoeiaback.domain.visit.Visit;
import com.example.onomatopoeiaback.repository.EmployeeRepository;
import jakarta.persistence.criteria.CriteriaBuilder;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@ -10,6 +12,8 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
@Service
public class EmployeeService {
@ -58,4 +62,9 @@ public class EmployeeService {
return new ResponseEntity<>(employee, response_status);
}
public List<Visit> getVisits(String login, Integer offset, Integer limit) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
return new ArrayList<>();
}
}

View File

@ -1,13 +1,22 @@
package com.example.onomatopoeiaback.service;
import com.example.onomatopoeiaback.domain.qrcode.QrCode;
import com.example.onomatopoeiaback.repository.QrCodeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class QrCodeService {
final
QrCodeRepository qrCodeRepository;
public QrCodeService(QrCodeRepository qrCodeRepository) {
this.qrCodeRepository = qrCodeRepository;
}
public QrCode createQrCode(String name) {
QrCode qrCode = new QrCode();
qrCode.setName(name);
return qrCode;
return qrCodeRepository.saveAndFlush(qrCode);
}
}

View File

@ -2,6 +2,7 @@ package com.example.onomatopoeiaback.service;
import com.example.onomatopoeiaback.domain.employee.Employee;
import com.example.onomatopoeiaback.domain.qrcode.QrCode;
import com.example.onomatopoeiaback.domain.visit.Visit;
import com.example.onomatopoeiaback.domain.visit.VisitDTO;
import com.example.onomatopoeiaback.exceptions.BadRequestException;
@ -13,6 +14,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Optional;
@Service
public class VisitService {
@ -27,25 +29,24 @@ public class VisitService {
this.qrCodeRepository = qrCodeRepository;
}
// TDDO: удалить это. и оставить open и доработать его. После этого объект Visit добавить пользователю в массив посещений. Реализовать получение посещений с offset и limit. Реализовать авторизацию и разделение методов на роли.
public Visit create(VisitDTO visitDTO) {
Visit visit = new Visit();
visit.setQrCode(qrCodeRepository.getReferenceById(visitDTO.getQrCodeId()));
visit.setVisitType(visitDTO.getVisitType());
return visitRepository.saveAndFlush(visit);
}
public void open(String login, VisitDTO visitDTO) {
Visit visit = visitRepository.getVisitByValue(visitDTO.getValue());
public void register(String login, VisitDTO visitDTO) {
Employee employee = employeeRepository.getEmployeesByLogin(login);
Optional<QrCode> qrCodeOptional = qrCodeRepository.findById(visitDTO.getQrCodeId());
if (qrCodeOptional.isEmpty()) {
throw new BadRequestException();
}
if (employee == null) {
throw new UnauthorizedException();
}
else if (visit == null) {
throw new BadRequestException();
}
QrCode qrCode = qrCodeOptional.get();
Visit visit = new Visit();
visit.setQrCode(qrCode);
visit.setVisitType(visitDTO.getVisitType());
visit.setEmployee(employee);
visitRepository.saveAndFlush(visit);
LocalDateTime localDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS);
employee.setLastVisit(localDateTime);
employeeRepository.saveAndFlush(employee);

View File

@ -6,6 +6,6 @@ spring-doc.swagger-ui.path=/docs
# postgres set up
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=1339
spring.datasource.password=MobileDev
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update