package com.qxueyou.scc.admin.notice.service.impl;
|
|
import java.util.Collection;
|
import java.util.Collections;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.qxueyou.scc.admin.notice.dao.NoticeDAO;
|
import com.qxueyou.scc.admin.notice.service.INoticeService;
|
import com.qxueyou.scc.base.model.Pager;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.service.impl.CommonAppService;
|
import com.qxueyou.scc.base.util.CollectionUtils;
|
import com.qxueyou.scc.base.util.TraceUtils;
|
import com.qxueyou.scc.msg.model.MsgInfo;
|
import com.qxueyou.scc.msg.service.IMsgInfoService;
|
import com.qxueyou.scc.notice.model.Notice;
|
|
@Service
|
public class NoticeService extends CommonAppService implements INoticeService {
|
|
@Autowired
|
NoticeDAO dao;
|
|
@Autowired
|
IMsgInfoService msgInfoService;
|
|
@Override
|
public Result add(String name, String content, String type, List<String> classIds) {
|
|
Notice notice = new Notice();
|
TraceUtils.setCreateTrace(notice);
|
|
notice.setTitle(name);
|
notice.setContent(content);
|
notice.setNoticeTypeName(type);
|
notice.setStatus(Notice.STATUS_DRAFT);
|
|
save(notice);
|
|
dao.saveNoticeClasses(notice.getNoticeId(), classIds);
|
|
return new Result(true,"",notice.getNoticeId());
|
}
|
|
@Override
|
public Result update(String noticeId, String name, String content, String type, List<String> classIds) {
|
|
Notice notice = read(noticeId);
|
TraceUtils.setUpdateTrace(notice);
|
|
notice.setTitle(name);
|
notice.setContent(content);
|
notice.setNoticeTypeName(type);
|
|
save(notice);
|
|
dao.saveNoticeClasses(notice.getNoticeId(), classIds);
|
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public Notice read(String noticeId) {
|
return read(Notice.class, noticeId);
|
}
|
|
@Override
|
public List<Notice> readByStatus(Collection<String> noticeIdLst, short status) {
|
if (noticeIdLst.isEmpty()) {
|
noticeIdLst.add("noticeId");
|
}
|
String hql = "from Notice where noticeId in (:noticeId) and status =:status order by createTime desc";
|
return findByComplexHql(hql, CollectionUtils.newObjectMap("noticeId", noticeIdLst, "status", status),
|
Notice.class);
|
}
|
|
@Override
|
public List<Notice> list(String keyword, Integer pageNum, Integer pageSize, String createId, String sort) {
|
String hql = "from Notice where deleteFlag is false and title like ? and createId=? ";
|
if (sort.equals("desc")) {
|
hql = hql.concat("order by createTime desc");
|
} else {
|
hql = hql.concat("order by createTime asc");
|
}
|
|
return findList(hql, new Pager(pageSize, pageNum), CollectionUtils.newList(keyword + "%", createId),
|
Notice.class);
|
}
|
|
@Override
|
public int listCount(String keyword, String createId) {
|
String hql = "from Notice where deleteFlag is false and title like ? and createId=?";
|
|
return findCount(hql, CollectionUtils.newList(keyword + "%", createId));
|
}
|
|
@SuppressWarnings("unchecked")
|
@Override
|
public Result delete(String noticeId) {
|
Notice notice = read(noticeId);
|
TraceUtils.setUpdateTrace(notice);
|
notice.setDeleteFlag(true);
|
save(notice);
|
|
dao.saveNoticeClasses(noticeId, Collections.EMPTY_LIST);
|
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public Result delete(String[] noticeIds) {
|
for (String noticeId : noticeIds) {
|
delete(noticeId);
|
dao.deleteNoticeForCache(noticeId);
|
}
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public Result doIssue(String noticeId) {
|
Notice notice = read(noticeId);
|
|
TraceUtils.setUpdateTrace(notice);
|
notice.setStatus(Notice.STATUS_ISSUED);
|
notice.setIssuedTime(new Date());
|
|
save(notice);
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public Result doIssue(String[] noticeIds) {
|
for (String noticeId : noticeIds) {
|
doIssue(noticeId);
|
doSendhMsg(noticeId);
|
}
|
return Result.SUCCESS;
|
}
|
|
|
private void doSendhMsg(String noticeId){
|
Notice notice = this.read(noticeId);
|
List<String> lstClassIds= dao.getLiveClasses(noticeId);
|
|
if(lstClassIds == null || lstClassIds.size()==0){
|
return ;
|
}
|
//查询直播关联的班级
|
String hql = "select userId from StuStudent where classId in (:classIds) and deleteFlag is false ";
|
|
List<String> lstUserIds = this.findByComplexHql(hql, CollectionUtils.newObjectMap("classIds",lstClassIds.toArray(new String[lstClassIds.size()])), String.class);
|
|
if(lstUserIds!=null && lstUserIds.size()>0){
|
Map<String,String> attrs = CollectionUtils.newStringMap("noticeId",notice.getNoticeId(),"title",notice.getTitle(),
|
"creator",notice.getCreator(),"noticeTypeName",notice.getNoticeTypeName());
|
|
msgInfoService.doSendTextMsgToUsers(lstUserIds.toArray(new String[lstUserIds.size()]),
|
MsgInfo.TYPE_NOTICE," 发布了公告", attrs);
|
}
|
}
|
|
@Override
|
public Result doCancel(String noticeId) {
|
return status(noticeId, Notice.STATUS_DRAFT);
|
}
|
|
@Override
|
public Result doCancel(String[] noticeIds) {
|
for (String noticeId : noticeIds) {
|
doCancel(noticeId);
|
}
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public List<String> getNoticeClasses(String noticeId) {
|
return dao.getLiveClasses(noticeId);
|
}
|
|
private Result status(String noticeId, short status) {
|
Notice notice = read(noticeId);
|
TraceUtils.setUpdateTrace(notice);
|
notice.setStatus(status);
|
save(notice);
|
return Result.SUCCESS;
|
}
|
|
@Override
|
public Result view(String noticeId) {
|
return Result.SUCCESS;
|
}
|
|
}
|