package cn.newgxu.bbs.service.impl;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import cn.newgxu.bbs.common.Authorization;
import cn.newgxu.bbs.common.Constants;
import cn.newgxu.bbs.common.Pagination;
import cn.newgxu.bbs.common.exception.BBSException;
import cn.newgxu.bbs.common.exception.BBSExceptionMessage;
import cn.newgxu.bbs.common.exception.ValidationException;
import cn.newgxu.bbs.common.util.Util;
import cn.newgxu.bbs.domain.diary.Diary;
import cn.newgxu.bbs.domain.diary.DiaryBooks;
import cn.newgxu.bbs.domain.diary.DiaryComment;
import cn.newgxu.bbs.domain.user.User;
import cn.newgxu.bbs.service.DiaryService;
import cn.newgxu.bbs.web.model.diary.DiaryBookModel;
import cn.newgxu.bbs.web.model.diary.DiaryCommentModel;
import cn.newgxu.bbs.web.model.diary.DiaryIndexModel;
import cn.newgxu.bbs.web.model.diary.DiaryModel;
import cn.newgxu.bbs.web.model.diary.DiarySearchModel;
import cn.newgxu.jpamodel.ObjectNotFoundException;
/**
*
* @author 红叶狐
* @since 4.0.0
* @version $Revision 1.1$
*/
public class DiaryServiceImpl implements DiaryService {
public boolean isOrnotBuildBook(Authorization auth) {
try {
User user = User.get(auth.getId());
@SuppressWarnings("unused")
DiaryBooks diaryBook = DiaryBooks.getByUserId(user);
return false;
} catch (ObjectNotFoundException e) {
return true;
}
}
public void addDiaryBook(DiaryBookModel model) throws BBSException {
DiaryBooks diaryBook = new DiaryBooks();
diaryBook.setBookName(model.getBookName());
diaryBook.setDescription(model.getDescription());
diaryBook.setDiaryStyle(model.getBookStyle());
diaryBook.setViewKey(Util.hash(model.getViewKey()));
diaryBook.setUser(model.getUser());
diaryBook.save();
}
public DiaryBooks getDiaryBook(User user) throws BBSException {
try {
DiaryBooks diaryBook = DiaryBooks.getByUserId(user);
return diaryBook;
} catch (ObjectNotFoundException e) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
}
public List<Diary> getDiarys(DiaryBooks diaryBook, Pagination p)
throws BBSException {
p.setPageSize(Constants.NUMBER_OF_DIARY);
p.setRecordSize(Diary.getDiarysSize(diaryBook));
return Diary.getDiarys(diaryBook, p);
}
public List<Diary> getDiarys(DiaryBooks diaryBook, Pagination p, String time)
throws BBSException {
p.setPageSize(Constants.NUMBER_OF_DIARY);
p.setRecordSize(Diary.getDiarysSize(diaryBook, time));
return Diary.getDiarys(diaryBook, p, time);
}
// 签写日记
public void addDiaryDo(DiaryModel model) throws BBSException,
ValidationException {
Diary diary = new Diary();
Date date = new Date();
diary.setDiaryBook(model.getDiaryBook());
diary.setUser(model.getUser());
diary.setTitle(model.getTitle());
diary.setContent(model.getContent());
diary.setWeather(model.getWeather());
diary.setHumor(model.getHumor());
diary.setLockedType(model.getLockedType());
diary.setAllowcomment(model.getAllowcomment());
diary.setAddDate(date);
// diary.setBg_type(model.getBg_type());
diary.setIp(model.getIp());
int diaryNum = model.getDiaryBook().getDiaryNum() + 1;
model.getDiaryBook().setDiaryNum(diaryNum);
diary.save();
}
public void editDiaryDo(DiaryModel model) throws BBSException,
ValidationException {
Diary diary = new Diary();
try {
diary = Diary.get(model.getId());
} catch (ObjectNotFoundException e) {
}
if (!diary.getUser().equals(model.getUser())) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
Date date = new Date();
diary.setTitle(model.getTitle());
diary.setContent(model.getContent());
diary.setWeather(model.getWeather());
diary.setHumor(model.getHumor());
diary.setLockedType(model.getLockedType());
diary.setAllowcomment(model.getAllowcomment());
diary.setAddDate(date);
// diary.setBg_type(model.getBg_type());
diary.setIp(model.getIp());
diary.save();
}
public void editDiaryBook(DiaryBookModel model) throws BBSException {
try {
if (model.getUser() != DiaryBooks.get(model.getId()).getUser()) {
throw new BBSException(BBSExceptionMessage.MANAGE_ERROR);
}
} catch (ObjectNotFoundException e) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
model.setDiaryBook(getDiaryBook(model.getUser()));
}
public void editDiaryBookDo(DiaryBookModel model) throws BBSException,
ValidationException {
try {
if (model.getUser() != DiaryBooks.get(model.getId()).getUser()) {
throw new BBSException(BBSExceptionMessage.MANAGE_ERROR);
}
} catch (ObjectNotFoundException e) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
DiaryBooks diaryBook = getDiaryBook(model.getUser());
diaryBook.setBookName(model.getBookName());
diaryBook.setDescription(model.getDescription());
diaryBook.setDiaryStyle(model.getBookStyle());
if (!diaryBook.getViewKey().equals(model.getViewKey())) {
diaryBook.setViewKey(Util.hash(model.getViewKey()));
}
diaryBook.setUser(model.getUser());
diaryBook.update();
}
public void delDiary(DiaryModel model) throws BBSException {
Diary diary = getDiary(model.getId());
if (diary == null) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
if (diary.getDiaryBook().getUser() != model.getUser()) {
throw new BBSException(BBSExceptionMessage.DIARY_IS_OWS_ERROR);
}
diary.setIsDel(1);
diary.save();
DiaryBooks diaryBook = model.getDiaryBook();
int diaryNum = diaryBook.getDiaryNum() - 1;
diaryBook.setDiaryNum(diaryNum);
diaryBook.update();
model.getPagination().setRecordSize(Diary.getDiarysSize(diaryBook));
}
public void delDiaryByAdmin(DiaryModel model) throws BBSException{
Diary diary = getDiary(model.getId());
if (diary == null) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
if (model.getUser().getGroupTypeId()<3) {
throw new BBSException(BBSExceptionMessage.MANAGE_ERROR);
}
diary.setIsDel(1);
diary.save();
DiaryBooks diaryBook = diary.getDiaryBook();
int diaryNum = diaryBook.getDiaryNum() - 1;
diaryBook.setDiaryNum(diaryNum);
diaryBook.update();
}
public Diary getDiary(int id) throws BBSException {
try {
Diary diary = Diary.get(id);
return diary;
} catch (ObjectNotFoundException e) {
throw new BBSException(BBSExceptionMessage.PARAMETER_ERROR);
}
}
public void addHitCount(DiaryBooks diaryBook) {
int hitCount = diaryBook.getHitCount() + 1;
diaryBook.setHitCount(hitCount);
diaryBook.update();
}
private void addDiaryHitCount(Diary diary) {
int hitCount = diary.getHitCount() + 1;
diary.setHitCount(hitCount);
diary.update();
}
public List<DiaryComment> getDiaryComment(DiaryModel model)
throws BBSException {
addDiaryHitCount(model.getDiary());
model.getPagination().setPageSize(Constants.NUMBER_OF_DIARYCOMMENT);
model.getPagination().setRecordSize(
DiaryComment.CommentSize(model.getDiary()));
SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");
String mydate = sp.format(model.getDiary().getAddDate());
model.setWeek(Util.getDayOfWeek(mydate));
return DiaryComment.getDiaryComments(model.getDiary(), model
.getPagination());
}
public void addComment(DiaryCommentModel model) throws BBSException,
ValidationException {
DiaryComment diaryComment = new DiaryComment();
Date date = new Date();
try {
diaryComment.setUser(User.getByNick(model.getUid()));
} catch (ObjectNotFoundException e) {
}
model.setDiary(getDiary(model.getDid()));
model.getPagination().setPageSize(Constants.NUMBER_OF_DIARYCOMMENT);
model.getPagination().setRecordSize(
DiaryComment.CommentSize(model.getDiary()));
model.setDiaryComments(DiaryComment.getDiaryComments(model.getDiary(),
model.getPagination()));
diaryComment.setDiary(getDiary(model.getDid()));
diaryComment.setContent(model.getContent());
diaryComment.setDateTime(date);
diaryComment.setIp(model.getIp());
diaryComment.save();
}
public List<Diary> getDiary(int type, DiaryIndexModel model) {
model.getPagination().setRecordSize(Diary.getDiarysSize());
return Diary.getDiarys(type, model.getPagination());
}
public List<DiaryBooks> getDiaryBooks(int type, DiaryIndexModel model) {
model.getPagination().setRecordSize(DiaryBooks.getDiaryBookSize());
return DiaryBooks.getDiaryBooks(type, model.getPagination());
}
public void search(DiarySearchModel model) throws BBSException,
ValidationException {
switch (model.getType()) {
case 1:
model.getPagination().setRecordSize(
Diary.getDiarysSizeByTitle(model.getKeywords()));
model.setDiarys(Diary.getDiarysByTitle(model.getKeywords(), model
.getPagination()));
break;
case 2:
model.getPagination()
.setRecordSize(
DiaryBooks.getDiaryBooksSizeByBookName(model
.getKeywords()));
model.setDiaryBooks(DiaryBooks.getDiaryBooksByBookName(model
.getKeywords(), model.getPagination()));
break;
case 3:
model.getPagination().setRecordSize(
DiaryBooks.getDiaryBooksSizeByAuthor(model.getKeywords()));
model.setDiaryBooks(DiaryBooks.getDiaryBooksByAuthor(model
.getKeywords(), model.getPagination()));
break;
default:
throw new BBSException("操作类型错误!");
}
}
}