package com.sandu.ximon.admin.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.pagehelper.PageHelper; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.entity.ProgramPro; import com.sandu.ximon.admin.param.LEDScheduleParam_xixun; import com.sandu.ximon.admin.param.SetVolumeParam; import com.sandu.ximon.admin.security.SecurityUtils; import com.sandu.ximon.admin.service.ClientService; import com.sandu.ximon.admin.service.LedScheduleService; import com.sandu.ximon.admin.service.PoleLightemitService; import com.sandu.ximon.admin.service.XiXunPlayerService; import com.sandu.ximon.admin.utils.LightemitUtils; import com.sandu.ximon.dao.domain.PoleLightemitEntity; import com.sandu.ximon.dao.domain.PoleXixunPlayerEntity; import com.sandu.ximon.dao.enums.AdministratorEnums; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import java.util.List; /** * @Author liuhaonan * @Date 2022/2/22 13:55 * @Version 1.0 */ @RestController @AllArgsConstructor @RequestMapping("/v1/xixun") public class XiXunController { private final XiXunPlayerService xiXunPlayerService; private final ClientService clientService; private final PoleLightemitService poleLightemitService; private final LightemitUtils lightemitUtils; private final LedScheduleService scheduleService; /** * 新增节目 * @param programPro * @return */ @PostMapping("/addProgram") public ResponseVO addProgram(@RequestBody ProgramPro programPro){ return ResponseUtil.success(xiXunPlayerService.insert(programPro)); } /** * 修改 */ @PostMapping("/updateProgram") // @RequiresPermissions("pole:polexixunplayer:update") public ResponseVO update(@RequestBody ProgramPro programPro){ PoleXixunPlayerEntity byId = xiXunPlayerService.getById(programPro.getProgramId()); if(byId==null){ throw new BusinessException("参数错误"); } // QueryWrapper queryWrapper = new QueryWrapper<>(); // queryWrapper.eq("program_code", programPro.get_id()); boolean insert=false; if(xiXunPlayerService.removeById(programPro.getProgramId())){ insert = xiXunPlayerService.insert(programPro); }; return ResponseUtil.success(insert); } /** * 删除节目 * @param pid * @return */ @PostMapping("/deleteProgram/{pid}") public ResponseVO deleteProgram(@PathVariable Long pid){ return ResponseUtil.success(xiXunPlayerService.deleteProgram(pid)); } /** * 获取节目详情 * @param pid * @return */ @GetMapping("/getByPid/{pid}") public ResponseVO getByPid(@PathVariable Long pid){ return ResponseUtil.success(xiXunPlayerService.getByPid(pid)); } /** * 节目列表 * @param baseConditionVO * @param keyword * @return */ @GetMapping("/list") public ResponseVO list(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(PoleXixunPlayerEntity.class).like(PoleXixunPlayerEntity::getProgramName, keyword); // if(AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())){ // boolean clientId = clientService.findClientId(); // if(clientId){ // wrapper= wrapper.eq(PoleXixunPlayerEntity::getUserId,SecurityUtils.getUserId()); // } // wrapper= wrapper.eq(PoleXixunPlayerEntity::getClientId,clientService.getClientId()); // } // wrapper=Wrappers.lambdaQuery(PoleXixunPlayerEntity.class); // if(StrUtil.isNotBlank(keyword)){ // wrapper.like(PoleXixunPlayerEntity::getLightemitName,keyword).or( // lambdaQueryWrapper -> { // lambdaQueryWrapper.like(PoleXixunPlayerEntity::getLightemitControlCode, keyword); // } // ); // } // return ResponseUtil.success(poleLightemitService.list(wrapper)); if(AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())) { return ResponseUtil.success(xiXunPlayerService.list(wrapper)); // todo }else { return ResponseUtil.success(xiXunPlayerService.list(wrapper)); } } /** * 节目推送 * @param pid * @param lightemitIds * @return */ @GetMapping("/pushToXixun/{pid}") public ResponseVO getByPid(@PathVariable Long pid, @RequestBody List lightemitIds ){ xiXunPlayerService.videoXixunPlayer(pid,lightemitIds); return ResponseUtil.success("推送成功"); } /** * LED屏幕新增 * @param poleLightemit * @return */ @PostMapping("/saveLed") public ResponseVO save(@RequestBody PoleLightemitEntity poleLightemit){ int count = poleLightemitService.count(new QueryWrapper().eq("lightemit_control_code", poleLightemit.getLightemitControlCode())); if(count != 0){ throw new BusinessException("LED控制卡编号不能重复"); } poleLightemit.setCreateUserId(SecurityUtils.getClientId()); poleLightemitService.savePoleLightemit(poleLightemit); return ResponseUtil.success("新增成功"); } /** * LED屏幕修改 * @param ledId * @param poleLightemit * @return */ @PostMapping("/updateLed/{ledId}") public ResponseVO updatePoleLightemit(@PathVariable Long ledId,@RequestBody PoleLightemitEntity poleLightemit){ poleLightemitService.updatePoleLightemit(ledId,poleLightemit); return ResponseUtil.success("修改成功"); } /** * LED屏幕删除 * @param ledIds * @return */ @PostMapping("/deleteLed") public ResponseVO deleteLed(@RequestBody List ledIds){ boolean b = poleLightemitService.deletePoleLightemit(ledIds); if(b){ return ResponseUtil.success("删除成功"); }else { return ResponseUtil.success("删除失败"); } } /** * LED屏幕列表 * @param baseConditionVO * @param keyword * @return */ @GetMapping("/listLed") public ResponseVO listLed(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword) { PageHelper.startPage(baseConditionVO.getPageNo(), baseConditionVO.getPageSize()); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(PoleLightemitEntity.class); if(AdministratorEnums.CUSTOMER.getCode().equals(SecurityUtils.getAdministratorIdentity())){ boolean clientId = clientService.findClientId(); if(clientId){ wrapper= wrapper.eq(PoleLightemitEntity::getUserId,SecurityUtils.getUserId()); } wrapper= wrapper.eq(PoleLightemitEntity::getClientId,clientService.getClientId()); } wrapper=Wrappers.lambdaQuery(PoleLightemitEntity.class); if(StrUtil.isNotBlank(keyword)){ wrapper.like(PoleLightemitEntity::getLightemitName,keyword).or( lambdaQueryWrapper -> { lambdaQueryWrapper.like(PoleLightemitEntity::getLightemitControlCode, keyword); } ); } return ResponseUtil.success(poleLightemitService.list(wrapper)); } @GetMapping("/onLineLed") public ResponseVO onlineLed() { return ResponseUtil.success(poleLightemitService.ledList()); } /* 获取led实时画面 */ @GetMapping("/getPicture/{id}") public ResponseVO getPicture(@PathVariable Long id){ if(id == null){ throw new BusinessException("未选择LED屏"); } PoleLightemitEntity poleLightemitEntity = poleLightemitService.getById(id); if(poleLightemitEntity != null){ String result = lightemitUtils.getPicture(poleLightemitEntity.getLightemitControlCode()); return ResponseUtil.success(result); }else { throw new BusinessException("未选择LED屏"); } } /* 获取音量 */ @PostMapping("/getVolume/{id}") public ResponseVO getVolume(@PathVariable Long id){ if(id == null){ throw new BusinessException("未选择LED屏"); } PoleLightemitEntity poleLightemitEntity = poleLightemitService.getById(id); if(poleLightemitEntity != null){ String result = lightemitUtils.getVoiume(poleLightemitEntity.getLightemitControlCode()); return ResponseUtil.success(result); }else { throw new BusinessException("未选择LED屏"); } } /* 设置音量 */ @PostMapping("/setVolume") public ResponseVO setVolume(@RequestBody SetVolumeParam setVolumeEntity){ if(setVolumeEntity == null || setVolumeEntity.getIds() == null || setVolumeEntity.getVolume() > 15){ throw new BusinessException("参数错误"); } Collection poleLightemitControllers = poleLightemitService.listByIds(Arrays.asList(setVolumeEntity.getIds())); if (!poleLightemitControllers.isEmpty()) { Iterator iterator = poleLightemitControllers.iterator(); while (iterator.hasNext()) { PoleLightemitEntity poleLightemitEntity = (PoleLightemitEntity) iterator.next(); poleLightemitService.setVolume(poleLightemitEntity.getLightemitControlCode(), setVolumeEntity.getVolume()); } return ResponseUtil.success("设置音量成功"); }else { throw new BusinessException("未选择LED屏"); } } @PostMapping("/addSchedule") public ResponseVO addSchedule(@RequestBody LEDScheduleParam_xixun ledEntity){ return ResponseUtil.success(scheduleService.insert(ledEntity)); } @PostMapping("/updateSchedule") public ResponseVO updateSchedule(@RequestBody LEDScheduleParam_xixun ledEntity){ return ResponseUtil.success(scheduleService.updateSchedule(ledEntity)); } @GetMapping("/getSchedule/{id}") public ResponseVO getSchedule(@PathVariable Integer id){ return ResponseUtil.success(scheduleService.getSchedule(id)); } @PostMapping("/pushSchedule/{id}") public ResponseVO pushSchedule(@PathVariable Integer id,@RequestBody Long[] lightemitIds){ scheduleService.ledschedulepush(id,lightemitIds); return ResponseUtil.success("设置成功"); } }