package cn.newgxu.bbs.service.impl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import cn.newgxu.bbs.common.exception.BBSException;
import cn.newgxu.bbs.common.exception.BBSExceptionMessage;
import cn.newgxu.bbs.common.util.Util;
import cn.newgxu.bbs.domain.hongbao.HongBao;
import cn.newgxu.bbs.domain.hongbao.HongBao_content;
import cn.newgxu.bbs.domain.hongbao.HongBao_user;
import cn.newgxu.bbs.domain.market.Item;
import cn.newgxu.bbs.domain.market.ItemLine;
import cn.newgxu.bbs.domain.user.User;
import cn.newgxu.bbs.service.HongbaoService;
import cn.newgxu.bbs.web.model.hongbao.HongbaoManageModel;
import cn.newgxu.bbs.web.model.hongbao.HongbaoModel;
import cn.newgxu.bbs.web.model.hongbao.HongbaoRecieveModel;
import cn.newgxu.bbs.web.model.hongbao.HongbaoTypeModel;
import cn.newgxu.jpamodel.ObjectNotFoundException;
/**
*
* @author hjc
* @since 4.0.0
* @version $Revision 1.1$
*/
public class HongbaoServiceImpl implements HongbaoService {
private static final Log log = LogFactory.getLog(HongbaoServiceImpl.class);
public void createHongbao(HongbaoModel model) {
HongBao hongbao = new HongBao();
hongbao.setName(model.getName());
hongbao.setDescription(model.getDescription());
hongbao.setHistory(model.getHistory());
hongbao.setTime(model.getTime());
hongbao.setValid(1);
try {
hongbao.setContent(HongBao_content.getByContentId(model
.getContentType()));
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
hongbao.save();
}
public void createHongbaoType(HongbaoTypeModel model) {
HongBao_content content = new HongBao_content();
content.setExp(model.getExp());
content.setName(model.getName());
content.setMoney(model.getMoney());
List<String> itemNames = Util.splitNicks(model.getItems());
List<Item> items = new ArrayList<Item>();
Item item = null;
for (int i = 0; i < itemNames.size(); i++) {
try {
item = Item.getByName(itemNames.get(i));
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
items.add(item);
}
content.setItems(items);
content.save();
}
public void manageHongbao(HongbaoManageModel model) {
List<HongBao> list = HongBao.getAllHongBaos();
model.setHongbaos(list);
}
public void manageHongbaoType(HongbaoModel model) {
model.setHongbaoTypes(HongBao_content.getHongBaoContents());
}
public void getHongbao(HongbaoModel model) {
HongBao hongbao = null;
try {
hongbao = HongBao.getById(model.getId());
model.setContentType(hongbao.getContent().getId());
model.setName(hongbao.getName());
model.setHistory(hongbao.getHistory());
model.setDescription(hongbao.getDescription());
model.setTime(hongbao.getTime());
model.setHongbaoTypes(HongBao_content.getHongBaoContents());
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
}
public void editHongbao(HongbaoModel model) {
try {
HongBao hongbao = new HongBao();
hongbao.setId(model.getId());
hongbao.setContent(HongBao_content.getByContentId(model
.getContentType()));
hongbao.setDescription(model.getDescription());
hongbao.setHistory(model.getHistory());
hongbao.setName(model.getName());
hongbao.setTime(model.getTime());
hongbao.setValid(model.getValid());
hongbao.update();
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
}
public void delHongbao(HongbaoModel model) {
try {
HongBao hongbao = HongBao.getById(model.getId());
hongbao.delete();
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
}
public void delHongbaoType(HongbaoModel model) {
try {
HongBao_content hongbao = HongBao_content.getByContentId(model
.getId());
hongbao.delete();
} catch (ObjectNotFoundException e) {
e.printStackTrace();
}
}
public void getHongbaoToday(HongbaoRecieveModel model) {
// 确定今日有否红包,下次红包发放时间
SimpleDateFormat sdf = new SimpleDateFormat("MMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
int today = Integer.parseInt(sdf.format(new Date()));
String todayInfo = sdf2.format(new Date());
try {
System.out.println("有红包:::"+today);
HongBao next = getNextFestival(today);
String nextInfo = (int) (next.getTime() / 100) + "月"
+ next.getTime() % 100 + "日";
model.setNextFestival(nextInfo);
HongBao hongbaoToday = HongBao.getHongBaoToday(today);
model.setHongbao(hongbaoToday);
model.setToday(todayInfo + " 有 " + hongbaoToday.getName());
model.setIsFestivalToday(1);
} catch (ObjectNotFoundException e1) {
log.debug("没有红包");
model.setIsFestivalToday(0);
model.setToday(todayInfo + " 没有红包");
return;
}
// 确定今日是否已经领过红包
int isRecieveToday = 0;
try {
List<HongBao_user> hus = HongBao_user.getHongbaoByUser(model
.getUser());
System.out.println(Util.getDate(new Date()));
System.out.println(Util.getDate(Util.getDateAfterDay(1)));
for (int i = 0; i < hus.size(); i++) {
Date lasttime = hus.get(i).getLasttime();
if (lasttime.after(Util.getDate(new Date()))) {
isRecieveToday = 1;
}
}
} catch (Exception e) {
e.printStackTrace();
isRecieveToday = 0;// 抛异常说明没有领取礼物的记录
} finally {
model.setIsRecieveToday(isRecieveToday);
}
}
private HongBao getNextFestival(int today) {
return HongBao.getNextFestival(today);
}
public void recieveHongbaoToday(HongbaoRecieveModel model)
throws BBSException {
getHongbaoToday(model);
if (model.getUser().getExp() < 200) {
throw new BBSException(BBSExceptionMessage.NEED_EXP_HONGBAO);
}
// 如果今天不是节日或者已经领过礼物,则抛出异常
if (model.getIsFestivalToday() == 1 && model.getIsRecieveToday() != 1) {
User user = model.getUser();
HongBao hongbao = model.getHongbao();
HongBao_content hc = hongbao.getContent();
user.addExp(hc.getExp());
user.addMoney(hc.getMoney());
user.save();
List<Item> itemList = hongbao.getContent().getItems();
for (int i = 0; i < itemList.size(); i++) {
ItemLine itemLine = new ItemLine();
itemLine.setUser(user);
itemLine.setItem(itemList.get(i));
itemLine.save();
}
HongBao_user hu = new HongBao_user();
hu.setUser(user);
hu.setHongbao(model.getHongbao());
hu.setLasttime(new Date());
hu.save();
} else {
throw new BBSException(BBSExceptionMessage.NO_HONGBAO);
}
}
}