2021与蓝度共同重构项目,服务端
liuhaonan
2022-11-04 e55c8b0a92eb9715edd90c31dfd4de51a47b588b
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/LightemitUtils.java
@@ -1,8 +1,9 @@
package com.sandu.ximon.admin.utils;
import cn.hutool.core.lang.Snowflake;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.sandu.ximon.admin.config.NginxConfigBean;
import com.sandu.common.file.FileUploadDto;
import com.sandu.ximon.admin.config.RealtimeServerBean;
import com.sandu.ximon.admin.service.PoleLightemitService;
import com.sandu.ximon.admin.utils.request.*;
@@ -29,12 +30,13 @@
    PoleLightemitService poleLightemitService;
    @Autowired
    ApplicationContext applicationContext;
    @Autowired
    NginxConfigBean nginxConfigBean;
    //body封装编码
    private final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
    private OkHttpClient client = new OkHttpClient();
    @Autowired
    private Snowflake snowflake;
    public void init() {
@@ -115,14 +117,14 @@
     *
     * @param ledCode
     */
    public void clear(String ledCode) {
    public String clear(String ledCode) {
        String postBody = new Gson().toJson(new Clear());
        //请求地址
        String url = realtimeServerBean.getCommand() + ledCode;
        //请求
//        poleLightemitService.updateRequestBody(ledCode, "");
        String result = post(url, postBody);
        LogUtils.error("清屏结果:" + result);
        return result;
    }
    /**
@@ -132,10 +134,9 @@
     * @param username
     */
    public void postHtml(String ledCode, String username) {
        //html网页内容
        PostHtml postHtml = new PostHtml(realtimeServerBean.getUrl() + username + "_" + ledCode + ".html");
        String postBody = new Gson().toJson(postHtml);
        //请求地址
        String url = realtimeServerBean.getCommand() + ledCode;
        //保存led数据
@@ -144,59 +145,58 @@
        String result = post(url, postBody);
    }
    /**
     * html传输至led屏, 通过url获取html
     *
     * @param ledCode
     * @param username
     */
    public void postHtmlUseNginx(String ledCode, String username) {
        PostHtml postHtml = new PostHtml(nginxConfigBean.getUrl() + username + "_" + ledCode + ".html");
        String postBody = new Gson().toJson(postHtml);
        //请求地址
        String url = realtimeServerBean.getCommand() + ledCode;
        //保存led数据
        poleLightemitService.updateRequestBody(ledCode, postBody);
        //请求
        String result = post(url, postBody);
    }
    /**
     * 视频传输至led屏
     *
     * @param screenWidth
     * @param screenHeight
     * @param filename
     * @param ledCode
     */
    public void postVideo(String screenWidth, String screenHeight, String filename, String ledCode) {
    public String postFile(String screenWidth, String screenHeight, String ledCode, FileUploadDto fileUploadDto) {
        String fileUrl = fileUploadDto.getFileUrl();
        String[] split = fileUrl.split("/");
        String id = split[split.length - 1];
        //led开发板下载视频请求body
        DownloadFileToLocal downloadFileToLocal = new DownloadFileToLocal();
        downloadFileToLocal.url = realtimeServerBean.getUrl() + filename;
        downloadFileToLocal.path += filename;
        downloadFileToLocal.url = realtimeServerBean.getUrl() + "https://ximonsmart.oss-cn-shanghai.aliyuncs.com/" + id;
        downloadFileToLocal.path += fileUrl;
        //led开发板下载视频请求
        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(downloadFileToLocal));
        //led开发板视频列表请求body
        SetPlayList setPlayList = new SetPlayList();
        setPlayList.list[0] = "/data/data/com.xixun.xy.conn/files/local/abc/" + filename;
//        setPlayList.pathList[0] = "";
        setPlayList.list[0] = fileUrl;
        setPlayList.pathList[0] = ledCode;
        try {
            setPlayList.width = Integer.valueOf(screenWidth);
            setPlayList.height = Integer.valueOf(screenHeight);
        } catch (Exception e) {
            return;
            return "推送失败";
        }
        String postBody = new Gson().toJson(setPlayList);
        //保存led数据
        poleLightemitService.updateRequestBody(ledCode, postBody);
        //led开发板视频列表请求
        this.post(realtimeServerBean.getCommand() + ledCode, postBody);
        String post = this.post(realtimeServerBean.getCommand() + ledCode, postBody);
        LogUtils.error("视频上传结果:----" + post);
        if (post.contains("does not exist")) {
            return "推送失败";
        } else {
            //{"_type":"success","_id":"ce8dc3ff-dc88-43b7-8f55-60abd8700f1a","timestamp":1653555160535}
            if (post.startsWith("{") && post.endsWith("}") && post.contains("_type\":\"success")) {
                //保存led数据
                poleLightemitService.updateRequestBody(ledCode, postBody);
                return "推送成功";
            } else {
                return "推送失败";
            }
        }
    }
    /**
     * led屏字幕设置
@@ -218,7 +218,6 @@
     * @param ledCode
     */
    public void clearVideoPlay(String ledCode) {
//        poleLightemitService.updateRequestBody(ledCode, "");
        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new ClearVideoPlay()));
    }
@@ -228,12 +227,12 @@
     * @param ledCode
     */
    public void clearPlayerTask(String ledCode) {
//        poleLightemitService.updateRequestBody(ledCode, "");
        this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new ClearPlayerTask()));
    }
    /**
     * 发送最新的数据
     *
     * @param lightemitControlCode
     */
    public void sendLastCommand(String lightemitControlCode) {
@@ -256,7 +255,6 @@
            return "";
        }
        String re;
        try {
            re = JSONObject.parseObject(result).get("result").toString();
        } catch (Exception e) {
@@ -278,8 +276,8 @@
     * @return
     */
    public String getIsScreenOpen(String ledCode) {
        //发送屏幕是否开启的指令
        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new IsScreenOpen()));
        //获取base64图片数据
        if (StringUtils.isNotBlank(result)) {
            String re;
            try {
@@ -293,35 +291,20 @@
        }
    }
    /*
    启动xwalk
    public boolean getLedOnLine(String ledCode) {
        //通过屏幕是否开启指令获取屏幕是否在线
        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new IsScreenOpen()));
        result = result.trim();
        return result.startsWith("{") && result.endsWith("}");
    }
    /**
     * 控制屏幕开关
     */
    /*public void startActivity(String ledCode){
        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new StartActivity()));
    }*/
    /*
    使用xwalk加载网页
     */
    /*public void callXwalkFn(String ledCode,String username){
        CallXwalkFn callXwalkFn = new CallXwalkFn();
        callXwalkFn.setArgUrl(realtimeServerBean.getUrl() + username + "_" + ledCode + ".html");
        String postBody = new Gson().toJson(callXwalkFn);
        //请求地址
        String url = realtimeServerBean.getCommand() + ledCode;
        //请求
        String result =  post(url,postBody);
    }*/
    /*
   控制屏幕开关
    */
    public String setScreenOpen(String ledCode, Boolean bool) {
        String result = this.post(realtimeServerBean.getCommand() + ledCode, new Gson().toJson(new setScreenOpen(bool)));
        //获取base64图片数据
        if (StringUtils.isNotBlank(result)) {
            String re = "";
            try {
@@ -344,8 +327,8 @@
//        this.post(realtimeServerBean.getCommand() + lightemitControlCode, poleLightemitEntity.getRequestBody());
//    }
    /*
    设置led音量
    /**
     * 设置led音量
     */
    public void setVoiume(String ledCode, Integer volume) {
@@ -359,9 +342,9 @@
    }
    /*
  设置led亮度
   */
    /**
     * 设置led亮度
     */
    public void setBrightness(String ledCode, Integer brightness) {
        SetBrightness setBrightness = new SetBrightness();