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<String> noticeIds = new ArrayList<String>(10);
|
List<ClsClass> clsLst = classService.getClassLstByTeacherId();
|
for (ClsClass cls : clsLst) {
|
noticeIds.addAll(dao.getClassNotices(cls.getClassId()));
|
}
|
List<Notice> notices = noticeService.readByStatus(noticeIds, Notice.STATUS_ISSUED);
|
|
List<Map<String, Object>> 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<String, Object> 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<Notice> notices = noticeService.list(keyword_, pager.getPageNum(), pager.getPageSize(), ClientUtils.getUserId(), sort);
|
|
int count = noticeService.listCount(keyword_, ClientUtils.getUserId());
|
|
List<Map<String, Object>> lst = QBeanUtils.listBean2ListMap(notices, CollectionUtils.newStringMap(
|
"noticeId", "noticeId",
|
"title", "name",
|
"status", "status",
|
"noticeTypeName", "type",
|
"issuedTime", "releaseTime"
|
));
|
|
for (Map<String, Object> map : lst) {
|
List<String> 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<String, String> 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<String> 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<Map<String, Object>> clsLst = classService.getAllClassLst().getDataT("classLst");
|
return new Result(true, "²Ù×÷³É¹¦", QBeanUtils.listBean2ListMap(clsLst, CollectionUtils.newStringMap(
|
"classId", "classId",
|
"className", "className"
|
)));
|
} else {
|
List<ClsClass> 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;
|
}
|
|
}
|