⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auctionmanagerimpl.java

📁 网上拍卖系统源代码用java+jsp实现
💻 JAVA
字号:
package org.yeeku.service;

import org.apache.log4j.Logger;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Date;
import java.util.Calendar;

import org.yeeku.business.*;
import org.yeeku.dao.*;
import org.yeeku.model.*;
import org.yeeku.exception.AuctionException;

import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;

/**
 * @author  yeeku.H.lee kongyeeku@163.com
 * @version  1.0
 * <br>Copyright (C), 2005-2008, yeeku.H.Lee
 * <br>This program is protected by copyright laws.
 * <br>Program Name:
 * <br>Date: 
 */
public class AuctionManagerImpl implements AuctionManager
{
    static Logger log = Logger.getLogger(AuctionManagerImpl.class.getName());

    private AuctionUserDao userDao;
    private BidDao bidDao;
    private ItemDao itemDao;
    private KindDao kindDao;
    private StateDao stateDao;
    private MailSender mailSender;
    private SimpleMailMessage message;
	
	public void setUserDao(AuctionUserDao userDao) {
		this.userDao = userDao; 
	}

	public void setBidDao(BidDao bidDao) {
		this.bidDao = bidDao; 
	}

	public void setItemDao(ItemDao itemDao) {
		this.itemDao = itemDao; 
	}

	public void setKindDao(KindDao kindDao) {
		this.kindDao = kindDao; 
	}

	public void setStateDao(StateDao stateDao) {
		this.stateDao = stateDao; 
	}

    public void setMailSender(MailSender mailSender)
	{
        this.mailSender = mailSender;
    }

    public void setMessage(SimpleMailMessage message)
	{
        this.message = message;
    }

    /**
      * 根据赢取者查询物品
      * @param winerId 赢取者id
      * @return 赢取者获得的全部物品
      */
    public List getItemByWiner(int winerId) throws AuctionException
    {
        try
        {
            List result = new ArrayList();
            List items = itemDao.findItemByWiner(new Integer(winerId)); 
             for (Iterator it = items.iterator() ; it.hasNext() ; )
            {
                Item item = (Item)it.next();
                ItemBean ib = new ItemBean();
                initItem(ib,item);
                result.add(ib);
            }
            return result;           
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }
    /**
      * 查询全部流拍的物品
      * @return 全部流拍物品
      */
    public List getFailItems() throws AuctionException
    {
        try
        {
            List result = new ArrayList();
            List items = itemDao.findItemByState(new Integer(3));
            for (Iterator it = items.iterator() ; it.hasNext() ; )
            {
                Item item = (Item)it.next();
                ItemBean ib = new ItemBean();
                initItem(ib,item);
                result.add(ib);
            }
            return result;
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }
    /**
      * 查询用户的全部出价
      * @param userId 需查询的用户id
      * @return 用户的全部出价
      */
    public List getBidByUser(int userId) throws AuctionException
    {
        try
        {
            List l = bidDao.findByUser(new Integer(userId));
            List result = new ArrayList();
            for ( int i = 0 ; i < l.size() ; i++ )
            {
                Bid bid = (Bid)l.get(i);
                BidBean bb = new BidBean();
                initBid(bb, bid);
                result.add(bb);
            }
            return result;
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }

    /**
      * 根据用户名,密码验证登陆是否成功
      * @param username 登陆所输入的用户名
      * @param pass 登陆的密码
      * @return 全部流拍物品
      */
    public Integer validLogin(String username , String pass) throws AuctionException
    {
        try
        {
           return userDao.findUserByNameAndPass(username , pass);
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }

	/**
	  * 根据用户id查找目前仍在拍卖中的物品
	  * @param userId 用户id
	  * @return 当前用户所有的全部物品。
	  */
    public List getItemsByOwner(int userId) throws AuctionException
    {
        try
        {
            List result = new ArrayList();
            List items = itemDao.findItemByOwner(new Integer(userId));
            for (Iterator it = items.iterator() ; it.hasNext() ; )
            {
                Item item = (Item)it.next();
                ItemBean ib = new ItemBean();
                initItem(ib,item);
                result.add(ib);
            }
            return result;            
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }
    /**
      * 查询全部状态
      * @return 获得全部种类
      */     
    public List getAllKind() throws AuctionException
    {
        try
        {
            return kindDao.findAll();       	
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }

    /**
      * 添加物品
      * @param name 物品名称
      * @param desc 物品描述
      * @param remark 物品备注
      * @param avail 有效天数
      * @param kind 物品种类
      */ 
    public void addItem(String name , String desc , String remark , double initPrice , int avail , int kind , int userId) throws AuctionException
    {
        try
        {
            Kind k = kindDao.get(new Integer(kind));
            AuctionUser owner = userDao.get(new Integer(userId));

            Item item = new Item();
            item.setItemName(name);
            item.setItemDesc(desc);
            item.setItemPic(remark);
            item.setAddtime(new Date());
            Calendar c = Calendar.getInstance();
            c.add(Calendar.DATE , avail);
            item.setEndtime(c.getTime());
            item.setInitPrice(new Double(initPrice));
            item.setMaxPrice(new Double(initPrice));
            item.setItemState(stateDao.get(new Integer(1)));
            item.setKind(k);
            item.setOwner(owner);

            itemDao.save(item);

        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
    }

    /**
      * 添加种类
      * @param name 种类名称
      * @param desc 种类描述
      */
    public void addKind(String name , String desc ) throws AuctionException
    {
        try
        {
            Kind k = new Kind();
            k.setKindName(name);
            k.setKindDesc(desc);
            kindDao.save(k);
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }

    }

    /**
      * 根据产品分类,获取当前拍卖的全部商品
      * @param kindId 种类id;
      * @return 该类的全部产品
      */
    public List getItemsByKind(int kindId) throws AuctionException
	{
        try
        {
            List result = new ArrayList();
			List items = itemDao.findItemByKind(new Integer(kindId));
            for (Iterator it = items.iterator() ; it.hasNext() ; )
            {
                Item item = (Item)it.next();
                ItemBean ib = new ItemBean();
                initItem(ib,item);
                result.add(ib);
            }
            return result;
        }
        catch (Exception e)
        {
            log.debug(e.getMessage());
            throw new AuctionException("底层业务异常,请重新试");
        }
	}
    /**
      * 根据分类id,获取种类名
      * @param kindId 种类id;
      * @return 该分类的名称
      */
    public String getKind(int kindId) throws AuctionException
	{
		Kind  k = kindDao.get(new Integer(kindId));
		return k.getKindName();
	}

    /**
      * 根据物品id,获取物品
      * @param itemId 物品id;
      * @return 该物品的名称
      */
    public ItemBean getItem(int itemId) throws AuctionException
	{
		Item item = itemDao.get(new Integer(itemId));
        ItemBean ib = new ItemBean();
        initItem(ib, item);
        return ib;
	}

	/**
	  * 增加新的竞价,并对竞价用户发送邮件通知
	  * @param userId 用户id;
	  * @param itemId 物品id;
	  * @param bidPrice 竞价价格
	  */
	public void addBid(int userId , int itemId , double bidPrice)throws AuctionException
	{
		AuctionUser au = userDao.get(new Integer(userId));
		Item item = itemDao.get(new Integer(itemId));
		if (bidPrice > item.getMaxPrice().doubleValue())
		{
			item.setMaxPrice(new Double(bidPrice));
			itemDao.save(item);
		}

		Bid bid = new Bid();
		bid.setBidItem(item);
		bid.setBidUser(au);
		bid.setBidDate(new Date());
		bid.setBidPrice(new Double(bidPrice));

		bidDao.save(bid);

        SimpleMailMessage msg = new SimpleMailMessage(this.message);
        msg.setTo(au.getEmail());
        msg.setText(
            "Dear "
                + au.getUsername()
                + ", 谢谢你参与竞价,你的竞价的物品的是: "
                + item.getItemName());
        try
		{
            mailSender.send(msg);
        }
        catch(MailException ex)
		{
            System.err.println(ex.getMessage());            
        }
	}

	/**
	  * 根据时间来修改物品的赢取者
	  */
	public void updateWiner()throws AuctionException
	{
		List itemList = itemDao.findItemByState(new Integer(1));
		for (int i = 0 ; i < itemList.size() ; i++ )
		{
			Item item = (Item)itemList.get(i);
			if (!item.getEndtime().after(new Date()))
			{
				AuctionUser au = bidDao.findUserByItemAndPrice(item.getId() , item.getMaxPrice());
				if (au != null)
				{
					item.setWiner(au);
					item.setItemState(stateDao.get(new Integer(2)));
					itemDao.save(item);
				}
				else
				{
					item.setItemState(stateDao.get(new Integer(3)));
					itemDao.save(item);
				}
			}
		}
	}

    /**
      * 将一个Bid PO转换成BidBean的VO
      * @param bb BidBean的VO
      * @param bid Bid的PO
      */
    private void initBid(BidBean bb , Bid bid)
    {
        //getHibernateTemplate().initialize(bid);
        bb.setId(bid.getId().intValue());
        if (bid.getBidUser() != null )bb.setUser(bid.getBidUser().getUsername());
        if (bid.getBidItem() != null )bb.setItem(bid.getBidItem().getItemName());
        bb.setPrice(bid.getBidPrice().doubleValue());
        bb.setBidDate(bid.getBidDate());
    }

    /**
      * 将一个Item PO转换成ItemBean的VO
      * @param ib ItemBean的VO
      * @param item Item的PO
      */
    private void initItem(ItemBean ib , Item item)
    {
        //getHibernateTemplate().initialize(item);
        ib.setId(item.getId());
        ib.setName(item.getItemName());
        ib.setDesc(item.getItemDesc());
        ib.setPic(item.getItemPic());
        if (item.getKind() != null)ib.setKind(item.getKind().getKindName());
        if (item.getOwner() != null)ib.setOwner(item.getOwner().getUsername());
        if (item.getWiner() != null) ib.setWiner(item.getWiner().getUsername());
        ib.setAddTime(item.getAddtime());
        ib.setEndTime(item.getEndtime());
        if (item.getItemState() != null)ib.setState(item.getItemState().getStateName());
        ib.setInitPrice(item.getInitPrice().doubleValue());
        ib.setMaxPrice(item.getMaxPrice().doubleValue());
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -