Răsfoiți Sursa

Merge remote-tracking branch 'origin/master'

1811872455@163.com 2 săptămâni în urmă
părinte
comite
4577f79bc1

+ 19 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/controller/CustomerAiAnalysisController.java

@@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/customer/analysis")
@@ -122,4 +123,22 @@ public class CustomerAiAnalysisController {
         }
         return Result.ok();
     }
+
+    @RequestMapping("/statistics/by-level")
+    @ApiOperation("按客户等级分类统计")
+    public Result<Object> statisticsByCustomerLevel(@RequestBody(required = false) CustomerAnalysisResultDTO dto) {
+        String analysisScene = null;
+        Integer analysisStatus = null;
+        if (dto != null) {
+            analysisScene = dto.getAnalysisScene();
+            analysisStatus = dto.getAnalysisStatus();
+        }
+        List<Map<String, Object>> statistics;
+        if (analysisScene != null || analysisStatus != null) {
+            statistics = customerAnalysisResultEntityService.getStatisticsByCustomerLevel(analysisScene, analysisStatus);
+        } else {
+            statistics = customerAnalysisResultEntityService.getStatisticsByCustomerLevel();
+        }
+        return Result.result(statistics);
+    }
 }

+ 38 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/mapper/CustomerAnalysisResultEntityMapper.java

@@ -3,7 +3,45 @@ package com.storlead.trade.mapper;
 import com.storlead.trade.entity.CustomerAnalysisResultEntity;
 import com.storlead.framework.mybatis.mapper.MyBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface CustomerAnalysisResultEntityMapper extends MyBaseMapper<CustomerAnalysisResultEntity> {
+
+    /**
+     * 按客户等级分组统计
+     * @return 每个客户等级的统计信息(等级、数量、平均潜力分、平均置信度)
+     */
+    @Select("SELECT customer_level as customerLevel, " +
+            "COUNT(*) as count, " +
+            "AVG(potential_score) as avgPotentialScore, " +
+            "AVG(confidence) as avgConfidence " +
+            "FROM customer_analysis_result " +
+            "WHERE customer_level IS NOT NULL AND is_delete = 0 " +
+            "GROUP BY customer_level " +
+            "ORDER BY customer_level")
+    List<Map<String, Object>> selectStatisticsByCustomerLevel();
+
+    /**
+     * 按客户等级分组统计(带筛选条件)
+     * @param analysisScene 分析场景
+     * @param analysisStatus 分析状态
+     * @return 每个客户等级的统计信息
+     */
+    @Select("SELECT customer_level as customerLevel, " +
+            "COUNT(*) as count, " +
+            "AVG(potential_score) as avgPotentialScore, " +
+            "AVG(confidence) as avgConfidence " +
+            "FROM customer_analysis_result " +
+            "WHERE customer_level IS NOT NULL AND is_delete = 0 " +
+            "<if test='analysisScene != null and analysisScene != &quot;&quot;'> AND analysis_scene = #{analysisScene} </if>" +
+            "<if test='analysisStatus != null'> AND analysis_status = #{analysisStatus} </if>" +
+            "GROUP BY customer_level " +
+            "ORDER BY customer_level")
+    List<Map<String, Object>> selectStatisticsByCustomerLevelWithFilter(@Param("analysisScene") String analysisScene,
+                                                                        @Param("analysisStatus") Integer analysisStatus);
 }

+ 17 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/CustomerAnalysisResultEntityService.java

@@ -3,5 +3,22 @@ package com.storlead.trade.service;
 import com.storlead.trade.entity.CustomerAnalysisResultEntity;
 import com.storlead.framework.mybatis.service.MyBaseService;
 
+import java.util.List;
+import java.util.Map;
+
 public interface CustomerAnalysisResultEntityService extends MyBaseService<CustomerAnalysisResultEntity> {
+
+    /**
+     * 按客户等级分组统计
+     * @return 每个客户等级的统计信息
+     */
+    List<Map<String, Object>> getStatisticsByCustomerLevel();
+
+    /**
+     * 按客户等级分组统计(带筛选条件)
+     * @param analysisScene 分析场景
+     * @param analysisStatus 分析状态
+     * @return 每个客户等级的统计信息
+     */
+    List<Map<String, Object>> getStatisticsByCustomerLevel(String analysisScene, Integer analysisStatus);
 }

+ 13 - 0
java/storlead-sasa/storlead-trade/src/main/java/com/storlead/trade/service/impl/CustomerAnalysisResultEntityServiceImpl.java

@@ -6,8 +6,21 @@ import com.storlead.trade.service.CustomerAnalysisResultEntityService;
 import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+import java.util.Map;
+
 @Service
 public class CustomerAnalysisResultEntityServiceImpl
         extends MyBaseServiceImpl<CustomerAnalysisResultEntityMapper, CustomerAnalysisResultEntity>
         implements CustomerAnalysisResultEntityService {
+
+    @Override
+    public List<Map<String, Object>> getStatisticsByCustomerLevel() {
+        return baseMapper.selectStatisticsByCustomerLevel();
+    }
+
+    @Override
+    public List<Map<String, Object>> getStatisticsByCustomerLevel(String analysisScene, Integer analysisStatus) {
+        return baseMapper.selectStatisticsByCustomerLevelWithFilter(analysisScene, analysisStatus);
+    }
 }