package com.qxueyou.scc.admin.classroom.service.impl; import java.util.List; import java.util.Map; import org.springframework.stereotype.Service; import com.qxueyou.scc.admin.classroom.model.ClassRoom; import com.qxueyou.scc.admin.classroom.service.IClassRoomService; 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.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.exam.model.ExamInfo; @Service public class ClassRoomService extends CommonAppService implements IClassRoomService { @Override public String add(ClassRoom classRoom) { TraceUtils.setCreateTrace(classRoom); classRoom.setStatus(ClassRoom.STATUS_PUBLISH); this.insert(classRoom); return classRoom.getRoomId(); } @Override public Result update(ClassRoom classRoom) { ClassRoom newClassRoom = read(ClassRoom.class, classRoom.getRoomId()); if (newClassRoom == null) { return new Result(false, "教室不存在"); } TraceUtils.setUpdateTrace(newClassRoom); newClassRoom.setName(classRoom.getName()); newClassRoom.setAddress(classRoom.getAddress()); return save(newClassRoom); } @Override public Result delete(String[] roomIds) { Result result = new Result(true); if (roomIds != null && roomIds.length > 0) { String hql = "update ClassRoom set deleteFlag = true where roomId=?"; result = bulkUpdateInLoop(hql, roomIds); } return result; } @Override public Result doRelease(String[] roomIds) { if(roomIds==null || roomIds.length==0){ return new Result(false, "没有选择要发布的教室"); } List lstClsRoom = this.findByComplexHql("from ClassRoom where roomId in (:roomIds)", CollectionUtils.newObjectMap("roomIds",roomIds), ClassRoom.class); for (ClassRoom room : lstClsRoom) { if (ExamInfo.STATUS_DRAFT != room.getStatus()) { return new Result(false, "只有草稿状态的教室,才能发布。"); } room.setStatus(ClassRoom.STATUS_PUBLISH); TraceUtils.setUpdateTrace(room); save(room); } return new Result(true); } @Override public Result doCancel(String[] roomIds) { if(roomIds==null || roomIds.length==0){ return new Result(false, "没有选择要撤回的教室"); } List lstClsRoom = this.findByComplexHql("from ClassRoom where roomId in (:roomIds)", CollectionUtils.newObjectMap("roomIds",roomIds), ClassRoom.class); for (ClassRoom room : lstClsRoom) { if (ExamInfo.STATUS_PUBLISH != room.getStatus()) { return new Result(false, "只有发布状态的 教室,才能撤回"); } room.setStatus(ExamInfo.STATUS_DRAFT); TraceUtils.setUpdateTrace(room); save(room); } return new Result(true); } @Override public List list(String keyword, Short status, Integer pageSize, Integer pageNum) { StringBuffer hql = new StringBuffer(500); hql.append(" from ClassRoom where name like ? and createId=? "); List params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId()); if(status!=null){ hql.append(" and status = ? "); params.add(status); } hql.append(" and deleteFlag is false order by createTime desc"); return findList(hql.toString(),new Pager(pageSize, pageNum),params, ClassRoom.class); } @Override public int listCount(String keyword, Short status) { StringBuffer hql = new StringBuffer(500); hql.append(" from ClassRoom where name like ? and createId=? "); List params = CollectionUtils.newList('%' + keyword.trim() + '%',ClientUtils.getUserId()); if(status!=null){ hql.append(" and status = ? "); params.add(status); } hql.append(" and deleteFlag is false "); return findCount(hql.toString(),params); } @Override public ClassRoom detail(String roomId) { return this.read(ClassRoom.class,roomId); } @Override public List> queryAllRoomIdAndNames(){ StringBuffer hql = new StringBuffer(500); hql.append("select roomId as roomId,name as roomName,address as address from ClassRoom where status = :status and deleteFlag is false "); return this.findListWithMapByHql(hql.toString(), CollectionUtils.newObjectMap("status",ClassRoom.STATUS_PUBLISH)); } }