Explorar o código

用户行为优化1.0.2

huangzhiguo hai 1 ano
pai
achega
1644bad8c6

+ 18 - 0
src/main/java/com/caimei365/tools/mapper/CmBehaviorRecordMapper.java

@@ -201,6 +201,24 @@ public interface CmBehaviorRecordMapper {
      */
     List<CmBehaviorRecordPo> selDataList(@Param("accessDate") String accessDate);
 
+    /**
+     * 获取该用户该天的标签
+     * @param ip
+     * @param accessDate
+     * @param userId
+     * @return
+     */
+    List<String> getBehaviorPageLabel(@Param("ip") String ip, @Param("accessDate") String accessDate, @Param("userId") String userId);
+
+    /**
+     * 获取该用户该天的浏览页面 - 页面
+     * @param ip
+     * @param accessDate
+     * @param userId
+     * @return
+     */
+    List<Integer> getBehaviorPageType(@Param("ip") String ip, @Param("accessDate") String accessDate, @Param("userId") String userId);
+
     /**
      * 将今日数据存储到今日数据表
      * @param cmBehaviorRecordPo 参数

+ 16 - 3
src/main/java/com/caimei365/tools/mapper/CmOrganValueSystemMapper.java

@@ -3,6 +3,7 @@ package com.caimei365.tools.mapper;
 import com.caimei365.tools.model.po.CmOrganValueSystemPo;
 import com.caimei365.tools.model.po.CmUserPo;
 import com.caimei365.tools.model.po.UserOrganPo;
+import com.caimei365.tools.model.po.cmOrganActiveSystemPo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -100,17 +101,29 @@ public interface CmOrganValueSystemMapper {
    List<UserOrganPo> getBehaviorNumber(@Param("userId") Integer userId);
 
     /**
-     * 修改数据
+     * 修改用户价值数据
      */
     void updateOrgan();
+
+    /**
+     * 修改用户活跃数据
+     */
+    void updateOrganActive();
+
+    /**
+     * 添加用户活跃
+     * @param cmOrganActiveSystemPo
+     */
+    void insertOrganActive(cmOrganActiveSystemPo cmOrganActiveSystemPo);
+
     /**
-     * 批量插入
+     * 添加用户价值
      * @param organList
      */
     void organBatch(CmOrganValueSystemPo organList);
 
     /**
-     * 修改用户活跃状态
+     * 修改用户价值
      * @param organList
      */
     void updateOrganBatch(CmOrganValueSystemPo organList);

+ 8 - 0
src/main/java/com/caimei365/tools/model/po/CmBehaviorRecordPo.java

@@ -167,6 +167,14 @@ public class CmBehaviorRecordPo {
      * 标签
      */
     private String label;
+    /**
+     * 访问页面标签 -- 所有
+     */
+    private String pageLabels;
+    /**
+     * 访问页面类型 -- 所有
+     */
+    private String pageTypes;
     /**
      * 用户注册IP
      */

+ 4 - 8
src/main/java/com/caimei365/tools/model/po/CmOrganValueSystemPo.java

@@ -18,18 +18,10 @@ public class CmOrganValueSystemPo {
      * // 用户ID
      */
     private Integer userId;
-    /**
-     * 活跃状态
-     */
-    private String activeState;
     /**
      * 客户价值
      */
     private String customerValue;
-    /**
-     * 活跃状态 0:活跃、1:不活跃
-     */
-    private Integer activeStatus;
     /**
      * 客户价值 0:高价值客户、1:一般价值客户、2:潜在价值客户、3:低价值客户
      */
@@ -38,6 +30,10 @@ public class CmOrganValueSystemPo {
      * 阶段:0本阶段 1上阶段 2其他阶段
      */
     private Integer stage;
+    /**
+     * 添加日期
+     */
+    private String addTime;
     /**
      * 是否启用:0禁用状态,1启用状态(本阶段启用,其他阶段禁用)
      */

+ 39 - 0
src/main/java/com/caimei365/tools/model/po/cmOrganActiveSystemPo.java

@@ -0,0 +1,39 @@
+package com.caimei365.tools.model.po;
+
+import lombok.Data;
+
+/**
+ * Description
+ *
+ * @author : hzg
+ * @date : 2023/11/27
+ */
+@Data
+public class cmOrganActiveSystemPo {
+
+    private Integer id;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 活跃状态
+     */
+    private String activeState;
+    /**
+     * 活跃状态 0:活跃、1:不活跃
+     */
+    private Integer activeStatus;
+    /**
+     * 阶段:0 本阶段  1 上阶段 2其他阶段
+     */
+    private Integer stage;
+    /**
+     * 添加时间
+     */
+    private String addTime;
+    /**
+     * 是否启用:0禁用状态,1启用状态(本阶段启用,其他阶段禁用)
+     */
+    private Integer delType;
+}

+ 12 - 0
src/main/java/com/caimei365/tools/service/impl/CmBehaviorRecordServiceImpl.java

@@ -509,6 +509,12 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
             }
             data.setLabel(StringUtils.strip(item.toString(), "[]"));
             data.setRelevanceShop(StringUtils.strip(shopNames.toString(), "[]"));
+            // 获取该用户该天页面标签
+            List<String> behaviorPageLabel = recordMapper.getBehaviorPageLabel(data.getIP(), data.getAccessDate(), data.getUserId());
+            data.setPageLabels(StringUtils.strip(behaviorPageLabel.toString(), "[]"));
+            // 获取该用户该天页面类型
+            List<Integer> behaviorPageType = recordMapper.getBehaviorPageType(data.getIP(), data.getAccessDate(), data.getUserId());
+            data.setPageTypes(StringUtils.strip(behaviorPageType.toString(), "[]"));
             // 数据插入
             recordMapper.insertYesterdayList(data);
         }
@@ -578,6 +584,12 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
             }
             data.setLabel(StringUtils.strip(item.toString(), "[]"));
             data.setRelevanceShop(StringUtils.strip(shopNames.toString(), "[]"));
+            // 获取该用户该天页面标签
+            List<String> behaviorPageLabel = recordMapper.getBehaviorPageLabel(data.getIP(), data.getAccessDate(), data.getUserId());
+            data.setPageLabels(StringUtils.strip(behaviorPageLabel.toString(), "[]"));
+            // 获取该用户该天页面类型
+            List<Integer> behaviorPageType = recordMapper.getBehaviorPageType(data.getIP(), data.getAccessDate(), data.getUserId());
+            data.setPageTypes(StringUtils.strip(behaviorPageType.toString(), "[]"));
             recordMapper.inBehaviorToday(data);
             log.info("====今日用户行为列表数据已生成====");
         }

+ 15 - 29
src/main/java/com/caimei365/tools/service/impl/CmOrganValueSystemServiceImpl.java

@@ -4,13 +4,16 @@ import com.caimei365.tools.mapper.CmOrganValueSystemMapper;
 import com.caimei365.tools.model.po.CmOrganValueSystemPo;
 import com.caimei365.tools.model.po.CmUserPo;
 import com.caimei365.tools.model.po.UserOrganPo;
+import com.caimei365.tools.model.po.cmOrganActiveSystemPo;
 import com.caimei365.tools.service.CmOrganValueSystemService;
 import lombok.extern.java.Log;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -32,10 +35,6 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
      */
     @Override
     public void insertOrgan() {
-
-
-        // 已添加用户活跃的的机构
-        List<CmOrganValueSystemPo> organList = cmOrganValueSystemMapper.getOrganUserId();
         // 用户信息
         List<CmUserPo> userList = cmOrganValueSystemMapper.getClubUserId();
         // 用户的登录时间
@@ -45,10 +44,10 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
         // 机构半年内子订单数
         List<UserOrganPo> clubShopOrder = cmOrganValueSystemMapper.getClubShopOrder();
 
+        // 修改用户活跃 -- 前一天设置不可用,历史数据
+        cmOrganValueSystemMapper.updateOrganActive();
         log.info("用户活跃状态--------------------------------》");
         for (CmUserPo user : userList) {
-            // 用户上一次数据
-            List<CmOrganValueSystemPo> organValueList = organList.stream().filter(organ -> organ.getUserId().equals(user.getUserID())).collect(Collectors.toList());
             // 登录时间
             List<UserOrganPo> loginTime = clubLoginTime.stream().filter(login -> login.getUserId().equals(user.getUserID())).collect(Collectors.toList());
             // 咨询记录
@@ -56,7 +55,7 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
             // 子订单数
             List<UserOrganPo> shopOrder = clubShopOrder.stream().filter(shop -> shop.getUserId().equals(user.getUserID())).collect(Collectors.toList());
 
-            CmOrganValueSystemPo systemPo = new CmOrganValueSystemPo();
+            cmOrganActiveSystemPo systemPo = new cmOrganActiveSystemPo();
             systemPo.setStage(0);
             systemPo.setDelType(1);
             if ((null != loginTime &&  loginTime.size() > 0)|| (null != shopOrder &&  shopOrder.size() > 0)) {
@@ -77,15 +76,9 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
                 systemPo.setActiveState("不活跃用户");
                 systemPo.setActiveStatus(1);
             }
-            if (null != organValueList && organValueList.size() > 0) {
-                // 修改
-                systemPo.setOrganId(organValueList.get(0).getOrganId());
-                cmOrganValueSystemMapper.updateOrganBatch(systemPo);
-            } else {
-                // 添加
-                systemPo.setUserId(user.getUserID());
-                cmOrganValueSystemMapper.organBatch(systemPo);
-            }
+            // 添加
+            systemPo.setUserId(user.getUserID());
+            cmOrganValueSystemMapper.insertOrganActive(systemPo);
         }
     }
 
@@ -95,13 +88,12 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
     @Override
     public void insertcustomer() {
         log.info("用户价值--------------------------------》");
-        // 已添加用户活跃的的机构
-        List<CmOrganValueSystemPo> organList = cmOrganValueSystemMapper.getOrganUserId();
+        // 修改上阶段数据
+        cmOrganValueSystemMapper.updateOrgan();
         // 用户信息
         List<CmUserPo> userList = cmOrganValueSystemMapper.getClubUserId();
         for (CmUserPo user : userList) {
-            // 用户上一次数据
-            List<CmOrganValueSystemPo> organValueList = organList.stream().filter(organ -> organ.getUserId().equals(user.getUserID())).collect(Collectors.toList());
+
             // 用户应支付金额
             UserOrganPo userAmount = cmOrganValueSystemMapper.getUserAmount(user.getUserID());
             // 用户访问数据
@@ -131,15 +123,9 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
                 systemPo.setCustomerValue("低价值客户");
                 systemPo.setCustomerStatus(3);
             }
-            if (null != organValueList && organValueList.size() > 0) {
-                // 修改
-                systemPo.setOrganId(organValueList.get(0).getOrganId());
-                cmOrganValueSystemMapper.updateOrganBatch(systemPo);
-            } else {
-                // 添加
-                systemPo.setUserId(user.getUserID());
-                cmOrganValueSystemMapper.organBatch(systemPo);
-            }
+            // 添加
+            systemPo.setUserId(user.getUserID());
+            cmOrganValueSystemMapper.organBatch(systemPo);
         }
     }
 }

+ 1 - 1
src/main/java/com/caimei365/tools/service/impl/MessageServiceImpl.java

@@ -48,7 +48,7 @@ public class MessageServiceImpl implements MessageService {
         for (ServiceproviderPo serviceprovider: serviceInfo) {
             List<ClubPo> unActiveClub = messageMapper.getUnActiveClub(serviceprovider.getServiceProviderId());
             String clubName = "";
-            if (null != unActiveClub) {
+            if (null != unActiveClub && unActiveClub.size() > 0) {
                 for (ClubPo club : unActiveClub) {
                     if (StringUtils.isNotBlank(club.getName())) {
                         clubName += club.getName()+"  ";

+ 20 - 0
src/main/resources/mapper/CmBehaviorRecordMapper.xml

@@ -353,6 +353,8 @@
               region,
               relevanceShop,
               label,
+              pageLabels,
+              pageTypes,
               addTime,
               touristId,
               delFlag
@@ -376,6 +378,8 @@
                    #{region},
                    #{relevanceShop},
                    #{label},
+                   #{pageLabels},
+                   #{pageTypes},
                    #{addTime},
                    #{touristId},
                    '0'
@@ -440,6 +444,18 @@
         where cbs.accessDate = #{accessDate}
         order by cbs.accessTime
     </select>
+
+    <select id="getBehaviorPageLabel" resultType="java.lang.String">
+        select pageLabel
+        from cm_behavior_record
+        where ip = #{ip} and accessDate = #{accessDate} and userId = #{userId}
+    </select>
+
+    <select id="getBehaviorPageType" resultType="java.lang.Integer">
+        select pageType
+        from cm_behavior_record
+        where ip = #{ip} and accessDate = #{accessDate} and userId = #{userId}
+    </select>
     <insert id="inBehaviorToday">
         INSERT INTO cm_behavior_record_today (
                 id,
@@ -462,6 +478,8 @@
                 region,
                 relevanceShop,
                 label,
+                pageLabels,
+                pageTypes,
                 addTime
             ) values (
                 #{recordID},
@@ -484,6 +502,8 @@
                 #{region},
                 #{relevanceShop},
                 #{label},
+                #{pageLabels},
+                #{pageTypes},
                 #{addTime}
             )
     </insert>

+ 17 - 8
src/main/resources/mapper/CmOrganValueSystemMapper.xml

@@ -306,9 +306,24 @@
         WHERE organID IS NOT NULL
     </update>
 
+    <update id="updateOrganActive">
+        UPDATE cm_organ_active_system
+        SET stage = ( CASE stage
+                          WHEN 0 THEN 1
+                          WHEN 1 THEN 2
+            END), delType = 0
+        WHERE id IS NOT NULL
+    </update>
+
+
+    <insert id="insertOrganActive">
+        insert into cm_organ_active_system (userID, activeState, activeStatus, stage, addTime, delType)
+        values (#{userId}, #{activeState}, #{activeStatus}, #{stage}, date_format(now(), '%Y-%m-%d'), #{delType})
+    </insert>
+
     <insert id="organBatch" parameterType="java.util.List">
-        insert into cm_organ_value_system (userID, activeState, customerValue, activeStatus, customerStatus, stage, delType)
-        values (#{userId},#{activeState},#{customerValue},#{activeStatus}, #{customerStatus}, #{stage},#{delType})
+        insert into cm_organ_value_system (userID, customerValue, customerStatus, stage, addTime, delType)
+        values (#{userId}, #{customerValue}, #{customerStatus}, #{stage}, date_format(now(), '%Y-%m-%d'), #{delType})
     </insert>
 
     <update id="updateOrganBatch">
@@ -316,15 +331,9 @@
         set <if test="userId != null">
                 userID = #{userId},
             </if>
-            <if test="activeState != null and activeState != ''">
-                activeState = #{activeState},
-            </if>
             <if test="customerValue != null and customerValue != ''">
                 customerValue = #{customerValue},
             </if>
-            <if test="activeStatus != null">
-                activeStatus = #{activeStatus},
-            </if>
             <if test="customerStatus != null">
                 customerStatus = #{customerStatus},
             </if>

+ 6 - 5
src/main/resources/mapper/MessageMapper.xml

@@ -11,11 +11,12 @@
     </select>
 
     <select id="getUnActiveClub" resultType="com.caimei365.tools.model.po.ClubPo">
-        SELECT c.name as name, c.linkMan as linkMan FROM cm_organ_value_system covs
-              LEFT JOIN club c ON c.userID = covs.userId
-              LEFT JOIN serviceprovider ser ON c.spId = ser.serviceProviderID
-        WHERE covs.delType = 1 AND covs.stage = 0 AND covs.activeStatus = 1
+        SELECT c.name AS NAME, c.linkMan AS linkMan
+        FROM cm_organ_active_system coas
+                 LEFT JOIN club c ON c.userID = coas.userId
+                 LEFT JOIN serviceprovider ser ON c.spId = ser.serviceProviderID
+        WHERE coas.delType = 1 AND coas.stage = 0 AND coas.activeStatus = 1
           AND ser.serviceProviderID = #{serviceProviderId}
-        GROUP BY covs.userID
+        GROUP BY coas.userID
     </select>
 </mapper>