diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java index a17102f..865176a 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/AdminClientAppmqttserverApplication.java @@ -1,6 +1,7 @@ package com.rehome.adminclientappmqttserver; import com.rehome.adminclientappmqttserver.controller.UserController; +import com.rehome.adminclientappmqttserver.controller.UserDywController; import com.rehome.adminclientappmqttserver.controller.UseryfController; import com.rehome.adminclientappmqttserver.controller.UserzyController; import org.mybatis.spring.annotation.MapperScan; @@ -33,7 +34,7 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A /** 后台接口自动导入 */ - @Autowired + @Resource private UserController userController; /** 后台接口自动导入 @@ -46,6 +47,12 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A @Resource private UserzyController userzyController; + /** + 后台接口自动导入 + */ + @Resource + private UserDywController userDywController; + public static void main(String[] args) { SpringApplication.run(AdminClientAppmqttserverApplication.class, args); } @@ -59,10 +66,10 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A //在这里可以调用applicationContext了 Map controllers = applicationContext.getBeansWithAnnotation(RequestMapping.class); Gson gson = new Gson(); -// for (Map.Entry entry : controllers.entrySet()) { -// System.out.println("------------------------"); -// System.out.println(entry.getKey());//demo1Controller -// } + for (Map.Entry entry : controllers.entrySet()) { + System.out.println("------------------------"); + System.out.println(entry.getKey());//demo1Controller + } try { //珠海电厂 if (userController != null) { @@ -96,6 +103,15 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A } else { System.out.println("UserzyController is empty"); } + //大亚湾综合能源 电厂 + if (userDywController != null) { + System.out.println("------------------------"); + System.out.println("UserDywController is not empty"); + MqttRSAClientDywAPP client_dyw = new MqttRSAClientDywAPP(); + client_dyw.start(userDywController); + } else { + System.out.println("UserDywController is empty"); + } } catch (Exception ex) { ex.printStackTrace(); } diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientDywAPP.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientDywAPP.java new file mode 100644 index 0000000..449e233 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/MqttRSAClientDywAPP.java @@ -0,0 +1,167 @@ +package com.rehome.adminclientappmqttserver; + + + +import com.google.gson.Gson; +import com.rehome.adminclientappmqttserver.controller.UserDywController; +import com.rehome.adminclientappmqttserver.entity.Userdyw; +import com.rehome.adminclientappmqttserver.utils.MqttSSLSocketFactory; +import com.rehome.adminclientappmqttserver.utils.UUIDUtil; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import javax.net.ssl.SSLSocketFactory; +import java.io.InputStream; +import java.util.Timer; +import java.util.TimerTask; + + +public class MqttRSAClientDywAPP { + /** + * 代理服务器ip地址 + */ + public static final String MQTT_BROKER_HOST = "ssl://47.242.184.139:8883"; + + /** + * 客户端唯一标识 + */ + public static String MQTT_CLIENT_ID = "AppServer_disruptor_nmc_server_04"; + + /** + *帐号 + */ + public static String USERNAME = "admin"; + /** + * 密码 + */ + public static String PASSWORD = "publish452131wW452131wW$"; + /** + * 订阅标识 + */ + public static String TOPIC_FILTER = "app_push_dyw"; + + private volatile static MqttClient mqttClient; + private static MqttConnectOptions options; + private static int qos = 2; + + + //定时器 + private Timer timer; + + public MqttRSAClientDywAPP(){ + try { + MQTT_CLIENT_ID = UUIDUtil.getUUID(); + // host为主机名,clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示, + // MemoryPersistence设置clientid的保存形式,默认为以内存保存 + mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence()); + // 配置参数信息 + options = new MqttConnectOptions(); + // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录, + // 这里设置为true表示每次连接到服务器都以新的身份连接 + options.setCleanSession(false); + // 设置用户名 + options.setUserName(USERNAME); + // 设置密码 + options.setPassword(PASSWORD.toCharArray()); + // 设置超时时间 单位为秒 + options.setConnectionTimeout(10); + // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 + options.setKeepAliveInterval(20); + //断线重连 + options.setAutomaticReconnect(true); + //mqtt服务器端单双向加密 + InputStream caCrtFile = this.getClass().getResourceAsStream("/sslHk/my_root_ca.crt"); + InputStream crtFile = this.getClass().getResourceAsStream("/sslHk/client.crt"); + InputStream keyFile = this.getClass().getResourceAsStream("/sslHk/client.key"); + String password = ""; + SSLSocketFactory socketFactory = MqttSSLSocketFactory.getTwoDirSocketFactory(caCrtFile,crtFile,keyFile,password); + options.setSocketFactory(socketFactory); + } catch (Exception e) { + e.printStackTrace(); + } + } + public void start(UserDywController userController) { + try { + // 连接 + mqttClient.connect(options); + // 订阅 + mqttClient.subscribe(TOPIC_FILTER,qos); + // 设置回调 + mqttClient.setCallback(new MqttCallbackExtended(){ + + @Override + public void connectionLost(Throwable throwable) { + System.out.println("connectionLost"); + try { + mqttClient.reconnect(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + @Override + public void messageArrived(String s, MqttMessage mqttMessage) { + System.out.println("topic:"+s); + System.out.println("Qos:"+mqttMessage.getQos()); + System.out.println("message RSA:"+new String(mqttMessage.getPayload())); + System.out.println("大亚湾电厂APP收到mqtt消息"); + try { + String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey); + System.out.println("message content:"+messageDe); + Gson gson = new Gson(); + + Userdyw userInfo = gson.fromJson(messageDe,Userdyw.class); + System.out.println(userInfo.getUsername()); + System.out.println(userInfo.getPassword()); + System.out.println(userInfo.getDate()); + System.out.println(userInfo.getImeinum()); + System.out.println(userInfo.getPhonemodel()); + System.out.println(userInfo.getSysversion()); + System.out.println(userInfo.getAppversion()); + userController.saveUser(userInfo); + }catch (Exception e){ + e.printStackTrace(); + } + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete()); + } + + @Override + public void connectComplete(boolean b, String s) { + //连接成功后调用 + try { + mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码 + } catch (MqttException e) { + e.printStackTrace(); + } + } + }); + + timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + System.out.println("-------设定要指定任务--------"); + try { + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!mqttClient.isConnected()) { + System.out.println("***** 没有连接到服务器 *****"); + System.out.println("***** client to connect *****"); + // 重新连接 + mqttClient.connect(options); + } + if (mqttClient.isConnected()) {//连接成功,跳出连接 + System.out.println("***** connect success *****"); + } + } catch (MqttException e1) { + e1.printStackTrace(); + } + } + }, 10000,10000); + // 设定指定的时间time,此处为10000毫秒 + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java index bae6312..cf881b1 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserController.java @@ -8,6 +8,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** *

* 前端控制器 @@ -20,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/user") public class UserController { - @Autowired + @Resource private UserService userService; public void saveUser(User user){ diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java new file mode 100644 index 0000000..a28b9b4 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserDywController.java @@ -0,0 +1,30 @@ +package com.rehome.adminclientappmqttserver.controller; + +import com.rehome.adminclientappmqttserver.entity.User; +import com.rehome.adminclientappmqttserver.entity.Userdyw; +import com.rehome.adminclientappmqttserver.service.UserService; +import com.rehome.adminclientappmqttserver.service.UserdywService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 前端控制器 亚湾综合能源 + * @author huangwenfei + * @since 2024-11-05 10:04 + */ +@RestController +@RequestMapping("/userDyw") +public class UserDywController { + + @Resource + private UserdywService userdywService; + + public void saveUser(Userdyw user){ + userdywService.saveByUsername(user); + } + +} diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UseryfController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UseryfController.java index cf48e30..3c65f93 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UseryfController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UseryfController.java @@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** *

* 前端控制器 @@ -19,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/useryf") public class UseryfController { - @Autowired + @Resource private UseryfService userYfService; public void saveUserYF(Useryf user){ diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java index 35b53db..c065a5c 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/controller/UserzyController.java @@ -9,6 +9,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** *

* 前端控制器 @@ -23,7 +25,7 @@ import org.springframework.web.bind.annotation.RestController; public class UserzyController { - @Autowired + @Resource private UserzyService userzyService; public void saveUserZY(Userzy user){ diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserdywRepository.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserdywRepository.java new file mode 100644 index 0000000..b287e7c --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/dao/UserdywRepository.java @@ -0,0 +1,11 @@ +package com.rehome.adminclientappmqttserver.dao; + + + +import com.rehome.adminclientappmqttserver.entity.Userdyw; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserdywRepository extends JpaRepository { + //方法名称必须要遵循驼峰式命名规则,findBy(关键字)+属性名称(首字母大写)+查询条件(首字母大写) + Userdyw findByUsername(String username); +} diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/User.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/User.java index 613ea8e..9be17c6 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/User.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/User.java @@ -10,10 +10,6 @@ import javax.persistence.EntityListeners; import javax.persistence.Id; /** - *

- * - *

- * * @author huangwenfei * @since 2021-08-17 */ diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userdyw.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userdyw.java new file mode 100644 index 0000000..91803ae --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/entity/Userdyw.java @@ -0,0 +1,41 @@ +package com.rehome.adminclientappmqttserver.entity; + +import java.io.Serializable; +import lombok.Data; +import org.hibernate.annotations.Proxy; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.Id; + +/** + * @author huangwenfei + * @since 2024-11-05 09:49 + */ +@EntityListeners(AuditingEntityListener.class) +@Proxy(lazy = false) +@Data +@Entity +public class Userdyw implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + private String username; + + private String password; + + private String date; + + @Column( length = 50) + private String imeinum; + + @Column( length = 100) + private String sysversion; + + private String phonemodel; + + private String appversion; + +} \ No newline at end of file diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserService.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserService.java index bc9dceb..0f7cb62 100644 --- a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserService.java +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserService.java @@ -13,6 +13,6 @@ import com.rehome.adminclientappmqttserver.entity.User; */ public interface UserService { - public void saveByUsername(User user); + void saveByUsername(User user); } diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserdywService.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserdywService.java new file mode 100644 index 0000000..34e34e1 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/UserdywService.java @@ -0,0 +1,17 @@ +package com.rehome.adminclientappmqttserver.service; + + +import com.rehome.adminclientappmqttserver.entity.Userdyw; + +/** + *

+ * 服务类 + *

+ * + * @author huangwenfei + * @since 2021-08-17 + */ + +public interface UserdywService { + void saveByUsername(Userdyw user); +} diff --git a/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserdywServiceImpl.java b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserdywServiceImpl.java new file mode 100644 index 0000000..208aef2 --- /dev/null +++ b/SpringCloud-Example/admin-client-appmqttserver/src/main/java/com/rehome/adminclientappmqttserver/service/impl/UserdywServiceImpl.java @@ -0,0 +1,26 @@ +package com.rehome.adminclientappmqttserver.service.impl; + +import com.rehome.adminclientappmqttserver.dao.UserdywRepository; +import com.rehome.adminclientappmqttserver.entity.Userdyw; +import com.rehome.adminclientappmqttserver.service.UserdywService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + +/** + * 服务实现类 大亚湾综合能源 + * @author huangwenfei + * @since 2024-11-05 09:56 + */ +@Service +@Transactional +public class UserdywServiceImpl implements UserdywService { + + @Resource + private UserdywRepository userdywRepository; + + @Override + public void saveByUsername(Userdyw user) { + this.userdywRepository.save(user); + } +}