Commit ef89c6b2 by 王祖波

群发内容中心素材

parent 4846c780
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
/**
* Created by wangzubo on 2023/3/20.
*/
public class ChatContentDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 封面url
*/
private String img;
/**
* 视频url
*/
private String content;
/**
* 关联id 企微素材id或内容素材id
* 兼容原有不是驼峰
*/
private String relation_id;
/**
* 素材类型 1文本, 2图片, 4视频
*/
private Integer type;
/**
* 内容素材url是否已经重新上传
*/
private Integer urlChangeFlag;
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getRelation_id() {
return relation_id;
}
public void setRelation_id(String relation_id) {
this.relation_id = relation_id;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getUrlChangeFlag() {
return urlChangeFlag;
}
public void setUrlChangeFlag(Integer urlChangeFlag) {
this.urlChangeFlag = urlChangeFlag;
}
}
......@@ -53,6 +53,11 @@ public class GroupChatPlanDTO implements Serializable {
// 1代发送 2已发送
private Integer sendFlag;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public String getDelStaffIdList() {
return delStaffIdList;
}
......@@ -252,4 +257,12 @@ public class GroupChatPlanDTO implements Serializable {
public Integer getTotalChatCount() {
return totalChatCount;
}
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
}
\ No newline at end of file
......@@ -48,6 +48,10 @@ public class TabGroupChatPlan implements Serializable {
private String enterpriseId;
// 1代发送 2已发送
private Integer sendFlag;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public Integer getSendFlag() {
return sendFlag;
......@@ -232,4 +236,12 @@ public class TabGroupChatPlan implements Serializable {
public void setFailChatCount(Integer failChatCount) {
this.failChatCount = failChatCount;
}
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
}
\ No newline at end of file
......@@ -37,4 +37,15 @@ public interface QywxSendService {
* @throws
*/
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList);
/**
* 群群发
* @param wxEnterpriseId
* @param staffId
* @param imageList
* @param message
* @return
*/
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message);
}
package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.io.InputStream;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.chat.ChatContentDTO;
import com.gic.haoban.manage.service.util.StreamUtils;
import com.gic.thirdparty.cloudfile.CloudFileUtil;
import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum;
import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum;
import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -67,6 +76,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(GroupChatPlanService.class);
private final ExecutorService executorService = Executors.newFixedThreadPool(5);
@Autowired
private GroupChatPlanMapper groupChatPlanMapper;
@Autowired
......@@ -95,6 +106,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private QuartzService quartzService;
@Autowired
private PendingTaskService pendingTaskService;
@Autowired
private EnterpriseService enterpriseService;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
......@@ -130,6 +143,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
if (entity.getSendType() == 1) {
entity.setSendTime(new Date());
}
//处理群发素材上传生成新的url
String chatContent = dealContentMaterial(dto.getEnterpriseId(), entity);
entity.setChatContent(chatContent);
entity.setStartTime(entity.getSendTime());
Date endTime = DateUtil.addDay(entity.getStartTime(), entity.getExpireDays());
entity.setEndTime(DateUtil.getEndTimeOfDay(endTime));
......@@ -146,7 +162,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
// 新增群主日志
this.groupChatPlanOwnerLogService.batchAdd(dto.getStaffIdList(), entity);
} else {
TabGroupChatPlan old = this.groupChatPlanMapper.selectById(planId) ;
TabGroupChatPlan old = this.groupChatPlanMapper.selectById(planId);
int staffCount = old.getStaffCount();
if (StringUtils.isNotBlank(dto.getDelStaffIdList())) {
staffCount = staffCount - dto.getDelStaffIdList().split(",").length;
......@@ -164,12 +180,82 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
// 立即发送
if (entity.getSendType() == 1) {
this.addOrDelTimer(planId, entity.getSendTime(), 0);
// this.doPlan(planId);
this.putMQForSend(planId);
} else {
this.addOrDelTimer(planId, entity.getSendTime(), 1);
}
}
private String dealContentMaterial(String enterpriseId, TabGroupChatPlan chatPlan) {
String chatContent = chatPlan.getChatContent();
logger.info("处理群发素材上传生成新的url chatPlan:{}", JSON.toJSONString(chatPlan));
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(enterpriseId);
Integer materialFrom = chatPlan.getMaterialFrom();
if (materialFrom == null || materialFrom != 2) {
logger.info("不是内容中心素材不处理");
return chatContent;
}
if (StringUtils.isBlank(chatContent)) {
return chatContent;
}
List<ChatContentDTO> chatContentList = JSONArray.parseArray(chatContent, ChatContentDTO.class);
logger.info("处理内容素材:{}", JSON.toJSONString(chatContentList));
try {
CountDownLatch countDownLatch = new CountDownLatch(chatContentList.size());
for (ChatContentDTO chatContentDTO : chatContentList) {
executorService.execute(()->{
//是否上传url地址
boolean urlChangeFlag = chatContentDTO.getUrlChangeFlag() != null && chatContentDTO.getUrlChangeFlag() == 1;
if (chatContentDTO.getType() != 1 || urlChangeFlag) {
countDownLatch.countDown();
return;
}
//封面
String img = chatContentDTO.getImg();
if (StringUtils.isNotBlank(img) && img.contains(".")) {
String fileExtension = img.substring(img.lastIndexOf(".") + 1);
InputStream imageStream = StreamUtils.getImageStream(img);
if (imageStream != null) {
CloudFileInfo fileInfo = CloudFileUtil.uploadFile(imageStream, fileExtension, CloudFileTypeEnum.IMAGE, enterpriseDTO.getFactoryCode(), CloudFileBusinessOptEnum.HAOBAN_COMMON);
chatContentDTO.setImg(fileInfo.getOrgFileUrl());
}
}
//内容(视频)
String content = chatContentDTO.getContent();
if (StringUtils.isNotBlank(content) && content.contains(".")) {
String fileExtension = content.substring(content.lastIndexOf(".") + 1);
InputStream videoStream = StreamUtils.getImageStream(content);
if (videoStream != null) {
CloudFileInfo fileInfo = CloudFileUtil.uploadFile(videoStream, fileExtension, getCloudFileTypeEnum(chatContentDTO.getType()), enterpriseDTO.getFactoryCode(), CloudFileBusinessOptEnum.HAOBAN_COMMON);
chatContentDTO.setContent(fileInfo.getOrgFileUrl());
chatContentDTO.setUrlChangeFlag(com.gic.api.base.commons.Constant.FLAG_TRUE);
}
}
countDownLatch.countDown();
});
}
countDownLatch.await();
} catch (Exception e) {
logger.error("处理内容素材异常",e);
}
chatContent = JSON.toJSONString(chatContentList);
logger.info("更新内容素材:{}", chatContent);
return chatContent;
}
private CloudFileTypeEnum getCloudFileTypeEnum(Integer type) {
if (type == null) {
return CloudFileTypeEnum.OTHER;
}
if (type == 2) {
return CloudFileTypeEnum.IMAGE;
} else if (type == 4) {
return CloudFileTypeEnum.VIDEO;
}
return CloudFileTypeEnum.OTHER;
}
@Override
public GroupChatPlanBO getById(Long planId) {
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId);
......@@ -204,12 +290,42 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
}
this.groupChatPlanMapper.updateSendFlag(planId);
String wxEnterpriseId = plan.getWxEnterpriseId();
String chatContent = plan.getChatContent();
JSONArray jsonArr = JSONArray.parseArray(chatContent);
Integer materialFrom = plan.getMaterialFrom();
// 企微素材id
List<String> sendIdList = new ArrayList<>();
for (int i = 0; i < jsonArr.size(); i++) {
JSONObject json = jsonArr.getJSONObject(i);
sendIdList.add(json.getString("relation_id"));
// 消息文本
String message = null;
// 内容素材
List<ContentMaterialDTO> materialList = new ArrayList<>();
ContentMaterialDTO materialDTO = null;
String chatContent = plan.getChatContent();
if (materialFrom == null || materialFrom == 1) {
JSONArray jsonArr = JSONArray.parseArray(chatContent);
for (int i = 0; i < jsonArr.size(); i++) {
JSONObject json = jsonArr.getJSONObject(i);
sendIdList.add(json.getString("relation_id"));
}
}else {
List<ChatContentDTO> contentDTOList = JSONArray.parseArray(chatContent, ChatContentDTO.class);
for (ChatContentDTO ecmChatContent : contentDTOList) {
Integer type = ecmChatContent.getType();
if (type == null) {
continue;
}
if (type == 1) {
message = ecmChatContent.getContent();
}else {
materialDTO = new ContentMaterialDTO();
materialDTO.setMediaType(1);
if (type == 2) {
materialDTO.setImgUrl(ecmChatContent.getImg());
} else if (type == 4) {
materialDTO.setImgUrl(ecmChatContent.getContent());
}
materialDTO.setMaterialType(ecmChatContent.getType());
materialList.add(materialDTO);
}
}
}
int pageNum = 0;
List<TabGroupChatPlanOwnerLog> ownerList = null;
......@@ -221,9 +337,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
pageNum++;
for (TabGroupChatPlanOwnerLog ownerLog : ownerList) {
try {
ServiceResponse<String> sendResp;
String staffId = ownerLog.getStaffId();
ServiceResponse<String> sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
sendIdList);
if (plan.getMaterialFrom() == null || plan.getMaterialFrom() == 1) {
sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
sendIdList);
}else {
sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId,
materialList,message);
}
if (sendResp.isSuccess()) {
String msgid = sendResp.getResult();
ownerLog.setMsgid(msgid);
......@@ -321,7 +443,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
int sendCount = 0;
int failCount = 0;
List<TabGroupChatPlanLog> addList = new ArrayList<>();
boolean endFlag = false ;
boolean endFlag = false;
for (QywxSendMessageResultDTO item : list) {
TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
Date sendTime = item.getSendTime();
......@@ -329,7 +451,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据
if (sendTime.after(plan.getEndTime())) {
logger.info("发送时间晚计划结束");
endFlag = true ;
endFlag = true;
continue;
}
GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId);
......@@ -366,7 +488,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
this.groupChatPlanLogMapper.batchInsert(addList);
}
// 更新统计数量、状态
if(!endFlag) {
if (!endFlag) {
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime(), failCount);
// 完成代办
......@@ -404,7 +526,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
if (StringUtils.isNotBlank(qdto.getChatName())) {
String params = qdto.getChatName();
qdto.setChatName("%" + params + "%");
qdto.setWxChatId(params+"%");
qdto.setWxChatId(params + "%");
}
List<GroupChatPlanLogDTO> list = this.groupChatPlanLogMapper.listPlanLog(qdto);
if (CollectionUtils.isNotEmpty(list)) {
......
......@@ -231,4 +231,10 @@ public class QywxSendServiceImpl implements QywxSendService {
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList) {
return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group);
}
@Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message) {
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, null, materialIdList, message, 2 , group);
}
}
package com.gic.haoban.manage.service.util;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by wangzubo on 2023/3/20.
*/
public class StreamUtils {
private static Logger logger = LogManager.getLogger(StreamUtils.class);
/**
* 根据图片url地址获取其流
* @param url 网络图片地址
* @return 图片流
*/
public static InputStream getImageStream(String url) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
return inputStream;
}
} catch (IOException e) {
logger.error("获取网络图片出现异常,图片路径为:" + url,e);
}
return null;
}
}
......@@ -27,6 +27,7 @@
<result column="success_chat_count" property="successChatCount" />
<result column="fail_chat_count" property="failChatCount" />
<result column="send_flag" property="sendFlag" />
<result column="material_from" property="materialFrom" />
</resultMap>
<sql id="Base_Column_List">
plan_id,
......@@ -49,7 +50,8 @@
send_count,
success_chat_count,
fail_chat_count ,
wx_enterprise_id , enterprise_id , send_flag
wx_enterprise_id , enterprise_id , send_flag ,
material_from
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert"
......@@ -75,7 +77,8 @@
staff_count,
send_count,
success_chat_count,
fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag
fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag,
material_from
)VALUES(
#{planId},
#{name},
......@@ -96,7 +99,8 @@
#{staffCount},
#{sendCount},
#{successChatCount},
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1,
#{materialFrom}
)
]]>
</insert>
......@@ -138,7 +142,8 @@
send_time=#{sendTime},
start_time=#{startTime},
end_time=#{endTime},
expire_days=#{expireDays}
expire_days=#{expireDays},
material_from=#{materialFrom}
where plan_id = #{planId}
]]>
</update>
......
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NotifyMessageBatchQDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.service.QywxTagApiService;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import com.gic.wechat.api.dto.qywx.QywxNewsArticleMessageDTO;
import com.gic.wechat.api.dto.qywx.QywxNewsSendMessageDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class ChatTest {
private static Logger logger = LoggerFactory.getLogger(ChatTest.class);
@Autowired
private GroupChatPlanService groupChatPlanService;
@Test
public void test() {
String str = "{\"name\":\"测试\",\"remark\":\"测试\",\"expireDays\":\"2\",\"sendType\":1,\"sendTime\":\"\",\"chatContent\":\"[{\\\"img\\\":\\\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/jhdm/marketing_common-edc68cbf153846928c0ac28e2b2aa92f.jpg\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":2},{\\\"img\\\":\\\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/jhdm/marketing_common-3acc9bc9bbe8416e8aefe459b23eea5e.jpg\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":2},{\\\"content\\\":\\\"莎啦啦啦\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":1}]\",\"staffIdList\":\"36067cdee7ba4ff6adc7551b34cc2005\",\"requestProject\":\"haoban-manage-web\"}";
GroupChatPlanDTO groupChatPlanDTO = JSONObject.parseObject(str, GroupChatPlanDTO.class);
groupChatPlanDTO.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
groupChatPlanDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
groupChatPlanDTO.setCreatorId("fefd1c81641711e69d0818c58a146fd2");
groupChatPlanDTO.setCreatorName("达摩管理员");
groupChatPlanDTO.setMaterialFrom(2);
groupChatPlanService.save(groupChatPlanDTO);
}
}
......@@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.ChatContentDTO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -301,15 +302,28 @@ public class GroupChatPlanController {
GroupChatPlanDTO plan = planResp.getResult();
plan.getStaffIdList();
String content = plan.getChatContent();
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
Integer materialFrom = plan.getMaterialFrom();
List<MaterialDTO> materials = new ArrayList<>();
if (materialFrom == null || materialFrom == 1) {
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
materials = materialApiService.listMaterialByIds(materialIdList);
}else {
List<ChatContentDTO> contentDTOList = JSONArray.parseArray(content, ChatContentDTO.class);
materials = contentDTOList.stream().map(x -> {
MaterialDTO materialDTO = new MaterialDTO();
materialDTO.setMaterialType(x.getType());
materialDTO.setMaterialContent(x.getContent());
materialDTO.setImgUrl(x.getImg());
return materialDTO;
}).collect(Collectors.toList());
}
// 查询素材列表
GroupChatPlanVO vo = EntityUtil.changeEntityByJSON(GroupChatPlanVO.class, plan);
List<MaterialDTO> materials = materialApiService.listMaterialByIds(materialIdList);
vo.setMaterialIdList(materials);
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
......
......@@ -55,6 +55,11 @@ public class GroupChatPlanVO implements Serializable{
private Integer sendFlag;
private List<MaterialDTO> MaterialIdList ;
private List<ChatOwnerVO> ownerList ;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public List<ChatOwnerVO> getOwnerList() {
return ownerList;
......@@ -245,4 +250,12 @@ public class GroupChatPlanVO implements Serializable{
public Integer getTotalChatCount(){
return totalChatCount;
}
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
}
\ No newline at end of file
......@@ -5,7 +5,9 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -19,10 +21,6 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.api.dto.MaterialDTO;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.service.MaterialApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService;
......@@ -102,16 +100,29 @@ public class GroupChatPlanController {
}
GroupChatPlanDTO plan = linkResp.getResult();
String content = plan.getChatContent();
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
// 查询素材列表
List<MaterialDTO> materials = materialApiService.listMaterialByIds(materialIdList);
List<MaterialDTO> materials = new ArrayList<>();
Map<String, Object> retMap = new HashMap<>();
retMap.put("plan", plan);
Integer materialFrom = plan.getMaterialFrom();
if (materialFrom == null || materialFrom == 1) {
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
materials = materialApiService.listMaterialByIds(materialIdList);
}else {
List<ChatContentDTO> contentDTOList = JSONArray.parseArray(content, ChatContentDTO.class);
materials = contentDTOList.stream().map(x -> {
MaterialDTO materialDTO = new MaterialDTO();
materialDTO.setMaterialType(x.getType());
materialDTO.setMaterialContent(x.getContent());
materialDTO.setImgUrl(x.getImg());
return materialDTO;
}).collect(Collectors.toList());
}
retMap.put("materialList", materials);
if (null != ownerLogId) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId);
......
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