?? auctionmanagerimpl.java
字號:
package org.yeeku.service.impl;
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.yeeku.service.AuctionManager;
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(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(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(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
{
AuctionUser user = userDao.findUserByNameAndPass(username , pass);
if (user != null)
{
return user.getId();
}
return null;
}
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(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(kind);
AuctionUser owner = userDao.get(userId);
Item item = new Item();
item.setItemName(name);
item.setItemDesc(desc);
item.setItemRemark(remark);
item.setAddtime(new Date());
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE , avail);
item.setEndtime(c.getTime());
item.setInitPrice(initPrice);
item.setMaxPrice(initPrice);
item.setItemState(stateDao.get(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(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(kindId);
return k.getKindName();
}
/**
* 根據物品id,獲取物品
* @param itemId 物品id;
* @return 該物品的名稱
*/
public ItemBean getItem(int itemId) throws AuctionException
{
Item item = itemDao.get(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(userId);
Item item = itemDao.get(itemId);
if (bidPrice > item.getMaxPrice())
{
item.setMaxPrice(bidPrice);
itemDao.save(item);
}
Bid bid = new Bid();
bid.setBidItem(item);
bid.setBidUser(au);
bid.setBidDate(new Date());
bid.setBidPrice(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(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(2));
itemDao.save(item);
}
else
{
item.setItemState(stateDao.get(3));
itemDao.save(item);
}
}
}
}
/**
* 將一個Bid PO轉換成BidBean的VO
* @param bb BidBean的VO
* @param bid Bid的PO
*/
private void initBid(BidBean bb , Bid 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());
bb.setBidDate(bid.getBidDate());
}
/**
* 將一個Item PO轉換成ItemBean的VO
* @param ib ItemBean的VO
* @param item Item的PO
*/
private void initItem(ItemBean ib , Item item)
{
ib.setId(item.getId());
ib.setName(item.getItemName());
ib.setDesc(item.getItemDesc());
ib.setRemark(item.getItemRemark());
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());
ib.setMaxPrice(item.getMaxPrice());
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -