package com.qxueyou.scc.controller; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.qxueyou.scc.admin.classes.dao.ClassDAO; import com.qxueyou.scc.admin.classes.model.ClsClass; import com.qxueyou.scc.admin.classes.service.IClassService; 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.util.ClientUtils; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.QBeanUtils; import com.qxueyou.scc.notice.model.Notice; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @Api(tags = "¹«¸æ½Ó¿Ú-½Ìʦ¶Ë") @RestController @RequestMapping(value = "/admin/notice") public class NoticeController { @Autowired IClassService classService; @Autowired INoticeService noticeService; @Autowired NoticeDAO dao; @Autowired ClassDAO classDao; /** * ÏÔʾ ¹«¸æÁбí * * @param keyword * @param pageNum * @param pageSize * @return */ @ApiOperation(value = "¹«¸æÁбí", notes = "»ñÈ¡°à¼¶ÁÐ±í¼°°à¼¶ËùÔÚ¹«¸æÁбí") @GetMapping(value = "list") public Result list(String keyword, Integer pageNum, Integer pageSize) { if (!ClientUtils.isAdmin()) { // »ñÈ¡°à¼¶ÁÐ±í¼°°à¼¶ËùÔÚ¹«¸æÁбí List noticeIds = new ArrayList(10); List clsLst = classService.getClassLstByTeacherId(); for (ClsClass cls : clsLst) { noticeIds.addAll(dao.getClassNotices(cls.getClassId())); } List notices = noticeService.readByStatus(noticeIds, Notice.STATUS_ISSUED); List> lst = QBeanUtils.listBean2ListMap(notices, CollectionUtils.newStringMap( "noticeId", "noticeId", "title", "name", "noticeTypeName", "type", "issuedTime", "releaseTime")); if(lst == null) { return new Result(true, "success", CollectionUtils.newObjectMap("noticeCount", 0, "noticeLst", new ArrayList<>())); } for (Map map : lst) { map.put("isView", dao.isView((String) map.get("noticeId"), ClientUtils.getUserId())); map.put("classCount", dao.getLiveClasses((String) map.get("noticeId")).size()); map.put("noticeTypeName", this.getTypeName((String)map.get("type"))); } return new Result(true, "success", CollectionUtils.newObjectMap("noticeCount", lst.size(), "noticeLst", lst)); } else { return new Result(true, "success", CollectionUtils.newObjectMap("noticeLst", Collections.EMPTY_LIST)); } } /** * ÏÔʾ ¹«¸æ¹ÜÀíÁбí * @param keyword * @param pageNum * @param pageSize * @return */ @ApiOperation(value = "¹«¸æ¹ÜÀíÁбí", notes = "") @GetMapping(value = "managerLst") public Result managerLst(String keyword, Pager pager, @RequestParam(defaultValue = "desc") String sort) { String keyword_ = StringUtils.isBlank(keyword) ? "" : keyword; List notices = noticeService.list(keyword_, pager.getPageNum(), pager.getPageSize(), ClientUtils.getUserId(), sort); int count = noticeService.listCount(keyword_, ClientUtils.getUserId()); List> lst = QBeanUtils.listBean2ListMap(notices, CollectionUtils.newStringMap( "noticeId", "noticeId", "title", "name", "status", "status", "noticeTypeName", "type", "issuedTime", "releaseTime" )); for (Map map : lst) { List classIds = dao.getLiveClasses((String) map.get("noticeId")); map.put("classCount", classIds.size()); map.put("studentCount", classIds.size() > 0?classDao.getStudentCount(classIds):0); map.put("readCount", dao.getReadCount((String) map.get("noticeId"))); map.put("noticeTypeName", this.getTypeName((String)map.get("type"))); } return new Result(true, "success", CollectionUtils.newObjectMap("noticeCount", count, "noticeLst", lst )); } private String getTypeName(String key) { Map typeMap = new HashMap<>(); typeMap.put("homework", "×÷Òµ¹«¸æ"); typeMap.put("exam", "¿¼ÊÔ¹«¸æ"); typeMap.put("other", "ÆäËû¹«¸æ"); typeMap.put("class", "ÉϿι«¸æ"); return typeMap.get(key); } /** * ·¢²¼¹«¸æ/¶à¸öidÒѶººÅ¸ô¿ª * * @param noticeIds ¹«¸æids * @return */ @ApiOperation(value = "·¢²¼¹«¸æ", notes = "¶à¸öidÒѶººÅ¸ô¿ª") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeIds", value = "¶à¸öidÒѶººÅ¸ô¿ª", required = true, paramType="query", dataType = "String") }) @PostMapping(value = "release") public Result release(String noticeIds) { return noticeService.doIssue(noticeIds.split(",")); } /** * È¡Ïû·¢²¼/¶à¸öidÒѶººÅ¸ô¿ª * * @param noticeIds ¹«¸æids * @return */ @ApiOperation(value = "È¡Ïû·¢²¼", notes = "¶à¸öidÒѶººÅ¸ô¿ª") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeIds", value = "¶à¸öidÒѶººÅ¸ô¿ª", required = true, paramType="query", dataType = "String"), }) @PostMapping(value = "cancel") public Result cancel(String noticeIds) { return noticeService.doCancel(noticeIds.split(",")); } /** * ɾ³ý ¹«¸æ/¶à¸öidÒѶººÅ¸ô¿ª * * @param noticeIds ¹«¸æids * @return */ @ApiOperation(value = "ɾ³ý¹«¸æ", notes = "¶à¸öidÒѶººÅ¸ô¿ª") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeIds", value = "¶à¸öidÒѶººÅ¸ô¿ª", required = true, paramType="query", dataType = "String"), }) @PostMapping(value = "delete") public Result delete(String noticeIds) { return noticeService.delete(noticeIds.split(",")); } /** * ÐÂÔö/¸üР* * @param noticeId * @param name * @param content * @param type * @param classIds * @param pathUrl * @return */ @ApiOperation(value = "ÐÂÔö/¸üй«¸æ", notes = "noticeId´æÔÚÔò¸üУ¬·ñÔòÐÂÔö") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "¹«¸æ±êÌâ", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "content", value = "¹«¸æÄÚÈÝ", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "type", value = "¹«¸æÀàÐÍÃû³Æ", required = true, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "classIds", value = "¹ØÁªµÄ°à¼¶id£¬¶ººÅ×é×°", required = true, paramType = "query", dataType = "String") }) @PostMapping(value = "addOrUpdate") public Result addOrUpdate(String noticeId, String name, String content, String type, String classIds, String pathUrl) { if (StringUtils.isEmpty(noticeId)) { return noticeService.add(name, content, type, CollectionUtils.newList(String.class, classIds.split(","))); } else { return noticeService.update(noticeId, name, content, type, CollectionUtils.newList(String.class, classIds.split(","))); } } /** * »ñÈ¡¹«¸æÏêÇé * * @param noticeId * @return */ @ApiOperation(value = "»ñÈ¡¹«¸æÏêÇé", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeId", value = "¹«¸æid", required = true, paramType = "query", dataType = "String") }) @GetMapping(value = "detail") public Result detail(String noticeId) { Notice notice = noticeService.read(noticeId); List classIds = dao.getLiveClasses(noticeId); String [] classNames = null; if(classIds!=null && classIds.size()>0){ classNames= classService.queryClassNamesByIds(classIds.toArray(new String [classIds.size()])); } return new Result(true, "success", CollectionUtils.newObjectMap( "noticeName", notice.getTitle(), "type", notice.getNoticeTypeName(), "createTime", notice.getCreateTime(), "remark", notice.getContent(), "fullPath", notice.getImgPath(), "creator", notice.getCreator(), "classIds", classIds, "classNames", classNames )); } @ApiOperation(value = "»ñÈ¡°à¼¶Áбí", notes = "") @GetMapping(value = "findClassLst") public Result findClassLst() { if (ClientUtils.isAdmin()) { List> clsLst = classService.getAllClassLst().getDataT("classLst"); return new Result(true, "²Ù×÷³É¹¦", QBeanUtils.listBean2ListMap(clsLst, CollectionUtils.newStringMap( "classId", "classId", "className", "className" ))); } else { List clsLst = classService.getClassLstByTeacherId(); return new Result(true, "²Ù×÷³É¹¦", QBeanUtils.listBean2ListMap(clsLst, CollectionUtils.newStringMap( "classId", "classId", "name", "className" ))); } } @ApiOperation(value = "¸üй«¸æ²é¿´´ÎÊý", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "noticeId", value = "¹«¸æid", required = false, paramType = "query", dataType = "String") }) @GetMapping(value = "view") public Result view(String noticeId) { dao.view(noticeId, ClientUtils.getUserId()); return Result.SUCCESS; } }