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);
}
......@@ -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();
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();
......
......@@ -56,6 +56,11 @@ public class GroupChatPlanVO implements Serializable{
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();
// 查询素材列表
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"));
}
// 查询素材列表
List<MaterialDTO> materials = materialApiService.listMaterialByIds(materialIdList);
Map<String, Object> retMap = new HashMap<>();
retMap.put("plan", plan);
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