Bladeren bron

用户行为优化1.0.2

huangzhiguo 1 jaar geleden
bovenliggende
commit
46cad35eb6

+ 7 - 7
src/main/java/com/caimei365/user/controller/SellerApi.java

@@ -106,8 +106,8 @@ public class SellerApi {
                                                       String customerValue,
                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                       @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        if (null == spId || null == status || null == type) {
-            return ResponseJson.error("spId 或 status 或 type 参数不全!", null);
+        if (null == spId || null == type) {
+            return ResponseJson.error("spId 或 type 参数不全!", null);
         }
         return sellerService.getClubList(spId, status, type, name, userIdentity, groupServiceId, startTime, endTime, activeState, customerValue, pageNum, pageSize);
     }
@@ -130,7 +130,7 @@ public class SellerApi {
      *
      * @param spId           协销Id
      * @param status         机构状态
-     * @param type           1.我的机构2.组员机构3.待分配机构
+     * @param type           1.我的机构2.组员机构3.待分配机构 4 活跃机构 5 不活跃机构
      * @param name           机构名字关键字(搜索用)
      */
     @ApiOperation("机构活跃分析列表")
@@ -142,8 +142,8 @@ public class SellerApi {
                                                                          Integer userIdentity,
                                                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                          @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
-        if (null == spId || null == status || null == type) {
-            return ResponseJson.error("spId 或 status 或 type 参数不全!", null);
+        if (null == spId || null == type) {
+            return ResponseJson.error("spId 或 type 参数不全!", null);
         }
         if (4 != type && 5 != type ) {
             return ResponseJson.error("type 参数错误!", null);
@@ -182,13 +182,13 @@ public class SellerApi {
      * @return
      */
     @GetMapping("/getClubAllRemark")
-    public ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId,
+    public ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, String search,
                                                                   @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                   @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == clubId) {
             return ResponseJson.error(-1, "机构id不能为空", null);
         }
-        return sellerService.getClubAllRemark(clubId, pageNum, pageSize);
+        return sellerService.getClubAllRemark(clubId, search, pageNum, pageSize);
     }
 
     @ApiOperation("组员筛选侧边栏")

+ 2 - 3
src/main/java/com/caimei365/user/mapper/SellerMapper.java

@@ -77,7 +77,6 @@ public interface SellerMapper {
      * @param endTime
      * @param activeState
      * @param customerValue
-     * @param clubType
      * @param serviceIds
      * @return
      */
@@ -99,7 +98,7 @@ public interface SellerMapper {
      * @param clubId
      * @return
      */
-    List<RemarksVo> getClubAllRemark(@Param("clubId") Integer clubId);
+    List<RemarksVo> getClubAllRemark(@Param("clubId") Integer clubId, @Param("search") String search);
 
     /***
      * 功能描述: 机构活跃分析用户登录数量
@@ -108,7 +107,7 @@ public interface SellerMapper {
      * @param spId
      * @return [spID]
      */
-    Map<String, Object> findSpUserLoginSum(@Param("spId") Integer spId);
+    List<Map<String, Object>> findSpUserLoginSum(@Param("spId") Integer spId);
 
     /**
      * 协销下填写过咨询记录的机构

+ 4 - 1
src/main/java/com/caimei365/user/model/vo/RemarksVo.java

@@ -170,6 +170,9 @@ public class RemarksVo implements Serializable {
      * 静态标签
      */
     private String stateKeyword;
-
+    /**
+     * 关键词列表
+     */
+    private List<Map<String,String>> remarkLabel;
 
 }

+ 1 - 1
src/main/java/com/caimei365/user/service/SellerService.java

@@ -58,7 +58,7 @@ public interface SellerService {
      * @param clubId
      * @return
      */
-    ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, Integer pageNum, Integer pageSize);
+    ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, String search, Integer pageNum, Integer pageSize);
     /**
      * 功能描述: 机构活跃分析比例
      * @auther: Kaick

+ 68 - 11
src/main/java/com/caimei365/user/service/impl/SellerServiceImpl.java

@@ -206,9 +206,59 @@ public class SellerServiceImpl implements SellerService {
      * @return
      */
     @Override
-    public ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, Integer pageNum, Integer pageSize) {
+    public ResponseJson<PaginationVo<RemarksVo>> getClubAllRemark(Integer clubId, String search, Integer pageNum, Integer pageSize) {
         PageHelper.startPage(pageNum, pageSize);
-        List<RemarksVo> clubAllRemark = sellerMapper.getClubAllRemark(clubId);
+        List<RemarksVo> clubAllRemark = sellerMapper.getClubAllRemark(clubId, search);
+
+        clubAllRemark.forEach( remark -> {
+            // 标签集合
+            List<Map<String, String>> labelMap = new ArrayList<>();
+            Map<String, String> map;
+            // 备注
+            String label = remark.getRemarks();
+            if (label.contains(",")) {
+                String[] split = label.split(",");
+                for (String str : split) {
+                    map = new HashMap<>();
+                    map.put("label", str);
+                    labelMap.add(map);
+                }
+            } else {
+                map = new HashMap<>();
+                map.put("label", label);
+                labelMap.add(map);
+            }
+            // 动态标签
+            String trend = remark.getTrendsKeyword();
+            if (trend.contains(",")) {
+                String[] split = trend.split(",");
+                for (String str : split) {
+                    map = new HashMap<>();
+                    map.put("label", str);
+                    labelMap.add(map);
+                }
+            } else {
+                map = new HashMap<>();
+                map.put("label", trend);
+                labelMap.add(map);
+            }
+            // 静态标签
+            String state = remark.getStateKeyword();
+            if (state.contains(",")) {
+                String[] split = state.split(",");
+                for (String str : split) {
+                    map = new HashMap<>();
+                    map.put("label", str);
+                    labelMap.add(map);
+                }
+            } else {
+                map = new HashMap<>();
+                map.put("label", state);
+                labelMap.add(map);
+            }
+            remark.setRemarkLabel(labelMap);
+        });
+
         PaginationVo<RemarksVo> page = new PaginationVo<>(clubAllRemark);
         return ResponseJson.success(page);
     }
@@ -225,27 +275,34 @@ public class SellerServiceImpl implements SellerService {
     public ResponseJson<Map<String, Object>> getLivelyClub(Integer serviceProviderId) {
         Map<String, Object> map = new HashMap<>();
         // 该协销下活跃用户数据
-        Map<String, Object> spUserLoginSum = sellerMapper.findSpUserLoginSum(serviceProviderId);
+        List<Map<String, Object>> spUserLoginSum = sellerMapper.findSpUserLoginSum(serviceProviderId);
         if (null != spUserLoginSum) {
             // 活跃机构数
-            Integer activeNumber = Integer.valueOf(spUserLoginSum.get("active").toString());
+            Integer activeNumber = 0;
             // 不活跃机构数
-            Integer unActiveNumber = Integer.valueOf(spUserLoginSum.get("unActive").toString());
+            Integer unActiveNumber = 0;
             // 总数
-            Integer total = activeNumber + unActiveNumber;
-
+            Integer total = 0;
             ArrayList<PortraitMap> portraitMap = new ArrayList<>();
+            for (Map<String, Object> objectMap : spUserLoginSum) {
+                if (objectMap.get("activeStatus").equals("active")) {
+                    activeNumber = Integer.valueOf(objectMap.get("number").toString());
+                } else {
+                    unActiveNumber = Integer.valueOf(objectMap.get("number").toString());
+                }
+            }
+            total = activeNumber + unActiveNumber;
             // 机构活跃
             PortraitMap portrait = new PortraitMap();
             String per = MathUtil.div(activeNumber, total, 2).toString();
-            portrait.setName("活跃机构" + per + "% " + activeNumber + "个");
+            portrait.setName("活跃机构");
             portrait.setValue(activeNumber);
             portrait.setPer(per);
             portraitMap.add(portrait);
             // 机构不活跃
             portrait = new PortraitMap();
             per = MathUtil.div(unActiveNumber, total, 2).toString();
-            portrait.setName("不活跃机构  " + per + "%  " + unActiveNumber + "个");
+            portrait.setName("不活跃机构");
             portrait.setValue(unActiveNumber);
             portrait.setPer(per);
             portraitMap.add(portrait);
@@ -263,14 +320,14 @@ public class SellerServiceImpl implements SellerService {
             ArrayList<PortraitMap> portraitMap = new ArrayList<>();
             PortraitMap portrait = new PortraitMap();
             String per = MathUtil.div(isHaveClub, allclub, 2).toString();
-            portrait.setName("已填写机构  " + per + "%  " + isHaveClub + "个");
+            portrait.setName("已填写机构");
             portrait.setValue(isHaveClub);
             portrait.setPer(per);
             portraitMap.add(portrait);
             // 机构不活跃
             portrait = new PortraitMap();
             per = MathUtil.div(number, allclub, 2).toString();
-            portrait.setName("未填写机构  " + per + "%  " + number + "个");
+            portrait.setName("未填写机构");
             portrait.setValue(number);
             portrait.setPer(per);
             portraitMap.add(portrait);

+ 2 - 2
src/main/resources/mapper/ClubMapper.xml

@@ -529,8 +529,8 @@
     </select>
 
     <insert id="insertLabel">
-        insert into cm_keyword_info(fromSearch, serviceProviderId, keyword, linkageStatus, dynamicStatus, addTime)
-        values (4, #{serviceProviderId}, #{keyword}, 0, #{dynamicStatus}, now())
+        insert into cm_keyword_info(fromSearch, serviceProviderId, keyword, linkageStatus, dynamicStatus, addTime, delFlag)
+        values (4, #{serviceProviderId}, #{keyword}, 0, #{dynamicStatus}, now(), 1)
     </insert>
 
 

+ 48 - 76
src/main/resources/mapper/SellerMapper.xml

@@ -135,7 +135,7 @@
         from club c
         left join user u on c.userID = u.userID
         LEFT JOIN record_link r ON r.`clubId`=c.`clubID`
-        LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
+        LEFT JOIN (SELECT userId, activeStatus, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
         LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
         LEFT JOIN cm_provider_record cpr ON cpr.spID = sp.serviceProviderID and cpr.clubId = c.clubId
@@ -155,58 +155,10 @@
             AND c.spId=1342
         </if>
         <if test="4 == type">
-            c.spID = #{serviceProviderId}
-            AND sp.status = 90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
-            AND (u.loginTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) OR c.clubId in (select a.clubId
-            FROM ((
-            select
-            c.clubId,ccr.addTime AS time,c.spID
-            FROM club c
-            LEFT JOIN user u ON u.userID = c.userID
-            LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
-            LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-            where c.status=90 and sp.status=90
-            and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            GROUP BY c.clubId
-            )UNION(
-            select c.clubId,cr.orderTime AS time,c.spID
-            FROM club c
-            LEFT JOIN user u ON u.userID = c.userID
-            LEFT JOIN cm_order cr ON cr.clubId = c.clubId
-            LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-            where c.status=90 and sp.status=90
-            and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            GROUP BY c.clubId
-            )) a where a.time is not null
-            and  a.spID=#{serviceProviderId}
-            GROUP BY a.clubId))
+            coas.activeStatus = 0
         </if>
         <if test="5 == type">
-            c.spID = #{serviceProviderId}
-            AND sp.status = 90 and (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4
-            AND (u.loginTime <![CDATA[ < ]]> DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH) or u.loginTime is null)and c.clubId not in (select a.clubId
-            FROM ((
-            select
-            c.clubId,ccr.addTime AS time,c.spID
-            FROM club c
-            LEFT JOIN user u ON u.userID = c.userID
-            LEFT JOIN cm_club_remarks ccr ON ccr.clubId = c.clubId
-            LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-            where c.status=90 and sp.status=90
-            and  ccr.addTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            GROUP BY c.clubId
-            )UNION(
-            select c.clubId,cr.orderTime AS time,c.spID
-            FROM club c
-            LEFT JOIN user u ON u.userID = c.userID
-            LEFT JOIN cm_order cr ON cr.clubId = c.clubId
-            LEFT JOIN serviceprovider sp ON sp.serviceProviderID = c.spID
-            where c.status=90 and sp.status=90
-            and  cr.orderTime >= DATE_SUB(CURRENT_DATE, INTERVAL 6 MONTH)
-            GROUP BY c.clubId
-            )) a where a.time is not null
-            and  a.spID=#{serviceProviderId}
-            GROUP BY a.clubId )
+            coas.activeStatus = 1
         </if>
         <if test="6 == type">
             c.spID = #{serviceProviderId}
@@ -234,13 +186,13 @@
         </if>
         <if test="status != null">
             <if test="status == 90">
-                and c.status = 90 and c.userIdentity = 4
+                and c.status = 90 and u.userIdentity = 4
             </if>
             <if test="status == 1">
-                and c.status = 1 and c.userIdentity = 4
+                and c.status = 1 and u.userIdentity = 4
             </if>
             <if test="status == 92">
-                and c.status = 92 and c.userIdentity = 4
+                and c.status = 92 and u.userIdentity = 4
             </if>
             <if test="status != 90 and status != 1 and status != 92 and status != 66">
                 AND c.status = #{status}
@@ -264,21 +216,22 @@
         sp.linkMan AS serviceName,
         coas.activeState AS activeState,
         covs.customerValue AS customerValue,
+        b.num,
         (
-        SELECT ADDTIME FROM
-        (
-        SELECT
-        ADDTIME
-        FROM cm_club_remarks
-        WHERE  clubId = c.clubId
-        UNION
-        SELECT
-        ADDTIME
-        FROM cm_visitor_remarks
-        WHERE
-        clubId IS NOT NULL AND clubId != ''
-        AND clubId = c.clubId
-        ) b ORDER BY ADDTIME DESC LIMIT 1
+            SELECT ADDTIME FROM
+            (
+                SELECT
+                ADDTIME
+                FROM cm_club_remarks
+                WHERE  clubId = c.clubId
+                UNION
+                SELECT
+                ADDTIME
+                FROM cm_visitor_remarks
+                WHERE
+                clubId IS NOT NULL AND clubId != ''
+                AND clubId = c.clubId
+            ) b ORDER BY ADDTIME DESC LIMIT 1
         ) AS ADDTIME
         FROM club c
         LEFT JOIN USER u ON c.userID = u.userID
@@ -286,15 +239,15 @@
         LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
         LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
         LEFT JOIN (SELECT clubId, COUNT(id) AS num  FROM cm_club_remarks GROUP BY clubId
-        UNION
-        SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY clubId ) AS b  ON c.clubId = b.clubId
+                UNION
+                SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY clubId ) AS b  ON c.clubId = b.clubId
         where c.spId = #{spId}
         <if test="type != null">
             <if test="type == 1">
-                having b.num > 0
+                and b.num > 0
             </if>
             <if test="type == 2">
-                having b.num IS NULL OR b.num = 0
+                and b.num IS NULL OR b.num = 0
             </if>
         </if>
     </select>
@@ -333,7 +286,17 @@
                  LEFT JOIN cm_serviceTeam_group csg ON ccr.createServiceProviderId = csg.serviceId
                  LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
                  LEFT JOIN cm_club_report cmc ON cmc.clubId = ccr.clubId
-        WHERE ccr.clubId = #{clubId}
+        <where>
+            ccr.clubId = #{clubId}
+            <if test="search != null and search != ''">
+                and (
+                    ccr.remarks like concat('%',#{search},'%')
+                     or ccr.questionMan like concat('%',#{search},'%')
+                     or c.name like concat('%',#{search},'%')
+                     or c.contractMobile like concat('%',#{search},'%')
+                )
+            </if>
+        </where>
         UNION
         SELECT DISTINCT ccr.id AS remarksId,
                 ccr.remarks,
@@ -366,15 +329,24 @@
                  LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
                  LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
                  LEFT JOIN cm_club_report cmc ON cmc.Id = ccr.reportID
-        where
+        <where>
             ccr.remarks IS NOT NULL
-          AND ccr.clubId is NOT null AND ccr.clubId != '' AND ccr.clubId = #{clubId}
+            AND ccr.clubId is NOT null AND ccr.clubId != '' AND ccr.clubId = #{clubId}
+            <if test="search != null and search != ''">
+                and (
+                    ccr.remarks like concat('%',#{search},'%')
+                    or ccr.questionMan like concat('%',#{search},'%')
+                    or c.name like concat('%',#{search},'%')
+                    or c.contractMobile like concat('%',#{search},'%')
+                )
+            </if>
+        </where>
             ) b
         ORDER BY b.addTime DESC
     </select>
 
 
-    <select id="findSpUserLoginSum" resultType="java.util.HashMap" parameterType="string">
+    <select id="findSpUserLoginSum" resultType="java.util.HashMap">
         SELECT
             (CASE coas.activeStatus
                  WHEN 0 THEN 'active'