Browse Source

登录区分虚拟服务器

master
xuqm 1 year ago
parent
commit
9331387b37
13 changed files with 271 additions and 52 deletions
  1. +59
    -40
      pom.xml
  2. +2
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java
  3. +15
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java
  4. +0
    -2
      src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java
  5. +7
    -7
      src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java
  6. +63
    -3
      src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java
  7. +34
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java
  8. +17
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java
  9. +21
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java
  10. +15
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java
  11. +11
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java
  12. +12
    -0
      src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java
  13. +15
    -0
      src/main/resources/application.properties

+ 59
- 40
pom.xml View File

@@ -1,45 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.org.bjca.trust.java</groupId>
<artifactId>ImServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ImServer</name>
<description>ImServer</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.org.bjca.trust.java</groupId>
<artifactId>ImServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ImServer</name>
<description>ImServer</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入热部署依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- 数据库 -->
<!-- Spring Data JPA 依赖(重要) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- MySQL 驱动(重要) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

+ 2
- 0
src/main/java/cn/org/bjca/trust/java/imserver/ImServerApplication.java View File

@@ -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 {



+ 15
- 0
src/main/java/cn/org/bjca/trust/java/imserver/controller/HelloController.java View File

@@ -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\"}";
}
}

+ 0
- 2
src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginBean.java View File

@@ -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;


+ 7
- 7
src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/LoginData.java View File

@@ -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;
}
}

+ 63
- 3
src/main/java/cn/org/bjca/trust/java/imserver/controller/user/v1/UserV1Controller.java View File

@@ -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<LoginData> 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();
}
}

+ 34
- 0
src/main/java/cn/org/bjca/trust/java/imserver/entitys/AbstractBaseTimeEntity.java View File

@@ -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;
}

+ 17
- 0
src/main/java/cn/org/bjca/trust/java/imserver/entitys/Message.java View File

@@ -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;
}

+ 21
- 0
src/main/java/cn/org/bjca/trust/java/imserver/entitys/UserInfo.java View File

@@ -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;


}

+ 15
- 0
src/main/java/cn/org/bjca/trust/java/imserver/entitys/message/TextMessage.java View File

@@ -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;
}

+ 11
- 0
src/main/java/cn/org/bjca/trust/java/imserver/repository/MessageRepository.java View File

@@ -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<Message,Long> {

}

+ 12
- 0
src/main/java/cn/org/bjca/trust/java/imserver/repository/UserRepository.java View File

@@ -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,Long> {

UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId);
}

+ 15
- 0
src/main/resources/application.properties View File

@@ -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

Loading…
Cancel
Save