ProjectController.java 9.42 KB
package com.subsidy.controller;


import com.subsidy.common.ResponseData;
import com.subsidy.common.ResponseVO;
import com.subsidy.common.constant.Platform;
import com.subsidy.common.interceptor.LoginRequired;
import com.subsidy.dto.project.*;
import com.subsidy.model.CollegesDictDO;
import com.subsidy.model.ProjectDO;
import com.subsidy.service.ProjectService;
import com.subsidy.util.ConstantUtils;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;
import io.swagger.annotations.Api;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author Tuyp
 * @since 2025-01-07
 */
@RestController
@Api(tags = "项目")
@RequestMapping("/project")
public class ProjectController {

    @Autowired
    private ProjectService projectService;

    @PostMapping("createProject")
    @ApiOperation("基本信息--保存并继续 id matchId  teacherId  courseName  courseCode  courseType  grade  courseHour  theoryHour  practiseHour" +
            "score  years startDate1 endDate1 startDate2 endDate2  studentTotalNum  vodUrl")
    public ResponseVO createProject(@RequestBody UpdateProjectDTO updateProjectDTO)throws Exception{
        return ResponseData.generateCreatedResponse(0, projectService.createProject(updateProjectDTO));
    }

    @PostMapping("updateProject")
    @ApiOperation("[弃用]基本信息--课程团队/课程信息   id  semester  startDate  endDate teachHours teachGrade  classTotalNum  " +
            "projectMembersDOS[userName  birthDate   education  position  title  major  semester  courseTarget   startDate  endDate teachHours teachGrade  classTotalNum ]" +
            "courseTeam courseDesc courseTarget courseContent  teachFiles  teachResult  courseFeature  attachment  " +
            "vodUrl")
    public ResponseVO updateProject(@RequestBody UpdateProjectDTO updateProjectDTO) throws Exception{
        return ResponseData.generateCreatedResponse(0, projectService.updateProject(updateProjectDTO));
    }

    @PostMapping("oneProject")
    @ApiOperation("查询单个项目  id")
    public ResponseVO oneProject(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.oneProject(projectDO));
    }

    @PostMapping("oneProjectByTeacherId")
    @ApiOperation("查询单个项目  matchId teacherId")
    public ResponseVO oneProjectByTeacherId(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.oneProjectByTeacherId(projectDO));
    }

    @PostMapping("teacherProject")
    @ApiOperation("查询老师某一届的项目  matchId teacherId")
    public ResponseVO oneTeacherProject(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.teacherProject(projectDO));
    }

    @PostMapping("downloadPdf")
    @ApiOperation("生成pdf  id 项目id")
    public void downloadPdf(@RequestBody ProjectDO projectDO) {
        projectService.downloadPdf(projectDO);
    }

    @PostMapping(value = "/getSeedTrackProjectPage")
    @ApiOperation("中心端 --- 分页查询种子赛道全部项目:matchId/赛事ID,projectGroup/职教、高教、projectSchedule/项目进度(全部项目传空字符串、校内报名、市级复赛、市级决赛), " +
            "projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数 ")
    public ResponseVO getSeedTrackProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectPage(projectListPageDTO));
    }

    @PostMapping(value = "/pass")
    @ApiOperation("中心端/院校端 --- (校内赛/初赛/复赛/决赛)通过:id/项目ID、" +
            "projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
    public ResponseVO pass(@RequestBody ApproveDTO approveDTO) {
        projectService.pass(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/batchPass")
    @ApiOperation("中心端/院校端 --- 批量(校内赛/初赛/复赛/决赛)通过:ids/项目ID、" +
            "projectStatus/1:市级复赛通过, 2:市级优胜奖,3/6:市级银奖,4:市级铜奖,5:市级金奖")
    public ResponseVO batchPass(@RequestBody ApproveDTO approveDTO) {
        projectService.batchPass(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/exportProjectList")
    @ApiOperation("中心端 --- 批量导出种子赛道项目:matchId/赛事ID")
    public void exportProjectList(@RequestBody ProjectCollegeListDTO projectCollegeListDTO) {
        projectService.exportProjectList(projectCollegeListDTO);
    }

    @PostMapping("matchCollegeVods")
    @ApiOperation("院校端查看某一届的视频  collegeId 院校id  matchId 赛事id")
    public ResponseVO matchCollegeVods(@RequestBody MatchCollegeVodsDTO matchCollegeVodsDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.matchCollegeVods(matchCollegeVodsDTO));
    }

    @PostMapping("recentVod")
    @ApiOperation("视频最近更新日期(返回的项目 uploadDate) collegeId  matchId")
    public ResponseVO recentVod(@RequestBody ProjectDO projectDO){
        return ResponseData.generateCreatedResponse(0,projectService.recentVod(projectDO));
    }

    @PostMapping(value = "getDataOverview")
    @ApiOperation("中心端 --- 数据概览 projectGroup")
    public ResponseVO getDataOverview(@RequestBody DataOverviewDTO dataOverviewDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalDataOverview(dataOverviewDTO));
    }

    @PostMapping(value = "/withdrawn")
    @ApiOperation("学生端 ---撤回申请:id/项目ID")
    public ResponseVO withdrawn(@RequestBody ProjectDO projectDO)throws Exception {
        projectService.withdrawn(projectDO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/rollback")
    @ApiOperation("院校端 ---上报撤回:id/项目ID")
    public ResponseVO rollback(@RequestBody ProjectDO projectDO)throws Exception {
        projectService.rollback(projectDO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "getVocationalProjectNum")
    @ApiOperation("中心端/院校端 --- (职教)项目管理数量:id 院校id matchId/赛事ID、projectGroup/项目组别")
    public ResponseVO getVocationalProjectNum(@RequestBody SeedTrackProjectNumDTO seedTrackProjectNumDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectNum(seedTrackProjectNumDTO));
    }

    @PostMapping(value = "/getSeedTrackProjectList")
    @ApiOperation("院校端 --- 分页查询种子赛道全部项目:collegeId 院校id  matchId/赛事ID,projectSchedule/项目进度(全部项目传空字符串、校内赛、复赛、决赛), " +
            "projectStatus/项目状态,name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
    public ResponseVO getSeedTrackProjectList(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getSeedTrackProjectList(projectListPageDTO));
    }

    /* -- 管理端 -- */
    @PostMapping(value = "/getVocationalProjectPage")
    @ApiOperation("中心端 --- 分页查询职教赛道项目管理:matchId/赛事ID,projectGroup/项目组别(高职、中职)、projectSchedule/项目进度(全部项目传空字符串、校内赛、市级初赛、市级复赛、市级决赛), " +
            "projectStatus/项目状态, itemField/领域, name/搜名称, pageNum/当前页数 、pageSize/每页显示条数")
    public ResponseVO getVocationalProjectPage(@RequestBody ProjectListPageDTO projectListPageDTO) {
        return ResponseData.generateCreatedResponse(0, projectService.getVocationalProjectPage(projectListPageDTO));
    }

    @PostMapping(value = "/weedOut")
    @ApiOperation("院校端 --- 不予提交:id/项目ID")
    public ResponseVO weedOut(@RequestBody ApproveDTO approveDTO) {
        projectService.weedOut(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping(value = "/batchWeedOut")
    @ApiOperation("院校端 --- 批量不予提交:ids/项目ID")
    public ResponseVO batchWeedOut(@RequestBody ApproveDTO approveDTO) {
        projectService.batchWeedOut(approveDTO);
        return ResponseData.generateCreatedResponse(0);
    }

    @PostMapping("/signature")
    @ApiOperation("获取签名")
    public ResponseVO signature()throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.signature());
    }

    @PostMapping("uploadVods")
    @ApiOperation("上传某个视频  id vodUrl")
    public ResponseVO uploadVods(@RequestBody ProjectDO projectDO)throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.uploadVods(projectDO));
    }

    @PostMapping("uploadVodsTimeLimit")
    @ApiOperation("上传某个视频  id vodUrl")
    public ResponseVO uploadVodsTimeLimit(@RequestBody ProjectDO projectDO)throws Exception{
        return ResponseData.generateCreatedResponse(0,projectService.uploadVodsTimeLimit(projectDO));
    }
}