李进 пре 2 година
родитељ
комит
86fc34663f

+ 27 - 7
device-api-service/src/main/java/com/xy/service/MqttUserServiceImpl.java

@@ -3,13 +3,15 @@ package com.xy.service;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.config.SpringConfigs;
 import com.xy.dto.MqttUserDto;
 import com.xy.entity.MqttUser;
+import com.xy.entity.SysDictRedis;
 import com.xy.mapper.MqttUserMapper;
-import com.xy.utils.Emptys;
-import com.xy.utils.MybatisPlusQuery;
-import com.xy.utils.PageBean;
-import com.xy.utils.R;
+import com.xy.service.factory.TaskCmdServiceImpl;
+import com.xy.utils.*;
+import com.xy.utils.enums.DictEnum;
+import com.xy.utils.enums.DictSonEnum;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
+import java.util.Map;
 
 import static com.xy.utils.Beans.copy;
 import static com.xy.utils.PlusBeans.toIPage;
@@ -38,15 +41,32 @@ import static com.xy.utils.PlusBeans.toPageBean;
 @Api(tags = "mqtt认证")
 public class MqttUserServiceImpl extends ServiceImpl<MqttUserMapper, MqttUser> implements MqttUserService {
 
+    private RedisService<String> redisService;
+
+    private SpringConfigs springConfigs;
+
     @PostMapping("obj")
     @ApiOperation("对象查询")
     public R<MqttUserDto.Vo> obj(@RequestBody MqttUserDto.Vo vo) {
         MqttUserDto.SelectList selectList = copy(MqttUserDto.SelectList.class, vo);
         List<MqttUserDto.Vo> list = list(selectList).getData();
-        if (Emptys.check(list)) {
-            return R.ok(list.get(0).setServerTime(System.currentTimeMillis()));
+        if (!Emptys.check(list)) {
+            return R.ok();
         }
-        return R.ok();
+        MqttUserDto.Vo mqttUser = list.get(0);
+        String env = redisService.get(String.format(TaskCmdServiceImpl.deviceEnvKey, mqttUser.getDeviceId()));
+        if (!Emptys.check(env)) {
+            String uat = SysDictUtils.get(DictEnum.ENV.getKey(), DictSonEnum.ENV_UAT.getKey()).getValue();
+            SpringConfigs.Profiles profiles = springConfigs.getProfiles();
+            env = profiles == null || profiles.getActive() == null ? uat : profiles.getActive();
+        }
+        Map<String, SysDictRedis> map = SysDictUtils.get(DictEnum.ENV_PARAMS.getKey());
+        SysDictRedis mqttUrl = map.get(env + "_mqtt_url");
+        SysDictRedis serverUrl = map.get(env + "_server_url");
+        mqttUser.setServerTime(System.currentTimeMillis())
+                .setIpAddress(mqttUrl.getValue())
+                .setServerUrl(serverUrl.getValue());
+        return R.ok(mqttUser);
     }
 
     @PostMapping("list")

+ 1 - 19
device-api-service/src/main/java/com/xy/service/factory/SetsCmdServiceImpl.java

@@ -1,14 +1,7 @@
 package com.xy.service.factory;
 
-import cn.hutool.json.JSONObject;
-import com.xy.dto.ActivityInfoDto;
 import com.xy.dto.MqttDto;
-import com.xy.dto.PaterDto;
-import com.xy.service.ActivityInfoService;
-import com.xy.utils.LambdaUtils;
 import com.xy.utils.R;
-import com.xy.utils.enums.TaskEnum;
-import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -17,26 +10,15 @@ import java.util.List;
  * 设置指令 接口实现
  */
 @Service
-@AllArgsConstructor
 public class SetsCmdServiceImpl implements CmdService {
 
-    private ActivityInfoService activityInfoService;
-
     @Override
     public R senCommand(List<MqttDto> mqttDtos) {
-        for (MqttDto mqttDto : mqttDtos) {
-            JSONObject data = mqttDto.getPater().getData();
-            String type = data.getStr(LambdaUtils.getProperty(TaskEnum::getType));
-            //终止活动
-            if (type.equals(TaskEnum.ABORT.getType())) {
-                activityInfoService.abort(new ActivityInfoDto.Abort().setDeviceId(mqttDto.getDeviceId()));
-            }
-        }
         return R.ok();
     }
 
     @Override
     public R resultBack(MqttDto.ResultBack resultBack) {
-        return null;
+        return R.ok();
     }
 }

+ 28 - 2
device-api-service/src/main/java/com/xy/service/factory/TaskCmdServiceImpl.java

@@ -1,7 +1,14 @@
 package com.xy.service.factory;
 
+import cn.hutool.json.JSONObject;
+import com.xy.dto.ActivityInfoDto;
 import com.xy.dto.MqttDto;
+import com.xy.service.ActivityInfoService;
+import com.xy.utils.LambdaUtils;
 import com.xy.utils.R;
+import com.xy.utils.RedisService;
+import com.xy.utils.enums.TaskEnum;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -10,15 +17,34 @@ import java.util.List;
  * 任务指令 接口实现
  */
 @Service
+@RequiredArgsConstructor
 public class TaskCmdServiceImpl implements CmdService {
 
+    private final ActivityInfoService activityInfoService;
+
+    private final RedisService<String> redisService;
+
+    public static String deviceEnvKey = "env:%d";
+
     @Override
     public R senCommand(List<MqttDto> mqttDtos) {
-        return null;
+        for (MqttDto mqttDto : mqttDtos) {
+            JSONObject data = mqttDto.getPater().getData();
+            String type = data.getStr(LambdaUtils.getProperty(TaskEnum::getType));
+            //终止活动
+            if (type.equals(TaskEnum.ABORT.getType())) {
+                activityInfoService.abort(new ActivityInfoDto.Abort().setDeviceId(mqttDto.getDeviceId()));
+            }
+            //切换环境
+            if (type.equals(TaskEnum.ENV.getType())) {
+                redisService.set(String.format(deviceEnvKey, mqttDto.getDeviceId()), data.getStr("env"));
+            }
+        }
+        return R.ok();
     }
 
     @Override
     public R resultBack(MqttDto.ResultBack resultBack) {
-        return null;
+        return R.ok();
     }
 }

+ 3 - 0
device-api-service/src/main/java/com/xy/utils/enums/DictEnum.java

@@ -24,9 +24,12 @@ public enum DictEnum {
     DEVICE_QR_CODE("device_qr_code", "设备-二维码参数"),
 
     DEVICE_ONLINE_STATUS("device_online_status", "设备-联网状态"),
+
     DEVICE_BUSY_STATUS("device_busy_status", "设备-运营状态"),
 
+    ENV("env", "环境标识"),
 
+    ENV_PARAMS("env_params", "环境参数"),
     ;
 
     private String key;

+ 4 - 0
device-api-service/src/main/java/com/xy/utils/enums/DictSonEnum.java

@@ -48,6 +48,10 @@ public enum DictSonEnum {
 
     DEVICE_ONLINE_STATUS_2("2", "设备-联网状态-离线"),
 
+    ENV_UAT("uat", "环境标识-测试环境"),
+
+    ENV_PROD("prod", "环境标识-生产环境"),
+
     ;
 
     private String key;

+ 1 - 0
device-api-service/src/main/java/com/xy/utils/enums/TaskEnum.java

@@ -12,6 +12,7 @@ public enum TaskEnum {
 
     ABORT("abort", "活动终止指令"),
 
+    ENV("env", "切换环境"),
 
     ;
 

+ 6 - 3
device-api/src/main/java/com/xy/dto/MqttUserDto.java

@@ -65,13 +65,16 @@ public class MqttUserDto {
         @ApiModelProperty("订阅topic")
         private String topic;
 
-        @ApiModelProperty("连接地址")
-        private String ipAddress;
-
+        @ApiModelProperty("系统当前时间")
         private Long serverTime;
 
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         private LocalDateTime created;
 
+        @ApiModelProperty("连接地址")
+        private String ipAddress;
+
+        @ApiModelProperty("服务地址")
+        private String serverUrl;
     }
 }