www.pudn.com > Community_open20061104.rar > AuctionPrivilege.java~1~


package com.redmoon.forum.plugin.auction; 
 
import javax.servlet.http.HttpServletRequest; 
import cn.js.fan.util.ErrMsgException; 
import com.redmoon.forum.plugin.base.IPluginPrivilege; 
import com.redmoon.forum.Privilege; 
import org.apache.log4j.Logger; 
import com.redmoon.forum.MsgDb; 
 
public class AuctionPrivilege implements IPluginPrivilege { 
    static Logger logger = Logger.getLogger(AuctionPrivilege.class.getName()); 
 
    public AuctionPrivilege() { 
    } 
 
    public boolean canAddNew(HttpServletRequest request, String boardCode) throws ErrMsgException { 
        // 检测本版是否含有此功能 
        AuctionBoardDb sb = new AuctionBoardDb(); 
        sb = (AuctionBoardDb)sb.getObjectDb(boardCode); 
        if (!sb.isLoaded()) 
            throw new ErrMsgException(AuctionSkin.LoadString(request, "addNewErrorBoardInvalid")); 
        return true; 
    } 
 
    public boolean isOwner(HttpServletRequest request, int msgRootId) throws ErrMsgException { 
        String user = Privilege.getUser(request); 
        AuctionDb sd = new AuctionDb(); 
        sd = sd.getAuctionDb(msgRootId); 
        return sd.getName().equals(user); 
    } 
 
    public boolean canAddReply(HttpServletRequest request, String boardCode, int msgRootId) throws ErrMsgException { 
        // 检测本版是否含有此功能 
        AuctionBoardDb sb = new AuctionBoardDb(); 
        sb = (AuctionBoardDb)sb.getObjectDb(boardCode); 
        if (!sb.isLoaded()) 
            throw new ErrMsgException(AuctionSkin.LoadString(request, "addNewErrorBoardInvalid")); 
 
        return true; 
    } 
 
    public boolean canEdit(HttpServletRequest request, MsgDb md) throws ErrMsgException { 
        // 检测本版是否含有此功能 
        AuctionBoardDb sb = new AuctionBoardDb(); 
        sb = (AuctionBoardDb)sb.getObjectDb(md.getboardcode()); 
        if (!sb.isLoaded()) 
            throw new ErrMsgException(AuctionSkin.LoadString(request, "addNewErrorBoardInvalid")); 
 
        Privilege privilege = new Privilege(); 
        String user = privilege.getUser(request); 
 
        boolean re = false; 
        // 如果贴子作者是本人则可以编辑 
        if (user.equals(md.getName())) 
            re = true; 
        // 如果该贴是拍卖贴,且已有用户参与拍卖,则不能修改 
        AuctionDb ad = new AuctionDb(); 
        ad = ad.getAuctionDb(md.getId()); 
        if (ad.getCurBidPrice()!=0) 
            throw new ErrMsgException(AuctionSkin.LoadString(request, "err_auction_custom_take_part_in")); 
 
        return re; 
    } 
 
    /** 
     * 
     * @param request HttpServletRequest 
     * @param md MsgDb replyid所对应的贴子,也即根贴 
     * @return boolean 
     * @throws ErrMsgException 
     */ 
    public boolean canAddQuickReply(HttpServletRequest request, MsgDb md) throws 
            ErrMsgException { 
        return true; 
    } 
 
    public boolean canManage(HttpServletRequest request, int msgId) throws ErrMsgException { 
        MsgDb md = new MsgDb(); 
        md = md.getMsgDb(msgId); 
 
        String boardCode = md.getboardcode(); 
        // 检测本版是否含有此功能 
        AuctionBoardDb sb = new AuctionBoardDb(); 
        sb = (AuctionBoardDb)sb.getObjectDb(boardCode); 
        if (!sb.isLoaded()) 
            throw new ErrMsgException(AuctionSkin.LoadString(request, "addNewErrorBoardInvalid")); 
 
        Privilege privilege = new Privilege(); 
        String user = privilege.getUser(request); 
 
        boolean re = false; 
        // 如果是楼主可以管理 
        int rootId = md.getRootid(); 
        md = md.getMsgDb(rootId); 
        if (user.equals(md.getName())) 
            re = true; 
 
        // 如果是版主也可以管理 
        boolean isUserManager = false; 
        if (privilege.canManage(request, user, privilege.getPwd(request), "" + msgId)) { 
            isUserManager = true; // 用户是版主 
            re = true; 
        } 
 
        // 如果该贴是拍卖贴,且已有用户参与拍卖,则用户自己不能删除,而版主可以删除 
        if (md.getReplyid()==-1) { 
            AuctionDb ad = new AuctionDb(); 
            ad = ad.getAuctionDb(msgId); 
            AuctionWorthDb aw = new AuctionWorthDb(); 
            long[] ids = aw.getWorthOfAuction(msgId); 
            if (ids.length > 0 && ad.getSellType() == ad.SELL_TYPE_AUCTION) { 
                if (isUserManager) 
                    re = true; 
                else { 
                    re = false; 
                    if (user.equals(ad.getUserName())) 
                        throw new ErrMsgException(AuctionSkin.LoadString( 
                                request, 
                                "err_auction_custom_take_part_in")); 
                } 
            } 
        } 
        return re; 
    } 
}