diff --git a/pom.xml b/pom.xml
index 8697cef..5d20beb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,45 +1,64 @@
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 3.0.6
-
-
- cn.org.bjca.trust.java
- ImServer
- 0.0.1-SNAPSHOT
- ImServer
- ImServer
-
- 17
-
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-devtools
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+ 4.0.0
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.0.6
+
+
+ cn.org.bjca.trust.java
+ ImServer
+ 0.0.1-SNAPSHOT
+ ImServer
+ ImServer
+
+ 17
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-devtools
+
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.24
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java b/src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java
index fbde7e8..b304976 100644
--- a/src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java
@@ -2,7 +2,9 @@ package cn.org.bjca.trust.java.imserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
+@EnableJpaAuditing
@SpringBootApplication
public class ImServerApplication {
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java b/src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java
index daad7f7..a04a5f8 100644
--- a/src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java
@@ -1,5 +1,11 @@
package cn.org.bjca.trust.java.imserver.controller;
+import cn.org.bjca.trust.java.imserver.entitys.Message;
+import cn.org.bjca.trust.java.imserver.entitys.UserInfo;
+import cn.org.bjca.trust.java.imserver.entitys.message.TextMessage;
+import cn.org.bjca.trust.java.imserver.repository.MessageRepository;
+import cn.org.bjca.trust.java.imserver.repository.UserRepository;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -8,9 +14,18 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("hello")
public class HelloController {
+ @Autowired
+ private MessageRepository messageRepository;
+
@GetMapping("/{id}")
public String getById(@PathVariable String id) throws Exception {
System.out.println("id ==> " + id);
+ Message message = new Message();
+ message.setType("111");
+ TextMessage textMessage = new TextMessage();
+ textMessage.setText("ssss");
+ message.setTextMessage(textMessage);
+ messageRepository.save(message);
return "{\"msg\":\"qdxorigin\",\"code\":200,\"data\":\"Sbfuiaefhaikufhcsauik\"}";
}
}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java
index fc692a7..626a498 100644
--- a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java
@@ -1,8 +1,6 @@
package cn.org.bjca.trust.java.imserver.controller.user.v1;
-import cn.org.bjca.trust.java.imserver.entitys.DeviceEntity;
-
public class LoginBean {
private String userId;
private String userSig;
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java
index ec41a1e..1c4695c 100644
--- a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java
@@ -4,16 +4,16 @@ public class LoginData {
private String host;
private String port;
private String clientId;
- private String sign;
+ private String token;
public LoginData() {
}
- public LoginData(String host, String port, String clientId, String sign) {
+ public LoginData(String host, String port, String clientId, String token) {
this.host = host;
this.port = port;
this.clientId = clientId;
- this.sign = sign;
+ this.token = token;
}
public String getHost() {
@@ -40,11 +40,11 @@ public class LoginData {
this.clientId = clientId;
}
- public String getSign() {
- return sign;
+ public String getToken() {
+ return token;
}
- public void setSign(String sign) {
- this.sign = sign;
+ public void setToken(String token) {
+ this.token = token;
}
}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java
index 0c3abf1..490ceef 100644
--- a/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java
@@ -1,23 +1,83 @@
package cn.org.bjca.trust.java.imserver.controller.user.v1;
import cn.org.bjca.trust.java.imserver.HttpResult;
+import cn.org.bjca.trust.java.imserver.entitys.UserInfo;
+import cn.org.bjca.trust.java.imserver.repository.UserRepository;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.UUID;
+
@RestController
@RequestMapping("user/v1")
public class UserV1Controller {
@Autowired
private HttpServletRequest request;
+ @Autowired
+ private UserRepository userRepository;
@PostMapping("/login")
public HttpResult getById(@RequestBody LoginBean user, @RequestHeader HttpHeaders headers) throws Exception {
- System.out.println(headers.toString());
- System.out.println(headers.getFirst("appid"));
+ String appid = headers.getFirst("appid");
+ String userid = headers.getFirst("userid");
+ String ostype = headers.getFirst("ostype");
+ requestByGetAndParams("http://114.115.203.60:15672/api/vhosts/"+appid, "");
+ if (null != appid && null != userid && null != ostype) {
+ UserInfo userInfo = userRepository.findUserInfoByUserIdAndOsTypeAndAppId(userid, ostype, appid);
+ if (null == userInfo) {
+ System.out.println("-----------------用户不存在------------------");
+ userInfo = new UserInfo();
+ userInfo.setUserId(userid);
+ userInfo.setUserName(UUID.randomUUID().toString());
+ userInfo.setAppId(appid);
+ userInfo.setOsType(ostype);
+ userInfo.setPassword(UUID.randomUUID().toString());
+ userRepository.save(userInfo);
+
+ requestByGetAndParams("http://114.115.203.60:15672/api/users/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"password\":\"" + userInfo.getPassword() + "\",\"tags\":\"\"}");
+ requestByGetAndParams("http://114.115.203.60:15672/api/permissions/%2F/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
+ requestByGetAndParams("http://114.115.203.60:15672/api/permissions/" + appid + "/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"configure\":\".*\",\"write\":\".*\",\"read\":\".*\"}");
+ requestByGetAndParams("http://114.115.203.60:15672/api/topic-permissions/" + appid + "/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
+
+ }
+
+ return new HttpResult<>(200, "成功", new LoginData("114.115.203.60", "18883", userInfo.getUserName(), userInfo.getPassword()));
+ } else {
+ return new HttpResult<>(201, "参数错误", new LoginData());
+ }
+
+ }
- return new HttpResult<>(200, "成功", new LoginData("114.115.203.60", "18883", user.getUserId(), user.getUserSig()));
+ private void requestByGetAndParams(String requestUrl, String param) throws Exception {
+ System.out.println(requestUrl + ":\n" + param);
+ URL url = new URL(requestUrl);
+ HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
+ //设置请求方式,请求参数类型
+ httpURLConnection.setRequestMethod("PUT");
+ httpURLConnection.setRequestProperty("content-type", "application/json;charset=UTF-8");
+ httpURLConnection.setRequestProperty("Authorization", "Basic YWRtaW46YWRtaW4=");
+ httpURLConnection.setDoOutput(true);
+ OutputStream outputStream = httpURLConnection.getOutputStream();
+ //将参数写入输出流,param必须是JSON格式
+ outputStream.write(param.getBytes());
+ outputStream.flush();
+ InputStream inputStream = httpURLConnection.getInputStream();
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ byte[] bytes = new byte[1024];
+ int len = 0;
+ while ((len = inputStream.read(bytes)) >= 0) {
+ bout.write(bytes, 0, len);
+ }
+ inputStream.close();
+ bout.close();
+ bout.toByteArray();
}
}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java
new file mode 100644
index 0000000..1e982e1
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java
@@ -0,0 +1,34 @@
+package cn.org.bjca.trust.java.imserver.entitys;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import java.time.LocalDateTime;
+
+/**
+ * 所有类的超类
+ * 自动更新创建时间和更新时间
+ *
+ * @author peter
+ *
+ **/
+@MappedSuperclass
+@EntityListeners(value = AuditingEntityListener.class)
+@Getter
+@Setter
+public abstract class AbstractBaseTimeEntity {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long _id;
+
+ @CreatedDate
+ @Column(nullable = false, updatable = false)
+ private LocalDateTime createTime;
+ @LastModifiedDate
+ @Column()
+ private LocalDateTime updateTime;
+}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java
new file mode 100644
index 0000000..bcb4a8d
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java
@@ -0,0 +1,17 @@
+package cn.org.bjca.trust.java.imserver.entitys;
+
+import cn.org.bjca.trust.java.imserver.entitys.message.TextMessage;
+import jakarta.persistence.Entity;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
+import lombok.Data;
+
+@Entity
+@Data
+public class Message extends AbstractBaseTimeEntity{
+ private String type;
+ @OneToOne
+ @JoinColumn(name="text_id",referencedColumnName="_id")
+ private TextMessage textMessage;
+}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java
new file mode 100644
index 0000000..63a8930
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java
@@ -0,0 +1,21 @@
+package cn.org.bjca.trust.java.imserver.entitys;
+
+
+import jakarta.persistence.*;
+import lombok.Data;
+
+@Entity
+@Table(name = "user")
+@Data
+public class UserInfo extends AbstractBaseTimeEntity {
+ private String userId;
+ private String userName;
+ private String password;
+ private String appId;
+ private String osType;
+ private String nickName;
+ private String faceUrl;
+ private String gender;
+
+
+}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java
new file mode 100644
index 0000000..94031ac
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java
@@ -0,0 +1,15 @@
+package cn.org.bjca.trust.java.imserver.entitys.message;
+
+import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity;
+import cn.org.bjca.trust.java.imserver.entitys.Message;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
+import lombok.Data;
+
+@Entity
+@Data
+public class TextMessage extends AbstractBaseTimeEntity {
+ private String text;
+ @OneToOne(mappedBy="textMessage")
+ private Message message;
+}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java b/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java
new file mode 100644
index 0000000..50c1364
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java
@@ -0,0 +1,11 @@
+package cn.org.bjca.trust.java.imserver.repository;
+
+import cn.org.bjca.trust.java.imserver.entitys.Message;
+import cn.org.bjca.trust.java.imserver.entitys.UserInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface MessageRepository extends JpaRepository {
+
+}
diff --git a/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java b/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java
new file mode 100644
index 0000000..21c65b3
--- /dev/null
+++ b/src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java
@@ -0,0 +1,12 @@
+package cn.org.bjca.trust.java.imserver.repository;
+
+import cn.org.bjca.trust.java.imserver.entitys.UserInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface UserRepository extends JpaRepository {
+
+ UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId);
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 40325f4..531b178 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1 +1,16 @@
server.port=4561
+
+#????????????
+spring.jpa.hibernate.ddl-auto=update
+#mysql?????????????
+spring.datasource.url = jdbc:mysql://114.115.203.60:3306/szyx-im?serverTimezone=Asia/Shanghai
+#??????
+spring.datasource.username = szyx-im
+#?????
+spring.datasource.password = nGFYwCMYMNELCeRp
+#mysql???????????
+spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver
+#jpa?????????Hibernate?sql(??)
+spring.jpa.show-sql = true
+#???????Thymeleaf ???
+spring.thymeleaf.cache = false