Commit 4316b780 by Shadow

调整模块名

parent dbd41a7d
/target/
/classes
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/build/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
.DS_Store
*.log
logs
*.rdb
# system 项目系统模块
\ No newline at end of file
package com.wecloud.im.biz.module.message.controller.param.add;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 第三方应用表
*
* @author wei
* @since 2021-04-27
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImApplicationAdd")
public class ImApplicationAdd extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
// @ApiModelProperty("key")
// private String appKey;
//
// @ApiModelProperty("密钥")
// private String appSecret;
@ApiModelProperty("app名称")
private String appName;
@ApiModelProperty("ios推送通道,友盟:1;firebase:2; apns原生:3")
private Integer iosPushChannel;
@ApiModelProperty("安卓推送通道,友盟:1;firebase:2; 信鸽3")
private Integer androidPushChannel;
@ApiModelProperty("友盟推送key")
private String umengKey;
@ApiModelProperty("友盟推送密钥")
private String umengSecret;
@ApiModelProperty("firebase推送密钥")
private String firebaseSecret;
private String adminPwd;
}
package com.wecloud.im.biz.module.message.controller.param.add;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
import javax.validation.constraints.NotNull;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.ChatTypeEnum;
/**
* 会话表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationCreate")
public class ImConversationCreate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("可选 对话的名字,可为群组命名。")
private String name;
@ApiModelProperty("string格式,可选 自定义属性,供开发者扩展使用。")
private Map<String, Object> attributes;
@ApiModelProperty("可选 邀请加入会话的客户端,如创建单聊,则填入对方的clientId")
private List<String> clientIds;
@ApiModelProperty("创建者id,sdk调用时传递该参数")
private String creatorUserId;
@ApiModelProperty("成员用户id,sdk调用时传递该参数")
private String memberUserIds;
/**
* @see ChatTypeEnum
*/
@ApiModelProperty("会话属性,1:单聊,2:普通群,3:万人群, 4:聊天室")
@NotNull(message = "会话类型不能为空")
private Integer chatType;
@ApiModelProperty("客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs, 需与生成sign时的值一致")
private Integer platform;
@ApiModelProperty("是否加密聊天: 1-是 0-否")
private Integer isEncrypt;
}
package com.wecloud.im.biz.module.message.controller.param.add;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.HashMap;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 自定义透传内容
*
* @author wei
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMsgSendToOnlineClient")
public class ImMsgSendToOnlineClient extends BaseEntity {
private static final long serialVersionUID = 1L;
// @ApiModelProperty(value = "自定义透传内容", required = true)
// private String content;
@ApiModelProperty(value = "自定义透传内容 ,为任意参数名称和类型的对象,供开发者扩展使用。", required = true)
private HashMap content;
@ApiModelProperty(value = "会话id", required = true)
private Long conversationId;
}
package com.wecloud.im.biz.module.message.controller.param.add;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.HashMap;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 修改消息
*
* @author wei
* @since 2021-04-27
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMsgUpdate")
public class ImMsgUpdate extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("消息id")
private Long msgId;
@ApiModelProperty("内容")
private HashMap content;
}
package com.wecloud.im.biz.module.message.controller.param.add;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.imserver.client.model.enums.DeviceTypeEnum;
/**
*
* @Author luozh
* @Date 2022年05月07日 10:13
* @Version 1.0
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ImConversationCreate")
public class ServerImConversationCreate implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 可选 对话的名字,可为群组命名。")
*/
private String name;
/**
* Map格式,可选 自定义属性,供开发者扩展使用。")
*/
private Map<String, Object> attributes;
/**
* 应用, 前端")
*/
private ImApplication application;
/**
* 创建者 前端请求不传")
*/
private ImClient creator;
/**
* 可选 成员列表
*/
private List<ImClient> members;
/**
* @see ChatTypeEnum
*/
/**
* 会话属性,1:单聊,2:普通群,3:万人群, 4:聊天室")
*/
private ChatTypeEnum chatType;
/**
* 客户端平台: 1 web, 2 安卓, 3 ios, 4 pc-win, 5 pc-macOs, 需与生成sign时的值一致")
*/
private DeviceTypeEnum platform;
}
package com.wecloud.im.biz.module.message.controller.param.group;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
/**
* 加入群
* @Author luozh
* @Date 2022年05月10日 09:37
* @Version 1.0
*/
@Getter
@Setter
public class JoinGroupParam {
/**
* 邀请进群的用户id
*/
@NotBlank(message = "inviterUserId 不能为空")
private String inviterUserId;
/**
* 要加入群的用户 ID
*/
@NotBlank(message = "userIds 不能为空")
private String userIds;
/**
* 要加入的群的群组 ID
*/
@NotBlank(message = "groupId 不能为空")
private String groupId;
}
package com.wecloud.im.biz.module.message.controller.param.group;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 禁言群成员入参
* @Author luozh
* @Date 2022年05月16日 19:42
* @Version 1.0
*/
@Data
public class MutedMembersParam {
@ApiModelProperty("群id")
private String groupId;
@ApiModelProperty("是否禁言")
private Boolean muted;
@ApiModelProperty("用户id多个用,隔开")
private String userIds;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "CandidateForwardParam")
public class CandidateForwardParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
/**
* 转发的候选者数据
*/
private String candidateData;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 创建频道请求参数
*
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "CreateRtcChannelParam")
public class CreateRtcChannelParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "被邀请的客户端ID", required = true)
private String toClient;
@ApiModelProperty(value = "客户端自定义数据", required = false)
private String attrs;
@ApiModelProperty(value = "类型: 1-video或2-voice", required = true)
private Integer callType;
@ApiModelProperty(value = "绑定的会话id,可选", required = false)
private Long conversationId;
@ApiModelProperty(value = "接收方展示的系统推送内容,可", required = false)
private String push;
@ApiModelProperty(value = "是否需要给对方发系统通知", required = true)
private Boolean pushCall;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 创建频道返回参数
*
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "CreateRtcChannelResult")
public class CreateRtcChannelResult implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 加入频道请求参数
*
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "JoinRtcChannelParam")
public class JoinRtcChannelParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 退出频道 请求
*
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "LeaveRtcChannelParam")
public class LeaveRtcChannelParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 拒接加入频道 请求
*
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "RejectRtcChannelParam")
public class RejectRtcChannelParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author wei
* @since 2021-04-29
*/
@Data
@ApiModel(value = "SdpForwardParam")
public class SdpForwardParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("频道id")
private Long channelId;
@ApiModelProperty("sdp转发的数据")
private String sdpData;
@ApiModelProperty("sdp类型: Offer或Answer")
private String sdpType;
}
package com.wecloud.im.biz.module.message.controller.param.rtc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import com.wecloud.im.biz.enums.CallTypeEnum;
/**
* @author nanqianhao
* @date 2022/5/23
* @apiNote
*/
@Data
@ApiModel(value = "单人rtc音视频查找记录")
public class SingleRtcRecordParam implements Serializable {
private static final long serialVersionUID = 2176804812523348248L;
/**
* 发送者id
*/
@ApiModelProperty("发送者id")
private String fromClientId;
/**
* 接受者id
*/
@ApiModelProperty("接受者id")
private String toClientId;
/**
* 房间id
*/
@ApiModelProperty("房间id")
private String channelId;
/**
* 音视频类型
* @see CallTypeEnum
*/
@ApiModelProperty("音视频类型")
private Integer callType;
/***
* 页码
*/
@ApiModelProperty("页码")
private Integer pageNum;
/**
* 每页数量
*/
@ApiModelProperty("每页数量")
private Integer pageSize;
@ApiModelProperty("开始时间")
private Date createTimeStart;
@ApiModelProperty("结束时间")
private Date createTimeEnd;
}
package com.wecloud.im.biz.module.message.controller.serverapi;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wecloud.can.core.base.controller.BaseController;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.add.ImMsgSendToOnlineClient;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImMessageService;
/**
* 消息存储表 控制器
*
* @author wei
* @since 2021-04-29
*/
@Slf4j
@RestController
@RequestMapping("/server/imMessage")
@Api(value = "服务端rest-API-消息", tags = {"服务端rest-API-消息"})
public class ApiImMessageController extends BaseController {
@Autowired
private ImApplicationService imApplicationService;
@Autowired
private ImMessageService imMessageService;
/**
* 向会话中在线client,下发透传消息
*/
@PostMapping("/sendToOnlineClient")
@ApiOperation(value = "向会话中在线client,下发透传消息", notes = "应用服务端向某会话中所有client下发透传消息, 不会保存进离线消息, 仅在线client能收到")
public ApiResult<Boolean> restApiImMessageSend(@RequestBody ImMsgSendToOnlineClient imMsgSendToOnlineClient, @RequestHeader String appkey, @RequestHeader String appSecret) throws Exception {
// return imMessageService.updateMsgWithdrawById(imMsgRecall);
// 根据appKey从数据库查询密钥
ImApplication imApplication = imApplicationService.getCacheAppByAppKey(appkey);
if (imApplication == null) {
return ApiResult.result(ApiCode.FAIL, null);
}
// 校验appkey 和appSecret
if (!imApplication.getAppSecret().equals(appSecret)) {
return ApiResult.result(ApiCode.FAIL, null);
}
return imMessageService.restApiImMessageSend(imMsgSendToOnlineClient, imApplication);
}
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/4/27 16:47
* @Description 聊天室成员VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "聊天室成员VO")
@AllArgsConstructor
@NoArgsConstructor
public class ChatRoomMemberVo implements Serializable {
private static final long serialVersionUID = 5417994988121322697L;
@ApiModelProperty("聊天室房间id")
private Long chatRoomId;
@ApiModelProperty("客户端id")
private String clientId;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import com.wecloud.im.biz.enums.RelationEnum;
/**
* @Author wenzhida
* @Date 2022/2/15 11:29
* @Description
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ClientInfoVo")
public class ClientInfoVo implements Serializable {
private static final long serialVersionUID = 1474979499551389791L;
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("client自己的自定义扩展属性")
private String clientAttributes;
@ApiModelProperty("会话成员列表的自定义扩展属性")
private String memberAttributes;
/**
* 与我关系
* @see RelationEnum
*/
@ApiModelProperty("与我关系 1-陌生人 2-好友 3-被我拉黑")
private Integer relation;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import com.wecloud.im.biz.enums.GroupRoleEnum;
import com.wecloud.im.biz.enums.MutedEnum;
@Data
@Accessors(chain = true)
@ApiModel(value = "ImConversationMemberListVo")
public class ConversationMemberVo implements Serializable {
private static final long serialVersionUID = 7278014943001080361L;
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("client自己的自定义扩展属性")
private String clientAttributes;
@ApiModelProperty("会话成员列表的自定义扩展属性")
private String memberAttributes;
/**
* 群内角色
* @see GroupRoleEnum
*/
@ApiModelProperty("群内角色")
private Integer role;
/**
* 禁言开关
* @see MutedEnum
*/
@ApiModelProperty("禁言开关 1-未禁言 2-禁言")
private Integer muted;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.wecloud.im.biz.enums.MutedEnum;
/**
* <pre>
* 会话表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MyConversationListVo")
public class ConversationVo implements Serializable {
private static final long serialVersionUID = -4330507756623541941L;
@ApiModelProperty("会话id")
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("创建者客户端id")
private String creator;
@ApiModelProperty("可选 对话的名字,可为群组命名。")
private String name;
@ApiModelProperty(value = "可选 自定义属性,供开发者扩展使用。", hidden = true)
@JsonIgnore
private String attribute;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
@ApiModelProperty("可选 对话类型标志,是否是系统对话,后面会说明。")
private Boolean systemFlag;
@ApiModelProperty("未读消息条数")
private Long msgNotReadCount;
@ApiModelProperty("成员")
private String members;
@ApiModelProperty("会话属性,1:单聊,2:普通群,3:万人群 4:聊天室")
private Integer chatType;
@ApiModelProperty("群成员数")
private Integer memberCount;
@ApiModelProperty("会话最后一条消息")
private OfflineMsgDto lastMsg;
@ApiModelProperty("是否被@ true-是 false-否")
private Boolean isBeAt;
/**
* 禁言开关
* @see MutedEnum
*/
@ApiModelProperty("禁言开关 1-未禁言 2-禁言")
private Integer muted;
@ApiModelProperty("禁言开关 1-未禁言 2-禁言")
private Integer beAtCount;
@ApiModelProperty("禁止互加好友")
private Boolean forbidAddFriend;
@ApiModelProperty("禁止发图片")
private Boolean forbidSendPic;
@ApiModelProperty("禁止发链接")
private Boolean forbidSendLink;
@ApiModelProperty("群头像")
private String headPortrait;
@ApiModelProperty("免打扰开关 0-关闭 1开启")
private Boolean doNotDisturb;
@TableField("is_top")
private Boolean top;
@ApiModelProperty("是否为加密聊天 0-否 1-是")
private Integer isEncrypt;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@Accessors(chain = true)
@ApiModel(value = "GetInfoListVo")
public class GetInfoListVo implements Serializable {
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("client自己的自定义扩展属性")
private String clientAttributes;
@ApiModelProperty("会话成员列表的自定义扩展属性")
private String memberAttributes;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 会话表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationCreateVo")
public class ImConversationCreateVo extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id")
private Long id;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* <pre>
* 离线消息列表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-04-29
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "ImMessageOfflineListVo")
public class ImMessageOfflineListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("消息列表")
private List<OfflineMsgDto> msgList;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 在线状态
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImOnlineStatusVo")
public class ImOnlineStatusVo extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("true:在线, false 不在线")
private Boolean status;
private String clientId;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 会话表 查询结果对象
* </pre>
*
* @author wei
* @date 2021-05-07
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MyConversationMemberVo")
public class MyConversationMembersVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("加入时间")
private Date joinTime;
@ApiModelProperty("客户端id")
private String clientId;
@ApiModelProperty("名字")
private String name;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* @Author wenzhida
* @Date 2022/2/15 16:22
* @Description 我的信息
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "我的信息")
public class MyInfoVo implements Serializable {
private static final long serialVersionUID = -5423843620435586377L;
@ApiModelProperty("主键id")
private Long id;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("最后离线时间")
private Date lastOfflineTime;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* @Author wenzhida
* @Date 2022/3/3 11:19
* @Description 离线消息内容实体
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "OfflineMsgDto")
public class OfflineMsgDto implements Serializable {
private static final long serialVersionUID = -7073389493201687249L;
@ApiModelProperty("会话id")
private Long conversationId;
@ApiModelProperty("消息类型")
private Integer type;
@ApiModelProperty("消息id")
private Long msgId;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("撤回时间")
private Date withdrawTime;
@ApiModelProperty("发送者客户端id")
private String sender;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("0未撤回; 1已撤回")
private Boolean withdraw;
@ApiModelProperty("0非事件; 1为事件")
private Boolean event;
@ApiModelProperty("0非系统通知; 1为系统通知")
private Boolean systemFlag;
@ApiModelProperty("at他人,传入客户端id数组")
private String at;
@ApiModelProperty("未读人数统计,全部人已读为0")
private Integer notReadCount;
@ApiModelProperty("未接收人数统计,全部人已接收为0")
private Integer notReceiverCount;
// @ApiModelProperty("读取时间")
// private Date readTime;
//
// @ApiModelProperty("接收时间")
// private Date receiverTime;
// @ApiModelProperty("0未接收; 1已接收")
// private Integer receiverMsgStatus;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 已读client展示VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "已读client展示VO")
public class ReaderList implements Serializable {
private static final long serialVersionUID = 4658402570720540541L;
@ApiModelProperty("已读人员列表")
private List<ReaderVo> readList;
@ApiModelProperty("未读人员列表")
private List<ReaderVo> unReadList;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author wenzhida
* @Date 2022/2/15 20:54
* @Description 读者VO
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "读者VO")
public class ReaderVo implements Serializable {
private static final long serialVersionUID = 4390952170006190474L;
@ApiModelProperty("client主键id")
private Long id;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("是否已读 0-否 1-是")
private Integer readMsgStatus;
}
package com.wecloud.im.biz.module.message.controller.vo;
import lombok.Data;
/**
*
* @Author luozh
* @Date 2022年04月13日 17:14
* @Version 1.0
*/
@Data
public class RegisterClientResponse {
private static final long serialVersionUID = 1L;
private Long userId;
}
package com.wecloud.im.biz.module.message.controller.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class TokenVo implements Serializable {
/**
* websocket登陆令牌
*/
private String token;
@ApiModelProperty("客户端id")
private Long id;
@ApiModelProperty("webSocket连接地址")
private String wsAddr;
@ApiModelProperty("加密密钥")
private String dataAesKey;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 消息在线推送
*
* @author wei
* @since 2021-04-29
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImApiMessageOnlineSend ")
public class ImApiMessageOnlineSend extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("会话id")
private Long conversationId;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.can.security.signature.Application;
/**
* 第三方应用表
*
* @author wei
* @since 2021-04-27
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImApplication对象")
public class ImApplication extends BaseEntity implements Application {
private static final long serialVersionUID = 1L;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("key")
private String appKey;
@ApiModelProperty("密钥")
private String appSecret;
@ApiModelProperty("app名称")
private String appName;
@ApiModelProperty("ios推送通道,友盟:1;firebase:2; apns原生:3")
private Integer iosPushChannel;
@ApiModelProperty("安卓推送通道,友盟:1;firebase:2; 信鸽3")
private Integer androidPushChannel;
@ApiModelProperty("友盟推送key")
private String umengKey;
@ApiModelProperty("友盟推送密钥")
private String umengSecret;
@ApiModelProperty("firebase推送密钥")
private String firebaseSecret;
@ApiModelProperty("是否允许创建重复会话 0不允许 1允许")
private Integer repeatSessionStatus;
@ApiModelProperty("创建会话时对比扩展字段 0不 1是")
private Integer contrastExtendedFieldStatus;
@ApiModelProperty("在线状态订阅地址")
private String onlineStatusSubscribeUrl;
@ApiModelProperty("全量消息订阅地址")
private String fullMessageSubscribeUrl;
@ApiModelProperty("租户id")
private Long ownerId;
@ApiModelProperty("公司id")
private Long companyId;
@ApiModelProperty("状态 1-正常 2-异常 3-删除")
private Integer status;
@Override
public Boolean isActive() {
return true;
}
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 终端表
*
* @author wei
* @since 2021-04-27
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImClient对象")
public class ImClient extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "客户端id不能为空")
@ApiModelProperty("客户端id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("最后离线时间")
private Date lastOfflineTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
@ApiModelProperty("客户方提供的唯一id")
private String clientId;
@ApiModelProperty("头像")
private String headPortrait;
@ApiModelProperty("主昵称")
private String nickname;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 黑名单
*
* @author wei
* @since 2021-06-17
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImClientBlacklist对象")
public class ImClientBlacklist extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "客户端id不能为空")
@ApiModelProperty("客户端id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("拉黑者")
private String clientIdPrevent;
@ApiModelProperty("被拉黑")
private String clientIdBePrevent;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* @Author wenzhida
* @Date 2022/3/2 14:52
* @Description 客户端设备
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "客户端设备")
public class ImClientDevice extends BaseEntity {
private static final long serialVersionUID = 6988763580951760226L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("client主键id")
private Long fkClientId;
@ApiModelProperty("设备不想收到推送提醒, 1想, 0不想")
private Integer valid;
@ApiModelProperty("设备类型 1:ios; 2:android; 3:web; 4:win; 5:mac")
private Integer deviceType;
@ApiModelProperty("设备推送token")
private String deviceToken;
@ApiModelProperty("唯一id")
private String uniqueDeviceId;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.ChatTypeEnum;
import com.wecloud.im.biz.enums.MutedEnum;
/**
* 会话表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversation对象")
public class ImConversation extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "会话id不能为空")
@ApiModelProperty("会话id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("对话中最后一条消息的发送或接收时间")
private Date lastMessage;
@ApiModelProperty("群成员数量")
private Integer memberCount;
/**
* 会话属性
* @see ChatTypeEnum
*/
@ApiModelProperty("会话属性,1:单聊,2:普通群,3:万人群,4:聊天室")
private Integer chatType;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
private Long fkAppid;
@NotNull(message = "创建者客户端id不能为空")
@ApiModelProperty("创建者客户端id")
private Long creator;
@ApiModelProperty("可选 对话的名字,可为群组命名。")
private String name;
@ApiModelProperty("群头像")
private String headPortrait;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
@ApiModelProperty("可选 对话类型标志,是否是系统对话,后面会说明。")
private Boolean systemFlag;
/**
* 禁言开关
* @see MutedEnum
*/
@ApiModelProperty("禁言开关 1-未禁言 2-禁言")
private Integer muted;
@TableField("is_forbid_add_friend")
@ApiModelProperty("禁止互加好友")
private Boolean forbidAddFriend;
@TableField("is_forbid_send_pic")
@ApiModelProperty("禁止发图片")
private Boolean forbidSendPic;
@TableField("is_forbid_send_link")
@ApiModelProperty("禁止发链接")
private Boolean forbidSendLink;
@ApiModelProperty("是否为加密聊天 0-否 1-是")
private Integer isEncrypt;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.GroupRoleEnum;
import com.wecloud.im.biz.enums.MutedEnum;
/**
* 会话成员表
*
* @author wei
* @since 2021-05-07
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImConversationMembers对象")
public class ImConversationMembers extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "唯一id不能为空")
@ApiModelProperty("唯一id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("加入时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
private Long fkAppid;
@NotNull(message = "会话表id不能为空")
@ApiModelProperty("会话表id")
private Long fkConversationId;
@NotNull(message = "客户端id不能为空")
@ApiModelProperty("客户端id")
private Long fkClientId;
@ApiModelProperty("可选 自定义属性,供开发者扩展使用。")
private String attributes;
@NotNull(message = "单向删除(隐藏)会话, 0不显示, 1显示不能为空")
@ApiModelProperty("单向删除(隐藏)会话, 0不显示, 1显示")
private Long displayStatus;
@ApiModelProperty("会话中client的备注名")
private String clientRemarkName;
/**
* 群内角色
* @see GroupRoleEnum
*/
@ApiModelProperty("群内角色")
private Integer role;
/**
* 禁言开关
* @see MutedEnum
*/
@ApiModelProperty("禁言开关 1-未禁言 2-禁言")
private Integer muted;
/**
* 客户方提供的唯一id
*/
@ApiModelProperty("客户方提供的唯一id")
private String clientId;
@ApiModelProperty("免打扰开关 0-关闭 1开启")
@TableField("is_do_not_disturb")
private Boolean doNotDisturb;
@ApiModelProperty("置顶开关 0-关闭 1开启")
@TableField("is_top")
private Boolean top;
@ApiModelProperty("加入会话方式编码")
private String joinTypeCode;
@ApiModelProperty("加入会话方式信息")
private String joinTypeMsg;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.FriendStateEnum;
/**
* @author lixiaozhong
* 好友关系表
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImFriend对象")
public class ImFriend extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("我的client-id")
private String clientId;
@ApiModelProperty("好友的client-id")
private String clientIdFriend;
@ApiModelProperty("申请者")
private String clientIdClaimer;
@ApiModelProperty("好友的昵称备注")
private String friendName;
@ApiModelProperty("好友拒绝原因")
private String rejectRemark;
@ApiModelProperty("好友请求说明")
private String requestRemark;
/**
* 好友关系状态
* @see FriendStateEnum
*/
@ApiModelProperty("好友关系状态")
private Integer state;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* @author lixiaozhong
* 好友关系表
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImFriendRecommend好友推荐对象")
public class ImFriendRecommend extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("我的client-id")
private String clientId;
@ApiModelProperty("好友的client-id")
private String clientIdFriend;
@ApiModelProperty("推荐来源")
private Integer source;
@ApiModelProperty("是否删除")
private Boolean delFlag;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 消息收件箱表
*
* @author wei
* @since 2021-05-06
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("im_inbox")
@ApiModel(value = "ImInbox对象")
public class ImInbox extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "收件id不能为空")
@ApiModelProperty("收件id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("读取时间")
private Date readTime;
@ApiModelProperty("接收时间")
private Date receiverTime;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
private Long fkAppid;
@NotNull(message = "接收客户端id不能为空")
@ApiModelProperty("接收客户端id")
private Long receiver;
@NotNull(message = "消息id不能为空")
@ApiModelProperty("消息id")
private Long fkMsgId;
@ApiModelProperty("0未读; 1已读")
private Integer readMsgStatus;
@ApiModelProperty("0未接收; 1已接收")
private Integer receiverMsgStatus;
@NotNull(message = "会话id不能为空")
@ApiModelProperty("会话id")
private Long fkConversationId;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* apns配置表
*
* @author wei
* @since 2021-09-18
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImIosApns对象")
public class ImIosApns extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "id不能为空")
@ApiModelProperty("id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
private Long fkAppId;
@ApiModelProperty("Base64(apns.p12)")
private String apnsFileValue;
@ApiModelProperty("环境,正式1,测试0")
private Integer env;
@ApiModelProperty("bundle_id")
private String bundleId;
@ApiModelProperty("证书密码")
private String pwd;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 消息存储表
*
* @author wei
* @since 2021-04-29
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMessage对象")
public class ImMessage extends BaseEntity {
private static final long serialVersionUID = 1L;
@NotNull(message = "消息id不能为空")
@ApiModelProperty("消息id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("撤回时间")
private Date withdrawTime;
@ApiModelProperty("修改时间")
private Date updateDate;
@NotNull(message = "应用appid不能为空")
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("发送者客户端id")
private Long sender;
@ApiModelProperty("接收人,多人用英文逗号分隔-群内指定人员可见场景")
private String receivers;
/**
* 数据库字段类型为JSON格式
* 因mysql关系型数据库非MongoDB文档类型数据库,第三方应用拓展的自定义参数名和值需使用json格式落库
*/
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("0未撤回; 1已撤回")
private Boolean withdraw;
@ApiModelProperty("0非事件; 1为事件")
private Boolean event;
@ApiModelProperty("0非系统通知; 1为系统通知")
private Boolean systemFlag;
@ApiModelProperty("at他人,传入客户端id数组")
private String at;
@ApiModelProperty("1 AVIMMessageStatusSending(发送中)" +
"2 AVIMMessageStatusSent(发送成功)" +
"3 AVIMMessageStatusFailed(失败)")
private Integer sendStatus;
@ApiModelProperty("会话id")
private Long fkConversationId;
@ApiModelProperty("消息类型")
private Integer msgType;
@ApiModelProperty("是否删除 1-未删除 2-已删除")
private Integer isDelete;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.wecloud.can.core.base.entity.BaseEntity;
/**
* 消息在线推送
*
* @author wei
* @since 2021-04-29
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ImMessageOnlineSend ")
public class ImMessageOnlineSend extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 消息类型
* @see com.wecloud.im.server.enums.MsgTypeEnum
*/
@ApiModelProperty("消息类型")
private Integer type;
@NotNull(message = "消息id不能为空")
@ApiModelProperty("消息id")
private Long msgId;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("撤回时间")
private Date withdrawTime;
@ApiModelProperty("发送者客户端id")
private String sender;
@ApiModelProperty("内容")
private Object content;
@ApiModelProperty("0未撤回; 1已撤回")
private Boolean withdraw;
@ApiModelProperty("0非事件; 1为事件")
private Boolean event;
@ApiModelProperty("0非系统通知; 1为系统通知")
private Boolean systemFlag;
@ApiModelProperty("at他人,传入客户端id数组")
private String at;
@ApiModelProperty("会话id")
private Long conversationId;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.MultiRtcRoomStateEnum;
/**
* @Author wenzhida
* @Date 2022/3/15 23:09
* @Description 多人音视频房间
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "多人音视频房间")
public class ImMultiRtcRoom extends BaseEntity {
private static final long serialVersionUID = -523597842194055670L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("房间id")
private String roomId;
/**
* 多人音视频房间状态枚举
* @see MultiRtcRoomStateEnum
*/
@ApiModelProperty("房间状态,1:已创建,2:会议中,3:会议结束")
private Integer state;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.MultiRtcMemberStateEnum;
/**
* @Author wenzhida
* @Date 2022/3/15 23:09
* @Description 多人音视频房间成员
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "多人音视频房间成员")
public class ImMultiRtcRoomMember extends BaseEntity {
private static final long serialVersionUID = -3806432271911087255L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("房间id")
private String roomId;
@ApiModelProperty("im房间id")
private Long fkRtcRoomId;
@ApiModelProperty("client主键id")
private Long fkClientId;
@ApiModelProperty("客户端id")
private String clientId;
/**
* 多人音视频房间成员状态枚举
* @see MultiRtcMemberStateEnum
*/
@ApiModelProperty("房间成员状态,1:呼叫中,2:已接听,3:已拒绝,4:未接听,5:已断开")
private Integer state;
@ApiModelProperty("呼叫时间")
private Date callTime;
@ApiModelProperty("心跳时间")
private Date heartbeatTime;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
import javax.validation.constraints.NotNull;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.wecloud.can.core.base.entity.BaseEntity;
import com.wecloud.im.biz.enums.RtcStateEnum;
/**
* @Author Future
* @Date 2022/5/22 23:40
* @Description 单人音视频记录表
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "单人音视频记录")
public class ImRtcRecord extends BaseEntity {
private static final long serialVersionUID = -523597842194055670L;
@NotNull(message = "主键id不能为空")
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.INPUT)
private Long id;
@ApiModelProperty("应用appid")
private Long fkAppid;
@ApiModelProperty("频道id")
private Long channelId;
@ApiModelProperty("发起方clientId")
private String fromClientId;
@ApiModelProperty("接收方clientId")
private String toClientId;
@ApiModelProperty(value = "音视频类型: 1-video或2-voice")
private Integer callType;
/**
* 单人音视频状态枚举
* @see RtcStateEnum
*/
@ApiModelProperty("频道状态,1:音视频发起,2:音视频中,3:音视频结束")
private Integer state;
@ApiModelProperty("音视频开始时间")
private Date startTime;
@ApiModelProperty("音视频结束时间")
private Date endTime;
@ApiModelProperty("通话过程中离线次数统计 用于区分异常断线使用")
private Integer offlineTimes;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication;
/**
* 第三方应用表 Mapper 接口
*
* @author wei
* @since 2021-04-27
*/
@Repository
public interface ImApplicationMapper extends BaseMapper<ImApplication> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImApplicationQueryVo getImApplicationById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param imApplicationPageParam
* @return
*/
IPage<ImApplicationQueryVo> getImApplicationPageList(@Param("page") Page page, @Param("param") ImApplicationPageParam imApplicationPageParam);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.entity.ImClientBlacklist;
/**
* 黑名单 Mapper 接口
*
* @author wei
* @since 2021-06-17
*/
@Repository
public interface ImClientBlacklistMapper extends BaseMapper<ImClientBlacklist> {
/**
* 查询我的拉黑列表
* @param page
* @param clientId
* @return
*/
IPage<ImClientBlacklistQueryVo> getImClientBlacklistPageList(@Param("page") Page page, @Param("clientId") String clientId);
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImClientBlacklistQueryVo getImClientBlacklistById(Serializable id);
// /**
// * 获取分页对象
// *
// * @param page
// * @param imClientBlacklistPageParam
// * @return
// */
// IPage<ImClientBlacklistQueryVo> getImClientBlacklistPageList(@Param("page") Page page, @Param("param") ImClientBlacklistPageParam imClientBlacklistPageParam);
}
package com.wecloud.im.biz.module.message.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wecloud.im.biz.module.message.entity.ImClientDevice;
/**
* @Author wenzhida
* @Date 2022/3/2 14:57
* @Description 客户端设备mapper
*/
@Repository
public interface ImClientDeviceMapper extends BaseMapper<ImClientDevice> {
/**
* 清除旧token
* @param appId
* @param deviceToken
* @return
*/
int removeOldToken(@Param("appId") Long appId, @Param("deviceToken") String deviceToken);
}
package com.wecloud.im.biz.module.message.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImClientPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto;
import com.wecloud.im.biz.module.message.controller.vo.GetInfoListVo;
import com.wecloud.im.biz.module.message.entity.ImClient;
/**
* 终端表 Mapper 接口
*
* @author wei
* @since 2021-04-27
*/
@Repository
public interface ImClientMapper extends BaseMapper<ImClient> {
/**
* 获取分页对象
*
* @param page
* @param imClientPageParam
* @return
*/
IPage<ImClientQueryVo> getImClientPageList(@Param("page") Page page, @Param("param") ImClientPageParam imClientPageParam);
List<GetInfoListVo> getInfoList(@Param("appId") Long appId, @Param("conversationId") Long conversationId, @Param("clientIds") List<String> clientIds);
List<ImClientSimpleDto> getSimpleClients(@Param("appId")Long appId, @Param("clientIds")List<String> clientIds);
List<ImClientSimpleDto> getSimpleClientsByIds(@Param("ids") List<Long> ids);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImConversationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImConversationQueryVo;
import com.wecloud.im.biz.module.message.controller.vo.ConversationVo;
import com.wecloud.im.biz.module.message.entity.ImConversation;
/**
* 会话表 Mapper 接口
*
* @author wei
* @since 2021-05-07
*/
@Repository
public interface ImConversationMapper extends BaseMapper<ImConversation> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImConversationQueryVo getImConversationById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param imConversationPageParam
* @return
*/
IPage<ImConversationQueryVo> getImConversationPageList(@Param("page") Page page, @Param("param") ImConversationPageParam imConversationPageParam);
/**
* 查询用户加入的所有会话 与每个会话的未读条数 成员
*
* @param currentClientId
* @return
*/
List<ConversationVo> getMyImConversationListAndMsgCount(@Param("currentClientId") Long currentClientId, @Param("clientId") String clientId, @Param("conversationId") Long conversationId);
/**
* 查询用户加入的所有会话
*
* @param clientId
* @return
*/
List<ImConversation> getMyImConversationList(@Param("clientId") Long clientId);
/**
* 查询已经存在的一对一会话信息
*
* @param clientId1
* @param clientId2
* @param isEncrypt 是否加密会话 1-是 0-否
* @return
*/
ImConversation getRepetitionConversationSingle(@Param("clientId1") Long clientId1, @Param("clientId2") Long clientId2, @Param("isEncrypt") Integer isEncrypt);
/**
* 判断重复会话中的Attributes是否一样
*
* @param clientId1
* @param clientId2
* @param attributes
* @return 大于等于1为有重复会话
*/
Long getRepetitionConversationAttributes(@Param("clientId1") Long clientId1, @Param("clientId2") Long clientId2, @Param("attributes") String attributes);
/**
* 增减成员数量
* @param appId fkAppid
* @param conversationId 会话id
* @param addCount 要增减的人数, 负数是减
* @return
*/
boolean addMemberCount(@Param("appId") Long appId, @Param("conversationId") Long conversationId, @Param("addCount") int addCount);
/**
* 升级成万人群
* @param appId fkAppId
* @param conversationId 会话id
* @return 成功则返回true
*/
boolean upgradeToThousandChat(@Param("appId") Long appId, @Param("conversationId") Long conversationId);
/**
* 获取发件人和收件人会话列表
* @Author luozh
* @Date 2022年05月06日 07:15:05
* @param senderClientId 发件人im client id
* @param receiverClientIds 收件人 im client ids
* @Return
*/
List<ImConversation> getConversationBySenderAndReceivers(@Param("senderImClientId") Long senderImClientId, @Param(
"receiverImClientIds") Collection<Long> receiverImClientIds);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ListConversationMembersParam;
import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo;
import com.wecloud.im.biz.module.message.entity.ImConversationMembers;
/**
* 会话成员表 Mapper 接口
*
* @author wei
* @since 2021-05-07
*/
@Repository
public interface ImConversationMembersMapper extends BaseMapper<ImConversationMembers> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImConversationMembersQueryVo getImConversationMembersById(Serializable id);
List<ApiImConversationMembersQueryVo> getRestApiImConversationMembersList(@Param("conversationId") Long conversationId);
/**
* 获取群成员列表
* @param param 入参
* @return
*/
List<ConversationMemberVo> getImConversationMembersList(@Param("param") ListConversationMembersParam param);
/**
* 获取分页对象
*
* @param page
* @param imConversationMembersPageParam
* @return
*/
IPage<ImConversationMembersQueryVo> getImConversationMembersPageList(@Param("page") Page page, @Param("param") ImConversationMembersPageParam imConversationMembersPageParam);
List<Long> findThousandGroupsByClientId(@Param("clientId") Long clientId);
/**
* 批量设置群成员
* @param conversationId
* @param fkClientIds
*/
void setAdminsForConversation(@Param("conversationId") Long conversationId, @Param("fkClientIds") List<Long> fkClientIds, @Param("role") Integer role);
/**
* 根据会话id删除群成员
* @param conversationId
*/
void deleteByConversationId(@Param("conversationId") Long conversationId);
}
package com.wecloud.im.biz.module.message.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.entity.ImFriend;
import com.wecloud.im.biz.module.message.param.ImFriendApplyDto;
import com.wecloud.im.biz.module.message.param.ImFriendBaseDto;
/**
* @Description 好友关系mapper
* @Author lixiaozhong
* @Date 2022/1/12 11:41 上午
*/
@Repository
public interface ImFriendMapper extends BaseMapper<ImFriend> {
IPage<ImFriendBaseDto> getImFriendPageList(@Param("page") Page<ImFriendBaseDto> page, @Param("clientId") String clientId);
/**
* 获取待验证的好友列表
* @param page
* @param clientId
* @return
*/
IPage<ImFriendApplyDto> getApplyFriendPageList(@Param("page") Page<ImFriendApplyDto> page, @Param("clientId") String clientId);
ImFriendApplyDto getFriendInfo(@Param("clientId") String clientId, @Param("friendClientId") String friendClientId);
/**
* 过滤得到真的好友,非好友的friendId将被它忽略
* @param clientId
* @param friendClientIds
* @return
*/
List<String> filterNegativeFriends(@Param("clientId") String clientId, @Param("friendClientIds") List<String> friendClientIds);
/**
* 批量删除好友
* @param clientId 删除人的clientId
* @param fkAppId
* @param friendClientIds 被删除人的clientId列表
*/
void batchDeleteFriend(@Param("clientId") String clientId, @Param("fkAppId") Long fkAppId, @Param("friendClientIds") List<String> friendClientIds);
}
package com.wecloud.im.biz.module.message.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.entity.ImFriendRecommend;
import com.wecloud.im.biz.module.message.param.ImFriendRecommendDto;
/**
* @Description 好友推荐关系mapper
* @Author lixiaozhong
* @Date 2022/1/12 11:41 上午
*/
@Repository
public interface ImFriendRecommendMapper extends BaseMapper<ImFriendRecommend> {
IPage<ImFriendRecommendDto> getImFriendRecommendPageList(@Param("page") Page pageParam, @Param("clientId") Long clientId);
/**
* 批量删除好友推荐
* @param clientId
* @param fkAppId
* @param friendClientIds
*/
void batchDeleteRecommend(@Param("clientId") String clientId, @Param("fkAppId") Long fkAppId, @Param("friendClientIds") List<String> friendClientIds);
void batchCreateRecommend(@Param("list") List<ImFriendRecommend> list);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImInboxPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImInboxQueryVo;
import com.wecloud.im.biz.module.message.entity.ImInbox;
/**
* 消息收件箱表 Mapper 接口
*
* @author wei
* @since 2021-05-06
*/
@Repository
public interface ImInboxMapper extends BaseMapper<ImInbox> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImInboxQueryVo getImInboxById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param imInboxPageParam
* @return
*/
IPage<ImInboxQueryVo> getImInboxPageList(@Param("page") Page page, @Param("param") ImInboxPageParam imInboxPageParam);
Long updateImMsgReceivedByIds(@Param("clientId") Long clientId, @Param("msgIds") List<Long> msgIds);
Long updateImMsgReadByIds(@Param("clientId") Long clientId, @Param("msgIds") List<Long> msgIds);
/**
* 统计未读消息数量
*
* @param clientId
* @return
*/
Integer countMyNotReadCount(@Param("clientId") Long clientId);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.ImIosApnsPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo;
import com.wecloud.im.biz.module.message.entity.ImIosApns;
/**
* apns配置表 Mapper 接口
*
* @author wei
* @since 2021-09-18
*/
@Repository
public interface ImIosApnsMapper extends BaseMapper<ImIosApns> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImIosApnsQueryVo getImIosApnsById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param imIosApnsPageParam
* @return
*/
IPage<ImIosApnsQueryVo> getImIosApnsPageList(@Param("page") Page page, @Param("param") ImIosApnsPageParam imIosApnsPageParam);
}
package com.wecloud.im.biz.module.message.mapper;
import java.io.Serializable;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.im.biz.module.message.controller.param.GetReadersParam;
import com.wecloud.im.biz.module.message.controller.param.ImHistoryMessagePageParam;
import com.wecloud.im.biz.module.message.controller.param.ImMessagePageParam;
import com.wecloud.im.biz.module.message.controller.param.ImMessageQueryVo;
import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto;
import com.wecloud.im.biz.module.message.controller.vo.ReaderVo;
import com.wecloud.im.biz.module.message.entity.ImMessage;
/**
* 消息存储表 Mapper 接口
*
* @author wei
* @since 2021-04-29
*/
@Repository
public interface ImMessageMapper extends BaseMapper<ImMessage> {
/**
* 根据ID获取查询对象
*
* @param id
* @return
*/
ImMessageQueryVo getImMessageById(Serializable id);
/**
* 获取分页对象
*
* @param page
* @param imMessagePageParam
* @return
*/
IPage<ImMessageQueryVo> getImMessagePageList(@Param("page") Page page, @Param("param") ImMessagePageParam imMessagePageParam);
/**
* 查询某个会话历史消息分页列表
*
* @param page
* @param imHistoryMessagePageParam
* @return
*/
IPage<OfflineMsgDto> getHistoryMsgConversationId(@Param("page") Page page, @Param("param") ImHistoryMessagePageParam imHistoryMessagePageParam);
IPage<OfflineMsgDto> getHistoryMsgConversationIdNew(@Param("page") Page page, @Param("param") ImHistoryMessagePageParam imHistoryMessagePageParam);
/**
* 根据客户端id与会话id 查询离线消息
*
* @param clientId
* @param conversationId
* @return
*/
List<OfflineMsgDto> getOfflineListByClientAndConversation(@Param("clientId") Long clientId, @Param("conversationId") Long conversationId);
/**
* 查询会话接收的的最后一条消息
*
* @param clientId
* @param conversationId
* @return
*/
OfflineMsgDto getReceivedLastMsgByConversationId(@Param("clientId") Long clientId, @Param("conversationId") Long conversationId);
/**
* 查询会话的最后一条消息
*
* @param conversationId
* @return
*/
OfflineMsgDto getLastMsgByConversationId(@Param("conversationId") Long conversationId, @Param("currentFkClientId") Long currentFkClientId);
/**
* 获取一条消息已读人员和未读人员
* @param currentClientId
* @param param
* @return
*/
List<ReaderVo> getReaders(@Param("currentClientId") Long currentClientId, @Param("param") GetReadersParam param);
}
package com.wecloud.im.biz.module.message.mapper;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom;
/**
* @Author wenzhida
* @Date 2022/3/16 9:19
* @Description 多人音视频房间mapper
*/
@Repository
public interface ImMultiRtcRoomMapper extends BaseMapper<ImMultiRtcRoom> {
}
package com.wecloud.im.biz.module.message.mapper;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember;
/**
* @Author wenzhida
* @Date 2022/3/16 9:19
* @Description 多人音视频房间mapper
*/
@Repository
public interface ImMultiRtcRoomMemberMapper extends BaseMapper<ImMultiRtcRoomMember> {
}
package com.wecloud.im.biz.module.message.mapper;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wecloud.im.biz.module.message.entity.ImRtcRecord;
/**
* @Author Future
* @Date 2022/5/22 23:49
* @Description 单人音视频记录mapper
*/
@Repository
public interface ImRtcRecordMapper extends BaseMapper<ImRtcRecord> {
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public class FriendApplyEventDto extends FriendBaseEventDto {
@ApiModelProperty("好友请求说明")
private String requestRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public class FriendApproveEventDto extends FriendBaseEventDto {
@ApiModelProperty("是否同意接受好友,true同意,false拒绝")
private Boolean agree;
@ApiModelProperty("好友拒绝原因")
private String rejectRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.wecloud.im.biz.enums.EventResponseSubCmdEnum;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/14 11:56 上午
*/
@Data
public class FriendBaseEventDto implements Serializable {
/**
* 参考 {@link EventResponseSubCmdEnum EventResponseSubCmdEnum}
*/
@ApiModelProperty("响应命令")
private Integer subCmd;
@ApiModelProperty("申请人的client-id")
private String claimerClientId;
@ApiModelProperty("好友的client-id")
private String friendClientId;
}
package com.wecloud.im.biz.module.message.param;
import lombok.Data;
/**
* 好友备注请求
* @Author luozh
* @Date 2022年05月16日 11:09
* @Version 1.0
*/
@Data
public class FriendRemarkParam {
/**
* 用户id
*/
private String userId;
/**
* 朋友用户id
*/
private String friendUserId;
/**
* 备注
*/
private String friendRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/2/7 16:30
* @Description 批量创建好友推荐入参
*/
@Data
public class ImCreateRecommendParam implements Serializable {
private static final long serialVersionUID = 5228604783548712598L;
@ApiModelProperty("推荐好友列表")
private List<ImFriendRecommendDto> recommendFriends;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/2/7 16:30
* @Description 删除好友入参
*/
@Data
public class ImDeleteFriendParam implements Serializable {
private static final long serialVersionUID = 5228604783548712598L;
@ApiModelProperty("好友的client-id")
private List<String> friendClientIds;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author wenzhida
* @Date 2022/2/7 16:30
* @Description 批量删除好友推荐入参
*/
@Data
public class ImDeleteRecommendParam implements Serializable {
private static final long serialVersionUID = -2325444195601100874L;
@ApiModelProperty("推荐好友列表")
private List<String> friendClientIds;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description 好友信息
* @Author lixiaozhong
* @Date 2022/1/12 1:59 下午
*/
@Data
public class ImFriendApplyDto extends ImFriendBaseDto {
private static final long serialVersionUID = 1L;
@ApiModelProperty("好友申请者")
private String claimerClientId;
@ApiModelProperty("好友拒绝原因")
private String rejectRemark;
@ApiModelProperty("好友请求说明")
private String requestRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description 申请好友入参
* @Author lixiaozhong
* @Date 2022/1/13 4:24 下午
*/
@Data
public class ImFriendApplyParam extends ImFriendBaseParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty("会话id,群成员添加好友时传参")
private Long conversationId;
@ApiModelProperty("备注好友名称")
private String friendName;
@ApiModelProperty("请求备注")
private String requestRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/13 4:24 下午
*/
@Data
public class ImFriendApproveParam extends ImFriendBaseParam {
private static final long serialVersionUID = 1L;
@ApiModelProperty("是否同意接受好友,true同意,false拒绝")
private Boolean agree;
@ApiModelProperty("拒绝理由,如果是同意就不用填啦")
private String rejectRemark;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 好友信息
* @Author lixiaozhong
* @Date 2022/1/12 1:59 下午
*/
@Data
public class ImFriendBaseDto implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("好友的client-id")
private String friendClientId;
@ApiModelProperty("好友的昵称备注")
private String friendName;
@ApiModelProperty("好友关系状态,1:待确定,2:已确认,3:已拒绝,4:已删除")
private Integer state;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 好友相关base入参
* @Author lixiaozhong
* @Date 2022/1/13 4:24 下午
*/
@Data
public class ImFriendBaseParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("clientId")
private String clientId;
@ApiModelProperty("好友的client-id")
private String friendClientId;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.wecloud.can.datasource.mybatisplus.pagination.BasePageOrderParam;
/**
* @Description 好友分页
* @Author lixiaozhong
* @Date 2022/1/12 2:24 下午
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "好友分页")
public class ImFriendPageParam extends BasePageOrderParam {
private static final long serialVersionUID = 1L;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 好友信息
* @Author lixiaozhong
* @Date 2022/1/12 1:59 下午
*/
@Data
public class ImFriendRecommendDto implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("好友的clientId")
private String friendClientId;
@ApiModelProperty("好友推荐来源,1:通讯录,2:二度人脉,3:附近的人,4:同类标签")
private Integer source;
@ApiModelProperty("是否删除")
private Boolean delFlag;
}
package com.wecloud.im.biz.module.message.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
*
* @Author luozh
* @Date 2022年05月16日 10:34
* @Version 1.0
*/
@Data
public class UnfriendParam {
/**
* 用户id
*/
@ApiModelProperty("用户id")
private String userId;
/**
* 朋友id 多个用,隔开
*/
@ApiModelProperty("朋友id 多个用,隔开")
private String friendUserIds;
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient;
/**
* 请求上下文服务
* @Author luozh
* @Date 2022年04月02日 14:51
* @Version 1.0
*/
public interface ContextService {
/**
* 获取当前或指定clientId的ImClient 存在返回 不存在则抛出异常
* @Author luozh
* @Date 2022年04月02日 02:52:09
* @param request Ws请求
* @Return
*/
ImClient getImClientIfNotNullOrThrow();
/**
* 获取当前或指定appId的ImApplication 存在返回 不存在则抛出异常
* @Author luozh
* @Date 2022年04月02日 02:54:21
* @param appId 应用id
* @Return
*/
ImApplication getImApplicationIfNotNullOrThrow(Long appId);
}
package com.wecloud.im.biz.module.message.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.wecloud.can.core.enums.ApiCode;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.core.rocketmq.component.MqSender;
import com.wecloud.im.biz.enums.EventResponseSubCmdEnum;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.param.FriendApplyEventDto;
import com.wecloud.im.biz.module.message.param.FriendApproveEventDto;
import com.wecloud.im.server.enums.WsResponseCmdEnum;
import com.wecloud.im.server.model.WsResponse;
import com.wecloud.im.server.model.request.PushVO;
import com.wecloud.im.server.sender.ChannelSender;
import com.wecloud.pushserver.client.model.constant.MqConstant;
import com.wecloud.pushserver.client.model.dto.PushDTO;
/**
* @Description TODO
* @Author lixiaozhong
* @Date 2022/1/13 5:35 下午
*/
@Component
public class FriendEventSender {
@Autowired
private ChannelSender channelSender;
@Autowired
private ImApplicationService imApplicationService;
@Autowired
private MqSender mqSender;
private final static String FRIEND_APPLY_TITLE = "好友申请";
private final static String FRIEND_APPLY_TITLE_SUB = "您有好友申请待验证";
private final static String FRIEND_APPROVE_TITLE = "好友验证结果";
private final static String FRIEND_APPROVE_TITLE_AGREE = "您的好友同意了您的好友申请";
private final static String FRIEND_APPROVE_TITLE_REJECT = "您的好友拒绝了您的好友申请";
public void sendFriendApplyEventMsg(ImClient claimerClient, ImClient receiveClient, String requestRemark) {
FriendApplyEventDto applyDto = new FriendApplyEventDto();
applyDto.setSubCmd(EventResponseSubCmdEnum.FRIEND_APPLY.getCode());
applyDto.setRequestRemark(requestRemark);
applyDto.setClaimerClientId(claimerClient.getClientId());
applyDto.setFriendClientId(receiveClient.getClientId());
// 向接收方推送
WsResponse<FriendApplyEventDto> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.NOTICE_EVENT_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(applyDto);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, receiveClient.getId());
ImApplication app = imApplicationService.getCacheById(receiveClient.getFkAppid());
PushVO pushVO = new PushVO();
pushVO.setTitle(FRIEND_APPLY_TITLE);
pushVO.setSubTitle(FRIEND_APPLY_TITLE_SUB);
PushDTO pushDTO = mqSender.buildPushDto(pushVO, receiveClient, app);
if (pushDTO != null) {
mqSender.orderSend(MqConstant.Topic.IM_ORDER_MSG_TOPIC, MqConstant.Tag.IM_ORDER_MSG_TAG, pushDTO);
}
}
public void sendFriendApproveEventMsg(ImClient claimerClient, ImClient receiveClient, boolean isAgree, String rejectRemark) {
FriendApproveEventDto approveDto = new FriendApproveEventDto();
approveDto.setSubCmd(EventResponseSubCmdEnum.FRIEND_APPROVE.getCode());
approveDto.setAgree(isAgree);
approveDto.setRejectRemark(rejectRemark);
approveDto.setClaimerClientId(claimerClient.getClientId());
approveDto.setFriendClientId(receiveClient.getClientId());
// 向接收方推送
WsResponse<FriendApproveEventDto> responseModel = new WsResponse<>();
responseModel.setCmd(WsResponseCmdEnum.NOTICE_EVENT_MSG.getCmdCode());
ApiResult<Boolean> result = ApiResult.result(ApiCode.SUCCESS);
responseModel.setCode(result.getCode());
responseModel.setMsg(result.getMessage());
responseModel.setData(approveDto);
responseModel.setReqId(null);
channelSender.sendMsg(responseModel, receiveClient.getId());
ImApplication app = imApplicationService.getCacheById(receiveClient.getFkAppid());
PushVO pushVO = new PushVO();
pushVO.setTitle(FRIEND_APPROVE_TITLE);
pushVO.setSubTitle(isAgree ? FRIEND_APPROVE_TITLE_AGREE : FRIEND_APPROVE_TITLE_REJECT);
PushDTO pushDTO = mqSender.buildPushDto(pushVO, receiveClient, app);
if (pushDTO != null) {
mqSender.orderSend(MqConstant.Topic.IM_ORDER_MSG_TOPIC, MqConstant.Tag.IM_ORDER_MSG_TAG, pushDTO);
}
}
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication;
/**
* 第三方应用表 服务类
*
* @author wei
* @since 2021-04-27
*/
public interface ImApplicationService extends BaseService<ImApplication> {
/**
* 根据id查询应用数据 redis缓存
*
* @param id
* @return
*/
ImApplication getCacheById(Long id);
/**
* 删除缓存
*
* @param id
*/
void deleteCacheById(Long id);
/**
* 删除缓存
*
* @param appKey
*/
void deleteCacheByAppKey(String appKey);
/**
* 根据appKey查询application
*
* @param appKey
* @return
*/
ImApplication getCacheAppByAppKey(String appKey);
/**
* 保存
*
* @param imApplication
* @return
* @throws Exception
*/
boolean saveImApplication(ImApplication imApplication) throws Exception;
// /**
// * 修改
// *
// * @param imApplication
// * @return
// * @throws Exception
// */
// boolean updateImApplication(ImApplication imApplication) throws Exception;
//
// /**
// * 删除
// *
// * @param id
// * @return
// * @throws Exception
// */
// boolean deleteImApplication(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
ImApplicationQueryVo getImApplicationById(Long id) throws Exception;
/**
* 获取分页对象
*
* @param imApplicationPageParam
* @return
* @throws Exception
*/
Paging<ImApplicationQueryVo> getImApplicationPageList(ImApplicationPageParam imApplicationPageParam) throws Exception;
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.im.biz.module.message.entity.ImMessage;
/**
* sdk 回调服务
* @Author luozh
* @Date 2022年04月22日 09:08
* @Version 1.0
*/
public interface ImCallbackService {
/**
* 全量消息路由
* @Author luozh
* @Date 2022年04月22日 09:10:15
* @param
* @Return 路由结果
*/
Boolean fullMessageRouting(Long applicationId, ImMessage message);
/**
* 用户在线状态变化
* @Author luozh
* @Date 2022年04月22日 09:11:28
* @param
* @Return
*/
Boolean clientOnlineStatusChange(Long applicationId, Long clientId, Integer status,
Integer deviceType, Long time, String clientIp);
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientBlacklistQueryVo;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientBlacklistUpdate;
import com.wecloud.im.biz.module.message.entity.ImClientBlacklist;
/**
* 黑名单 服务类
*
* @author wei
* @since 2021-06-17
*/
public interface ImClientBlacklistService extends BaseService<ImClientBlacklist> {
/**
* 当前客户端是否被拉黑
*
* @param currentClientId 当前客户端
* @param toClientId 对方客户端
* @return
*/
boolean isBeBlack(String currentClientId, String toClientId);
/**
* 拉入黑名单
*
* @param imClientBlacklistUpdate
* @return
* @throws Exception
*/
Boolean addImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate);
/**
* 移出黑名单
*
* @param imClientBlacklistUpdate
* @return
* @throws Exception
*/
Boolean removeImClientBlacklist(ImClientBlacklistUpdate imClientBlacklistUpdate);
/**
* 获取分页对象
*
* @return
* @throws Exception
*/
Paging<ImClientBlacklistQueryVo> getImClientBlacklistPageList(ImClientBlacklistPageParam imClientBlacklistPageParam);
/**
* 获取分页对象
*
* @return
* @throws Exception
*/
Paging<ImClientBlacklistQueryVo> getImClientBlacklistPageListSdk(ImClientBlacklistPageParam imClientBlacklistPageParam);
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImClientDevice;
/**
* @Author wenzhida
* @Date 2022/3/2 14:58
* @Description 客户端设备服务接口
*/
public interface ImClientDeviceService extends BaseService<ImClientDevice> {
/**
* 清除旧token
* @param appId
* @param deviceToken
* @return
*/
int removeOldToken(Long appId, String deviceToken);
/**
* 根据
* @Author luozh
* @Date 2022年04月18日 11:08:30
* @param appId
* @param fkClientId
* @param deviceType
* @Return
*/
ImClientDevice getOneByAppIdAndClientIdAndType(Long appId, Long fkClientId, Integer deviceType);
}
package com.wecloud.im.biz.module.message.service;
import com.alibaba.nacos.api.exception.NacosException;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.im.biz.module.message.controller.param.ImTokenVerify;
import com.wecloud.im.biz.module.message.controller.vo.TokenVo;
/**
* 终端表 服务类
*
* @author wei
* @since 2021-04-27
*/
public interface ImClientLoginService {
/**
* 根据客户方生成签名字符串 验证通过则下发token
*
* @param imTokenVerify
* @return
*/
ApiResult<TokenVo> verifySign(ImTokenVerify imTokenVerify) throws NacosException;
/**
* 获取client Token
* @Author luozh
* @Date 2022年04月18日 10:56:24
* @param
* @Return
*/
ApiResult<TokenVo> getToken(String clientId, Integer deviceType) throws NacosException;
}
package com.wecloud.im.biz.module.message.service;
import java.util.List;
import java.util.Map;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ClientInfoParam;
import com.wecloud.im.biz.module.message.controller.param.ClientRelationVo;
import com.wecloud.im.biz.module.message.controller.param.GetClientInfoParam;
import com.wecloud.im.biz.module.message.controller.param.GetClientRelationParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto;
import com.wecloud.im.biz.module.message.controller.param.LogoutParam;
import com.wecloud.im.biz.module.message.controller.param.RegisterClientParam;
import com.wecloud.im.biz.module.message.controller.param.add.ClientDeviceUpdateParam;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientHeadPortraitAdd;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientHeadPortraitAndNicknameUpdate;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientNicknameAdd;
import com.wecloud.im.biz.module.message.controller.param.add.ImClientNicknameUpdate;
import com.wecloud.im.biz.module.message.controller.vo.ClientInfoVo;
import com.wecloud.im.biz.module.message.controller.vo.GetInfoListVo;
import com.wecloud.im.biz.module.message.controller.vo.MyInfoVo;
import com.wecloud.im.biz.module.message.entity.ImClient;
/**
* 终端表 服务类
*
* @author wei
* @since 2021-04-27
*/
public interface ImClientService extends BaseService<ImClient> {
/**
* 查询我的信息
* @return
*/
MyInfoVo getMyInfo();
/**
* 更新头像
* @param imClientHeadPortraitAdd
* @return
*/
boolean updateHeadPortrait(ImClientHeadPortraitAdd imClientHeadPortraitAdd);
/**
* 修改昵称
* @param imClientNicknameUpdate
* @return
*/
boolean updateNickname(ImClientNicknameUpdate imClientNicknameUpdate);
/**
*
* @Author luozh
* @Date 2022年04月18日 07:21:27
* @param imClientHeadPortraitAndNicknameUpdate
* @Return
*/
boolean updateHeadAndNickname(ImClientHeadPortraitAndNicknameUpdate imClientHeadPortraitAndNicknameUpdate);
/**
* 根据ids获取Client的头像昵称
*
* @param getClientInfoParam
* @return
* @throws Exception
*/
List<GetInfoListVo> getInfoList(GetClientInfoParam getClientInfoParam) throws Exception;
/**
* 获取群里成员信息
* @param param
* @return
*/
ClientInfoVo getClientInfo(ClientInfoParam param);
boolean updateNickname(ImClientNicknameAdd imClientNicknameAdd) throws Exception;
/**
* 保存
*
* @param imClient
* @return
* @throws Exception
*/
boolean saveImClient(ImClient imClient) throws Exception;
/**
* 添加或修改推送设备信息
*
* @param imClientDevice
* @return
*/
boolean updateDeviceInfo(ClientDeviceUpdateParam imClientDevice);
/**
* 登出操作
* @param param
* @return
*/
boolean logout(LogoutParam param);
/**
* 修改
*
* @param imClient
* @return
* @throws Exception
*/
boolean updateImClient( ImClient imClient) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteImClient(Long id);
/**
* 获取分页对象
*
* @param imClientPageParam
* @return
* @throws Exception
*/
Paging<ImClientQueryVo> getImClientPageList(ImClientPageParam imClientPageParam) throws Exception;
/**
* 获取当前请求的client对象
*
* @return
*/
ImClient getCurrentClient();
ImClient getCacheImClient(Long applicationId, String clientId);
void deleteCacheImClient(Long applicationId, String clientId);
/**
* 根据ID获取client对象,有缓存
*
* @param id
* @return
* @throws Exception
*/
ImClient getCacheImClient(Long id);
/**
* 获取client的简单对象,减少开销
* @param applicationId
* @param clientIds
* @return
*/
List<ImClientSimpleDto> getSimpleClients(Long applicationId, List<String> clientIds);
List<ImClientSimpleDto> getSimpleClients(List<Long> ids);
/**
* 注册客户端
* @Author luozh
* @Date 2022年04月13日 05:20:58
* @param param
* @Return
*/
Long registerClient(RegisterClientParam param);
/**
* 获取客户端关系
* @Author luozh
* @Date 2022年05月12日 07:04:04
* @param param
* @Return
*/
ClientRelationVo getClientRelation(GetClientRelationParam param);
Map<String, String> getUserAttributes(String userId);
Boolean modifyUserAttributes(String userId, Map<String, Object> attributes);
}
package com.wecloud.im.biz.module.message.service;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ApiImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ChatSettingParam;
import com.wecloud.im.biz.module.message.controller.param.ImConvMemeClientRemarkNameParam;
import com.wecloud.im.biz.module.message.controller.param.ImConversationMembersPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImConversationMembersQueryVo;
import com.wecloud.im.biz.module.message.controller.param.ListConversationMembersParam;
import com.wecloud.im.biz.module.message.controller.param.SetAdminsParam;
import com.wecloud.im.biz.module.message.controller.param.add.ImConversationMemAttrUpdate;
import com.wecloud.im.biz.module.message.controller.vo.ConversationMemberVo;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImConversationMembers;
import com.wecloud.im.biz.module.message.param.ImFriendApplyParam;
/**
* 会话成员表 服务类
*
* @author wei
* @since 2021-05-07
*/
public interface ImConversationMembersService extends BaseService<ImConversationMembers> {
/**
* 服务端api-会话成员表分页列表
*
* @param apiImConversationMembersPageParam
* @param imApplication
* @return
*/
ApiResult<List<ApiImConversationMembersQueryVo>> getRestApiImConversationMembersList(ApiImConversationMembersPageParam apiImConversationMembersPageParam, ImApplication imApplication);
/**
* 添加或修改会话成员备注
* @param param
* @return
*/
void saveOrUpdateClientRemarkName(ImConvMemeClientRemarkNameParam param);
/**
* 会话成员表分页列表
*
* @param param
* @return
* @throws Exception
*/
List<ConversationMemberVo> getImConversationMembersList(ListConversationMembersParam param);
Boolean saveOrUpdateAttr(ImConversationMemAttrUpdate imConversationMemAttrUpdate);
/**
* 保存
*
* @param imConversationMembers
* @return
* @throws Exception
*/
boolean saveImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;
/**
* 修改
*
* @param imConversationMembers
* @return
* @throws Exception
*/
boolean updateImConversationMembers(ImConversationMembers imConversationMembers) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteImConversationMembers(Long id);
/**
* 根据会话id做删除
* @param conversationId 会话id
*/
void deleteByConversationId(Long conversationId);
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
ImConversationMembersQueryVo getImConversationMembersById(Long id) throws Exception;
/**
* 获取分页对象
*
* @param imConversationMembersPageParam
* @return
* @throws Exception
*/
Paging<ImConversationMembersQueryVo> getImConversationMembersPageList(ImConversationMembersPageParam imConversationMembersPageParam) throws Exception;
/**
* 根据用户id 获取千人群id列表
* @param clientId 用户id
* @return
*/
List<Long> findThousandGroupsByClientId(Long clientId);
/**
* 批量设置群成员
* @param param
* @param fkClientIds
*/
void setAdminsForConversation(SetAdminsParam param, List<Long> fkClientIds);
/**
* 置顶
* @Author luozh
* @Date 2022年04月25日 06:24:43
* @param
* @Return
*/
Boolean chatSetting(ChatSettingParam param);
/**
* 群成员添加好友
* @Author luozh
* @Date 2022年04月28日 11:48:42
* @param param
* @Return
*/
Boolean addUser(@RequestBody ImFriendApplyParam param);
}
package com.wecloud.im.biz.module.message.service;
import java.util.List;
import com.wecloud.im.biz.module.message.controller.param.group.MutedMembersParam;
/**
* 群服务
* @Author luozh
* @Date 2022年05月10日 15:17
* @Version 1.0
*/
public interface ImGroupService {
/**
* 创建群组
* @Author luozh
* @Date 2022年05月10日 03:22:13
* @param creatorClientId
* @param groupName
* @param memberIds
* @Return
*/
Long createGroup(String creatorClientId, String groupName, List<String> memberIds);
/**
* 解散群组
* @Author luozh
* @Date 2022年05月10日 03:22:26
* @param userId
* @param groupId
* @Return
*/
Boolean dismissGroup(String userId, String groupId);
/**
* 加入群组
* @Author luozh
* @Date 2022年05月10日 03:22:35
* @param groupId
* @param memberClientIds
* @Return
*/
Integer joinGroup(String inviterUserId, String groupId, List<String> memberClientIds);
/**
* 离开群组
* @Author luozh
* @Date 2022年05月10日 03:22:44
* @param groupId
* @param memberClientIds
* @Return
*/
Integer leaveGroup(String operatorUserId, String groupId, List<String> memberClientIds);
/**
* 获取群成员列表
* @Author luozh
* @Date 2022年05月10日 03:23:09
* @param groupId
* @Return
*/
List<String> listGroupMembers(String groupId);
/**
* 禁言群成员
* @Author luozh
* @Date 2022年05月16日 07:43:41
* @param param
* @Return
*/
Boolean mutedMembers(MutedMembersParam param);
/**
* 转移群成员
* @Author luozh
* @Date 2022年05月17日 04:20:56
* @param groupId
* @param newGroupOwnerUserId
* @Return
*/
Boolean groupOwnerTransfer(String groupId, String newGroupOwnerUserId);
/**
* 添加管理员
* @Author luozh
* @Date 2022年05月17日 06:27:04
* @param groupId
* @param adminUserIds
* @Return
*/
Boolean addGroupAdmin(String groupId, String adminUserIds);
/**
* 移除管理员
* @Author luozh
* @Date 2022年05月17日 06:27:07
* @param groupId
* @param adminUserIds
* @Return
*/
Boolean removeGroupAdmin(String groupId, String adminUserIds);
}
package com.wecloud.im.biz.module.message.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImMsgReceivedStatusUpdate;
import com.wecloud.im.biz.module.message.controller.param.MsgReadStatusUpdateParam;
import com.wecloud.im.biz.module.message.controller.param.UpdateMsgReadStatusByConversationParam;
import com.wecloud.im.biz.module.message.entity.ImInbox;
/**
* 消息收件箱表 服务类
*
* @author wei
* @since 2021-05-06
*/
public interface ImInboxService extends BaseService<ImInbox> {
// /**
// * 保存
// *
// * @param imInbox
// * @return
// * @throws Exception
// */
// boolean saveImInbox(ImInbox imInbox) throws Exception;
//
// /**
// * 修改
// *
// * @param imInbox
// * @return
// * @throws Exception
// */
// boolean updateImInbox(ImInbox imInbox) throws Exception;
//
// /**
// * 删除
// *
// * @param id
// * @return
// * @throws Exception
// */
// boolean deleteImInbox(Long id) throws Exception;
//
// /**
// * 根据ID获取查询对象
// *
// * @param id
// * @return
// * @throws Exception
// */
// ImInboxQueryVo getImInboxById(Long id) throws Exception;
//
// /**
// * 获取分页对象
// *
// * @param imInboxPageParam
// * @return
// * @throws Exception
// */
// Paging<ImInboxQueryVo> getImInboxPageList(ImInboxPageParam imInboxPageParam) throws Exception;
/**
* 消息修改为已接收状态
*
* @param imMsgReceivedUpdate
* @return
*/
Boolean updateImMsgReceived(ImMsgReceivedStatusUpdate imMsgReceivedUpdate);
/**
* 统计未读消息数量
*
* @param clientId
* @return
*/
Integer countMyNotReadCount(Long clientId);
/**
* 消息修改为已读状态
*
* @return
*/
Boolean updateImMsgRead(MsgReadStatusUpdateParam msgReadStatusUpdateParam) throws JsonProcessingException;
/**
* 整个会话消息修改为已读状态
* @param param
* @return
*/
Boolean updateMsgReadStatusByConversation(UpdateMsgReadStatusByConversationParam param);
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ImIosApnsQueryVo;
import com.wecloud.im.biz.module.message.entity.ImIosApns;
/**
* apns配置表 服务类
*
* @author wei
* @since 2021-09-18
*/
public interface ImIosApnsService extends BaseService<ImIosApns> {
/**
* 保存
*
* @param imIosApns
* @return
* @throws Exception
*/
boolean saveImIosApns(ImIosApns imIosApns) throws Exception;
/**
* 修改
*
* @param imIosApns
* @return
* @throws Exception
*/
boolean updateImIosApns(ImIosApns imIosApns) throws Exception;
/**
* 删除
*
* @param id
* @return
* @throws Exception
*/
boolean deleteImIosApns(Long id) throws Exception;
/**
* 根据ID获取查询对象
*
* @param id
* @return
* @throws Exception
*/
ImIosApnsQueryVo getImIosApnsById(Long id) throws Exception;
ImIosApns getImIosApnsByAppId(Long appId);
/**
* 获取分页对象
*
* @param imIosApnsPageParam
* @return
* @throws Exception
*/
// Paging<ImIosApnsQueryVo> getImIosApnsPageList(ImIosApnsPageParam imIosApnsPageParam) throws Exception;
}
package com.wecloud.im.biz.module.message.service;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;
import com.wecloud.can.core.util.ApiResult;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.controller.param.ChatContentVo;
import com.wecloud.im.biz.module.message.controller.param.GetReadersParam;
import com.wecloud.im.biz.module.message.controller.param.GroupChatMessageParam;
import com.wecloud.im.biz.module.message.controller.param.GroupChatStatusMessageParam;
import com.wecloud.im.biz.module.message.controller.param.ImClientSimpleDto;
import com.wecloud.im.biz.module.message.controller.param.ImHistoryMessagePageParam;
import com.wecloud.im.biz.module.message.controller.param.MsgDeleteParam;
import com.wecloud.im.biz.module.message.controller.param.PrivateChatMessageParam;
import com.wecloud.im.biz.module.message.controller.param.PrivateChatStatusMessageParam;
import com.wecloud.im.biz.module.message.controller.param.SingleUserNotificationParam;
import com.wecloud.im.biz.module.message.controller.param.add.ImMsgRecall;
import com.wecloud.im.biz.module.message.controller.param.add.ImMsgSendToOnlineClient;
import com.wecloud.im.biz.module.message.controller.param.add.ImMsgUpdate;
import com.wecloud.im.biz.module.message.controller.vo.ImMessageOfflineListVo;
import com.wecloud.im.biz.module.message.controller.vo.OfflineMsgDto;
import com.wecloud.im.biz.module.message.controller.vo.ReaderList;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImMessage;
import com.wecloud.im.server.model.request.ReceiveDataVO;
import com.wecloud.im.server.model.request.ReceiveVO;
/**
* 消息存储表 服务类
*
* @author wei
* @since 2021-04-29
*/
public interface ImMessageService extends BaseService<ImMessage> {
/**
* 下发透传消息
*
* @param imMsgSendToOnlineClient
* @return
*/
ApiResult<Boolean> restApiImMessageSend(ImMsgSendToOnlineClient imMsgSendToOnlineClient, ImApplication imApplication);
ImMessage saveImMessage(ImApplication imApplication, ImClient imClientSender, long messageId, ReceiveVO receiveVO, ReceiveDataVO sysParam);
@Transactional(rollbackFor = Exception.class)
ImMessage saveImMessage(ImClientSimpleDto client, long messageId, ChatContentVo data);
/**
* 消息撤回
* @param imMsgRecall
* @param request
* @return
*/
Boolean withdrawMsg(ImMsgRecall imMsgRecall);
/**
* 删除消息
* @param param
* @return
*/
Boolean deleteMsg(MsgDeleteParam param);
/**
* 修改消息体
*
* @param imMsgUpdate
* @return
*/
Boolean updateMsgById(ImMsgUpdate imMsgUpdate);
/**
* 查询某个会话历史消息分页列表
*
* @param param
* @return
* @throws Exception
*/
Paging<OfflineMsgDto> getHistoryMsgConversationId(ImHistoryMessagePageParam param);
/**
* 查询某个会话历史消息分页列表
*
* @param param
* @return
* @throws Exception
*/
Paging<OfflineMsgDto> getHistoryMsgConversationIdNew(ImHistoryMessagePageParam param);
/**
* 查询用户所有离线消息
*
* @return
* @throws Exception
*/
List<ImMessageOfflineListVo> getOfflineList() throws Exception;
/**
* 根据客户端id与会话id 查询离线消息
*
* @param clientId
* @param conversationId
* @return
*/
List<OfflineMsgDto> getOfflineListByClientAndConversation(Long clientId, Long conversationId);
/**
* 查询会话的最后一条消息
*
* @param conversationId
* @return
*/
OfflineMsgDto getLastMsgByConversationId(Long conversationId, Long currentFkClientId);
/**
* 查询会话接收的最后一条消息
*
* @param clientId
* @param conversationId
* @return
*/
OfflineMsgDto getReceivedLastMsgByConversationId(Long clientId, Long conversationId);
/**
* 保存
*
* @param imMessage
* @return
* @throws Exception
*/
boolean saveImMessage(ImMessage imMessage) throws Exception;
/**
* 获取读取人员
* @param param
* @return
*/
ReaderList getReaders(GetReadersParam param);
/**
* 发送群聊消息
* @param param
* @return
*/
Boolean groupMessagePublish(GroupChatMessageParam param);
/**
* 发送群聊状态消息
* @Author luozh
* @Date 2022年05月05日 02:32:58
* @param param
* @Return
*/
Boolean groupStatusMessagePublish(GroupChatStatusMessageParam param);
/**
* 发送单聊消息
* @Author luozh
* @Date 2022年05月05日 02:33:26
* @param param
* @Return
*/
Boolean privateMessagePublish(PrivateChatMessageParam param);
/**
* 发送单聊状态消息
* @Author luozh
* @Date 2022年05月05日 02:33:56
* @param param
* @Return
*/
Boolean privateStatusMessagePublish(PrivateChatStatusMessageParam param);
/**
* 单个用户通知-普通消息
* @Author luozh
* @Date 2022年05月25日 10:42:31
* @param param
* @Return
*/
Boolean singleUserNotification(SingleUserNotificationParam param);
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoomMember;
/**
* @Author wenzhida
* @Date 2022/3/16 9:08
* @Description 多人音视频房间成员服务接口
*/
public interface ImMultiRtcRoomMemberService extends BaseService<ImMultiRtcRoomMember> {
/**
* 改变会议成员状态
* @param fkClientId
* @param roomId
* @param state
*/
void changeRoomMemberState(Long fkClientId, String roomId, Integer state);
}
package com.wecloud.im.biz.module.message.service;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.module.message.entity.ImMultiRtcRoom;
/**
* @Author wenzhida
* @Date 2022/3/16 9:08
* @Description 多人音视频房间服务接口
*/
public interface ImMultiRtcRoomService extends BaseService<ImMultiRtcRoom> {
/**
* 获取多人音视频房间
* @param fkAppid
* @param roomId
* @return
*/
ImMultiRtcRoom getCachedMultiRtcRoom(Long fkAppid, String roomId);
/**
* 清房间缓存
* @param fkAppid
* @param roomId
*/
void deleteMultiRtcRoomCache(Long fkAppid, String roomId);
/**
* 更新多人音视频房间状态
* @param roomId
* @param state
*/
void updateMultiRtcRoomState(String roomId, Integer state);
}
package com.wecloud.im.biz.module.message.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.datasource.mybatisplus.service.BaseService;
import com.wecloud.im.biz.enums.SingleRtcOperateTypeEnum;
import com.wecloud.im.biz.module.message.controller.param.rtc.CreateRtcChannelParam;
import com.wecloud.im.biz.module.message.controller.param.rtc.SingleRtcRecordParam;
import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.entity.ImRtcRecord;
/**
* @Author wenzhida
* @Date 2022/3/16 9:08
* @Description 单人音视频房记录服务接口
*/
public interface ImRtcRecordService extends BaseService<ImRtcRecord> {
/**
* 创建rtc通话记录
* @param param
* @param channelId
*/
void createRtcRecord(CreateRtcChannelParam param, Long channelId, ImClient currentClient);
/**
* 更新音视频记录
* @param channelId
* @param type 1-同意进入频道 2-拒接进入频道 3-主动挂断(离开频道) 4-异常原因断开
* @see SingleRtcOperateTypeEnum
*/
void updateRtcRecord(Long channelId, Integer type);
/**
* 获取通话记录
*/
Page<ImRtcRecord> getPageImRtcRecords(SingleRtcRecordParam singleRtcRecordParam);
}
package com.wecloud.im.biz.module.message.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import com.wecloud.can.core.exception.BusinessException;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.entity.ImClient;
import com.wecloud.im.biz.module.message.service.ContextService;
import com.wecloud.im.biz.module.message.service.ImApplicationService;
import com.wecloud.im.biz.module.message.service.ImClientService;
/**
* 请求上下文服务 impl
* @Author luozh
* @Date 2022年04月02日 14:56
* @Version 1.0
*/
@Service
public class ContextServiceImpl implements ContextService {
@Autowired
@Lazy
private ImClientService imClientService;
@Autowired
private ImApplicationService imApplicationService;
@Override
public ImClient getImClientIfNotNullOrThrow() {
ImClient currentClient = imClientService.getCurrentClient();
if (currentClient == null) {
throw new BusinessException("当前用户登录信息失效");
}
return currentClient;
}
@Override
public ImApplication getImApplicationIfNotNullOrThrow(Long appId) {
ImApplication imApplication = imApplicationService.getCacheById(appId);
if (imApplication == null) {
throw new BusinessException("查无应用信息");
}
return imApplication;
}
}
package com.wecloud.im.biz.module.message.service.impl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wecloud.can.datasource.mybatisplus.pagination.PageInfo;
import com.wecloud.can.datasource.mybatisplus.pagination.Paging;
import com.wecloud.can.datasource.mybatisplus.service.impl.BaseServiceImpl;
import com.wecloud.can.security.signature.Application;
import com.wecloud.can.security.signature.ApplicationService;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationPageParam;
import com.wecloud.im.biz.module.message.controller.param.ImApplicationQueryVo;
import com.wecloud.im.biz.module.message.entity.ImApplication;
import com.wecloud.im.biz.module.message.mapper.ImApplicationMapper;
import com.wecloud.im.biz.module.message.service.ImApplicationService;
/**
* 第三方应用表 服务实现类
*
* @author wei
* @since 2021-04-27
*/
@Slf4j
@Service
@CacheConfig(cacheNames = "appl")
public class ImApplicationServiceImpl extends BaseServiceImpl<ImApplicationMapper, ImApplication> implements ImApplicationService, ApplicationService {
@Autowired
private ImApplicationMapper imApplicationMapper;
@Override
// @Cacheable(key = "'id_'+#p0")
public ImApplication getCacheById(Long id) {
return super.getById(id);
}
@Override
@CacheEvict(key = "'id_'+#p0")
public void deleteCacheById(Long id) {
}
@Override
@CacheEvict(key = "'appKey_'+#p0")
public void deleteCacheByAppKey(String appKey) {
}
@Override
@Cacheable(key = "'appKey_'+#p0")
public ImApplication getCacheAppByAppKey(String appKey) {
ImApplication imApplication = this.getOne(
new QueryWrapper<ImApplication>().lambda()
.eq(ImApplication::getAppKey, appKey)
);
return imApplication;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveImApplication(ImApplication imApplication) throws Exception {
return super.save(imApplication);
}
// @Transactional(rollbackFor = Exception.class)
// @Override
// public boolean updateImApplication(ImApplication imApplication) throws Exception {
// return super.updateById(imApplication);
// }
//
// @Transactional(rollbackFor = Exception.class)
// @Override
// public boolean deleteImApplication(Long id) throws Exception {
// return super.removeById(id);
// }
@Override
public ImApplicationQueryVo getImApplicationById(Long id) throws Exception {
return imApplicationMapper.getImApplicationById(id);
}
@Override
public Paging<ImApplicationQueryVo> getImApplicationPageList(ImApplicationPageParam imApplicationPageParam) throws Exception {
Page<ImApplicationQueryVo> page = new PageInfo<>(imApplicationPageParam, OrderItem.desc(getLambdaColumn(ImApplication::getCreateTime)));
IPage<ImApplicationQueryVo> iPage = imApplicationMapper.getImApplicationPageList(page, imApplicationPageParam);
return new Paging<ImApplicationQueryVo>(iPage);
}
@Override
public Application getApplication(String appKey) {
return getCacheAppByAppKey(appKey);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment