package cn.newgxu.bbs.domain.market;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import cn.newgxu.bbs.common.util.Util;
import cn.newgxu.bbs.domain.Topic;
import cn.newgxu.jpamodel.JPAEntity;
import cn.newgxu.jpamodel.ObjectNotFoundException;
/**
*
* @author 红叶狐
* @since 4.0.0
* @version $Revision 1.1$
*/
@Entity
@Table(name = "item_work")
public class ItemWork extends JPAEntity {
private static final long serialVersionUID = 1L;
// 使用对象是user
public static final int OBJECT_TYPE_USER = 1;
// 使用对象是帖子
public static final int OBJECT_TYPE_TOPIC = 2;
@Id
@Column(name = "id")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq")
// @SequenceGenerator(name="id_seq", sequenceName="seq_item_work")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id = -1;
@Column(name = "object_type")
private int obType;
@Column(name = "object_id")
private int obId;
@Column(name = "item_id")
private int itemId;
@Column(name = "valid_date")
private Date validDate;
@Column(name = "expire_date")
private Date expireDate;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getObType() {
return obType;
}
public void setObType(int obType) {
this.obType = obType;
}
public int getObId() {
return obId;
}
public void setObId(int obId) {
this.obId = obId;
}
public int getItemId() {
return itemId;
}
public void setItemId(int itemId) {
this.itemId = itemId;
}
public Date getValidDate() {
return validDate;
}
public void setValidDate(Date validDate) {
this.validDate = validDate;
}
public Date getExpireDate() {
return expireDate;
}
public void setExpireDate(Date expireDate) {
this.expireDate = expireDate;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
private String remark;
// ------------------------------------------------
public void save(int obType, int obId, int itemId, Date validDate,
Date expireDate, String remark) {
this.obType = obType;
this.obId = obId;
this.itemId = itemId;
this.validDate = validDate;
this.expireDate = expireDate;
this.remark = remark;
this.save();
}
public void delete(int object_type, int object_id, int[] items) {
Q(
"delete from ItemWork t where obType = ?1 and obId = ?2 and itemId in ("
+ Util.intsToString(items) + ")", P(1, object_type),
P(2, object_id)).executeUpdate();
}
// ------------------------------------------------
public static ItemWork get(long id) throws ObjectNotFoundException {
return (ItemWork) getById(ItemWork.class, id);
}
public static boolean hasItemWork(Topic topic) {
try {
return (Long) SQ(
"select count(*) from ItemWork i where i.obId = ?1 and i.obType=?2",
P(1, topic.getId()), P(2, OBJECT_TYPE_TOPIC)) > 0 ? true
: false;
} catch (ObjectNotFoundException e) {
e.printStackTrace();
return false;
}
}
@SuppressWarnings("unchecked")
public static List<ItemWork> getItemWorks(int object_type, int object_id,
int[] items, Date date) {
return (List<ItemWork>) Q(
"from ItemWork t where obType = ?1 and obId = ?2 and itemId in ("
+ Util.intsToString(items)
+ ") and validDate <= ?3 and expireDate > ?3 order by validDate desc",
P(1, object_type), P(2, object_id), P(3, date)).getResultList();
}
@SuppressWarnings("unchecked")
public static List<ItemWork> getItemWorksOverdue(int object_type) {
return (List<ItemWork>) Q(
"from ItemWork t where obType = ?1 and expireDate <= ?2 ",
P(1, object_type), P(2, Util.getCurrentTime())).getResultList();
}
// ------------------------------------------------
@SuppressWarnings("serial")
@Override
public String toString() {
return "itemLine" + new LinkedHashMap<String, Object>() {
{
put("id", id);
put("ob_type", obType);
put("ob_id", obId);
put("item_id", itemId);
put("valid_date", validDate);
put("expire_date", expireDate);
put("remark", remark);
}
}.toString();
}
}