huangzhiguo 1 سال پیش
والد
کامیت
9303b3faac

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

@@ -146,7 +146,7 @@ public interface CmBehaviorRecordMapper {
      * @param accessDate
      * @return
      */
-    Map<String, Integer> getCuxOpen(@Param("accessDate") String accessDate);
+    List<CmBehaviorRecordPo> getCuxOpen(@Param("accessDate") String accessDate);
 
     /**
      * 查询openId 对应的用户
@@ -211,7 +211,7 @@ public interface CmBehaviorRecordMapper {
      * @param accessDate
      * @return
      */
-    List<CmBehaviorRecordPo> getUserAndBehavior(@Param("accessdate") String accessDate);
+    List<CmBehaviorRecordPo> getUserAndBehavior(@Param("accessDate") String accessDate);
 
     /**
      * 合并游客与用户相同ip的访问数据

+ 16 - 3
src/main/java/com/caimei365/tools/service/impl/CmBehaviorRecordServiceImpl.java

@@ -23,6 +23,7 @@ import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * Description
@@ -45,6 +46,17 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
             log.info("用户行为记录=================》" + ipSavePo.getIp());
             CmBehaviorRecordPo cmBehaviorRecordPo = new CmBehaviorRecordPo();
             String region = "";
+            String[] splitArray = ipSavePo.getIp().split(",");
+            for (String split : splitArray) {
+                Matcher matcher = pattern.matcher(split);
+                if (!matcher.find()) {
+                    cmBehaviorRecordPo.setIP(split);
+                }
+            }
+            Matcher matcher = pattern.matcher(ipSavePo.getIp());
+            if (matcher.find()) {
+                cmBehaviorRecordPo.setIP(splitArray[1]);
+            }
             cmBehaviorRecordPo.setIP(ipSavePo.getIp());
             if (StringUtils.isNotBlank(ipSavePo.getUserId())) {
                 cmBehaviorRecordPo.setUserId(ipSavePo.getUserId());
@@ -478,15 +490,16 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         List<String> openIdList = recordMapper.getRecodeOpenId(format);
         if (null != openIdList && openIdList.size() > 0) {
             // 程序中每个openid有多个用户
-            Map<String, Integer> cuxOpen = recordMapper.getCuxOpen(format);
+            List<CmBehaviorRecordPo> cuxOpen = recordMapper.getCuxOpen(format);
             // 查询小程序数据
             List<CmBehaviorRecordPo> behaviorList = recordMapper.getRecordOpenIdInfo(format, openIdList);
             for (String openId : openIdList) {
                 // 用户个数
-                num = null == cuxOpen.get(openId) ? 0 : cuxOpen.get(openId);
+                CmBehaviorRecordPo recordPo = cuxOpen.stream().filter(open -> openId.equals(open.getOpenId())).collect(Collectors.toList()).get(0);
+                num = null == recordPo.getCount() ? 0 : recordPo.getCount();
                 // 获取该openId下访问的用户id
                 List<Integer> userIdAttribute = recordMapper.getUserIdAttribute(format, openId, null);
-                boolean userBean = userBean = userIdAttribute.contains(0);
+                boolean userBean = userIdAttribute.contains(0);
 
                 // 该openId下只有两个身份 游客-机构、游客-供应商
                 if (num == 2 && userBean) {

+ 4 - 4
src/main/resources/mapper/CmBehaviorRecordMapper.xml

@@ -222,8 +222,8 @@
         SELECT openId as count FROM cm_behavior_record where accessDate = #{accessDate} and accessClient = 1 GROUP BY openId
     </select>
 
-    <select id="getCuxOpen" resultType="java.util.Map">
-        SELECT openId, COUNT(DISTINCT userId)  FROM cm_behavior_record WHERE accessDate = #{accessDate} AND accessClient = 1 GROUP BY openId
+    <select id="getCuxOpen" resultType="com.caimei365.tools.model.po.CmBehaviorRecordPo">
+        SELECT openId, COUNT(DISTINCT userId) as count FROM cm_behavior_record WHERE accessDate = #{accessDate} AND accessClient = 1 AND (openId IS NOT NULL AND openId != '') GROUP BY openId
     </select>
 
     <select id="getRecordOpenIdInfo" resultType="com.caimei365.tools.model.po.CmBehaviorRecordPo">
@@ -303,8 +303,8 @@
                cbr.accessDate
         FROM USER u
         LEFT JOIN cm_behavior_record cbr ON u.registerIP = cbr.IP
-        WHERE cbr.accessdate = '2023-12-27'
-          AND u.registerTime LIKE '%2023-12-27%'
+        WHERE cbr.accessdate = #{accessDate}
+          AND u.registerTime LIKE concat('%',#{accessDate},'%')
           AND cbr.userId = 0
     </select>