123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package com.xy.alipay;
- import cn.hutool.json.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.xxl.job.core.biz.model.ReturnT;
- import com.xxl.job.core.handler.annotation.XxlJob;
- import com.xy.config.DeviceThreadPoolConfig;
- import com.xy.consumer.connected.ConnectedMqttConfiguration;
- import com.xy.consumer.connected.ConnectedProducer;
- import com.xy.consumer.disconnect.DisconnectedMqttConfiguration;
- import com.xy.consumer.disconnect.DisconnectedProducer;
- import com.xy.dto.DeviceDetailDTO;
- import com.xy.entity.DeviceStatus;
- import com.xy.service.AlipayDeviceService;
- import com.xy.service.DeviceStatusServiceImpl;
- import com.xy.utils.R;
- import com.xy.utils.ThreadPoolUtils;
- import com.xy.vo.DeviceDetailVO;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import lombok.AllArgsConstructor;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Component;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import java.util.List;
- /**
- * <p>
- * 支付宝设备服务
- * </p>
- *
- * @author lijin
- * @since 2023-04-20
- */
- @Slf4j
- @Component
- @AllArgsConstructor
- @Api(tags = "支付宝设备API")
- public class ApiDeviceServiceImpl {
- private DeviceStatusServiceImpl deviceStatusService;
- private AlipayDeviceService alipayDeviceService;
- private ConnectedProducer connectedProducer;
- private DisconnectedProducer disconnectedProducer;
- /**
- * 查询支付宝设备详情job
- *
- * @return
- */
- @XxlJob("alipayDeviceDetail")
- public ReturnT<String> alipayDeviceDetail() {
- //查询离线设备
- List<DeviceStatus> deviceStatuses = deviceStatusService.list(new LambdaQueryWrapper<DeviceStatus>().eq(DeviceStatus::getNetState, 2));
- if (deviceStatuses.size() == 0) {
- return ReturnT.SUCCESS;
- }
- //查询支付宝设备详情
- ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.ALIPAY_DEVICE_DETAIL, deviceStatuses.size());
- deviceStatuses.forEach(deviceStatus -> execute.execute(() -> {
- DeviceDetailVO deviceDetailVO = alipayDeviceService.queryDetail(new DeviceDetailDTO().setTerminalId(String.valueOf(deviceStatus.getDeviceId())));
- //修改设备为在线
- if (deviceDetailVO.getOnline()) {
- JSONObject jsonObject = new JSONObject().set("clientid", deviceStatus.getDeviceId());
- connectedProducer.sendToMqtt(jsonObject.toString(), ConnectedMqttConfiguration.TOPIC, 1);
- }
- }));
- execute.end();
- return ReturnT.SUCCESS;
- }
- @ApiOperation("刷新设备联网状态")
- @PostMapping("refurbishDeviceNetWork")
- public R refurbishDeviceNetWork(@RequestBody List<Long> deviceIds) {
- ThreadPoolUtils.Execute execute = ThreadPoolUtils.excPoll(DeviceThreadPoolConfig.ALIPAY_DEVICE_DETAIL, deviceIds.size());
- deviceIds.forEach(deviceId -> execute.execute(() -> {
- DeviceDetailVO deviceDetailVO = alipayDeviceService.queryDetail(new DeviceDetailDTO().setTerminalId(String.valueOf(deviceId)));
- JSONObject jsonObject = new JSONObject().set("clientid", deviceId);
- if (deviceDetailVO.getOnline()) {
- connectedProducer.sendToMqtt(jsonObject.toString(), ConnectedMqttConfiguration.TOPIC, 1);
- } else {
- disconnectedProducer.sendToMqtt(jsonObject.toString(), DisconnectedMqttConfiguration.TOPIC, 1);
- }
- }));
- execute.end();
- return R.ok();
- }
- }
|