浏览代码

用户画像优化

zhijiezhao 3 年之前
父节点
当前提交
3e2c98daae

+ 59 - 8
src/main/java/com/caimei365/user/controller/ClubApi.java

@@ -143,19 +143,31 @@ public class ClubApi {
         return clubService.archiveDeduction(userId, archiveId);
     }
 
-    @ApiOperation("机构资料备注列表")
+    @ApiOperation("注册客户咨询记录")
     @ApiImplicitParams({
             @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "keyWord", value = "模糊搜索关键词"),
+            @ApiImplicitParam(required = false, name = "startAddTime", value = "添加记录开始时间"),
+            @ApiImplicitParam(required = false, name = "endAddTime", value = "添加记录结束时间"),
+            @ApiImplicitParam(required = false, name = "consult", value = "咨询类别"),
+            @ApiImplicitParam(required = false, name = "leaderId", value = "管理员协销id"),
+            @ApiImplicitParam(required = false, name = "groupId", value = "组员协销id"),
+            @ApiImplicitParam(required = false, name = "manager", value = "是否是协销总管理员标记 1是,2否"),
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/remarks/list")
     public ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId,
                                                                String keyWord,
+                                                               String startAddTime,
+                                                               String endAddTime,
+                                                               String consult,
+                                                               Integer leaderId,
+                                                               Integer groupId,
+                                                               Integer manager,
                                                                @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        return clubService.getRemarksList(serviceProviderId, keyWord, pageNum, pageSize);
+        return clubService.getRemarksList(serviceProviderId, keyWord, startAddTime, endAddTime, consult, leaderId, groupId,manager, pageNum, pageSize);
     }
 
     @ApiOperation("机构资料备注详情")
@@ -173,6 +185,7 @@ public class ClubApi {
      *                        remarks:             文字备注,
      *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
      *                        imageList:   ["图片","图片",...]
+     *                        consult: (1,2) 咨询类别id,英文逗号隔开
      *                        }
      */
     @ApiOperation("保存机构资料备注")
@@ -221,7 +234,7 @@ public class ClubApi {
     /**
      * 潜在用户列表
      */
-    @ApiOperation("潜在用户列表")
+    @ApiOperation("未注册用户列表")
     @ApiImplicitParams({
             @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销id"),
             @ApiImplicitParam(required = false, name = "keyWord", value = "模糊搜索关键词"),
@@ -229,14 +242,20 @@ public class ClubApi {
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/remarks/visitor/list")
-    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId,
+    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(Integer serviceProviderId,
                                                                       String keyWord,
+                                                                      String startAddTime,
+                                                                      String endAddTime,
+                                                                      String consult,
+                                                                      Integer leaderId,
+                                                                      Integer groupId,
+                                                                      Integer manager,
                                                                       @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                       @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        if (null == serviceProviderId || "".equals(serviceProviderId)) {
+        if (null == serviceProviderId) {
             return ResponseJson.error("参数异常:协销id不能为空!", null);
         }
-        return clubService.getVisitorList(serviceProviderId, keyWord, pageNum, pageSize);
+        return clubService.getVisitorList(serviceProviderId, keyWord, startAddTime, endAddTime, consult, leaderId, groupId,manager, pageNum, pageSize);
     }
 
     /**
@@ -271,6 +290,7 @@ public class ClubApi {
      *                  remarks:             文字备注,
      *                  fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
      *                  imageList:   ["图片","图片",...]
+     *                  consult: (1,2) 咨询类别id,英文逗号隔开
      *                  }
      * @param visitor
      * @return
@@ -301,12 +321,19 @@ public class ClubApi {
     @GetMapping("/remarks/visitor/recordlist")
     public ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId,
                                                                           String keyWord,
+                                                                          Integer serviceProviderId,
+                                                                          String startAddTime,
+                                                                          String endAddTime,
+                                                                          String consult,
+                                                                          Integer leaderId,
+                                                                          Integer groupId,
+                                                                          Integer manager,
                                                                           @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                                           @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        if (null == questionManId || "".equals(questionManId)) {
+        if (null == serviceProviderId) {
             return ResponseJson.error("参数异常:协销id不能为空!", null);
         }
-        return clubService.getVisitorRecordList(keyWord, questionManId, pageNum, pageSize);
+        return clubService.getVisitorRecordList(questionManId,keyWord,serviceProviderId,startAddTime,endAddTime,consult,leaderId,groupId,manager,pageNum, pageSize);
     }
 
     @ApiOperation("删除潜在用户资料备注")
@@ -326,4 +353,28 @@ public class ClubApi {
         return clubService.concactVisitRemarks(clubId, questionManId);
     }
 
+    @ApiOperation("查询咨询类别")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "consults", value = "咨询类别id,英文逗号拼接,可不传")
+    })
+    @PostMapping("/consults")
+    public ResponseJson findConsults(String consults) {
+        return clubService.findConsults(consults);
+    }
+
+    @ApiOperation("查询小组组长和总管理员")
+    @PostMapping("/teams")
+    public ResponseJson findTeams() {
+        return clubService.findTeams();
+    }
+
+    @ApiOperation("根据组长协销id查组员")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "leaderId", value = "组长协销id")
+    })
+    @PostMapping("/teams/groups")
+    public ResponseJson findGroups(Integer leaderId) {
+        return clubService.findGroups(leaderId);
+    }
+
 }

+ 14 - 2
src/main/java/com/caimei365/user/mapper/ClubMapper.java

@@ -274,7 +274,19 @@ public interface ClubMapper {
 
     List<RemarksVo> getRemarksListByKey(@Param("keyWord") String keyWord, @Param("serviceProviderId") Integer serviceProviderId);
 
-    List<VisitorRemarkVo> getVisitorListByKey(@Param("serviceProviderId") String serviceProviderId, @Param("keyWord") String keyWord);
+    List<VisitorRemarkVo> getVisitorListByKey(@Param("serviceProviderId") Integer serviceProviderId, @Param("keyWord") String keyWord);
+    //, @Param("questionManId") String questionManId
+    List<VisitorRemarkVo> getVisitRecordListByKey(@Param("keyWord") String keyWord);
 
-    List<VisitorRemarkVo> getVisitRecordListByKey(@Param("keyWord")String keyWord,@Param("questionManId") String questionManId);
+    List<ConsultVo> findConsult();
+
+    List<TeamLederVo> findAllTeams();
+
+    List<TeamGroupVo> findGroups(Integer leaderId);
+
+    ConsultVo findConsultById(String string);
+
+    List<RemarksVo> findAllRemarks(@Param("keyWord") String keyWord, @Param("startAddTime") String startAddTime, @Param("endAddTime") String endAddTime, @Param("leaderId") Integer leaderId, @Param("groupId") Integer groupId);
+
+    List<VisitorRemarkVo> getAllVisitRemark(@Param("keyWord") String keyWord, @Param("startAddTime") String startAddTime, @Param("endAddTime") String endAddTime, @Param("leaderId") Integer leaderId, @Param("groupId") Integer groupId);
 }

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

@@ -70,4 +70,7 @@ public interface SellerMapper {
      */
     ServiceProviderPo getSellerByUserId(Integer userId);
 
+    Integer findManager(String mobile);
+
+    Integer findManagerByUser(Integer userId);
 }

+ 3 - 0
src/main/java/com/caimei365/user/model/po/ClubRemarksPo.java

@@ -29,6 +29,9 @@ public class ClubRemarksPo implements Serializable {
     @ApiModelProperty("文字备注")
     private String remarks;
 
+    @ApiModelProperty("咨询类别id,英文逗号隔开")
+    private String consult;
+
     @ApiModelProperty("咨询人姓名")
     private String questionMan;
 

+ 33 - 0
src/main/java/com/caimei365/user/model/vo/ConsultVo.java

@@ -0,0 +1,33 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class ConsultVo implements Serializable {
+
+    private Integer id;
+    /**
+     * 咨询类别名称
+     */
+    private String className;
+    /**
+     * 咨询类别状态1启用,2停用
+     */
+    private Integer status;
+    /**
+     * 咨询类别排序值
+     */
+    private Integer sortNumber;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+}

+ 15 - 1
src/main/java/com/caimei365/user/model/vo/RemarkVo.java

@@ -9,6 +9,7 @@ import java.util.List;
 
 @Data
 public class RemarkVo implements Serializable {
+    private Integer serviceProviderId;
     /**
      * 备注id
      */
@@ -39,14 +40,27 @@ public class RemarkVo implements Serializable {
      * 文件列表
      */
     private List<RemarksFileVo> fileList;
-
+    /**
+     * 咨询类别
+     */
+    private String consult;
     /**
      * 咨询人
      */
     private String questionMan;
 
+    private String questionManId;
+
     /**
      * 机构名称
      */
     private String clubName;
+    /**
+     * 管理员姓名
+     */
+    private String leaderName;
+    /**
+     * 记录人
+     */
+    private String recordName;
 }

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

@@ -23,6 +23,10 @@ public class RemarksVo implements Serializable {
      * 文字备注
      */
     private String remarks;
+    /**
+     * 咨询类别
+     */
+    private String consult;
     /**
      * 添加时间
      */
@@ -36,6 +40,10 @@ public class RemarksVo implements Serializable {
      * 机构id
      */
     private Integer clubId;
+    /**
+     * 机构名称
+     */
+    private String clubName;
     /**
      * 咨询人姓名
      */
@@ -53,5 +61,14 @@ public class RemarksVo implements Serializable {
     /**
      * 协销id
      */
-    private String serviceProviderId;
+    private Integer serviceProviderId;
+    /**
+     * 记录人
+     */
+    private String recordName;
+
+    /**
+     * 管理员姓名
+     */
+    private String leaderName;
 }

+ 4 - 0
src/main/java/com/caimei365/user/model/vo/ServiceProviderVo.java

@@ -23,4 +23,8 @@ public class ServiceProviderVo{
      * 协销状态,见表c_serviceproviderstatus或枚举ServiceProviderStatus
      */
     private Integer status;
+    /**
+     * 协销姓名
+     */
+    private String name;
 }

+ 12 - 0
src/main/java/com/caimei365/user/model/vo/TeamGroupVo.java

@@ -0,0 +1,12 @@
+package com.caimei365.user.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class TeamGroupVo implements Serializable {
+
+    private Integer groupId;
+    private String groupName;
+}

+ 28 - 0
src/main/java/com/caimei365/user/model/vo/TeamLederVo.java

@@ -0,0 +1,28 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class TeamLederVo implements Serializable {
+
+    private Integer teamId;
+    /**
+     * 组长协销id
+     */
+    private Integer leaderId;
+    /**
+     *   组长姓名
+     */
+    private String leaderName;
+    /**
+     * 	总管理员标记,1是,2否
+     */
+    private Integer manager;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+}

+ 3 - 0
src/main/java/com/caimei365/user/model/vo/UserLoginVo.java

@@ -144,4 +144,7 @@ public class UserLoginVo implements Serializable {
      */
     @ApiModelProperty("机构类型:1医美,2生美")
     private Integer firstClubType;
+
+    @ApiModelProperty("是否是协销总管理员标记 1是,2否")
+    private Integer manager;
 }

+ 12 - 1
src/main/java/com/caimei365/user/model/vo/VisitRemarkVo.java

@@ -9,7 +9,14 @@ import java.util.List;
 
 @Data
 public class VisitRemarkVo  implements Serializable {
-
+    /**
+     * 管理员
+     */
+    private String leaderName;
+    /**
+     * 记录人
+     */
+    private String recordName;
     /**
      * 潜在用户备注id
      */
@@ -28,6 +35,10 @@ public class VisitRemarkVo  implements Serializable {
      * 关键词列表
      */
     private List<String> remarks;
+    /**
+     * 咨询类别
+     */
+    private String consult;
     /**
      * 添加时间
      */

+ 12 - 1
src/main/java/com/caimei365/user/model/vo/VisitorRemarkVo.java

@@ -54,9 +54,20 @@ public class VisitorRemarkVo implements Serializable {
      * 图片列表
      */
     private List<String> imageList;
-
+    /**
+     * 咨询类别
+     */
+    private String consult;
     /**
      * 文件列表
      */
     private List<RemarksFileVo> fileList;
+    /**
+     * 管理员姓名
+     */
+    private String leaderName;
+    /**
+     * 记录人
+     */
+    private String recordName;
 }

+ 24 - 3
src/main/java/com/caimei365/user/service/ClubService.java

@@ -101,6 +101,7 @@ public interface ClubService {
      *                        remarks:             文字备注,
      *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
      *                        imageList:   ["图片","图片",...]
+     *                        consult: (1,2) 咨询类别id,英文逗号隔开
      *                        }
      * @return
      * @return
@@ -115,7 +116,14 @@ public interface ClubService {
      * @param pageSize          每页数量
      * @return
      */
-    ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId, String keyWord, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId,
+                                                        String keyWord,
+                                                        String startAddTime,
+                                                        String endAddTime,
+                                                        String consult,
+                                                        Integer leaderId,
+                                                        Integer manager,
+                                                        Integer groupId,int pageNum, int pageSize);
 
     /**
      * 获取机构资料备注详情
@@ -154,7 +162,14 @@ public interface ClubService {
      * @param serviceProviderId
      * @return
      */
-    ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId, String keyWord, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(Integer serviceProviderId,
+                                                               String keyWord,
+                                                               String startAddTime,
+                                                               String endAddTime,
+                                                               String consult,
+                                                               Integer leaderId,
+                                                               Integer manager,
+                                                               Integer groupId,int pageNum, int pageSize);
 
     /**
      * 修改潜在客户咨询人姓名
@@ -182,7 +197,7 @@ public interface ClubService {
      */
     ResponseJson<VisitRemarkVo> getVisitRemark(Integer remarksId);
 
-    ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String keyWord,String questionManId, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId,String keyWord,Integer serviceProviderId,String startAddTime,String endAddTime,String consult,Integer leaderId,Integer groupId,Integer manager, int pageNum, int pageSize);
 
     ResponseJson deleteVisitRemarks(String remarksId);
 
@@ -194,4 +209,10 @@ public interface ClubService {
      * @return
      */
     ResponseJson concactVisitRemarks(String clubId, String questionManId);
+
+    ResponseJson findConsults(String consults);
+
+    ResponseJson findTeams();
+
+    ResponseJson findGroups(Integer leaderId);
 }

+ 111 - 17
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -375,6 +375,7 @@ public class ClubServiceImpl implements ClubService {
      *                        remarks:             文字备注,
      *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
      *                        imageList:   ["图片","图片",...]
+     *                        consult: (1,2) 咨询类别id,英文逗号隔开
      *                        }
      * @return
      */
@@ -386,6 +387,7 @@ public class ClubServiceImpl implements ClubService {
             Integer remarksId = jsonObject.getInteger("remarksId");
             Integer serviceProviderId = jsonObject.getInteger("serviceProviderId");
             String remarks = jsonObject.getString("remarks");
+            String consult = jsonObject.getString("consult");
             String questionMan = jsonObject.getString("questionMan");
             if (null == clubId) {
                 return ResponseJson.error("参数异常,机构id不能为空");
@@ -401,6 +403,7 @@ public class ClubServiceImpl implements ClubService {
             clubRemarksPo.setServiceProviderId(serviceProviderId);
             clubRemarksPo.setRemarks(remarks);
             clubRemarksPo.setQuestionMan(questionMan);
+            clubRemarksPo.setConsult(consult);
             if (newRemarks) {
                 // 新增备注
                 clubMapper.insertRemarks(clubRemarksPo);
@@ -440,15 +443,25 @@ public class ClubServiceImpl implements ClubService {
     }
 
     @Override
-    public ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId, String keyWord, int pageNum, int pageSize) {
+    public ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId,
+                                                               String keyWord,
+                                                               String startAddTime,
+                                                               String endAddTime,
+                                                               String consult,
+                                                               Integer leaderId,
+                                                               Integer groupId,
+                                                               Integer manager,
+                                                               int pageNum, int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error("参数异常,协销id不能为空", null);
         }
-        PageInfo<RemarksVo> pageInfo=null;
-        if (StringUtils.isNotBlank(keyWord)) {
-            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getRemarksListByKey(keyWord, serviceProviderId));
+        PageInfo<RemarksVo> pageInfo = null;
+
+        if (null != manager && 1 == manager) {
+            //主管查所有注册客户咨询记录
+            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.findAllRemarks(keyWord, startAddTime, endAddTime, leaderId, groupId));
         } else {
-            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getRemarksList(serviceProviderId));
+            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getRemarksListByKey(keyWord, serviceProviderId));
         }
         ArrayList<RemarkVo> remarkVos = new ArrayList<>();
         pageInfo.getList().forEach(r -> {
@@ -461,11 +474,28 @@ public class ClubServiceImpl implements ClubService {
             } else {
                 strings.add(rk);
             }
+            if (StringUtils.isNotBlank(r.getConsult())) {
+                if (r.getConsult().contains(",")) {
+                    List<String> cons = Arrays.asList(r.getConsult().split(","));
+                    String Cons = "";
+                    for (String con : cons) {
+                        Cons += clubMapper.findConsultById(con).getClassName() + ",";
+                    }
+                    Cons = Cons.substring(0, Cons.length() - 1);
+                    remarkVo.setConsult(Cons);
+                } else {
+                    remarkVo.setConsult(clubMapper.findConsultById(r.getConsult()).getClassName());
+                }
+            }
+            remarkVo.setLeaderName(r.getLeaderName());
+            remarkVo.setRecordName(r.getRecordName());
+            remarkVo.setServiceProviderId(r.getServiceProviderId());
             remarkVo.setRemarks(strings);
             remarkVo.setQuestionMan(r.getQuestionMan());
             remarkVo.setRemarksId(r.getRemarksId());
             remarkVo.setAddTime(r.getAddTime());
             remarkVo.setClubName(clubMapper.findClubName(r.getClubId()));
+            remarkVo.setClubName(r.getClubName());
             remarkVos.add(remarkVo);
         });
         PaginationVo<RemarkVo> pageVo = new PaginationVo<>(remarkVos);
@@ -501,6 +531,7 @@ public class ClubServiceImpl implements ClubService {
         remarkVo.setFileList(fileList);
         remarkVo.setImageList(imageList);
         remarkVo.setAddTime(remarksVo.getAddTime());
+        remarkVo.setConsult(remarksVo.getConsult());
         return ResponseJson.success(remarkVo);
     }
 
@@ -644,16 +675,25 @@ public class ClubServiceImpl implements ClubService {
     }
 
     @Override
-    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId, String keyWord, int pageNum, int pageSize) {
+    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(Integer serviceProviderId,
+                                                                      String keyWord,
+                                                                      String startAddTime,
+                                                                      String endAddTime,
+                                                                      String consult,
+                                                                      Integer leaderId,
+                                                                      Integer groupId,
+                                                                      Integer manager,
+                                                                      int pageNum, int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error("参数异常,机构id不能为空", null);
         }
-        List<VisitorRemarkVo> remarksList=new ArrayList<>();
+        List<VisitorRemarkVo> remarksList = new ArrayList<>();
         PageHelper.startPage(pageNum, pageSize);
-        if(StringUtils.isNotBlank(keyWord)){
-            remarksList = clubMapper.getVisitorListByKey(serviceProviderId,keyWord);
-        }else{
-            remarksList = clubMapper.getVisitorList(serviceProviderId);
+        if (null != manager && 1 == manager) {
+            //主管查所有注册客户咨询记录
+            remarksList = clubMapper.getAllVisitRemark(keyWord, startAddTime, endAddTime, leaderId, groupId);
+        } else {
+            remarksList = clubMapper.getVisitorListByKey(serviceProviderId, keyWord);
         }
         return ResponseJson.success(new PaginationVo<>(remarksList));
     }
@@ -672,6 +712,7 @@ public class ClubServiceImpl implements ClubService {
             Integer remarksId = jsonObject.getInteger("remarksId");
             Integer serviceProviderId = jsonObject.getInteger("serviceProviderId");
             String remarks = jsonObject.getString("remarks");
+            String consult = jsonObject.getString("consult");
             if (null == questionManId) {
                 return ResponseJson.error("参数异常,咨询人id不能为空");
             }
@@ -685,6 +726,7 @@ public class ClubServiceImpl implements ClubService {
             visitorRemarkVo.setQuestionManId(questionManId);
             visitorRemarkVo.setServiceProviderId(serviceProviderId);
             visitorRemarkVo.setRemarks(remarks);
+            visitorRemarkVo.setConsult(consult);
             visitorRemarkVo.setQuestionMan(clubMapper.findQuestionMan(questionManId));
             if (newRemarks) {
                 // 新增备注
@@ -753,12 +795,13 @@ public class ClubServiceImpl implements ClubService {
     }
 
     @Override
-    public ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String keyWord,String questionManId, int pageNum, int pageSize) {
+    public ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId, String keyWord, Integer serviceProviderId, String startAddTime, String endAddTime, String consult, Integer leaderId, Integer groupId, Integer manager, int pageNum, int pageSize) {
         PageInfo<VisitorRemarkVo> remarksList = null;
-        if(StringUtils.isNotBlank(keyWord)){
-            remarksList = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getVisitRecordListByKey(keyWord,questionManId));
-        }else{
-            remarksList = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getVisitRecordList(questionManId));
+        if (null != manager && 1 == manager) {
+            //主管查所有注册客户咨询记录
+            remarksList = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getAllVisitRemark(keyWord, startAddTime, endAddTime, leaderId, groupId));
+        } else {
+            remarksList = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getVisitRecordListByKey(keyWord));
         }
         ArrayList<VisitRemarkVo> remarkVos = new ArrayList<>();
         remarksList.getList().forEach(r -> {
@@ -771,10 +814,27 @@ public class ClubServiceImpl implements ClubService {
             } else {
                 strings.add(rk);
             }
+            if (StringUtils.isNotBlank(r.getConsult())) {
+                if (r.getConsult().contains(",")) {
+                    List<String> cons = Arrays.asList(r.getConsult().split(","));
+                    String Cons = "";
+                    for (String con : cons) {
+                        Cons += clubMapper.findConsultById(con).getClassName() + ",";
+                    }
+                    Cons = Cons.substring(0, Cons.length() - 1);
+                    visit.setConsult(Cons);
+                } else {
+                    visit.setConsult(clubMapper.findConsultById(r.getConsult()).getClassName());
+                }
+            }
+            visit.setQuestionMan(clubMapper.findQuestionMan(r.getQuestionManId()));
+            visit.setLeaderName(r.getLeaderName());
             visit.setRemarks(strings);
             visit.setAddDate(r.getAddDate());
             visit.setRemarksId(r.getRemarksId());
             visit.setQuestionManId(r.getQuestionManId());
+            visit.setServiceProviderId(r.getServiceProviderId());
+            visit.setRecordName(r.getRecordName());
             remarkVos.add(visit);
         });
         PaginationVo<VisitRemarkVo> pageVo = new PaginationVo<>(remarkVos);
@@ -821,7 +881,8 @@ public class ClubServiceImpl implements ClubService {
             remarksVo.setClubId(Integer.valueOf(v.getClubId()));
             remarksVo.setQuestionMan(questionMan);
             remarksVo.setAddTime(v.getAddDate());
-            remarksVo.setServiceProviderId(v.getServiceProviderId().toString());
+            remarksVo.setServiceProviderId(v.getServiceProviderId());
+            remarksVo.setConsult(v.getConsult());
             clubMapper.concactVisit(remarksVo);
             if (null != imageList && imageList.size() > 0) {
                 imageList.forEach(i -> clubMapper.insertRemarksImage(remarksVo.getRemarksId(), i));
@@ -832,4 +893,37 @@ public class ClubServiceImpl implements ClubService {
         });
         return ResponseJson.success("同步成功");
     }
+
+    @Override
+    public ResponseJson findConsults(String consults) {
+        if (StringUtils.isBlank(consults)) {
+            //如果传空,查所有咨询类别
+            List<ConsultVo> list = clubMapper.findConsult();
+            return ResponseJson.success(list);
+        } else {
+            //不传空判断逗号
+            if (consults.contains(",")) {
+                List<String> strings = Arrays.asList(consults.split(","));
+                List<ConsultVo> consultVos = new ArrayList<>();
+                for (String string : strings) {
+                    consultVos.add(clubMapper.findConsultById(string));
+                }
+                return ResponseJson.success(consultVos);
+            } else {
+                return ResponseJson.success(clubMapper.findConsultById(consults));
+            }
+        }
+    }
+
+    @Override
+    public ResponseJson findTeams() {
+        List<TeamLederVo> list = clubMapper.findAllTeams();
+        return ResponseJson.success(list);
+    }
+
+    @Override
+    public ResponseJson findGroups(Integer leaderId) {
+        List<TeamGroupVo> groups = clubMapper.findGroups(leaderId);
+        return ResponseJson.success(groups);
+    }
 }

+ 5 - 5
src/main/java/com/caimei365/user/service/impl/LoginServiceImpl.java

@@ -5,10 +5,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.caimei365.user.components.CommonService;
 import com.caimei365.user.components.RedisService;
 import com.caimei365.user.components.WeChatService;
-import com.caimei365.user.mapper.LoginMapper;
-import com.caimei365.user.mapper.OperationMapper;
-import com.caimei365.user.mapper.RegisterMapper;
-import com.caimei365.user.mapper.SuperVipMapper;
+import com.caimei365.user.mapper.*;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.AuthBindDto;
 import com.caimei365.user.model.dto.LoginPasswordDto;
@@ -56,7 +53,8 @@ public class LoginServiceImpl implements LoginService {
     private OperationMapper operationMapper;
     @Resource
     private AsyncService asyncService;
-
+    @Resource
+    private SellerMapper sellerMapper;
     /**
      * 小程序邀请码过期天数
      */
@@ -173,6 +171,7 @@ public class LoginServiceImpl implements LoginService {
             // 为了过期续签,将token存入redis,并设置超时时间
             redisService.set(sellerToken, sellerToken, JwtUtil.getExpireTime());
             seller.setToken(sellerToken);
+            seller.setManager(sellerMapper.findManagerByUser(seller.getUserId()));
             return ResponseJson.success(seller);
         }
         // 运营人员授权登录
@@ -322,6 +321,7 @@ public class LoginServiceImpl implements LoginService {
 //        }
         // 登录异步赠送10采美豆
         asyncService.loginUpdateBeans(loginUser.getUserId(), loginUser.getUserIdentity());
+        loginUser.setManager(sellerMapper.findManagerByUser(loginUser.getUserId()));
         log.info("【登录】-----登录成功,userId:" + loginUser.getUserId());
         return ResponseJson.success("登录成功", loginUser);
     }

+ 1 - 0
src/main/java/com/caimei365/user/service/impl/SellerServiceImpl.java

@@ -106,6 +106,7 @@ public class SellerServiceImpl implements SellerService {
         String openId = (String) infoData.get(WeChatService.Keys.OPEN_ID);
         sellerMapper.updateServiceProviderByUserId(seller.getUserId(), openId, unionId);
         log.info("协销账号密码登录openid>>>>" + openId + " ,unionId>>>>>" + unionId);
+        seller.setManager(sellerMapper.findManager(mobile));
         return ResponseJson.success(seller);
     }
 

+ 122 - 21
src/main/resources/mapper/ClubMapper.xml

@@ -3,8 +3,8 @@
 <mapper namespace="com.caimei365.user.mapper.ClubMapper">
     <insert id="insertRemarks" parameterType="com.caimei365.user.model.po.ClubRemarksPo" keyProperty="remarksId"
             useGeneratedKeys="true">
-        insert into cm_club_remarks(clubId, serviceProviderId, remarks, addTime, questionMan)
-        values (#{clubId}, #{serviceProviderId}, #{remarks}, now(), #{questionMan})
+        insert into cm_club_remarks(clubId, serviceProviderId, remarks, addTime, questionMan,consultType)
+        values (#{clubId}, #{serviceProviderId}, #{remarks}, now(), #{questionMan},#{consult})
     </insert>
     <insert id="insertRemarksImage">
         insert into cm_club_remarks_file(remarksId, fileType, imageUrl)
@@ -19,8 +19,8 @@
         values (#{questionManId}, #{serviceProviderId}, #{remarks}, now(), #{questionMan}, #{concactTime})
     </insert>
     <insert id="insertVisitorRemark" keyProperty="remarksId" useGeneratedKeys="true">
-        insert into cm_visitor_remarks(questionMan,questionManId, serviceProviderId, remarks, addTime)
-        values (#{questionMan},#{questionManId}, #{serviceProviderId}, #{remarks}, now())
+        insert into cm_visitor_remarks(questionMan, questionManId, serviceProviderId, remarks, addTime,consultType)
+        values (#{questionMan}, #{questionManId}, #{serviceProviderId}, #{remarks}, now(),#{consult})
     </insert>
     <insert id="insertVisitorRemarksImage">
         insert into cm_visitor_remarks_file(remarksId, fileType, imageUrl)
@@ -32,8 +32,8 @@
     </insert>
     <insert id="concactVisit" parameterType="com.caimei365.user.model.vo.RemarksVo" keyProperty="remarksId"
             useGeneratedKeys="true">
-        insert into cm_club_remarks(clubId, serviceProviderId, remarks, addTime, questionMan, concactTime)
-        values (#{clubId}, #{serviceProviderId}, #{remarks}, #{addTime}, #{questionMan}, now())
+        insert into cm_club_remarks(clubId, serviceProviderId, remarks, addTime, questionMan, concactTime,consultType)
+        values (#{clubId}, #{serviceProviderId}, #{remarks}, #{addTime}, #{questionMan}, now(),#{consult})
     </insert>
     <update id="updateClubUserByUpdateInfo">
         update user set
@@ -199,7 +199,8 @@
     <update id="updateRemarks">
         update cm_club_remarks
         set remarks     = #{remarks},
-            questionMan = #{questionMan}
+            questionMan = #{questionMan},
+            consultType = #{consult}
         where id = #{remarksId}
     </update>
     <update id="updateQuestionMan">
@@ -210,7 +211,8 @@
     </update>
     <update id="updateVisitorRemark">
         update cm_visitor_remarks
-        set remarks = #{remarks}
+        set remarks = #{remarks},
+            consultType = #{consult}
         where id = #{remarksId}
     </update>
     <update id="updateVisit">
@@ -276,7 +278,7 @@
         order by addTime desc
     </select>
     <select id="getRemarks" resultType="com.caimei365.user.model.vo.RemarksVo">
-        select ccr.id as remarksId, ccr.remarks, ccr.questionMan, ccr.addTime, ccr.clubId, c.userID
+        select ccr.id as remarksId, ccr.remarks, ccr.questionMan, ccr.addTime, ccr.clubId, c.userID,IFNULL(ccr.consultType,'')as consult
         from cm_club_remarks ccr
                  left join club c on ccr.clubId = c.clubId
         where id = #{remarksId}
@@ -366,7 +368,7 @@
         ORDER BY addTime DESC
     </select>
     <select id="getVisitRemark" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
-        select id as remarksId, questionManId, remarks, questionMan, addTime as addDate
+        select id as remarksId, questionManId, remarks, questionMan, addTime as addDate,IFNULL(consultType,'') as consult
         from cm_visitor_remarks
         where id = #{remarksId}
           AND remarks IS NOT NULL
@@ -405,6 +407,7 @@
                addTime as addDate,
                questionMan,
                clubId,
+               consultType as consult,
                concactTime
         from cm_visitor_remarks
         where questionManId = #{questionManId}
@@ -417,32 +420,130 @@
           AND questionMan IS NOT NULL
     </select>
     <select id="getRemarksListByKey" resultType="com.caimei365.user.model.vo.RemarksVo">
-        select ccr.id as remarksId, ccr.remarks, ccr.addTime, ccr.questionMan, ccr.clubId
+        select ccr.id as remarksId, ccr.remarks, ccr.addTime, ccr.questionMan, ccr.clubId,c.Name as clubName,ccr.serviceProviderId,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName
         from cm_club_remarks ccr
-                 LEFT JOIN club c ON c.clubID = ccr.clubId
+        LEFT JOIN club c ON c.clubID = ccr.clubId
         where ccr.serviceProviderId = #{serviceProviderId}
-            AND ccr.remarks LIKE CONCAT('%', #{keyWord}, '%')
+        <if test="keyWord != null and keyWord != ''">
+           AND ccr.remarks LIKE CONCAT('%', #{keyWord}, '%')
            OR c.name LIKE CONCAT('%', #{keyWord}, '%')
            OR ccr.questionMan LIKE CONCAT('%', #{keyWord}, '%')
+        </if>
         order by addTime desc
     </select>
     <select id="getVisitorListByKey" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
         SELECT questionManId, serviceProviderId, addTime as addDate, questionMan
         FROM cm_visitor_remarks
         WHERE serviceProviderId = #{serviceProviderId}
+         <if test="keyWord != null and keyWord != ''">
           and questionMan LIKE CONCAT('%', #{keyWord}, '%')
+         </if>
           and clubId is null
         GROUP BY questionManId
         ORDER BY addTime DESC
     </select>
     <select id="getVisitRecordListByKey" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
-        select id as remarksId, questionManId, remarks, addTime as addDate, questionMan
-        from cm_visitor_remarks
-        where questionManId = #{questionManId}
-          and questionMan LIKE CONCAT('%', #{keyWord}, '%')
-          OR remarks  LIKE CONCAT('%', #{keyWord}, '%')
-          AND remarks IS NOT NULL
-          and clubId is null
-        ORDER BY ADDTIME DESC
+        select ccr.id as remarksId, ccr.questionManId, ccr.remarks, ccr.addTime as addDate, ccr.questionMan,IFNULL(ccr.consultType,'') as consult,ccr.serviceProviderId,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName,
+        (select name from serviceprovider s where s.serviceProviderID = csr.leaderId) as leaderName
+        from cm_visitor_remarks ccr
+        left join cm_serviceteam_group csg on csg.serviceId = ccr.serviceProviderID
+        left join cm_serviceteam_role csr on csr.id = csg.teamId
+        left join serviceprovider s on ccr.serviceProviderID = s.serviceProviderID
+        where ccr.remarks IS NOT NULL
+        and ccr.clubId is null
+        <if test="keyWord != null and keyWord != ''">
+           and ccr.questionMan LIKE CONCAT('%', #{keyWord}, '%')
+           OR ccr.remarks LIKE CONCAT('%', #{keyWord}, '%')
+        </if>
+        ORDER BY ccr.ADDTIME DESC
+    </select>
+    <select id="findConsult" resultType="com.caimei365.user.model.vo.ConsultVo">
+        select id, className, status, sortNumber, createdTime
+        from cm_consulttype
+        where delflag = 0
+          and status = 1
+    </select>
+    <select id="findAllTeams" resultType="com.caimei365.user.model.vo.TeamLederVo">
+        select csr.id as teamId, csr.leaderId,IF(csm.serviceproviderId IS NULL,2,1) as manager, csr.createdTime, s.name as leaderName
+        from cm_serviceteam_role csr
+        left join serviceprovider s on csr.leaderId = s.serviceProviderID
+        LEFT JOIN cm_serviceteam_manager csm ON csr.leaderId = csm.serviceproviderId
+        where csr.delflag = 0
+    </select>
+    <select id="findGroups" resultType="com.caimei365.user.model.vo.TeamGroupVo">
+        select serviceProviderId as groupId, name as groupName
+        from serviceprovider s
+        left join cm_serviceteam_group csg on s.serviceProviderID = csg.serviceId
+        left join cm_serviceteam_role csr on csr.id = csg.teamId
+        where csr.leaderId = #{leaderId}
+    </select>
+    <select id="findConsultById" resultType="com.caimei365.user.model.vo.ConsultVo">
+        select id, className, status, sortNumber, createdTime
+        from cm_consulttype
+        where delflag = 0
+          and status = 1
+          and id = #{string}
+    </select>
+    <select id="findAllRemarks" resultType="com.caimei365.user.model.vo.RemarksVo">
+        SELECT ccr.id AS remarksId, ccr.remarks,ccr.addTime,ccr.questionMan,ccr.serviceProviderId as serviceProviderId,
+        csr.leaderId AS leaderId,IFNULL(ccr.consultType,'') as consult, c.Name as clubName,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID= csr.leaderId) AS leaderName,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName
+        FROM cm_club_remarks ccr
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN club c ON c.clubId=ccr.clubId
+        LEFT JOIN cm_serviceTeam_role csr ON csr.leaderId = ccr.serviceProviderId
+        LEFT JOIN cm_serviceTeam_group csg ON csr.id=csg.teamId
+        <where>
+            <if test="keyWord != null and keyWord !=''">
+                AND ccr.remarks LIKE concat('%',#{keyWord},'%')
+                or ccr.questionMan LIKE CONCAT('%', #{keyWord}, '%')
+            </if>
+            <if test="leaderId != null and leaderId>0">
+                and csr.leaderId = #{leaderId}
+            </if>
+            <if test="groupId != null and groupId>0">
+                and csg.serviceId = #{groupId}
+            </if>
+            <if test="startAddTime != null and startAddTime !=''">
+                and ccr.addTime <![CDATA[  >  ]]> #{startAddTime}
+            </if>
+            <if test="endAddTime != null and endAddTime != ''">
+                and ccr.addTime <![CDATA[  <  ]]> #{endAddTime}
+            </if>
+        </where>
+        ORDER BY ccr.ADDTIME DESC
+    </select>
+    <select id="getAllVisitRemark" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
+        SELECT ccr.id AS remarksId, ccr.remarks,ccr.addTime,ccr.questionMan,IFNULL(ccr.consultType,'') as consult,ccr.serviceProviderId,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = csr.leaderId) AS leaderName,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName
+        FROM cm_visitor_remarks ccr
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN cm_serviceTeam_role csr ON csr.leaderId = ccr.serviceProviderId
+        LEFT JOIN cm_serviceTeam_group csg ON csr.id=csg.teamId
+        <where>
+            and ccr.remarks IS NOT NULL
+            and ccr.clubId is null
+            <if test="remarks != null and remarks !=''">
+                AND ccr.remarks LIKE concat('%',#{keyWord},'%')
+                or ccr.questionMan LIKE CONCAT('%', #{keyWord}, '%')
+            </if>
+            <if test="leaderId != null and leaderId>0">
+                and csr.leaderId = #{leaderId}
+            </if>
+            <if test="groupId != null and groupId>0">
+                and csg.serviceId = #{groupId}
+            </if>
+            <if test="startAddTime != null and startAddTime !=''">
+                and ccr.addTime <![CDATA[  >  ]]> #{startAddTime}
+            </if>
+            <if test="endAddTime != null and endAddTime != ''">
+                and ccr.addTime <![CDATA[  <  ]]> #{endAddTime}
+            </if>
+        </where>
+        ORDER BY ccr.ADDTIME DESC
     </select>
 </mapper>

+ 12 - 0
src/main/resources/mapper/SellerMapper.xml

@@ -149,4 +149,16 @@
                mainServiceProviderID AS mainServiceProviderId
         from serviceprovider where userID = #{userId}
     </select>
+    <select id="findManager" resultType="java.lang.Integer">
+        SELECT IF(csm.serviceProviderId IS NULL,2,1) AS manager FROM  cm_serviceteam_manager csm
+        LEFT JOIN serviceprovider s ON csm.serviceProviderId = s.serviceProviderId
+        LEFT JOIN USER u ON s.userId = u.userId
+        WHERE u.bindmobile = #{mobile} OR u.mobile = #{mobile}
+    </select>
+    <select id="findManagerByUser" resultType="java.lang.Integer">
+        SELECT IF(csm.serviceProviderId IS NULL,2,1) AS manager
+        FROM  cm_serviceteam_manager csm
+        LEFT JOIN serviceprovider s ON csm.serviceProviderId = s.serviceProviderId
+        WHERE s.userID  = #{userId}
+    </select>
 </mapper>