浏览代码

用户行为优化1.0.2

huangzhiguo 1 年之前
父节点
当前提交
bc1cfff78c
共有 26 个文件被更改,包括 1671 次插入51 次删除
  1. 45 5
      src/main/java/com/caimei/modules/user/dao/CmPortraitDao.java
  2. 23 0
      src/main/java/com/caimei/modules/user/dao/CmUserDao.java
  3. 41 0
      src/main/java/com/caimei/modules/user/entity/ArrDate.java
  4. 134 0
      src/main/java/com/caimei/modules/user/entity/CmClubSales.java
  5. 58 0
      src/main/java/com/caimei/modules/user/entity/clubData.java
  6. 270 9
      src/main/java/com/caimei/modules/user/service/ClubPortraitService.java
  7. 5 1
      src/main/java/com/caimei/modules/user/service/ClubTemporaryService.java
  8. 63 7
      src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java
  9. 137 5
      src/main/resources/mappings/modules/user/CmPortraitMapper.xml
  10. 19 2
      src/main/resources/mappings/modules/user/CmUserMapper.xml
  11. 9 7
      src/main/resources/mappings/modules/user/NewCmClubMapper.xml
  12. 0 2
      src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleList.jsp
  13. 2 0
      src/main/webapp/WEB-INF/views/modules/user/clubTemporaryList.jsp
  14. 2 0
      src/main/webapp/WEB-INF/views/modules/user/cmDistributionClubList.jsp
  15. 2 0
      src/main/webapp/WEB-INF/views/modules/user/cmOperationalLogs.jsp
  16. 57 1
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp
  17. 2 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp
  18. 142 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmClubSales.jsp
  19. 2 0
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpClubTrackList.jsp
  20. 0 2
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpForm.jsp
  21. 0 2
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpList.jsp
  22. 7 6
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubList.jsp
  23. 0 2
      src/main/webapp/WEB-INF/views/modules/userNew/cmSpTeamList.jsp
  24. 187 0
      src/main/webapp/static/modules/cmClubSales/cmClubSales.css
  25. 44 0
      src/main/webapp/static/modules/cmClubSales/cmClubSales.js
  26. 420 0
      src/main/webapp/static/modules/cmClubSales/cmClubSalesEachs.js

+ 45 - 5
src/main/java/com/caimei/modules/user/dao/CmPortraitDao.java

@@ -1,10 +1,7 @@
 package com.caimei.modules.user.dao;
 
 import com.caimei.modules.order.entity.NewOrder;
-import com.caimei.modules.user.entity.ClubStatistics;
-import com.caimei.modules.user.entity.CmBehaviorRecord;
-import com.caimei.modules.user.entity.CmClubRemarks;
-import com.caimei.modules.user.entity.CmPortrait;
+import com.caimei.modules.user.entity.*;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import org.apache.ibatis.annotations.Param;
@@ -24,7 +21,7 @@ public interface CmPortraitDao extends CrudDao<CmPortrait> {
 
     List<String> getClubRemarks(@Param("clubId") Integer clubId,@Param("startTime") String startTime,@Param("endTime") String endTime);
 
-    List<String> getClubBehavior(@Param("clubId") Integer clubId,@Param("startTime") String startTime,@Param("endTime") String endTime);
+    List<CmBehaviorRecord> getClubBehavior(@Param("clubId") Integer clubId,@Param("startTime") String startTime,@Param("endTime") String endTime);
 
     ClubStatistics selClubData(@Param("clubID") Integer ClubID);
 
@@ -37,4 +34,47 @@ public interface CmPortraitDao extends CrudDao<CmPortrait> {
     List<CmClubRemarks> selRemarksList(CmPortrait cmPortrait);
 
     List<CmBehaviorRecord> selBehaviorPageTypeList(CmPortrait cmPortrait);
+    /**
+     * 协销信息
+     * @return
+     */
+    List<Server> getServiceInfo();
+    /**
+     * 新注册机构数据
+     * @param clubSales
+     * @return
+     */
+    List<clubData> getNewClubInfo(CmClubSales clubSales);
+
+    /**
+     * 新注册机构Id
+     * @param clubSales
+     * @return
+     */
+    List<Integer> getNewClubId(CmClubSales clubSales);
+    /**
+     * 机构咨询记录
+     * @param clubSales
+     * @return
+     */
+    List<clubData> getClubRemark(CmClubSales clubSales);
+
+    /**
+     * 游客咨询记录
+     * @param clubSales
+     * @return
+     */
+    List<clubData> getClubVisitorRemark(CmClubSales clubSales);
+
+    /**
+     * 用户活跃信息日期
+     * @return
+     */
+    List<String> getActiveDate(@Param("startTime") String startTime, @Param("endTime") String endTime);
+
+    /**
+     * 日期下用户活跃费分类数据
+     * @return
+     */
+    List<clubData> getActiveInfo(@Param("time") String time, @Param("serviceProviderId") Integer serviceProviderId);
 }

+ 23 - 0
src/main/java/com/caimei/modules/user/dao/CmUserDao.java

@@ -67,8 +67,31 @@ public interface CmUserDao extends CrudDao<CmUser> {
 
     Integer findUserBeans(Integer userId);
 
+    /**
+     * 用户价值
+     * @param userId
+     * @return
+     */
     CmOrganValueSystem selOrgan(Integer userId);
+
+    /**
+     * 用户活跃
+     * @param userId
+     * @return
+     */
+    Integer selOrganActive(Integer userId);
+
     Integer findUserIdentity(Integer userID);
 
+    /**
+     * 添加用户价值
+     * @param userId
+     */
     void insertOrgan(@Param("userId") Integer userId);
+
+    /**
+     * 添加用户活跃状态
+     * @param userId
+     */
+    void insertActiveOrgan(@Param("userId") Integer userId);
 }

+ 41 - 0
src/main/java/com/caimei/modules/user/entity/ArrDate.java

@@ -13,9 +13,18 @@ public class ArrDate {
     private ArrayList<String> name;
     private ArrayList<Integer> value;
 
+    private ArrayList<Integer> value1;
+
     private ArrayList<OrderPortrait> orderList;
+
+    private ArrayList<OrderPortrait> clubInfo;
+
+    private ArrayList<OrderPortrait> internalPortrait;
+
     private Integer orderTotalNum;
 
+    private Integer total;
+
     private String startTime;
     private String endTime;
 
@@ -35,6 +44,14 @@ public class ArrDate {
         this.value = value;
     }
 
+    public ArrayList<Integer> getValue1() {
+        return value1;
+    }
+
+    public void setValue1(ArrayList<Integer> value1) {
+        this.value1 = value1;
+    }
+
     public ArrayList<OrderPortrait> getOrderList() {
         return orderList;
     }
@@ -43,6 +60,22 @@ public class ArrDate {
         this.orderList = orderList;
     }
 
+    public ArrayList<OrderPortrait> getClubInfo() {
+        return clubInfo;
+    }
+
+    public void setClubInfo(ArrayList<OrderPortrait> clubInfo) {
+        this.clubInfo = clubInfo;
+    }
+
+    public ArrayList<OrderPortrait> getInternalPortrait() {
+        return internalPortrait;
+    }
+
+    public void setInternalPortrait(ArrayList<OrderPortrait> internalPortrait) {
+        this.internalPortrait = internalPortrait;
+    }
+
     public Integer getOrderTotalNum() {
         return orderTotalNum;
     }
@@ -51,6 +84,14 @@ public class ArrDate {
         this.orderTotalNum = orderTotalNum;
     }
 
+    public Integer getTotal() {
+        return total;
+    }
+
+    public void setTotal(Integer total) {
+        this.total = total;
+    }
+
     public String getStartTime() {
         return startTime;
     }

+ 134 - 0
src/main/java/com/caimei/modules/user/entity/CmClubSales.java

@@ -0,0 +1,134 @@
+package com.caimei.modules.user.entity;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : hzg
+ * @date : 2023/11/24
+ */
+public class CmClubSales {
+    // 机构id
+    private Integer spID;
+    // 日期类别 1日 2月 3半年 4全年
+    private Integer dateType;
+    // 数据类型 0新注册机构统计 1机构咨询记录统计 2机构活跃趋势 3初始状态
+    private Integer type;
+    // 开始时间
+    private String startTime;
+    // 结束时间
+    private String endTime;
+    // 值 name - value
+    private ArrayList<OrderPortrait> portrait;
+    // 机构咨询记录内圈数据
+    private ArrayList<OrderPortrait> internalPortrait;
+    // 新注册机构总数量
+    private Integer total;
+    // 咨询记录总数
+    private Integer remarkTotal;
+    // 图标下标值
+    private ArrayList<String> names;
+    // 图标值
+    private ArrayList<Integer> values;
+    // 图标值
+    private ArrayList<Integer> values1;
+
+
+    public Integer getSpID() {
+        return spID;
+    }
+
+    public void setSpID(Integer spID) {
+        this.spID = spID;
+    }
+
+    public Integer getDateType() {
+        return dateType;
+    }
+
+    public void setDateType(Integer dateType) {
+        this.dateType = dateType;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+
+    public String getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(String endTime) {
+        this.endTime = endTime;
+    }
+
+    public ArrayList<OrderPortrait> getPortrait() {
+        return portrait;
+    }
+
+    public void setPortrait(ArrayList<OrderPortrait> portrait) {
+        this.portrait = portrait;
+    }
+
+    public ArrayList<OrderPortrait> getInternalPortrait() {
+        return internalPortrait;
+    }
+
+    public void setInternalPortrait(ArrayList<OrderPortrait> internalPortrait) {
+        this.internalPortrait = internalPortrait;
+    }
+
+    public Integer getTotal() {
+        return total;
+    }
+
+    public void setTotal(Integer total) {
+        this.total = total;
+    }
+
+    public Integer getRemarkTotal() {
+        return remarkTotal;
+    }
+
+    public void setRemarkTotal(Integer remarkTotal) {
+        this.remarkTotal = remarkTotal;
+    }
+
+    public ArrayList<String> getNames() {
+        return names;
+    }
+
+    public void setNames(ArrayList<String> names) {
+        this.names = names;
+    }
+
+    public ArrayList<Integer> getValues() {
+        return values;
+    }
+
+    public void setValues(ArrayList<Integer> values) {
+        this.values = values;
+    }
+
+    public ArrayList<Integer> getValues1() {
+        return values1;
+    }
+
+    public void setValues1(ArrayList<Integer> values1) {
+        this.values1 = values1;
+    }
+}

+ 58 - 0
src/main/java/com/caimei/modules/user/entity/clubData.java

@@ -0,0 +1,58 @@
+package com.caimei.modules.user.entity;
+
+/**
+ * Description
+ *
+ * @author : hzg
+ * @date : 2023/11/27
+ */
+public class clubData {
+    /**
+     * 机构id
+     */
+    private Integer clubID;
+    /**
+     * 协销id
+     */
+    private Integer spID;
+    /**
+     * 数量
+     */
+    private Integer number;
+    /**
+     * activeStatus
+     */
+    private Integer activeStatus;
+
+    public Integer getClubID() {
+        return clubID;
+    }
+
+    public void setClubID(Integer clubID) {
+        this.clubID = clubID;
+    }
+
+    public Integer getSpID() {
+        return spID;
+    }
+
+    public void setSpID(Integer spID) {
+        this.spID = spID;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Integer getActiveStatus() {
+        return activeStatus;
+    }
+
+    public void setActiveStatus(Integer activeStatus) {
+        this.activeStatus = activeStatus;
+    }
+}

+ 270 - 9
src/main/java/com/caimei/modules/user/service/ClubPortraitService.java

@@ -3,6 +3,7 @@ package com.caimei.modules.user.service;
 import com.caimei.modules.order.entity.NewOrder;
 import com.caimei.modules.user.dao.CmPortraitDao;
 import com.caimei.modules.user.entity.*;
+import com.caimei.utils.MathUtil;
 import com.thinkgem.jeesite.common.utils.ObjectUtils;
 import com.thinkgem.jeesite.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +14,7 @@ import java.text.NumberFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Description
@@ -127,35 +129,62 @@ public class ClubPortraitService {
                 if (clubRemark.contains(",")) {
                     String[] split = clubRemark.split(",");
                     for (String s : split) {
-                        if (demandList.size() < 10 && StringUtils.isNotBlank(s) && !demandList.contains(s)) {
+                        if (StringUtils.isNotBlank(s)) {
+
                             demandList.add(s);
                         }
                     }
                 } else {
-                    if (demandList.size() < 10 && StringUtils.isNotBlank(clubRemark) && !demandList.contains(clubRemark)) {
+                    if (StringUtils.isNotBlank(clubRemark)) {
                         demandList.add(clubRemark);
                     }
                 }
             }
         }
         // 访问记录
-        List<String> clubBehaviors = cmPortraitDao.getClubBehavior(clubId, demandStart, demandEnd);
+        List<CmBehaviorRecord> clubBehaviors = cmPortraitDao.getClubBehavior(clubId, demandStart, demandEnd);
         if (clubBehaviors.size() > 0) {
-            for (String clubBehavior : clubBehaviors) {
-                if (clubBehavior.contains(",")) {
-                    String[] split = clubBehavior.split(",");
+            for (CmBehaviorRecord clubBehavior : clubBehaviors) {
+                if (clubBehavior.getPageLabel().contains(",")) {
+                    String[] split = clubBehavior.getPageLabel().split(",");
                     for (String s : split) {
-                        if (demandList.size() < 10 && StringUtils.isNotBlank(s) && !demandList.contains(s)) {
+                        if (StringUtils.isNotBlank(s)) {
+                            s = s + "(" + clubBehavior.getPageType() + ")";
                             demandList.add(s);
                         }
                     }
                 } else {
-                    if (demandList.size() < 10 && StringUtils.isNotBlank(clubBehavior) && !demandList.contains(clubBehavior)) {
-                        demandList.add(clubBehavior);
+                    if (StringUtils.isNotBlank(clubBehavior.getPageLabel())) {
+                        String types = clubBehavior.getPageLabel() + "(" + clubBehavior.getPageType() + ")";
+                        demandList.add(types);
                     }
                 }
             }
         }
+        // 排序
+        List<String> demandString = new ArrayList<>();
+        List<Integer> demandInteger = new ArrayList<>();
+        for (String s : demandList) {
+            if (!demandString.contains(s)) {
+                demandString.add(s);
+                int size = demandList.stream().filter(dem -> dem.equals(s)).collect(Collectors.toList()).size();
+                demandInteger.add(size);
+            }
+        }
+        demandList.clear();
+        for (int i = 0; i <= demandInteger.size()-1; i++) {
+            int item = i;
+            Integer num = demandInteger.get(i);
+            for (int k = i; k <= demandInteger.size()-1; k++) {
+                if (num < demandInteger.get(k)) {
+                    item = k;
+                }
+            }
+            if (!demandList.contains(demandString.get(item)) && demandList.size() <= 10) {
+                demandList.add(demandString.get(item));
+            }
+        }
+
         Map<String, Object> map = new HashMap<>();
         map.put("startTime", demandStart);
         map.put("endTime", demandEnd);
@@ -445,7 +474,239 @@ public class ClubPortraitService {
         }
         return cmPortrait;
     }
+    /**
+     * 协销列表
+     * @return
+     */
+    public List<Server> getSerList() {
+        List<Server> serviceInfo = cmPortraitDao.getServiceInfo();
+        return serviceInfo;
+    }
 
+    /**
+     * 机构-协销画像
+     * @param clubSales
+     */
+    public CmClubSales clubSales(CmClubSales clubSales) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date = new Date();
+        String endTime = "";
+        String startTime = "";
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
+        Date time = calendar.getTime();
+        endTime = dateFormat.format(time);
+        String time1 = "";
+        String time2 = "";
+        boolean expty = ObjectUtils.isEmpty(clubSales.getStartTime()) && ObjectUtils.isEmpty(clubSales.getEndTime());
+        if (expty) {
+            Date start = null;
+            clubSales.setEndTime(endTime);
+            // 日期参数为    日
+            if (1 == clubSales.getDateType()) {
+                clubSales.setStartTime(endTime);
+            }
+            if (2 == clubSales.getDateType()) {
+                calendar.setTime(time);
+                calendar.add(Calendar.MONTH, -1);
+                start = calendar.getTime();
+                startTime = dateFormat.format(start);
+                clubSales.setStartTime(startTime);
+            }
+            if (3 == clubSales.getDateType()) {
+                calendar.setTime(time);
+                calendar.add(Calendar.MONTH, -6);
+                start = calendar.getTime();
+                startTime = dateFormat.format(start);
+                clubSales.setStartTime(startTime);
+            }
+            if (4 == clubSales.getDateType()) {
+                calendar.setTime(time);
+                calendar.add(Calendar.YEAR, -1);
+                start = calendar.getTime();
+                startTime = dateFormat.format(start);
+                clubSales.setStartTime(startTime);
+            }
+        } else {
+            time1 = clubSales.getStartTime();
+            time2 = clubSales.getEndTime();
+        }
+        // 新注册机构
+        if (0 == clubSales.getType() || 3 == clubSales.getType()) {
+            if ((0 == clubSales.getDateType() || 1 == clubSales.getDateType()) && expty) {
+                clubSales.setEndTime(dateFormat.format(date));
+            }
+            if (clubSales.getEndTime().equals(endTime)) {
+                clubSales.setEndTime(dateFormat.format(date));
+            }
+            int spClub = 0, unSpClub = 0;
+            ArrayList<OrderPortrait> orderPortraits = new ArrayList<>();
+            OrderPortrait orderPortrait = new OrderPortrait();
+            List<clubData> clubList = cmPortraitDao.getNewClubInfo(clubSales);
+            int length = clubList.size();
+            NumberFormat instance = NumberFormat.getInstance();
+            instance.setMaximumFractionDigits(2);
+            if (length != 0) {
+                for (clubData club : clubList) {
+                    if ( null == club.getSpID() || 1342 == club.getSpID()) {
+                        // 未分配协销结构与
+                        spClub++;
+                    } else {
+                        // 已分配协销机构
+                        unSpClub++;
+                    }
+                }
+                clubSales.setTotal(length);
+                orderPortrait.setValue(spClub);
+                if (spClub != 0) {
+                    orderPortrait.setName("已分配协销  " + instance.format((float) spClub / (float) length * 100) + "%  " + spClub + "个");
+                } else {
+                    orderPortrait.setName("已分配协销   0 % " + spClub + "个");
+                }
+                orderPortraits.add(orderPortrait);
+                orderPortrait = new OrderPortrait();
+                orderPortrait.setValue(unSpClub);
+                if (unSpClub != 0) {
+                    orderPortrait.setName("未分配协销 " + instance.format((float) unSpClub / (float) length * 100) + "%  " + unSpClub + "个");
+                } else {
+                    orderPortrait.setName("未分配协销  0 % " + unSpClub + "个");
+                }
+                orderPortraits.add(orderPortrait);
+
+                clubSales.setPortrait(orderPortraits);
+            }
+            calendar.setTime(date);
+            calendar.add(Calendar.DAY_OF_MONTH, -1);
+            time = calendar.getTime();
+            endTime = dateFormat.format(time);
+            clubSales.setEndTime(endTime);
+        }
+        // 机构咨询记录
+        if (1 == clubSales.getType() || 3 == clubSales.getType()) {
+            // 机构咨询记录
+            List<clubData> clubRemark = cmPortraitDao.getClubRemark(clubSales);
+            // 游客咨询记录
+            List<clubData> clubVisitorRemark = cmPortraitDao.getClubVisitorRemark(clubSales);
+            // 新注册机构
+            List<Integer> clubIdList = cmPortraitDao.getNewClubId(clubSales);
+            int total = 0;
+            // 组装数据
+            ArrayList<OrderPortrait> orderPortraits = new ArrayList<>();
+            OrderPortrait orderPortrait = new OrderPortrait();
+            Integer clubRemarkNumber = 0;
+            Integer touristRemarkNumber = 0;
+            if (clubRemark.size() != 0) {
+
+                // 组转内圈数据
+                // 填写过机构数、咨询记录数
+                int fillClub = 0, fillRemark = 0 ;
+                // 未填写过机构数、咨询记录数
+                int unFillClub = 0;
+                for (clubData remark : clubRemark) {
+                    total += remark.getNumber();
+                    clubRemarkNumber += remark.getNumber();
+                    for (Integer clubId : clubIdList) {
+                        if (clubRemark.contains(clubId)) {
+                            fillClub ++;
+                            fillRemark += remark.getNumber();
+                        }
+                    }
+                }
+
+                orderPortrait.setValue(fillClub);
+                if (fillClub != 0) {
+                    orderPortrait.setName("新注册机构--填写机构  " + fillRemark + "条  " + fillClub + "个");
+                } else {
+                    orderPortrait.setName("新注册机构--填写机构  0条 " + fillClub + "个");
+                }
+                orderPortraits.add(orderPortrait);
+                orderPortrait = new OrderPortrait();
+                orderPortrait.setValue(unFillClub);
+                unFillClub = clubIdList.size() - fillClub;
+                if (unFillClub != 0) {
+                    orderPortrait.setName("新注册机构--未填写机构  0条 " + unFillClub + "个");
+                } else {
+                    orderPortrait.setName("新注册机构--未填写机构  0条 " + unFillClub + "个");
+                }
+                orderPortraits.add(orderPortrait);
+                clubSales.setInternalPortrait(orderPortraits);
+                orderPortraits = new ArrayList<>();
+                orderPortrait = new OrderPortrait();
+            }
+            if (clubVisitorRemark.size() != 0) {
+                for (clubData tourist : clubVisitorRemark) {
+                    total += tourist.getNumber();
+                    touristRemarkNumber += tourist.getNumber();
+                }
+            }
+            // 外圈数据
+            clubSales.setRemarkTotal(total);
+            orderPortrait.setValue(clubRemarkNumber);
+            if (clubRemark.size() != 0) {
+                orderPortrait.setName("已填写机构  " + clubRemarkNumber + "条  " + clubRemark.size() + "个");
+            } else {
+                orderPortrait.setName("已填写机构  0条 " + clubRemark.size() + "个");
+            }
+            orderPortraits.add(orderPortrait);
+            orderPortrait = new OrderPortrait();
+            orderPortrait.setValue(touristRemarkNumber);
+            if (clubVisitorRemark.size() != 0) {
+                orderPortrait.setName("已填写游客  " + touristRemarkNumber + "条  " + clubVisitorRemark.size() + "个");
+            } else {
+                orderPortrait.setName("已填写游客  0条 " + clubVisitorRemark.size() + "个");
+            }
+            orderPortraits.add(orderPortrait);
+            clubSales.setPortrait(orderPortraits);
+        }
+        // 机构活跃
+        if (2 == clubSales.getType() || 3 == clubSales.getType()) {
+            if (expty) {
+                // 默认前一周
+                calendar.setTime(date);
+                Date activeStartTime = calendar.getTime();
+                endTime = dateFormat.format(activeStartTime);
+                calendar.add(Calendar.DAY_OF_MONTH, -7);
+                Date activeEndTime = calendar.getTime();
+                startTime = dateFormat.format(activeEndTime);
+                clubSales.setStartTime(startTime);
+                clubSales.setEndTime(endTime);
+            }
+            // 查询时间--图表 x 轴数据
+            List<String> activeDateList = cmPortraitDao.getActiveDate(clubSales.getStartTime(), clubSales.getEndTime());
+            ArrayList<String> names = new ArrayList<>();
+            // 活跃数据
+            ArrayList<Integer> active = new ArrayList<>();
+            // 不活跃数据
+            ArrayList<Integer> unActive = new ArrayList<>();
+            for (String activeDate : activeDateList) {
+                names.add(activeDate);
+                // 该天用户活跃数据
+                List<clubData> activeInfo = cmPortraitDao.getActiveInfo(activeDate, clubSales.getSpID());
+                Integer activeNumber = 0;
+                Integer unActiveNumber = 0;
+                if (null != activeInfo && activeInfo.size() > 0) {
+                    // 活跃数据
+                    activeNumber = activeInfo.stream().filter(ac -> ac.getActiveStatus().equals(0)).collect(Collectors.toList()).get(0).getNumber();
+                    // 不活跃数据
+                    unActiveNumber = activeInfo.stream().filter(ac -> ac.getActiveStatus().equals(1)).collect(Collectors.toList()).get(0).getNumber();
+                }
+                active.add(activeNumber);
+                unActive.add(unActiveNumber);
+            }
+            clubSales.setNames(names);
+            clubSales.setValues(active);
+            clubSales.setValues1(unActive);
+        }
+        if (!expty) {
+            clubSales.setStartTime(time1);
+            if ((0 == clubSales.getDateType() || 1 == clubSales.getDateType()) && ObjectUtils.isEmpty(clubSales.getStartTime())) {
+                clubSales.setStartTime(time1);
+            }
+            clubSales.setEndTime(time2);
+        }
+        return clubSales;
+    }
     /**
      * 设置机构资料完整度
      * @param clubStatistics

+ 5 - 1
src/main/java/com/caimei/modules/user/service/ClubTemporaryService.java

@@ -207,10 +207,14 @@ public class ClubTemporaryService extends CrudService<ClubTemporaryDao, ClubTemp
 
         // 未确认机构确认注册时,给予初始机构信息,活跃状态、客户价值为null
         CmOrganValueSystem insUser = cmUserDao.selOrgan(clubTemporary.getConfirmUserId());
+
         if (insUser == null) {
             cmUserDao.insertOrgan(clubTemporary.getConfirmUserId());
         }
-
+        Integer activeId = cmUserDao.selOrganActive(clubTemporary.getConfirmUserId());
+        if (null == activeId) {
+            cmUserDao.insertActiveOrgan(clubTemporary.getConfirmUserId());
+        }
         clubTemporaryDao.insertClubConfirmRecord(confirmRecord);
     }
 

+ 63 - 7
src/main/java/com/caimei/modules/user/web/newUser/AgencyController.java

@@ -13,7 +13,6 @@ import com.caimei.modules.sys.utils.UploadImageUtils;
 import com.caimei.modules.user.aop.OperationLogAnnotation;
 import com.caimei.modules.user.dao.MessageCenterDao;
 import com.caimei.modules.user.dao.NewCmClubDao;
-import com.caimei.modules.user.dao.VisitRemarkDao;
 import com.caimei.modules.user.entity.*;
 import com.caimei.modules.user.service.*;
 import com.caimei.utils.AppKeys;
@@ -30,7 +29,6 @@ import com.thinkgem.jeesite.common.utils.StringUtils;
 import com.thinkgem.jeesite.common.web.BaseController;
 import com.thinkgem.jeesite.modules.sys.security.SystemAuthorizingRealm;
 import com.thinkgem.jeesite.modules.sys.utils.UserUtils;
-import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.map.HashedMap;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Value;
@@ -43,14 +41,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.annotation.Resource;
-import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.swing.filechooser.FileSystemView;
-import java.awt.*;
-import java.awt.datatransfer.StringSelection;
 import java.io.*;
-import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -1833,6 +1826,69 @@ public class AgencyController extends BaseController {
         return map;
     }
 
+    @RequestMapping("/clubSales")
+    public String clubSales(CmClubSales clubSales, Model model) {
+        // 协销列表
+        List<Server> serList = portraitService.getSerList();
+        model.addAttribute("serList", serList);
+        return "modules/userNew/cmClubSales";
+    }
+
+    /**
+     * 机构-协销面板
+     * @param cmClubSales
+     * @return
+     */
+    @RequestMapping("/getClubSales")
+    @ResponseBody
+    public Map<String, Object> getClubSales(CmClubSales cmClubSales) {
+        Map<String, Object> map = new HashMap<>();
+        try {
+            CmClubSales clubSales = portraitService.clubSales(cmClubSales);
+            ArrDate newClub = new ArrDate();
+            ArrDate remarks = new ArrDate();
+            ArrDate active = new ArrDate();
+            // 新注册机构
+            newClub.setClubInfo(clubSales.getPortrait());
+            if (clubSales.getTotal() == null) {
+                clubSales.setTotal(0);
+            }
+            newClub.setTotal(clubSales.getTotal());
+            newClub.setStartTime(clubSales.getStartTime());
+            newClub.setEndTime(clubSales.getEndTime());
+            if (null == newClub.getTotal() || newClub.getTotal() == 0) {
+                map.put("newClub", null);
+            } else {
+                map.put("newClub", newClub);
+            }
+            // 机构咨询记录
+            remarks.setInternalPortrait(clubSales.getInternalPortrait());
+            remarks.setClubInfo(clubSales.getPortrait());
+            remarks.setTotal(clubSales.getRemarkTotal());
+            remarks.setStartTime(clubSales.getStartTime());
+            remarks.setEndTime(clubSales.getEndTime());
+            if (null == remarks.getTotal() || remarks.getTotal() == 0) {
+                map.put("remarks", null);
+            } else {
+                map.put("remarks", remarks);
+            }
+            active.setName(clubSales.getNames());
+            active.setValue(clubSales.getValues());
+            active.setValue1(clubSales.getValues1());
+            remarks.setStartTime(clubSales.getStartTime());
+            remarks.setEndTime(clubSales.getEndTime());
+            if (null == active.getName()) {
+                map.put("active", null);
+            } else {
+                map.put("active", active);
+            }
+            map.put("code", 0);
+        } catch (Exception e) {
+            map.put("code", -1);
+            e.printStackTrace();
+        }
+        return map;
+    }
 
     @RequestMapping("/clubData")
     public String clubData(NewCmClub newCmClub, Model model, HttpServletRequest request, HttpServletResponse response) {

+ 137 - 5
src/main/resources/mappings/modules/user/CmPortraitMapper.xml

@@ -23,9 +23,12 @@
         GROUP BY remarks ORDER BY COUNT(remarks) DESC
     </select>
 
-    <select id="getClubBehavior" resultType="java.lang.String">
-        SELECT cbr.pageLabel FROM cm_behavior_record cbr LEFT JOIN club c ON c.userID = cbr.userId
-        WHERE pageType IN (6, 8, 9, 11, 14) AND c.clubId = #{clubId}
+    <select id="getClubBehavior" resultType="com.caimei.modules.user.entity.CmBehaviorRecord">
+        SELECT cbr.pageLabel, cpt.pageType , COUNT(cbr.pageLabel) number
+        FROM cm_behavior_record cbr
+        LEFT JOIN club c ON c.userID = cbr.userId
+        LEFT JOIN cm_page_type cpt ON cpt.id = cbr.pageType
+        WHERE cbr.pageType IN (6, 8, 9, 11, 14) AND c.clubId = #{clubId}
         <if test="startTime != null and startTime != ''">
             and cbr.accessDate > #{startTime}
         </if>
@@ -75,7 +78,7 @@
               WHEN c.secondClubType=7 THEN '其他'
             END) AS classify,
             u.registerTime as registerTime,
-            covs.activeState as activeState,
+            coas.activeState as activeState,
             covs.customerValue as customerValues,
         c.addTime AS addTime
         FROM club c
@@ -83,7 +86,8 @@
          LEFT JOIN town b ON b.townID=c.townID
          LEFT JOIN city ct ON ct.cityID=c.cityID
          LEFT JOIN province d ON d.provinceID=c.provinceID
-         LEFT JOIN (SELECT userID, activeState, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) AS covs ON covs.userID = c.userID
+         LEFT JOIN (SELECT userID, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) AS covs ON covs.userID = c.userID
+         LEFT JOIN (SELECT userID, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) AS coas ON coas.userID = c.userID
         where c.clubID = #{clubID}
     </select>
 
@@ -168,4 +172,132 @@
         </where>
         GROUP BY cbr.pageType  ORDER BY COUNT(cbr.pageType) LIMIT 10
     </select>
+
+    <select id="getServiceInfo" resultType="com.caimei.modules.user.entity.Server">
+        SELECT serviceProviderId, linkMan as name
+        FROM serviceprovider WHERE organizeID = 0  AND openId IS NOT NULL AND openId != '' AND status = 90 AND serviceProviderID != 1342
+    </select>
+
+    <select id="getNewClubInfo" resultType="com.caimei.modules.user.entity.clubData">
+        SELECT
+        c.clubID,
+        c.spID
+        FROM club c
+        LEFT JOIN USER u ON u.userId = c.userId
+        <where>
+            <if test="startTime != null and startTime != ''">
+                u.registerTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND u.registerTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+    </select>
+
+    <select id="getNewClubId" resultType="java.lang.Integer">
+        SELECT
+        c.clubID
+        FROM club c
+        LEFT JOIN USER u ON u.userId = c.userId
+        <where>
+            <if test="startTime != null and startTime != ''">
+                u.registerTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND u.registerTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+    </select>
+
+    <select id="getClubRemark" resultType="com.caimei.modules.user.entity.clubData">
+        SELECT clubId as clubID, SUM(num) as number FROM
+        (
+        SELECT
+        clubid as clubID,
+        COUNT(id) as num
+        FROM cm_club_remarks
+        <where>
+            <if test="spID != null and spID != ''">
+                and createServiceProviderId = #{spID}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and addTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND addTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+        GROUP BY clubId
+        union
+        SELECT
+        clubId as clubID,
+        count(id) as num
+        FROM cm_visitor_remarks
+        <where>
+            clubId is not null and clubId != ''
+            <if test="spID != null and spID != ''">
+                and createServiceProviderId = #{spID}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and addTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND addTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+        GROUP BY clubId
+        ) b group by b.clubId
+    </select>
+
+    <select id="getClubVisitorRemark" resultType="com.caimei.modules.user.entity.clubData">
+        SELECT
+        clubId,
+        COUNT(id) as number
+        FROM cm_visitor_remarks
+        <where>
+            <if test="spID != null and spID != ''">
+                and createServiceProviderId = #{spID}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                and addTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND addTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+            AND (clubId IS NULL OR clubId = '')
+        </where>
+    </select>
+    <select id="getActiveDate" resultType="java.lang.String">
+        SELECT
+            addTime
+        FROM cm_organ_active_system
+        <where>
+            <if test="startTime != null and startTime != ''">
+                addTime <![CDATA[ >= ]]> #{startTime}
+            </if>
+            <if test="endTime != null and endTime != ''">
+                and addTime <![CDATA[ <= ]]> #{endTime}
+            </if>
+        </where>
+        GROUP BY addTime
+        order by addTime asc
+    </select>
+
+    <select id="getActiveInfo" resultType="com.caimei.modules.user.entity.clubData">
+        SELECT
+            coas.activeStatus as activeStatus,
+            COUNT(coas.id) as number
+        FROM cm_organ_active_system coas
+                 LEFT JOIN club c ON coas.userId = c.userId
+                 LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId
+        <where>
+            <if test="time != null and time != ''">
+                coas.addTime = #{time}
+            </if>
+            <if test="serviceProviderId != null">
+                and s.serviceProviderId = #{serviceProviderId}
+            </if>
+        </where>
+        GROUP BY coas.activeStatus
+    </select>
 </mapper>

+ 19 - 2
src/main/resources/mappings/modules/user/CmUserMapper.xml

@@ -522,6 +522,7 @@
         from user
         where userID = #{userId}
     </select>
+
     <select id="selOrgan" resultType="com.caimei.modules.user.entity.CmOrganValueSystem">
         select *
         from cm_organ_value_system
@@ -529,15 +530,31 @@
           and stage = 0
         limit 1
     </select>
+
+    <select id="selOrganActive" resultType="java.lang.Integer">
+        select id
+        from cm_organ_active_system
+        where userId = #{userId}
+          and stage = 0
+        limit 1
+    </select>
+
     <select id="findUserIdentity" resultType="Integer">
         SELECT
             a.userIdentity AS "userIdentity"
         FROM user a
         WHERE a.userID = #{userID}
     </select>
+
     <insert id="insertOrgan">
         INSERT INTO cm_organ_value_system
-            (userID, stage, delType)
-        VALUES (#{userId}, 0, 1)
+            (userID, customerValue, customerStatus, stage, addTime, delType)
+        VALUES (#{userId}, '低价值客户', 3, 0, date_format(now(), '%Y-%m-%d'), 1)
+    </insert>
+
+    <insert id="insertActiveOrgan">
+        INSERT INTO cm_organ_active_system
+            (userID, activeState, activeStatus, stage, addTime, delType)
+        VALUES (#{userId}, '活跃', 0, 0, date_format(now(), '%Y-%m-%d'), 1)
     </insert>
 </mapper>

+ 9 - 7
src/main/resources/mappings/modules/user/NewCmClubMapper.xml

@@ -89,21 +89,23 @@
     </select>
 
     <select id="textUserValue" resultType="com.caimei.modules.user.entity.NewCmClub">
-        SELECT userID as valueID, activeState, customerValue
-        FROM cm_organ_value_system
-        WHERE stage = 0
-          AND delType = 1
+        SELECT u.userID AS valueID, coas.activeState, covs.customerValue
+        FROM USER u
+                 LEFT JOIN cm_organ_value_system covs ON covs.userId = u.userId
+                 LEFT JOIN cm_organ_active_system coas ON coas.userId = u.userId
+        WHERE covs.stage = 0 AND covs.delType = 1 AND coas.stage = 0 AND coas.delType = 1
     </select>
 
     <select id="findList" resultType="NewCmClub">
         SELECT
         <include refid="newCmClubColumns"/>
-        <include refid="otherColumns"/>,u.userPermission,u.source, covs.activeState,covs.customerValue,u.loginTime
+        <include refid="otherColumns"/>,u.userPermission,u.source, coas.activeState,covs.customerValue,u.loginTime
         FROM club a
         <include refid="newCmClubJoins"/>
         LEFT JOIN (SELECT DISTINCT clubId, createTime FROM cm_provider_record GROUP BY clubId ORDER BY id DESC ) cpr ON a.clubId = cpr.clubId
         LEFT JOIN (SELECT DISTINCT clubID, checkTime FROM clubchangesprecord WHERE checkStatus = 1 GROUP BY clubID ORDER BY clubChangeSpRecordID DESC )ccs ON ccs.clubId = a.clubId
-        LEFT JOIN (SELECT userID, activeState, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON a.userID = covs.userID
+        LEFT JOIN (SELECT userID, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON a.userID = covs.userID
+        LEFT JOIN (SELECT userID, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) AS coas ON coas.userID = a.userID
         <where>
             (u.userOrganizeID IN(0,1) or u.clubStatus != 92) and u.userOrganizeID != 4 AND u.userIdentity != 8
             <if test="clubID != null and clubID != ''">
@@ -219,7 +221,7 @@
                 AND a.newDeal =#{newDeal}
             </if>
             <if test="activeState != null and activeState != ''">
-                AND covs.activeState = #{activeState}
+                AND coas.activeState = #{activeState}
             </if>
             <if test="customerValue != null and customerValue != ''">
                 AND covs.customerValue = #{customerValue}

+ 0 - 2
src/main/webapp/WEB-INF/views/modules/serviceteam/cmServiceteamRoleList.jsp

@@ -26,8 +26,6 @@
 		<shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>
 		<li class="active"><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 		<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
-		<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
-
 	</ul>
 	<form:form id="searchForm" modelAttribute="cmServiceteamRole" action="${ctx}/serviceteam/cmServiceteamRole/" method="post" class="breadcrumb form-search">
 		<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/user/clubTemporaryList.jsp

@@ -22,7 +22,9 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
 	<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
 	<li class="active"><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/user/cmDistributionClubList.jsp

@@ -100,9 +100,11 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
 	<li ><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
 	<li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
 	<li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
 	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 	<li class="active"><a href="${ctx}/new/user/agency/distributionCLubList">分销系统机构列表</a></li>

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/user/cmOperationalLogs.jsp

@@ -28,7 +28,9 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+    <li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
     <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li class="active"><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 57 - 1
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyList.jsp

@@ -50,9 +50,11 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+    <li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
     <li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
     <li><a href="${ctx}/new/user/agency/distributionCLubList">分销系统机构列表</a></li>
@@ -364,7 +366,9 @@
                 <%--<shiro:hasPermission name="club:cmAgency:remarks">
                     <a style="visibility: hidden" href="${ctx}/new/user/agency/remarks?clubId=${newCmClubList.clubID}">咨询记录</a>
                 </shiro:hasPermission>--%>
-                <a href="${ctx}/new/user/agency/recordLinkage?clubId=${newCmClubList.clubID}">生成行为记录链接</a>
+                <%--<a href="${ctx}/new/user/agency/recordLinkage?clubId=${newCmClubList.clubID}">生成行为记录链接</a>--%>
+                <a href="javascript: void(0);" onclick="goNewBack(1, ${newCmClubList.addTime}, ${newCmClubList.userIdentity}, ${newCmClubList.name}, ${newCmClubList.linkMan})">访问记录</a>
+                <a href="javascript: void(0);" onclick="goNewBack(2, ${newCmClubList.addTime}, ${newCmClubList.userIdentity}, ${newCmClubList.name}, ${newCmClubList.linkMan})">咨询记录</a>
             </td>
         </tr>
     </c:forEach>
@@ -924,6 +928,58 @@
             }
         $.jBox.alert(typeMap[type],'提示',{ width: 450 })
     }
+    function goNewBack (type, addTime, userIdentity, name, linkMan) {
+        // 跳转到新后台查询数据 type: 1 访问记录 2:咨询记录
+        var date = new Date();
+        if (type === 1) {
+            // 若是今天以前注册的机构,点击访问记录,跳转到新后台【用户行为记录】-【过往数据】页面,
+            // 页面展示以公司名称(个人机构以联系人当公司名称)筛选后的结果;
+            // 若是今天注册的机构,点击访问记录,跳转到新后台【用户行为记录】-【今日数据】页面,
+            // 页面展示以公司名称(个人机构以联系人当公司名称)筛选后的结果。
+            if (addTime < date) {
+                // 过往数据
+                if (userIdentity === 4) {
+                    $.get("${ctx}/jump/link", function (data) {
+                        link = "https://manager-b.caimei365.com/#/user/record-list?type=second&corporateName="+linkMan+"&token=" + data;
+                        window.open(link, "_blank");
+                    });
+                } else {
+                    $.get("${ctx}/jump/link", function (data) {
+                        link = "https://manager-b.caimei365.com/#/user/record-list?type=second&corporateName="+name+"&token=" + data;
+                        window.open(link, "_blank");
+                    });
+                }
+            } else {
+                // 今日数据
+                if (userIdentity === 4) {
+                    $.get("${ctx}/jump/link", function (data) {
+                        link = "https://manager-b.caimei365.com/#/user/record-list?type=first&corporateName="+linkMan+"&token=" + data;
+                        window.open(link, "_blank");
+                    });
+                } else {
+                    $.get("${ctx}/jump/link", function (data) {
+                        link = "https://manager-b.caimei365.com/#/user/record-list?type=first&corporateName="+name+"&token=" + data;
+                        window.open(link, "_blank");
+                    });
+                }
+
+            }
+        } else {
+            // 点击咨询记录,跳转到新后台【用户咨询记录汇总】页面,页面展示以机构名称筛选后的结果
+            if (userIdentity === 4) {
+                $.get("${ctx}/jump/link", function (data) {
+                    link = "https://manager-b.caimei365.com/#/user/consult/list?clubName="+linkMan+"&token=" + data;
+                    window.open(link, "_blank");
+                });
+            } else {
+                $.get("${ctx}/jump/link", function (data) {
+                    link = "https://manager-b.caimei365.com/#/user/consult/list?clubName="+name+"&token=" + data;
+                    window.open(link, "_blank");
+                });
+            }
+
+        }
+    }
 </script>
 </body>
 </html>

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmAgencyStatisticsList.jsp

@@ -54,9 +54,11 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+    <li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
     <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
     <li class="active"><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
     <li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
     <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
     <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 142 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmClubSales.jsp

@@ -0,0 +1,142 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: Administrator
+  Date: 2023/11/24
+  Time: 9:32
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<html>
+<head>
+    <title>Title</title>
+    <meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/datapicker/daterangepicker.css" rel="stylesheet">
+    <link href="${ctxStatic}/modules/cmClubSales/cmClubSales.css" rel="stylesheet">
+</head>
+<body>
+<ul class="nav nav-tabs">
+    <li class="active"><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
+    <li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+    <li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+    <li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+    <li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
+    <li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
+    <li><a href="${ctx}/new/user/agency/distributionCLubList">分销系统机构列表</a></li>
+</ul>
+<div>
+    <input type="hidden" id="echartsAjaxUrl" value="${ctx}/new/user/agency/getClubSales">
+    <div class="flex-content">
+        <div class="flex-box">
+            <div class="box-title">
+                <h4 class="H_tag">新注册机构统计</h4>
+                <span id="newClubScopeNum"></span>
+            </div>
+            <div class="box-tabmain">
+                <div class="box-tabs" id="clubTabs">
+                    <a class="box-tabs-li active" href="javascript: void(0);" data-type="4">全年</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="3">半年</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="2">月</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="1">日</a>
+                </div>
+                <div class="box-time" id="clubDate">
+                    <div class="time-input">
+                        <input type="text" placeholder="开始时间" class="input start" id="clubStartTime">
+                    </div>
+                    <span class="line">至</span>
+                    <div class="time-input">
+                        <input type="text" placeholder="结束时间" class="input end" id="clubEndTime">
+                    </div>
+                </div>
+            </div>
+            <div class="box-eachts">
+                <div class="eachts-data" id="clubEcharts" style="">
+                </div>
+                <div class="eachts-none" id="clubEchartsNone">
+                    <p>暂无数据</p>
+                </div>
+            </div>
+        </div>
+        <div class="flex-box">
+            <div class="box-title">
+                <H4 class="H_tag">机构咨询记录统计</H4>
+                <span id="clubRemarkScopeNum"></span>
+            </div>
+            <div class="box-tabmain">
+                <div class="box-time" id="remarkDate">
+                    <div class="time-input">
+                        <input type="text" placeholder="开始时间" class="input start" id="remarkStartTime">
+                    </div>
+                    <span class="line">至</span>
+                    <div class="time-input">
+                        <input type="text" placeholder="结束时间" class="input end" id="remarkEndTime">
+                    </div>
+                </div>
+                <div class="box-select">
+                    <select path="spID" id="remarkSelSp" class="input-medium" >
+                        <option value="" label="全部协销"/>
+                        <c:forEach items="${serList}" var="sp">
+                            <option value="${sp.serviceProviderId}">${sp.name}</option>
+                        </c:forEach>
+                    </select>
+                </div>
+                <div class="box-tabs" id="clubRemarkTabs">
+                    <a class="box-tabs-li active" href="javascript: void(0);" data-type="4">全年</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="3">半年</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="2">月</a>
+                    <a class="box-tabs-li" href="javascript: void(0);" data-type="1">日</a>
+                </div>
+            </div>
+            <div class="box-eachts">
+                <div class="eachts-data" id="clubRemarkEacths" style="">
+                    <!-- keyWordsEacths表 -->
+                </div>
+                <div class="eachts-none" id="clubRemarkEacthsNone">
+                    <p>暂无数据</p>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="flex-content">
+        <div class="flex-box max">
+            <div class="box-title">
+                <H4 class="H_tag">机构活跃趋势</H4>
+            </div>
+            <div class="box-tabmain">
+                <div class="box-time" id="clubActiveDate">
+                    <div class="time-input">
+                        <input type="text" placeholder="开始时间" class="input start" id="clubActiveStartTime">
+                    </div>
+                    <span class="line">至</span>
+                    <div class="time-input">
+                        <input type="text" placeholder="结束时间" class="input end" id="clubActiveEndTime">
+                    </div>
+                </div>
+                <div class="box-select">
+                    <select id="activeSelSp" class="input-medium">
+                        <option value="" label="全部协销"/>
+                        <c:forEach items="${serList}" var="sp">
+                            <option value="${sp.serviceProviderId}">${sp.name}</option>
+                        </c:forEach>
+                    </select>
+                </div>
+            </div>
+            <div class="box-eachts">
+                <div class="eachts-data" id="clubActiveEacths" style="">
+                    <!-- keyWordsEacths表 -->
+                </div>
+                <div class="eachts-none" id="clubActiveEacthsNone">
+                    <p>暂无数据</p>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script type="text/javascript" src="${ctxStatic}/datapicker/moment-2.29.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/datapicker/jquery.daterangepicker.js"></script>
+<script type="text/javascript" src="${ctxStatic}/echarts/echarts.min.js"></script>
+<script type="text/javascript" src="${ctxStatic}/modules/cmClubSales/cmClubSalesEachs.js"></script>
+<script type="text/javascript" src="${ctxStatic}/modules/cmClubSales/cmClubSales.js"></script>
+</body>
+</html>

+ 2 - 0
src/main/webapp/WEB-INF/views/modules/userNew/cmSpClubTrackList.jsp

@@ -102,9 +102,11 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
+	<li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
 	<li><a href="${ctx}/new/user/agency/list">机构基本资料列表</a></li>
 	<li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
 	<li class="active"><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
+	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
 	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
 	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
 </ul>

+ 0 - 2
src/main/webapp/WEB-INF/views/modules/userNew/cmSpForm.jsp

@@ -59,8 +59,6 @@
 		<li class="active"><a href="${ctx}/new/user/cmSp/cmSpForm?id=${cmSp.id}"><shiro:hasPermission name="user:newCmClub:edit">${not empty cmSp.id?'编辑':'添加'}</shiro:hasPermission><shiro:lacksPermission name="user:newCmClub:edit">查看</shiro:lacksPermission>协销人员</a></li>
 		<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 		<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
-		<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
-
 	</ul><br/>
 	<form id="inputForm" onsubmit="return false" action="##" method="post" class="form-horizontal">
 		<div class="control-group">

+ 0 - 2
src/main/webapp/WEB-INF/views/modules/userNew/cmSpList.jsp

@@ -34,8 +34,6 @@
 	<shiro:hasPermission name="user:newCmClub:edit"><li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li></shiro:hasPermission>
 	<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
 	<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
-	<li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
-
 </ul>
 <form:form id="searchForm" modelAttribute="newCmSp" action="${ctx}/new/user/cmSp/cmSpList/" method="post" class="breadcrumb form-search">
 	<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>

+ 7 - 6
src/main/webapp/WEB-INF/views/modules/userNew/cmSpLivelyClubList.jsp

@@ -49,13 +49,14 @@
 </head>
 <body>
 <ul class="nav nav-tabs">
-	<li><a href="${ctx}/new/user/cmSp/cmSpList/">协销人员列表</a></li>
-	<shiro:hasPermission name="user:newCmClub:edit">
-		<li><a href="${ctx}/new/user/cmSp/cmSpForm">添加协销人员</a></li>
-	</shiro:hasPermission>
-	<li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
-	<li><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
+	<li><a href="${ctx}/new/user/agency/clubSales">机构-协销列表</a></li>
+	<li><a href="${ctx}/new/user/agency/">机构基本资料列表</a></li>
+	<li><a href="${ctx}/new/user/agency/statisticsList">机构分析统计列表</a></li>
+	<li><a href="${ctx}/new/user/agency/cmSpClubTrackList">新分配机构跟踪管理</a></li>
 	<li class="active"><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
+	<li><a href="${ctx}/user/clubTemporary/">未确认机构</a></li>
+	<li><a href="${ctx}/user/cmOperational/">操作日志</a></li>
+	<li><a href="${ctx}/new/user/agency/distributionCLubList">分销系统机构列表</a></li>
 </ul>
 
 <ul class="breadcrumb livelyProportion" >

+ 0 - 2
src/main/webapp/WEB-INF/views/modules/userNew/cmSpTeamList.jsp

@@ -28,8 +28,6 @@
     </shiro:hasPermission>
     <li><a href="${ctx}/serviceteam/cmServiceteamRole/">协销小组</a></li>
     <li class="active"><a href="${ctx}/new/user/cmSp/leader/">协销总管理员</a></li>
-    <li><a href="${ctx}/new/user/cmSp/cmSpLivelyClubList/">机构活跃分析</a></li>
-
 </ul>
 <br/>
 <form:form id="inputForm" modelAttribute="newCmSp" action="${ctx}/new/user/cmSp/leader/save" method="post"

+ 187 - 0
src/main/webapp/static/modules/cmClubSales/cmClubSales.css

@@ -0,0 +1,187 @@
+
+.main-content{
+    width: 100%;
+    height: auto;
+    box-sizing: border-box;
+    padding: 15px 40px;
+    background-size: cover;
+}
+
+.flex-content{
+    width: 100%;
+    height: 100%;
+    display: flex;
+}
+.flex-content .flex-box{
+    width: 700px;
+    min-height: 400px;
+    border:1px solid rgba(192,192,192,0.4);
+    margin-left: 15px;
+    margin-top: 15px;
+    box-shadow: 0px 3px 6px 0px rgb(0,0,0,0.07);
+    padding: 10px;
+    box-sizing: border-box;
+    border-radius: 10px;
+}
+.flex-content .flex-box.max{
+    width:1415px;
+}
+.flex-content .flex-box.box1{
+    width: 1415px;
+    min-height: 100px;
+    margin-top: 0;
+}
+.flex-box .box-title{
+    width: 100%;
+    height: 24px;
+    float: left;
+    line-height: 24px;
+    box-sizing: border-box;
+    padding-left: 5px;
+}
+.flex-box .box-title span{
+    font-weight: bold;
+    font-size: 14px;
+    color: #FFFFFF;
+    margin-right: 18px;
+}
+.flex-box .box-title span a{
+    font-weight: normal;
+    color: #40E0D0;
+}
+.flex-box .box-title span em{
+    font-style: normal;
+    font-weight: normal;
+    color: #40E0D0;
+}
+.flex-box .box-title span a.line{
+    text-decoration: underline;
+}
+.flex-box .box-tabmain{
+    width: 100%;
+    height: 40px;
+    float: left;
+    line-height: 40px;
+}
+.flex-box .box-tabmain .box-tabs{
+    float: left;
+    color: #FFFFFF;
+}
+.flex-box .box-tabmain .box-tabs .box-tabs-li{
+    margin: 0 5px;
+    color: #333333;
+}
+.flex-box .box-tabmain .box-tabs-li.active{
+    color: #40E0D0;
+}
+.flex-box.box1  .box-tabmain .box-time{
+    float: left;
+    margin-left: 30px;
+}
+.flex-box .box-tabmain .box-time{
+    width: 320px;
+    height: 40px;
+    float: right;
+    box-sizing: border-box;
+    padding: 5px 0;
+}
+.flex-box .box-tabmain .box-time .time-input{
+    width: 148px;
+    box-sizing: border-box;
+    float: left;
+    position: relative;
+    border-radius: 2px;
+    height: 100%;
+}
+.flex-box .box-tabmain .box-time .time-input .input{
+    width: 100%;
+    height: 100%;
+    padding: 0 10px;
+    font-size: 12px;
+    line-height: 30px;
+    border-radius: 2px;
+    cursor: pointer;
+    margin-bottom: 0;
+    box-sizing: border-box;
+    float: left;
+    background: rgba(192,192,192,0.3);
+    border: none;
+    color: #333333;
+}
+.flex-box .box-tabmain .box-time .line{
+    line-height: 30px;
+    font-size: 12px;
+    color: #FFFFFF;
+    margin: 0 5px;
+    display: inline-block;
+    float: left;
+}
+.flex-box .box-select{
+    float: right;
+    box-sizing: border-box;
+    padding: 5px 0;
+}
+.H_tag {
+    color: #333333;
+}
+.flex-box .box-eachts{
+    width: 100%;
+    height: 316px;
+    float: left;
+    position: relative;
+}
+.flex-box .box-eachts.demand{
+    width: 100%;
+    height: auto;
+    box-sizing: border-box;
+    padding: 10px 0;
+}
+.flex-box .box-eachts.demand .empty{
+    font-size: 15px;
+    color: #FFFFFF;
+    text-align: left;
+    box-sizing: border-box;
+    padding-left:10px ;
+    font-weight: bold;
+    line-height: 40px;
+}
+.flex-box .box-eachts.demand .span_tab {
+    display: inline-block;
+    padding: 0 10px;
+    line-height: 28px;
+    font-size: 14px;
+    color: #FFFFFF;
+    background-color:rgba(64,224,208,0.5);
+    border-radius:6px;
+    text-align: center;
+    margin: 8px;
+}
+.flex-box .box-eachts .eachts-total{
+    color: #FFFFFF;
+    width: 50%;
+    height: 50px;
+    line-height: 25px;
+    font-size: 14px;
+    position: absolute;
+    bottom: 0;
+    left: 17%;
+}
+.flex-box .box-eachts .eachts-total span{
+    color: #FFFFFF;
+}
+.flex-box .box-eachts .eachts-data{
+    width: 100%;
+    height: 316px;
+}
+.flex-box .box-eachts .eachts-none{
+    width: 100%;
+    height: 316px;
+    display: none;
+}
+.flex-box .box-eachts .eachts-none p{
+    font-size: 24px;
+    font-weight: bold;
+    text-align: center;
+    line-height: 316px;
+    color: #FFFFFF;
+}

+ 44 - 0
src/main/webapp/static/modules/cmClubSales/cmClubSales.js

@@ -0,0 +1,44 @@
+
+
+$(function(){
+    // 机构客户需求初始化时间
+    getclubDate()
+    // 机构订单初始化时间
+    getclubRemarkDate();
+    // 机构搜索关键词初始化时间
+    getclubActiveDate();
+    // 第一次执行查所有
+    getClubSalesEacthsData(0,4);
+    getClubSalesEacthsData(1,4);
+    getClubSalesEacthsData(2,4);
+    // 点击筛选新注册机构统计数据
+    $('#clubTabs').children("a").each(function (index) {
+        $(this).click(function () {
+            console.log('新注册机构统计')
+            //alert(index);
+            $(this).addClass('active').siblings('a').removeClass('active');
+            let dateType = $(this).attr('data-type');
+            getClubSalesEacthsData(0, dateType)
+        });
+    });
+    // 点击筛选机构咨询记录统计数据
+    $('#clubRemarkTabs').children("a").each(function (index) {
+        $(this).click(function () {
+            console.log('机构咨询记录统计')
+            $(this).addClass('active').siblings('a').removeClass('active');
+            let dateType = $(this).attr('data-type');
+            getClubSalesEacthsData(1,dateType)
+        });
+    });
+    // 点击筛选机构咨询记录选择协销
+    $('#remarkSelSp').change( function () {
+        let dateType = $('#clubRemarkTabs .active').attr('data-type');
+        debugger;
+        remarkSelSp(1,dateType)
+    })
+
+    // 点击选择机构活跃趋势协销
+    $("#activeSelSp").change(function () {
+        activeSelSp(2, 4)
+    })
+})

+ 420 - 0
src/main/webapp/static/modules/cmClubSales/cmClubSalesEachs.js

@@ -0,0 +1,420 @@
+
+const getDateStr = function(dd, addCount) {
+    dd.setDate(dd.getDate() + addCount);//获取addCount天后的日期
+    var y = dd.getFullYear();
+    var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd.getMonth() + 1);//获取当前月份的日期,不足10补0
+    var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
+    return y + "/" + m + "/" + d;
+}
+// PC
+const isPC = ($(window).width() > 768);
+//默认参数
+const defaultParams = {
+    spID: '',
+    dateType:4,//   日期类别 1日 2月 3半年 4全年
+    startTime:'',//   开始时间
+    endTime:'',//   结束时间
+    type: 3 //  统计类别 0新注册机构统计 1机构咨询记录统计 2机构活跃趋势 3初始状态
+}
+// 默认时间
+const startDate = getDateStr(new Date(), -365),
+    endDate = getDateStr(new Date(), 0);
+// 初始化新注册机构选择时间控件
+const getclubDate = function () {
+    $('#clubDate').dateRangePicker({
+        language: 'cn',
+        startDate: startDate,
+        endDate: endDate,
+        format: 'YYYY-MM-DD',
+        showShortcuts: false,
+        autoClose: isPC,
+        isNowrap: false,
+        getValue: function () {
+            if (defaultParams.startTime && defaultParams.endTime) {
+                return defaultParams.startTime + ' to ' + defaultParams.endTime;
+            } else {
+                return '';
+            }
+        },
+        setValue: function (s, s1, s2) {
+            defaultParams.startTime = s1;
+            defaultParams.endTime = s2;
+            $('#clubStartTime').val(s1);
+            $('#clubEndTime').val(s2);
+            if (defaultParams.startTime && defaultParams.endTime) {
+                $('#clubTabs').find('a').removeClass('active');
+                getClubSalesEacthsData(0)
+            }
+        }
+    });
+}
+
+// 初始化机构咨询记录统计选择时间控件
+const getclubRemarkDate = function () {
+    $('#remarkDate').dateRangePicker({
+        language: 'cn',
+        startDate: startDate,
+        endDate: endDate,
+        format: 'YYYY-MM-DD',
+        showShortcuts: false,
+        autoClose: isPC,
+        isNowrap: false,
+        getValue: function () {
+            if (defaultParams.startTime && defaultParams.endTime) {
+                return defaultParams.startTime + ' to ' + defaultParams.endTime;
+            } else {
+                return '';
+            }
+        },
+        setValue: function (s, s1, s2) {
+            defaultParams.startTime = s1;
+            defaultParams.endTime = s2;
+            $('#remarkStartTime').val(s1);
+            $('#remarkEndTime').val(s2);
+            if (defaultParams.startTime && defaultParams.endTime) {
+                $('#clubRemarkTabs').find('a').removeClass('active');
+                getClubSalesEacthsData(1)
+            }
+        }
+    });
+}
+
+// 初始化机构活跃状态统计选择时间控件
+const getclubActiveDate = function () {
+    $('#clubActiveDate').dateRangePicker({
+        language: 'cn',
+        startDate: startDate,
+        endDate: endDate,
+        format: 'YYYY-MM-DD',
+        showShortcuts: false,
+        autoClose: isPC,
+        isNowrap: false,
+        getValue: function () {
+            if (defaultParams.startTime && defaultParams.endTime) {
+                return defaultParams.startTime + ' to ' + defaultParams.endTime;
+            } else {
+                return '';
+            }
+        },
+        setValue: function (s, s1, s2) {
+            defaultParams.startTime = s1;
+            defaultParams.endTime = s2;
+            $('#clubActiveStartTime').val(s1);
+            $('#clubActiveEndTime').val(s2);
+            if (defaultParams.startTime && defaultParams.endTime) {
+                $('#clubActiveTabs').find('a').removeClass('active');
+                getClubSalesEacthsData(2)
+            }
+        }
+    });
+}
+const remarkSelSp = function (type, dateType) {
+    defaultParams.spID = $('#remarkSelSp').val();
+    defaultParams.startTime = $('#remarkStartTime').val();
+    defaultParams.endTime = $('#remarkEndTime').val();
+    getClubSalesEacthsData(type, dateType)
+}
+
+const activeSelSp = function (type, dateType) {
+    defaultParams.spID = $('#activeSelSp').val();
+    defaultParams.startTime = $('#clubActiveStartTime').val();
+    defaultParams.endTime = $('#clubActiveEndTime').val();
+    getClubSalesEacthsData(type, dateType)
+}
+
+// 数据接口请求
+const  getClubSalesEacthsData = function (type,dateType) {
+    defaultParams.type = type;
+    defaultParams.dateType = dateType;
+    $.ajax({
+        url: $('#echartsAjaxUrl').val(),
+        type: "GET",
+        data: defaultParams,
+        contentType : 'application/json;charset=UTF-8', //contentType很重要
+        success: function (data) {
+            if (data.code === 0) {
+                switch (type) {
+                    case 0:
+                        if(!data.newClub){
+                            $('#clubEchartsNone').show();
+                            $('#clubEcharts').hide();
+                            $('#clubEndTime').val(data.newClub.endTime);
+                            $('#clubStartTime').val(data.newClub.startTime);
+                            $('#newClubScopeNum').text('0个');
+                        }else{
+                            setClubData(type,data)
+                        }
+                        break;
+                    case 1:
+                        if(!data.remarks){
+                            $('#clubRemarkEacthsNone').show();
+                            $('#clubRemarkEacths').hide();
+                            $('#remarkEndTime').val(data.remarks.endTime);
+                            $('#remarkStartTime').val(data.remarks.startTime);
+                            $('#clubRemarkScopeNum').text('0个');
+                        }else{
+                            getClubRemarkData(type,data)
+                        }
+                        break;
+                    case 2:
+                        if(!data.active){
+                            $('#clubActiveEacthsNone').show();
+                            $('#clubActiveEacths').hide();
+                            $('#clubActiveEndTime').val(data.active.endTime);
+                            $('#clubActiveStartTime').val(data.active.startTime);
+                        }else{
+                            setClubActiveData(type,data)
+                        }
+                        break;
+                }
+                defaultParams.startTime = '';
+                defaultParams.endTime = '';
+            } else {
+                console.log('机构订单图表数据异常')
+            }
+        }
+    });
+}
+
+// 设置新注册机构统计数据
+const setClubData = function (type,data) {
+    const clubMap = {
+        0:{ // 新注册机构统计
+            fn:function () {
+                $('.eachts-total').show();
+                $('#clubEcharts').show();
+                $('#clubEchartsNone').hide();
+                $('#clubEndTime').val(data.newClub.endTime);
+                $('#clubStartTime').val(data.newClub.startTime);
+                $('#newClubScopeNum').text(`${data.newClub.total}个`);
+            },
+            id:'clubEcharts',
+            series:{
+                name:'订单总量',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                seriesData: data.newClub.clubInfo
+            },
+        }
+    }
+    getClubEacths(clubMap[type].fn,clubMap[type].id,clubMap[type].series);
+}
+// 设置机构咨询记录数据
+const getClubRemarkData = function (type,data) {
+    const clubMap = {
+        1:{ // 机构咨询记录统计
+            fn:function () {
+                $('.eachts-total').show();
+                $('#clubRemarkEacths').show();
+                $('#clubRemarkEacthsNone').hide();
+                $('#remarkEndTime').val(data.remarks.endTime);
+                $('#remarkStartTime').val(data.remarks.startTime);
+                $('#clubRemarkScopeNum').text(`${data.remarks.total}个`);
+            },
+            id:'clubRemarkEacths',
+            series:{
+                name:'订单咨询记录',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                clubInfo: data.remarks.clubInfo
+            },
+            internal:{
+                name:'订单咨询记录',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                internalPortrait: data.remarks.internalPortrait,
+            },
+        }
+    }
+    getClubRemarkEacths(clubMap[type].fn,clubMap[type].id,clubMap[type].series,clubMap[type].internal);
+}
+// 设置机构活跃数据
+const setClubActiveData = function (type,data) {
+    const clubMap = {
+        2:{ // 机构活跃数据统计
+            fn:function () {
+                $('.eachts-total').show();
+                $('#clubActiveEacths').show();
+                $('#clubActiveEacthsNone').hide();
+                $('#clubActiveEndTime').val(data.active.endTime);
+                $('#clubActiveStartTime').val(data.active.startTime);
+            },
+            id:'clubActiveEacths',
+            name:{
+                name:'时间',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                times: data.active.name
+            },
+            active:{
+                name:'时间',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                clubActiveList: data.active.value,
+            },
+            unActive:{
+                name:'时间',
+                color:['#3aa0ff','#36cbcb','#fad337','#4dcb73','#f2637b','#975fe4'],
+                clubUnActiveList: data.active.value1
+            },
+        }
+    }
+    getClubActiveEacths(clubMap[type].fn, clubMap[type].id, clubMap[type].name, clubMap[type].active, clubMap[type].unActive);
+}
+// 基于准备好的dom,初始化echarts实例
+const getClubEacths = function (handleFn,id,data) {
+    // 基于准备好的dom,初始化echarts实例
+    handleFn();
+    const myChart = echarts.init(document.getElementById(id));
+    const option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        legend: {
+            orient: 'vertical',
+            right: '2%',
+            top:'30%',
+            textStyle: {
+                fontSize: 14,
+                color:'#333333'
+            },
+        },
+        color:data.color,
+        series: [
+            {
+                name: data.name,
+                type: 'pie',
+                radius: ['50%', '70%'],
+                center: ['25%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                    itemStyle: {
+                        shadowBlur: 10,
+                        shadowOffsetX: 0,
+                        shadowColor: 'rgba(0, 0, 0, 0.5)'
+                    }
+                },
+                label: {
+                    show: false,
+                    position: 'center'
+                },
+                data:data.seriesData
+            }
+        ]
+    };
+    // 使用刚指定的配置项和数据显示图表。
+    myChart.setOption(option);
+    window.onresize = myChart.resize;//移动适配
+};
+
+// 基于准备好的dom,初始化echarts实例
+const getClubRemarkEacths = function (handleFn,id,data,internal) {
+    // 基于准备好的dom,初始化echarts实例
+    handleFn();
+    const myChart = echarts.init(document.getElementById(id));
+    const option = {
+        tooltip: {
+            trigger: 'item'
+        },
+        legend: {
+            orient: 'vertical',
+            right: '2%',
+            top:'30%',
+            textStyle: {
+                fontSize: 14,
+                color:'#333333'
+            },
+        },
+        color:data.color,
+        series: [
+            {
+                name: internal.name,
+                type: 'pie',
+                radius: ['15%', '30%'],
+                center: ['25%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                    itemStyle: {
+                        shadowBlur: 10,
+                        shadowOffsetX: 0,
+                        shadowColor: 'rgba(0, 0, 0, 0.5)'
+                    }
+                },
+                label: {
+                    show: false,
+                    position: 'center'
+                },
+                data:internal.internalPortrait
+            },
+            {
+                name: data.name,
+                type: 'pie',
+                radius: ['50%', '70%'],
+                center: ['25%', '50%'],
+                avoidLabelOverlap: false,
+                emphasis: {
+                    itemStyle: {
+                        shadowBlur: 10,
+                        shadowOffsetX: 0,
+                        shadowColor: 'rgba(0, 0, 0, 0.5)'
+                    }
+                },
+                label: {
+                    show: false,
+                    position: 'center'
+                },
+                data:data.clubInfo
+            }
+        ]
+    };
+    // 使用刚指定的配置项和数据显示图表。
+    myChart.setOption(option);
+    window.onresize = myChart.resize;//移动适配
+};
+
+// 基于准备好的dom,初始化echarts实例
+const getClubActiveEacths = function (handleFn, id, data, active, unActive) {
+    // 基于准备好的dom,初始化echarts实例
+    handleFn();
+    const myChart = echarts.init(document.getElementById(id));
+    const option = {
+        tooltip: {
+            trigger: 'axis'
+        },
+        legend: {
+            data: ['活跃机构', '不活跃机构']
+        },
+        grid: {
+            left: '3%',
+            right: '4%',
+            bottom: '3%',
+            containLabel: true
+        },
+        toolbox: {
+            feature: {
+                saveAsImage: {}
+            }
+        },
+        xAxis: {
+            type: 'category',
+            boundaryGap: false,
+            data: data.times
+        },
+        yAxis: {
+            type: 'value'
+        },
+        series: [
+
+            {
+                name: '活跃用户',
+                type: 'line',
+                stack: 'Total',
+                data: active.clubActiveList
+            },
+            {
+                name: '不活跃用户',
+                type: 'line',
+                stack: 'Total',
+                data: unActive.clubUnActiveList
+            }
+        ]
+    };
+    // 使用刚指定的配置项和数据显示图表。
+    myChart.setOption(option);
+    window.onresize = myChart.resize;//移动适配
+};