Selaa lähdekoodia

用户行为优化1.0.5

huangzhiguo 1 vuosi sitten
vanhempi
commit
54902e1dc2

+ 20 - 0
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -392,4 +392,24 @@ public interface BaseMapper {
     List<BalanceRecordPo> findShopOrderBalanceRecord(Integer shopOrderId);
 
     Integer findShopIdByProduct(Integer couponId);
+
+    /**
+     * 商品信息
+     * @param productId
+     * @return
+     */
+    ProductInfoPo getProductInfo(@Param("productId") Integer productId);
+
+    /**
+     * 机构协销Id
+     * @param userId
+     * @return
+     */
+    CmBehaviorInfoPo getClubSpId(@Param("userId") Integer userId);
+
+    /**
+     * 保存行为记录
+     * @param behaviorInfo
+     */
+    void insertBehaviorInfo(CmBehaviorInfoPo behaviorInfo);
 }

+ 63 - 0
src/main/java/com/caimei365/order/model/po/CmBehaviorInfoPo.java

@@ -0,0 +1,63 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : hzg
+ * @date : 2024/1/19
+ */
+@Data
+public class CmBehaviorInfoPo {
+    private Integer id;
+    /**
+     * 操作对象 1 机构 2 协销 3 客服 4 系统
+     */
+    private Integer operateObject;
+    /**
+     * 机构Id
+     */
+    private Integer clubId;
+    /**
+     * 协销Id
+     */
+    private Integer spId;
+    /**
+     * 1:日常访问; 2:推送访问(站内信); 3: 推送访问(短信); 4: 推送访问(微信模板消息):
+     * 5: 下单; 6: 收藏商品; 7: 加购物车; 8: 内容库访问; 9: 咨询记录,10: 分配协销
+     */
+    private Integer type;
+    /**
+     * 页面类型
+     */
+    private String pageType;
+    /**
+     * 标签
+     */
+    private String label;
+    /**
+     * 页面路径
+     */
+    private String pagePath;
+    /**
+     * 商品Id
+     */
+    private String productId;
+    /**
+     * 子订单Id, 多个使用逗号隔开
+     */
+    private String shopOrderId;
+    /**
+     * 分配人
+     */
+    private String allocation;
+    /**
+     * 添加时间
+     */
+    private String addTime;
+    /**
+     * 删除标记 0未删除 1已删除
+     */
+    private Integer delFlag;
+}

+ 27 - 0
src/main/java/com/caimei365/order/model/po/ProductInfoPo.java

@@ -0,0 +1,27 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : hzg
+ * @date : 2024/1/19
+ */
+@Data
+public class ProductInfoPo {
+    private Integer productId;
+    /**
+     * 品牌名称
+     */
+    private String brandName;
+
+    /**
+     * 产品名称
+     */
+    public String productName;
+    /**
+     * 关联标签库字符串
+     */
+    private String  relatedLabels;
+}

+ 18 - 0
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -12,6 +12,8 @@ import com.caimei365.order.model.dto.CartDto;
 import com.caimei365.order.model.dto.InvoiceDto;
 import com.caimei365.order.model.dto.InvoiceOrganizeDto;
 import com.caimei365.order.model.po.CartPo;
+import com.caimei365.order.model.po.CmBehaviorInfoPo;
+import com.caimei365.order.model.po.ProductInfoPo;
 import com.caimei365.order.model.vo.*;
 import com.caimei365.order.service.CartClubService;
 import com.caimei365.order.service.RemoteCallService;
@@ -747,6 +749,22 @@ public class CartClubServiceImpl implements CartClubService {
             cart.setAddTime(new Date());
             cartClubMapper.insertCart(cart);
         }
+        // 行为记录
+        try {
+            // 获取商品信息
+            ProductInfoPo productInfo = baseMapper.getProductInfo(cartDto.getProductId());
+            if (null != productInfo) {
+                // 机构协销Id
+                CmBehaviorInfoPo behaviorInfo = baseMapper.getClubSpId(cartDto.getUserId());
+                behaviorInfo.setOperateObject(1);
+                behaviorInfo.setType(7);
+                behaviorInfo.setProductId(null != productInfo.getProductId() ? productInfo.getProductId().toString() : "");
+                behaviorInfo.setLabel(StringUtils.isNotBlank(productInfo.getRelatedLabels()) ? productInfo.getRelatedLabels() : "");
+                baseMapper.insertBehaviorInfo(behaviorInfo);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     /**

+ 31 - 0
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -1868,6 +1868,37 @@ public class SubmitServiceImpl implements SubmitService {
                 }
             }
         }
+        // 行为记录
+        try {
+            // 获取商品信息
+            if (null != productIds && productIds.size() > 0) {
+                List<String> labels = new ArrayList<>();
+                for (Integer productId : productIds ) {
+                    ProductInfoPo productInfo = baseMapper.getProductInfo(productId);
+                    if (null != productInfo) {
+                        if (StringUtils.isNotBlank(productInfo.getRelatedLabels())) {
+                            labels.add(productInfo.getRelatedLabels());
+                        }
+                    }
+                }
+                if (null != labels && labels.size() > 0 ) {
+                    // 机构协销Id
+                    CmBehaviorInfoPo behaviorInfo = baseMapper.getClubSpId(mainOrder.getUserId());
+                    if (0 == mainOrder.getOrderType()) {
+                        behaviorInfo.setOperateObject(1);
+                    } else {
+                        behaviorInfo.setOperateObject(2);
+                    }
+                    behaviorInfo.setType(5);
+                    behaviorInfo.setProductId(StringUtils.strip(productIds.toString(), "[]"));
+                    behaviorInfo.setShopOrderId(mainOrder.getShopOrderIds());
+                    behaviorInfo.setLabel(StringUtils.strip(labels.toString(), "[]"));
+                    baseMapper.insertBehaviorInfo(behaviorInfo);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
         /*
          * 构造返回参数
          */

+ 50 - 0
src/main/resources/mapper/BaseMapper.xml

@@ -541,4 +541,54 @@
         WHERE ccp.couponId = #{couponId}
         limit 1
     </select>
+
+    <select id="getProductInfo" resultType="com.caimei365.order.model.po.ProductInfoPo">
+        select productId, name, relatedLabels from product where productId =  #{productId}
+    </select>
+
+    <select id="getClubSpId" resultType="com.caimei365.order.model.po.CmBehaviorInfoPo">
+        select c.spId, c.clubId from club c left join user u on u.userId = c.userId where u.userId = #{userId}
+    </select>
+
+    <insert id="insertBehaviorInfo">
+        insert into cm_behavior_info(
+        operateObject,
+        clubId,
+        <if test="spId != null">
+            spId,
+        </if>
+        type,
+        <if test="pageType != null and pageType != ''">
+            pageType,
+        </if>
+        <if test="productId != null and productId != ''">
+            productId,
+        </if>
+        <if test="shopOrderId != null and shopOrderId != ''">
+            shopOrderId,
+        </if>
+        label,
+        addTime,
+        delFlag)
+        values(
+        #{operateObject},
+        #{clubId},
+        <if test="spId != null">
+            #{spId},
+        </if>
+        #{type},
+        <if test="pageType != null and pageType != ''">
+            #{pagetType},
+        </if>
+        <if test="productId != null and productId != ''">
+            #{productId},
+        </if>
+        <if test="shopOrderId != null and shopOrderId != ''">
+            #{shopOrderId},
+        </if>
+        #{label},
+        now(),
+        0
+        )
+    </insert>
 </mapper>