package cc.mrbird.febs.unisoftiot.api.service.impl;
|
|
import cc.mrbird.febs.unisoftiot.api.entity.Account;
|
import cc.mrbird.febs.unisoftiot.api.entity.Device;
|
import cc.mrbird.febs.unisoftiot.api.mapper.DeviceMapper;
|
import cc.mrbird.febs.unisoftiot.api.service.DeviceService;
|
import cc.mrbird.febs.unisoftiot.api.service.InitAccountService;
|
import cc.mrbird.febs.unisoftiot.config.UniSoftAccount;
|
import cc.mrbird.febs.unisoftiot.enums.DeviceRequestUrlEnum;
|
import cc.mrbird.febs.unisoftiot.utils.UrlUtils;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
|
import java.util.LinkedHashMap;
|
|
@Slf4j
|
@Service
|
@RequiredArgsConstructor
|
public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
|
|
private final InitAccountService initAccountService;
|
|
/**
|
* 控制设备的方法
|
* 该方法用于向设备发送控制指令,例如开关设备等
|
*
|
* @param device 设备对象,包含设备的相关信息
|
* @return 返回控制设备的结果,以字符串形式表示
|
*/
|
@Override
|
public String controlDevice(Device device) {
|
// 初始化账户服务,为设备控制做准备
|
UniSoftAccount uniSoftAccount = initAccountService.initAccountByAppInfo(UrlUtils.APP_ID,UrlUtils.APP_SECRET);
|
|
// 创建参数集合,用于设备控制
|
LinkedHashMap<String, Object> parameters = new LinkedHashMap<>();
|
// 添加控制设备的参数,这里的例子是开启设备的某个功能
|
parameters.put("device", "1438");
|
parameters.put("power3", "1");
|
|
log.info("parameters",parameters.toString());
|
|
// 发送签名请求,控制设备
|
// 这里使用了签名请求来确保设备控制指令的安全性
|
return uniSoftAccount.requestHandler.sendSignedRequest(
|
UrlUtils.BASE_URL,
|
DeviceRequestUrlEnum.DEVICE_CONTROL.getRequestUrl(),
|
parameters,
|
DeviceRequestUrlEnum.DEVICE_CONTROL.getRequestMethod());
|
}
|
}
|