
Курсовая работа Головков И.Е. 12002108
.pdf@Override
public void deleteById(Long id) { productRepository.deleteById(id);
}
}
package com.sportline.service.impl;
import com.sportline.exc.CustomNotFoundException; import com.sportline.model.entity.SpecialOffer;
import com.sportline.repository.SpecialOfferRepository; import com.sportline.service.SpecialOfferService; import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@AllArgsConstructor @Transactional(readOnly = true)
public class SpecialOfferServiceImpl implements SpecialOfferService {
private final SpecialOfferRepository specialOfferRepository;
@Transactional
@Override
public void create(SpecialOffer specialOffer) {
41
specialOfferRepository.save(specialOffer);
}
@Override
public List<SpecialOffer> findAll() { return specialOfferRepository.findAll();
}
@Override
public Page<SpecialOffer> findAllByPage(int pageNum, int pageSize) { return specialOfferRepository.findAll(PageRequest.of(pageNum, pageSize));
}
@Override
public SpecialOffer getById(Long id) { return specialOfferRepository
.findById(id)
.orElseThrow(() -> new CustomNotFoundException("Специальное предложение", id));
}
@Transactional
@Override
public void updateById(SpecialOffer specialOffer, long id) { SpecialOffer specialOfferBefore = getById(id); specialOffer.setId(id);
if (specialOffer.getStartDate() == null) { specialOffer.setStartDate(specialOfferBefore.getStartDate());
}
if (specialOffer.getEndDate() == null) {
42
specialOffer.setEndDate(specialOfferBefore.getEndDate());
}
specialOfferRepository.save(specialOffer);
}
@Transactional
@Override
public void deleteById(Long id) { specialOfferRepository.deleteById(id);
}
}
43
Приложение В
Сущности
package com.sportline.model.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "blog_posts") public class BlogPost {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String heading;
private String content;
@DateTimeFormat(pattern = "dd-MM-yyyy HH:mm:ss") @Temporal(TemporalType.TIMESTAMP)
44
private LocalDateTime publicationDate;
}
package com.sportline.model.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.ToString;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "brands") public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String name;
private String country;
private String description;
private String website;
45
@ToString.Exclude @OneToMany(mappedBy = "brand") private List<Product> products;
}
package com.sportline.model.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "products") public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;
private String name;
private String description;
private String imgSrc;
46
private Double price;
@Enumerated(EnumType.STRING) private Status status;
@ToString.Exclude
@ManyToOne @JoinColumn(name = "brand_id") private Brand brand;
}
package com.sportline.model.entity;
import jakarta.persistence.*;
import lombok.AllArgsConstructor; import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "special_offers") public class SpecialOffer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
47
private Long id;
private String name;
private String description;
@DateTimeFormat(pattern = "dd/MM/yyyy") @Temporal(TemporalType.DATE)
private LocalDate startDate;
@DateTimeFormat(pattern = "dd/MM/yyyy") @Temporal(TemporalType.DATE)
private LocalDate endDate;
}
package com.sportline.model.entity;
public enum Status { IN_STOCK, OUT_OF_STOCK, PRE_ORDER, WILL_BE_SOON;
public String getTranslated() { if (this.equals(IN_STOCK)) {
return "В наличии";
}else if (this.equals(OUT_OF_STOCK)) { return "Нет в наличии";
}else if (this.equals(PRE_ORDER)) {
return "По предзаказу";
48
}else if (this.equals(WILL_BE_SOON)) { return "Скоро в продаже";
}else {
return "";
}
}
}
49