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