package com.sobey.cmop.mvc.web.apply.paas;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
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.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import com.sobey.cmop.mvc.comm.BaseController;
import com.sobey.cmop.mvc.entity.Apply;
import com.sobey.cmop.mvc.entity.CpItem;
import com.sobey.cmop.mvc.web.failure.StatusResponse;
import com.sobey.cmop.mvc.web.failure.UploadedFile;
/**
* 负责CP(云生产)的管理
*
* @author liukai
*
*/
@Controller
@RequestMapping(value = "/apply/cp")
public class CPController extends BaseController {
private static final String REDIRECT_SUCCESS_URL = "redirect:/apply/";
/**
* 跳转到新增页面
*/
@RequestMapping(value = "/save", method = RequestMethod.GET)
public String createForm(Model model) {
return "apply/cp/cpForm";
}
/**
* 新增CP
*
* @return
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(
// Apply
@RequestParam(value = "serviceTag") String serviceTag,
@RequestParam(value = "priority") Integer priority,
@RequestParam(value = "serviceStart") String serviceStart,
@RequestParam(value = "serviceEnd") String serviceEnd,
@RequestParam(value = "description") String description,
// cp
@RequestParam(value = "recordStreamUrl") String recordStreamUrl,
@RequestParam(value = "recordBitrate") String recordBitrate,
@RequestParam(value = "exportEncode") String exportEncode,
@RequestParam(value = "recordType") Integer recordType,
@RequestParam(value = "recordTime") String recordTime,
@RequestParam(value = "recordDuration") Integer recordDuration,
@RequestParam(value = "publishUrl", required = false) String publishUrl,
@RequestParam(value = "isPushCtp") String isPushCtp,
// video
@RequestParam(value = "videoFtpIp") String videoFtpIp,
@RequestParam(value = "videoFtpPort") String videoFtpPort,
@RequestParam(value = "videoFtpUsername") String videoFtpUsername,
@RequestParam(value = "videoFtpPassword") String videoFtpPassword,
@RequestParam(value = "videoFtpRootpath") String videoFtpRootpath,
@RequestParam(value = "videoFtpUploadpath") String videoFtpUploadpath,
@RequestParam(value = "videoOutputGroup") String videoOutputGroup,
@RequestParam(value = "videoOutputWay") String videoOutputWay,
// pictrue
@RequestParam(value = "pictrueFtpIp") String pictrueFtpIp,
@RequestParam(value = "pictrueFtpPort") String pictrueFtpPort,
@RequestParam(value = "pictrueFtpUsername") String pictrueFtpUsername,
@RequestParam(value = "pictrueFtpPassword") String pictrueFtpPassword,
@RequestParam(value = "pictrueFtpRootpath") String pictrueFtpRootpath,
@RequestParam(value = "pictrueFtpUploadpath") String pictrueFtpUploadpath,
@RequestParam(value = "pictrueOutputGroup") String pictrueOutputGroup,
@RequestParam(value = "pictrueOutputMedia") String pictrueOutputMedia,
// upload
@RequestParam(value = "fileName", required = false) String[] fileNames,
@RequestParam(value = "fileSize", required = false) String[] fileSizes,
RedirectAttributes redirectAttributes) {
Apply apply = new Apply();
apply.setServiceTag(serviceTag);
apply.setPriority(priority);
apply.setServiceStart(serviceStart);
apply.setServiceEnd(serviceEnd);
apply.setDescription(description);
comm.cpService.saveCPToApply(apply, recordStreamUrl, recordBitrate, exportEncode, recordType, recordTime,
recordDuration, publishUrl, isPushCtp, videoFtpIp, videoFtpPort, videoFtpUsername, videoFtpPassword,
videoFtpRootpath, videoFtpUploadpath, videoOutputGroup, videoOutputWay, pictrueFtpIp, pictrueFtpPort,
pictrueFtpUsername, pictrueFtpPassword, pictrueFtpRootpath, pictrueFtpUploadpath, pictrueOutputGroup,
pictrueOutputMedia, fileNames, fileSizes);
redirectAttributes.addFlashAttribute("message", "创建云生产成功.");
return REDIRECT_SUCCESS_URL;
}
/**
* 从服务申请表页面跳转到MDN的修改页面. MDN的vod和live另外写个修改方法.
*/
@RequestMapping(value = "/update/{id}/applyId/{applyId}", method = RequestMethod.GET)
public String updateForm(@PathVariable("id") Integer id, @PathVariable("applyId") Integer applyId, Model model) {
model.addAttribute("cp", comm.cpService.getCpItem(id));
return "apply/cp/cpUpateForm";
}
/**
* 修改MDN信息后,跳转到applyId的服务申请修改页面
*
* @param id
* mdnId
* @param applyId
* 服务申请ID
* @param coverArea
* 重点覆盖区域
* @param coverIsp
* 重点覆盖ISP
* @param redirectAttributes
* @return
*/
@RequestMapping(value = "/update/{id}/applyId", method = RequestMethod.POST)
public String update(
@PathVariable("id") Integer id,
@RequestParam("applyId") Integer applyId,
// cp
@RequestParam(value = "recordStreamUrl") String recordStreamUrl,
@RequestParam(value = "recordBitrate") String recordBitrate,
@RequestParam(value = "exportEncode") String exportEncode,
@RequestParam(value = "recordType") Integer recordType,
@RequestParam(value = "recordTime") String recordTime,
@RequestParam(value = "recordDuration") Integer recordDuration,
@RequestParam(value = "publishUrl", required = false) String publishUrl,
@RequestParam(value = "isPushCtp", required = false) String isPushCtp,
// video
@RequestParam(value = "videoFtpIp") String videoFtpIp,
@RequestParam(value = "videoFtpPort") String videoFtpPort,
@RequestParam(value = "videoFtpUsername") String videoFtpUsername,
@RequestParam(value = "videoFtpPassword") String videoFtpPassword,
@RequestParam(value = "videoFtpRootpath") String videoFtpRootpath,
@RequestParam(value = "videoFtpUploadpath") String videoFtpUploadpath,
@RequestParam(value = "videoOutputGroup") String videoOutputGroup,
@RequestParam(value = "videoOutputWay") String videoOutputWay,
// pictrue
@RequestParam(value = "pictrueFtpIp") String pictrueFtpIp,
@RequestParam(value = "pictrueFtpPort") String pictrueFtpPort,
@RequestParam(value = "pictrueFtpUsername") String pictrueFtpUsername,
@RequestParam(value = "pictrueFtpPassword") String pictrueFtpPassword,
@RequestParam(value = "pictrueFtpRootpath") String pictrueFtpRootpath,
@RequestParam(value = "pictrueFtpUploadpath") String pictrueFtpUploadpath,
@RequestParam(value = "pictrueOutputGroup") String pictrueOutputGroup,
@RequestParam(value = "pictrueOutputMedia") String pictrueOutputMedia,
RedirectAttributes redirectAttributes) {
CpItem cpItem = comm.cpService.getCpItem(id);
comm.cpService.updateCPToApply(cpItem, recordStreamUrl, recordBitrate, exportEncode, recordType, recordTime,
recordDuration, publishUrl, isPushCtp, videoFtpIp, videoFtpPort, videoFtpUsername, videoFtpPassword,
videoFtpRootpath, videoFtpUploadpath, videoOutputGroup, videoOutputWay, pictrueFtpIp, pictrueFtpPort,
pictrueFtpUsername, pictrueFtpPassword, pictrueFtpRootpath, pictrueFtpUploadpath, pictrueOutputGroup,
pictrueOutputMedia);
redirectAttributes.addFlashAttribute("message", "修改云生产 " + cpItem.getIdentifier() + " 成功");
return "redirect:/apply/update/" + applyId;
}
/**
* 删除实例后,跳转到applyId的服务申请修改页面
*/
@RequestMapping(value = "/delete/{id}/applyId/{applyId}")
public String delete(@PathVariable("id") Integer id, @PathVariable("applyId") Integer applyId,
RedirectAttributes redirectAttributes) {
comm.cpService.delete(id);
redirectAttributes.addFlashAttribute("message", "删除云生产成功");
return "redirect:/apply/update/" + applyId;
}
/**
* AJAX上传附件
*
* @param request
* @param file
* @return
*/
@RequestMapping(value = "/upload/file", method = RequestMethod.POST)
@ResponseBody
public List<UploadedFile> upload(HttpServletRequest request, @RequestParam("file") MultipartFile file) {
return comm.failureService.saveUploadByAjax(request, file);
}
/**
* AJAX删除页面上已经上传的附件.
*
* @param request
* @param fileName
* @return
*/
@RequestMapping(value = "/upload/delete")
@ResponseBody
public StatusResponse delete(HttpServletRequest request, @RequestParam("fileName") String fileName) {
boolean result = comm.failureService.deleteUploadByAjax(request, fileName);
return new StatusResponse(result, result == true ? "删除成功" : "删除失败");
}
}