Commit 4371676f by 王祖波

Merge branch 'feature-content4' into 'master'

Feature content4

See merge request !1422
parents 74e5adda dc7b309e
...@@ -80,6 +80,8 @@ public enum NoticeMessageTypeEnum { ...@@ -80,6 +80,8 @@ public enum NoticeMessageTypeEnum {
MATERIAL_REPORT_NOTIFY_MONTH(6004, "素材月报通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_month_notify", "/pages/route/index?pageType=", "hbapp_mate_report", "materialMonth", "clerkMaterialsReport"), MATERIAL_REPORT_NOTIFY_MONTH(6004, "素材月报通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_month_notify", "/pages/route/index?pageType=", "hbapp_mate_report", "materialMonth", "clerkMaterialsReport"),
CLERK_COMMISSION_NOTIFY(6005, "客户下单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "clerk_commission_notify", "/pages/route/index?pageType=", "hbapp_withdraw_list", "clerkCommissionNotify", "haobanNotice"), CLERK_COMMISSION_NOTIFY(6005, "客户下单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "clerk_commission_notify", "/pages/route/index?pageType=", "hbapp_withdraw_list", "clerkCommissionNotify", "haobanNotice"),
MATERIAL_AUDIT_NOTIFY(6006, "素材审核通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_audit_notify", "/pages/route/index?pageType=", "hbapp_create_center", "materialAuditNotify", "haobanNotice"),
CASH_APPLY_REFUSE_NOTIFY(7001,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_refuse_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyRefuseNotify","haobanNotice"), CASH_APPLY_REFUSE_NOTIFY(7001,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_refuse_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyRefuseNotify","haobanNotice"),
CASH_APPLY_FAIL_NOTIFY(7002,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_fail_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyFailNotify","haobanNotice"), CASH_APPLY_FAIL_NOTIFY(7002,"提现通知", NoticeMessageCategoryTypeEnum.OTHER.getType(),"cash_apply_fail_notify","/pages/route/index?pageType=","hbapp_withdraw_list","cashApplyFailNotify","haobanNotice"),
......
...@@ -56,6 +56,13 @@ public class InteractRecordInfoDTO implements Serializable { ...@@ -56,6 +56,13 @@ public class InteractRecordInfoDTO implements Serializable {
*/ */
private String bizId; private String bizId;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
/** /**
* 浏览的商品数量 * 浏览的商品数量
*/ */
...@@ -158,4 +165,12 @@ public class InteractRecordInfoDTO implements Serializable { ...@@ -158,4 +165,12 @@ public class InteractRecordInfoDTO implements Serializable {
public void setOrderGoodsNum(Integer orderGoodsNum) { public void setOrderGoodsNum(Integer orderGoodsNum) {
this.orderGoodsNum = orderGoodsNum; this.orderGoodsNum = orderGoodsNum;
} }
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
} }
...@@ -9,9 +9,10 @@ package com.gic.haoban.manage.api.enums.content; ...@@ -9,9 +9,10 @@ package com.gic.haoban.manage.api.enums.content;
**/ **/
public enum MaterialInteractRecordEventType { public enum MaterialInteractRecordEventType {
VISIT_MATERIAL(1, "浏览了你分享的素材"), VISIT_MATERIAL(1, "浏览了你分享的%s"),
VISIT_PRODUCT(2, "浏览了你分享的素材,并查看了关联商品"), VISIT_PRODUCT(2, "浏览了你分享的%s,并查看了关联商品"),
ORDER(3, "浏览了你分享的素材,并购买了商品"); ORDER(3, "浏览了你分享的%s,并购买了商品"),
ADD_SHOPPING_CART(4, "浏览你分享的%s,并加入了购物车");
MaterialInteractRecordEventType(Integer code, String desc) { MaterialInteractRecordEventType(Integer code, String desc) {
this.code = code; this.code = code;
...@@ -48,4 +49,5 @@ public enum MaterialInteractRecordEventType { ...@@ -48,4 +49,5 @@ public enum MaterialInteractRecordEventType {
public void setDesc(String desc) { public void setDesc(String desc) {
this.desc = desc; this.desc = desc;
} }
} }
...@@ -9,7 +9,8 @@ package com.gic.haoban.manage.api.enums.content; ...@@ -9,7 +9,8 @@ package com.gic.haoban.manage.api.enums.content;
**/ **/
public enum ShareBizType { public enum ShareBizType {
MATERIAL(1, "素材"); MATERIAL(1, "素材"),
GOODS(2, "商品");
ShareBizType(Integer code, String desc) { ShareBizType(Integer code, String desc) {
this.code = code; this.code = code;
this.desc = desc; this.desc = desc;
...@@ -24,4 +25,13 @@ public enum ShareBizType { ...@@ -24,4 +25,13 @@ public enum ShareBizType {
public String getDesc() { public String getDesc() {
return desc; return desc;
} }
public static String getDescWithCode(Integer code) {
for (ShareBizType value : values()) {
if (value.code.equals(code)) {
return value.desc;
}
}
return "";
}
} }
...@@ -82,4 +82,12 @@ public interface HaobanRoleApiService { ...@@ -82,4 +82,12 @@ public interface HaobanRoleApiService {
* @return * @return
*/ */
ServiceResponse<Void> contentMaterialRoleInit(ContentMaterialROleInitQDTO contentMaterialROleInitQDTO); ServiceResponse<Void> contentMaterialRoleInit(ContentMaterialROleInitQDTO contentMaterialROleInitQDTO);
/**
* 刷新企业权限 单次
* @param params
* @return
*/
@Deprecated
ServiceResponse<Void> flushRightOneTime(String params);
} }
...@@ -9,6 +9,7 @@ import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessa ...@@ -9,6 +9,7 @@ import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessa
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import java.util.Date; import java.util.Date;
...@@ -39,6 +40,30 @@ public class InteractRecordMessageContext { ...@@ -39,6 +40,30 @@ public class InteractRecordMessageContext {
*/ */
private Boolean hasDeal; private Boolean hasDeal;
/**
* 业务类型
* @return
*/
public Integer getBizType() {
// 素材id不为空 且 素材id是数字类型
if (StringUtils.isNotBlank(interactRecordMessageBO.getMaterialId())
&& NumberUtils.isDigits(interactRecordMessageBO.getMaterialId())) {
return ShareBizType.MATERIAL.getCode();
}
return ShareBizType.GOODS.getCode();
}
public String getBizId() {
Integer bizType = this.getBizType();
if (ShareBizType.MATERIAL.getCode().equals(bizType)) {
return interactRecordMessageBO.getMaterialId();
}
if (ShareBizType.GOODS.getCode().equals(bizType)) {
return interactRecordMessageBO.getGoodsId();
}
return StringUtils.EMPTY;
}
public static InteractRecordMessageContext create(InteractRecordMessageBO interactRecordMessageBO) { public static InteractRecordMessageContext create(InteractRecordMessageBO interactRecordMessageBO) {
InteractRecordMessageContext context = new InteractRecordMessageContext(); InteractRecordMessageContext context = new InteractRecordMessageContext();
context.setInteractRecordMessageBO(interactRecordMessageBO); context.setInteractRecordMessageBO(interactRecordMessageBO);
...@@ -51,8 +76,8 @@ public class InteractRecordMessageContext { ...@@ -51,8 +76,8 @@ public class InteractRecordMessageContext {
* @return * @return
*/ */
public String buildRecordKey() { public String buildRecordKey() {
String customerId = StringUtils.isNotBlank(interactRecordMessageBO.getMemberId()) ? interactRecordMessageBO.getMemberId() : interactRecordMessageBO.getUnionId(); String key = interactRecordMessageBO.getBusinessUUId() + interactRecordMessageBO.getClerkId()
String key = interactRecordMessageBO.getBusinessUUId() + interactRecordMessageBO.getClerkId() + interactRecordMessageBO.getMaterialId() + customerId; + this.getBizId() + this.getCustomerId();
return MD5.create().digestHex(key); return MD5.create().digestHex(key);
} }
...@@ -94,8 +119,8 @@ public class InteractRecordMessageContext { ...@@ -94,8 +119,8 @@ public class InteractRecordMessageContext {
temp.setEventType(this.interactRecordMessageBO.getEventType()); temp.setEventType(this.interactRecordMessageBO.getEventType());
Integer durationTime = Optional.ofNullable(this.interactRecordMessageBO.getDurationTime()).orElse(0); Integer durationTime = Optional.ofNullable(this.interactRecordMessageBO.getDurationTime()).orElse(0);
temp.setDurationTime(durationTime / 1000); temp.setDurationTime(durationTime / 1000);
temp.setBizType(ShareBizType.MATERIAL.getCode()); temp.setBizType(this.getBizType());
temp.setBizId(this.interactRecordMessageBO.getMaterialId() + ""); temp.setBizId(this.getBizId());
temp.setTimes(this.times); temp.setTimes(this.times);
temp.setTraceId(this.buildRecordKey()); temp.setTraceId(this.buildRecordKey());
temp.setDeleteFlag(0); temp.setDeleteFlag(0);
......
...@@ -45,7 +45,7 @@ public class InteractRecordMessageBO implements Serializable { ...@@ -45,7 +45,7 @@ public class InteractRecordMessageBO implements Serializable {
*/ */
private Integer channelSource; private Integer channelSource;
/** /**
* 事件类型 1浏览素材;2查看商品; 3购买商品 * 事件类型 1浏览素材;2查看商品; 3购买商品 4 加入购物车
*/ */
private Integer eventType; private Integer eventType;
/** /**
...@@ -80,4 +80,10 @@ public class InteractRecordMessageBO implements Serializable { ...@@ -80,4 +80,10 @@ public class InteractRecordMessageBO implements Serializable {
* 消息消费次数 * 消息消费次数
*/ */
private Integer times; private Integer times;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
} }
...@@ -68,10 +68,10 @@ public interface InteractRecordService { ...@@ -68,10 +68,10 @@ public interface InteractRecordService {
/** /**
* 查询最新的一条互动记录 * 查询最新的一条互动记录
* @param clerkId * @param clerkId
* @param materialId * @param bizId
* @param memberId * @param memberId
* @return * @return
*/ */
InteractRecordBO queryLeastRecord(String enterpriseId, String clerkId, String materialId, String memberId); InteractRecordBO queryLeastRecord(String enterpriseId, String clerkId, String bizId, String memberId);
} }
package com.gic.haoban.manage.service.service.content.adaptor;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.service.GoodsCenterApiService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @Author MUSI
* @Date 2023/8/15 9:28 AM
* @Description
* @Version
**/
@Component
public class GoodsInfoAdaptor {
@Autowired
private GoodsCenterApiService goodsCenterApiService;
public Map<String, GoodsSpuInfoDTO> queryGoodsMinPrice(String enterpriseId, List<String> goodsIds) {
ServiceResponse<List<GoodsSpuInfoDTO>> response = goodsCenterApiService.queryGoodsMinPrice(enterpriseId, goodsIds);
if (!response.isSuccess() || CollectionUtils.isEmpty(response.getResult())) {
return Collections.emptyMap();
}
return response.getResult()
.stream()
.collect(Collectors.toMap(GoodsSpuInfoDTO::getGoodsId, Function.identity(), (v1, v2) -> v1));
}
}
...@@ -2,18 +2,18 @@ package com.gic.haoban.manage.service.service.content.adaptor; ...@@ -2,18 +2,18 @@ package com.gic.haoban.manage.service.service.content.adaptor;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType; import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType; import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType;
import com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord; import com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO; import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO; import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO;
import com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO; import com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO;
import com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext; import com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext;
import com.gic.store.goods.dto.goods.GoodsInfoSimpleDTO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO; import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO; import com.gic.store.goods.service.GoodsInfoOutApiService;
import com.gic.store.goods.service.GoodsCenterApiService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -25,6 +25,7 @@ import java.util.Arrays; ...@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -36,10 +37,13 @@ import java.util.stream.Collectors; ...@@ -36,10 +37,13 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Component @Component
public class InteractRecordBuilder { public class InteractRecordBuilder {
@Autowired
private GoodsCenterApiService goodsCenterApiService;
@Autowired @Autowired
private InteractRecordMessageBuilder interactRecordMessageBuilder; private InteractRecordMessageBuilder interactRecordMessageBuilder;
@Autowired
private GoodsInfoOutApiService goodsInfoOutApiService;
@Autowired
private GoodsInfoAdaptor goodsInfoAdaptor;
/** /**
* 互动记录描述 * 互动记录描述
...@@ -48,7 +52,7 @@ public class InteractRecordBuilder { ...@@ -48,7 +52,7 @@ public class InteractRecordBuilder {
* @return * @return
*/ */
public String buildDesc(TabHaobanInteractRecord interactRecord) { public String buildDesc(TabHaobanInteractRecord interactRecord) {
return this.buildDesc(interactRecord.getChannelSource(), interactRecord.getEventType()); return this.buildDesc(interactRecord.getChannelSource(), interactRecord.getEventType(), interactRecord.getBizType());
} }
/** /**
...@@ -58,7 +62,7 @@ public class InteractRecordBuilder { ...@@ -58,7 +62,7 @@ public class InteractRecordBuilder {
* @param eventType * @param eventType
* @return * @return
*/ */
public String buildDesc(Integer channelSource, Integer eventType) { public String buildDesc(Integer channelSource, Integer eventType, Integer bizType) {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
if (TriggerCustomerChannelType.showDescChannel().contains(channelSource)) { if (TriggerCustomerChannelType.showDescChannel().contains(channelSource)) {
TriggerCustomerChannelType channelType = TriggerCustomerChannelType.getInstance(channelSource); TriggerCustomerChannelType channelType = TriggerCustomerChannelType.getInstance(channelSource);
...@@ -68,7 +72,11 @@ public class InteractRecordBuilder { ...@@ -68,7 +72,11 @@ public class InteractRecordBuilder {
} }
MaterialInteractRecordEventType instance = MaterialInteractRecordEventType.getInstance(eventType); MaterialInteractRecordEventType instance = MaterialInteractRecordEventType.getInstance(eventType);
if (instance != null) { if (instance != null) {
stringBuilder.append(instance.getDesc()); String text = String.format(instance.getDesc(), ShareBizType.getDescWithCode(bizType));
if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode().equals(eventType) && ShareBizType.GOODS.getCode().equals(bizType)) {
text = "浏览了你分享的商品";
}
stringBuilder.append(text);
} }
return stringBuilder.toString(); return stringBuilder.toString();
} }
...@@ -96,7 +104,9 @@ public class InteractRecordBuilder { ...@@ -96,7 +104,9 @@ public class InteractRecordBuilder {
} }
InteractRecordExtendInfoBO extendInfo = JSON.parseObject(interactRecord.getExtendInfo(), new TypeReference<InteractRecordExtendInfoBO>() { InteractRecordExtendInfoBO extendInfo = JSON.parseObject(interactRecord.getExtendInfo(), new TypeReference<InteractRecordExtendInfoBO>() {
}); });
if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode().equals(interactRecord.getEventType())) { if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode().equals(interactRecord.getEventType())
|| MaterialInteractRecordEventType.ADD_SHOPPING_CART.getCode().equals(interactRecord.getEventType())
|| MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecord.getEventType())) {
// 浏览商品事件 // 浏览商品事件
List<String> visitGoodsIds = extendInfo.getGoodsIds(); List<String> visitGoodsIds = extendInfo.getGoodsIds();
if (CollectionUtils.isEmpty(visitGoodsIds)) { if (CollectionUtils.isEmpty(visitGoodsIds)) {
...@@ -110,6 +120,19 @@ public class InteractRecordBuilder { ...@@ -110,6 +120,19 @@ public class InteractRecordBuilder {
extendInfo.setInvalidGoodsNum(visitGoodsIds.size() - extendGoodsInfos.size()); extendInfo.setInvalidGoodsNum(visitGoodsIds.size() - extendGoodsInfos.size());
return extendInfo; return extendInfo;
} }
// if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecord.getEventType())
// && ShareBizType.GOODS.getCode().equals(interactRecord.getBizType())) {
// InteractRecordExtendInfoBO.ExtendGoodsInfo extendGoodsInfo = new InteractRecordExtendInfoBO.ExtendGoodsInfo();
// extendGoodsInfo.setGoodsName();
// extendGoodsInfo.setGoodsCode(item.getGoodsCode());
// extendGoodsInfo.setGoodsImageUrl(item.getGoodsImageUrl());
// extendGoodsInfo.setSalePrice(item.getSalePrice());
// extendGoodsInfo.setSourceType(item.getSourceType());
// GoodsSpuInfoDTO goodsSpuInfoDTO = goodsMinPriceMap.get(item.getGoodsId());
// if (goodsSpuInfoDTO != null && goodsSpuInfoDTO.getMinPrice() != null) {
// extendGoodsInfo.setSalePrice(goodsSpuInfoDTO.getMinPrice());
// }
// }
return extendInfo; return extendInfo;
} }
...@@ -117,33 +140,32 @@ public class InteractRecordBuilder { ...@@ -117,33 +140,32 @@ public class InteractRecordBuilder {
if (CollectionUtils.isEmpty(visitGoodsIds)) { if (CollectionUtils.isEmpty(visitGoodsIds)) {
return Collections.emptyList(); return Collections.emptyList();
} }
GoodsListQDTO goodsListQDTO = new GoodsListQDTO(); ServiceResponse<List<GoodsInfoSimpleDTO>> serviceResponse = goodsInfoOutApiService.queryGoodsSimpleInfo(visitGoodsIds);
goodsListQDTO.setEnterpriseId(enterpriseId);
goodsListQDTO.setIncludeGoodsIds(visitGoodsIds);
goodsListQDTO.setPageSize(visitGoodsIds.size() + 1);
ServiceResponse<Page<GoodsSpuInfoDTO>> serviceResponse =
goodsCenterApiService.queryStoreGoodsList(goodsListQDTO);
// 1:已上线,2:未上线,3:回收站 // 1:已上线,2:未上线,3:回收站
if (!serviceResponse.isSuccess()) { if (!serviceResponse.isSuccess()) {
log.info("查询商品异常 {}", JSON.toJSONString(serviceResponse)); log.info("查询商品异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList(); return Collections.emptyList();
} }
if (CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) { if (CollectionUtils.isEmpty(serviceResponse.getResult())) {
log.info("查询商品为空 {}", JSON.toJSONString(serviceResponse)); log.info("查询商品为空 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList(); return Collections.emptyList();
} }
Map<String, GoodsSpuInfoDTO> goodsMinPriceMap = goodsInfoAdaptor.queryGoodsMinPrice(enterpriseId, visitGoodsIds);
List<Integer> excludeStatus = Arrays.asList(0, 3); List<Integer> excludeStatus = Arrays.asList(0, 3);
return serviceResponse.getResult() return serviceResponse.getResult()
.getResult()
.stream() .stream()
.filter(item -> !excludeStatus.contains(item.getStatus())) .filter(item -> !excludeStatus.contains(item.getStatus()))
.map(item -> { .map(item -> {
InteractRecordExtendInfoBO.ExtendGoodsInfo extendGoodsInfo = new InteractRecordExtendInfoBO.ExtendGoodsInfo(); InteractRecordExtendInfoBO.ExtendGoodsInfo extendGoodsInfo = new InteractRecordExtendInfoBO.ExtendGoodsInfo();
extendGoodsInfo.setGoodsName(item.getGoodsName()); extendGoodsInfo.setGoodsName(item.getGoodsName());
extendGoodsInfo.setGoodsCode(item.getGoodsCode()); extendGoodsInfo.setGoodsCode(item.getGoodsCode());
extendGoodsInfo.setGoodsImageUrl(item.getImageUrl()); extendGoodsInfo.setGoodsImageUrl(item.getGoodsImageUrl());
extendGoodsInfo.setSalePrice(item.getSalePrice()); extendGoodsInfo.setSalePrice(item.getSalePrice());
extendGoodsInfo.setSourceType(item.getSourceType()); extendGoodsInfo.setSourceType(item.getSourceType());
GoodsSpuInfoDTO goodsSpuInfoDTO = goodsMinPriceMap.get(item.getGoodsId());
if (goodsSpuInfoDTO != null && goodsSpuInfoDTO.getMinPrice() != null) {
extendGoodsInfo.setSalePrice(goodsSpuInfoDTO.getMinPrice());
}
return extendGoodsInfo; return extendGoodsInfo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
......
...@@ -190,7 +190,7 @@ public class InteractRecordMessageBuilder { ...@@ -190,7 +190,7 @@ public class InteractRecordMessageBuilder {
.map(ListOrderItemDTO::getMallProId) .map(ListOrderItemDTO::getMallProId)
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
Map<String, Integer> goodsSourceTypeMap = queryGoodsSimpleInfo(enterpriseId, goodsIds); Map<String, Integer> goodsSourceTypeMap = this.queryGoodsSimpleInfo(enterpriseId, goodsIds);
OrderOutInfoDTO orderOutInfoDTO = serviceResponse.getResult(); OrderOutInfoDTO orderOutInfoDTO = serviceResponse.getResult();
InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = new InteractRecordExtendInfoBO.ExtendOrderInfo(); InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = new InteractRecordExtendInfoBO.ExtendOrderInfo();
......
...@@ -232,16 +232,16 @@ public class InteractRecordServiceImpl implements InteractRecordService { ...@@ -232,16 +232,16 @@ public class InteractRecordServiceImpl implements InteractRecordService {
* 查询最新的一条互动记录 * 查询最新的一条互动记录
* *
* @param clerkId * @param clerkId
* @param materialId * @param bizId
* @param memberId * @param memberId
* @return * @return
*/ */
@Override @Override
public InteractRecordBO queryLeastRecord(String enterpriseId, String clerkId, String materialId, String memberId) { public InteractRecordBO queryLeastRecord(String enterpriseId, String clerkId, String bizId, String memberId) {
InteractRecordQO interactRecordQO = new InteractRecordQO(); InteractRecordQO interactRecordQO = new InteractRecordQO();
interactRecordQO.setEnterpriseId(enterpriseId); interactRecordQO.setEnterpriseId(enterpriseId);
interactRecordQO.setClerkId(clerkId); interactRecordQO.setClerkId(clerkId);
interactRecordQO.setBizId(materialId); interactRecordQO.setBizId(bizId);
interactRecordQO.setMemberId(memberId); interactRecordQO.setMemberId(memberId);
PageHelper.startPage(1, 1); PageHelper.startPage(1, 1);
com.github.pagehelper.Page<TabHaobanInteractRecord> pageResult = com.github.pagehelper.Page<TabHaobanInteractRecord> pageResult =
......
package com.gic.haoban.manage.service.service.content.message; package com.gic.haoban.manage.service.service.content.message;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType; 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.pojo.bo.content.message.InteractRecordMessageBO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -11,6 +12,7 @@ import org.springframework.kafka.listener.MessageListener; ...@@ -11,6 +12,7 @@ import org.springframework.kafka.listener.MessageListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* @Author MUSI * @Author MUSI
...@@ -29,12 +31,14 @@ public class InteractRecordMessageListener implements MessageListener<String, St ...@@ -29,12 +31,14 @@ public class InteractRecordMessageListener implements MessageListener<String, St
static { static {
dealEventType.add(MaterialInteractRecordEventType.VISIT_PRODUCT.getCode()); dealEventType.add(MaterialInteractRecordEventType.VISIT_PRODUCT.getCode());
dealEventType.add(MaterialInteractRecordEventType.VISIT_MATERIAL.getCode()); dealEventType.add(MaterialInteractRecordEventType.VISIT_MATERIAL.getCode());
dealEventType.add(MaterialInteractRecordEventType.ADD_SHOPPING_CART.getCode());
} }
@Override @Override
public void onMessage(ConsumerRecord<String, String> consumerRecord) { public void onMessage(ConsumerRecord<String, String> consumerRecord) {
ProviderLocalTag providerLocalTag = ProviderLocalTag.tag.get();
providerLocalTag.traceId = UUID.randomUUID().toString();
String value = consumerRecord.value(); String value = consumerRecord.value();
log.info("【InteractRecordMessageListener】处理埋点事件 {}", value); log.info("【InteractRecordMessageListener】处理埋点事件 {}", value);
InteractRecordMessageBO recordMessageBO = JSON.parseObject(value, InteractRecordMessageBO.class); InteractRecordMessageBO recordMessageBO = JSON.parseObject(value, InteractRecordMessageBO.class);
if (recordMessageBO == null) { if (recordMessageBO == null) {
...@@ -42,7 +46,7 @@ public class InteractRecordMessageListener implements MessageListener<String, St ...@@ -42,7 +46,7 @@ public class InteractRecordMessageListener implements MessageListener<String, St
return; return;
} }
if (recordMessageBO.getEventType() == null || !dealEventType.contains(recordMessageBO.getEventType())) { if (recordMessageBO.getEventType() == null || !dealEventType.contains(recordMessageBO.getEventType())) {
log.info("素材埋点事件类型非素材相关类型 {}", recordMessageBO.getEventType()); log.info("埋点事件类型非相关类型 {}", recordMessageBO.getEventType());
return; return;
} }
dataConvert(recordMessageBO); dataConvert(recordMessageBO);
......
...@@ -92,6 +92,9 @@ public class InteractRecordMessageService { ...@@ -92,6 +92,9 @@ public class InteractRecordMessageService {
if (interactRecordBO.getEventType() < interactRecordMessageBO.getEventType()) { if (interactRecordBO.getEventType() < interactRecordMessageBO.getEventType()) {
interactRecordBO.setEventType(interactRecordMessageBO.getEventType()); interactRecordBO.setEventType(interactRecordMessageBO.getEventType());
} }
if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) {
interactRecordBO.setEventType(interactRecordMessageBO.getEventType());
}
} }
// 更新互动记录的最新访问时间 // 更新互动记录的最新访问时间
if (interactRecordBO.getLastAccessTime().before(new Date(interactRecordMessageBO.getLastAccessTime()))) { if (interactRecordBO.getLastAccessTime().before(new Date(interactRecordMessageBO.getLastAccessTime()))) {
...@@ -100,15 +103,19 @@ public class InteractRecordMessageService { ...@@ -100,15 +103,19 @@ public class InteractRecordMessageService {
if (!MaterialInteractRecordEventType.VISIT_MATERIAL.getCode().equals(interactRecordMessageBO.getEventType()) if (!MaterialInteractRecordEventType.VISIT_MATERIAL.getCode().equals(interactRecordMessageBO.getEventType())
&& null == interactRecordBO.getExtendInfo()) { && null == interactRecordBO.getExtendInfo()) {
log.info("非素材浏览时间,初始化扩展字段"); log.info("非素材浏览事件,初始化扩展字段");
interactRecordBO.setExtendInfo(InteractRecordExtendInfoBO.empty()); interactRecordBO.setExtendInfo(InteractRecordExtendInfoBO.empty());
} }
// 组装扩展信息 // 组装扩展信息
if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode().equals(interactRecordMessageBO.getEventType())) { if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode()
.equals(interactRecordMessageBO.getEventType())
|| MaterialInteractRecordEventType.ADD_SHOPPING_CART.getCode().equals(interactRecordBO.getEventType())) {
// 浏览商品 // 浏览商品
if (StringUtils.isNotBlank(interactRecordMessageBO.getGoodsId()) if (StringUtils.isNotBlank(interactRecordMessageBO.getGoodsId())
&& !interactRecordBO.getExtendInfo().getGoodsIds().contains(interactRecordMessageBO.getGoodsId())) { && !interactRecordBO.getExtendInfo()
interactRecordBO.getExtendInfo().getGoodsIds().add(interactRecordMessageBO.getGoodsId()); .getGoodsIds().contains(interactRecordMessageBO.getGoodsId())) {
interactRecordBO.getExtendInfo().getGoodsIds()
.add(interactRecordMessageBO.getGoodsId());
} }
} }
...@@ -139,9 +146,9 @@ public class InteractRecordMessageService { ...@@ -139,9 +146,9 @@ public class InteractRecordMessageService {
potentialCustomerBO.setSeeFlag(0); potentialCustomerBO.setSeeFlag(0);
potentialCustomerBO.setStoreId(interactRecordBO.getStoreId()); potentialCustomerBO.setStoreId(interactRecordBO.getStoreId());
potentialCustomerBO.setBizId(interactRecordBO.getBizId()); potentialCustomerBO.setBizId(interactRecordBO.getBizId());
potentialCustomerBO.setBizType(interactRecordBO.getBizType());
potentialCustomerBO.setEventType(interactRecordBO.getEventType()); potentialCustomerBO.setEventType(interactRecordBO.getEventType());
potentialCustomerBO.setChannelSource(interactRecordBO.getChannelSource()); potentialCustomerBO.setChannelSource(interactRecordBO.getChannelSource());
potentialCustomerBO.setEventType(interactRecordBO.getEventType());
potentialCustomerBO.setDurationTime(interactRecordBO.getDurationTime()); potentialCustomerBO.setDurationTime(interactRecordBO.getDurationTime());
potentialCustomerBO.setTimes(interactRecordBO.getTimes()); potentialCustomerBO.setTimes(interactRecordBO.getTimes());
potentialCustomerService.saveOrUpdatePotentialCustomer(potentialCustomerBO); potentialCustomerService.saveOrUpdatePotentialCustomer(potentialCustomerBO);
...@@ -157,9 +164,14 @@ public class InteractRecordMessageService { ...@@ -157,9 +164,14 @@ public class InteractRecordMessageService {
* @return * @return
*/ */
public InteractRecordBO getInteractRecordBOWithOrderType(InteractRecordMessageBO interactRecordMessageBO) { public InteractRecordBO getInteractRecordBOWithOrderType(InteractRecordMessageBO interactRecordMessageBO) {
InteractRecordBO interactRecordBO; InteractRecordBO interactRecordBO = null;
String bizId = interactRecordMessageBO.getMaterialId();
if (StringUtils.isBlank(bizId)) {
bizId = interactRecordMessageBO.getGoodsId();
}
interactRecordBO = interactRecordService.queryLeastRecord(interactRecordMessageBO.getEnterpriseId(), interactRecordMessageBO.getClerkId(), interactRecordBO = interactRecordService.queryLeastRecord(interactRecordMessageBO.getEnterpriseId(), interactRecordMessageBO.getClerkId(),
interactRecordMessageBO.getMaterialId(), interactRecordMessageBO.getMemberId()); bizId, interactRecordMessageBO.getMemberId());
return interactRecordBO; return interactRecordBO;
} }
} }
...@@ -76,13 +76,21 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -76,13 +76,21 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
JSONObject jsonObject = JSON.parseObject(extendJson, JSONObject.class); JSONObject jsonObject = JSON.parseObject(extendJson, JSONObject.class);
String clerkId = jsonObject.getString("clerkId"); String clerkId = jsonObject.getString("clerkId");
String contentMaterialId = jsonObject.getString("contentMaterialId"); String contentMaterialId = jsonObject.getString("contentMaterialId");
String goodsId = jsonObject.getString("proId");
String memberId = orderEventMqBO.getMemberId(); String memberId = orderEventMqBO.getMemberId();
InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO(); InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO();
interactRecordMessageBO.setEnterpriseId(orderEventMqBO.getEnterpriseId()); interactRecordMessageBO.setEnterpriseId(orderEventMqBO.getEnterpriseId());
interactRecordMessageBO.setMemberId(memberId); interactRecordMessageBO.setMemberId(memberId);
interactRecordMessageBO.setClerkId(clerkId); interactRecordMessageBO.setClerkId(clerkId);
interactRecordMessageBO.setMaterialId(contentMaterialId); if (StringUtils.isNotBlank(contentMaterialId) && StringUtils.isNumeric(contentMaterialId)) {
interactRecordMessageBO.setMaterialId(contentMaterialId);
}else if (StringUtils.isNotBlank(goodsId) && !StringUtils.isNumeric(goodsId)) {
interactRecordMessageBO.setGoodsId(goodsId);
}else {
log.info("订单扩展信息中无要处理的数据 {}", extendJson);
return ServiceResponse.success();
}
interactRecordMessageBO.setEventType(MaterialInteractRecordEventType.ORDER.getCode()); interactRecordMessageBO.setEventType(MaterialInteractRecordEventType.ORDER.getCode());
interactRecordMessageBO.setDurationTime(0); interactRecordMessageBO.setDurationTime(0);
interactRecordMessageBO.setLastAccessTime(orderInfo.getCreateTime().getTime()); interactRecordMessageBO.setLastAccessTime(orderInfo.getCreateTime().getTime());
......
...@@ -56,7 +56,7 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ ...@@ -56,7 +56,7 @@ public class PotentialCustomerApiServiceImpl implements PotentialCustomerApiServ
PotentialCustomerDTO temp = new PotentialCustomerDTO(); PotentialCustomerDTO temp = new PotentialCustomerDTO();
BeanUtils.copyProperties(item, temp); BeanUtils.copyProperties(item, temp);
temp.setPotentialCustomerId(item.getId()); temp.setPotentialCustomerId(item.getId());
temp.setDesc(interactRecordBuilder.buildDesc(item.getChannelSource(), item.getEventType())); temp.setDesc(interactRecordBuilder.buildDesc(item.getChannelSource(), item.getEventType(), item.getBizType()));
return temp; return temp;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
......
...@@ -26,6 +26,7 @@ import com.gic.haoban.manage.service.pojo.bo.role.HaobanMenuBO; ...@@ -26,6 +26,7 @@ import com.gic.haoban.manage.service.pojo.bo.role.HaobanMenuBO;
import com.gic.haoban.manage.service.pojo.bo.role.HaobanRoleBO; import com.gic.haoban.manage.service.pojo.bo.role.HaobanRoleBO;
import com.gic.haoban.manage.service.service.TemplateEnterpriseRelatedService; import com.gic.haoban.manage.service.service.TemplateEnterpriseRelatedService;
import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService; import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService;
import com.gic.haoban.manage.service.service.content.adaptor.MaterialEnterpriseAdaptor;
import com.gic.haoban.manage.service.service.role.HaobanMenuService; import com.gic.haoban.manage.service.service.role.HaobanMenuService;
import com.gic.haoban.manage.service.service.role.HaobanRoleMenuService; import com.gic.haoban.manage.service.service.role.HaobanRoleMenuService;
import com.gic.haoban.manage.service.service.role.HaobanRoleService; import com.gic.haoban.manage.service.service.role.HaobanRoleService;
...@@ -68,6 +69,8 @@ public class HaobanRoleApiServiceImpl implements HaobanRoleApiService { ...@@ -68,6 +69,8 @@ public class HaobanRoleApiServiceImpl implements HaobanRoleApiService {
private TabHaobanTemplateApplicationRelatedMapper tabHaobanTemplateApplicationRelatedMapper; private TabHaobanTemplateApplicationRelatedMapper tabHaobanTemplateApplicationRelatedMapper;
@Autowired @Autowired
private TemplateEnterpriseRelatedService templateEnterpriseRelatedService; private TemplateEnterpriseRelatedService templateEnterpriseRelatedService;
@Autowired
private MaterialEnterpriseAdaptor materialEnterpriseAdaptor;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -575,16 +578,50 @@ public class HaobanRoleApiServiceImpl implements HaobanRoleApiService { ...@@ -575,16 +578,50 @@ public class HaobanRoleApiServiceImpl implements HaobanRoleApiService {
static { static {
// 导购 // 导购
menuCodeMap.put("0" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "salesClue", "customerDetail_interact")); menuCodeMap.put("0" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab",
menuCodeMap.put("0" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain","commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "salesClue", "customerDetail_interact")); "goodsDetail_material", "goodsCenter_Count", "salesClue", "customerDetail_interact"));
menuCodeMap.put("0" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain","commodityCenter", "commodityCenterTab", "materialCenterTab",
"goodsDetail_material", "goodsCenter_Count", "salesClue", "customerDetail_interact", "publishMaterial", "userCenter_createCenter"));
// 店长 // 店长
menuCodeMap.put("1" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage", "salesClue", "customerDetail_interact")); menuCodeMap.put("1" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage", "salesClue", "customerDetail_interact"));
menuCodeMap.put("1" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage", "salesClue", "customerDetail_interact")); menuCodeMap.put("1" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab",
"goodsDetail_material", "goodsCenter_Count", "materialManage", "salesClue", "customerDetail_interact", "publishMaterial", "userCenter_createCenter"));
// 区经 // 区经
menuCodeMap.put("2" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage")); menuCodeMap.put("2" + ContentMaterialROleInitQDTO.Version.LOW.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage"));
menuCodeMap.put("2" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab", "goodsDetail_material", "goodsCenter_Count", "materialManage")); menuCodeMap.put("2" + ContentMaterialROleInitQDTO.Version.HIGH.getCode(), Arrays.asList("materialMain", "commodityCenter", "commodityCenterTab", "materialCenterTab",
"goodsDetail_material", "goodsCenter_Count", "materialManage", "publishMaterial", "userCenter_createCenter"));
} }
/**
* 刷新企业权限
*
* @param params
* @return
*/
@Override
public ServiceResponse<Void> flushRightOneTime(String params) {
logger.info("flushRightOneTime 刷新企业内容权限:{}", params);
// 获取所有开通内容高级版的企业
List<String> enterpriseIds = materialEnterpriseAdaptor.queryHasRightEnterpriseIds(MaterialEnterpriseAdaptor.MaterialLevel.HIGH.getCode());
// 执行刷新权限
String enterpriseId = "";
if (StringUtils.isNotBlank(params) && !StringUtils.equals("-1", params)) {
enterpriseId = params;
}
for (String tempId : enterpriseIds) {
if (StringUtils.isNotBlank(enterpriseId) && !StringUtils.equalsIgnoreCase(enterpriseId, tempId)) {
logger.info("当前企业:{} 不是目标企业:{}, 忽略", tempId, enterpriseId);
continue;
}
ContentMaterialROleInitQDTO contentMaterialROleInitQDTO = new ContentMaterialROleInitQDTO();
contentMaterialROleInitQDTO.setEnterpriseId(tempId);
contentMaterialROleInitQDTO.setVersion(MaterialEnterpriseAdaptor.MaterialLevel.HIGH.getCode());
logger.info("添加企业素材纬度权限: {}", JSON.toJSONString(contentMaterialROleInitQDTO));
this.contentMaterialRoleInit(contentMaterialROleInitQDTO);
}
return ServiceResponse.success();
}
} }
...@@ -323,6 +323,7 @@ ...@@ -323,6 +323,7 @@
update tab_haoban_interact_record update tab_haoban_interact_record
set member_id = #{memberId} set member_id = #{memberId}
where union_id = #{unionId} and delete_flag = 0 where union_id = #{unionId} and delete_flag = 0
and (member_id is null or member_id = '')
</update> </update>
</mapper> </mapper>
......
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.content.PotentialCustomerDTO;
import com.gic.haoban.manage.api.dto.qdto.content.PotentialCustomerQDTO;
import com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService; import com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService;
import com.gic.haoban.manage.api.service.content.PotentialCustomerApiService;
import com.gic.haoban.manage.service.pojo.bo.content.OrderEventMqBO;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO; import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import com.gic.haoban.manage.service.service.content.PotentialCustomerService;
import com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService; import com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService;
import com.gic.haoban.manage.service.service.out.impl.content.MallOrderStatusChangeApiServiceImpl;
import com.sun.org.apache.bcel.internal.generic.DADD; import com.sun.org.apache.bcel.internal.generic.DADD;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -26,6 +35,8 @@ public class InteractRecordMessageServiceTest { ...@@ -26,6 +35,8 @@ public class InteractRecordMessageServiceTest {
InteractRecordMessageService interactRecordMessageService; InteractRecordMessageService interactRecordMessageService;
@Autowired @Autowired
MallOrderStatusChangeApiService mallOrderStatusChangeApiService; MallOrderStatusChangeApiService mallOrderStatusChangeApiService;
@Autowired
private PotentialCustomerApiService potentialCustomerApiService;
String eid = "ff8080815dacd3a2015dacd3ef5c0000"; String eid = "ff8080815dacd3a2015dacd3ef5c0000";
String wxEid = "ca66a01b79474c40b3e7c7f93daf1a3b"; String wxEid = "ca66a01b79474c40b3e7c7f93daf1a3b";
...@@ -60,4 +71,34 @@ public class InteractRecordMessageServiceTest { ...@@ -60,4 +71,34 @@ public class InteractRecordMessageServiceTest {
String params ="{\"orderNumber\":\"6230408781099580\",\"toStatus\":2,\"fromStatus\":1,\"orderId\":\"c08691af8297480db3d25ef5ef19e863\",\"enterpriseId\":\"ff8080815dacd3a2015dacd3ef5c0000\",\"mqTraceId\":\"244806167-1-1680932807.425-/gic-thirdparty/wxmall_payment_result_notice\",\"memberId\":\"ff8080818147efc8018148d1759903c8\"}"; String params ="{\"orderNumber\":\"6230408781099580\",\"toStatus\":2,\"fromStatus\":1,\"orderId\":\"c08691af8297480db3d25ef5ef19e863\",\"enterpriseId\":\"ff8080815dacd3a2015dacd3ef5c0000\",\"mqTraceId\":\"244806167-1-1680932807.425-/gic-thirdparty/wxmall_payment_result_notice\",\"memberId\":\"ff8080818147efc8018148d1759903c8\"}";
mallOrderStatusChangeApiService.mallOrderStatusChange(params); mallOrderStatusChangeApiService.mallOrderStatusChange(params);
} }
@Test
public void dealGoodsRecord(){
String json = "{\"businessUUId\":\"IcB5ZMEvmzir1uvjgc6ohJFMmexraBak\",\"durationTime\":21990,\"enterpriseId\":\"ff8080815dacd3a2015dacd3ef5c0000\",\"eventType\":2,\"goodsId\":\"ff808081890a1b4201890a54b479001d\",\"lastAccessTime\":1692580759467,\"memberId\":\"ff80808189fd5ba6018a01ea3e070673\",\"refUrl\":\"pages/authorize/authorize\",\"unionId\":\"orXl9tyHOI4qP1QxwVcA7A3sB7zg\"}";
InteractRecordMessageBO interactRecordMessageBO = JSONObject.parseObject(json, InteractRecordMessageBO.class);
interactRecordMessageBO.setChannelSource(3);
interactRecordMessageBO.setClerkId("415b123576674913b365005b81037551");
interactRecordMessageService.dealRecord(interactRecordMessageBO);
}
@Test
public void queryPotentialCustomer() {
PotentialCustomerQDTO potentialCustomerQDTO = new PotentialCustomerQDTO();
potentialCustomerQDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
potentialCustomerQDTO.setClerkId("415b123576674913b365005b81037551");
potentialCustomerQDTO.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
ServiceResponse<Page<PotentialCustomerDTO>> pageServiceResponse = potentialCustomerApiService.queryPotentialCustomer(potentialCustomerQDTO);
System.out.println(JSONObject.toJSONString(pageServiceResponse));
}
@Autowired
private MallOrderStatusChangeApiServiceImpl mallOrderStatusChangeApiServiceImpl;
@Test
public void orderTest() {
String json = "{\"orderNumber\":\"0230823781099580\",\"toStatus\":2,\"fromStatus\":1,\"orderId\":\"0a84ff17893046e49839fa3c3542bffa\",\"deliveryChannel\":1,\"eventTime\":1692794627733,\"enterpriseId\":\"8a809083802bbf5201804af08b0d0095\",\"businessType\":1,\"mqTraceId\":\"60157-1-1692794627.506-/gic-thirdparty/wxmall_payment_result_notice\",\"memberId\":\"8a808d838995476c0189b55f0ab807f7\"}";
mallOrderStatusChangeApiServiceImpl.sendDelayMessage(JSONObject.parseObject(json, OrderEventMqBO.class));
}
} }
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.controller; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.controller;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.common.anno.IgnoreLogin; import com.gic.haoban.common.anno.IgnoreLogin;
import com.gic.haoban.manage.web.qo.logrecord.ErrorLogReportQO;
import com.gic.log.record.bean.WebErrorLogReport; import com.gic.log.record.bean.WebErrorLogReport;
import com.gic.log.record.util.LogWebErrorLogReportUtil; import com.gic.log.record.util.LogWebErrorLogReportUtil;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -27,9 +28,13 @@ public class TabHaobanAppLogController { ...@@ -27,9 +28,13 @@ public class TabHaobanAppLogController {
@ResponseBody @ResponseBody
@IgnoreLogin @IgnoreLogin
@com.gic.web.common.ano.IgnoreLogin @com.gic.web.common.ano.IgnoreLogin
public RestResponse<Boolean> insertLog(@RequestBody WebErrorLogReport qo) { public RestResponse<Boolean> insertLog(@RequestBody ErrorLogReportQO qo) {
logger.info("插入日志的参数:{}", JSON.toJSONString(qo)); logger.info("插入日志的参数:{}", JSON.toJSONString(qo));
qo.setCreateTime(new Date()); qo.setCreateTime(new Date());
if (qo.getType() != null && qo.getType() == 1) {
logger.info("TabHaobanAppLogController 日志内容:{}", JSON.toJSONString(qo));
return RestResponse.successResult();
}
LogWebErrorLogReportUtil.pushWebErrorLogReport(qo); LogWebErrorLogReportUtil.pushWebErrorLogReport(qo);
return RestResponse.successResult(); return RestResponse.successResult();
} }
......
package com.gic.haoban.manage.web.qo.logrecord;
import com.gic.log.record.bean.WebErrorLogReport;
/**
* @Author MUSI
* @Date 2023/8/15 2:27 PM
* @Description
* @Version
**/
public class ErrorLogReportQO extends WebErrorLogReport {
private static final long serialVersionUID = -2657084366633675726L;
/**
* 0 获取null 正常记录
* 1 只记录log日志,不记录到ES
*/
private Integer type;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
}
...@@ -243,6 +243,9 @@ public class WxStaffController extends WebBaseController { ...@@ -243,6 +243,9 @@ public class WxStaffController extends WebBaseController {
vo.setClerkId(dto.getClerkId()); vo.setClerkId(dto.getClerkId());
vo.setClerkType(dto.getClerkType()); vo.setClerkType(dto.getClerkType());
vo.setClerkImg(dto.getImageUrl()); vo.setClerkImg(dto.getImageUrl());
if (StringUtils.isBlank(vo.getClerkImg())) {
vo.setClerkImg(dto.getHeadImgUrl());
}
vo.setClerkName(dto.getClerkName()); vo.setClerkName(dto.getClerkName());
StaffClerkRelationDTO related = bindCodeMap.get(dto.getClerkId()); StaffClerkRelationDTO related = bindCodeMap.get(dto.getClerkId());
if (related != null) { if (related != null) {
...@@ -251,6 +254,8 @@ public class WxStaffController extends WebBaseController { ...@@ -251,6 +254,8 @@ public class WxStaffController extends WebBaseController {
} else { } else {
vo.setBindFlag(0); vo.setBindFlag(0);
} }
long memberCount = customerApiService.countMember(enterpriseId, storeId, dto.getClerkId());
vo.setMemberCount(Convert.toInt(memberCount, 0));
resultList.add(vo); resultList.add(vo);
} }
Page<StoreClerkVO> page = new Page(); Page<StoreClerkVO> page = new Page();
...@@ -1904,6 +1909,7 @@ public class WxStaffController extends WebBaseController { ...@@ -1904,6 +1909,7 @@ public class WxStaffController extends WebBaseController {
}else { }else {
vo.setStatus(2); vo.setStatus(2);
} }
vo.setModuleVersion(dto.getModuleVersion());
return RestResponse.successResult(vo); return RestResponse.successResult(vo);
} }
......
package com.gic.haoban.manage.web.controller.content;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.material.ContentMaterialDTO;
import com.gic.content.api.enums.*;
import com.gic.content.api.qdto.material.ContentMaterialPageQDTO;
import com.gic.content.api.qdto.material.ContentMaterialQDTO;
import com.gic.content.api.qdto.producer.ContentProducerClerkRandomQDTO;
import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.web.controller.content.adaptor.ClerkStoreAdaptor;
import com.gic.haoban.manage.web.controller.content.adaptor.MaterialDataAdaptor;
import com.gic.haoban.manage.web.qo.content.ContentAuditMaterialDataQO;
import com.gic.haoban.manage.web.qo.content.ContentAuditMaterialQO;
import com.gic.haoban.manage.web.qo.content.ContentMaterialSaveQO;
import com.gic.haoban.manage.web.vo.content.creative.ContentMaterialConvsVO;
import com.gic.haoban.manage.web.vo.content.creative.ContentMaterialDataVO;
import com.gic.haoban.manage.web.vo.content.creative.ContentMaterialVO;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 好办-创作中心
*
*/
@Controller
@RequestMapping("/creative")
public class ContentCreativeController {
private static final Logger log = LoggerFactory.getLogger(ContentCreativeController.class);
@Autowired
private ContentMaterialApiService contentMaterialApiService;
@Autowired
private ClerkService clerkService;
@Autowired
private ClerkStoreAdaptor clerkStoreAdaptor;
@Autowired
private MaterialDataAdaptor materialDataAdaptor;
/**
* 创建素材
* @param saveQO
* @return
*/
@ResponseBody
@RequestMapping("/save-material")
public RestResponse<ContentMaterialDTO> saveMaterial(@Validated @RequestBody ContentMaterialSaveQO saveQO) {
String clerkId = saveQO.getClerkId();
StaffDTO staffDTO = clerkStoreAdaptor.queryStaff(clerkId);
if (staffDTO == null) {
return RestResponse.failure("-1", "成员不存在");
}
ClerkDTO clerk = clerkService.getClerkByClerkId(clerkId);
if (clerk == null) {
return RestResponse.failure("-1", "导购不存在");
}
//组装导购发布人信息
ContentProducerClerkRandomQDTO producerQDTO = new ContentProducerClerkRandomQDTO();
producerQDTO.setProducerType(MaterialProducerTypeEnum.CLERK.value);
producerQDTO.setNickName(clerk.getClerkName());
String headImg = staffDTO.getHeadImg();
if (StringUtils.isBlank(headImg)) {
headImg = clerk.getImageUrl();
}
producerQDTO.setAvatar(headImg);
producerQDTO.setEnterpriseId(saveQO.getEnterpriseId());
producerQDTO.setClerkId(clerkId);
producerQDTO.setClerkCode(clerk.getClerkCode());
producerQDTO.setStoreId(clerk.getStoreId());
ContentMaterialQDTO contentMaterialQDTO = EntityUtil.changeEntityByJSON(ContentMaterialQDTO.class, saveQO);
contentMaterialQDTO.setCreatorId(clerk.getClerkId());
contentMaterialQDTO.setCreatorName(clerk.getClerkName());
contentMaterialQDTO.setUpdaterId(clerk.getClerkId());
contentMaterialQDTO.setUpdaterName(clerk.getClerkName());
contentMaterialQDTO.setProducer(producerQDTO);
contentMaterialQDTO.setMaterialPurpose(MaterialPurposeEnum.AUDIT.code);
contentMaterialQDTO.setPublishType(MaterialPublishTypeEnum.NONE.value);
contentMaterialQDTO.setShelfStatus(Constant.FLAG_TRUE);
ServiceResponse<ContentMaterialDTO> response = contentMaterialApiService.saveMaterial(contentMaterialQDTO);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
return RestResponse.successResult(response.getResult());
}
/**
* 删除素材
* @param enterpriseId 企业id
* @param contentMaterialId 素材id
* @return
*/
@ResponseBody
@RequestMapping("/delete-material")
public RestResponse<Void> saveMaterial(String enterpriseId, Long contentMaterialId) {
ServiceResponse<Void> response = contentMaterialApiService.deleteMaterial(enterpriseId, contentMaterialId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
return RestResponse.successResult();
}
/**
* 素材详情
* @param enterpriseId 企业id
* @param contentMaterialId 素材id
* @return
*/
@ResponseBody
@RequestMapping("/detail-material")
public RestResponse<ContentMaterialVO> getMaterialDetail(String enterpriseId, Long contentMaterialId) {
ServiceResponse<ContentMaterialDTO> response = contentMaterialApiService.getMaterialDetail(enterpriseId, contentMaterialId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
ContentMaterialVO detailVO = EntityUtil.changeEntityByJSON(ContentMaterialVO.class, response.getResult());
Map<Long, ContentMaterialConvsVO> map = materialDataAdaptor.queryCreativeConvsMap(enterpriseId, Lists.newArrayList(detailVO.getContentMaterialId()), null);
ContentMaterialConvsVO materialConvsVO = map.get(detailVO.getContentMaterialId());
detailVO.setConvs(materialConvsVO);
return RestResponse.successResult(detailVO);
}
/**
* 素材列表
* @param auditMaterialQO qo
* @return
*/
@ResponseBody
@RequestMapping("/page-material")
public RestResponse<Page<ContentMaterialVO>> pageAuditMaterial(@RequestBody ContentAuditMaterialQO auditMaterialQO) {
ContentMaterialPageQDTO pageQDTO = new ContentMaterialPageQDTO();
String enterpriseId = auditMaterialQO.getEnterpriseId();
pageQDTO.setEnterpriseId(enterpriseId);
pageQDTO.setStoreId(auditMaterialQO.getStoreId());
pageQDTO.setClerkId(auditMaterialQO.getClerkId());
pageQDTO.setQueryScene(MaterialSearchSceneEnum.HAOBAN_AUDIT.value);
Integer convsFlag = auditMaterialQO.getConvsFlag();
// 分页数据总数(无转化查询取素材分页数据,有转化查询取数据组返回的分页数据)
Integer totalCount = null;
//素材对应转化数据map
Map<Long, ContentMaterialConvsVO> map = null;
//转化数据过滤的素材id列表
List<Long> filterMaterialIdList = null;
boolean convs = convsFlag != null && convsFlag == Constant.FLAG_TRUE;
//是否有转化查询
if (convs) {
ServiceResponse<List<Long>> listIdResponse = contentMaterialApiService.listMaterialIdBySearch(pageQDTO);
if (!listIdResponse.isSuccess() || CollectionUtils.isEmpty(listIdResponse.getResult())) {
return RestResponse.successResult(new Page<>());
}
List<Long> materialIdList = listIdResponse.getResult();
Page<ContentMaterialConvsVO> dataPage = materialDataAdaptor.queryCreativeConvs(enterpriseId, materialIdList, auditMaterialQO.getBasePageInfo());
if (dataPage == null || CollectionUtils.isEmpty(dataPage.getResult())) {
return RestResponse.successResult(new Page<>());
}
List<ContentMaterialConvsVO> result = dataPage.getResult();
map = result.stream().collect(Collectors.toMap(ContentMaterialConvsVO::getContentMaterialId, t -> t));
filterMaterialIdList = result.stream().map(ContentMaterialConvsVO::getContentMaterialId).collect(Collectors.toList());
totalCount = dataPage.getTotalCount();
}
pageQDTO.setContentMaterialIdList(filterMaterialIdList);
ServiceResponse<Page<ContentMaterialDTO>> response = contentMaterialApiService.pageMaterial(pageQDTO, auditMaterialQO.getBasePageInfo());
if (!response.isSuccess() || CollectionUtils.isEmpty(response.getResult().getResult())) {
return RestResponse.successResult(new Page<>());
}
Page<ContentMaterialDTO> page = response.getResult();
Page<ContentMaterialVO> result = new Page<>();
List<ContentMaterialVO> list = EntityUtil.changeEntityListByJSON(ContentMaterialVO.class, response.getResult().getResult());
if (totalCount == null) {
totalCount = page.getTotalCount();
}
result.setTotalCount(totalCount);
result.setResult(list);
result.setCurrentPage(page.getCurrentPage());
result.setPageSize(page.getPageSize());
if (!convs) {
List<Long> materialIdList = list.stream().map(ContentMaterialVO::getContentMaterialId).collect(Collectors.toList());
BasePageInfo pageInfo = new BasePageInfo();
pageInfo.setPageNum(1);
pageInfo.setPageSize(materialIdList.size());
map = materialDataAdaptor.queryCreativeConvsMap(enterpriseId, materialIdList, pageInfo);
}
//列表转化数据
if (CollectionUtils.isNotEmpty(list)) {
for (ContentMaterialVO materialVO : list) {
Long contentMaterialId = materialVO.getContentMaterialId();
ContentMaterialConvsVO materialConvsVO = map.get(contentMaterialId);
materialVO.setConvs(materialConvsVO);
}
}
return RestResponse.successResult(result);
}
/**
* 数据概览
* @param auditMaterialQO qo
* @return
*/
@ResponseBody
@RequestMapping("/material-data")
public RestResponse<ContentMaterialDataVO> auditMaterialData(@RequestBody ContentAuditMaterialDataQO auditMaterialQO) {
ContentMaterialPageQDTO pageQDTO = new ContentMaterialPageQDTO();
String enterpriseId = auditMaterialQO.getEnterpriseId();
Integer createFlag = auditMaterialQO.getCreateFlag();
pageQDTO.setEnterpriseId(enterpriseId);
pageQDTO.setStoreId(auditMaterialQO.getStoreId());
pageQDTO.setClerkId(auditMaterialQO.getClerkId());
pageQDTO.setQueryScene(MaterialSearchSceneEnum.HAOBAN_AUDIT.value);
ServiceResponse<Long> response = contentMaterialApiService.countMaterialBySearch(pageQDTO);
pageQDTO.setAuditStatus(MaterialAuditEnum.AUDIT.code);
ServiceResponse<Long> auditResponse = contentMaterialApiService.countMaterialBySearch(pageQDTO);
if (!response.isSuccess() || !auditResponse.isSuccess()) {
return RestResponse.failure("-1", "请求失败");
}
ContentMaterialDataVO materialDataVO = new ContentMaterialDataVO();
materialDataVO.setAuditCount(auditResponse.getResult());
materialDataVO.setCreateCount(response.getResult());
if (createFlag == null || createFlag == Constant.FLAG_FALSE) {
pageQDTO.setAuditStatus(MaterialAuditEnum.SUCCESS.code);
//转化数据
ServiceResponse<List<Long>> idListResponse = contentMaterialApiService.listMaterialIdBySearch(pageQDTO);
if (!idListResponse.isSuccess()) {
return RestResponse.failure("-1", "请求失败");
}
ContentMaterialConvsVO materialConvsVO = materialDataAdaptor.queryCreativeConvsOverview(enterpriseId, idListResponse.getResult());
materialDataVO.setConvs(materialConvsVO);
}
return RestResponse.successResult(materialDataVO);
}
}
package com.gic.haoban.manage.web.controller.content;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.AccountService;
import com.gic.enterprise.api.service.EnterpriseService;
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.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
/**
* 好办-通用
*/
@Controller
@RequestMapping("/content")
public class ContentImageController {
private static Logger logger = LogManager.getLogger(ContentImageController.class);
@Autowired
private AccountService accountService;
@Autowired
private EnterpriseService enterpriseService;
/**
* 获取桶名称
* @param fileType 文件后缀 mp4
* @return
*/
@RequestMapping("get-bucket")
@ResponseBody
public RestResponse<CloudFileInfo> getBucket(String fileType,String enterpriseId) {
//存储空间余额校验
if (!accountService.storageFeeCheck(enterpriseId)){
return RestResponse.failure("-1", "存储余额不足,暂不支持图片/视频上传,请充值");
}
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(enterpriseId);
CloudFileInfo cloudFileInfo = CloudFileUtil.getPreUploadFileInfo(fileType, CloudFileTypeEnum.VIDEO, enterpriseDTO.getFactoryCode(), CloudFileBusinessOptEnum.MATERIAL_CONTENT);
if (cloudFileInfo == null){
return RestResponse.failure("-1", "获取桶名称失败");
}
return RestResponse.successResult(cloudFileInfo);
}
/**
* 图片上传
*
* @param request
* @param videoPicFileId 上传视频首针图片时使用
* @param fileFlag = 1-普通图片 2-视频截取首针图片(需要与视频建立关联关系)
* @param bucketName 存储桶名称
* @return
*/
@RequestMapping("upload-image")
@ResponseBody
public RestResponse<CloudFileInfo> uploadCloudImage(HttpServletRequest request,
String enterpriseId,
Integer fileFlag,
String videoPicFileId,
String bucketName) {
//存储空间余额校验
if (!accountService.storageFeeCheck(enterpriseId)){
return RestResponse.failure("-1", "存储余额不足,暂不支持图片/视频上传,请充值");
}
if (fileFlag == null){
fileFlag = 1;
}
if (fileFlag == 2 && StringUtils.isBlank(videoPicFileId) || fileFlag ==2 && StringUtils.isBlank(bucketName)){
return RestResponse.failure("-1", "必传参数不能为空");
}
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(enterpriseId);
try {
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
String fileName = multiRequest.getFileNames().next();
CommonsMultipartFile multiFile = (CommonsMultipartFile) multiRequest.getMultiFileMap().get(fileName).get(0);
long fileSize = multiFile.getSize();
Boolean compressFlag = false;
//大于10M压缩
if (fileSize / 1024 / 1024 > 10) {
compressFlag = true;
}
String originalFilename = multiFile.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf(".")+1).toLowerCase();
logger.info("文件名称 originalFilename = {}", originalFilename);
logger.info("文件类型 fileType = {}", fileType);
if (!"JPG".equals(fileType) && !"jpg".equals(fileType) && !"PNG".equals(fileType) && !"png".equals(fileType) && !"JPEG".equals(fileType) && !"jpeg".equals(fileType)
&& !"blob".equals(fileType)) {//blob为了解决 前端截取的视频首针是blob,兼容
return RestResponse.failure("-1", "图片格式错误");
}
String prefix = ".jpg";
if (!"blob".equals(fileType)){
prefix = originalFilename.substring(originalFilename.lastIndexOf("."));
}else {
fileType = "png";
}
File file = File.createTempFile(fileName, prefix);
multiFile.transferTo(file);
if (fileFlag == 1) {
CloudFileInfo cloudFileInfo = CloudFileUtil.uploadFileNoRelation(file, fileType, CloudFileTypeEnum.IMAGE, enterpriseDTO.getFactoryCode(), CloudFileBusinessOptEnum.MATERIAL_CONTENT,compressFlag);
return RestResponse.successResult(cloudFileInfo);
}else if (fileFlag == 2){
// 若是前端截取的视频首针图片,则调用新接口
CloudFileUtil.uploadPreFileByFieldKey(file, bucketName, videoPicFileId);
}
return RestResponse.successResult();
} catch (Exception e) {
logger.warn("图片上传异常", e);
return RestResponse.failure("-1", "图片上传异常");
}
}
}
...@@ -6,21 +6,22 @@ import com.gic.api.base.commons.Page; ...@@ -6,21 +6,22 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.column.ContentColumnListDTO; import com.gic.content.api.dto.column.ContentColumnListDTO;
import com.gic.content.api.dto.material.ContentMaterialFrontDTO; import com.gic.content.api.dto.material.ContentMaterialDTO;
import com.gic.content.api.dto.material.ContentMaterialShareInfoDTO; import com.gic.content.api.dto.material.ContentMaterialShareInfoDTO;
import com.gic.content.api.enums.ColumnEnum; import com.gic.content.api.enums.ColumnEnum;
import com.gic.content.api.enums.MaterialSearchSceneEnum;
import com.gic.content.api.qdto.column.ContentColumnClerkQDTO; import com.gic.content.api.qdto.column.ContentColumnClerkQDTO;
import com.gic.content.api.qdto.material.ContentMaterialPageFrontQDTO; import com.gic.content.api.qdto.material.ContentMaterialPageQDTO;
import com.gic.content.api.qdto.material.ContentMaterialShareQDTO; import com.gic.content.api.qdto.material.ContentMaterialShareQDTO;
import com.gic.content.api.service.ContentColumnApiService; import com.gic.content.api.service.ContentColumnApiService;
import com.gic.content.api.service.ContentMaterialApiService; import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.content.api.service.ContentMaterialShareApiService; import com.gic.content.api.service.ContentMaterialShareApiService;
import com.gic.haoban.common.utils.EntityUtil; import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.web.controller.commission.CommissionManager; import com.gic.haoban.manage.web.controller.commission.CommissionManager;
import com.gic.haoban.manage.web.controller.content.adaptor.ClerkStoreAdaptor; import com.gic.haoban.manage.web.controller.content.adaptor.ClerkStoreAdaptor;
import com.gic.haoban.manage.web.controller.goods.GoodsInfoAdaptor; import com.gic.haoban.manage.web.controller.goods.GoodsInfoAdaptor;
import com.gic.haoban.manage.web.qo.content.ContentColumnClerkViewQO; import com.gic.haoban.manage.web.qo.content.ContentColumnClerkViewQO;
import com.gic.haoban.manage.web.qo.content.ContentMaterialListQO;
import com.gic.haoban.manage.web.qo.content.ContentMaterialQO; import com.gic.haoban.manage.web.qo.content.ContentMaterialQO;
import com.gic.haoban.manage.web.qo.content.ContentMaterialShareQO; import com.gic.haoban.manage.web.qo.content.ContentMaterialShareQO;
import com.gic.haoban.manage.web.vo.content.ContentColumnInfoVO; import com.gic.haoban.manage.web.vo.content.ContentColumnInfoVO;
...@@ -35,14 +36,11 @@ import org.springframework.beans.BeanUtils; ...@@ -35,14 +36,11 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -105,44 +103,45 @@ public class ContentMaterialController { ...@@ -105,44 +103,45 @@ public class ContentMaterialController {
return RestResponse.failure("-777", "参数异常"); return RestResponse.failure("-777", "参数异常");
} }
List<Integer> goodsShowStatus = goodsInfoAdaptor.getGoodsShowStatus(contentMaterialQO.getEnterpriseId()); List<Integer> goodsShowStatus = goodsInfoAdaptor.getGoodsShowStatus(contentMaterialQO.getEnterpriseId());
ContentMaterialPageFrontQDTO contentMaterialPageFrontQDTO = new ContentMaterialPageFrontQDTO(); ContentMaterialPageQDTO pageQDTO = new ContentMaterialPageQDTO();
contentMaterialPageFrontQDTO.setEnterpriseId(contentMaterialQO.getEnterpriseId()); pageQDTO.setQueryScene(MaterialSearchSceneEnum.HAOBAN_MARKETING.value);
contentMaterialPageFrontQDTO.setKeyWord(contentMaterialQO.getSearch()); pageQDTO.setEnterpriseId(contentMaterialQO.getEnterpriseId());
contentMaterialPageFrontQDTO.setContentColumnId(contentMaterialQO.getContentColumnId()); pageQDTO.setSearch(contentMaterialQO.getSearch());
contentMaterialPageFrontQDTO.setMaterialType(contentMaterialQO.getMaterialType()); pageQDTO.setContentColumnId(contentMaterialQO.getContentColumnId());
pageQDTO.setMaterialType(contentMaterialQO.getMaterialType());
if (contentMaterialQO.getSortType() != null) { if (contentMaterialQO.getSortType() != null) {
if (contentMaterialQO.getSortType() == 2) { if (contentMaterialQO.getSortType() == 2) {
contentMaterialPageFrontQDTO.setHotFlag(1); pageQDTO.setHotFlag(1);
} }
} }
if (StringUtils.isBlank(contentMaterialQO.getStoreId())) { if (StringUtils.isBlank(contentMaterialQO.getStoreId())) {
// 区经 获取管辖的权限 // 区经 获取管辖的权限
List<String> storeIds = this.clerkStoreAdaptor.queryClerkStoreIds(contentMaterialQO.getClerkId(), contentMaterialQO.getWxEnterpriseId()); List<String> storeIds = this.clerkStoreAdaptor.queryClerkStoreIds(contentMaterialQO.getClerkId(), contentMaterialQO.getWxEnterpriseId());
contentMaterialPageFrontQDTO.setStoreIdList(storeIds); pageQDTO.setStoreIdList(storeIds);
} else { } else {
contentMaterialPageFrontQDTO.setStoreIdList(Collections.singletonList(contentMaterialQO.getStoreId())); pageQDTO.setStoreIdList(Collections.singletonList(contentMaterialQO.getStoreId()));
} }
if (contentMaterialQO.getSearchType() != null && contentMaterialQO.getSearchType().equals(1)) { if (contentMaterialQO.getSearchType() != null && contentMaterialQO.getSearchType().equals(1)) {
if (StringUtils.isNotBlank(contentMaterialQO.getSearch())) { if (StringUtils.isNotBlank(contentMaterialQO.getSearch())) {
// 搜索条件需要置为空 // 搜索条件需要置为空
contentMaterialPageFrontQDTO.setKeyWord(null); pageQDTO.setSearch(null);
List<String> goodsIds = goodsInfoAdaptor.queryGoodsIdWithSearch(contentMaterialQO.getEnterpriseId(), contentMaterialQO.getSearch()); List<String> goodsIds = goodsInfoAdaptor.queryGoodsIdWithSearch(contentMaterialQO.getEnterpriseId(), contentMaterialQO.getSearch());
if (CollectionUtils.isEmpty(goodsIds)) { if (CollectionUtils.isEmpty(goodsIds)) {
log.info("搜索商品不存在 {}", contentMaterialQO.getSearch()); log.info("搜索商品不存在 {}", contentMaterialQO.getSearch());
return RestResponse.successResult(new Page<>()); return RestResponse.successResult(new Page<>());
} }
contentMaterialPageFrontQDTO.setGoodsIdList(goodsIds); pageQDTO.setGoodsIdList(goodsIds);
} }
} }
BasePageInfo pageInfo = new BasePageInfo(); BasePageInfo pageInfo = new BasePageInfo();
pageInfo.setPageNum(contentMaterialQO.getPageNum()); pageInfo.setPageNum(contentMaterialQO.getPageNum());
pageInfo.setPageSize(contentMaterialQO.getPageSize()); pageInfo.setPageSize(contentMaterialQO.getPageSize());
ServiceResponse<Page<ContentMaterialFrontDTO>> serviceResponse = contentMaterialApiService.pageMaterialFront(contentMaterialPageFrontQDTO, pageInfo); ServiceResponse<Page<ContentMaterialDTO>> serviceResponse = contentMaterialApiService.pageMaterial(pageQDTO, pageInfo);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) { if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
return RestResponse.successResult(new Page<>()); return RestResponse.successResult(new Page<>());
} }
Page<ContentMaterialFrontDTO> responseResult = serviceResponse.getResult(); Page<ContentMaterialDTO> responseResult = serviceResponse.getResult();
Page<ContentMaterialInfoVO> result = new Page<>(); Page<ContentMaterialInfoVO> result = new Page<>();
result.setTotalCount(responseResult.getTotalCount()); result.setTotalCount(responseResult.getTotalCount());
List<String> goodsIds = responseResult.getResult() List<String> goodsIds = responseResult.getResult()
...@@ -168,7 +167,7 @@ public class ContentMaterialController { ...@@ -168,7 +167,7 @@ public class ContentMaterialController {
* @param item * @param item
* @return * @return
*/ */
private ContentMaterialInfoVO getContentMaterialInfoVO(List<Integer> goodsShowStatus, ContentMaterialFrontDTO item, Map<String, BigDecimal> commissionMap) { private ContentMaterialInfoVO getContentMaterialInfoVO(List<Integer> goodsShowStatus, ContentMaterialDTO item, Map<String, BigDecimal> commissionMap) {
ContentMaterialInfoVO contentMaterialInfoVO = new ContentMaterialInfoVO(); ContentMaterialInfoVO contentMaterialInfoVO = new ContentMaterialInfoVO();
BeanUtils.copyProperties(item, contentMaterialInfoVO); BeanUtils.copyProperties(item, contentMaterialInfoVO);
if (CollectionUtils.isNotEmpty(item.getContentGoodsList())) { if (CollectionUtils.isNotEmpty(item.getContentGoodsList())) {
...@@ -247,4 +246,19 @@ public class ContentMaterialController { ...@@ -247,4 +246,19 @@ public class ContentMaterialController {
return RestResponse.successResult(); return RestResponse.successResult();
} }
/**
* 素材数量查询
* @param search search
* @return
*/
@ResponseBody
@RequestMapping("/count-material")
public RestResponse<Long> countMaterial(@RequestBody ContentMaterialListQO search) {
ContentMaterialPageQDTO pageQDTO = EntityUtil.changeEntityByOrika(ContentMaterialPageQDTO.class, search);
ServiceResponse<Long> response = contentMaterialApiService.countMaterialBySearch(pageQDTO);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
return RestResponse.successResult(response.getResult());
}
} }
...@@ -9,6 +9,7 @@ import com.gic.content.api.dto.material.ContentMaterialBaseDTO; ...@@ -9,6 +9,7 @@ import com.gic.content.api.dto.material.ContentMaterialBaseDTO;
import com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO; import com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO; import com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO; import com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.service.content.InteractRecordApiService; import com.gic.haoban.manage.api.service.content.InteractRecordApiService;
import com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor; import com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor;
import com.gic.haoban.manage.web.qo.content.InteractRecordQO; import com.gic.haoban.manage.web.qo.content.InteractRecordQO;
...@@ -59,6 +60,7 @@ public class InteractRecordController { ...@@ -59,6 +60,7 @@ public class InteractRecordController {
List<Long> materialIds = serviceResponse.getResult() List<Long> materialIds = serviceResponse.getResult()
.getResult() .getResult()
.stream() .stream()
.filter(item -> ShareBizType.MATERIAL.getCode().equals(item.getBizType()))
.map(item -> Long.parseLong(item.getBizId())) .map(item -> Long.parseLong(item.getBizId()))
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
...@@ -74,17 +76,19 @@ public class InteractRecordController { ...@@ -74,17 +76,19 @@ public class InteractRecordController {
InteractRecordExtendInfoVO extendInfoVO = EntityUtil.changeEntityByJSON(InteractRecordExtendInfoVO.class, item.getExtendInfo()); InteractRecordExtendInfoVO extendInfoVO = EntityUtil.changeEntityByJSON(InteractRecordExtendInfoVO.class, item.getExtendInfo());
interactRecordVO.setExtendInfo(extendInfoVO); interactRecordVO.setExtendInfo(extendInfoVO);
} }
ContentMaterialBaseDTO materialBaseInfo = materialBaseMap.get(Long.parseLong(item.getBizId())); if (ShareBizType.MATERIAL.getCode().equals(item.getBizType())) {
if (materialBaseInfo != null) { ContentMaterialBaseDTO materialBaseInfo = materialBaseMap.get(Long.parseLong(item.getBizId()));
ContentMaterialInfoVO temp = new ContentMaterialInfoVO(); if (materialBaseInfo != null) {
BeanUtils.copyProperties(materialBaseInfo, temp); ContentMaterialInfoVO temp = new ContentMaterialInfoVO();
if (StringUtils.isNotBlank(materialBaseInfo.getMaterialThumbnailImageUrls())) { BeanUtils.copyProperties(materialBaseInfo, temp);
temp.setMaterialThumbnailImageUrls(StrSpliter.split(materialBaseInfo.getMaterialThumbnailImageUrls(), ",", true, true)); if (StringUtils.isNotBlank(materialBaseInfo.getMaterialThumbnailImageUrls())) {
temp.setMaterialThumbnailImageUrls(StrSpliter.split(materialBaseInfo.getMaterialThumbnailImageUrls(), ",", true, true));
}
if (StringUtils.isNotBlank(materialBaseInfo.getMaterialImageUrls())) {
temp.setMaterialImageUrls(StrSpliter.split(materialBaseInfo.getMaterialImageUrls(), ",", true, true));
}
interactRecordVO.setContentMaterialInfoVO(temp);
} }
if (StringUtils.isNotBlank(materialBaseInfo.getMaterialImageUrls())) {
temp.setMaterialImageUrls(StrSpliter.split(materialBaseInfo.getMaterialImageUrls(), ",", true, true));
}
interactRecordVO.setContentMaterialInfoVO(temp);
} }
return interactRecordVO; return interactRecordVO;
}) })
......
...@@ -8,8 +8,11 @@ import com.gic.api.base.commons.ServiceResponse; ...@@ -8,8 +8,11 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.ClerkDTO; import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService; import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.material.ContentMaterialDTO;
import com.gic.content.api.dto.material.ContentMaterialFrontDTO; import com.gic.content.api.dto.material.ContentMaterialFrontDTO;
import com.gic.content.api.enums.MaterialSearchSceneEnum;
import com.gic.content.api.qdto.material.ContentMaterialPageFrontQDTO; import com.gic.content.api.qdto.material.ContentMaterialPageFrontQDTO;
import com.gic.content.api.qdto.material.ContentMaterialPageQDTO;
import com.gic.content.api.service.ContentMaterialApiService; import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.enterprise.api.dto.StoreDTO; import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
...@@ -71,7 +74,8 @@ public class MaterialDataStaticsController { ...@@ -71,7 +74,8 @@ public class MaterialDataStaticsController {
@RequestMapping(path = "/content/material/index/data") @RequestMapping(path = "/content/material/index/data")
public RestResponse<MaterialIndexDataVO> queryMaterialIndexData(@RequestBody ContentMaterialBaseQO contentMaterialBaseQO) { public RestResponse<MaterialIndexDataVO> queryMaterialIndexData(@RequestBody ContentMaterialBaseQO contentMaterialBaseQO) {
ContentMaterialPageFrontQDTO search = new ContentMaterialPageFrontQDTO(); ContentMaterialPageQDTO search = new ContentMaterialPageQDTO();
search.setQueryScene(MaterialSearchSceneEnum.HAOBAN_MARKETING.value);
search.setEnterpriseId(contentMaterialBaseQO.getEnterpriseId()); search.setEnterpriseId(contentMaterialBaseQO.getEnterpriseId());
search.setPublishBeginStartTime(DateUtil.beginOfDay(new Date())); search.setPublishBeginStartTime(DateUtil.beginOfDay(new Date()));
search.setPublishBeginEndTime(DateUtil.endOfDay(new Date())); search.setPublishBeginEndTime(DateUtil.endOfDay(new Date()));
...@@ -88,7 +92,7 @@ public class MaterialDataStaticsController { ...@@ -88,7 +92,7 @@ public class MaterialDataStaticsController {
pageInfo.setPageNum(1); pageInfo.setPageNum(1);
pageInfo.setPageSize(1); pageInfo.setPageSize(1);
int totalMaterialNum = 0; int totalMaterialNum = 0;
ServiceResponse<Page<ContentMaterialFrontDTO>> serviceResponse = this.contentMaterialApiService.pageMaterialFront(search, pageInfo); ServiceResponse<Page<ContentMaterialDTO>> serviceResponse = this.contentMaterialApiService.pageMaterial(search, pageInfo);
if (serviceResponse.isSuccess() && serviceResponse.getResult() != null) { if (serviceResponse.isSuccess() && serviceResponse.getResult() != null) {
totalMaterialNum = serviceResponse.getResult().getTotalCount(); totalMaterialNum = serviceResponse.getResult().getTotalCount();
} }
......
...@@ -12,10 +12,14 @@ import com.gic.haoban.manage.api.enums.content.ShareBizType; ...@@ -12,10 +12,14 @@ import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.service.content.PotentialCustomerApiService; import com.gic.haoban.manage.api.service.content.PotentialCustomerApiService;
import com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor; import com.gic.haoban.manage.web.controller.content.adaptor.ContentMaterialAdaptor;
import com.gic.haoban.manage.web.controller.content.adaptor.MaterialDataAdaptor; import com.gic.haoban.manage.web.controller.content.adaptor.MaterialDataAdaptor;
import com.gic.haoban.manage.web.controller.goods.GoodsInfoAdaptor;
import com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerMarkRecordVO; import com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerMarkRecordVO;
import com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerQO; import com.gic.haoban.manage.web.qo.content.potential.PotentialCustomerQO;
import com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO; import com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO;
import com.gic.haoban.manage.web.vo.content.SimpleGoodsInfoVO;
import com.gic.haoban.manage.web.vo.content.potential.PotentialCustomerVO; import com.gic.haoban.manage.web.vo.content.potential.PotentialCustomerVO;
import com.gic.store.goods.dto.goods.GoodsInfoSimpleDTO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -45,6 +49,8 @@ public class PotentialCustomerController { ...@@ -45,6 +49,8 @@ public class PotentialCustomerController {
ContentMaterialAdaptor contentMaterialAdaptor; ContentMaterialAdaptor contentMaterialAdaptor;
@Autowired @Autowired
MaterialDataAdaptor materialDataAdaptor; MaterialDataAdaptor materialDataAdaptor;
@Autowired
private GoodsInfoAdaptor goodsInfoAdaptor;
/** /**
...@@ -69,6 +75,18 @@ public class PotentialCustomerController { ...@@ -69,6 +75,18 @@ public class PotentialCustomerController {
return RestResponse.successResult(); return RestResponse.successResult();
} }
List<PotentialCustomerDTO> customerDTOS = serviceResponse.getResult().getResult(); List<PotentialCustomerDTO> customerDTOS = serviceResponse.getResult().getResult();
List<PotentialCustomerVO> customerVOS = this.buildContentInfo(potentialCustomerQO, customerDTOS);
this.buildGoodsInfo(searchQDTO.getEnterpriseId(), customerVOS);
Page<PotentialCustomerVO> result = new Page<>();
result.setTotalCount(serviceResponse.getResult().getTotalCount());
result.setResult(customerVOS);
result.setCurrentPage(potentialCustomerQO.getPageNum());
result.setPageSize(potentialCustomerQO.getPageSize());
return RestResponse.successResult(result);
}
private List<PotentialCustomerVO> buildContentInfo(PotentialCustomerQO potentialCustomerQO, List<PotentialCustomerDTO> customerDTOS) {
// 素材信息
List<Long> materialIds = customerDTOS List<Long> materialIds = customerDTOS
.stream() .stream()
.filter(item -> ShareBizType.MATERIAL.getCode().equals(item.getBizType())) .filter(item -> ShareBizType.MATERIAL.getCode().equals(item.getBizType()))
...@@ -76,6 +94,7 @@ public class PotentialCustomerController { ...@@ -76,6 +94,7 @@ public class PotentialCustomerController {
.collect(Collectors.toList()); .collect(Collectors.toList());
Map<Long, ContentMaterialBaseDTO> materialInfoMap = contentMaterialAdaptor.queryMaterialInfoMap(potentialCustomerQO.getEnterpriseId(), materialIds); Map<Long, ContentMaterialBaseDTO> materialInfoMap = contentMaterialAdaptor.queryMaterialInfoMap(potentialCustomerQO.getEnterpriseId(), materialIds);
// 会员最近30天访问
List<String> memberIds = customerDTOS List<String> memberIds = customerDTOS
.stream() .stream()
.filter(item -> ShareBizType.MATERIAL.getCode().equals(item.getBizType())) .filter(item -> ShareBizType.MATERIAL.getCode().equals(item.getBizType()))
...@@ -89,33 +108,63 @@ public class PotentialCustomerController { ...@@ -89,33 +108,63 @@ public class PotentialCustomerController {
PotentialCustomerVO temp = new PotentialCustomerVO(); PotentialCustomerVO temp = new PotentialCustomerVO();
BeanUtils.copyProperties(item, temp); BeanUtils.copyProperties(item, temp);
temp.setPotentialCustomerId(item.getPotentialCustomerId()); temp.setPotentialCustomerId(item.getPotentialCustomerId());
ContentMaterialBaseDTO contentMaterialBaseDTO = materialInfoMap.get(Long.parseLong(item.getBizId())); if (ShareBizType.MATERIAL.getCode().equals(item.getBizType())) {
if (contentMaterialBaseDTO != null) { ContentMaterialBaseDTO contentMaterialBaseDTO = materialInfoMap.get(Long.parseLong(item.getBizId()));
ContentMaterialInfoVO contentMaterialInfoVO = new ContentMaterialInfoVO(); if (contentMaterialBaseDTO != null) {
BeanUtils.copyProperties(contentMaterialBaseDTO, contentMaterialInfoVO); ContentMaterialInfoVO contentMaterialInfoVO = new ContentMaterialInfoVO();
if (StringUtils.isNotBlank(contentMaterialBaseDTO.getMaterialImageUrls())) { BeanUtils.copyProperties(contentMaterialBaseDTO, contentMaterialInfoVO);
String[] split = StringUtils.split(contentMaterialBaseDTO.getMaterialImageUrls(), ","); if (StringUtils.isNotBlank(contentMaterialBaseDTO.getMaterialImageUrls())) {
List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList()); String[] split = StringUtils.split(contentMaterialBaseDTO.getMaterialImageUrls(), ",");
contentMaterialInfoVO.setMaterialImageUrls(imageUrls); List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList());
contentMaterialInfoVO.setMaterialImageUrls(imageUrls);
}
if (StringUtils.isNotBlank(contentMaterialBaseDTO.getMaterialThumbnailImageUrls())) {
String[] split = StringUtils.split(contentMaterialBaseDTO.getMaterialThumbnailImageUrls(), ",");
List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList());
contentMaterialInfoVO.setMaterialThumbnailImageUrls(imageUrls);
}
temp.setContentMaterialInfoVO(contentMaterialInfoVO);
} }
if (StringUtils.isNotBlank(contentMaterialBaseDTO.getMaterialThumbnailImageUrls())) { Integer visitNum = memberVisitMap.get(item.getMemberId());
String[] split = StringUtils.split(contentMaterialBaseDTO.getMaterialThumbnailImageUrls(), ","); temp.setVisitNum(Optional.ofNullable(visitNum).orElse(0));
List<String> imageUrls = Arrays.stream(split).collect(Collectors.toList());
contentMaterialInfoVO.setMaterialThumbnailImageUrls(imageUrls);
}
temp.setContentMaterialInfoVO(contentMaterialInfoVO);
} }
Integer visitNum = memberVisitMap.get(item.getMemberId());
temp.setVisitNum(Optional.ofNullable(visitNum).orElse(0));
return temp; return temp;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
Page<PotentialCustomerVO> result = new Page<>(); return customerVOS;
result.setTotalCount(serviceResponse.getResult().getTotalCount()); }
result.setResult(customerVOS);
result.setCurrentPage(potentialCustomerQO.getPageNum()); private void buildGoodsInfo(String enterpriseId, List<PotentialCustomerVO> customerVos) {
result.setPageSize(potentialCustomerQO.getPageSize()); if (CollectionUtils.isEmpty(customerVos)) {
return RestResponse.successResult(result); return;
}
List<String> goodsIds = customerVos
.stream()
.filter(item -> ShareBizType.GOODS.getCode().equals(item.getBizType()))
.map(PotentialCustomerVO::getBizId)
.distinct()
.collect(Collectors.toList());
Map<String, GoodsInfoSimpleDTO> goodsInfoMap = goodsInfoAdaptor.queryGoodsInfo(enterpriseId, goodsIds);
Map<String, GoodsSpuInfoDTO> goodsSpuInfoMap = goodsInfoAdaptor.queryGoodsMinPrice(enterpriseId, goodsIds);
for (PotentialCustomerVO customerVo : customerVos) {
GoodsInfoSimpleDTO goodsInfoSimpleDTO = goodsInfoMap.get(customerVo.getBizId());
if (goodsInfoSimpleDTO == null) {
continue;
}
SimpleGoodsInfoVO simpleGoodsInfoVO = new SimpleGoodsInfoVO();
simpleGoodsInfoVO.setGoodsId(customerVo.getBizId());
simpleGoodsInfoVO.setGoodsCode(goodsInfoSimpleDTO.getGoodsCode());
simpleGoodsInfoVO.setGoodsName(goodsInfoSimpleDTO.getGoodsName());
simpleGoodsInfoVO.setSourceType(goodsInfoSimpleDTO.getSourceType());
simpleGoodsInfoVO.setGoodsImg(goodsInfoSimpleDTO.getGoodsImageUrl());
simpleGoodsInfoVO.setSalePrice(goodsInfoSimpleDTO.getSalePrice());
GoodsSpuInfoDTO goodsSpuInfoDTO = goodsSpuInfoMap.get(customerVo.getBizId());
if (goodsSpuInfoDTO != null && goodsSpuInfoDTO.getMinPrice() != null) {
simpleGoodsInfoVO.setSalePrice(goodsSpuInfoDTO.getMinPrice());
}
customerVo.setSimpleGoodsInfoVO(simpleGoodsInfoVO);
}
} }
......
package com.gic.haoban.manage.web.controller.content.adaptor; package com.gic.haoban.manage.web.controller.content.adaptor;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.role.StoreRoleDTO; import com.gic.haoban.manage.api.dto.role.StoreRoleDTO;
import com.gic.haoban.manage.api.service.StaffApiService; import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -23,6 +26,8 @@ public class ClerkStoreAdaptor { ...@@ -23,6 +26,8 @@ public class ClerkStoreAdaptor {
@Autowired @Autowired
private StaffApiService staffApiService; private StaffApiService staffApiService;
@Autowired
private StaffClerkRelationApiService staffClerkRelationApiService;
/** /**
* 查询区经角色下管辖的门店权限 * 查询区经角色下管辖的门店权限
...@@ -59,4 +64,13 @@ public class ClerkStoreAdaptor { ...@@ -59,4 +64,13 @@ public class ClerkStoreAdaptor {
return storeRole.getStoreCount(); return storeRole.getStoreCount();
} }
public StaffDTO queryStaff(String clerkId) {
StaffClerkRelationDTO clerkRelationDTO = staffClerkRelationApiService.getByClerkId(clerkId);
if (clerkRelationDTO != null) {
StaffDTO staffDTO = staffApiService.selectById(clerkRelationDTO.getStaffId());
return staffDTO;
}
return null;
}
} }
...@@ -35,6 +35,9 @@ public class ContentMaterialAdaptor { ...@@ -35,6 +35,9 @@ public class ContentMaterialAdaptor {
* @return * @return
*/ */
public Map<Long, ContentMaterialBaseDTO> queryMaterialInfoMap(String enterpriseId, List<Long> materialIds) { public Map<Long, ContentMaterialBaseDTO> queryMaterialInfoMap(String enterpriseId, List<Long> materialIds) {
if (CollectionUtils.isEmpty(materialIds)) {
return Collections.emptyMap();
}
ServiceResponse<List<ContentMaterialBaseDTO>> serviceResponse = contentMaterialApiService.listMaterialIdByMaterialIdList(enterpriseId, materialIds, null); ServiceResponse<List<ContentMaterialBaseDTO>> serviceResponse = contentMaterialApiService.listMaterialIdByMaterialIdList(enterpriseId, materialIds, null);
if (!serviceResponse.isSuccess()) { if (!serviceResponse.isSuccess()) {
return Collections.emptyMap(); return Collections.emptyMap();
......
...@@ -5,9 +5,9 @@ import cn.hutool.core.date.DateTime; ...@@ -5,9 +5,9 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.commons.util.DataApiUtils; import com.gic.commons.util.DataApiUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.EnterpriseDTO; import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService; import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.enums.content.MaterialReportType; import com.gic.haoban.manage.api.enums.content.MaterialReportType;
...@@ -15,7 +15,7 @@ import com.gic.haoban.manage.web.qo.content.statistics.MaterialAnalyzeDataQO; ...@@ -15,7 +15,7 @@ import com.gic.haoban.manage.web.qo.content.statistics.MaterialAnalyzeDataQO;
import com.gic.haoban.manage.web.qo.content.statistics.MaterialReportQO; 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.MaterialStoreAnalyzeDataQO;
import com.gic.haoban.manage.web.qo.content.statistics.MaterialStoreReportQO; import com.gic.haoban.manage.web.qo.content.statistics.MaterialStoreReportQO;
import com.gic.haoban.manage.web.utils.target.DataTargetHttpUtils; 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.MaterialAreaUsedDataVO;
import com.gic.haoban.manage.web.vo.content.statistics.MaterialClerkUsedDataVO; 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.MaterialDataOverviewVO;
...@@ -95,6 +95,17 @@ public class MaterialDataAdaptor { ...@@ -95,6 +95,17 @@ public class MaterialDataAdaptor {
*/ */
private static final String MEMBER_RECENTLY_30_DAY_VISIT = "data_matl_haoban_user_30day_stats_real"; private static final String MEMBER_RECENTLY_30_DAY_VISIT = "data_matl_haoban_user_30day_stats_real";
/**
* 创作中心素材审核转化数据
*/
private static final String MATERIAL_CREATIVE_CONVS_DATA = "data_cms_matl_examine_convs_list";
/**
* 创作中心转化数据汇总
*/
private static final String MATERIAL_CREATIVE_CONVS_TOTAL_DATA = "data_cms_matl_examine_convs_total";
@Autowired @Autowired
private EnterpriseService enterpriseService; private EnterpriseService enterpriseService;
...@@ -411,20 +422,103 @@ public class MaterialDataAdaptor { ...@@ -411,20 +422,103 @@ public class MaterialDataAdaptor {
*/ */
public Map<String, Integer> queryMemberVisitMap(String enterpriseId, String storeId, String clerkId, List<String> memberIds) { public Map<String, Integer> queryMemberVisitMap(String enterpriseId, String storeId, String clerkId, List<String> memberIds) {
try {
Map<String, Object> inlineParams = new HashMap<>();
if (StringUtils.isNotBlank(clerkId)) {
inlineParams.put("clerkId", clerkId);
}
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("customerId", StringUtils.join(memberIds, ","));
Map<String, Object> result = DataApiUtils.http(JSON.toJSONString(inlineParams), MEMBER_RECENTLY_30_DAY_VISIT);
List<MemberVisitMaterialBO> memberVisitMaterialBos = DataApiUtils.parseDataList(result, MemberVisitMaterialBO.class);
if (CollectionUtils.isEmpty(memberVisitMaterialBos)) {
return Collections.emptyMap();
}
return memberVisitMaterialBos
.stream()
.collect(Collectors.toMap(MemberVisitMaterialBO::getCustomerId, item -> Optional.ofNullable(item.getMatlNum30Day())
.map(Integer::new).orElse(0), (v1, v2) -> v1));
}catch (Exception ex){
log.info("查询会员素材异常", ex);
}
return Collections.emptyMap();
}
/**
* 创作中心获取素材转化数
* @param enterpriseId 企业id
* @param materialIdList 素材id
* @param pageInfo 分页
* @return
*/
public Page<ContentMaterialConvsVO> queryCreativeConvs(String enterpriseId, List<Long> materialIdList, BasePageInfo pageInfo) {
Map<String, Object> inlineParams = new HashMap<>(); Map<String, Object> inlineParams = new HashMap<>();
if (StringUtils.isNotBlank(clerkId)) { if (CollectionUtils.isEmpty(materialIdList)) {
inlineParams.put("clerkId", clerkId); return new Page();
}
inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("contentMaterialId", StringUtils.join(materialIdList, ","));
inlineParams.put("pageNum", pageInfo.getPageNum());
inlineParams.put("pageSize", pageInfo.getPageSize());
Map<String, Object> result = null;
try {
result = DataApiUtils.http(JSON.toJSONString(inlineParams), MATERIAL_CREATIVE_CONVS_DATA);
} catch (Exception e) {
log.error("创作中心获取素材转化数异常",e);
return new Page();
}
Page<ContentMaterialConvsVO> page = DataApiUtils.getPageData(result, ContentMaterialConvsVO.class);
return page;
}
/**
* 创作中心获取素材转化数组装成map
* @param enterpriseId 企业id
* @param materialIdList 素材id
* @param pageInfo 分页
* @return
*/
public Map<Long,ContentMaterialConvsVO> queryCreativeConvsMap(String enterpriseId, List<Long> materialIdList, BasePageInfo pageInfo) {
if (pageInfo == null) {
pageInfo = new BasePageInfo();
pageInfo.setPageNum(1);
pageInfo.setPageSize(1);
}
Page<ContentMaterialConvsVO> page = queryCreativeConvs(enterpriseId, materialIdList, pageInfo);
if (page != null && CollectionUtils.isNotEmpty(page.getResult())) {
List<ContentMaterialConvsVO> result = page.getResult();
Map<Long, ContentMaterialConvsVO> map = result.stream().collect(Collectors.toMap(ContentMaterialConvsVO::getContentMaterialId, t -> t));
return map;
}
return new HashMap<>();
}
/**
* 创作中心获取素材转化数总和(30天)
* @param enterpriseId 企业id
* @param materialIdList 素材id列表
* @return
*/
public ContentMaterialConvsVO queryCreativeConvsOverview(String enterpriseId, List<Long> materialIdList) {
Map<String, Object> inlineParams = new HashMap<>();
if (CollectionUtils.isEmpty(materialIdList)) {
return new ContentMaterialConvsVO();
} }
inlineParams.put("enterpriseId", enterpriseId); inlineParams.put("enterpriseId", enterpriseId);
inlineParams.put("customerId", StringUtils.join(memberIds, ",")); inlineParams.put("contentMaterialId", StringUtils.join(materialIdList, ","));
Map<String, Object> result = DataApiUtils.http(JSON.toJSONString(inlineParams), MEMBER_RECENTLY_30_DAY_VISIT); Map<String, Object> result = null;
List<MemberVisitMaterialBO> memberVisitMaterialBos = DataApiUtils.parseDataList(result, MemberVisitMaterialBO.class); try {
if (CollectionUtils.isEmpty(memberVisitMaterialBos)) { result = DataApiUtils.http(JSON.toJSONString(inlineParams), MATERIAL_CREATIVE_CONVS_TOTAL_DATA);
return Collections.emptyMap(); } catch (Exception e) {
log.error("创作中心获取素材转化数总和异常",e);
return new ContentMaterialConvsVO();
}
List<ContentMaterialConvsVO> list = DataApiUtils.parseDataList(result, ContentMaterialConvsVO.class);
if (CollectionUtils.isNotEmpty(list)) {
return list.get(0);
} }
return memberVisitMaterialBos return new ContentMaterialConvsVO();
.stream()
.collect(Collectors.toMap(MemberVisitMaterialBO::getCustomerId, item -> Optional.ofNullable(item.getMatlNum30Day())
.map(Integer::new).orElse(0), (v1, v2) -> v1));
} }
} }
...@@ -5,6 +5,7 @@ import com.gic.api.base.commons.Page; ...@@ -5,6 +5,7 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.app.aggregation.api.dto.GoodsSettingDTO; import com.gic.haoban.app.aggregation.api.dto.GoodsSettingDTO;
import com.gic.haoban.app.aggregation.api.service.SettingApiService; import com.gic.haoban.app.aggregation.api.service.SettingApiService;
import com.gic.store.goods.dto.goods.GoodsInfoSimpleDTO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO; import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO; import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.service.GoodsCenterApiService; import com.gic.store.goods.service.GoodsCenterApiService;
...@@ -125,4 +126,17 @@ public class GoodsInfoAdaptor { ...@@ -125,4 +126,17 @@ public class GoodsInfoAdaptor {
.stream() .stream()
.collect(Collectors.toMap(GoodsSpuInfoDTO::getGoodsId, Function.identity())); .collect(Collectors.toMap(GoodsSpuInfoDTO::getGoodsId, Function.identity()));
} }
public Map<String, GoodsInfoSimpleDTO> queryGoodsInfo(String enterpriseId, List<String> goodsIds) {
if (CollectionUtils.isEmpty(goodsIds)) {
return Collections.emptyMap();
}
ServiceResponse<List<GoodsInfoSimpleDTO>> serviceResponse = goodsInfoOutApiService.queryGoodsSimpleInfo(goodsIds);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult())) {
return Collections.emptyMap();
}
return serviceResponse.getResult()
.stream()
.collect(Collectors.toMap(GoodsInfoSimpleDTO::getGoodsId, Function.identity()));
}
} }
package com.gic.haoban.manage.web.qo.content;
public class ContentAuditMaterialDataQO {
/**
* 企业id
*/
private String enterpriseId;
/**
* 门店id
*/
private String storeId;
/**
* 导购id
*/
private String clerkId;
/**
* 是否仅查创建数
*/
private Integer createFlag;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getCreateFlag() {
return createFlag;
}
public void setCreateFlag(Integer createFlag) {
this.createFlag = createFlag;
}
}
package com.gic.haoban.manage.web.qo.content;
import com.gic.commons.web.qo.PageQo;
public class ContentAuditMaterialQO extends PageQo {
/**
* 企业id
*/
private String enterpriseId;
/**
* 门店id
*/
private String storeId;
/**
* 导购id
*/
private String clerkId;
/**
* 是否有转化 1是0否
*/
private Integer convsFlag;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getConvsFlag() {
return convsFlag;
}
public void setConvsFlag(Integer convsFlag) {
this.convsFlag = convsFlag;
}
}
package com.gic.haoban.manage.web.qo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gic.commons.web.qo.PageQo;
import com.gic.content.api.enums.MaterialSearchSceneEnum;
import java.util.List;
@JsonSerialize(using= ToStringSerializer.class)
public class ContentMaterialListQO extends PageQo {
/**
* 查询场景 1:gic后台营销素材 2:好办营销素材 3:gic后台社区素材 4:gic后台审核素材 5:好办审核素材 6:小程序社区素材
* @see MaterialSearchSceneEnum
*/
private Integer queryScene;
/**
* 栏目id
*/
private Long contentColumnId;
/**
* 搜索名称
*/
private String search;
/**
* 商品搜索
*/
private String goodsSearch;
/**
* 素材搜索
*/
private String materialSearch;
/**
* 素材类型1图文2纯文字3纯图片4视频
*/
private Integer materialType;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 会员id
*/
private String memberId;
/**
* 排序字段
* createTime:创建时间
* publishBeginTime:发布时间
* topTime:置顶时间
* @see com.gic.content.api.enums.MaterialOrderFieldEnum
*/
private String orderField;
/**
* 排序 desc降序 asc升序
*/
private String order;
/**
* 商品id
*/
private List<String> goodsIdList;
public Integer getQueryScene() {
return queryScene;
}
public void setQueryScene(Integer queryScene) {
this.queryScene = queryScene;
}
public Long getContentColumnId() {
return contentColumnId;
}
public void setContentColumnId(Long contentColumnId) {
this.contentColumnId = contentColumnId;
}
public String getSearch() {
return search;
}
public void setSearch(String search) {
this.search = search;
}
public String getGoodsSearch() {
return goodsSearch;
}
public void setGoodsSearch(String goodsSearch) {
this.goodsSearch = goodsSearch;
}
public String getMaterialSearch() {
return materialSearch;
}
public void setMaterialSearch(String materialSearch) {
this.materialSearch = materialSearch;
}
public Integer getMaterialType() {
return materialType;
}
public void setMaterialType(Integer materialType) {
this.materialType = materialType;
}
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 String getOrderField() {
return orderField;
}
public void setOrderField(String orderField) {
this.orderField = orderField;
}
public String getOrder() {
return order;
}
public void setOrder(String order) {
this.order = order;
}
public List<String> getGoodsIdList() {
return goodsIdList;
}
public void setGoodsIdList(List<String> goodsIdList) {
this.goodsIdList = goodsIdList;
}
}
package com.gic.haoban.manage.web.qo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;
@JsonSerialize(using= ToStringSerializer.class)
public class ContentMaterialSaveQO {
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 门店id
*/
private String storeId;
/**
* 导购id
*/
private String clerkId;
/**
* 素材名称
*/
private String materialTitle;
/**
* 素材类型1图文4视频
*/
@NotNull(message = "素材类型不能为空")
private Integer materialType;
/**
* 上架状态0未上架1已上架(默认1)
*/
private Integer shelfStatus = 1;
/**
* 素材内容
*/
private String materialContent;
/**
* 素材图片url列表
*/
private String materialImageUrls;
/**
* 素材压缩后的图片url列表
*/
private String materialThumbnailImageUrls;
/**
* 素材图片信息列表{width:px,height:px,size:Bytes}
*/
private String materialImageInfos;
/**
* 素材视频url
*/
private String materialVideoUrl;
/**
* 视频信息{width:px,height:px,size:Bytes}
*/
private String materialVideoInfo;
/**
* 素材视频封面url
*/
private String materialVideoImageUrl;
/**
* 视频封面信息{width:px,height:px,size:Bytes}
*/
private String materialVideoImageInfo;
/**
* 素材视频第一帧url
*/
private String materialVideoFirstImageUrl;
/**
* 视频第一帧信息{width:px,height:px,size:Bytes}
*/
private String materialVideoFirstImageInfo;
/**
* 视频时长
*/
private Integer duration;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 企微id
*/
private String wxEnterpriseId;
/**
* 关联商品id列表
*/
private List<String> contentGoodsIdList;
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getMaterialTitle() {
return materialTitle;
}
public void setMaterialTitle(String materialTitle) {
this.materialTitle = materialTitle;
}
public Integer getMaterialType() {
return materialType;
}
public void setMaterialType(Integer materialType) {
this.materialType = materialType;
}
public Integer getShelfStatus() {
return shelfStatus;
}
public void setShelfStatus(Integer shelfStatus) {
this.shelfStatus = shelfStatus;
}
public String getMaterialContent() {
return materialContent;
}
public void setMaterialContent(String materialContent) {
this.materialContent = materialContent;
}
public String getMaterialImageUrls() {
return materialImageUrls;
}
public void setMaterialImageUrls(String materialImageUrls) {
this.materialImageUrls = materialImageUrls;
}
public String getMaterialThumbnailImageUrls() {
return materialThumbnailImageUrls;
}
public void setMaterialThumbnailImageUrls(String materialThumbnailImageUrls) {
this.materialThumbnailImageUrls = materialThumbnailImageUrls;
}
public String getMaterialImageInfos() {
return materialImageInfos;
}
public void setMaterialImageInfos(String materialImageInfos) {
this.materialImageInfos = materialImageInfos;
}
public String getMaterialVideoUrl() {
return materialVideoUrl;
}
public void setMaterialVideoUrl(String materialVideoUrl) {
this.materialVideoUrl = materialVideoUrl;
}
public String getMaterialVideoInfo() {
return materialVideoInfo;
}
public void setMaterialVideoInfo(String materialVideoInfo) {
this.materialVideoInfo = materialVideoInfo;
}
public String getMaterialVideoImageUrl() {
return materialVideoImageUrl;
}
public void setMaterialVideoImageUrl(String materialVideoImageUrl) {
this.materialVideoImageUrl = materialVideoImageUrl;
}
public String getMaterialVideoImageInfo() {
return materialVideoImageInfo;
}
public void setMaterialVideoImageInfo(String materialVideoImageInfo) {
this.materialVideoImageInfo = materialVideoImageInfo;
}
public String getMaterialVideoFirstImageUrl() {
return materialVideoFirstImageUrl;
}
public void setMaterialVideoFirstImageUrl(String materialVideoFirstImageUrl) {
this.materialVideoFirstImageUrl = materialVideoFirstImageUrl;
}
public String getMaterialVideoFirstImageInfo() {
return materialVideoFirstImageInfo;
}
public void setMaterialVideoFirstImageInfo(String materialVideoFirstImageInfo) {
this.materialVideoFirstImageInfo = materialVideoFirstImageInfo;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public List<String> getContentGoodsIdList() {
return contentGoodsIdList;
}
public void setContentGoodsIdList(List<String> contentGoodsIdList) {
this.contentGoodsIdList = contentGoodsIdList;
}
}
...@@ -12,6 +12,11 @@ public class RightVO implements Serializable{ ...@@ -12,6 +12,11 @@ public class RightVO implements Serializable{
// 0未购买 1正常 2已过期 // 0未购买 1正常 2已过期
private int status ; private int status ;
/**
* 版本 1基础版2高级版
*/
private Integer moduleVersion;
public int getStatus() { public int getStatus() {
return status; return status;
} }
...@@ -19,4 +24,12 @@ public class RightVO implements Serializable{ ...@@ -19,4 +24,12 @@ public class RightVO implements Serializable{
public void setStatus(int status) { public void setStatus(int status) {
this.status = status; this.status = status;
} }
public Integer getModuleVersion() {
return moduleVersion;
}
public void setModuleVersion(Integer moduleVersion) {
this.moduleVersion = moduleVersion;
}
} }
...@@ -18,6 +18,8 @@ public class StoreClerkVO implements Serializable { ...@@ -18,6 +18,8 @@ public class StoreClerkVO implements Serializable {
private String clerkImg; private String clerkImg;
private String clerkName; private String clerkName;
private Integer memberCount;
public String getClerkName() { public String getClerkName() {
return clerkName; return clerkName;
} }
...@@ -60,7 +62,12 @@ public class StoreClerkVO implements Serializable { ...@@ -60,7 +62,12 @@ public class StoreClerkVO implements Serializable {
public void setBindFlag(int bindFlag) { public void setBindFlag(int bindFlag) {
this.bindFlag = bindFlag; this.bindFlag = bindFlag;
} }
public Integer getMemberCount() {
return memberCount;
}
public void setMemberCount(Integer memberCount) {
this.memberCount = memberCount;
}
} }
...@@ -53,21 +53,37 @@ public class ContentMaterialInfoVO implements Serializable { ...@@ -53,21 +53,37 @@ public class ContentMaterialInfoVO implements Serializable {
private List<String> materialThumbnailImageUrls; private List<String> materialThumbnailImageUrls;
/** /**
* 素材视频链接 * 素材图片信息列表{width:px,height:px,size:Bytes}
*/
private String materialImageInfos;
/**
* 素材视频url
*/ */
private String materialVideoUrl; private String materialVideoUrl;
/** /**
* 素材视频封面链接 * 视频信息{width:px,height:px,size:Bytes}
*/
private String materialVideoInfo;
/**
* 素材视频封面url
*/ */
private String materialVideoImageUrl; private String materialVideoImageUrl;
/** /**
* 视频封面信息{width:px,height:px,size:Bytes}
*/
private String materialVideoImageInfo;
/**
* 素材视频第一帧url * 素材视频第一帧url
*/ */
private String materialVideoFirstImageUrl; private String materialVideoFirstImageUrl;
/** /**
* 视频第一帧信息{width:px,height:px,size:Bytes}
*/
private String materialVideoFirstImageInfo;
/**
* 分享次数 * 分享次数
*/ */
private Long shareCount; private Long shareCount;
...@@ -241,4 +257,36 @@ public class ContentMaterialInfoVO implements Serializable { ...@@ -241,4 +257,36 @@ public class ContentMaterialInfoVO implements Serializable {
public void setSourceType(Integer sourceType) { public void setSourceType(Integer sourceType) {
this.sourceType = sourceType; this.sourceType = sourceType;
} }
public String getMaterialImageInfos() {
return materialImageInfos;
}
public void setMaterialImageInfos(String materialImageInfos) {
this.materialImageInfos = materialImageInfos;
}
public String getMaterialVideoInfo() {
return materialVideoInfo;
}
public void setMaterialVideoInfo(String materialVideoInfo) {
this.materialVideoInfo = materialVideoInfo;
}
public String getMaterialVideoImageInfo() {
return materialVideoImageInfo;
}
public void setMaterialVideoImageInfo(String materialVideoImageInfo) {
this.materialVideoImageInfo = materialVideoImageInfo;
}
public String getMaterialVideoFirstImageInfo() {
return materialVideoFirstImageInfo;
}
public void setMaterialVideoFirstImageInfo(String materialVideoFirstImageInfo) {
this.materialVideoFirstImageInfo = materialVideoFirstImageInfo;
}
} }
...@@ -19,12 +19,12 @@ public class InteractRecordExtendInfoVO implements Serializable { ...@@ -19,12 +19,12 @@ public class InteractRecordExtendInfoVO implements Serializable {
private static final long serialVersionUID = 799914036029100258L; private static final long serialVersionUID = 799914036029100258L;
/** /**
* 素材关联的商品信息商品信息 * 商品信息
*/ */
private List<ExtendGoodsInfo> extendGoodsInfos; private List<ExtendGoodsInfo> extendGoodsInfos;
/** /**
* 素材关联的订单信息 * 订单信息
*/ */
private List<ExtendOrderInfo> extendOrderInfos; private List<ExtendOrderInfo> extendOrderInfos;
......
package com.gic.haoban.manage.web.vo.content; package com.gic.haoban.manage.web.vo.content;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @Author MUSI * @Author MUSI
...@@ -49,12 +49,19 @@ public class InteractRecordVO implements Serializable { ...@@ -49,12 +49,19 @@ public class InteractRecordVO implements Serializable {
/** /**
* 记录事件类型 * 记录事件类型
* 1浏览素材;2 查看商品; 3 购买商品 * 1浏览素材;2 查看商品; 3 购买商品; 4 加入购物车
* 通过此类型区分 弹窗提示 * 通过此类型区分 弹窗提示
* @see MaterialInteractRecordEventType
*/ */
private Integer eventType; private Integer eventType;
/** /**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
/**
* 浏览的商品数量 * 浏览的商品数量
*/ */
private Integer visitGoodsNum; private Integer visitGoodsNum;
......
package com.gic.haoban.manage.web.vo.content.creative;
import java.io.Serializable;
import java.util.Date;
public class ContentAuditorVO implements Serializable {
/**
* 审核人id
*/
private String auditorId;
/**
* 审核人名称
*/
private String auditorName;
/**
* 审核时间
*/
private Date auditorTime;
/**
* 审核备注
*/
private String remark;
public String getAuditorId() {
return auditorId;
}
public void setAuditorId(String auditorId) {
this.auditorId = auditorId;
}
public String getAuditorName() {
return auditorName;
}
public void setAuditorName(String auditorName) {
this.auditorName = auditorName;
}
public Date getAuditorTime() {
return auditorTime;
}
public void setAuditorTime(Date auditorTime) {
this.auditorTime = auditorTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}
package com.gic.haoban.manage.web.vo.content.creative;
import java.math.BigDecimal;
/**
* 内容分类表(TabContentCategory)表实体类
*
* @author makejava
* @since 2022-10-27 17:20:20
*/
@SuppressWarnings("serial")
public class ContentGoodsVO {
/**
* 商品id
*/
private String goodsId;
/**
* 商品Code
*/
private String goodsCode;
/**
* 商品名称
*/
private String goodsName;
/**
* 商品主图
*/
private String goodsImageUrl;
/**
* spu库存
*/
private Integer spuStock;
/**
* 商品状态
* @see com.gic.store.goods.enums.GoodsStatusEnum
*/
private Integer status;
/**
* 是否已完善1是0否
*/
private Integer isComplete;
/**
* 吊牌价 / 划线价
*/
private BigDecimal tagPrice;
/**
* 最小sku价格/一口价
*/
private BigDecimal minPrice;
public String getGoodsId() {
return goodsId;
}
public void setGoodsId(String goodsId) {
this.goodsId = goodsId;
}
public String getGoodsCode() {
return goodsCode;
}
public void setGoodsCode(String goodsCode) {
this.goodsCode = goodsCode;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getGoodsImageUrl() {
return goodsImageUrl;
}
public void setGoodsImageUrl(String goodsImageUrl) {
this.goodsImageUrl = goodsImageUrl;
}
public Integer getSpuStock() {
return spuStock;
}
public void setSpuStock(Integer spuStock) {
this.spuStock = spuStock;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getIsComplete() {
return isComplete;
}
public void setIsComplete(Integer isComplete) {
this.isComplete = isComplete;
}
public BigDecimal getTagPrice() {
return tagPrice;
}
public void setTagPrice(BigDecimal tagPrice) {
this.tagPrice = tagPrice;
}
public BigDecimal getMinPrice() {
return minPrice;
}
public void setMinPrice(BigDecimal minPrice) {
this.minPrice = minPrice;
}
}
package com.gic.haoban.manage.web.vo.content.creative;
import java.io.Serializable;
public class ContentMaterialConvsVO implements Serializable {
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 转化人数
*/
private Integer convsNum = 0;
/**
* 转化金额
*/
private Double convsAmt = 0.0;
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public Integer getConvsNum() {
return convsNum;
}
public void setConvsNum(Integer convsNum) {
this.convsNum = convsNum;
}
public Double getConvsAmt() {
return convsAmt;
}
public void setConvsAmt(Double convsAmt) {
this.convsAmt = convsAmt;
}
public void setConvs(ContentMaterialConvsVO convs) {
if (convs == null) {
this.setConvsNum(0);
this.setConvsAmt(0.0);
return;
}
this.setConvsNum(convs.getConvsNum());
this.setConvsAmt(convs.getConvsAmt());
}
}
package com.gic.haoban.manage.web.vo.content.creative;
import java.io.Serializable;
import java.util.Date;
public class ContentMaterialDataVO extends ContentMaterialConvsVO implements Serializable {
/**
* 创建数
*/
private Long createCount;
/**
* 待审核数
*/
private Long auditCount;
public Long getCreateCount() {
return createCount;
}
public void setCreateCount(Long createCount) {
this.createCount = createCount;
}
public Long getAuditCount() {
return auditCount;
}
public void setAuditCount(Long auditCount) {
this.auditCount = auditCount;
}
}
package com.gic.haoban.manage.web.vo.content.creative;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.util.Date;
import java.util.List;
public class ContentMaterialVO extends ContentMaterialConvsVO{
/**
* 素材id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long contentMaterialId;
/**
* 素材用途0无(未审核)1营销2社区
*/
private Integer materialPurpose;
/**
* 素材名称
*/
private String materialTitle;
/**
* 素材类型1图文4视频
*/
private Integer materialType;
/**
* 1企业/品牌方2导购
*/
private Integer materialSource;
/**
* 上架状态0未上架1已上架
*/
private Integer shelfStatus;
/**
* 素材内容
*/
private String materialContent;
/**
* 素材图片url列表
*/
private String materialImageUrls;
/**
* 素材压缩后的图片url列表
*/
private String materialThumbnailImageUrls;
/**
* 素材图片信息列表{width:px,height:px,size:Bytes}
*/
private String materialImageInfos;
/**
* 素材视频url
*/
private String materialVideoUrl;
/**
* 视频信息{width:px,height:px,size:Bytes}
*/
private String materialVideoInfo;
/**
* 素材视频封面url
*/
private String materialVideoImageUrl;
/**
* 视频封面信息{width:px,height:px,size:Bytes}
*/
private String materialVideoImageInfo;
/**
* 素材视频第一帧url
*/
private String materialVideoFirstImageUrl;
/**
* 视频第一帧信息{width:px,height:px,size:Bytes}
*/
private String materialVideoFirstImageInfo;
/**
* 视频时长
*/
private Integer duration;
/**
* 企业id
*/
private String enterpriseId;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 关联商品列表
*/
private List<ContentGoodsVO> contentGoodsList;
/**
* 审核状态0待审核1未通过2已通过
*/
private Integer auditStatus;
/**
* 审核信息
*/
private ContentAuditorVO auditor;
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public Integer getMaterialPurpose() {
return materialPurpose;
}
public void setMaterialPurpose(Integer materialPurpose) {
this.materialPurpose = materialPurpose;
}
public String getMaterialTitle() {
return materialTitle;
}
public void setMaterialTitle(String materialTitle) {
this.materialTitle = materialTitle;
}
public Integer getMaterialType() {
return materialType;
}
public void setMaterialType(Integer materialType) {
this.materialType = materialType;
}
public Integer getMaterialSource() {
return materialSource;
}
public void setMaterialSource(Integer materialSource) {
this.materialSource = materialSource;
}
public Integer getShelfStatus() {
return shelfStatus;
}
public void setShelfStatus(Integer shelfStatus) {
this.shelfStatus = shelfStatus;
}
public String getMaterialContent() {
return materialContent;
}
public void setMaterialContent(String materialContent) {
this.materialContent = materialContent;
}
public String getMaterialImageUrls() {
return materialImageUrls;
}
public void setMaterialImageUrls(String materialImageUrls) {
this.materialImageUrls = materialImageUrls;
}
public String getMaterialThumbnailImageUrls() {
return materialThumbnailImageUrls;
}
public void setMaterialThumbnailImageUrls(String materialThumbnailImageUrls) {
this.materialThumbnailImageUrls = materialThumbnailImageUrls;
}
public String getMaterialImageInfos() {
return materialImageInfos;
}
public void setMaterialImageInfos(String materialImageInfos) {
this.materialImageInfos = materialImageInfos;
}
public String getMaterialVideoUrl() {
return materialVideoUrl;
}
public void setMaterialVideoUrl(String materialVideoUrl) {
this.materialVideoUrl = materialVideoUrl;
}
public String getMaterialVideoInfo() {
return materialVideoInfo;
}
public void setMaterialVideoInfo(String materialVideoInfo) {
this.materialVideoInfo = materialVideoInfo;
}
public String getMaterialVideoImageUrl() {
return materialVideoImageUrl;
}
public void setMaterialVideoImageUrl(String materialVideoImageUrl) {
this.materialVideoImageUrl = materialVideoImageUrl;
}
public String getMaterialVideoImageInfo() {
return materialVideoImageInfo;
}
public void setMaterialVideoImageInfo(String materialVideoImageInfo) {
this.materialVideoImageInfo = materialVideoImageInfo;
}
public String getMaterialVideoFirstImageUrl() {
return materialVideoFirstImageUrl;
}
public void setMaterialVideoFirstImageUrl(String materialVideoFirstImageUrl) {
this.materialVideoFirstImageUrl = materialVideoFirstImageUrl;
}
public String getMaterialVideoFirstImageInfo() {
return materialVideoFirstImageInfo;
}
public void setMaterialVideoFirstImageInfo(String materialVideoFirstImageInfo) {
this.materialVideoFirstImageInfo = materialVideoFirstImageInfo;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public List<ContentGoodsVO> getContentGoodsList() {
return contentGoodsList;
}
public void setContentGoodsList(List<ContentGoodsVO> contentGoodsList) {
this.contentGoodsList = contentGoodsList;
}
public Integer getAuditStatus() {
return auditStatus;
}
public void setAuditStatus(Integer auditStatus) {
this.auditStatus = auditStatus;
}
public ContentAuditorVO getAuditor() {
return auditor;
}
public void setAuditor(ContentAuditorVO auditor) {
this.auditor = auditor;
}
}
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.vo.content.potential; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.web.vo.content.potential;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO; import com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO;
import com.gic.haoban.manage.web.vo.content.SimpleGoodsInfoVO;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
...@@ -90,11 +91,16 @@ public class PotentialCustomerVO implements Serializable { ...@@ -90,11 +91,16 @@ public class PotentialCustomerVO implements Serializable {
private Integer dealRecord; private Integer dealRecord;
/** /**
* 素材信息 * 素材信息 bizType == 1 读取
*/ */
private ContentMaterialInfoVO contentMaterialInfoVO; private ContentMaterialInfoVO contentMaterialInfoVO;
/** /**
* 商品信息 bizType == 2 时
*/
private SimpleGoodsInfoVO simpleGoodsInfoVO;
/**
* 第几次访问 * 第几次访问
*/ */
private Integer times; private Integer times;
...@@ -103,4 +109,15 @@ public class PotentialCustomerVO implements Serializable { ...@@ -103,4 +109,15 @@ public class PotentialCustomerVO implements Serializable {
* 停留时长 单位秒 * 停留时长 单位秒
*/ */
private Integer durationTime; private Integer durationTime;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
/**
* 业务id
*/
private String bizId;
} }
...@@ -51,6 +51,17 @@ public class ContentMaterialLandingPageVO implements Serializable { ...@@ -51,6 +51,17 @@ public class ContentMaterialLandingPageVO implements Serializable {
*/ */
private Integer shoppingCartNum; private Integer shoppingCartNum;
/**
* 跳转穿搭社区开关
* 1 开启; 0关闭
*/
private Integer communityJumpFlag;
/**
* 同款搭配数量
*/
private Integer collocationNum;
public ContentMaterialInfoVO getContentMaterialInfo() { public ContentMaterialInfoVO getContentMaterialInfo() {
return contentMaterialInfo; return contentMaterialInfo;
...@@ -99,4 +110,20 @@ public class ContentMaterialLandingPageVO implements Serializable { ...@@ -99,4 +110,20 @@ public class ContentMaterialLandingPageVO implements Serializable {
public void setShoppingCartNum(Integer shoppingCartNum) { public void setShoppingCartNum(Integer shoppingCartNum) {
this.shoppingCartNum = shoppingCartNum; this.shoppingCartNum = shoppingCartNum;
} }
public Integer getCollocationNum() {
return collocationNum;
}
public void setCollocationNum(Integer collocationNum) {
this.collocationNum = collocationNum;
}
public Integer getCommunityJumpFlag() {
return communityJumpFlag;
}
public void setCommunityJumpFlag(Integer communityJumpFlag) {
this.communityJumpFlag = communityJumpFlag;
}
} }
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