Логические изменения по пакетам

jpa для счетов
This commit is contained in:
Mark Struchkov 2019-07-27 08:39:44 +03:00
parent 7f36ec2d7e
commit 18fbf8127f
10 changed files with 119 additions and 41 deletions

View File

@ -1,5 +1,6 @@
package org.sadtech.social.core.domain.money;
import com.sun.istack.internal.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
@ -9,6 +10,14 @@ import lombok.Setter;
import lombok.ToString;
import org.sadtech.social.core.utils.Description;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* Сущность, которая отвечает за выставленный пользователю счет.
*
@ -21,23 +30,34 @@ import org.sadtech.social.core.utils.Description;
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "account")
public class Account {
@Id
@GeneratedValue
@Description("Идентификатор счета")
private Integer id;
@NotNull
@Column(name = "totalSum")
@Description("Сумма к оплате")
private Integer totalSum;
@Column(name = "belongs_person_id")
@Description("Идентификатор пользователя, которому выставлен счет")
private Integer belongsPersonId;
@Column(name = "extinguished_person_id")
@Description("Идентификатор пользователя, который оплатил счет")
private Integer extinguishedPersonId;
@Column(name = "description")
@Description("Описание платежа")
private String description;
@Enumerated(EnumType.STRING)
@Column(name = "status")
@Description("Статус оплаты счета")
private AccountStatus accountStatus;

View File

@ -0,0 +1,37 @@
package org.sadtech.social.core.repository.impl.jpa;
import org.sadtech.social.core.domain.money.Account;
import org.sadtech.social.core.repository.AccountRepository;
import org.sadtech.social.core.repository.jpa.AccountRepositoryJpa;
import org.springframework.stereotype.Repository;
/**
* TODO: Добавить описание класса.
*
* @author upagge [27/07/2019]
*/
@Repository
public class AccountRepositoryJpaImpl implements AccountRepository {
private final AccountRepositoryJpa accountRepositoryJpa;
public AccountRepositoryJpaImpl(AccountRepositoryJpa accountRepositoryJpa) {
this.accountRepositoryJpa = accountRepositoryJpa;
}
@Override
public Integer add(Account account) {
return accountRepositoryJpa.saveAndFlush(account).getId();
}
@Override
public void edit(Integer accountId, Account account) {
account.setId(accountId);
accountRepositoryJpa.saveAndFlush(account);
}
@Override
public Account findById(Integer accountId) {
return accountRepositoryJpa.getOne(accountId);
}
}

View File

@ -0,0 +1,34 @@
package org.sadtech.social.core.repository.impl.jpa;
import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.ContentRepository;
import org.sadtech.social.core.repository.jpa.MailRepositoryJpa;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
* Реализация репозитория.
*
* @author upagge [25/07/2019]
*/
@Repository
public class MailRepositoryJpaImpl implements ContentRepository<Mail> {
private final MailRepositoryJpa mailRepositoryJpa;
public MailRepositoryJpaImpl(MailRepositoryJpa mailRepositoryJpa) {
this.mailRepositoryJpa = mailRepositoryJpa;
}
@Override
public Integer add(Mail content) {
return mailRepositoryJpa.saveAndFlush(content).getId();
}
@Override
public List<Mail> findByTime(LocalDateTime timeFrom, LocalDateTime timeTo) {
return mailRepositoryJpa.findByCreateDateBetween(timeFrom, timeTo);
}
}

View File

@ -1,4 +1,4 @@
package org.sadtech.social.core.repository.impl;
package org.sadtech.social.core.repository.impl.local;
import org.sadtech.social.core.domain.money.Account;
import org.sadtech.social.core.exception.AccessException;

View File

@ -1,4 +1,4 @@
package org.sadtech.social.core.repository.impl;
package org.sadtech.social.core.repository.impl.local;
import org.sadtech.social.core.domain.content.BoardComment;
import org.sadtech.social.core.repository.ContentRepository;

View File

@ -1,4 +1,4 @@
package org.sadtech.social.core.repository.impl;
package org.sadtech.social.core.repository.impl.local;
import com.google.gson.JsonObject;
import org.sadtech.social.core.repository.EventRepository;

View File

@ -1,4 +1,4 @@
package org.sadtech.social.core.repository.impl;
package org.sadtech.social.core.repository.impl.local;
import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.ContentRepository;
@ -7,6 +7,11 @@ import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
/**
* Локальная реализация репозитория на основе {@link ArrayList} для взаимодействия с сущностью {@link Mail}.
*
* @author upagge [27/07/2019]
*/
public class MailRepositoryList implements ContentRepository<Mail> {
private final List<Mail> mails = new ArrayList<>();

View File

@ -0,0 +1,13 @@
package org.sadtech.social.core.repository.jpa;
import org.sadtech.social.core.domain.money.Account;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* TODO: Добавить описание интерфейса.
*
* @author upagge [27/07/2019]
*/
public interface AccountRepositoryJpa extends JpaRepository<Account, Integer> {
}

View File

@ -1,32 +1,19 @@
package org.sadtech.social.core.repository.jpa;
import org.sadtech.social.core.domain.content.Mail;
import org.sadtech.social.core.repository.ContentRepository;
import org.sadtech.social.core.repository.jpa.impl.MailRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDateTime;
import java.util.List;
/**
* TODO: Добавить описание класса.
* Интерфейс JPA репозитория для сущности {@link Mail}. При этом сам не является репозиторием, а подставляется в
* {@link org.sadtech.social.core.repository.impl.jpa.MailRepositoryJpaImpl}
*
* @author upagge [25/07/2019]
* @author upagge [27/07/2019]
*/
public class MailRepositoryJpa implements ContentRepository<Mail> {
public interface MailRepositoryJpa extends JpaRepository<Mail, Integer> {
private final MailRepository mailRepository;
List<Mail> findByCreateDateBetween(LocalDateTime from, LocalDateTime to);
public MailRepositoryJpa(MailRepository mailRepository) {
this.mailRepository = mailRepository;
}
@Override
public Integer add(Mail content) {
return mailRepository.saveAndFlush(content).getId();
}
@Override
public List<Mail> findByTime(LocalDateTime timeFrom, LocalDateTime timeTo) {
return mailRepository.findByCreateDateBetween(timeFrom, timeTo);
}
}

View File

@ -1,18 +0,0 @@
package org.sadtech.social.core.repository.jpa.impl;
import org.sadtech.social.core.domain.content.Mail;
import org.springframework.data.jpa.repository.JpaRepository;
import java.time.LocalDateTime;
import java.util.List;
/**
* TODO: Добавить описание интерфейса.
*
* @author upagge [27/07/2019]
*/
public interface MailRepository extends JpaRepository<Mail, Integer> {
List<Mail> findByCreateDateBetween(LocalDateTime from, LocalDateTime to);
}