@@ -0,0 +1,12 @@ | |||||
package cn.org.bjca.trust.java.imserver.bean.group; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
@Data | |||||
public class GroupCreateData { | |||||
private String groupName; | |||||
private String faceUrl; | |||||
private List<String> userIdList; | |||||
} |
@@ -1,16 +0,0 @@ | |||||
package cn.org.bjca.trust.java.imserver.common; | |||||
public class RequestManager { | |||||
private static final class RequestManagerHolder { | |||||
static final RequestManager instance = new RequestManager(); | |||||
} | |||||
public static RequestManager getInstance() { | |||||
return RequestManagerHolder.instance; | |||||
} | |||||
public void getHistoryForMsg(String appId, String userId, int pageSize, long timestamp){ | |||||
} | |||||
} |
@@ -0,0 +1,22 @@ | |||||
package cn.org.bjca.trust.java.imserver.controller.group.v1; | |||||
import cn.org.bjca.trust.java.imserver.HttpResult; | |||||
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData; | |||||
import cn.org.bjca.trust.java.imserver.common.json.GsonImplHelp; | |||||
import cn.org.bjca.trust.java.imserver.request.RequestManager; | |||||
import org.springframework.http.HttpHeaders; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.Group_create_v1; | |||||
@RestController | |||||
@RequestMapping("group/v1") | |||||
public class GroupV1Controller { | |||||
@PostMapping("/create") | |||||
public HttpResult<String> create(@RequestBody GroupCreateData groupCreateData, @RequestHeader HttpHeaders headers) throws Exception { | |||||
System.out.println(GsonImplHelp.get().toJson(groupCreateData)); | |||||
return RequestManager.getInstance().request(Group_create_v1, groupCreateData, headers); | |||||
} | |||||
} |
@@ -1,9 +1,9 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys; | package cn.org.bjca.trust.java.imserver.entitys; | ||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import jakarta.persistence.Entity; | import jakarta.persistence.Entity; | ||||
import lombok.Data; | import lombok.Data; | ||||
import org.springframework.lang.NonNull; | |||||
@Entity | @Entity | ||||
@Data | @Data | ||||
@@ -0,0 +1,33 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.StringListConverter; | |||||
import jakarta.persistence.Convert; | |||||
import jakarta.persistence.Entity; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
@Entity | |||||
@Data | |||||
public class GroupEntity extends AbstractBaseTimeEntity { | |||||
private String appId; | |||||
private String adminId; | |||||
private String userId; | |||||
private String groupId; | |||||
private String groupName; | |||||
private String faceUrl; | |||||
public GroupEntity() { | |||||
} | |||||
public GroupEntity(String appId, String adminId, String userId, String groupId, String groupName, String faceUrl) { | |||||
this.appId = appId; | |||||
this.adminId = adminId; | |||||
this.userId = userId; | |||||
this.groupId = groupId; | |||||
this.groupName = groupName; | |||||
this.faceUrl = faceUrl; | |||||
} | |||||
} |
@@ -1,6 +1,7 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys; | package cn.org.bjca.trust.java.imserver.entitys; | ||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntityNoKey; | |||||
import jakarta.persistence.*; | import jakarta.persistence.*; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -1,4 +1,4 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys; | |||||
package cn.org.bjca.trust.java.imserver.entitys.converter; | |||||
import jakarta.persistence.*; | import jakarta.persistence.*; | ||||
import lombok.Getter; | import lombok.Getter; |
@@ -1,4 +1,4 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys; | |||||
package cn.org.bjca.trust.java.imserver.entitys.converter; | |||||
import jakarta.persistence.*; | import jakarta.persistence.*; | ||||
import lombok.Getter; | import lombok.Getter; |
@@ -0,0 +1,25 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys.converter; | |||||
import jakarta.persistence.AttributeConverter; | |||||
import jakarta.persistence.Converter; | |||||
import java.util.Arrays; | |||||
import java.util.List; | |||||
import static java.util.Collections.*; | |||||
@Converter | |||||
public class StringListConverter implements AttributeConverter<List<String>, String> { | |||||
private static final String SPLIT_CHAR = "-><-"; | |||||
@Override | |||||
public String convertToDatabaseColumn(List<String> stringList) { | |||||
return stringList != null ? String.join(SPLIT_CHAR, stringList) : ""; | |||||
} | |||||
@Override | |||||
public List<String> convertToEntityAttribute(String string) { | |||||
return string != null ? Arrays.asList(string.split(SPLIT_CHAR)) : emptyList(); | |||||
} | |||||
} |
@@ -1,6 +1,6 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys.sys; | package cn.org.bjca.trust.java.imserver.entitys.sys; | ||||
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import jakarta.persistence.Entity; | import jakarta.persistence.Entity; | ||||
import jakarta.persistence.Table; | import jakarta.persistence.Table; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -1,6 +1,6 @@ | |||||
package cn.org.bjca.trust.java.imserver.entitys.sys; | package cn.org.bjca.trust.java.imserver.entitys.sys; | ||||
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import jakarta.persistence.Entity; | import jakarta.persistence.Entity; | ||||
import jakarta.persistence.Table; | import jakarta.persistence.Table; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -7,11 +7,13 @@ import cn.org.bjca.trust.java.imserver.enums.PacketType; | |||||
import cn.org.bjca.trust.java.imserver.im.bean.PacketMessage; | import cn.org.bjca.trust.java.imserver.im.bean.PacketMessage; | ||||
import cn.org.bjca.trust.java.imserver.im.msg.ConnectMessage; | import cn.org.bjca.trust.java.imserver.im.msg.ConnectMessage; | ||||
import cn.org.bjca.trust.java.imserver.im.msg.ConnectedMessage; | import cn.org.bjca.trust.java.imserver.im.msg.ConnectedMessage; | ||||
import cn.org.bjca.trust.java.imserver.im.msg.RequestMessage; | |||||
import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; | import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; | ||||
import cn.org.bjca.trust.java.imserver.im.msg.msg.SendAckMessage; | import cn.org.bjca.trust.java.imserver.im.msg.msg.SendAckMessage; | ||||
import cn.org.bjca.trust.java.imserver.repository.ConnectRepository; | import cn.org.bjca.trust.java.imserver.repository.ConnectRepository; | ||||
import cn.org.bjca.trust.java.imserver.repository.MessageRepository; | import cn.org.bjca.trust.java.imserver.repository.MessageRepository; | ||||
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.request.RequestManager; | |||||
import org.eclipse.paho.client.mqttv3.*; | import org.eclipse.paho.client.mqttv3.*; | ||||
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; | import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; | ||||
@@ -69,28 +71,30 @@ public class ImManager { | |||||
@Override | @Override | ||||
public void messageArrived(String topic, MqttMessage message) throws Exception { | public void messageArrived(String topic, MqttMessage message) throws Exception { | ||||
String msg = new String(message.getPayload()); | String msg = new String(message.getPayload()); | ||||
System.out.println("======>messageArrived:\n" + topic + "::" + msg); | |||||
if (topic.equals("server" + PacketType.CONNECT)) { | if (topic.equals("server" + PacketType.CONNECT)) { | ||||
sendConnectedMsg(GsonImplHelp.get().toObject(msg, ConnectMessage.class)); | sendConnectedMsg(GsonImplHelp.get().toObject(msg, ConnectMessage.class)); | ||||
} else if (topic.equals("server" + PacketType.SEND)) { | } else if (topic.equals("server" + PacketType.SEND)) { | ||||
SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class); | SZYXMessage szyxMessage = GsonImplHelp.get().toObject(msg, SZYXMessage.class); | ||||
SZYXMessage message1 = szyxMessage.copy(); | |||||
szyxMessage.setStatus(0); | |||||
szyxMessage.setFromClientId(szyxMessage.getFromClient().getUserId()); | |||||
try { | try { | ||||
messageRepository.save(message1); | |||||
messageRepository.save(szyxMessage.copy()); | |||||
} catch (Exception e) { | } catch (Exception e) { | ||||
System.out.println("--------------" + e.getMessage()); | System.out.println("--------------" + e.getMessage()); | ||||
} | } | ||||
if (!szyxMessage.isGroup()) { | |||||
// List<UserInfo> userInfoList = userRepository.findAllByUserIdAndAppId(szyxMessage.getToClientId(), szyxMessage.getAppId()); | |||||
// for (UserInfo userInfo : userInfoList) { | |||||
message1.setUserName(szyxMessage.getToClientId()); | |||||
message1.setArrive(true); | |||||
message1.setStatus(0); | |||||
// sendPacketMessage(szyxMessage.getPacketType(), message1); | |||||
// } | |||||
SZYXMessage message1 = szyxMessage.copy(); | |||||
message1.setArrive(true); | |||||
message1.setStatus(1); | |||||
if (szyxMessage.isGroup()) { | |||||
} else { | |||||
message1.setUserName(message1.getToClientId()); | |||||
try { | |||||
messageRepository.save(message1); | |||||
} catch (Exception e) { | |||||
System.out.println("--------------" + e.getMessage()); | |||||
} | |||||
sendPacketMessage(szyxMessage.getPacketType(), message1); | sendPacketMessage(szyxMessage.getPacketType(), message1); | ||||
} | } | ||||
// TODO: 这里应该有计时器,判断转发消息是否送达,如果没送达则ack返回失败状态 | // TODO: 这里应该有计时器,判断转发消息是否送达,如果没送达则ack返回失败状态 | ||||
@@ -98,9 +102,8 @@ public class ImManager { | |||||
}// 数据请求 | }// 数据请求 | ||||
else if (topic.equals("server" + PacketType.REQUEST)) { | else if (topic.equals("server" + PacketType.REQUEST)) { | ||||
} else | |||||
System.out.println("======>messageArrived:\n" + topic + "::" + msg); | |||||
sendPacketMessage(PacketType.RESULT, RequestManager.getInstance().request(msg)); | |||||
} | |||||
} | } | ||||
@@ -140,7 +143,6 @@ public class ImManager { | |||||
message.setAppId(connectMessage.getAppId()); | message.setAppId(connectMessage.getAppId()); | ||||
message.setUserName(connectMessage.getUserName()); | message.setUserName(connectMessage.getUserName()); | ||||
sendPacketMessage(PacketType.CONNECTED, message); | sendPacketMessage(PacketType.CONNECTED, message); | ||||
System.out.println("======>登录成功\n" + GsonImplHelp.get().toJson(message)); | |||||
} | } | ||||
private void sendAckMsg(SZYXMessage szyxMessage) { | private void sendAckMsg(SZYXMessage szyxMessage) { | ||||
@@ -1,7 +1,7 @@ | |||||
package cn.org.bjca.trust.java.imserver.im.bean; | package cn.org.bjca.trust.java.imserver.im.bean; | ||||
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.enums.PacketType; | import cn.org.bjca.trust.java.imserver.enums.PacketType; | ||||
import jakarta.persistence.MappedSuperclass; | import jakarta.persistence.MappedSuperclass; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -22,6 +22,7 @@ public abstract class PacketMessage extends AbstractBaseTimeEntity { | |||||
private long timestamp = System.currentTimeMillis(); | private long timestamp = System.currentTimeMillis(); | ||||
private String appId; | private String appId; | ||||
private String userName; | private String userName; | ||||
private String osType; | |||||
private String token; | private String token; | ||||
public PacketMessage(PacketType packetType) { | public PacketMessage(PacketType packetType) { | ||||
@@ -18,7 +18,7 @@ public class ConnectMessage extends PacketMessage { | |||||
} | } | ||||
@OneToOne(cascade = CascadeType.ALL) | @OneToOne(cascade = CascadeType.ALL) | ||||
@JoinColumn(referencedColumnName = "_id") | |||||
@JoinColumn | |||||
private DeviceEntity device; | private DeviceEntity device; | ||||
public ConnectMessage(DeviceEntity device) { | public ConnectMessage(DeviceEntity device) { | ||||
@@ -7,12 +7,13 @@ import jakarta.persistence.Entity; | |||||
import lombok.Data; | import lombok.Data; | ||||
@Data | @Data | ||||
@Entity | |||||
public class RequestMessage extends PacketMessage { | public class RequestMessage extends PacketMessage { | ||||
public RequestMessage() { | public RequestMessage() { | ||||
super(PacketType.REQUEST); | super(PacketType.REQUEST); | ||||
} | } | ||||
private String path; | private String path; | ||||
private Object requestBody; | |||||
private String body; | |||||
} | } |
@@ -0,0 +1,18 @@ | |||||
package cn.org.bjca.trust.java.imserver.im.msg; | |||||
import cn.org.bjca.trust.java.imserver.enums.PacketType; | |||||
import cn.org.bjca.trust.java.imserver.im.bean.PacketMessage; | |||||
import lombok.Data; | |||||
@Data | |||||
public class ResultMessage extends PacketMessage { | |||||
public ResultMessage() { | |||||
super(PacketType.RESULT); | |||||
} | |||||
private String path; | |||||
private String body; | |||||
private String ackId; | |||||
} |
@@ -26,8 +26,9 @@ public class SZYXMessage extends PacketMessage { | |||||
* 发送者信息 | * 发送者信息 | ||||
*/ | */ | ||||
@OneToOne | @OneToOne | ||||
@JoinColumn(referencedColumnName = "token") | |||||
@JoinColumn | |||||
private UserInfo fromClient; | private UserInfo fromClient; | ||||
private String fromClientId; | |||||
/** | /** | ||||
* 接收者信息 | * 接收者信息 | ||||
*/ | */ | ||||
@@ -59,7 +60,7 @@ public class SZYXMessage extends PacketMessage { | |||||
private MsgType msgType; | private MsgType msgType; | ||||
@OneToOne(cascade = CascadeType.ALL) | @OneToOne(cascade = CascadeType.ALL) | ||||
@JoinColumn(name = "text_id", referencedColumnName = "_id") | |||||
@JoinColumn | |||||
private SZYXTextMessage textMessage; | private SZYXTextMessage textMessage; | ||||
public SZYXMessage copy() { | public SZYXMessage copy() { | ||||
@@ -71,6 +72,7 @@ public class SZYXMessage extends PacketMessage { | |||||
szyxMessage.setAppId(this.getAppId()); | szyxMessage.setAppId(this.getAppId()); | ||||
szyxMessage.setToken(this.getToken()); | szyxMessage.setToken(this.getToken()); | ||||
szyxMessage.setFromClientId(this.getFromClientId()); | |||||
szyxMessage.setArrive(this.isArrive()); | szyxMessage.setArrive(this.isArrive()); | ||||
szyxMessage.setDescribe(this.getDescribe()); | szyxMessage.setDescribe(this.getDescribe()); | ||||
szyxMessage.setMsgType(this.getMsgType()); | szyxMessage.setMsgType(this.getMsgType()); | ||||
@@ -1,6 +1,6 @@ | |||||
package cn.org.bjca.trust.java.imserver.im.msg.msg.message; | package cn.org.bjca.trust.java.imserver.im.msg.msg.message; | ||||
import cn.org.bjca.trust.java.imserver.entitys.AbstractBaseTimeEntity; | |||||
import cn.org.bjca.trust.java.imserver.entitys.converter.AbstractBaseTimeEntity; | |||||
import jakarta.persistence.Entity; | import jakarta.persistence.Entity; | ||||
import lombok.Data; | import lombok.Data; | ||||
@@ -0,0 +1,15 @@ | |||||
package cn.org.bjca.trust.java.imserver.repository; | |||||
import cn.org.bjca.trust.java.imserver.entitys.GroupEntity; | |||||
import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; | |||||
import org.springframework.data.jpa.repository.JpaRepository; | |||||
import org.springframework.stereotype.Repository; | |||||
import java.util.List; | |||||
@Repository | |||||
public interface GroupRepository extends JpaRepository<GroupEntity, Long> { | |||||
GroupEntity getGroupEntityByGroupIdAndAppId(String groupId, String appId); | |||||
boolean existsByGroupIdAndAppId(String groupId, String appId); | |||||
} |
@@ -4,7 +4,10 @@ import cn.org.bjca.trust.java.imserver.im.msg.msg.SZYXMessage; | |||||
import org.springframework.data.jpa.repository.JpaRepository; | import org.springframework.data.jpa.repository.JpaRepository; | ||||
import org.springframework.stereotype.Repository; | import org.springframework.stereotype.Repository; | ||||
import java.util.List; | |||||
@Repository | @Repository | ||||
public interface MessageRepository extends JpaRepository<SZYXMessage, Long> { | public interface MessageRepository extends JpaRepository<SZYXMessage, Long> { | ||||
List<SZYXMessage> getAllByAppIdAndUserName(String appId, String userName); | |||||
} | } |
@@ -12,4 +12,6 @@ public interface UserRepository extends JpaRepository<UserInfo, String> { | |||||
UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId); | UserInfo findUserInfoByUserIdAndOsTypeAndAppId(String userId, String osType, String appId); | ||||
List<UserInfo> findAllByUserIdAndAppId(String userId, String appId); | List<UserInfo> findAllByUserIdAndAppId(String userId, String appId); | ||||
boolean existsByAppIdAndUserId(String appId, String userId); | |||||
} | } |
@@ -8,4 +8,5 @@ import org.springframework.stereotype.Repository; | |||||
public interface ApplicationRepository extends JpaRepository<ApplicationEntity, Long> { | public interface ApplicationRepository extends JpaRepository<ApplicationEntity, Long> { | ||||
ApplicationEntity findFirstByAppNameAndTenantNo(String appName, String tenantNo); | ApplicationEntity findFirstByAppNameAndTenantNo(String appName, String tenantNo); | ||||
ApplicationEntity findFirstByAppId(String appId); | ApplicationEntity findFirstByAppId(String appId); | ||||
boolean existsByAppId(String appId); | |||||
} | } |
@@ -0,0 +1,5 @@ | |||||
package cn.org.bjca.trust.java.imserver.request; | |||||
public class RequestConstant { | |||||
public static final String Group_create_v1 = "/group/v1/create"; | |||||
} |
@@ -0,0 +1,110 @@ | |||||
package cn.org.bjca.trust.java.imserver.request; | |||||
import cn.org.bjca.trust.java.imserver.HttpResult; | |||||
import cn.org.bjca.trust.java.imserver.bean.group.GroupCreateData; | |||||
import cn.org.bjca.trust.java.imserver.common.SpringUtilsAuTo; | |||||
import cn.org.bjca.trust.java.imserver.common.TimeHelper; | |||||
import cn.org.bjca.trust.java.imserver.common.json.GsonImplHelp; | |||||
import cn.org.bjca.trust.java.imserver.entitys.GroupEntity; | |||||
import cn.org.bjca.trust.java.imserver.im.msg.RequestMessage; | |||||
import cn.org.bjca.trust.java.imserver.im.msg.ResultMessage; | |||||
import cn.org.bjca.trust.java.imserver.repository.GroupRepository; | |||||
import cn.org.bjca.trust.java.imserver.repository.MessageRepository; | |||||
import cn.org.bjca.trust.java.imserver.repository.UserRepository; | |||||
import cn.org.bjca.trust.java.imserver.repository.tenant.ApplicationRepository; | |||||
import org.springframework.http.HttpHeaders; | |||||
import java.util.UUID; | |||||
import static cn.org.bjca.trust.java.imserver.request.RequestConstant.Group_create_v1; | |||||
public class RequestManager { | |||||
private static final class RequestManagerHolder { | |||||
static final RequestManager instance = new RequestManager(); | |||||
} | |||||
public static RequestManager getInstance() { | |||||
return RequestManagerHolder.instance; | |||||
} | |||||
public ResultMessage request(String msg) { | |||||
try { | |||||
RequestMessage requestMessage = GsonImplHelp.get().toObject(msg, RequestMessage.class); | |||||
ResultMessage resultMessage = new ResultMessage(); | |||||
resultMessage.setPath(requestMessage.getPath()); | |||||
resultMessage.setAckId(requestMessage.getMsgId()); | |||||
resultMessage.setAppId(requestMessage.getAppId()); | |||||
resultMessage.setUserName(requestMessage.getUserName()); | |||||
String body = GsonImplHelp.get().toJson(this.request(requestMessage.getAppId(), | |||||
requestMessage.getUserName(), | |||||
requestMessage.getOsType(), | |||||
requestMessage.getPath(), | |||||
requestMessage.getBody())); | |||||
resultMessage.setBody(body); | |||||
return resultMessage; | |||||
} catch (Exception e) { | |||||
return new ResultMessage(); | |||||
} | |||||
} | |||||
public <T> HttpResult<T> request(String path, Object data, HttpHeaders headers) { | |||||
return this.request(headers.getFirst("appid"), headers.getFirst("userid"), headers.getFirst("ostype"), path, data); | |||||
} | |||||
@SuppressWarnings("unchecked") | |||||
private <T> HttpResult<T> request(String appId, String userId, String osType, String path, Object data) { | |||||
if (null != appId && null != userId && null != osType) { | |||||
if (!applicationRepository.existsByAppId(appId)) return new HttpResult<>(201, "appId不存在", null); | |||||
if (!userRepository.existsByAppIdAndUserId(appId, userId)) | |||||
return new HttpResult<>(201, "当前用户不存在", null); | |||||
switch (path) { | |||||
case Group_create_v1: | |||||
return (HttpResult<T>) this.groupCreate(data instanceof String ? | |||||
GsonImplHelp.get().toObject((String) data, GroupCreateData.class) | |||||
: (GroupCreateData) data, appId, userId); | |||||
default: | |||||
return new HttpResult<>(201, "路径错误", null); | |||||
} | |||||
} else return new HttpResult<>(201, "参数错误", null); | |||||
} | |||||
private final UserRepository userRepository = SpringUtilsAuTo.getBean(UserRepository.class); | |||||
private final GroupRepository groupRepository = SpringUtilsAuTo.getBean(GroupRepository.class); | |||||
private final ApplicationRepository applicationRepository = SpringUtilsAuTo.getBean(ApplicationRepository.class); | |||||
private final MessageRepository messageRepository = SpringUtilsAuTo.getBean(MessageRepository.class); | |||||
public HttpResult<String> groupCreate(GroupCreateData data, String appid, String userid) { | |||||
if (null == data.getUserIdList() || data.getUserIdList().isEmpty() || data.getUserIdList().size() < 2) { | |||||
return new HttpResult<>(201, "群组成员需要大于一", ""); | |||||
} else { | |||||
String groupId = UUID.randomUUID().toString(); | |||||
String groupName = data.getGroupName(); | |||||
if (null == groupName || groupName.equals("")) groupName = TimeHelper.getTimeString("yyyyMMddHHmm"); | |||||
if (!data.getUserIdList().contains(userid)) { | |||||
addGroup(appid, groupId, groupName, data.getFaceUrl(), userid, userid); | |||||
} | |||||
for (String userId : data.getUserIdList()) { | |||||
if (userRepository.existsByAppIdAndUserId(appid, userId)) { | |||||
addGroup(appid, groupId, groupName, data.getFaceUrl(), userId, userid); | |||||
} | |||||
} | |||||
return new HttpResult<>(200, "成功", groupId); | |||||
} | |||||
} | |||||
private void addGroup(String appId, String groupId, String groupName, String faceUrl, String userId, String adminId) { | |||||
GroupEntity groupEntity = new GroupEntity(appId, adminId, userId, groupId, groupName, faceUrl); | |||||
groupRepository.save(groupEntity); | |||||
} | |||||
public void getHistoryForMsg(String appId, String userId, int pageSize, long timestamp) { | |||||
} | |||||
} |