package cn.newgxu.bbs.domain.bank; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import cn.newgxu.bbs.common.util.Util; import cn.newgxu.bbs.domain.user.User; import cn.newgxu.jpamodel.JPAEntity; import cn.newgxu.jpamodel.ObjectNotFoundException; /** * BankLoan generated by MyEclipse - Hibernate Tools */ @Entity @Table(name = "bank_loan") public class Loan extends JPAEntity { private static final long serialVersionUID = 6629127999544345160L; @Id @Column(name = "id") // @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq") // @SequenceGenerator(name="id_seq", sequenceName="seq_bank_operate_log") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id = -1; @ManyToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User user; private int money; private int days; private byte status; @Column(name = "loan_rate", precision = 4) private float loanRate; @Column(name = "apply_time") private Date applyTime; @Column(name = "begin_time") private Date beginTime; @Column(name = "repay_time") private Date repayTime; // Property accessors public int getId() { return this.id; } public void setId(int id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public int getMoney() { return this.money; } public void setMoney(int money) { this.money = money; } public Date getApplyTime() { return this.applyTime; } public void setApplyTime(Date applyTime) { this.applyTime = applyTime; } public Date getBeginTime() { return this.beginTime; } public void setBeginTime(Date beginTime) { this.beginTime = beginTime; } public int getDays() { return this.days; } public void setDays(int days) { this.days = days; } public float getLoanRate() { return this.loanRate; } public void setLoanRate(float loanRate) { this.loanRate = loanRate; } public byte getStatus() { return status; } public void setStatus(byte status) { this.status = status; } public void setStatus(Byte status) { this.status = status; } public Date getRepayTime() { return this.repayTime; } public void setRepayTime(Date repayTime) { this.repayTime = repayTime; } // Constructors public static Loan get(int id) throws ObjectNotFoundException { return (Loan) getById(Loan.class, id); } @SuppressWarnings("unchecked") public static List<Loan> getByUser(User user, Byte status) { return (List<Loan>) Q("from Loan n where n.user = ?1 and n.status = ?2", P(1, user), P(2, status)).getResultList(); } @SuppressWarnings("unchecked") public static List<Loan> getApplyLoans(Byte status) { return (List<Loan>) Q("from Loan n where n.status = ?1", P(1, status)).getResultList(); } public Date getEndTime() { return Util.getDateAfterDay(this.beginTime, this.days); } public int getAccrual() { int distance = Util.days(this.beginTime, new Date()); if ( distance > this.days) { return (int)(this.money * this.loanRate * this.days + 2 * this.money * this.loanRate * (distance - this.days)); } return (int)(this.money * this.loanRate * distance); } // ------------------------------------------------ @SuppressWarnings("serial") @Override public String toString() { return "Loan" + new LinkedHashMap<String, Object>() { { put("id", id); put("user", user); put("money", money); put("days", days); put("loanRate", loanRate); put("applyTime", applyTime); put("beginTime", beginTime); put("loanRate", loanRate); put("repayTime", repayTime); } }.toString(); } }