Commit c414f462 by songyinghui

Merge branch 'feature-wm' into 'master'

Feature wm

See merge request !1587
parents f6f42577 2bed5fe3
......@@ -62,6 +62,13 @@ public class PotentialCustomerQDTO extends BasePageInfo {
*/
private Integer hasMemberPhone;
/**
* 1 按客户搜索
* 2 按素材搜索
* @see com.gic.haoban.manage.api.enums.content.InteractRecordSearchType
*/
private Integer searchType;
public String getEnterpriseId() {
return enterpriseId;
}
......@@ -133,4 +140,12 @@ public class PotentialCustomerQDTO extends BasePageInfo {
public void setHasMemberPhone(Integer hasMemberPhone) {
this.hasMemberPhone = hasMemberPhone;
}
public Integer getSearchType() {
return searchType;
}
public void setSearchType(Integer searchType) {
this.searchType = searchType;
}
}
......@@ -84,6 +84,8 @@ public enum NoticeMessageTypeEnum {
MATERIAL_AUDIT_NOTIFY(6006, "素材审核通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_audit_notify", "/pages/route/index?pageType=", "hbapp_create_center", "materialAuditNotify", "haobanNotice"),
KNOWLEDGE_NEW_NOTIFY(6007, "知识库上新通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "knowledge_new_notify", "/pages/route/index?pageType=", "hbapp_guide_knowledge", "knowledgeNewNotify", "clerkMaterialsNotice"),
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"),
......
package com.gic.haoban.manage.api.enums.content;
/**
* @Author MUSI
* @Date 2023/11/24 4:07 PM
* @Description
* @Version
**/
public enum InteractRecordSearchType {
CUSTOMER(1, "按客户搜索"),
MATERIAL(2, "按素材搜索");
InteractRecordSearchType(Integer code, String desc){
this.code = code;
this.desc = desc;
}
private Integer code;
private String desc;
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
......@@ -25,4 +25,11 @@ public interface MallOrderStatusChangeApiService {
* @return
*/
ServiceResponse<Void> orderEventDelay(String params);
/**
* 处理微盟订单
* @param params
* @return
*/
ServiceResponse<Void> dealWeimoOrder(String params);
}
......@@ -60,4 +60,12 @@ public interface QywxGroupMsgTaskApiService {
* @return
*/
ServiceResponse<Void> potentialCustomerJob(String params);
/**
* 记录会员订单为数组
* 当前只处理了微盟
* @param params
* @return
*/
ServiceResponse<Void> recordMemberOrderForData(String params);
}
......@@ -33,10 +33,11 @@ public class InteractRecordExtendInfoBO implements Serializable {
private List<ExtendGoodsInfo> extendGoodsInfos;
/**
* 冗余的商品id
* 浏览商品事件冗余的商品id
*/
private List<String> goodsIds;
@Data
public static class ExtendGoodsInfo implements Serializable {
......
......@@ -3,6 +3,8 @@ package com.gic.haoban.manage.service.pojo.bo.content.binlog;
import com.alibaba.fastjson.annotation.JSONField;
import com.gic.haoban.manage.service.pojo.BinlogBasePojo;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/4/6 7:19 PM
......@@ -21,6 +23,35 @@ public class MaterialMemberEOrderPojo extends BinlogBasePojo {
@JSONField(name = "enterprise_id")
private String enterpriseId;
/**
* 订单编号
*/
@JSONField(name = "order_no")
private String orderNumber;
/**
* 订单id
*/
@JSONField(name = "eorder_id")
private String orderId;
/**
* 渠道code
*/
@JSONField(name = "channel_code")
private String channelCode;
/**
* 下单时间
*/
@JSONField(name = "order_create_time")
private Date orderTime;
/**
* 表名
*/
private String tableName;
public Integer getOrderStatus() {
return orderStatus;
}
......@@ -44,4 +75,44 @@ public class MaterialMemberEOrderPojo extends BinlogBasePojo {
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public Date getOrderTime() {
return orderTime;
}
public void setOrderTime(Date orderTime) {
this.orderTime = orderTime;
}
}
......@@ -3,6 +3,8 @@ package com.gic.haoban.manage.service.pojo.bo.content.binlog;
import com.alibaba.fastjson.annotation.JSONField;
import com.gic.haoban.manage.service.pojo.BinlogBasePojo;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/4/6 7:19 PM
......@@ -20,6 +22,35 @@ public class MaterialMemberGicOrderPojo extends BinlogBasePojo {
@JSONField(name = "enterprise_id")
private String enterpriseId;
/**
* 订单编号
*/
@JSONField(name = "order_number")
private String orderNumber;
/**
* 订单id
*/
@JSONField(name = "order_id")
private String orderId;
/**
* 渠道code
*/
@JSONField(name = "channel_code")
private String channelCode;
/**
* 下单时间
*/
@JSONField(name = "order_time")
private Date orderTime;
/**
* 表名
*/
private String tableName;
public Integer getOrderStatus() {
return orderStatus;
}
......@@ -43,4 +74,44 @@ public class MaterialMemberGicOrderPojo extends BinlogBasePojo {
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public Date getOrderTime() {
return orderTime;
}
public void setOrderTime(Date orderTime) {
this.orderTime = orderTime;
}
}
package com.gic.haoban.manage.service.pojo.bo.content.binlog;
import java.io.Serializable;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/11/27 11:18 AM
* @Description
* @Version
**/
public class MemberOrderBo implements Serializable {
public static final String weimo = "weimob";
private Integer orderStatus;
private String memberId;
private String enterpriseId;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单id
*/
private String orderId;
/**
* 渠道code
*/
private String channelCode;
/**
* 下单时间
*/
private Date orderTime;
/**
* 表名
*/
private String tableName;
/***
* 消费次数
*/
private Integer times;
public Integer getOrderStatus() {
return orderStatus;
}
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Date getOrderTime() {
return orderTime;
}
public void setOrderTime(Date orderTime) {
this.orderTime = orderTime;
}
public Integer getTimes() {
return times;
}
public void setTimes(Integer times) {
this.times = times;
}
}
package com.gic.haoban.manage.service.pojo.bo.content.holo;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @Author MUSI
* @Date 2023/12/6 6:05 PM
* @Description
* @Version
**/
public class MemberOrderHoloBo implements Serializable {
private String orderId;
private String enterpriseId;
private String memberId;
private String orderNumber;
private String oorderNumber;
/**
* 实付金额 含运费
*/
private BigDecimal paidAmount;
/**
*
*/
private BigDecimal payAmount;
/**
* 付款时间
*/
private String payTime;
/**
* 订单创建时间
*/
private String receiptsDate;
/**
* 渠道
*/
private String channelCode;
/**
* 导购id
*/
private String clerkId;
/**
* 导购名称
*/
private String clerkName;
/**
* 导购名称
*/
private String clerkCode;
private String storeCode;
private String storeId;
private String storeName;
/**
* 商品数量
*/
private Integer productCount;
private Long contentMaterialId;
private Long auditMaterialId;
/**
* 分享导购id
*/
private String shareClerkId;
/**
* 分享门店id
*/
private String shareStoreId;
private String createTime;
private String updateTime;
private Integer deleteFlag;
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
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 getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getOorderNumber() {
return oorderNumber;
}
public void setOorderNumber(String oorderNumber) {
this.oorderNumber = oorderNumber;
}
public BigDecimal getPaidAmount() {
return paidAmount;
}
public void setPaidAmount(BigDecimal paidAmount) {
this.paidAmount = paidAmount;
}
public BigDecimal getPayAmount() {
return payAmount;
}
public void setPayAmount(BigDecimal payAmount) {
this.payAmount = payAmount;
}
public String getPayTime() {
return payTime;
}
public void setPayTime(String payTime) {
this.payTime = payTime;
}
public String getReceiptsDate() {
return receiptsDate;
}
public void setReceiptsDate(String receiptsDate) {
this.receiptsDate = receiptsDate;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public Integer getProductCount() {
return productCount;
}
public void setProductCount(Integer productCount) {
this.productCount = productCount;
}
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public String getShareClerkId() {
return shareClerkId;
}
public void setShareClerkId(String shareClerkId) {
this.shareClerkId = shareClerkId;
}
public String getShareStoreId() {
return shareStoreId;
}
public void setShareStoreId(String shareStoreId) {
this.shareStoreId = shareStoreId;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public Long getAuditMaterialId() {
return auditMaterialId;
}
public void setAuditMaterialId(Long auditMaterialId) {
this.auditMaterialId = auditMaterialId;
}
}
package com.gic.haoban.manage.service.pojo.bo.content.holo;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/12/8 9:06 AM
* @Description
* @Version
**/
public class MemberOrderItemHoloBo implements Serializable {
private String orderItemId;
private String orderId;
private String orderNumber;
private String oorderNumber;
private String receiptsDate;
private String enterpriseId;
private String memberId;
private String storeId;
private String productId;
private String productCode;
private String productName;
private String skuId;
private String skuCode;
private String skuName;
private Integer skuNum;
private String channelCode;
/**
* 实付金额 含运费
*/
private BigDecimal paidAmount;
/**
*
*/
private BigDecimal payAmount;
private Long contentMaterialId;
private Long auditMaterialId;
private String createTime;
private String updateTime;
private Integer deleteFlag;
public String getOrderItemId() {
return orderItemId;
}
public void setOrderItemId(String orderItemId) {
this.orderItemId = orderItemId;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public String getOorderNumber() {
return oorderNumber;
}
public void setOorderNumber(String oorderNumber) {
this.oorderNumber = oorderNumber;
}
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 getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getSkuId() {
return skuId;
}
public void setSkuId(String skuId) {
this.skuId = skuId;
}
public String getSkuCode() {
return skuCode;
}
public void setSkuCode(String skuCode) {
this.skuCode = skuCode;
}
public String getSkuName() {
return skuName;
}
public void setSkuName(String skuName) {
this.skuName = skuName;
}
public Integer getSkuNum() {
return skuNum;
}
public void setSkuNum(Integer skuNum) {
this.skuNum = skuNum;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public BigDecimal getPaidAmount() {
return paidAmount;
}
public void setPaidAmount(BigDecimal paidAmount) {
this.paidAmount = paidAmount;
}
public BigDecimal getPayAmount() {
return payAmount;
}
public void setPayAmount(BigDecimal payAmount) {
this.payAmount = payAmount;
}
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public Long getAuditMaterialId() {
return auditMaterialId;
}
public void setAuditMaterialId(Long auditMaterialId) {
this.auditMaterialId = auditMaterialId;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public String getReceiptsDate() {
return receiptsDate;
}
public void setReceiptsDate(String receiptsDate) {
this.receiptsDate = receiptsDate;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
}
......@@ -57,10 +57,34 @@ public class InteractRecordMessageBO implements Serializable {
* 购买商品时的 订单编号
*/
private String orderNumber;
/**
* 订单id
*/
private String orderId;
/**
* 查看商品时查看的商品id
*/
private String goodsId;
/**
* 是否是微盟商品
* true 是
* false 否
*/
private Boolean weimoGoodsFlag;
/**
* 货号
*/
private String goodsCode;
/**
* 商品名称
*/
private String goodsName;
/**
* 业务唯一标识
*/
......@@ -88,4 +112,12 @@ public class InteractRecordMessageBO implements Serializable {
private Integer bizType;
private String appKey;
/**
* 订单类型
* 1 微商城
* 2 基础线上单
* 3 基础线下单
*/
private Integer orderType;
}
package com.gic.haoban.manage.service.pojo.bo.content.message;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/11/30 5:38 PM
* @Description
* @Version
**/
public class OrderConvertBo implements Serializable {
private String enterpriseId;
private String clerkId;
private String memberId;
private String bizId;
/**
* 实付
*/
private Double payAmount;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Double getPayAmount() {
return payAmount;
}
public void setPayAmount(Double payAmount) {
this.payAmount = payAmount;
}
}
......@@ -3,6 +3,8 @@ package com.gic.haoban.manage.service.pojo.qo.content;
import com.gic.api.base.commons.BasePageInfo;
import lombok.Data;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/3/29 10:03 AM
......@@ -69,4 +71,16 @@ public class PotentialCustomerQO extends BasePageInfo {
* 1 会员有手机号
*/
private Integer hasMemberPhone;
/**
* 业务id
*/
private List<String> bizIds;
/**
* 1 按客户搜索
* 2 按素材搜索
* @see com.gic.haoban.manage.api.enums.content.InteractRecordSearchType
*/
private Integer searchType;
}
package com.gic.haoban.manage.service.service.content.adaptor;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DataApiUtils;
import com.gic.commons.util.DateUtil;
import com.gic.content.api.dto.material.ContentMaterialBaseDTO;
import com.gic.content.api.enums.MaterialPurposeEnum;
import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.haoban.manage.api.enums.content.MaterialReportType;
import com.gic.haoban.manage.service.util.DataTargetHttpUtils;
import lombok.AllArgsConstructor;
......@@ -12,12 +16,15 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -33,6 +40,7 @@ import java.util.Optional;
@Component
public class MaterialDataAdaptor {
/**
* 导购/店长 周报
*/
......@@ -51,6 +59,8 @@ public class MaterialDataAdaptor {
* 区经 月报
*/
private static final String AREA_MONTH_DATA = "data_cms_store_month_report_total";
@Autowired
private ContentMaterialApiService contentMaterialApiService;
@Data
@AllArgsConstructor
......@@ -64,6 +74,14 @@ public class MaterialDataAdaptor {
}
@Data
@AllArgsConstructor
public static class MaterialBizInfo {
private String clerkId;
private String bizId;
private String storeId;
}
/**
* 查询导购/店长的数据
* @param enterpriseId
......@@ -170,4 +188,58 @@ public class MaterialDataAdaptor {
}
return Collections.emptyMap();
}
/**
* 查询素材信息
* @param enterpriseId
* @param memberId
* @param orderTime
* @param goodsCode
* @return
*/
public MaterialBizInfo queryMaterialBizInfo(String enterpriseId, String memberId, Date orderTime, String goodsCode) {
JSONObject params = new JSONObject();
params.put("enterpriseId", enterpriseId);
params.put("memberId", memberId);
params.put("conv_flag", 1);
try {
params.put("orderCreateTime", DateUtil.formatString(orderTime, DateUtil.FORMAT_DATETIME_19));
if (StringUtils.isNotBlank(goodsCode)) {
params.put("conv_flag", 2);
params.put("goodsCode", goodsCode);
}
Map<String, Object> res = DataApiUtils.http(params.toJSONString(), "data_cms_matl_conv_rel");
List<JSONObject> dataList = DataApiUtils.getDataList(res);
if (CollectionUtils.isEmpty(dataList)) {
return null;
}
JSONObject jsonObject = dataList.get(0);
return new MaterialBizInfo(jsonObject.getString("clerkId"), jsonObject.getString("contentMaterialId"), jsonObject.getString("storeId"));
}catch (Exception ex) {
log.info("查询会员素材信息异常 {}", params.toJSONString(), ex);
}
return null;
}
/**
* 查询素材的审核素材id
*
* @param enterpriseId
* @param materialId
* @return
*/
public Long queryMaterialBaseId(String enterpriseId, Long materialId) {
if (StringUtils.isBlank(enterpriseId) || materialId == null) {
return null;
}
ServiceResponse<ContentMaterialBaseDTO> serviceResponse = contentMaterialApiService.getFromMaterialById(enterpriseId,
materialId, MaterialPurposeEnum.AUDIT.code);
log.info("查询审核素材结果:{}", JSON.toJSONString(serviceResponse));
if (serviceResponse.isSuccess() && serviceResponse.getResult() != null) {
return serviceResponse.getResult().getContentMaterialId();
}
return null;
}
}
......@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.service.content.adaptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
......@@ -68,15 +69,21 @@ public class MessageConvertHelper {
String eventCode = jsonObject.getString("event_code");
interactRecordMessageBO.setEventType(this.convertEventType(eventCode));
String weimoFlag = cuspJson.getString("is_weiMob");
interactRecordMessageBO.setWeimoGoodsFlag(this.convertWeimoFlag(weimoFlag));
String goodsId = cuspJson.getString("goods_id");
interactRecordMessageBO.setGoodsId(goodsId);
String goodsCode = cuspJson.getString("goods_code");
interactRecordMessageBO.setGoodsCode(goodsCode);
String goodsName = cuspJson.getString("goods_name");
interactRecordMessageBO.setGoodsName(goodsName);
Integer duration = jsonObject.getInteger("duration");
interactRecordMessageBO.setDurationTime(duration);
String orderNumber = cuspJson.getString("order_number");
interactRecordMessageBO.setOrderNumber(orderNumber);
String goodsId = cuspJson.getString("goods_id");
interactRecordMessageBO.setGoodsId(goodsId);
String runningUuid = gpJson.getString("runningUuid");
interactRecordMessageBO.setBusinessUUId(runningUuid);
......@@ -115,15 +122,23 @@ public class MessageConvertHelper {
switch (eventCode) {
case "material_page":
case "material_page_duration":
return 1;
return MaterialInteractRecordEventType.VISIT_MATERIAL.getCode();
case "store_goods_detail":
return 2;
case "click_goods":
return MaterialInteractRecordEventType.VISIT_PRODUCT.getCode();
case "store_buy_sucess":
return 3;
case "store_add_cart":
return 4;
return MaterialInteractRecordEventType.ADD_SHOPPING_CART.getCode();
default:
return null;
}
}
public boolean convertWeimoFlag(String weimoFlag) {
if (StringUtils.isBlank(weimoFlag)) {
return false;
}
return StringUtils.equals(weimoFlag, "是");
}
}
package com.gic.haoban.manage.service.service.content.impl;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.content.api.enums.MaterialOrderFieldEnum;
import com.gic.content.api.enums.MaterialSearchSceneEnum;
import com.gic.content.api.qdto.material.ContentMaterialPageQDTO;
import com.gic.content.api.service.ContentMaterialApiService;
import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordSearchType;
import com.gic.haoban.manage.service.dao.mapper.content.TabHaobanPotentialCustomerMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.content.TabHaobanPotentialCustomer;
......@@ -66,6 +73,8 @@ public class PotentialCustomerServiceImpl implements PotentialCustomerService {
MemberQueryService memberQueryService;
@Autowired
StaffClerkRelationService staffClerkRelationService;
@Autowired
private ContentMaterialApiService contentMaterialApiService;
/**
......@@ -85,6 +94,29 @@ public class PotentialCustomerServiceImpl implements PotentialCustomerService {
if (staffClerkRelationDTO == null) {
return new Page<>();
}
if (InteractRecordSearchType.MATERIAL.getCode().equals(potentialCustomerQO.getSearchType())) {
List<String> bizIds = Collections.emptyList();
// 按素材搜索
ContentMaterialPageQDTO searchQuery = new ContentMaterialPageQDTO();
searchQuery.setEnterpriseId(potentialCustomerQO.getEnterpriseId());
searchQuery.setQueryScene(MaterialSearchSceneEnum.GIC_MARKETING.value);
searchQuery.setSearch(potentialCustomerQO.getSearch());
searchQuery.setOrderField(MaterialOrderFieldEnum.PUBLISH_BEGIN_TIME.value);
BasePageInfo pageInfo = new BasePageInfo();
pageInfo.setPageSize(1000);
ServiceResponse<List<Long>> serviceResponse = contentMaterialApiService.listMaterialIdBySearch(searchQuery, pageInfo);
if (serviceResponse.isSuccess() && CollectionUtils.isNotEmpty(serviceResponse.getResult())) {
bizIds = serviceResponse.getResult()
.stream()
.map(String::valueOf)
.collect(Collectors.toList());
}
if (CollectionUtils.isEmpty(bizIds)) {
log.info("按素材搜索, {} 搜索素材内容结果为空", potentialCustomerQO.getSearch());
return new Page<>();
}
potentialCustomerQO.setBizIds(bizIds);
}
potentialCustomerQO.setStaffId(staffClerkRelationDTO.getStaffId());
PageHelper.startPage(potentialCustomerQO.getPageNum(), potentialCustomerQO.getPageSize());
com.github.pagehelper.Page<TabHaobanPotentialCustomer> pageResult =
......
......@@ -49,6 +49,7 @@ public class InteractRecordMessageService {
// 参数是否完整
// 根据businessId clerkId memberId materialId 构建唯一标识key
String recordKey = context.buildRecordKey();
RedisUtil.lock(recordKey, 3L, TimeUnit.SECONDS, 2L);
// 根据key 查询是否存在记录
InteractRecordBO interactRecordBO = null;
if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) {
......@@ -65,7 +66,6 @@ public class InteractRecordMessageService {
interactRecordBO = interactRecordService.queryWithInteractInfo(interactRecordMessageBO.getEnterpriseId(), context.buildRecordKeyWithUnionId());
}
}
RedisUtil.lock(recordKey, 3L, TimeUnit.SECONDS, 2L);
try {
if (interactRecordBO == null) {
if (interactRecordMessageBO.getChannelSource() == null
......@@ -124,7 +124,10 @@ public class InteractRecordMessageService {
// 查询订单信息
String enterpriseId = context.getInteractRecordMessageBO().getEnterpriseId();
String orderNumber = context.getInteractRecordMessageBO().getOrderNumber();
InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = interactRecordMessageBuilder.buildMaterialOrderItemInfo(enterpriseId, orderNumber);
String orderId = context.getInteractRecordMessageBO().getOrderId();
String memberId = context.getInteractRecordMessageBO().getMemberId();
InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = interactRecordMessageBuilder.buildMaterialOrderItemInfo(enterpriseId, orderNumber,
memberId, orderId, interactRecordMessageBO.getOrderType());
if (extendOrderInfo != null) {
interactRecordBO.getExtendInfo().getExtendOrderInfos().add(extendOrderInfo);
}
......
package com.gic.haoban.manage.service.service.out.impl.content;
import cn.hutool.db.DaoTemplate;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
......@@ -9,16 +10,26 @@ import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO;
import com.gic.business.order.service.ordermanage.OrderInfoOutApiService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.OrderEventMqBO;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MemberOrderBo;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import com.gic.haoban.manage.service.service.content.adaptor.MaterialDataAdaptor;
import com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService;
import com.gic.haoban.manage.service.task.KafkaMessageServiceImpl;
import com.gic.order.api.dto.OrderDTO;
import com.gic.order.api.dto.req.MemberOrderOptional;
import com.gic.order.api.service.member.MemberOrderReadApiService;
import com.gic.orderecommerce.api.service.EcommerceOrderOutputApiService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/4/6 5:28 PM
......@@ -34,6 +45,10 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
OrderInfoOutApiService orderInfoOutApiService;
@Autowired
InteractRecordMessageService interactRecordMessageService;
@Autowired
private MaterialDataAdaptor materialDataAdaptor;
private static final String ORDER_EVENT_RETRY = "orderEventRetryMQ";
......@@ -96,7 +111,7 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
interactRecordMessageBO.setLastAccessTime(orderInfo.getCreateTime().getTime());
interactRecordMessageBO.setOrderNumber(orderEventMqBO.getOrderNumber());
interactRecordMessageBO.setTimes(orderEventMqBO.getTimes());
interactRecordMessageBO.setOrderType(1);
InteractRecordBO interactRecordBO = interactRecordMessageService.getInteractRecordBOWithOrderType(interactRecordMessageBO);
if (interactRecordBO == null) {
log.info("订单事件先到达,埋点事件延迟 >>> {}", JSON.toJSONString(interactRecordMessageBO));
......@@ -140,4 +155,69 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
}
return true;
}
/**
* 处理微盟订单
* MQ: dealWeimoOrder
* @param params
* @return
*/
@Override
public ServiceResponse<Void> dealWeimoOrder(String params) {
log.info("处理微盟订单 {}", params);
//订单分为tab_gic_eorder 和 tab_gic_ordeer
MemberOrderBo memberOrderBo = JSON.parseObject(params, MemberOrderBo.class);
if (memberOrderBo == null) {
log.info("dealWeimoOrder 数据为空 {}", params);
return ServiceResponse.success();
}
String enterpriseId = memberOrderBo.getEnterpriseId();
String memberId = memberOrderBo.getMemberId();
String orderId = memberOrderBo.getOrderId();
String orderNumber = memberOrderBo.getOrderNumber();
Date orderTime = memberOrderBo.getOrderTime();
InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO();
interactRecordMessageBO.setEnterpriseId(enterpriseId);
interactRecordMessageBO.setMemberId(memberId);
MaterialDataAdaptor.MaterialBizInfo materialBizInfo = materialDataAdaptor.queryMaterialBizInfo(enterpriseId, memberId, orderTime, null);
if (materialBizInfo == null) {
if (memberOrderBo.getTimes() == null) {
memberOrderBo.setTimes(1);
}
if (memberOrderBo.getTimes() > 60) {
log.info("订单消费次数已经超出60次, 不再处理 {}", params);
return ServiceResponse.success();
}
memberOrderBo.setTimes(memberOrderBo.getTimes() + 1);
try {
log.info("发送微盟订单处理消息 {}", params);
/**
* @see com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService#dealWeimoOrder(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("dealWeimoOrderForInteractRecord", JSON.toJSONString(memberOrderBo), 60);
}catch (Exception ex) {
log.info("处理会员订单异常 ", ex);
}
return ServiceResponse.success();
}
interactRecordMessageBO.setClerkId(materialBizInfo.getClerkId());
interactRecordMessageBO.setMaterialId(materialBizInfo.getBizId());
interactRecordMessageBO.setBizType(ShareBizType.MATERIAL.getCode());
interactRecordMessageBO.setEventType(MaterialInteractRecordEventType.ORDER.getCode());
interactRecordMessageBO.setDurationTime(0);
interactRecordMessageBO.setLastAccessTime(System.currentTimeMillis());
interactRecordMessageBO.setOrderNumber(orderNumber);
interactRecordMessageBO.setOrderId(orderId);
if (StringUtils.equalsIgnoreCase(memberOrderBo.getTableName(), KafkaMessageServiceImpl.tab_gic_eorder)) {
interactRecordMessageBO.setOrderType(2);
}else {
interactRecordMessageBO.setOrderType(3);
}
interactRecordMessageService.dealRecord(interactRecordMessageBO);
return ServiceResponse.success();
}
}
......@@ -6,10 +6,12 @@ import com.gic.binlog.base.entity.GicField;
import com.gic.binlog.base.entity.GicRecord;
import com.gic.binlog.base.entity.enums.GicRecordType;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.dto.FlushStoreMqDTO;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService;
import com.gic.haoban.manage.service.pojo.BinlogBasePojo;
import com.gic.haoban.manage.service.pojo.ClerkSyncPojo;
import com.gic.haoban.manage.service.pojo.GroupSyncPojo;
......@@ -17,6 +19,7 @@ import com.gic.haoban.manage.service.pojo.bo.content.binlog.MaterialMemberEOrder
import com.gic.haoban.manage.service.pojo.StoreSyncPojo;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MaterialMemberGicOrderPojo;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MaterialMemberUnionIdPoJo;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MemberOrderBo;
import com.gic.haoban.manage.service.service.StoreRangeService;
import com.gic.haoban.manage.service.service.content.InteractRecordService;
import com.gic.haoban.manage.service.service.content.PotentialCustomerService;
......@@ -25,6 +28,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.listener.MessageListener;
......@@ -48,8 +52,8 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
private final String GROUP = "tab_gic_store_group";
private final String tab_gic_eorder = "tab_gic_eorder";
private final String tab_gic_order = "tab_gic_order";
public static final String tab_gic_eorder = "tab_gic_eorder";
public static final String tab_gic_order = "tab_gic_order";
private final String tab_gic_member = "tab_gic_member";
......@@ -95,12 +99,21 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
logger.info("导购binlog无需监听");
}
else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_eorder)) {
// 处理线上单微盟订单
MemberOrderBo memberOrderBo = new MemberOrderBo();
BeanUtils.copyProperties((MaterialMemberEOrderPojo)pojo, memberOrderBo);
this.dealMemberOrder(memberOrderBo);
// 处理会员订单新增事件
dealMemberEOrder((MaterialMemberEOrderPojo) pojo);
}
else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_order)) {
MemberOrderBo memberOrderBo = new MemberOrderBo();
BeanUtils.copyProperties((MaterialMemberGicOrderPojo)pojo, memberOrderBo);
this.dealMemberOrder(memberOrderBo);
// 处理会员订单新增事件
dealMemberGicOrder((MaterialMemberGicOrderPojo) pojo);
}else if (StringUtils.startsWith(record.value().getTableName(), tab_gic_member)) {
// 会员unionId新增事件
dealMemberUnionIdChange((MaterialMemberUnionIdPoJo) pojo);
......@@ -117,17 +130,25 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
} else if (record.getTableName().equals(GROUP)) {
return binlogMap(record.getFieldList(), record.getRecordType(), GroupSyncPojo.class);
}else if (StringUtils.startsWith(record.getTableName(), tab_gic_eorder)) {
Map<String, String> mid = new HashMap<>();
for (GicField gicField : record.getFieldList()) {
mid.put(gicField.getName(), gicField.getValue());
if (GicRecordType.INSERT.equals(record.getRecordType())) {
Map<String, String> mid = new HashMap<>();
for (GicField gicField : record.getFieldList()) {
mid.put(gicField.getName(), gicField.getValue());
}
MaterialMemberEOrderPojo materialMemberEOrderPojo = JSON.parseObject(JSON.toJSONString(mid), MaterialMemberEOrderPojo.class);
materialMemberEOrderPojo.setTableName(tab_gic_eorder);
return materialMemberEOrderPojo;
}
return JSON.parseObject(JSON.toJSONString(mid), MaterialMemberEOrderPojo.class);
}else if (StringUtils.startsWith(record.getTableName(), tab_gic_order)) {
Map<String, String> mid = new HashMap<>();
for (GicField gicField : record.getFieldList()) {
mid.put(gicField.getName(), gicField.getValue());
if (GicRecordType.INSERT.equals(record.getRecordType())) {
Map<String, String> mid = new HashMap<>();
for (GicField gicField : record.getFieldList()) {
mid.put(gicField.getName(), gicField.getValue());
}
MaterialMemberGicOrderPojo materialMemberGicOrderPojo = JSON.parseObject(JSON.toJSONString(mid), MaterialMemberGicOrderPojo.class);
materialMemberGicOrderPojo.setTableName(tab_gic_order);
return materialMemberGicOrderPojo;
}
return JSON.parseObject(JSON.toJSONString(mid), MaterialMemberGicOrderPojo.class);
} else if (StringUtils.startsWith(record.getTableName(), tab_gic_member)) {
GicRecordType recordType = record.getRecordType();
......@@ -287,4 +308,34 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
interactRecordService.memberAuthorized(materialMemberUnionIdPoJo.getMemberId(), materialMemberUnionIdPoJo.getUnionId());
}
private void dealMemberOrder(MemberOrderBo memberOrderBo) {
logger.info("销售线索处理会员订单数据 {}", JSON.toJSONString(memberOrderBo));
if (!StringUtils.equalsIgnoreCase(memberOrderBo.getChannelCode(), MemberOrderBo.weimo)) {
return;
}
if (memberOrderBo.getOrderStatus() == null || memberOrderBo.getOrderStatus() != 1) {
logger.info("会员订单 非购买事件 {}", JSON.toJSONString(memberOrderBo));
return;
}
try {
logger.info("发送微盟订单处理消息 dealWeimoOrderForInteractRecord {}", JSON.toJSONString(memberOrderBo));
/**
* @see com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService#dealWeimoOrder(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("dealWeimoOrderForInteractRecord", JSON.toJSONString(memberOrderBo));
}catch (Exception ex) {
logger.info("处理会员订单异常 ", ex);
}
try {
logger.info("发送微盟订单处理消息 recordMemberOrderForData");
/**
* @see QywxGroupMsgTaskApiService#recordMemberOrderForData(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("recordMemberOrderForData", JSON.toJSONString(memberOrderBo));
}catch (Exception ex) {
logger.info("处理会员订单异常 ", ex);
}
}
}
......@@ -233,5 +233,6 @@
ref="commissionTaskApiService" timeout="10000" />
<dubbo:reference id="memberOrderReadApiService" interface="com.gic.order.api.service.member.MemberOrderReadApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference id="contentProducerApiService" interface="com.gic.content.api.service.ContentProducerApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false" />
</beans>
\ No newline at end of file
......@@ -242,12 +242,32 @@
<if test="hasMemberRelation != null">
left join tab_haoban_external_clerk_related related on related.staff_id = #{staffId} and related.status_flag in (1, 3, 4) and customer.member_id = related.member_id
</if>
<if test="bizIds != null and bizIds.size > 0">
<!-- 按素材 -->
INNER JOIN (
SELECT `enterprise_id`,`clerk_id`,`member_id`
FROM tab_haoban_interact_record
<where>
clerk_id = #{clerkId} and delete_flag = 0 and biz_type = 1
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
and biz_id in
<foreach collection="bizIds" separator="," item="item" open="(" close=")">
#{item}
</foreach>
</where>
GROUP BY `enterprise_id`,`clerk_id`,`member_id`
ORDER BY NULL
) temp
on customer.enterprise_id = temp.enterprise_id and customer.clerk_id = temp.clerk_id and customer.member_id = temp.member_id
</if>
<where>
customer.clerk_id = #{clerkId} and customer.delete_flag = 0
<if test="enterpriseId != null and enterpriseId != ''">
and customer.enterprise_id = #{enterpriseId}
</if>
<if test="search != null and search != ''">
<if test="search != null and search != '' and searchType != null and searchType == 1">
<!-- 姓名、昵称、手机号 -->
and ( customer.member_name like concat('%', #{search}, '%') or customer.member_nick_name like concat('%', #{search}, '%') or customer.member_phone like concat('%', #{search}, '%') )
</if>
......
......@@ -53,6 +53,8 @@ public class PotentialCustomerServiceTest {
potentialCustomerQO.setWxEnterpriseId(wxEid);
potentialCustomerQO.setClerkId(clerkId);
potentialCustomerQO.setHasMemberRelation(1);
potentialCustomerQO.setSearchType(2);
potentialCustomerQO.setSearch("红");
Page<PotentialCustomerBO> customerBOPage =
potentialCustomerService.queryPotentialCustomerPage(potentialCustomerQO);
System.out.println(JSON.toJSONString(customerBOPage));
......
......@@ -6,6 +6,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.material.ContentGoodsDTO;
import com.gic.content.api.dto.material.ContentMaterialLandingPageInfoDTO;
import com.gic.content.api.dto.material.ProductInfoDTO;
import com.gic.content.api.qdto.material.ContentMaterialLandingPageQDTO;
import com.gic.content.api.service.ContentMaterialShareApiService;
import com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO;
......@@ -32,7 +33,7 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* 导购分享素材 与素材落地页
* 好办-导购分享素材与素材落地页
*/
@RestController
public class ClerkMaterialShareController {
......@@ -101,13 +102,16 @@ public class ClerkMaterialShareController {
Splitter.on(",").splitToList(serviceResponse.getResult().getContentMaterialInfo().getMaterialImageUrls()));
}
}
List<ContentGoodsDTO> goodsInfos = serviceResponse.getResult().getGoodsInfos();
List<ProductInfoDTO> goodsInfos = serviceResponse.getResult().getProductInfos();
if (CollectionUtils.isNotEmpty(goodsInfos)) {
List<SimpleGoodsInfoVO> goodsInfoVOS = goodsInfos.stream()
.map(item -> {
SimpleGoodsInfoVO temp = new SimpleGoodsInfoVO();
BeanUtils.copyProperties(item, temp);
temp.setGoodsImg(item.getGoodsImageUrl());
temp.setGoodsId(item.getProId());
temp.setGoodsName(item.getProName());
temp.setSalePrice(item.getMinPrice());
temp.setGoodsImg(item.getImageUrl());
return temp;
})
.collect(Collectors.toList());
......
......@@ -26,6 +26,7 @@ import com.gic.haoban.manage.web.qo.content.*;
import com.gic.haoban.manage.web.qo.content.like.ContentMaterialLikeQO;
import com.gic.haoban.manage.web.vo.content.*;
import com.gic.haoban.manage.web.vo.content.statistics.ContentMaterialKnowVO;
import com.gic.store.goods.enums.ThirdTypeEnum;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -155,6 +156,7 @@ public class ContentMaterialController {
List<String> goodsIds = responseResult.getResult()
.stream()
.filter(item -> CollectionUtils.isNotEmpty(item.getContentGoodsList()))
.filter(item -> ThirdTypeEnum.GIC.getCode().equals(item.getContentGoodsList().get(0).getThirdType()))
.map(item -> item.getContentGoodsList().get(0).getGoodsId())
.distinct()
.collect(Collectors.toList());
......@@ -209,7 +211,7 @@ public class ContentMaterialController {
@ResponseBody
@RequestMapping("/get-material")
public RestResponse<ContentMaterialInfoVO> getMaterialMember(String enterpriseId,Long contentMaterialId,String clerkId) {
ServiceResponse<ContentMaterialDTO> response = contentMaterialApiService.getMaterialMember(enterpriseId, contentMaterialId, clerkId);
ServiceResponse<ContentMaterialDTO> response = contentMaterialApiService.getMaterialDetail(enterpriseId, contentMaterialId, clerkId);
if (!response.isSuccess()) {
return RestResponse.failure(response.getCode(), response.getMessage());
}
......
package com.gic.haoban.manage.web.controller.content;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.setting.ContentSettingDTO;
import com.gic.content.api.service.ContentSettingApiService;
import com.gic.haoban.manage.web.vo.content.ContentSettingVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 好办-内容配置
* @Author MUSI
* @Date 2023/11/29 10:43 AM
* @Description
* @Version
**/
@RestController
@RequestMapping(path = "/content/setting")
public class ContentSettingController {
@Autowired
private ContentSettingApiService contentSettingApiService;
/**
* 查询企业内容配置
*
* @param enterpriseId
* @return
*/
@RequestMapping(path = "/info")
public RestResponse<ContentSettingVO> queryContentSetting(String enterpriseId) {
ServiceResponse<ContentSettingDTO> serviceResponse =
contentSettingApiService.queryContentSettingInfo(enterpriseId);
if (!serviceResponse.isSuccess() || serviceResponse.getResult() == null) {
return RestResponse.failure(serviceResponse.getCode(), serviceResponse.getMessage());
}
ContentSettingVO contentSettingVO = EntityUtil.changeEntityByJSON(ContentSettingVO.class, serviceResponse.getResult());
return RestResponse.successResult(contentSettingVO);
}
}
......@@ -36,7 +36,7 @@ import java.util.Optional;
import java.util.stream.Collectors;
/**
* 好办小程序-销售线索
* 好办-销售线索
**/
@Slf4j
@RestController
......@@ -101,7 +101,7 @@ public class PotentialCustomerController {
.map(PotentialCustomerDTO::getMemberId)
.collect(Collectors.toList());
Map<String, Integer> memberVisitMap =
materialDataAdaptor.queryMemberVisitMap(potentialCustomerQO.getEnterpriseId(), null, potentialCustomerQO.getClerkId(), memberIds);
materialDataAdaptor.queryMemberVisitMap(potentialCustomerQO.getEnterpriseId(), null, potentialCustomerQO.getClerkId(), memberIds, potentialCustomerQO.getWithData());
List<PotentialCustomerVO> customerVOS = customerDTOS
.stream()
.map(item -> {
......
......@@ -417,8 +417,12 @@ public class MaterialDataAdaptor {
* @param memberIds
* @return
*/
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, Boolean withData) {
if (Boolean.FALSE.equals(withData)) {
log.info("不查询数据组 ");
return Collections.emptyMap();
}
try {
Map<String, Object> inlineParams = new HashMap<>();
if (StringUtils.isNotBlank(clerkId)) {
......
......@@ -3,6 +3,7 @@ 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.content.api.dto.material.ContentMaterialRelationThirdDTO;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotBlank;
......@@ -100,6 +101,11 @@ public class ContentMaterialSaveQO {
*/
private List<String> contentGoodsIdList;
/**
* 关联第三方商品id列表
*/
private List<ContentMaterialRelationThirdDTO> thirdGoodsList;
public Long getContentMaterialId() {
return contentMaterialId;
}
......@@ -259,5 +265,13 @@ public class ContentMaterialSaveQO {
public void setContentGoodsIdList(List<String> contentGoodsIdList) {
this.contentGoodsIdList = contentGoodsIdList;
}
public List<ContentMaterialRelationThirdDTO> getThirdGoodsList() {
return thirdGoodsList;
}
public void setThirdGoodsList(List<ContentMaterialRelationThirdDTO> thirdGoodsList) {
this.thirdGoodsList = thirdGoodsList;
}
}
......@@ -64,4 +64,18 @@ public class PotentialCustomerQO extends BasePageInfo {
*/
private Integer hasMemberPhone;
/**
* 1 按客户搜索
* 2 按素材搜索
* @see com.gic.haoban.manage.api.enums.content.InteractRecordSearchType
*/
private Integer searchType;
/**
* 是否查询数据
* true 查询
* false 不查询
*/
private Boolean withData;
}
......@@ -2,6 +2,7 @@ package com.gic.haoban.manage.web.vo.content;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.gic.content.api.dto.additional.ContentMaterialAdditionalDTO;
import com.gic.content.api.dto.ext.ContentMaterialExt;
import org.apache.commons.lang3.StringUtils;
......@@ -47,6 +48,11 @@ public class ContentMaterialInfoVO implements Serializable {
private Integer topFlag = 0;
/**
* 是否支持下载1是0否
*/
private Integer downloadFlag;
/**
* 发布时间
*/
private Date publishTime;
......@@ -162,6 +168,11 @@ public class ContentMaterialInfoVO implements Serializable {
*/
private ContentMaterialExt ext;
/**
* 素材附件列表
*/
private List<ContentMaterialAdditionalDTO> additionalList;
public Long getContentMaterialId() {
return contentMaterialId;
......@@ -203,6 +214,14 @@ public class ContentMaterialInfoVO implements Serializable {
this.topFlag = topFlag;
}
public Integer getDownloadFlag() {
return downloadFlag;
}
public void setDownloadFlag(Integer downloadFlag) {
this.downloadFlag = downloadFlag;
}
public Date getPublishTime() {
return publishTime;
}
......@@ -395,6 +414,14 @@ public class ContentMaterialInfoVO implements Serializable {
this.ext = ext;
}
public List<ContentMaterialAdditionalDTO> getAdditionalList() {
return additionalList;
}
public void setAdditionalList(List<ContentMaterialAdditionalDTO> additionalList) {
this.additionalList = additionalList;
}
public void convertMaterialImages(String materialImageUrls, String materialThumbnailImageUrls) {
if (StringUtils.isNotBlank(materialImageUrls)) {
String[] split = StringUtils.split(materialImageUrls, ",");
......
package com.gic.haoban.manage.web.vo.content;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/8/9 3:50 PM
* @Description
* @Version
**/
@JsonIgnoreProperties(ignoreUnknown = true)
public class ContentSettingVO implements Serializable {
private static final long serialVersionUID = 4050017721050919872L;
/**
* 内容配置id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long contentSettingId;
/**
* 企业ID
*/
private String enterpriseId;
/**
* 是否开启落地页跳转商城首页 1 开启; 0 关闭
*/
private Integer mallJumpFlag;
/**
* 是否开启落地页跳转穿搭社区首页 1 开启; 0 关闭
*/
private Integer communityJumpFlag;
/**
* 页面标题
*/
private String showTitle;
/**
* 评论开关0关闭1开启
*/
private Integer commentFlag;
/**
* 评论引导文案
*/
private String commentGuide;
/**
* 分享文案
*/
private String shareCopy;
/**
* 商城类型
* 1 微商城
* 2 微盟
*/
private Integer mallShopType;
/**
* 微盟商城跳转地址 微盟商城id
*/
private String weimoJumpUrl;
/**
* 微盟图片比例
* 750:750
*/
private String weimoPicRatio;
public Long getContentSettingId() {
return contentSettingId;
}
public void setContentSettingId(Long contentSettingId) {
this.contentSettingId = contentSettingId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getMallJumpFlag() {
return mallJumpFlag;
}
public void setMallJumpFlag(Integer mallJumpFlag) {
this.mallJumpFlag = mallJumpFlag;
}
public Integer getCommunityJumpFlag() {
return communityJumpFlag;
}
public void setCommunityJumpFlag(Integer communityJumpFlag) {
this.communityJumpFlag = communityJumpFlag;
}
public String getShowTitle() {
return showTitle;
}
public void setShowTitle(String showTitle) {
this.showTitle = showTitle;
}
public Integer getCommentFlag() {
return commentFlag;
}
public void setCommentFlag(Integer commentFlag) {
this.commentFlag = commentFlag;
}
public String getCommentGuide() {
return commentGuide;
}
public void setCommentGuide(String commentGuide) {
this.commentGuide = commentGuide;
}
public String getShareCopy() {
return shareCopy;
}
public void setShareCopy(String shareCopy) {
this.shareCopy = shareCopy;
}
public Integer getMallShopType() {
return mallShopType;
}
public void setMallShopType(Integer mallShopType) {
this.mallShopType = mallShopType;
}
public String getWeimoJumpUrl() {
return weimoJumpUrl;
}
public void setWeimoJumpUrl(String weimoJumpUrl) {
this.weimoJumpUrl = weimoJumpUrl;
}
public String getWeimoPicRatio() {
return weimoPicRatio;
}
public void setWeimoPicRatio(String weimoPicRatio) {
this.weimoPicRatio = weimoPicRatio;
}
}
......@@ -72,5 +72,15 @@ public class SimpleGoodsInfoVO implements Serializable {
*/
private Integer sourceType;
/**
* 第三方商品id
*/
private String thirdGoodsId;
/**
* 商品类型0:gic 1:微盟
*/
private Integer thirdType = 0;
}
......@@ -55,6 +55,16 @@ public class ContentGoodsVO {
*/
private BigDecimal minPrice;
/**
* 第三方商品id
*/
private String thirdGoodsId;
/**
* 商品类型0:gic 1:微盟
*/
private Integer thirdType = 0;
public String getGoodsId() {
return goodsId;
}
......@@ -126,4 +136,20 @@ public class ContentGoodsVO {
public void setMinPrice(BigDecimal minPrice) {
this.minPrice = minPrice;
}
public String getThirdGoodsId() {
return thirdGoodsId;
}
public void setThirdGoodsId(String thirdGoodsId) {
this.thirdGoodsId = thirdGoodsId;
}
public Integer getThirdType() {
return thirdType;
}
public void setThirdType(Integer thirdType) {
this.thirdType = thirdType;
}
}
......@@ -98,6 +98,11 @@ public class ContentMaterialVO extends ContentMaterialConvsVO{
private Date updateTime;
/**
* 关联商品中心id列表
*/
private List<String> contentGoodsIdList;
/**
* 关联商品列表
*/
private List<ContentGoodsVO> contentGoodsList;
......@@ -271,6 +276,14 @@ public class ContentMaterialVO extends ContentMaterialConvsVO{
this.updateTime = updateTime;
}
public List<String> getContentGoodsIdList() {
return contentGoodsIdList;
}
public void setContentGoodsIdList(List<String> contentGoodsIdList) {
this.contentGoodsIdList = contentGoodsIdList;
}
public List<ContentGoodsVO> getContentGoodsList() {
return contentGoodsList;
}
......
......@@ -160,6 +160,8 @@
<dubbo:reference interface="com.gic.cloudimage.api.service.CloudVideoApiService" id="cloudVideoApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.enterprise.api.service.content.ValueAddedServicesOrderApiService" id="valueAddedServicesOrderApiService"
timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.content.api.service.ContentSettingApiService" id="contentSettingApiService"
timeout="10000" retries="0" check="false"/>
<dubbo:reference id="dataIndexApiService" interface="com.gic.enterprise.api.service.data.DataIndexApiService" timeout="10000" retries="0" check="false" />
......
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