2021与蓝度共同重构项目,服务端
zhanzhiqin
2021-12-21 5c5aad749303149022a1957e2be04e9116b97397
ximon-admin/src/main/java/com/sandu/ximon/admin/service/MonitorService.java
@@ -1,24 +1,43 @@
package com.sandu.ximon.admin.service;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.service.impl.BaseServiceImpl;
import com.sandu.ximon.admin.param.BannerParam;
import com.sandu.ximon.admin.param.MonitorParam;
import com.sandu.ximon.dao.domain.Banner;
import com.sandu.ximon.dao.domain.Monitor;
import com.sandu.ximon.dao.domain.YSY_AccessTokenDto;
import com.sandu.ximon.dao.domain.YSY_MonitorDto;
import com.sandu.ximon.dao.mapper.MonitorMapper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@AllArgsConstructor
public class MonitorService extends BaseServiceImpl<MonitorMapper, Monitor> {
    private final MonitorMapper monitorMapper;
    //萤石云AppKey
    private static final String AppKey = "51a534ebadf54c31a0848dc575dfa206";
    //萤石云 AppKey Secret
    private static final String Secret = "8c32c67a73c87b9e461b2e3bdf58967a";
    //萤石云地址
    private static final String YSY_URL = "https://open.ys7.com/api/lapp";
    //获取萤石云accessToken地址
    private static final String ACCESSTOKEN_URL = "/token/get";
    //添加萤石云摄像头
    private static final String ADD_DEVICE_URL = "/device/add";
    //删除萤石云摄像头
    private static final String DELETE_DEVICE_URL = "/device/delete";
    //获取萤石云单个设备信息
    private static final String GET_DEVICE_URL = "/device/info";
    /**
     * 查询全部摄像头
@@ -76,5 +95,110 @@
        return removeById(Id);
    }
    /**
     * 获取萤石云accessToken
     */
    public String getAccessToken() {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("appKey", AppKey);
        paramMap.put("appSecret", Secret);
        String s = HttpUtil.post(YSY_URL + ACCESSTOKEN_URL, paramMap);
        YSY_AccessTokenDto accessTokenDto = JSON.parseObject(s, YSY_AccessTokenDto.class);
        return accessTokenDto.getData().getAccessToken();
    }
    /**
     * 添加萤石云摄像头
     *
     * @param accessToken  授权过程获取的access_token
     * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写
     * @param validateCode 设备验证码,设备机身上的六位大写字母
     */
    public YSY_MonitorDto addYSYMonitor(String accessToken, String deviceSerial, String validateCode) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", accessToken);
        paramMap.put("deviceSerial", deviceSerial);
        paramMap.put("validateCode", validateCode);
        String s = HttpUtil.post(YSY_URL + ADD_DEVICE_URL, paramMap);
        System.out.println(s);
        YSY_MonitorDto monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
        return monitorDto;
    }
    /**
     * 删除萤石云摄像头
     *
     * @param accessToken  授权过程获取的access_token
     * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写
     */
    public YSY_MonitorDto deleteYSYMonitor(String accessToken, String deviceSerial) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", accessToken);
        paramMap.put("deviceSerial", deviceSerial);
        String s = HttpUtil.post(YSY_URL + DELETE_DEVICE_URL, paramMap);
        System.out.println(s);
        YSY_MonitorDto monitorDto = JSON.parseObject(s, YSY_MonitorDto.class);
        return monitorDto;
    }
    /**
     * 获取萤石云摄像头单个设备信息
     *
     * @param accessToken  授权过程获取的access_token
     * @param deviceSerial 设备序列号,存在英文字母的设备序列号,字母需为大写
     */
    public YSY_MonitorDto getYSYMonitorInfo(String accessToken, String deviceSerial) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("accessToken", accessToken);
        paramMap.put("deviceSerial", deviceSerial);
        String s = HttpUtil.post(YSY_URL + GET_DEVICE_URL, paramMap);
        System.out.println(s);
        YSY_MonitorDto monitor = JSON.parseObject(s, YSY_MonitorDto.class);
        return monitor;
    }
    /**
     * 将摄像头设备相关信息存储到数据库
     *
     * @param monitor 摄像头对象
     * @return
     */
    public boolean addMonitorInfoToTable(Monitor monitor) {
        Monitor one = getOne(Wrappers.lambdaQuery(Monitor.class).eq(Monitor::getDeviceSerial, monitor.getDeviceSerial()));
        if (one == null) {
            return save(monitor);
        } else {
            return updateById(monitor);
        }
    }
    /**
     * 将摄像头设备相关信息更新到数据库
     *
     * @param monitor 摄像头对象
     * @return
     */
    public boolean upDateMonitorInfo(Monitor monitor) {
        if (monitor.getId() == null) {
            throw new BusinessException("缺少摄像头相关ID参数");
        }
        Monitor info = getById(monitor.getId());
        if (info == null) {
            throw new BusinessException("找不到相关摄像头");
        }
        if (!monitor.getDevicesCode().equals(info.getDevicesCode()) || !monitor.getDeviceSerial().equals(info.getDeviceSerial())) {
            throw new BusinessException("监控序列号或监控验证码不正确");
        }
        return updateById(monitor);
    }
}