KKSU
2024-11-15 2147ca2f66dd5ff83db5080988f4832bd10ac213
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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());
    }
}