package com.qxueyou.scc.controller; import java.util.List; import java.util.Map; import org.apache.commons.io.IOUtils; 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.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.qxueyou.scc.admin.teacher.service.ITeacherService; 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.teach.res.service.IFileService; import com.qxueyou.scc.teach.subject.model.Subject; import com.qxueyou.scc.teach.subject.service.ISubjectService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; /** * ¿Î³Ì¹ÜÀí¿ØÖÆÆ÷ * * @author chenjunliang * */ @Api(tags = "¿Î³Ì¹ÜÀí-½Ìʦ¶Ë") @RestController @RequestMapping(value = "/teach/subject") public class SubjectController { @Autowired ISubjectService subjectService; @Autowired IFileService fileService; @Autowired private ITeacherService teacherService; /**-------------------------------------------------------------------app½Ó¿Ú------------------------------------------------------------------------------------------**/ /** * ¿Î³Ì¹ÜÀíÁбí * * @param keyword * Ë÷Ëѹؼü×Ö * @param limit * ÏÔʾ¼¸Ìõ * @param pageNum * µ±Ç°Ò³Âë * @param status * ״̬ */ @ApiOperation(value = "»ñÈ¡ÁбíÊý¾Ý-½Ìʦ¶Ë", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "status", value = "״̬", required = false, paramType="query", dataType = "String"), @ApiImplicitParam(name = "type", value = "ÀàÐÍ(1:°à¼¶¿Î³Ì,3:¹«¿ª¿Î³Ì)", required = false, paramType="query", dataType = "Integer") }) @GetMapping(value = "/app/teacherSubjectList") public Result list(Pager pager, @RequestParam(defaultValue="")String keyword, String status, Integer type) { if(type == null) { return new Result(false, "²ÎÊý´íÎó"); } return subjectService.teacherSubjectList(pager, keyword, status, type); } /**-------------------------------------------------------------------ºó¶Ë½Ó¿Ú------------------------------------------------------------------------------------------**/ /** * ¿Î³Ì¹ÜÀíÁбí * * @param keyword * Ë÷Ëѹؼü×Ö * @param limit * ÏÔʾ¼¸Ìõ * @param pageNum * µ±Ç°Ò³Âë * @param status * ״̬ */ @GetMapping(value = "/list") public Result list(String keyword,String status,Integer type, Integer limit, Integer pageNum) { String teacherId = ClientUtils.isAdmin() ? null : ClientUtils.getUserId(); List lst = subjectService.list(keyword, teacherId, status, type, limit, pageNum); int count = subjectService.listCount(keyword, teacherId, status,type); return new Result(true, "success", CollectionUtils.newObjectMap("subjectLst", QBeanUtils.listBean2ListMap(lst, CollectionUtils.newStringMap("name", "subjectName", "subjectId", "subjectId","type","type", "status", "status", "updateTime", "updateTime", "lectureCount", "lectureCount")), "subjectCount", count)); } /** * ¿Î³Ì¹ÜÀíÁбí * * @param keyword * Ë÷Ëѹؼü×Ö * @param limit * ÏÔʾ¼¸Ìõ * @param pageNum * µ±Ç°Ò³Âë * @param status * ״̬ */ @GetMapping(value = "/listAllSimple") public Result listAllSimple() { List lst = subjectService.list("", null, "1", null,1000, 1); return new Result(true, "success", QBeanUtils.listBean2ListMap(lst, CollectionUtils.newStringMap("name", "subjectName", "subjectId", "subjectId"))); } /** * ¿Î³Ì·¢²¼ * a * @param ¿Î³Ìids */ @GetMapping(value = "/release") public Result release(String subjectIds) { return subjectService.doRelease(subjectIds.split(",")); } /** * ¿Î³ÌÏÂ¼Ü * * @param subjectIds * ¿Î³Ìids */ @GetMapping(value = "/soldOut") public Result soldOut(String subjectIds) { return subjectService.doCancel(subjectIds.split(",")); } /** * ¿Î³Ìɾ³ý * * @param subjectIds * ¿Î³Ìids */ @GetMapping(value = "/delete") public Result delete(String subjectIds) { return subjectService.delete(subjectIds.split(",")); } /** * ¸´ÖÆ¿Î³Ì * * @param subjectId * ¿Î³Ìid * @param subjectName * ¿Î³ÌÃû³Æ * @param imgPath * ͼƬurl * @param content * ¿Î³Ì½éÉÜ */ @PostMapping(value = "/copy") public Result copy(String subjectId, String subjectName, String imgPath, String content,int type) { return add(subjectName, imgPath, content,type); } /** * ÐÂÔö¿Î³Ì * * @param subjectName * ¿Î³ÌÃû³Æ * @param imgPath * ͼƬurl * @param content * ¿Î³Ì½éÉÜ * @return */ @PostMapping(value = "/add") public Result add(String subjectName, String imgPath, String content,int type) { String contentFileId = null; if(StringUtils.isNotEmpty(content)){ Result fileResult = fileService.doUpload(IOUtils.toInputStream(content), subjectName + ".data"); contentFileId = fileResult.getDataT("fileId"); } String coverPageFileId = null; if (StringUtils.isNotBlank(imgPath)) { coverPageFileId = fileService.readIdByPath(imgPath); } return subjectService.add(subjectName, coverPageFileId,contentFileId,type); } /** * ÐÂÔöÁ·Ï° * * @param name * ÌâÄ¿Ãû³Æ * @param type * Ìâ¿âÀàÐÍ * @param difficulty * ÄѶÈϵÊý * @param repeatFlag * ÊÇ·ñÖØ¸´ * @return */ @PostMapping(value = "addExercise") public Result addOrgExercise(String name, Integer type, Integer difficulty, Boolean repeatFlag) { return new Result(true, "success"); } /** * ¸üÐÂ¿Î³Ì * * @param subjectId * ¿Î³Ìid * @param subjectName * ¿Î³ÌÃû³Æ * @param imgPath * ͼƬurl * @param content * ¿Î³Ì½éÉÜ */ @PostMapping(value = "/update") public Result update(String subjectId, String subjectName, String imgPath, String content,int type) { String contentFileId = null; if(StringUtils.isNotEmpty(content)){ Result fileResult = fileService.doUpload(IOUtils.toInputStream(content), subjectName + ".data"); contentFileId = fileResult.getDataT("fileId"); } String coverPageFileId = null; if (StringUtils.isNotBlank(imgPath)) { coverPageFileId = fileService.readIdByPath(imgPath); } return subjectService.update(subjectId, subjectName, coverPageFileId, contentFileId,type); } /** * ¸üпγ̻ñÈ¡¿Î³ÌÄÚÈÝ * * @param subjectId * ¿Î³Ìid */ @ApiOperation(value = "»ñÈ¡¿Î³ÌÏêÇé-½Ìʦ¶Ë", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "subjectId", value = "¿Î³Ìid", required = false, paramType="query", dataType = "String") }) @GetMapping(value = "getSubjectDetail") public Result getSubjectDetail(String subjectId) { Map result = QBeanUtils.bean2Map(subjectService.read(subjectId), CollectionUtils .newStringMap("name", "subjectName", "subjectId", "subjectId", "type","type", "coverPageUrl", "imgPath", "teacherId","teacherId", "teacherName","teacherName", "schoolYear","schoolYear", "createTime","createTime", "creator","creator", "term","term")); result.put("reSubjects",this.subjectService.querySubjectReClassInfos(subjectId)); result.put("content", subjectService.readSubjectContent(subjectId)); result.put("lectureCount", subjectService.getLectureCount(subjectId)); return new Result(true, "success", result); } /** * »ñÈ¡¿ÉÓÿγÌÏÂÀ­Áбí½Ó¿Ú * * @param examId * @return */ @RequestMapping(value = "/selectlist", method = RequestMethod.GET) public @ResponseBody List> subjectList(Integer subjectType) { //ÅжÏÊÇ·ñÊǽÌʦ String teacherId = ClientUtils.isAdmin() ? null : teacherService.getTeacherIdByUserId(ClientUtils.getUserId()); if(subjectType==null){ subjectType= Subject.TYPE_ORG_SUBJECT; } return this.subjectService.queryAvailableSubjectIdAndName(teacherId,subjectType); } }