| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297 |
- package com.zksy.screen.controller;
- import cn.hutool.core.util.BooleanUtil;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.json.JSONConfig;
- import cn.hutool.json.JSONUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.JsonNode;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.node.ObjectNode;
- import com.zksy.common.core.domain.Result;
- import com.zksy.screen.domain.po.ScreenControl;
- import com.zksy.screen.domain.request.InvokeBuild;
- import com.zksy.screen.domain.request.TopWebPage;
- import com.zksy.screen.service.ScreenControlService;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import lombok.extern.slf4j.Slf4j;
- import okhttp3.*;
- import okhttp3.RequestBody;
- import okhttp3.ResponseBody;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import java.io.IOException;
- import java.util.Date;
- import java.util.List;
- import java.util.Optional;
- @RestController
- @Api(tags = "灯杆大屏", description = "灯杆大屏")
- @RequestMapping("/test")
- @Slf4j
- public class TestController {
- @Autowired
- private OkHttpClient httpClient;
- private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
- private final String BASE_URL = "http://172.16.102.52:8016/command/";
- @Autowired
- private ScreenControlService screenControlService;
- @GetMapping("/a")
- private Result<String> test() {
- return Result.ok("爱与和平");
- }
- @PostMapping("/a")
- private String test2() {
- return "爱与和平";
- }
- @ApiOperation(value = "清屏,清除顶层网页内容")
- @PostMapping("/clearTopWebPage")
- public Result clearTopWebPage(
- @ApiParam(value = "设备编码", required = true) @RequestParam(value = "deviceCode", defaultValue = "") String deviceCode) {
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode jsonNodes = objectMapper.createObjectNode();
- jsonNodes.put("type", "clear");
- String jsonParams = null;
- try {
- jsonParams = objectMapper.writeValueAsString(jsonNodes);
- } catch (JsonProcessingException e) {
- log.error("JSON序列化失败: {}", e.getMessage());
- return Result.error("请求失败");
- }
- // 创建请求体
- RequestBody body = RequestBody.create(jsonParams, JSON);
- // 构建请求
- Request requestHttp = new Request.Builder()
- .url(BASE_URL + deviceCode)
- .post(body)
- .build();
- // 发送请求
- try (Response response = httpClient.newCall(requestHttp).execute()) {
- if (!response.isSuccessful()) {
- return Result.error("请求失败");
- }
- ResponseBody responseBody = response.body();
- if (responseBody != null) {
- String responseString = responseBody.string();
- JsonNode rootNode = objectMapper.readTree(responseString);
- JsonNode success = rootNode.path("_type");
- if ("success".equals(success.asText())) {
- return Result.ok("清屏成功");
- } else {
- return Result.error("清屏,清除顶层网页内容失败");
- }
- }
- } catch (IOException e) {
- log.error("请求失败: {}", e.getMessage());
- }
- return Result.error("请求失败");
- }
- @ApiOperation(value = "加载顶层网页")
- @PostMapping("/getTopWebPage")
- public Result getTopWebPage(
- TopWebPage request,
- @ApiParam(value = "设备编码", required = true) @RequestParam(value = "deviceCode", defaultValue = "") String deviceCode) {
- if(StrUtil.isBlank(request.getUrl())){
- return Result.error("url不能为空");
- }
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode jsonNodes = objectMapper.createObjectNode();
- jsonNodes.put("type",Optional.ofNullable(request.getType()).orElse("loadUrl"));
- jsonNodes.put("persistent",Optional.ofNullable(request.getPersistent()).orElse(true));
- jsonNodes.put("url",request.getUrl());
- String jsonParams = null;
- try {
- jsonParams = objectMapper.writeValueAsString(jsonNodes);
- } catch (JsonProcessingException e) {
- log.error("JSON序列化失败: {}", e.getMessage());
- return Result.error("请求失败");
- }
- // 创建请求体
- RequestBody body = RequestBody.create(jsonParams, JSON);
- // 构建请求
- Request requestHttp = new Request.Builder()
- .url(BASE_URL + deviceCode)
- .post(body)
- .build();
- // 发送请求
- try (Response response = httpClient.newCall(requestHttp).execute()) {
- if (!response.isSuccessful()) {
- return Result.error("请求失败");
- }
- ResponseBody responseBody = response.body();
- if (responseBody != null) {
- String responseString = responseBody.string();
- JsonNode rootNode = objectMapper.readTree(responseString);
- JsonNode success = rootNode.path("_type");
- if ("success".equals(success.asText())) {
- return Result.ok("加载顶层网页成功");
- } else {
- return Result.error("加载顶层网页失败");
- }
- }
- } catch (IOException e) {
- log.error("请求失败: {}", e.getMessage());
- }
- return Result.error("请求失败");
- }
- @ApiOperation(value = "开关屏")
- @PostMapping("/turnOffOrLight")
- public Result turnOffOrLight(
- @ApiParam(value = "设备编码", required = true) @RequestParam(value = "deviceCode", defaultValue = "") String deviceCode,
- @ApiParam(value = "指令", required = true) @RequestParam(value = "cmd") Boolean cmd){
- if(cmd == null){
- return Result.error("cmd不能为空");
- }
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode jsonNodes = objectMapper.createObjectNode();
- jsonNodes.put("type","callCardService");
- jsonNodes.put("fn","setScreenOpen");
- jsonNodes.put("arg1",cmd);
- String jsonParams = null;
- try {
- jsonParams = objectMapper.writeValueAsString(jsonNodes);
- } catch (JsonProcessingException e) {
- log.error("JSON序列化失败: {}", e.getMessage());
- return Result.error("请求失败");
- }
- // 创建请求体
- RequestBody body = RequestBody.create(jsonParams, JSON);
- // 构建请求
- Request requestHttp = new Request.Builder()
- .url(BASE_URL + deviceCode)
- .post(body)
- .build();
- // 发送请求
- try (Response response = httpClient.newCall(requestHttp).execute()) {
- if (!response.isSuccessful()) {
- return Result.error("请求失败");
- }
- ResponseBody responseBody = response.body();
- if (responseBody != null) {
- String responseString = responseBody.string();
- JsonNode rootNode = objectMapper.readTree(responseString);
- JsonNode success = rootNode.path("_type");
- if ("success".equals(success.asText())) {
- return Result.ok("发送指令成功");
- } else {
- return Result.error("发送指令失败");
- }
- }
- } catch (IOException e) {
- log.error("请求失败: {}", e.getMessage());
- }
- return Result.error("请求失败");
- }
- @ApiOperation(value = "查询屏幕状态")
- @PostMapping("/checkScreenState")
- public Result checkScreenState(
- @ApiParam(value = "设备编码", required = true) @RequestParam(value = "deviceCode", defaultValue = "") String deviceCode
- ){
- ObjectMapper objectMapper = new ObjectMapper();
- ObjectNode jsonNodes = objectMapper.createObjectNode();
- jsonNodes.put("type","callCardService");
- jsonNodes.put("fn","isScreenOpen");
- String jsonParams = null;
- try {
- jsonParams = objectMapper.writeValueAsString(jsonNodes);
- } catch (JsonProcessingException e) {
- log.error("JSON序列化失败: {}", e.getMessage());
- return Result.error("请求失败");
- }
- // 创建请求体
- RequestBody body = RequestBody.create(jsonParams, JSON);
- // 构建请求
- Request requestHttp = new Request.Builder()
- .url(BASE_URL + deviceCode)
- .post(body)
- .build();
- // 发送请求
- try (Response response = httpClient.newCall(requestHttp).execute()) {
- if (!response.isSuccessful()) {
- return Result.error("请求失败");
- }
- ResponseBody responseBody = response.body();
- if (responseBody != null) {
- String responseString = responseBody.string();
- JsonNode rootNode = objectMapper.readTree(responseString);
- JsonNode success = rootNode.path("_type");
- if ("success".equals(success.asText())) {
- boolean result = rootNode.path("result").asBoolean();
- return Result.ok(result);
- } else {
- return Result.error("发送指令失败");
- }
- }
- } catch (IOException e) {
- log.error("请求失败: {}", e.getMessage());
- }
- return Result.error("请求失败");
- }
- @ApiOperation(value = "添加屏幕控制")
- @PostMapping("/addScreenControl")
- public Result addScreenControl(@org.springframework.web.bind.annotation.RequestBody ScreenControl screenControl) {
- screenControl.setCreateTime(new Date());
- boolean saved = screenControlService.save(screenControl);
- if (saved) {
- return Result.ok("添加成功");
- } else {
- return Result.error("添加失败");
- }
- }
- @ApiOperation(value = "删除屏幕控制")
- @DeleteMapping("/deleteScreenControl/{id}")
- public Result deleteScreenControl(@PathVariable Long id) {
- boolean deleted = screenControlService.removeById(id);
- if (deleted) {
- return Result.ok("删除成功");
- } else {
- return Result.error("删除失败");
- }
- }
- @ApiOperation(value = "更新屏幕控制")
- @PutMapping("/updateScreenControl")
- public Result updateScreenControl(@org.springframework.web.bind.annotation.RequestBody ScreenControl screenControl) {
- screenControl.setUpdateTime(new Date());
- boolean updated = screenControlService.updateById(screenControl);
- if (updated) {
- return Result.ok("更新成功");
- } else {
- return Result.error("更新失败");
- }
- }
- @ApiOperation(value = "根据设备id获取屏幕控制")
- @GetMapping("/getScreenControl/{deviceId}")
- public Result getScreenControl(@PathVariable String deviceId) {
- ScreenControl screenControl = screenControlService.getOne(new QueryWrapper<ScreenControl>().eq("device_id", deviceId));
- if (screenControl != null) {
- return Result.ok(screenControl);
- } else {
- return Result.error("记录不存在");
- }
- }
- @ApiOperation(value = "获取全部屏幕控制")
- @GetMapping("/getAllScreenControl")
- public Result getAllScreenControl() {
- List<ScreenControl> screenControls = screenControlService.list();
- if (screenControls != null) {
- return Result.ok(screenControls);
- } else {
- return Result.error("记录不存在");
- }
- }
- }
|