Commit 1595a409 by songyinghui

Merge branch 'feature-content4-3' into 'master'

Feature content4 3

See merge request !1482
parents c1cf7d20 df56af4f
......@@ -30,6 +30,12 @@ public class ContentMaterialROleInitQDTO implements Serializable {
*/
private Integer version;
/**
* 老版本
* null 代表是新增
*/
private Integer oldVersion;
public enum Version {
LOW(1, "基础版本"),
HIGH(2, "高级版");
......@@ -81,4 +87,12 @@ public class ContentMaterialROleInitQDTO implements Serializable {
public void setVersion(Integer version) {
this.version = version;
}
public Integer getOldVersion() {
return oldVersion;
}
public void setOldVersion(Integer oldVersion) {
this.oldVersion = oldVersion;
}
}
......@@ -9,20 +9,22 @@ package com.gic.haoban.manage.api.enums;
**/
public enum HaobanClerkTypeEnum {
;
CLERK(0, "导购/店员"),
STORE_MANAGER(1, "店长"),
AREA_MANAGER(2, "区经");
HaobanClerkTypeEnum(Integer type, String desc){
this.code = type;
this.desc = desc;
}
private int code;
private Integer code;
private String desc;
public int getCode() {
public Integer getCode() {
return code;
}
public void setCode(int code) {
public void setCode(Integer code) {
this.code = code;
}
......
......@@ -207,6 +207,12 @@
<artifactId>gic-operating-api</artifactId>
<version>${gic-operating-api}</version>
</dependency>
<!-- 数仓 -->
<dependency>
<groupId>com.alibaba.hologres</groupId>
<artifactId>holo-client</artifactId>
<version>2.2.10</version>
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-content-api</artifactId>
......
package com.gic.haoban.manage.service.dao.mapper.content.holo;
import com.alibaba.hologres.client.HoloClient;
import com.alibaba.hologres.client.HoloConfig;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
/**
* @Author MUSI
* @Date 2023/9/4 4:11 PM
* @Description
* @Version
**/
@Slf4j
@Component
public class HoloDataSource implements InitializingBean, DisposableBean {
HoloClient client;
public synchronized void init() {
try {
Config appConfig = ConfigService.getAppConfig();
String holoUrl = appConfig.getProperty("holo.url", "");
String holoUserName = appConfig.getProperty("holo.username", "");
String holoPassword = appConfig.getProperty("holo.password", "");
HoloConfig holoConfig = new HoloConfig();
holoConfig.setJdbcUrl(holoUrl);
holoConfig.setUsername(holoUserName);
holoConfig.setPassword(holoPassword);
this.client = new HoloClient(holoConfig);
this.client.setAsyncCommit(false);
log.info("holo链接初始化完成");
}catch (Exception ex) {
log.info("初始化client 异常 >>>", ex);
}
}
@Override
public void destroy() throws Exception {
if (client != null) {
client.close();
}
}
@Override
public void afterPropertiesSet() throws Exception {
if (client == null) {
this.init();
}
}
public HoloClient getClient() {
if (this.client == null) {
this.init();
}
return this.client;
}
}
package com.gic.haoban.manage.service.entity.content;
import com.alibaba.fastjson.annotation.JSONField;
import java.util.Date;
import java.io.Serializable;
......@@ -56,10 +58,12 @@ public class TabHaobanTriggerCustomerDetail implements Serializable {
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:dd:ss")
private Date createTime;
/**
* 修改时间
*/
@JSONField(format = "yyyy-MM-dd HH:dd:ss")
private Date updateTime;
/**
* 0正常; 1删除
......
......@@ -86,4 +86,6 @@ public class InteractRecordMessageBO implements Serializable {
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
private String appKey;
}
package com.gic.haoban.manage.service.service.content.adaptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
/**
* @Author MUSI
* @Date 2023/9/4 3:14 PM
* @Description
* @Version
**/
@Slf4j
@Component
public class MessageConvertHelper {
/**
* 转换消息
* @param text
* @return
*/
public InteractRecordMessageBO convertMessageBo(String text) {
JSONObject jsonObject = JSON.parseObject(text);
if (MapUtils.isEmpty(jsonObject)) {
return null;
}
InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO();
String appKey = jsonObject.getString("app_key");
interactRecordMessageBO.setAppKey(appKey);
String gp = jsonObject.getString("gp");
JSONObject gpJson = JSON.parseObject(gp);
String cusp = jsonObject.getString("cusp");
JSONObject cuspJson = JSON.parseObject(cusp);
String sysp = jsonObject.getString("sysp");
JSONObject syspJson = JSON.parseObject(sysp);
String enterpriseId = gpJson.getString("merch_id");
interactRecordMessageBO.setEnterpriseId(enterpriseId);
String memberId = gpJson.getString("member_id");
interactRecordMessageBO.setMemberId(memberId);
String unionId = gpJson.getString("union_id");
interactRecordMessageBO.setUnionId(unionId);
String clerkId = cuspJson.getString("share_id");
interactRecordMessageBO.setClerkId(clerkId);
String storeId = cuspJson.getString("share_shop_id");
interactRecordMessageBO.setStoreId(storeId);
String materialId = cuspJson.getString("material_id");
interactRecordMessageBO.setMaterialId(materialId);
String shareMaterialChannel = cuspJson.getString("share_material_channel");
interactRecordMessageBO.setChannelSource(this.convertChannelSource(shareMaterialChannel));
String eventCode = jsonObject.getString("event_code");
interactRecordMessageBO.setEventType(this.convertEventType(eventCode));
Integer duration = jsonObject.getInteger("duration");
interactRecordMessageBO.setDurationTime(duration);
String orderNumber = cuspJson.getString("order_number");
interactRecordMessageBO.setOrderNumber(orderNumber);
String goodsId = cuspJson.getString("goods_id");
interactRecordMessageBO.setGoodsId(goodsId);
String runningUuid = jsonObject.getString("runningUuid");
interactRecordMessageBO.setBusinessUUId(runningUuid);
Long lastAccessTime = jsonObject.getLong("server_timestamp");
interactRecordMessageBO.setLastAccessTime(lastAccessTime);
String refUrl = syspJson.getString("ref_url");
interactRecordMessageBO.setRefUrl(refUrl);
return interactRecordMessageBO;
}
private Integer convertChannelSource(String shareMaterialChannel) {
if (StringUtils.isBlank(shareMaterialChannel)) {
return null;
}
switch (shareMaterialChannel) {
case "null" :
case "NULL":
return null;
case "朋友圈":
return 1;
case "客户群":
return 2;
case "对话框":
return 3;
default:
return 0;
}
}
private Integer convertEventType(String eventCode) {
if (StringUtils.isBlank(eventCode)) {
return null;
}
switch (eventCode) {
case "material_page":
case "material_page_duration":
return 1;
case "store_goods_detail":
return 2;
case "store_buy_sucess":
return 3;
case "store_add_cart":
return 4;
default:
return null;
}
}
}
package com.gic.haoban.manage.service.service.content.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.hologres.client.HoloClient;
import com.alibaba.hologres.client.Put;
import com.alibaba.hologres.client.model.TableSchema;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.gic.haoban.common.utils.DateUtil;
import com.gic.haoban.manage.service.dao.mapper.content.TabHaobanTriggerCustomerDetailMapper;
import com.gic.haoban.manage.service.dao.mapper.content.holo.HoloDataSource;
import com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail;
import com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO;
import com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO;
import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -29,6 +43,9 @@ public class TriggerCustomerDetailServiceImpl implements TriggerCustomerDetailSe
@Autowired
private TabHaobanTriggerCustomerDetailMapper triggerCustomerDetailMapper;
@Autowired
private HoloDataSource holoDataSource;
@Override
public void save(TriggerCustomerDetailBO triggerCustomerDetailBO) {
......@@ -42,17 +59,53 @@ public class TriggerCustomerDetailServiceImpl implements TriggerCustomerDetailSe
@Override
public void batchSave(List<TriggerCustomerDetailBO> triggerCustomerDetailBos) {
if (CollectionUtils.isEmpty(triggerCustomerDetailBos)) {
log.info("无客户触达日志 >>>> ");
return;
}
List<TabHaobanTriggerCustomerDetail> customerDetails = triggerCustomerDetailBos
.stream()
.map(item -> {
TabHaobanTriggerCustomerDetail temp = new TabHaobanTriggerCustomerDetail();
BeanUtils.copyProperties(item, temp);
return temp;
})
.collect(Collectors.toList());
triggerCustomerDetailMapper.insertBatch(customerDetails);
Config appConfig = ConfigService.getAppConfig();
// 当前阶段 0双写 1 只写数据表
String triggerProcess = appConfig.getProperty("trigger.write", "1");
if (StringUtils.equals(triggerProcess, "0")) {
List<TabHaobanTriggerCustomerDetail> customerDetails = triggerCustomerDetailBos
.stream()
.map(item -> {
TabHaobanTriggerCustomerDetail temp = new TabHaobanTriggerCustomerDetail();
BeanUtils.copyProperties(item, temp);
return temp;
})
.collect(Collectors.toList());
triggerCustomerDetailMapper.insertBatch(customerDetails);
}
try {
HoloClient client = holoDataSource.getClient();
if (client == null) {
log.error("数仓数据源链接异常, 请检查!!!!{}", JSON.toJSONString(triggerCustomerDetailBos));
return;
}
TableSchema tableSchema = client.getTableSchema("tab_haoban_trigger_customer_detail");
SerializeConfig serializeConfig = new SerializeConfig();
serializeConfig.setPropertyNamingStrategy(PropertyNamingStrategy.SnakeCase);
// id, enterprise_id, wx_enterprise_id, biz_id, biz_type, clerk_id, staff_id,store_id, channel_type, customer_id, create_time, update_time, delete_flag
List<Put> puts = triggerCustomerDetailBos
.stream()
.map(item -> {
Put temp = new Put(tableSchema);
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(item, serializeConfig));
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
temp.setObject(entry.getKey(), entry.getValue());
}
// 时间戳格式不行
temp.setObject("create_time", DateUtil.dateToStr(item.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
temp.setObject("update_time", DateUtil.dateToStr(item.getUpdateTime(), "yyyy-MM-dd HH:mm:ss"));
return temp;
})
.collect(Collectors.toList());
client.put(puts);
log.info("客户触达写数据组完成 >>>>>");
}catch (Exception ex) {
log.info("数据组写入异常 {}", JSON.toJSONString(triggerCustomerDetailBos), ex);
}
}
/**
......
package com.gic.haoban.manage.service.service.content.message;
import com.alibaba.fastjson.JSON;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import com.gic.haoban.manage.service.service.content.adaptor.MessageConvertHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord;
......@@ -25,6 +28,8 @@ public class InteractRecordMessageListener implements MessageListener<String, St
@Autowired
InteractRecordMessageService interactRecordMessageService;
@Autowired
MessageConvertHelper messageConvertHelper;
private static final List<Integer> dealEventType = new ArrayList<>();
......@@ -40,11 +45,21 @@ public class InteractRecordMessageListener implements MessageListener<String, St
providerLocalTag.traceId = UUID.randomUUID().toString();
String value = consumerRecord.value();
log.info("【InteractRecordMessageListener】处理埋点事件 {}", value);
InteractRecordMessageBO recordMessageBO = JSON.parseObject(value, InteractRecordMessageBO.class);
InteractRecordMessageBO recordMessageBO = messageConvertHelper.convertMessageBo(value);
if (recordMessageBO == null) {
log.info("互动记录解析异常 {}", value);
return;
}
// 过滤环境
Config config = ConfigService.getAppConfig();
String envKey = config.getProperty("bury.point.env.app.key", "");
if (!StringUtils.equalsIgnoreCase(envKey, recordMessageBO.getAppKey())) {
log.info("埋点数据环境不正确 config.env: {}, appKey: {}", envKey, recordMessageBO.getAppKey());
return;
}
if (recordMessageBO.getEventType() == null || !dealEventType.contains(recordMessageBO.getEventType())) {
log.info("埋点事件类型非相关类型 {}", recordMessageBO.getEventType());
return;
......
......@@ -12,7 +12,7 @@
<constructor-arg>
<map>
<entry key="bootstrap.servers" value="${kafka.data.service}"/>
<entry key="group.id" value="haoban-3-data"/>
<entry key="group.id" value="${kafka.data.group}"/>
<entry key="key.deserializer"
value="org.apache.kafka.common.serialization.StringDeserializer"/>
<entry key="value.deserializer"
......
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO;
import com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO;
import com.gic.haoban.manage.service.pojo.qo.content.PotentialCustomerQO;
import com.gic.haoban.manage.service.service.MemberQueryService;
import com.gic.haoban.manage.service.service.content.PotentialCustomerService;
import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberService;
import org.junit.Test;
......@@ -13,6 +18,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Collections;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/3/30 10:15 PM
......@@ -29,6 +37,8 @@ public class PotentialCustomerServiceTest {
private MemberService memberService;
@Autowired
MemberQueryService memberQueryService;
@Autowired
private TriggerCustomerDetailService triggerCustomerDetailService;
String eid = "ff8080815dacd3a2015dacd3ef5c0000";
String wxEid = "ca66a01b79474c40b3e7c7f93daf1a3b";
......@@ -56,4 +66,32 @@ public class PotentialCustomerServiceTest {
JSONObject jsonObject = memberQueryService.queryDataSingle(eid, "ff8080818215878101821949a845003c", null);
System.out.println(jsonObject.toJSONString());
}
@Test
public void triggerTest(){
TriggerCustomerDetailBO triggerCustomerDetailBO = new TriggerCustomerDetailBO();
triggerCustomerDetailBO.setId(UniqueIdUtils.uniqueLong());
triggerCustomerDetailBO.setCustomerId("dadadada");
triggerCustomerDetailBO.setEnterpriseId(eid);
triggerCustomerDetailBO.setWxEnterpriseId(wxEid);
triggerCustomerDetailBO.setBizId("musidanxieru091210");
triggerCustomerDetailBO.setBizType(1);
triggerCustomerDetailBO.setClerkId(clerkId);
triggerCustomerDetailBO.setStaffId(staffId);
triggerCustomerDetailBO.setStoreId(staffId);
triggerCustomerDetailBO.setChannelType(1);
triggerCustomerDetailBO.setCustomerId(staffId);
triggerCustomerDetailBO.setCreateTime(new Date());
triggerCustomerDetailBO.setUpdateTime(new Date());
triggerCustomerDetailBO.setDeleteFlag(1);
triggerCustomerDetailBO.setId(UniqueIdUtils.uniqueLong());
triggerCustomerDetailService.batchSave(Collections.singletonList(triggerCustomerDetailBO));
triggerCustomerDetailBO.setId(UniqueIdUtils.uniqueLong());
triggerCustomerDetailBO.setBizId("musidanxieru091211");
triggerCustomerDetailService.batchSave(Collections.singletonList(triggerCustomerDetailBO));
long time = new Date().getTime();
System.out.println((int)time);
}
}
......@@ -16,10 +16,7 @@ import com.gic.haoban.manage.web.qo.content.statistics.MaterialReportQO;
import com.gic.haoban.manage.web.qo.content.statistics.MaterialStoreAnalyzeDataQO;
import com.gic.haoban.manage.web.qo.content.statistics.MaterialStoreReportQO;
import com.gic.haoban.manage.web.vo.content.creative.ContentMaterialConvsVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialAreaUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialClerkUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialDataOverviewVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialStoreUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.*;
import com.gic.haoban.manage.web.vo.content.statistics.bo.MaterialTodayDataBO;
import com.gic.haoban.manage.web.vo.content.statistics.bo.MemberVisitMaterialBO;
import com.gic.haoban.manage.web.vo.content.statistics.report.MaterialPersonalUsedDataVO;
......@@ -29,11 +26,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -105,6 +98,10 @@ public class MaterialDataAdaptor {
*/
private static final String MATERIAL_CREATIVE_CONVS_TOTAL_DATA = "data_cms_matl_examine_convs_total";
/**
* 知识库素材列表数据
*/
private static final String MATERIAL_KNOWL_HAOBAN_DATA = "data_cms_matl_knowl_haoban_list";
@Autowired
private EnterpriseService enterpriseService;
......@@ -521,4 +518,35 @@ public class MaterialDataAdaptor {
}
return new ContentMaterialConvsVO();
}
/**
* 知识库列表数据
* @param enterpriseId 企业id
* @param materialIdList 素材id列表
* @return
*/
public List<ContentMaterialKnowVO> queryKnowData(String enterpriseId, String clerkId,List<Long> materialIdList) {
Map<String, Object> inlineParams = new HashMap<>();
if (CollectionUtils.isEmpty(materialIdList)) {
return new ArrayList<>();
}
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("contentMaterialId", StringUtils.join(materialIdList, ","));
inlineParams.put("visibleClerkId", clerkId);
inlineParams.put("pageNum", 1);
inlineParams.put("pageSize", materialIdList.size());
Map<String, Object> result = null;
try {
result = DataApiUtils.http(JSON.toJSONString(inlineParams), MATERIAL_KNOWL_HAOBAN_DATA);
} catch (Exception e) {
log.error("获取知识库数据异常",e);
return new ArrayList<>();
}
List<ContentMaterialKnowVO> list = DataApiUtils.parsePageDataList(result, ContentMaterialKnowVO.class);
if (CollectionUtils.isNotEmpty(list)) {
return list;
}
return new ArrayList<>();
}
}
package com.gic.haoban.manage.web.qo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.util.List;
@JsonSerialize(using= ToStringSerializer.class)
public class ContentMaterialClerkQO {
/**
* 企业ID
*/
private String enterpriseId;
/**
* 素材id列表
*/
private List<Long> contentMaterialIdList;
/**
* 导购id
*/
private String clerkId;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public List<Long> getContentMaterialIdList() {
return contentMaterialIdList;
}
public void setContentMaterialIdList(List<Long> contentMaterialIdList) {
this.contentMaterialIdList = contentMaterialIdList;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
}
......@@ -36,7 +36,7 @@ public class ContentMaterialListQO extends PageQo {
private String materialSearch;
/**
* 素材类型1图文2纯文字3纯图片4视频
* 素材类型1图文2纯文字3纯图片4视频5图文/视频6文件7富文本
*/
private Integer materialType;
......
package com.gic.haoban.manage.web.qo.content;
import com.gic.commons.web.qo.PageQo;
import com.gic.content.api.enums.MaterialSearchSceneEnum;
/**
* @Author MUSI
......@@ -10,7 +11,11 @@ import com.gic.commons.web.qo.PageQo;
**/
public class ContentMaterialQO extends PageQo {
/**
* 查询场景 1:gic后台营销素材 2:好办营销素材 3:gic后台社区素材 4:gic后台审核素材 5:好办审核素材 6:小程序社区素材 7:gic后台知识库 8:好办知识库
* @see com.gic.content.api.enums.MaterialSearchSceneEnum
*/
private Integer queryScene = MaterialSearchSceneEnum.HAOBAN_MARKETING.value;
/**
* 企业id
*/
......@@ -37,7 +42,7 @@ public class ContentMaterialQO extends PageQo {
private Integer sortType;
/**
* 素材类型1图文2纯文字3纯图片4视频
* 素材类型1图文2纯文字3纯图片4视频5图文/视频6文件7富文本
*/
private Integer materialType;
......@@ -58,6 +63,13 @@ public class ContentMaterialQO extends PageQo {
*/
private Integer searchType;
public Integer getQueryScene() {
return queryScene;
}
public void setQueryScene(Integer queryScene) {
this.queryScene = queryScene;
}
public Integer getSortType() {
return sortType;
......
package com.gic.haoban.manage.web.qo.content.comment;
import com.gic.api.base.commons.BasePageInfo;
import lombok.Data;
/**
* @Author MUSI
* @Date 2023/9/19 3:25 PM
* @Description
* @Version
**/
@Data
public class CommentCountQO extends BasePageInfo {
private static final long serialVersionUID = -4989542424690624006L;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 素材ID
*/
private Long contentMaterialId;
/**
* 导购id
*/
private String clerkId;
/**
* 评论ID (查询子评论使用)取parentContentMaterialCommentId字段,如果有就传,没有就取contentMaterialCommentId
*/
private String contentMaterialCommentId;
/**
* 滚动查询,评论ID
*/
private Long nextContentMaterialCommentId;
}
package com.gic.haoban.manage.web.qo.content.comment;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/9/19 4:41 PM
* @Description
* @Version
**/
@Data
public class CommentInfoVO implements Serializable {
private static final long serialVersionUID = -8820263048755899343L;
/**
* 素材评论id
*/
private Long contentMaterialCommentId;
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 评论内容
*/
private String commentContent;
/**
* 审核状态0未审核1未通过2已通过
*/
private Integer auditStatus;
/**
* 是否置顶0不置顶1置顶
*/
private Integer topFlag;
/**
* 是否公开展示0隐藏1公开
*/
private Integer showFlag;
/**
* 会员ID
*/
private String memberId;
/**
* 会员昵称
*/
private String memberNick;
/**
* 会员头像
*/
private String memberHeadImage;
/**
* 会员删除标记 0:未删除 1:已删除
*/
private Integer memberDeleteFlag = 0;
/**
* 子评论
*/
private List<SonCommentInfoVO> sonComments;
/**
* 子评论数量(已经减去了展示的子评论)
*/
private Integer sonCommentNum;
/**
* 创建时间
*/
private Date createTime;
}
package com.gic.haoban.manage.web.qo.content.comment;
import lombok.Data;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/9/19 5:00 PM
* @Description
* @Version
**/
@Data
public class SaveCommentQO implements Serializable {
private static final long serialVersionUID = -1584226631161349430L;
/**
* 微信信息
*/
private String wxEnterpriseId;
/**
* 父级素材评论id
*/
private Long parentContentMaterialCommentId;
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 评论内容
*/
private String commentContent;
/**
* 回复的导购ID
*/
private String replyClerkId;
/**
* 导购ID
*/
private String clerkId;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 成员id
*/
private String staffId;
}
package com.gic.haoban.manage.web.qo.content.comment;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/9/19 4:42 PM
* @Description
* @Version
**/
@Data
public class SonCommentInfoVO implements Serializable {
private static final long serialVersionUID = 2419520239887917983L;
/**
* 素材评论id
*/
private Long contentMaterialCommentId;
/**
* 父级素材评论id
*/
private Long parentContentMaterialCommentId;
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 评论内容
*/
private String commentContent;
/**
* 审核状态0未审核1未通过2已通过
*/
private Integer auditStatus;
/**
* 是否置顶0不置顶1置顶
*/
private Integer topFlag;
/**
* 是否公开展示0隐藏1公开
*/
private Integer showFlag;
/**
* 会员ID
*/
private String memberId;
/**
* 会员昵称
*/
private String memberNick;
/**
* 会员删除标记 0:未删除 1:已删除
*/
private Integer memberDeleteFlag = 0;
/**
* 会员头像
*/
private String memberHeadImage;
/**
* 回复的会员ID
*/
private String replyMemberId;
/**
* 回复的会员昵称
*/
private String replyMemberNick;
/**
* 回复的会员头像
*/
private String replyMemberHeadImage;
/**
* 会员删除标记 0:未删除 1:已删除
*/
private Integer replyMemberDeleteFlag = 0;
private Boolean isMainComment = false;
/**
* 创建时间
*/
private Date createTime;
}
package com.gic.haoban.manage.web.qo.content.like;
import java.io.Serializable;
/**
* Created by wangzubo on 2023/9/22.
*/
public class ContentMaterialLikeQO implements Serializable {
private static final long serialVersionUID = -1L;
/**
* 企业id
*/
private String enterpriseId;
/**
* 用户id(导购id)
*/
private String memberId;
/**
* 用户类型0会员1导购2区经
*/
private Integer userType;
/**
* 用户code
*/
private String userCode;
/**
* 素材id
*/
private Long contentMaterialId;
public ContentMaterialLikeQO() {
}
public ContentMaterialLikeQO(String enterpriseId, String memberId, Integer userType, String userCode, Long contentMaterialId) {
this.enterpriseId = enterpriseId;
this.memberId = memberId;
this.userType = userType;
this.userCode = userCode;
this.contentMaterialId = contentMaterialId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public Integer getUserType() {
return userType;
}
public void setUserType(Integer userType) {
this.userType = userType;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
}
package com.gic.haoban.manage.web.vo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.io.Serializable;
public class ContentMaterialDataVO implements Serializable {
/**
* 素材id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long contentMaterialId;
/**
* 点赞数
*/
private Integer likeCount = 0;
/**
* 是否已点赞 1是0否
*/
private Integer likeFlag = 0;
/**
* 评论次数
*/
private Integer cmtCnt = 0;
/**
* 阅读次数
*/
private Integer readCnt = 0;
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public Integer getLikeCount() {
return likeCount;
}
public void setLikeCount(Integer likeCount) {
this.likeCount = likeCount;
}
public Integer getLikeFlag() {
return likeFlag;
}
public void setLikeFlag(Integer likeFlag) {
this.likeFlag = likeFlag;
}
public Integer getCmtCnt() {
return cmtCnt;
}
public void setCmtCnt(Integer cmtCnt) {
this.cmtCnt = cmtCnt;
}
public Integer getReadCnt() {
return readCnt;
}
public void setReadCnt(Integer readCnt) {
this.readCnt = readCnt;
}
public void setDataVO(ContentMaterialDataVO dataVO) {
if (dataVO == null) {
this.setLikeCount(0);
this.setCmtCnt(0);
this.setReadCnt(0);
return;
}
this.setLikeCount(dataVO.getLikeCount());
this.setCmtCnt(dataVO.getCmtCnt());
this.setReadCnt(dataVO.getReadCnt());
}
}
......@@ -2,10 +2,14 @@ package com.gic.haoban.manage.web.vo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gic.content.api.dto.ext.ContentMaterialExt;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author MUSI
......@@ -33,11 +37,16 @@ public class ContentMaterialInfoVO implements Serializable {
private String materialContent;
/**
* 素材类型1图文2纯文字3纯图片4视频
* 素材类型1图文2纯文字3纯图片4视频5图文/视频6文件7富文本
*/
private Integer materialType;
/**
* 是否置顶0不置顶1置顶
*/
private Integer topFlag = 0;
/**
* 发布时间
*/
private Date publishTime;
......@@ -84,6 +93,23 @@ public class ContentMaterialInfoVO implements Serializable {
private String materialVideoFirstImageInfo;
/**
* 素材首图url
*/
private String materialFirstImageUrl;
/**
* 素材首图信息{width:px,height:px,size:Bytes}
*/
private String materialFirstImageInfo;
/**
* 素材文件url
*/
private String materialFileUrl;
/**
* 素材文件信息{size:Bytes,name:String}
*/
private String materialFileInfo;
/**
* 分享次数
*/
private Long shareCount;
......@@ -121,6 +147,21 @@ public class ContentMaterialInfoVO implements Serializable {
*/
private Integer sourceType;
/**
* 点赞数
*/
private Long likeCount;
/**
* 是否已点赞 1是0否
*/
private Integer likeFlag;
/**
* 素材额外信息
*/
private ContentMaterialExt ext;
public Long getContentMaterialId() {
return contentMaterialId;
......@@ -154,6 +195,14 @@ public class ContentMaterialInfoVO implements Serializable {
this.materialType = materialType;
}
public Integer getTopFlag() {
return topFlag;
}
public void setTopFlag(Integer topFlag) {
this.topFlag = topFlag;
}
public Date getPublishTime() {
return publishTime;
}
......@@ -194,6 +243,38 @@ public class ContentMaterialInfoVO implements Serializable {
this.materialVideoFirstImageUrl = materialVideoFirstImageUrl;
}
public String getMaterialFirstImageUrl() {
return materialFirstImageUrl;
}
public void setMaterialFirstImageUrl(String materialFirstImageUrl) {
this.materialFirstImageUrl = materialFirstImageUrl;
}
public String getMaterialFirstImageInfo() {
return materialFirstImageInfo;
}
public void setMaterialFirstImageInfo(String materialFirstImageInfo) {
this.materialFirstImageInfo = materialFirstImageInfo;
}
public String getMaterialFileUrl() {
return materialFileUrl;
}
public void setMaterialFileUrl(String materialFileUrl) {
this.materialFileUrl = materialFileUrl;
}
public String getMaterialFileInfo() {
return materialFileInfo;
}
public void setMaterialFileInfo(String materialFileInfo) {
this.materialFileInfo = materialFileInfo;
}
public Long getShareCount() {
return shareCount;
}
......@@ -289,4 +370,42 @@ public class ContentMaterialInfoVO implements Serializable {
public void setMaterialVideoFirstImageInfo(String materialVideoFirstImageInfo) {
this.materialVideoFirstImageInfo = materialVideoFirstImageInfo;
}
public Long getLikeCount() {
return likeCount;
}
public void setLikeCount(Long likeCount) {
this.likeCount = likeCount;
}
public Integer getLikeFlag() {
return likeFlag;
}
public void setLikeFlag(Integer likeFlag) {
this.likeFlag = likeFlag;
}
public ContentMaterialExt getExt() {
return ext;
}
public void setExt(ContentMaterialExt ext) {
this.ext = ext;
}
public void convertMaterialImages(String materialImageUrls, String materialThumbnailImageUrls) {
if (StringUtils.isNotBlank(materialImageUrls)) {
String[] split = StringUtils.split(materialImageUrls, ",");
List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList());
this.setMaterialImageUrls(imageUrls);
}
if (StringUtils.isNotBlank(materialThumbnailImageUrls)) {
String[] split = StringUtils.split(materialThumbnailImageUrls, ",");
List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList());
this.setMaterialThumbnailImageUrls(imageUrls);
}
}
}
package com.gic.haoban.manage.web.vo.content.statistics;
import java.io.Serializable;
public class ContentMaterialKnowVO implements Serializable {
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 评论人数
*/
private Integer cmtNum;
/**
* 评论次数
*/
private Integer cmtCnt;
/**
* 阅读人数
*/
private Integer readNum;
/**
* 阅读次数
*/
private Integer readCnt;
/**
* 点赞人数
*/
private Integer likeNum;
/**
* 点赞次数
*/
private Integer likeCnt;
public ContentMaterialKnowVO() {
}
public ContentMaterialKnowVO(Integer cmtNum, Integer cmtCnt, Integer readNum, Integer readCnt, Integer likeNum, Integer likeCnt) {
this.cmtNum = cmtNum;
this.cmtCnt = cmtCnt;
this.readNum = readNum;
this.readCnt = readCnt;
this.likeNum = likeNum;
this.likeCnt = likeCnt;
}
public void setKnow(ContentMaterialKnowVO know) {
if (know == null) {
this.setCmtNum(0);
this.setCmtCnt(0);
this.setReadCnt(0);
this.setReadNum(0);
this.setLikeCnt(0);
this.setLikeNum(0);
return;
}
this.setCmtNum(know.getCmtNum());
this.setCmtCnt(know.getCmtCnt());
this.setReadCnt(know.getReadCnt());
this.setReadNum(know.getReadNum());
this.setLikeCnt(know.getLikeCnt());
this.setLikeNum(know.getLikeNum());
}
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public Integer getCmtNum() {
return cmtNum;
}
public void setCmtNum(Integer cmtNum) {
this.cmtNum = cmtNum;
}
public Integer getCmtCnt() {
return cmtCnt;
}
public void setCmtCnt(Integer cmtCnt) {
this.cmtCnt = cmtCnt;
}
public Integer getReadNum() {
return readNum;
}
public void setReadNum(Integer readNum) {
this.readNum = readNum;
}
public Integer getReadCnt() {
return readCnt;
}
public void setReadCnt(Integer readCnt) {
this.readCnt = readCnt;
}
public Integer getLikeNum() {
return likeNum;
}
public void setLikeNum(Integer likeNum) {
this.likeNum = likeNum;
}
public Integer getLikeCnt() {
return likeCnt;
}
public void setLikeCnt(Integer likeCnt) {
this.likeCnt = likeCnt;
}
}
......@@ -149,5 +149,7 @@
id="goodsCenterApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.commission.api.service.local.CommissionSettleDetailApiService"
id="commissionSettleDetailApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialCommentApiService"
id="contentMaterialCommentApiService" timeout="10000" retries="0" check="false" />
</beans>
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