فهرست منبع

果昔独立部署

lijin 1 روز پیش
والد
کامیت
96d8059aef

+ 46 - 2
device-api-service/src/main/java/com/xy/service/DeviceAnnualFeeServiceImpl.java

@@ -303,9 +303,9 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
                                 }
                                 SysDictRedis sysDictRedis = stringSysDictRedisMap.get(String.valueOf(deviceAnnualFee.getMercId()));
                                 JSONObject obj = JSONUtil.parseObj(sysDictRedis.getValue());
-                                String url = obj.getStr("device_send_url");
+                                String url = obj.getStr("domain");
                                 JSONObject jsonObject = jsonObjects.get(deviceId);
-                                JSONObject result = send(url, jsonObject, "发送设备数据到商家平台");
+                                JSONObject result = send(url + "/device/device-annual-fee/receiveDeviceInfo", jsonObject, "发送设备数据到商家平台");
                                 //修改设备年费注册信息
                                 if (result.getInt("code") == 200) {
                                     deviceAnnualFee.setRegisterStatus(true)
@@ -435,6 +435,50 @@ public class DeviceAnnualFeeServiceImpl extends ServiceImpl<DeviceAnnualFeeMappe
                 });
     }
 
+    @PostMapping("evn")
+    @ApiOperation("切换环境")
+    public R evn(@RequestBody @Validated DeviceAnnualFeeDto.Evn evn) {
+        DeviceInfo deviceInfo = deviceInfoService.getById(evn.getDeviceId());
+        Map<String, SysDictRedis> stringSysDictRedisMap = SysDictUtils.get("merc_device_annual_fee");
+        SysDictRedis sysDictRedis = stringSysDictRedisMap.get(String.valueOf(deviceInfo.getMercId()));
+        JSONObject obj = JSONUtil.parseObj(sysDictRedis.getValue());
+        //切换到商家系统
+        if (evn.getType() == 2) {
+            Map<String, SysDictRedis> map = SysDictUtils.get("mqtt_cmd_templet_task");
+            //发送环境切换指令
+            JSONObject env = JSONUtil.parseObj(map.get("env").getValue());
+            JSONObject data = env.getJSONObject("data")
+                    .set("env", obj.getStr("env"));
+            env.set("data", data);
+            CommandMqtt commandMqtt = new CommandMqtt()
+                    .setDeviceId(evn.getDeviceId())
+                    .setTemplet(env);
+            mqttService.senCommand(Collections.singletonList(commandMqtt));
+        }
+        //切换到兴元系统
+        if (evn.getType() == 1) {
+            String url = obj.getStr("domain");
+            HttpUtils.send(url + "/device/device-annual-fee/evnXy", new JSONObject().set("deviceId", deviceInfo.getDeviceId()), "切换到兴元系统");
+        }
+        return R.ok();
+    }
+
+    @PostMapping("evnXy")
+    @ApiOperation("切换环境到兴元(无token)")
+    public R evnXy(@RequestBody DeviceAnnualFeeDto.Evn evn) {
+        //发送环境切换指令
+        Map<String, SysDictRedis> map = SysDictUtils.get("mqtt_cmd_templet_task");
+        JSONObject env = JSONUtil.parseObj(map.get("env").getValue());
+        JSONObject data = env.getJSONObject("data")
+                .set("env", "prod");
+        env.set("data", data);
+        CommandMqtt commandMqtt = new CommandMqtt()
+                .setDeviceId(evn.getDeviceId())
+                .setTemplet(env);
+        mqttService.senCommand(Collections.singletonList(commandMqtt));
+        return R.ok();
+    }
+
     private JSONObject send(String url, JSONObject params, String msg) {
         return send(url, params, msg, 5000);
     }

+ 48 - 0
device-api-service/src/main/java/com/xy/utils/HttpUtils.java

@@ -0,0 +1,48 @@
+package com.xy.utils;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.xy.error.CommRuntimeException;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.Map;
+
+@Slf4j
+public class HttpUtils {
+
+    public static JSONObject send(String url, JSONObject params, String msg) {
+        return request(url, params.toString(), msg, null);
+    }
+
+    public static JSONObject send(String url, JSONObject params, String msg, Map<String, String> headers) {
+        return request(url, params.toString(), msg, headers);
+    }
+
+    public static JSONObject send(String url, String body, String msg) {
+        return request(url, body, msg, null);
+    }
+
+    public static JSONObject send(String url, String body, String msg, Map<String, String> headers) {
+        return request(url, body, msg, headers);
+    }
+
+    private static JSONObject request(String url, String body, String msg, Map<String, String> headers) {
+        log.info("{}请求参数:{}", msg, body);
+        String result = HttpRequest.post(url)
+                .body(body)
+                .addHeaders(headers)
+                .timeout(5000)
+                .execute()
+                .body();
+        log.info("{}响应参数:{}", msg, result);
+        JSONObject jsonObject;
+        try {
+            jsonObject = JSONUtil.parseObj(result);
+        } catch (Exception e) {
+            throw new CommRuntimeException(msg + "失败");
+        }
+        return jsonObject;
+    }
+
+}

+ 14 - 0
device-api/src/main/java/com/xy/dto/DeviceAnnualFeeDto.java

@@ -65,6 +65,20 @@ public class DeviceAnnualFeeDto {
 
     }
 
+    @Data
+    @Accessors(chain = true)
+    public static class Evn {
+
+        @NotNull(message = "deviceId不能为空")
+        @ApiModelProperty(value = "设备ID", required = true)
+        private Long deviceId;
+
+        @NotNull(message = "type不能为空")
+        @ApiModelProperty(value = "类型 1=兴元系统 2=商家系统", required = true)
+        private Integer type;
+
+    }
+
     @Data
     @Accessors(chain = true)
     public static class Vo {