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