package cn.newgxu.bbs.domain.bank;
import java.util.Date;
import java.util.LinkedHashMap;
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.OneToOne;
import javax.persistence.Table;
import cn.newgxu.bbs.domain.user.User;
import cn.newgxu.jpamodel.JPAEntity;
import cn.newgxu.jpamodel.ObjectNotFoundException;
/**
* BankAccounts generated by MyEclipse - Hibernate Tools
*/
@Entity
@Table(name = "bank_accounts")
public class Accounts extends JPAEntity {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq")
// @SequenceGenerator(name="id_seq", sequenceName="seq_bank_accounts")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id = -1;
@OneToOne(cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
// private String password;
private int balance;
@Column(name = "open_time")
private Date openTime;
@Column(name = "begin_time")
private Date beginTime;
// Property accessors
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public Date getOpenTime() {
return this.openTime;
}
public void setOpenTime(Date openTime) {
this.openTime = openTime;
}
public int getBalance() {
return this.balance;
}
public void setBalance(int balance) {
this.balance = balance;
}
public Date getBeginTime() {
return this.beginTime;
}
public void setBeginTime(Date beginTime) {
this.beginTime = beginTime;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
// --------------------------------------------------
public static Accounts get(int baid) throws ObjectNotFoundException {
return (Accounts) getById(Accounts.class, baid);
}
public static Accounts getByUser(User user) throws ObjectNotFoundException {
return (Accounts) SQ("from Accounts ba where ba.user = ?1", P(1, user));
}
/**
* 帐户存取款。
*
* @param money
* 操作金额。
*/
public void addBalance(int money) {
this.balance += money;
this.balance = this.balance < 0 ? 0 : this.balance;
}
/**
* 用户帐户balance是否足以支出。
*
* @param money金额
* 。
*
* @return
*/
public boolean canPayout(int money) {
return this.balance - money >= 0;
}
/**
* 帐户支出。
*
* @param money
* 操作金额。
*/
public void payout(int money) {
this.balance -= money;
}
// ------------------------------------------------
@SuppressWarnings("serial")
@Override
public String toString() {
return "bank_accounts" + new LinkedHashMap<String, Object>() {
{
put("id", id);
put("user", user);
put("balance", balance);
put("openTime", openTime);
put("beginTime", beginTime);
}
}.toString();
}
}