package cn.newgxu.bbs.domain.group; 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 org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import cn.newgxu.bbs.domain.group.impl.ForumWebmasterPermission; import cn.newgxu.bbs.domain.user.User; import cn.newgxu.jpamodel.ObjectNotFoundException; /** * * @author polly * @since 4.0.0 * @version $Revision 1.1$ */ @Entity @Table(name = "forum_webmaster_group") public class ForumWebmasterGroup extends UserGroup { private static final long serialVersionUID = -2894731136577661265L; private static final Log log = LogFactory.getLog(ForumWebmasterGroup.class); public ForumWebmasterGroup() { permission = new ForumWebmasterPermission(); } @Id @Column(name = "id") // @GeneratedValue(strategy = GenerationType.SEQUENCE,generator="id_seq") // @SequenceGenerator(name="id_seq", // sequenceName="seq_forum_webmaster_group") @GeneratedValue(strategy = GenerationType.IDENTITY) private int id = -1; @Column(name = "group_name") private String groupName; @Column(name = "max_power") private int maxPower; @Column(name = "leavel_up_exp") private int leavelUpExp; private int encouragement; private int agio; @Column(name = "display_color") private String displayColor; @Override public int getAgio() { return agio; } @Override public String getDisplayColor() { return displayColor; } @Override public String getGroupName() { return groupName; } @Override public int getMaxPower() { return maxPower; } public int getEncouragement() { return encouragement; } public void setEncouragement(int encouragement) { this.encouragement = encouragement; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getLeavelUpExp() { return leavelUpExp; } public void setLeavelUpExp(int leavelUpExp) { this.leavelUpExp = leavelUpExp; } public void setAgio(int agio) { this.agio = agio; } public void setDisplayColor(String displayColor) { this.displayColor = displayColor; } public void setGroupName(String groupName) { this.groupName = groupName; } public void setMaxPower(int maxPower) { this.maxPower = maxPower; } // ------------------------------------------------ public static ForumWebmasterGroup get(int groupId) throws ObjectNotFoundException { return (ForumWebmasterGroup) getById(ForumWebmasterGroup.class, groupId); } public static ForumWebmasterGroup getCertainExist(int groupId) { try { return get(groupId); } catch (ObjectNotFoundException e) { log.error(e); log.error("严重错误:forumWebmasterGroup 没有找到。 id=" + groupId); throw new RuntimeException(); } } @SuppressWarnings("unchecked") @Override public UserGroup getGroupByExp(int exp) { List<UserGroup> groups = Q( "from ForumWebmasterGroup where leavelUpExp <= ?1 order by leavelUpExp desc", P(1, exp)).getResultList(); if (groups.size() >= 1) { try { return groups.get(0); } catch (Exception e) { return null; } } return null; } @SuppressWarnings("unchecked") @Override public UserGroup getNextGroup() { List<UserGroup> groups = Q( "from ForumWebmasterGroup where leavelUpExp > ?1 order by leavelUpExp asc", P(1, this.leavelUpExp)).getResultList(); if (groups.size() >= 1) { try { return groups.get(0); } catch (Exception e) { return null; } } return null; } @Override public int getTypeId() { return GroupManager.FORUM_WEBMASTER_GROUP; } @SuppressWarnings("unchecked") public static List<UserGroup> getGroups() { return (List<UserGroup>) Q("from ForumWebmasterGroup order by id asc") .getResultList(); } public void leavelUp(User user) { ForumWebmasterGroup group = (ForumWebmasterGroup) getNextGroup(); if (group == null) { throw new RuntimeException(); } if (!isAuthLeavelUp(user)) { return; } user.setGroupId(group.getId()); user.addMoney(group.getEncouragement()); user.update(); } @Override public boolean isAuthLeavelUp(User user) { if (user.getExp() >= getLeavelUpExp()) return true; else return false; } }