提交 4a1222bd 编写于 作者: 李昂

Merge remote-tracking branch 'origin/back_end_dev' into back_end_dev

......@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
import com.linkwechat.common.core.controller.BaseController;
import com.linkwechat.common.core.domain.ConversationArchiveQuery;
import com.linkwechat.common.core.page.TableDataInfo;
import com.linkwechat.wecom.domain.vo.ConversationArchiveVo;
import com.linkwechat.wecom.service.IWeConversationArchiveService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -39,7 +40,7 @@ public class WeConversationArchiveController extends BaseController {
// @PreAuthorize("@ss.hasPermi('conversationArchive:chatContact:list')")
@ApiOperation(value = "获取单聊会话数据接口",httpMethod = "GET")
@GetMapping("/getChatContactList")
public TableDataInfo<PageInfo<JSONObject>> getChatContactList(ConversationArchiveQuery query) {
public TableDataInfo<PageInfo<ConversationArchiveVo>> getChatContactList(ConversationArchiveQuery query) {
return getDataTable(weConversationArchiveService.getChatContactList(query));
}
......@@ -55,7 +56,7 @@ public class WeConversationArchiveController extends BaseController {
// @PreAuthorize("@ss.hasPermi('conversationArchive:chatRoomContact:list')")
@ApiOperation(value = "获取群聊会话数据接口",httpMethod = "GET")
@GetMapping("/getChatRoomContactList")
public TableDataInfo<PageInfo<JSONObject>> getChatRoomContactList(ConversationArchiveQuery query) {
public TableDataInfo<PageInfo<ConversationArchiveVo>> getChatRoomContactList(ConversationArchiveQuery query) {
return getDataTable(weConversationArchiveService.getChatRoomContactList(query));
}
......@@ -69,7 +70,7 @@ public class WeConversationArchiveController extends BaseController {
// @PreAuthorize("@ss.hasPermi('conversationArchive:chatAllContact:list')")
@ApiOperation(value = "获取全局会话数据接口",httpMethod = "GET")
@GetMapping("/getChatAllList")
public TableDataInfo<PageInfo<JSONObject>> getChatAllList(ConversationArchiveQuery query) {
public TableDataInfo<PageInfo<ConversationArchiveVo>> getChatAllList(ConversationArchiveQuery query) {
return getDataTable(weConversationArchiveService.getChatAllList(query));
}
......
......@@ -142,7 +142,6 @@ public class RyTask {
* 扫描群发消息定时任务
*/
public void messageTask() {
//获的当前时间的毫秒数
long currentTime = System.currentTimeMillis();
//customerMessageTimeTaskMapper
......@@ -153,32 +152,22 @@ public class RyTask {
if (CollectionUtils.isNotEmpty(weCustomerMessageTimeTasks)) {
weCustomerMessageTimeTasks.forEach(
s -> {
try {
semaphore.acquire();
if (s.getMessageInfo() != null && s.getMessageId() != null || (s.getMessageInfo().getPushType().equals(WeConstans.SEND_MESSAGE_CUSTOMER)
&& CollectionUtils.isNotEmpty(s.getCustomersInfo())) || (s.getMessageInfo().getPushType().equals(WeConstans.SEND_MESSAGE_GROUP)
&& CollectionUtils.isNotEmpty(s.getGroupsInfo()))) {
weCustomerMessageService.sendMessgae(s.getMessageInfo(), s.getMessageId(), s.getCustomersInfo(), s.getGroupsInfo());
//更新消息处理状态
customerMessageTimeTaskMapper.updateTaskSolvedById(s.getTaskId());
}
semaphore.release();
} catch (JsonProcessingException | InterruptedException e) {
log.error("定时群发消息处理异常:ex:{}", e);
e.printStackTrace();
}
}
);
}
......
package com.linkwechat.wecom.domain.vo;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author danmo
* @description 会话对象返回值
* @date 2021/4/21 17:18
**/
@ApiModel
@Data
public class ConversationArchiveVo {
@ApiModelProperty("消息id")
private String msgId;
@ApiModelProperty("音频id")
private String voiceId;
@ApiModelProperty("消息发送时间戳")
private Long time;
@ApiModelProperty("具体为切换企业的成员的userid")
private String user;
@ApiModelProperty("消息动作,目前有send(发送消息)/recall(撤回消息)/switch(切换企业日志)三种类型")
private String action;
@ApiModelProperty("消息发送方id。同一企业内容为userid,非相同企业为external_userid。消息如果是机器人发出,也为external_userid")
private String from;
@ApiModelProperty("消息发送方详情")
private JSONObject fromInfo;
@ApiModelProperty("消息接收方列表,可能是多个,同一个企业内容为userid,非相同企业为external_userid")
private List<String> toList;
@ApiModelProperty("消息接收方详情")
private JSONObject toListInfo;
@ApiModelProperty("群聊消息的群id。如果是单聊则为空")
private String roomId;
@ApiModelProperty("消息发送时间戳,utc时间,ms单位。")
private Long msgTime;
@ApiModelProperty("消息类型")
private String msgType;
@ApiModelProperty("文本消息内容")
private Content text;
@ApiModelProperty("图片消息内容")
private Content image;
@ApiModelProperty("撤回消息")
private Content revoke;
@ApiModelProperty("同意会话聊天内容")
private Content disagree;
@ApiModelProperty("语音内容")
private Content voice;
@ApiModelProperty("视频内容")
private Content video;
@ApiModelProperty("名片")
private Content card;
@ApiModelProperty("位置")
private Content location;
@ApiModelProperty("表情")
private Content emotion;
@ApiModelProperty("文件")
private Content file;
@ApiModelProperty("链接")
private Content link;
@ApiModelProperty("小程序消息")
private Content weApp;
@ApiModelProperty("会话记录消息")
private Content chatReCord;
@ApiModelProperty("待办消息")
private Content todo;
@ApiModelProperty("投票消息")
private Content vote;
@ApiModelProperty("填表消息")
private Collect collect;
@ApiModelProperty("红包消息")
private RedPacket redPacket;
@ApiModelProperty("会议邀请消息")
private Meeting meeting;
@ApiModelProperty("在线文档消息")
private Content doc;
@ApiModelProperty("MarkDown格式消息/图文消息")
private JSONObject info;
@ApiModelProperty("混合消息")
private JSONObject mixed;
@ApiModelProperty("音频存档消息")
private JSONObject meetingVoiceCall;
@ApiModelProperty("日程消息")
private Calendar calendar;
@ApiModel
@Data
private class Content{
@ApiModelProperty("文本消息内容")
private String content;
@ApiModelProperty("图片资源的md5值")
private String md5Sum;
@ApiModelProperty("媒体资源的id信息")
private String sdkFileId;
@ApiModelProperty("文件大小")
private Long fileSize;
@ApiModelProperty("标识撤回的原消息的msgid")
private String preMsgId;
@ApiModelProperty("同意/不同意协议者的userid,外部企业默认为external_userid")
private String userId;
@ApiModelProperty("同意/不同意协议的时间 ms单位")
private Long agreeTime;
@ApiModelProperty("语音消息大小")
private Long voiceSize;
@ApiModelProperty("播放长度")
private Integer playLength;
@ApiModelProperty("名片所有者所在的公司名称")
private String corpName;
@ApiModelProperty("经度")
private Double longitude;
@ApiModelProperty("纬度")
private Double latitude;
@ApiModelProperty("地址信息")
private String address;
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("缩放比例")
private Integer zoom;
@ApiModelProperty("表情类型,png或者gif.1表示gif 2表示png")
private Integer type;
@ApiModelProperty("表情图片宽度")
private Integer width;
@ApiModelProperty("表情图片高度")
private Integer height;
@ApiModelProperty("资源的文件大小")
private Integer imageSize;
@ApiModelProperty("文件名称")
private String fileName;
@ApiModelProperty("文件类型后缀")
private String fileExt;
@ApiModelProperty("消息描述")
private String description;
@ApiModelProperty("链接url地址")
private String linkUrl;
@ApiModelProperty("链接图片url")
private String imageUrl;
@ApiModelProperty("用户名称")
private String userName;
@ApiModelProperty("小程序名称")
private String displayName;
@ApiModelProperty("消息记录内的消息内容")
private List<Item> item;
@ApiModelProperty("投票主题")
private String voteTitle;
@ApiModelProperty("投票选项,可能多个内容")
private List<String> voteItem;
@ApiModelProperty("投票类型.101发起投票、102参与投票")
private Integer voteType;
@ApiModelProperty("投票id,方便将参与投票消息与发起投票消息进行前后对照")
private String voteId;
@ApiModelProperty("在线文档创建者。本企业成员创建为userid;外部企业成员创建为external_userid")
private String docCreator;
}
@Data
@ApiModel
private class Item{
@ApiModelProperty("每条聊天记录的具体消息类型:ChatRecordText/ ChatRecordFile/ ChatRecordImage/ " +
"ChatRecordVideo/ ChatRecordLink/ ChatRecordLocation/ ChatRecordMixed")
private String type;
@ApiModelProperty("消息时间,utc时间,单位秒")
private Long msgTime;
@ApiModelProperty("消息内容。Json串,内容为对应类型的json")
private String content;
@ApiModelProperty("是否来自群会话")
private Boolean fromChatRoom;
}
@Data
@ApiModel
private class Calendar{
@ApiModelProperty("日程主题")
private String title;
@ApiModelProperty("日程备注")
private String creatorName;
@ApiModelProperty("日程参与人")
private List<String> attendeeName;
@ApiModelProperty("日程开始时间")
private Long startTime;
@ApiModelProperty("日程结束时间")
private Long endTime;
@ApiModelProperty("日程地点")
private String place;
@ApiModelProperty("日程备注")
private String remarks;
}
@Data
@ApiModel
private class Collect{
@ApiModelProperty("填表消息所在的群名称")
private String roomName;
@ApiModelProperty("创建者在群中的名字")
private String creator;
@ApiModelProperty("创建的时间")
private Long createTime;
@ApiModelProperty("表名")
private String title;
@ApiModelProperty("表内容")
private String details;
@ApiModelProperty("表项id")
private Long id;
@ApiModelProperty("表项名称")
private String ques;
@ApiModelProperty("表项类型,有Text(文本),Number(数字),Date(日期),Time(时间)")
private String type;
}
@Data
@ApiModel
private class RedPacket{
@ApiModelProperty("红包总金额 单位为分")
private Integer totalAmount;
@ApiModelProperty("红包总个数")
private Integer totalCnt;
@ApiModelProperty("红包祝福语")
private String wish;
@ApiModelProperty("红包消息类型。1 普通红包、2 拼手气群红包、3 激励群红包")
private Integer type;
}
@Data
@ApiModel
private class Meeting{
@ApiModelProperty("会议主题")
private String topic;
@ApiModelProperty("红包总个数")
private Long startTime;
@ApiModelProperty("会议结束时间")
private Long endTime;
@ApiModelProperty("会议地址")
private String address;
@ApiModelProperty("会议备注")
private String remarks;
@ApiModelProperty("会议消息类型。101发起会议邀请消息、102处理会议邀请消息")
private String meetingType;
@ApiModelProperty("会议id。方便将发起、处理消息进行对照")
private Long meetingId;
@ApiModelProperty("会议邀请处理状态。1 参加会议、2 拒绝会议、3 待定、4 未被邀请、5 会议已取消、6 会议已过期、7 不在房间内。" +
"只有meetingtype为102的时候此字段才有内容。")
private Integer status;
}
}
......@@ -54,4 +54,18 @@ public interface WeCommunityNewGroupMapper extends BaseMapper<WeCommunityNewGrou
*/
List<WeCommunityNewGroupVo> selectWeCommunityNewGroupByIds(@Param("ids") List<Long> ids);
/**
* 通过员工活码id逻辑删除对应新客拉群信息
* @param emplCodeId 员工活码id
* @return 结果
*/
int removeWeCommunityNewGroupByEmplCodeId(@Param("emplCodeId") Long emplCodeId);
/**
* 通过群活码id逻辑删除对应新客拉群信息
* @param groupCodeId 群活码id
* @return 结果
*/
int removeWeCommunityNewGroupByGroupCodeId(@Param("groupCodeId") Long groupCodeId);
}
......@@ -5,6 +5,7 @@ import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.linkwechat.wecom.domain.WeGroup;
import com.linkwechat.wecom.domain.WeGroupCodeActual;
import org.springframework.stereotype.Repository;
/**
* 实际群码Mapper接口
......@@ -12,6 +13,7 @@ import com.linkwechat.wecom.domain.WeGroupCodeActual;
* @author ruoyi
* @date 2020-10-07
*/
@Repository
public interface WeGroupCodeActualMapper extends BaseMapper<WeGroupCodeActual> {
/**
* 查询实际群码
......
......@@ -3,6 +3,7 @@ package com.linkwechat.wecom.service;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.linkwechat.common.core.domain.ConversationArchiveQuery;
import com.linkwechat.wecom.domain.vo.ConversationArchiveVo;
import java.util.List;
......@@ -19,9 +20,9 @@ public interface IWeConversationArchiveService {
* @param /reveiceId 接收人id
* @return
*/
PageInfo<JSONObject> getChatContactList(ConversationArchiveQuery query);
PageInfo<ConversationArchiveVo> getChatContactList(ConversationArchiveQuery query);
PageInfo<JSONObject> getChatRoomContactList(ConversationArchiveQuery query);
PageInfo<ConversationArchiveVo> getChatRoomContactList(ConversationArchiveQuery query);
/**
* 查询最早聊天记录
......@@ -45,6 +46,6 @@ public interface IWeConversationArchiveService {
* @param query 参
* @return
*/
PageInfo<JSONObject> getChatAllList(ConversationArchiveQuery query);
PageInfo<ConversationArchiveVo> getChatAllList(ConversationArchiveQuery query);
}
......@@ -10,6 +10,7 @@ import com.linkwechat.common.core.page.PageDomain;
import com.linkwechat.common.core.page.TableSupport;
import com.linkwechat.common.utils.DateUtils;
import com.linkwechat.common.utils.StringUtils;
import com.linkwechat.wecom.domain.vo.ConversationArchiveVo;
import com.linkwechat.wecom.service.IWeConversationArchiveService;
import lombok.extern.slf4j.Slf4j;
import org.elasticsearch.index.query.BoolQueryBuilder;
......@@ -45,7 +46,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS
* @return
*/
@Override
public PageInfo<JSONObject> getChatContactList(ConversationArchiveQuery query) {
public PageInfo<ConversationArchiveVo> getChatContactList(ConversationArchiveQuery query) {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum() == null ? 1 : pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize() == null ? 10 : pageDomain.getPageSize();
......@@ -77,11 +78,11 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS
boolQueryBuilder.filter(QueryBuilders.rangeQuery("msgtime").gte(beginTime).lte(endTime));
}
builder.query(boolQueryBuilder);
return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class);
return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, ConversationArchiveVo.class);
}
@Override
public PageInfo<JSONObject> getChatRoomContactList(ConversationArchiveQuery query) {
public PageInfo<ConversationArchiveVo> getChatRoomContactList(ConversationArchiveQuery query) {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum() == null ? 1 : pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize() == null ? 10 : pageDomain.getPageSize();
......@@ -115,7 +116,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS
}
builder.query(boolQueryBuilder);
return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class);
return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, ConversationArchiveVo.class);
}
......@@ -167,7 +168,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS
}
@Override
public PageInfo<JSONObject> getChatAllList(ConversationArchiveQuery query) {
public PageInfo<ConversationArchiveVo> getChatAllList(ConversationArchiveQuery query) {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum() == null ? 1 : pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize() == null ? 10 : pageDomain.getPageSize();
......@@ -208,7 +209,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS
boolQueryBuilder.filter(QueryBuilders.rangeQuery("msgtime").gte(beginTime).lte(endTime));
}
builder.query(boolQueryBuilder);
PageInfo<JSONObject> pageInfo = elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class);
PageInfo<ConversationArchiveVo> pageInfo = elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, ConversationArchiveVo.class);
return pageInfo;
}
}
......@@ -17,6 +17,7 @@ import com.linkwechat.wecom.domain.WeEmpleCodeUseScop;
import com.linkwechat.wecom.domain.WeMaterial;
import com.linkwechat.wecom.domain.dto.WeEmpleCodeDto;
import com.linkwechat.wecom.domain.dto.WeExternalContactDto;
import com.linkwechat.wecom.mapper.WeCommunityNewGroupMapper;
import com.linkwechat.wecom.mapper.WeEmpleCodeMapper;
import com.linkwechat.wecom.mapper.WeEmpleCodeTagMapper;
import com.linkwechat.wecom.mapper.WeEmpleCodeUseScopMapper;
......@@ -61,10 +62,7 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
private RedisCache redisCache;
@Autowired
private WeEmpleCodeUseScopMapper scopMapper;
@Autowired
private WeEmpleCodeTagMapper codeTagMapper;
private WeCommunityNewGroupMapper communityNewGroupMapper;
/**
* 查询员工活码
......@@ -205,6 +203,9 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl<WeEmpleCodeMapper, WeEmp
if (weEmpleCode != null && weEmpleCode.getConfigId() != null) {
weExternalContactClient.delContactWay(weEmpleCode.getConfigId());
}
// 删除对应的新科拉群信息
communityNewGroupMapper.removeWeCommunityNewGroupByEmplCodeId(id);
// 删除员工活码
return this.baseMapper.deleteWeEmpleCodeById(id);
}
......
......@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.linkwechat.common.config.CosConfig;
import com.linkwechat.common.exception.wecom.WeComException;
import com.linkwechat.wecom.domain.WeGroupCodeActual;
import com.linkwechat.wecom.mapper.WeCommunityNewGroupMapper;
import com.linkwechat.wecom.mapper.WeGroupCodeActualMapper;
import com.linkwechat.wecom.service.IWeGroupCodeActualService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -14,6 +15,8 @@ import org.springframework.stereotype.Service;
import com.linkwechat.wecom.mapper.WeGroupCodeMapper;
import com.linkwechat.wecom.domain.WeGroupCode;
import com.linkwechat.wecom.service.IWeGroupCodeService;
import org.springframework.transaction.annotation.Transactional;
/**
* 客户群活码Service业务层处理
*
......@@ -33,6 +36,9 @@ public class WeGroupCodeServiceImpl extends ServiceImpl<WeGroupCodeMapper,WeGrou
@Autowired
private WeGroupCodeActualMapper weGroupCodeActualMapper;
@Autowired
private WeCommunityNewGroupMapper communityNewGroupMapper;
/**
* 查询客户群活码
*
......@@ -142,8 +148,11 @@ public class WeGroupCodeServiceImpl extends ServiceImpl<WeGroupCodeMapper,WeGrou
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteWeGroupCodeById(Long id)
{
// 需要删除新科拉群信息
communityNewGroupMapper.removeWeCommunityNewGroupByGroupCodeId(id);
return weGroupCodeMapper.deleteWeGroupCodeById(id);
}
......
......@@ -75,4 +75,11 @@
</where>
</select>
<update id="removeWeCommunityNewGroupByEmplCodeId" parameterType="Long">
UPDATE we_community_new_group SET del_flag = 1 WHERE empl_code_id = #{emplCodeId}
</update>
<update id="removeWeCommunityNewGroupByGroupCodeId" parameterType="Long">
UPDATE we_community_new_group SET del_flag = 1 WHERE group_code_id = #{groupCodeId}
</update>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册