package com.fdkankan.agent.controller; import com.alibaba.nacos.common.codec.Base64; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.agent.common.BaseController; import com.fdkankan.agent.common.PageInfo; import com.fdkankan.agent.common.ResultCode; import com.fdkankan.agent.common.ResultData; import com.fdkankan.agent.common.util.JwtUtil; import com.fdkankan.agent.entity.AgentNew; import com.fdkankan.agent.exception.BusinessException; import com.fdkankan.agent.request.CameraParam; import com.fdkankan.agent.service.IAgentNewCameraService; import com.fdkankan.agent.service.IAgentNewService; import com.fdkankan.agent.service.ICameraService; import com.fdkankan.agent.service.IExcelService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.List; /** *

* 相机主表 前端控制器 *

* * @author * @since 2022-11-09 */ @RestController @Slf4j @RequestMapping("/agent/camera") public class CameraController extends BaseController { @Autowired ICameraService cameraService; @Autowired IAgentNewService agentNewService; @Autowired IAgentNewCameraService agentNewCameraService; @Autowired IExcelService excelService; @PostMapping("/list") public ResultData list(@RequestBody CameraParam param){ param.setAgentId(getAgent().getId()); if(getAgent().getParentId() != null) { List cameraIds = agentNewCameraService.getBySubAgent(getAgent().getId()); if(cameraIds.isEmpty()){ return ResultData.ok(PageInfo.PageInfo(new Page<>(param.getPageNum(),param.getPageSize()))); } param.setAuthCameraIds(cameraIds); } return ResultData.ok(cameraService.pageList(param)); } @PostMapping("/giveCamera") public ResultData giveCamera(@RequestBody CameraParam param){ if(param.getId() == null || param.getSubAgentId() == null){ throw new BusinessException(ResultCode.PARAM_MISS); } param.setAgentId(getAgent().getId()); agentNewCameraService.giveCamera(param); return ResultData.ok(); } @PostMapping("/unBindCamera") public ResultData unBindCamera(@RequestBody CameraParam param){ if(param.getId() == null ){ throw new BusinessException(ResultCode.PARAM_MISS); } param.setAgentId(getAgent().getId()); agentNewCameraService.unBindCamera(param); return ResultData.ok(); } @PostMapping("/giveCameraBatch") public ResultData giveCameraBatch( @RequestParam(required = false) Integer subAgentId, @RequestParam(required = false) MultipartFile file){ Integer count = excelService.uploadExcel(file,getAgent().getId(),subAgentId); return ResultData.ok(count); } @GetMapping("/downTemplate") public void downInTemplate(@RequestParam(required = false,defaultValue = "0") Integer type, HttpServletResponse res, HttpServletRequest req) throws IOException { String fileName = ""; switch (getLang()){ case "en" : fileName = "giveCamera_en.xlsx"; break; default: fileName = "giveCamera.xlsx"; break; } InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("template/"+fileName); OutputStream os = res.getOutputStream(); try { String agent = req.getHeader("USER-AGENT"); if (agent != null && !agent.contains("MSIE") && !agent.contains("like Gecko")) {// FF String enableFileName = "=?UTF-8?B?" + (new String(Base64.encodeBase64(fileName.getBytes(StandardCharsets.UTF_8)))) + "?="; res.setHeader("Content-Disposition", "attachment; filename=" + enableFileName); } else { // IE String enableFileName = URLEncoder.encode(fileName, "UTF-8"); res.setHeader("Content-Disposition", "attachment; filename=" + enableFileName); } File file = new File(fileName); FileUtils.copyInputStreamToFile(inputStream,file); os.write(FileUtils.readFileToByteArray(file)); os.flush(); } finally { os.close(); } } }