Commit bbd43db4 by songyinghui

feature: 微盟订单

parent f075a34a
......@@ -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
......@@ -40,6 +42,12 @@ public class MaterialMemberEOrderPojo extends BinlogBasePojo {
private String channelCode;
/**
* 下单时间
*/
@JSONField(name = "order_create_time")
private Date orderTime;
/**
* 表名
*/
private String tableName;
......@@ -99,4 +107,12 @@ public class MaterialMemberEOrderPojo extends BinlogBasePojo {
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
......@@ -39,6 +41,12 @@ public class MaterialMemberGicOrderPojo extends BinlogBasePojo {
private String channelCode;
/**
* 下单时间
*/
@JSONField(name = "order_time")
private Date orderTime;
/**
* 表名
*/
private String tableName;
......@@ -98,4 +106,12 @@ public class MaterialMemberGicOrderPojo extends BinlogBasePojo {
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
......@@ -34,10 +35,21 @@ public class MemberOrderBo implements Serializable {
private String channelCode;
/**
* 下单时间
*/
private Date orderTime;
/**
* 表名
*/
private String tableName;
/***
* 消费次数
*/
private Integer times;
public Integer getOrderStatus() {
return orderStatus;
}
......@@ -93,4 +105,20 @@ public class MemberOrderBo implements Serializable {
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 Integer contentMaterialId;
/**
* 分享导购id
*/
private String shareClerkId;
/**
* 分享门店id
*/
private String shareStoreId;
private String createTime;
private String updateTime;
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 Integer getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Integer 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;
}
}
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.commons.util.DataApiUtils;
import com.gic.commons.util.DateUtil;
import com.gic.haoban.manage.api.enums.content.MaterialReportType;
import com.gic.haoban.manage.service.util.DataTargetHttpUtils;
import lombok.AllArgsConstructor;
......@@ -12,12 +12,14 @@ 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.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;
......@@ -64,6 +66,13 @@ public class MaterialDataAdaptor {
}
@Data
@AllArgsConstructor
public static class MaterialBizInfo {
private String clerkId;
private String bizId;
}
/**
* 查询导购/店长的数据
* @param enterpriseId
......@@ -170,4 +179,38 @@ 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"));
}catch (Exception ex) {
log.info("查询会员素材信息异常 {}", params.toJSONString(), ex);
}
return null;
}
}
......@@ -10,11 +10,13 @@ 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;
......@@ -26,6 +28,8 @@ 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
......@@ -41,6 +45,8 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
OrderInfoOutApiService orderInfoOutApiService;
@Autowired
InteractRecordMessageService interactRecordMessageService;
@Autowired
private MaterialDataAdaptor materialDataAdaptor;
......@@ -168,10 +174,35 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
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);
// todo 根据会员商品信息查询数据组 获取导购id、素材id
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("发送微盟订单处理消息 {}", "dealweimoOrder");
/**
* @see com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService#dealWeimoOrder(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("dealWeimoOrder", 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());
......
......@@ -307,16 +307,20 @@ public class KafkaMessageServiceImpl implements MessageListener<String, GicRecor
private void dealMemberOrder(MemberOrderBo memberOrderBo) {
logger.info("会员订单数据 {}", JSON.toJSONString(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("发送微盟订单处理消息 {}", "dealweimoOrder");
/**
* @see com.gic.haoban.manage.api.service.content.MallOrderStatusChangeApiService#dealWeimoOrder(String)
*/
GICMQClientUtil.getClientInstance().sendMessage("dealweimoOrder", JSON.toJSONString(memberOrderBo));
GICMQClientUtil.getClientInstance().sendMessage("dealWeimoOrder", JSON.toJSONString(memberOrderBo));
}catch (Exception ex) {
logger.info("处理会员订单异常 ", ex);
}
......
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