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 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 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()); } }