创建租户,创建应用

这个提交包含在:
xuqm 2023-05-19 18:27:38 +08:00
父节点 9331387b37
当前提交 96da12992b
共有 10 个文件被更改,包括 258 次插入49 次删除

查看文件

@ -0,0 +1,34 @@
package cn.org.bjca.trust.java.imserver.common;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class RabbitMQHelper {
public static 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();
}
}

查看文件

@ -0,0 +1,81 @@
package cn.org.bjca.trust.java.imserver.common;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class TimeHelper {
/**
* 获取当前时间戳
*
* @return 时间戳
*/
public static long getTimeMillis() {
return System.currentTimeMillis();
}
/**
* 获取当前时间指定返回样式
*
* @param formats 指定样式
* @return 时间字符串
*/
public static String getTimeString(String formats) {
return getStringFormMillis(System.currentTimeMillis(), formats);
}
/**
* 根据给定时间戳和样式返回字符串
*
* @param millis 时间戳
* @param formats 指定字符串格式
* @return 时间字符串
*/
public static String getStringFormMillis(long millis, String formats) {
Date date = new Date(millis);
return new SimpleDateFormat(formats, Locale.getDefault()).format(date);
}
/**
* 根据Date 返回指定格式的时字符串
*
* @param date 数据
* @param formats 格式
* @return 指定格式的字符串
*/
public static String getStringFromDate(Date date, String formats) {
SimpleDateFormat formatter = new SimpleDateFormat(formats, Locale.getDefault());
return formatter.format(date);
}
/**
* 根据给定字符串和格式获取时间戳
*
* @param dateString 时间字符串
* @param formats 时间格式
* @return 时间戳
*/
public static long getTimeMillisForType(String dateString, String formats) {
SimpleDateFormat format = new SimpleDateFormat(formats, Locale.getDefault());
Date date = null;
try {
date = format.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
return date != null ? date.getTime() : 0;
}
/**
* 获取以秒为单位的时间戳
*
* @return
*/
public static long getTimeFromSecond() {
return getTimeMillis() / 1000;
}
}

查看文件

@ -1,11 +1,5 @@
package cn.org.bjca.trust.java.imserver.controller; 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.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@ -14,18 +8,10 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping("hello") @RequestMapping("hello")
public class HelloController { public class HelloController {
@Autowired
private MessageRepository messageRepository;
@GetMapping("/{id}") @GetMapping("/{id}")
public String getById(@PathVariable String id) throws Exception { public String getById(@PathVariable String id) throws Exception {
System.out.println("id ==> " + id); 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\"}"; return "{\"msg\":\"qdxorigin\",\"code\":200,\"data\":\"Sbfuiaefhaikufhcsauik\"}";
} }
} }

查看文件

@ -0,0 +1,71 @@
package cn.org.bjca.trust.java.imserver.controller.sys.v1;
import cn.org.bjca.trust.java.imserver.HttpResult;
import cn.org.bjca.trust.java.imserver.common.RabbitMQHelper;
import cn.org.bjca.trust.java.imserver.common.TimeHelper;
import cn.org.bjca.trust.java.imserver.entitys.sys.ApplicationEntity;
import cn.org.bjca.trust.java.imserver.entitys.sys.TenantEntity;
import cn.org.bjca.trust.java.imserver.repository.tenant.ApplicationRepository;
import cn.org.bjca.trust.java.imserver.repository.tenant.TenantRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Random;
@RestController
@RequestMapping("tenant/v1")
public class TenantV1Controller {
@Autowired
private TenantRepository tenantRepository;
@Autowired
private ApplicationRepository applicationRepository;
@PostMapping("/tenant/create")
public HttpResult<String> tenantCreate(@RequestBody TenantEntity tenant) throws Exception {
if (null == tenant.getTenantName() ||
null == tenant.getUserPhone() ||
null == tenant.getUserEmail() ||
null == tenant.getUserName()) {
return new HttpResult<>(201, "参数错误", "");
} else {
TenantEntity t = tenantRepository.findFirstByUserEmailOrUserPhone(tenant.getUserEmail(), tenant.getUserPhone());
if (null != t) return new HttpResult<>(201, "当前联系人已注册", "");
t = new TenantEntity();
t.setTenantName(tenant.getTenantName());
t.setUserEmail(tenant.getUserEmail());
t.setUserName(tenant.getUserName());
t.setUserPhone(tenant.getUserPhone());
t.setTenantNo(TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000));
tenantRepository.save(t);
// RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/vhosts/" + appid, "");
return new HttpResult<>(200, "创建成功", "创建成功");
}
}
@PostMapping("/app/create")
public HttpResult<String> appCreate(@RequestBody ApplicationEntity application) throws Exception {
if (null == application.getAppName() ||
null == application.getTenantNo()) {
return new HttpResult<>(201, "参数错误", "");
} else {
ApplicationEntity app = applicationRepository.findFirstByAppNameAndTenantNo(application.getAppName(), application.getTenantNo());
if (null != app) return new HttpResult<>(201, "已创建相关类型的同名应用", "");
app = new ApplicationEntity();
app.setTenantNo(application.getTenantNo());
app.setAppName(application.getAppName());
app.setAppId(TimeHelper.getTimeString("yyyyMMddHHmm") + (new Random().nextInt(899999999) + 100000000));
applicationRepository.save(app);
RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/vhosts/" + app.getAppId(), "");
return new HttpResult<>(200, "创建成功", "创建成功");
}
}
}

查看文件

@ -1,18 +1,16 @@
package cn.org.bjca.trust.java.imserver.controller.user.v1; 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.HttpResult;
import cn.org.bjca.trust.java.imserver.common.RabbitMQHelper;
import cn.org.bjca.trust.java.imserver.entitys.UserInfo; import cn.org.bjca.trust.java.imserver.entitys.UserInfo;
import cn.org.bjca.trust.java.imserver.entitys.sys.ApplicationEntity;
import cn.org.bjca.trust.java.imserver.repository.UserRepository; import cn.org.bjca.trust.java.imserver.repository.UserRepository;
import cn.org.bjca.trust.java.imserver.repository.tenant.ApplicationRepository;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*; 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; import java.util.UUID;
@RestController @RestController
@ -23,14 +21,19 @@ public class UserV1Controller {
private HttpServletRequest request; private HttpServletRequest request;
@Autowired @Autowired
private UserRepository userRepository; private UserRepository userRepository;
@Autowired
private ApplicationRepository applicationRepository;
@PostMapping("/login") @PostMapping("/login")
public HttpResult<LoginData> getById(@RequestBody LoginBean user, @RequestHeader HttpHeaders headers) throws Exception { public HttpResult<LoginData> login(@RequestBody LoginBean user, @RequestHeader HttpHeaders headers) throws Exception {
String appid = headers.getFirst("appid"); String appid = headers.getFirst("appid");
String userid = headers.getFirst("userid"); String userid = headers.getFirst("userid");
String ostype = headers.getFirst("ostype"); String ostype = headers.getFirst("ostype");
requestByGetAndParams("http://114.115.203.60:15672/api/vhosts/"+appid, "");
if (null != appid && null != userid && null != ostype) { if (null != appid && null != userid && null != ostype) {
ApplicationEntity app = applicationRepository.findFirstByAppId(appid);
if (null == app) return new HttpResult<>(201, "appId不存在", new LoginData());
UserInfo userInfo = userRepository.findUserInfoByUserIdAndOsTypeAndAppId(userid, ostype, appid); UserInfo userInfo = userRepository.findUserInfoByUserIdAndOsTypeAndAppId(userid, ostype, appid);
if (null == userInfo) { if (null == userInfo) {
System.out.println("-----------------用户不存在------------------"); System.out.println("-----------------用户不存在------------------");
@ -42,10 +45,10 @@ public class UserV1Controller {
userInfo.setPassword(UUID.randomUUID().toString()); userInfo.setPassword(UUID.randomUUID().toString());
userRepository.save(userInfo); userRepository.save(userInfo);
requestByGetAndParams("http://114.115.203.60:15672/api/users/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"password\":\"" + userInfo.getPassword() + "\",\"tags\":\"\"}"); RabbitMQHelper.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\":\".*\"}"); RabbitMQHelper.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\":\".*\"}"); RabbitMQHelper.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\":\".*\"}"); RabbitMQHelper.requestByGetAndParams("http://114.115.203.60:15672/api/topic-permissions/" + appid + "/" + userInfo.getUserName(), "{\"username\":\"" + userInfo.getUserName() + "\",\"vhost\":\"" + appid + "\",\"exchange\":\"\",\"write\":\".*\",\"read\":\".*\"}");
} }
@ -56,28 +59,4 @@ public class UserV1Controller {
} }
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();
}
} }

查看文件

@ -0,0 +1,16 @@
package cn.org.bjca.trust.java.imserver.entitys.sys;
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.Data;
@Entity
@Table(name = "applications")
@Data
public class ApplicationEntity extends AbstractBaseTimeEntity {
private String appId;
private String appName;
private String tenantNo;
private String userId;
}

查看文件

@ -0,0 +1,18 @@
package cn.org.bjca.trust.java.imserver.entitys.sys;
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import lombok.Data;
@Entity
@Table(name = "tenant")
@Data
public class TenantEntity extends AbstractBaseTimeEntity {
private String tenantNo;
private String tenantName;
private String userId;
private String userName;
private String userPhone;
private String userEmail;
}

查看文件

@ -0,0 +1,11 @@
package cn.org.bjca.trust.java.imserver.repository.tenant;
import cn.org.bjca.trust.java.imserver.entitys.sys.ApplicationEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ApplicationRepository extends JpaRepository<ApplicationEntity, Long> {
ApplicationEntity findFirstByAppNameAndTenantNo(String appName, String tenantNo);
ApplicationEntity findFirstByAppId(String appId);
}

查看文件

@ -0,0 +1,11 @@
package cn.org.bjca.trust.java.imserver.repository.tenant;
import cn.org.bjca.trust.java.imserver.entitys.sys.TenantEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface TenantRepository extends JpaRepository<TenantEntity, Long> {
TenantEntity findFirstByUserEmailOrUserPhone(String userEmail, String userPhone);
}

查看文件

@ -0,0 +1,2 @@
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call