Browse Source

Merge remote-tracking branch 'remotes/origin/developer' into developerA

Aslee 3 years ago
parent
commit
464456ff94

+ 143 - 19
src/main/java/com/caimei365/user/controller/ClubApi.java

@@ -5,10 +5,7 @@ import com.caimei365.user.model.dto.ClubRemarksDto;
 import com.caimei365.user.model.dto.ClubUpdateDto;
 import com.caimei365.user.model.dto.DeductionDto;
 import com.caimei365.user.model.dto.JsonParamsDto;
-import com.caimei365.user.model.vo.BeansHistoryVo;
-import com.caimei365.user.model.vo.OperationVo;
-import com.caimei365.user.model.vo.PaginationVo;
-import com.caimei365.user.model.vo.RemarksVo;
+import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ClubService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -130,7 +127,7 @@ public class ClubApi {
                                                           @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                           @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (userId == null || year == null || month == null) {
-            return ResponseJson.error("参数异常",null);
+            return ResponseJson.error("参数异常", null);
         }
         return clubService.beansHistory(userId, year, month, type, pageNum, pageSize);
     }
@@ -148,33 +145,35 @@ public class ClubApi {
 
     @ApiOperation("机构资料备注列表")
     @ApiImplicitParams({
-            @ApiImplicitParam(required = true, name = "clubId", value = "机构Id"),
+            @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id"),
+            @ApiImplicitParam(required = false, name = "keyWord", value = "模糊搜索关键词"),
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
     @GetMapping("/remarks/list")
-    public ResponseJson<PaginationVo<RemarksVo>> getRemarksList(Integer clubId,
-                                                             @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                                             @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
-        return clubService.getRemarksList(clubId, pageNum, pageSize);
+    public ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId,
+                                                               String keyWord,
+                                                               @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                               @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return clubService.getRemarksList(serviceProviderId, keyWord, pageNum, pageSize);
     }
 
     @ApiOperation("机构资料备注详情")
     @ApiImplicitParam(required = true, name = "remarksId", value = "机构id")
     @GetMapping("/remarks/detail")
-    public ResponseJson<RemarksVo> getRemarksDetail(Integer remarksId) {
+    public ResponseJson<RemarkVo> getRemarksDetail(Integer remarksId) {
         return clubService.getRemarksDetail(remarksId);
     }
 
     /**
-     * @param jsonParamsDto:{
-     *                     remarksId:           备注id,
-     *                     机构id:               机构id,
-     *                     serviceProviderId:   协销id,
-     *                     remarks:             文字备注,
-     *                     fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
-     *                     imageList:   ["图片","图片",...]
-     *                    }
+     * @param jsonParamsDto:{ remarksId:           备注id,
+     *                        机构id:               机构id,
+     *                        questionMan:        咨询人姓名,
+     *                        serviceProviderId:   协销id,
+     *                        remarks:             文字备注,
+     *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                        imageList:   ["图片","图片",...]
+     *                        }
      */
     @ApiOperation("保存机构资料备注")
     @PostMapping("/remarks/save")
@@ -202,4 +201,129 @@ public class ClubApi {
         return clubService.getPersonalData(userId);
     }
 
+
+    /**
+     * 添加潜在用户咨询人
+     */
+    @ApiOperation("添加潜在用户咨询人")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "name", value = "咨询人姓名"),
+            @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销id")
+    })
+    @GetMapping("/remarks/visitor/save")
+    public ResponseJson<Map<String, String>> addVisitorClub(String name, String serviceProviderId) {
+        if (null == name || "".equals(name)) {
+            return ResponseJson.error("参数异常:咨询人姓名不能为空!", null);
+        }
+        return clubService.saveVisitorName(name, serviceProviderId);
+    }
+
+    /**
+     * 潜在用户列表
+     */
+    @ApiOperation("潜在用户列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销id"),
+            @ApiImplicitParam(required = false, name = "keyWord", value = "模糊搜索关键词"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/remarks/visitor/list")
+    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId,
+                                                                      String keyWord,
+                                                                      @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                      @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        if (null == serviceProviderId || "".equals(serviceProviderId)) {
+            return ResponseJson.error("参数异常:协销id不能为空!", null);
+        }
+        return clubService.getVisitorList(serviceProviderId, keyWord, pageNum, pageSize);
+    }
+
+    /**
+     * 修改潜在用户咨询人姓名
+     */
+    @ApiOperation("修改潜在用户咨询人姓名")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销id"),
+            @ApiImplicitParam(required = true, name = "questionMan", value = "咨询人姓名"),
+            @ApiImplicitParam(required = true, name = "questionManId", value = "咨询人id")
+    })
+    @GetMapping("/remarks/visitor/update")
+    public ResponseJson<String> updateName(String serviceProviderId, String questionMan, String questionManId) {
+        if (null == serviceProviderId || "".equals(serviceProviderId)) {
+            return ResponseJson.error("参数异常:协销id不能为空!", null);
+        }
+        if (null == questionMan || "".equals(questionMan)) {
+            return ResponseJson.error("参数异常:咨询人不能为空!", null);
+        }
+        if (null == questionManId || "".equals(questionManId)) {
+            return ResponseJson.error("参数异常:咨询人id不能为空!", null);
+        }
+        return clubService.updateVisitor(serviceProviderId, questionMan, questionManId);
+    }
+
+    /**
+     * 添加/修改潜在用户记录
+     *
+     * @param visitor:{ remarksId:              备注id,
+     *                  questionManId:               咨询人id,
+     *                  serviceProviderId:   协销id,
+     *                  remarks:             文字备注,
+     *                  fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                  imageList:   ["图片","图片",...]
+     *                  }
+     * @param visitor
+     * @return
+     */
+    @ApiOperation("添加/修改潜在用户记录")
+    @PostMapping("/remarks/save/visit")
+    public ResponseJson saveVisit(JsonParamsDto visitor) {
+        return clubService.saveVisitRecord(visitor);
+    }
+
+    @ApiOperation("潜在用户资料备注详情")
+    @ApiImplicitParam(required = true, name = "remarksId", value = "资料id")
+    @GetMapping("/remarks/detail/visit")
+    public ResponseJson<VisitRemarkVo> getVisitRemarksDetail(Integer remarksId) {
+        return clubService.getVisitRemark(remarksId);
+    }
+
+    /**
+     * 潜在用户咨询人记录列表
+     */
+    @ApiOperation("潜在用户咨询人记录列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "questionManId", value = "咨询人id"),
+            @ApiImplicitParam(required = false, name = "keyWord", value = "模糊搜索关键词"),
+            @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
+            @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
+    })
+    @GetMapping("/remarks/visitor/recordlist")
+    public ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String questionManId,
+                                                                          String keyWord,
+                                                                          @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                          @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        if (null == questionManId || "".equals(questionManId)) {
+            return ResponseJson.error("参数异常:协销id不能为空!", null);
+        }
+        return clubService.getVisitorRecordList(keyWord, questionManId, pageNum, pageSize);
+    }
+
+    @ApiOperation("删除潜在用户资料备注")
+    @ApiImplicitParam(required = true, name = "remarksId", value = "备注id")
+    @PostMapping("/remarks/delete/visit")
+    public ResponseJson deleteVisitRemarks(String remarksId) {
+        return clubService.deleteVisitRemarks(remarksId);
+    }
+
+    @ApiOperation("同步潜在用户到机构")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "clubId", value = "机构id"),
+            @ApiImplicitParam(required = true, name = "questionManId", value = "咨询人id")
+    })
+    @PostMapping("/remarks/concact/visit")
+    public ResponseJson concactVisitRemarks(String clubId, String questionManId) {
+        return clubService.concactVisitRemarks(clubId, questionManId);
+    }
+
 }

+ 61 - 5
src/main/java/com/caimei365/user/mapper/ClubMapper.java

@@ -118,14 +118,16 @@ public interface ClubMapper {
 
     /**
      * 查询商品资料抵扣采美豆记录
+     *
      * @param userId
      * @param archiveId
      * @return
      */
-    Integer findBeansHistoryByArchiveId(@Param("userId") Integer userId,@Param("archiveId") Integer archiveId);
+    Integer findBeansHistoryByArchiveId(@Param("userId") Integer userId, @Param("archiveId") Integer archiveId);
 
     /**
      * 查询用户采美豆数量
+     *
      * @param userId
      * @return
      */
@@ -133,18 +135,21 @@ public interface ClubMapper {
 
     /**
      * 新增资料备注
+     *
      * @param clubRemarksPo
      */
     void insertRemarks(ClubRemarksPo clubRemarksPo);
 
     /**
      * 修改资料备注
+     *
      * @param clubRemarksPo
      */
     void updateRemarks(ClubRemarksPo clubRemarksPo);
 
     /**
      * 清除资料备注文件
+     *
      * @param remarksId
      */
     void clearRemarksFiles(Integer remarksId);
@@ -168,13 +173,15 @@ public interface ClubMapper {
 
     /**
      * 获取资料备注列表
-     * @param clubId   机构id
+     *
+     * @param serviceProviderId 机构id
      * @return
      */
-    List<RemarksVo> getRemarksList(Integer clubId);
+    List<RemarksVo> getRemarksList(Integer serviceProviderId);
 
     /**
      * 获取资料备注详情
+     *
      * @param remarksId 备注id
      * @return
      */
@@ -182,6 +189,7 @@ public interface ClubMapper {
 
     /**
      * 获取资料备注图片
+     *
      * @param remarksId 备注id
      * @return
      */
@@ -189,30 +197,36 @@ public interface ClubMapper {
 
     /**
      * 获取资料备注文件
-     * @param remarksId     备注id
+     *
+     * @param remarksId 备注id
      * @return
      */
     List<RemarksFileVo> getRemarksFileList(Integer remarksId);
 
     /**
      * 删除资料备注
+     *
      * @param remarksId 备注id
      */
     void deleteRemarks(Integer remarksId);
 
     /**
      * 删除资料备注包含的文件
-     * @param remarksId  备注id
+     *
+     * @param remarksId 备注id
      */
     void deleteRemarksFiles(Integer remarksId);
+
     /**
      * 售后无忧,购物须知
      */
     AfterSaleVo getAfterSale();
+
     /**
      * 未读消息数量
      */
     Integer getUnReadMessageCount(Integer userId);
+
     /**
      * 优惠券可用数量
      */
@@ -221,4 +235,46 @@ public interface ClubMapper {
     List<AdvertiseVo> getUserAdvertiseList(AdvertiseVo advertiseVo);
 
     List<InformationVo> getInformationList(InformationVo informationVo);
+
+    void insertQuestionMan(VisitorRemarkVo visitor);
+
+    List<VisitorRemarkVo> getVisitorList(String serviceProviderId);
+
+    void updateQuestionMan(@Param("serviceProviderId") String serviceProviderId, @Param("questionMan") String questionMan, @Param("questionManId") String questionManId);
+
+    void insertVisitorRemark(VisitorRemarkVo visitorRemarkVo);
+
+    void updateVisitorRemark(VisitorRemarkVo visitorRemarkVo);
+
+    void clearVisitorRemarks(Integer remarksId);
+
+    void insertVisitorRemarksImage(@Param("remarksId") Integer remarksId, @Param("image") String image);
+
+    void insertVisitorRemarksFile(@Param("remarksId") Integer remarksId, @Param("fileName") String fileName, @Param("ossName") String ossName);
+
+    VisitorRemarkVo getVisitRemark(Integer remarksId);
+
+    List<String> getVisitRemarksImageList(Integer remarksId);
+
+    List<RemarksFileVo> getVisitRemarksFileList(Integer remarksId);
+
+    String findClubName(Integer clubId);
+
+    List<VisitorRemarkVo> getVisitRecordList(String questionManId);
+
+    void deleteVisitRemark(Integer remarksId);
+
+    void updateVisit(@Param("questionManId") String questionManId, @Param("clubId") String clubId);
+
+    List<VisitorRemarkVo> findConcactVisit(String questionManId);
+
+    void concactVisit(RemarksVo remarksVo);
+
+    String findQuestionMan(String questionManId);
+
+    List<RemarksVo> getRemarksListByKey(@Param("keyWord") String keyWord, @Param("serviceProviderId") Integer serviceProviderId);
+
+    List<VisitorRemarkVo> getVisitorListByKey(@Param("serviceProviderId") String serviceProviderId, @Param("keyWord") String keyWord);
+
+    List<VisitorRemarkVo> getVisitRecordListByKey(@Param("keyWord")String keyWord,@Param("questionManId") String questionManId);
 }

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

@@ -1,10 +1,12 @@
 package com.caimei365.user.model.po;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * Description
@@ -26,4 +28,14 @@ public class ClubRemarksPo implements Serializable {
 
     @ApiModelProperty("文字备注")
     private String remarks;
+
+    @ApiModelProperty("咨询人姓名")
+    private String questionMan;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("同步时间")
+    private Date concactTime;
+
+    @ApiModelProperty("添加时间")
+    private Date addTime;
 }

+ 52 - 0
src/main/java/com/caimei365/user/model/vo/RemarkVo.java

@@ -0,0 +1,52 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class RemarkVo implements Serializable {
+    /**
+     * 备注id
+     */
+    private Integer remarksId;
+    /**
+     * 关键词列表
+     */
+    private List<String> remarks;
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addTime;
+    /**
+     * 机构的userid
+     */
+    private Integer userId;
+    /**
+     * 机构id
+     */
+    private Integer clubId;
+    /**
+     * 图片列表
+     */
+    private List<String> imageList;
+
+    /**
+     * 文件列表
+     */
+    private List<RemarksFileVo> fileList;
+
+    /**
+     * 咨询人
+     */
+    private String questionMan;
+
+    /**
+     * 机构名称
+     */
+    private String clubName;
+}

+ 17 - 2
src/main/java/com/caimei365/user/model/vo/RemarksVo.java

@@ -1,6 +1,5 @@
 package com.caimei365.user.model.vo;
 
-import com.caimei365.user.model.po.RemarksFilePo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 
@@ -29,7 +28,18 @@ public class RemarksVo implements Serializable {
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date addTime;
-
+    /**
+     * 机构的userid
+     */
+    private Integer userId;
+    /**
+     * 机构id
+     */
+    private Integer clubId;
+    /**
+     * 咨询人姓名
+     */
+    private String questionMan;
     /**
      * 图片列表
      */
@@ -39,4 +49,9 @@ public class RemarksVo implements Serializable {
      * 文件列表
      */
     private List<RemarksFileVo> fileList;
+
+    /**
+     * 协销id
+     */
+    private String serviceProviderId;
 }

+ 55 - 0
src/main/java/com/caimei365/user/model/vo/VisitRemarkVo.java

@@ -0,0 +1,55 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class VisitRemarkVo  implements Serializable {
+
+    /**
+     * 潜在用户备注id
+     */
+    private Integer remarksId;
+    /**
+     * 咨询人id
+     */
+    private String questionManId;
+
+    /**
+     * 协销id
+     */
+    private Integer serviceProviderId;
+
+    /**
+     * 关键词列表
+     */
+    private List<String> remarks;
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addDate;
+    /**
+     * 咨询人名字
+     */
+    private String questionMan;
+    /**
+     * 同步时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date concactTime;
+
+    /**
+     * 图片列表
+     */
+    private List<String> imageList;
+
+    /**
+     * 文件列表
+     */
+    private List<RemarksFileVo> fileList;
+}

+ 62 - 0
src/main/java/com/caimei365/user/model/vo/VisitorRemarkVo.java

@@ -0,0 +1,62 @@
+package com.caimei365.user.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class VisitorRemarkVo implements Serializable {
+
+    /**
+     * 潜在用户备注id
+     */
+    private Integer remarksId;
+    /**
+     * 咨询人id
+     */
+    private String questionManId;
+
+    /**
+     * 协销id
+     */
+    private Integer serviceProviderId;
+
+    /**
+     * 同步clubid
+     */
+    private String clubId;
+    /**
+     * 备注/关键词
+     */
+    private String remarks;
+    /**
+     * 添加时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date addDate;
+    /**
+     * 咨询人名字
+     */
+    private String questionMan;
+    /**
+     * 同步时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date concactTime;
+
+    /**
+     * 图片列表
+     */
+    private List<String> imageList;
+
+    /**
+     * 文件列表
+     */
+    private List<RemarksFileVo> fileList;
+}

+ 79 - 20
src/main/java/com/caimei365/user/service/ClubService.java

@@ -4,9 +4,7 @@ import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ClubRemarksDto;
 import com.caimei365.user.model.dto.ClubUpdateDto;
 import com.caimei365.user.model.dto.JsonParamsDto;
-import com.caimei365.user.model.vo.BeansHistoryVo;
-import com.caimei365.user.model.vo.PaginationVo;
-import com.caimei365.user.model.vo.RemarksVo;
+import com.caimei365.user.model.vo.*;
 
 import java.util.Map;
 
@@ -86,22 +84,24 @@ public interface ClubService {
 
     /**
      * 查看商品资料抵扣采美豆
-     * @param userId        用户Id
-     * @param archiveId     商品资料id
+     *
+     * @param userId    用户Id
+     * @param archiveId 商品资料id
      * @return
      */
     ResponseJson archiveDeduction(Integer userId, Integer archiveId);
 
     /**
      * 保存机构资料备注
-     * @param jsonParamsDto:{
-     *                     remarksId:           备注id,
-     *                     机构id:               机构id,
-     *                     serviceProviderId:   协销id,
-     *                     remarks:             文字备注,
-     *                     fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
-     *                     imageList:   ["图片","图片",...]
-     *                    }
+     *
+     * @param jsonParamsDto:{ remarksId:           备注id,
+     *                        机构id:               机构id,
+     *                        questionMan:        咨询人姓名,
+     *                        serviceProviderId:   协销id,
+     *                        remarks:             文字备注,
+     *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
+     *                        imageList:   ["图片","图片",...]
+     *                        }
      * @return
      * @return
      */
@@ -109,30 +109,89 @@ public interface ClubService {
 
     /**
      * 获取机构资料备注列表
-     * @param clubId    机构id
-     * @param pageNum   页码
-     * @param pageSize  每页数量
+     *
+     * @param serviceProviderId 协销id
+     * @param pageNum           页码
+     * @param pageSize          每页数量
      * @return
      */
-    ResponseJson<PaginationVo<RemarksVo>> getRemarksList(Integer clubId, int pageNum, int pageSize);
+    ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId, String keyWord, int pageNum, int pageSize);
 
     /**
      * 获取机构资料备注详情
-     * @param remarksId     备注id
+     *
+     * @param remarksId 备注id
      * @return
      */
-    ResponseJson<RemarksVo> getRemarksDetail(Integer remarksId);
+    ResponseJson<RemarkVo> getRemarksDetail(Integer remarksId);
 
     /**
      * 删除机构资料备注
-     * @param remarksId     备注id
+     *
+     * @param remarksId 备注id
      * @return
      */
     ResponseJson deleteClubRemarks(Integer remarksId);
 
     /**
      * 机构个人中心数据
+     *
      * @param userId 用户Id
      */
     ResponseJson<Map<String, Object>> getPersonalData(Integer userId);
+
+    /**
+     * 添加潜在用户姓名
+     *
+     * @param name
+     * @return
+     */
+    ResponseJson<Map<String, String>> saveVisitorName(String name, String serviceProviderId);
+
+    /**
+     * 获取潜在客户列表
+     *
+     * @param serviceProviderId
+     * @return
+     */
+    ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId, String keyWord, int pageNum, int pageSize);
+
+    /**
+     * 修改潜在客户咨询人姓名
+     *
+     * @param serviceProviderId
+     * @param questionMan
+     * @param questionManId
+     * @return
+     */
+    ResponseJson<String> updateVisitor(String serviceProviderId, String questionMan, String questionManId);
+
+    /**
+     * 新增/修改记录
+     *
+     * @param visitor
+     * @return
+     */
+    ResponseJson saveVisitRecord(JsonParamsDto visitor);
+
+    /**
+     * 潜在用户资料详情
+     *
+     * @param remarksId
+     * @return
+     */
+    ResponseJson<VisitRemarkVo> getVisitRemark(Integer remarksId);
+
+    ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String keyWord,String questionManId, int pageNum, int pageSize);
+
+    ResponseJson deleteVisitRemarks(String remarksId);
+
+    /**
+     * 同步潜在用户信息到机构
+     *
+     * @param clubId
+     * @param questionManId
+     * @return
+     */
+    ResponseJson concactVisitRemarks(String clubId, String questionManId);
 }

+ 261 - 15
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -23,6 +23,7 @@ import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ClubService;
 import com.caimei365.user.utils.ImageUtils;
 import com.caimei365.user.utils.OssUtil;
+import com.github.pagehelper.Page;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
@@ -370,6 +371,7 @@ public class ClubServiceImpl implements ClubService {
      * @param jsonParamsDto:{ remarksId:           备注id,
      *                        机构id:               机构id,
      *                        serviceProviderId:   协销id,
+     *                        questionMan:        咨询人姓名,
      *                        remarks:             文字备注,
      *                        fileList:    [{fileName:"文件名称",ossName:"oss文件名称"},{fileName:"文件名称",ossName:"oss文件名称"}...]
      *                        imageList:   ["图片","图片",...]
@@ -384,6 +386,7 @@ public class ClubServiceImpl implements ClubService {
             Integer remarksId = jsonObject.getInteger("remarksId");
             Integer serviceProviderId = jsonObject.getInteger("serviceProviderId");
             String remarks = jsonObject.getString("remarks");
+            String questionMan = jsonObject.getString("questionMan");
             if (null == clubId) {
                 return ResponseJson.error("参数异常,机构id不能为空");
             }
@@ -397,6 +400,7 @@ public class ClubServiceImpl implements ClubService {
             clubRemarksPo.setClubId(clubId);
             clubRemarksPo.setServiceProviderId(serviceProviderId);
             clubRemarksPo.setRemarks(remarks);
+            clubRemarksPo.setQuestionMan(questionMan);
             if (newRemarks) {
                 // 新增备注
                 clubMapper.insertRemarks(clubRemarksPo);
@@ -433,34 +437,71 @@ public class ClubServiceImpl implements ClubService {
             log.error("【保存机构资料备注】>>>参数解析异常try-catch:", e);
             return ResponseJson.error("保存机构资料备注参数解析异常!", null);
         }
-
     }
 
     @Override
-    public ResponseJson<PaginationVo<RemarksVo>> getRemarksList(Integer clubId, int pageNum, int pageSize) {
-        if (null == clubId) {
-            return ResponseJson.error("参数异常,机构id不能为空", null);
+    public ResponseJson<PaginationVo<RemarkVo>> getRemarksList(Integer serviceProviderId, String keyWord, int pageNum, int pageSize) {
+        if (null == serviceProviderId) {
+            return ResponseJson.error("参数异常,协销id不能为空", null);
         }
-        PageHelper.startPage(pageNum, pageSize);
-        List<RemarksVo> remarksList = clubMapper.getRemarksList(clubId);
-        return ResponseJson.success(new PaginationVo<>(remarksList));
+        PageInfo<RemarksVo> pageInfo=null;
+        if (StringUtils.isNotBlank(keyWord)) {
+            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getRemarksListByKey(keyWord, serviceProviderId));
+        } else {
+            pageInfo = PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> clubMapper.getRemarksList(serviceProviderId));
+        }
+        ArrayList<RemarkVo> remarkVos = new ArrayList<>();
+        pageInfo.getList().forEach(r -> {
+            RemarkVo remarkVo = new RemarkVo();
+            List<String> strings = new ArrayList<>();
+            String rk = null == r.getRemarks() ? "" : r.getRemarks();
+            if (rk.contains(",")) {
+                String[] split = rk.split(",");
+                strings = Arrays.asList(split);
+            } else {
+                strings.add(rk);
+            }
+            remarkVo.setRemarks(strings);
+            remarkVo.setQuestionMan(r.getQuestionMan());
+            remarkVo.setRemarksId(r.getRemarksId());
+            remarkVo.setAddTime(r.getAddTime());
+            remarkVo.setClubName(clubMapper.findClubName(r.getClubId()));
+            remarkVos.add(remarkVo);
+        });
+        PaginationVo<RemarkVo> pageVo = new PaginationVo<>(remarkVos);
+        pageVo.setTotalPage(pageInfo.getPages());
+        pageVo.setHasNextPage(pageInfo.isHasNextPage());
+        pageVo.setTotalRecord((int) pageInfo.getTotal());
+        return ResponseJson.success(pageVo);
     }
 
     @Override
-    public ResponseJson<RemarksVo> getRemarksDetail(Integer remarksId) {
+    public ResponseJson<RemarkVo> getRemarksDetail(Integer remarksId) {
         if (null == remarksId) {
             return ResponseJson.error("参数异常,备注id不能为空", null);
         }
         RemarksVo remarksVo = clubMapper.getRemarks(remarksId);
         List<String> imageList = clubMapper.getRemarksImageList(remarksId);
         List<RemarksFileVo> fileList = clubMapper.getRemarksFileList(remarksId);
-        fileList.forEach(file -> {
-            file.setFileUrl(OssUtil.getOssUrl(file.getOssName()));
-            ;
-        });
-        remarksVo.setImageList(imageList);
-        remarksVo.setFileList(fileList);
-        return ResponseJson.success(remarksVo);
+        fileList.forEach(file -> file.setFileUrl(OssUtil.getOssUrl(file.getOssName())));
+        List<String> strings = new ArrayList<>();
+        String rk = null == remarksVo.getRemarks() ? "" : remarksVo.getRemarks();
+        if (rk.contains(",")) {
+            String[] split = rk.split(",");
+            strings = Arrays.asList(split);
+        } else {
+            strings.add(rk);
+        }
+        RemarkVo remarkVo = new RemarkVo();
+        remarkVo.setClubId(remarksVo.getClubId());
+        remarkVo.setUserId(remarksVo.getUserId());
+        remarkVo.setRemarksId(remarksVo.getRemarksId());
+        remarkVo.setQuestionMan(remarksVo.getQuestionMan());
+        remarkVo.setRemarks(strings);
+        remarkVo.setFileList(fileList);
+        remarkVo.setImageList(imageList);
+        remarkVo.setAddTime(remarksVo.getAddTime());
+        return ResponseJson.success(remarkVo);
     }
 
     @Override
@@ -586,4 +627,209 @@ public class ClubServiceImpl implements ClubService {
 
         return ResponseJson.success(result);
     }
+
+    @Override
+    public ResponseJson<Map<String, String>> saveVisitorName(String name, String serviceProviderId) {
+        //咨询人id
+        String uuid = UUID.randomUUID().toString();
+        VisitorRemarkVo visitor = new VisitorRemarkVo();
+        visitor.setQuestionMan(name);
+        visitor.setQuestionManId(uuid);
+        visitor.setServiceProviderId(Integer.valueOf(serviceProviderId));
+        clubMapper.insertQuestionMan(visitor);
+        HashMap<String, String> result = new HashMap<>(2);
+        result.put("questionManId", uuid);
+        result.put("questionMan", name);
+        return ResponseJson.success("添加成功", result);
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<VisitorRemarkVo>> getVisitorList(String serviceProviderId, String keyWord, int pageNum, int pageSize) {
+        if (null == serviceProviderId) {
+            return ResponseJson.error("参数异常,机构id不能为空", null);
+        }
+        List<VisitorRemarkVo> remarksList=new ArrayList<>();
+        PageHelper.startPage(pageNum, pageSize);
+        if(StringUtils.isNotBlank(keyWord)){
+            remarksList = clubMapper.getVisitorListByKey(serviceProviderId,keyWord);
+        }else{
+            remarksList = clubMapper.getVisitorList(serviceProviderId);
+        }
+        return ResponseJson.success(new PaginationVo<>(remarksList));
+    }
+
+    @Override
+    public ResponseJson<String> updateVisitor(String serviceProviderId, String questionMan, String questionManId) {
+        clubMapper.updateQuestionMan(serviceProviderId, questionMan, questionManId);
+        return ResponseJson.success("修改成功");
+    }
+
+    @Override
+    public ResponseJson saveVisitRecord(JsonParamsDto visitor) {
+        try {
+            JSONObject jsonObject = parseObject(visitor.getParams());
+            String questionManId = jsonObject.getString("questionManId");
+            Integer remarksId = jsonObject.getInteger("remarksId");
+            Integer serviceProviderId = jsonObject.getInteger("serviceProviderId");
+            String remarks = jsonObject.getString("remarks");
+            if (null == questionManId) {
+                return ResponseJson.error("参数异常,咨询人id不能为空");
+            }
+            if (null == serviceProviderId) {
+                return ResponseJson.error("参数异常,协销id不能为空");
+            }
+            // 是否新增备注
+            boolean newRemarks = null == remarksId;
+            VisitorRemarkVo visitorRemarkVo = new VisitorRemarkVo();
+            visitorRemarkVo.setRemarksId(remarksId);
+            visitorRemarkVo.setQuestionManId(questionManId);
+            visitorRemarkVo.setServiceProviderId(serviceProviderId);
+            visitorRemarkVo.setRemarks(remarks);
+            visitorRemarkVo.setQuestionMan(clubMapper.findQuestionMan(questionManId));
+            if (newRemarks) {
+                // 新增备注
+                clubMapper.insertVisitorRemark(visitorRemarkVo);
+            } else {
+                // 修改备注
+                clubMapper.updateVisitorRemark(visitorRemarkVo);
+                // 删除旧的备注图片和文件
+                clubMapper.clearVisitorRemarks(remarksId);
+            }
+            JSONArray filesArray = jsonObject.getJSONArray("fileList");
+            JSONArray imagesArray = jsonObject.getJSONArray("imageList");
+            remarksId = visitorRemarkVo.getRemarksId();
+            //保存图片
+            if (!imagesArray.isEmpty()) {
+                for (Object imageObj : imagesArray) {
+                    String image = String.valueOf(imageObj);
+                    // 保存资质图片
+                    clubMapper.insertVisitorRemarksImage(remarksId, image);
+                }
+            }
+            //保存文件
+            if (!filesArray.isEmpty()) {
+                for (Object fileObj : filesArray) {
+                    JSONObject file = (JSONObject) fileObj;
+                    String fileName = file.getString("fileName");
+                    String ossName = file.getString("ossName");
+                    // 保存资质文件
+                    clubMapper.insertVisitorRemarksFile(remarksId, fileName, ossName);
+                }
+            }
+            return ResponseJson.success("保存潜在用户资料成功");
+        } catch (Exception e) {
+            log.info("保存潜在用户资料备注参数:" + visitor.toString());
+            log.error("【保存潜在用户资料备注】>>>参数解析异常try-catch:", e);
+            return ResponseJson.error("保存潜在用户资料备注参数解析异常!", null);
+        }
+    }
+
+    @Override
+    public ResponseJson<VisitRemarkVo> getVisitRemark(Integer remarksId) {
+        if (null == remarksId) {
+            return ResponseJson.error("参数异常,备注id不能为空", null);
+        }
+        VisitorRemarkVo visitRemarksVo = clubMapper.getVisitRemark(remarksId);
+        List<String> imageList = clubMapper.getVisitRemarksImageList(remarksId);
+        List<RemarksFileVo> fileList = clubMapper.getVisitRemarksFileList(remarksId);
+        fileList.forEach(file -> file.setFileUrl(OssUtil.getOssUrl(file.getOssName())));
+        List<String> strings = new ArrayList<>();
+        String rk = null == visitRemarksVo.getRemarks() ? "" : visitRemarksVo.getRemarks();
+        if (rk.contains(",")) {
+            String[] split = rk.split(",");
+            strings = Arrays.asList(split);
+        } else {
+            strings.add(rk);
+        }
+        VisitRemarkVo visit = new VisitRemarkVo();
+        visit.setQuestionMan(visitRemarksVo.getQuestionMan());
+        visit.setQuestionManId(visitRemarksVo.getQuestionManId());
+        visit.setRemarksId(visitRemarksVo.getRemarksId());
+        visit.setRemarks(strings);
+        visit.setAddDate(visitRemarksVo.getAddDate());
+        visit.setImageList(imageList);
+        visit.setFileList(fileList);
+        return ResponseJson.success(visit);
+    }
+
+    @Override
+    public ResponseJson<PaginationVo<VisitRemarkVo>> getVisitorRecordList(String keyWord,String questionManId, 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));
+        }
+        ArrayList<VisitRemarkVo> remarkVos = new ArrayList<>();
+        remarksList.getList().forEach(r -> {
+            VisitRemarkVo visit = new VisitRemarkVo();
+            List<String> strings = new ArrayList<>();
+            String rk = null == r.getRemarks() ? "" : r.getRemarks();
+            if (rk.contains(",")) {
+                String[] split = rk.split(",");
+                strings = Arrays.asList(split);
+            } else {
+                strings.add(rk);
+            }
+            visit.setRemarks(strings);
+            visit.setAddDate(r.getAddDate());
+            visit.setRemarksId(r.getRemarksId());
+            visit.setQuestionManId(r.getQuestionManId());
+            remarkVos.add(visit);
+        });
+        PaginationVo<VisitRemarkVo> pageVo = new PaginationVo<>(remarkVos);
+        pageVo.setTotalPage(remarksList.getPages());
+        pageVo.setHasNextPage(remarksList.isHasNextPage());
+        pageVo.setTotalRecord((int) remarksList.getTotal());
+        return ResponseJson.success(pageVo);
+    }
+
+    @Override
+    public ResponseJson deleteVisitRemarks(String remarksId) {
+        if (null == remarksId) {
+            return ResponseJson.error("参数异常,备注id不能为空");
+        }
+        clubMapper.deleteVisitRemark(Integer.valueOf(remarksId));
+        //删除oss服务器上的文件
+        List<RemarksFileVo> fileList = clubMapper.getVisitRemarksFileList(Integer.valueOf(remarksId));
+        fileList.forEach(file -> {
+            OssUtil.deleteSingleFile(file.getOssName());
+        });
+        //删除备注包含的文件
+        clubMapper.clearVisitorRemarks(Integer.valueOf(remarksId));
+        return ResponseJson.success("删除成功");
+    }
+
+    @Override
+    public ResponseJson concactVisitRemarks(String clubId, String questionManId) {
+        if (null == clubId || "".equals(clubId)) {
+            return ResponseJson.error("参数异常,机构id不能为空");
+        }
+        if (null == questionManId || "".equals(questionManId)) {
+            return ResponseJson.error("参数异常,咨询人id不能为空");
+        }
+        //根据咨询人查cm_visitor_remarks赋值clubid,concactTime
+        clubMapper.updateVisit(questionManId, clubId);
+        //cm_visitor_remarks搬运到cm_club_remarks,cm_visitor_remarks_file搬运到cm_club_remarks_file
+        List<VisitorRemarkVo> visits = clubMapper.findConcactVisit(questionManId);
+        visits.forEach(v -> {
+            List<String> imageList = clubMapper.getVisitRemarksImageList(v.getRemarksId());
+            List<RemarksFileVo> fileList = clubMapper.getVisitRemarksFileList(v.getRemarksId());
+            String questionMan = clubMapper.findQuestionMan(v.getQuestionManId());
+            RemarksVo remarksVo = new RemarksVo();
+            remarksVo.setRemarks(v.getRemarks());
+            remarksVo.setClubId(Integer.valueOf(v.getClubId()));
+            remarksVo.setQuestionMan(questionMan);
+            remarksVo.setAddTime(v.getAddDate());
+            remarksVo.setServiceProviderId(v.getServiceProviderId().toString());
+            clubMapper.concactVisit(remarksVo);
+            if (null != imageList && imageList.size() > 0) {
+                imageList.forEach(i -> clubMapper.insertRemarksImage(remarksVo.getRemarksId(), i));
+            }
+            if (null != fileList && fileList.size() > 0) {
+                fileList.forEach(f -> clubMapper.insertRemarksFile(remarksVo.getRemarksId(), f.getFileName(), f.getOssName()));
+            }
+        });
+        return ResponseJson.success("同步成功");
+    }
 }

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

@@ -1015,6 +1015,7 @@ public class RegisterServiceImpl implements RegisterService {
         Integer dbHistoryId = vipMapper.getVipHistoryId(userId, packageId);
         //userId, packageId, beginTime, endTime, payStatus, payWay, payType, price, userBeans, payTime
         VipPayHistoryPo payHistory = new VipPayHistoryPo();
+        payHistory.setUserBeans(0d);
         payHistory.setUserId(userId);
         payHistory.setPackageId(packageId);
         payHistory.setBeginTime(beginTime);

+ 266 - 85
src/main/resources/mapper/ClubMapper.xml

@@ -1,9 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <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)
-        values (#{clubId}, #{serviceProviderId}, #{remarks}, now())
+    <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>
     <insert id="insertRemarksImage">
         insert into cm_club_remarks_file(remarksId, fileType, imageUrl)
@@ -13,7 +14,27 @@
         insert into cm_club_remarks_file(remarksId, fileType, fileName, ossName)
         values (#{remarksId}, 2, #{fileName}, #{ossName})
     </insert>
-
+    <insert id="insertQuestionMan">
+        insert into cm_visitor_remarks(questionManId, serviceProviderId, remarks, addTime, questionMan, concactTime)
+        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>
+    <insert id="insertVisitorRemarksImage">
+        insert into cm_visitor_remarks_file(remarksId, fileType, imageUrl)
+        values (#{remarksId}, 1, #{image})
+    </insert>
+    <insert id="insertVisitorRemarksFile">
+        insert into cm_visitor_remarks_file(remarksId, fileType, fileName, ossName)
+        values (#{remarksId}, 2, #{fileName}, #{ossName})
+    </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>
     <update id="updateClubUserByUpdateInfo">
         update user set
         <if test="name != null and name != ''">
@@ -22,7 +43,7 @@
         <if test="email != null and email != ''">
             email = #{email},
         </if>
-            userName = #{userName}
+        userName = #{userName}
         where userID = #{userId}
     </update>
     <update id="updateClubByUpdateInfo">
@@ -56,7 +77,8 @@
             firstClubType = #{firstClubType},
         </if>
         <if test="firstClubType == 1 or firstClubType == 2">
-            secondClubType = #{secondClubType}, department = #{department}, medicalPracticeLicenseImg = #{medicalPracticeLicense},
+            secondClubType = #{secondClubType}, department = #{department}, medicalPracticeLicenseImg =
+            #{medicalPracticeLicense},
         </if>
         <if test="mainProduct != null and mainProduct != ''">
             mainpro = #{mainProduct},
@@ -67,129 +89,180 @@
         where clubID = #{clubId}
     </update>
     <delete id="clearRemarksFiles">
-        delete from cm_club_remarks_file where remarksId = #{remarksId}
+        delete
+        from cm_club_remarks_file
+        where remarksId = #{remarksId}
     </delete>
     <delete id="deleteRemarks">
-        delete from cm_club_remarks where id = #{remarksId}
+        delete
+        from cm_club_remarks
+        where id = #{remarksId}
     </delete>
     <delete id="deleteRemarksFiles">
-        delete from cm_club_remarks_file where remarksId = #{remarksId}
+        delete
+        from cm_club_remarks_file
+        where remarksId = #{remarksId}
+    </delete>
+    <delete id="clearVisitorRemarks">
+        delete
+        from cm_visitor_remarks_file
+        where remarksId = #{remarksId}
+    </delete>
+    <delete id="deleteVisitRemark">
+        delete
+        from cm_visitor_remarks
+        where id = #{remarksId}
     </delete>
     <select id="getClubById" resultType="com.caimei365.user.model.vo.ClubVo">
-        select clubID as clubId, userID as userId, name, sname as shortName, contractMobile, contractEmail,
-               contractPhone, linkMan, provinceID as proviceId, cityID as cityId, townID as townId,
-               address, headpic as shopPhoto, businessLicenseImage as businessLicense, socialCreditCode,
-               firstClubType, secondClubType, department, medicalPracticeLicenseImg as medicalPracticeLicense,
-               mainpro as mainProduct, fax, info as profile, spID as serviceProviderId, addTime, status, lastCheckOrderDate
+        select clubID                    as clubId,
+               userID                    as userId,
+               name,
+               sname                     as shortName,
+               contractMobile,
+               contractEmail,
+               contractPhone,
+               linkMan,
+               provinceID                as proviceId,
+               cityID                    as cityId,
+               townID                    as townId,
+               address,
+               headpic                   as shopPhoto,
+               businessLicenseImage      as businessLicense,
+               socialCreditCode,
+               firstClubType,
+               secondClubType,
+               department,
+               medicalPracticeLicenseImg as medicalPracticeLicense,
+               mainpro                   as mainProduct,
+               fax,
+               info                      as profile,
+               spID                      as serviceProviderId,
+               addTime,
+               status,
+               lastCheckOrderDate
         from club
         where clubID = #{clubId}
     </select>
-<!--    <select id="getOrderCount" resultType="com.caimei365.user.model.vo.OrderCountVo">-->
-<!--        select userID as userId,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0') as orderCount,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status = '0') as confirmedCount,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(11,12,13,21,22,23)) as paymentCount,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(11,12,21,22,31,32)) as waitShipmentsCount,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(12,13,22,23,32,33)) as shipmentsCount,-->
-<!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(1,2)) as salesReturnCount-->
-<!--        from cm_order-->
-<!--        where  userID = #{userId} and delFlag = '0'-->
-<!--        limit 1-->
-<!--    </select>-->
+    <!--    <select id="getOrderCount" resultType="com.caimei365.user.model.vo.OrderCountVo">-->
+    <!--        select userID as userId,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0') as orderCount,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status = '0') as confirmedCount,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(11,12,13,21,22,23)) as paymentCount,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(11,12,21,22,31,32)) as waitShipmentsCount,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(12,13,22,23,32,33)) as shipmentsCount,-->
+    <!--        (select COUNT(*) from cm_order where  userID = #{userId} and delFlag = '0' and status in(1,2)) as salesReturnCount-->
+    <!--        from cm_order-->
+    <!--        where  userID = #{userId} and delFlag = '0'-->
+    <!--        limit 1-->
+    <!--    </select>-->
 
     <select id="findBeansHistoryByType" resultType="integer">
-        SELECT id FROM user_beans_history WHERE userId = #{userId} AND beansType = #{beansType} AND delFlag = 0
+        SELECT id
+        FROM user_beans_history
+        WHERE userId = #{userId}
+          AND beansType = #{beansType}
+          AND delFlag = 0
     </select>
 
     <update id="updateUserBeans">
-        UPDATE USER SET userBeans = #{userBeans} WHERE userID = #{userId}
+        UPDATE USER
+        SET userBeans = #{userBeans}
+        WHERE userID = #{userId}
     </update>
 
     <select id="findBeansHistory" resultType="com.caimei365.user.model.vo.BeansHistoryVo">
-        SELECT
-          beansType,
-          num
-        FROM
-          user_beans_history
-        WHERE
-          pushStatus = 0
+        SELECT beansType,
+               num
+        FROM user_beans_history
+        WHERE pushStatus = 0
           AND beansType IN (1, 2, 3, 4, 8, 12)
           AND delFlag = 0
           AND userId = #{userId}
-        ORDER BY
-          ADDTIME DESC
-        LIMIT
-          1
+        ORDER BY ADDTIME DESC
+        LIMIT 1
     </select>
 
     <select id="findByBeansType" resultType="integer">
-        SELECT
-          SUM(num)
-        FROM
-          user_beans_history
-        WHERE
-          userId = #{userId}
+        SELECT SUM(num)
+        FROM user_beans_history
+        WHERE userId = #{userId}
           AND beansType = #{beansType}
           AND pushStatus = 0
           AND delFlag = 0
     </select>
 
     <update id="updatePushStatus">
-        UPDATE user_beans_history SET pushStatus = 1 WHERE userId = #{userId}
+        UPDATE user_beans_history
+        SET pushStatus = 1
+        WHERE userId = #{userId}
     </update>
     <update id="updateRemarks">
         update cm_club_remarks
+        set remarks     = #{remarks},
+            questionMan = #{questionMan}
+        where id = #{remarksId}
+    </update>
+    <update id="updateQuestionMan">
+        update cm_visitor_remarks
+        set questionMan = #{questionMan}
+        where questionManId = #{questionManId}
+          and serviceProviderId = #{serviceProviderId}
+    </update>
+    <update id="updateVisitorRemark">
+        update cm_visitor_remarks
         set remarks = #{remarks}
         where id = #{remarksId}
     </update>
-
+    <update id="updateVisit">
+        update cm_visitor_remarks
+        set clubId      = #{clubId},
+            concactTime = now()
+        where questionManId = #{questionManId}
+    </update>
     <select id="findAllBeansHistory" resultType="com.caimei365.user.model.vo.BeansHistoryVo">
         SELECT
-          type,
-          beansType,
-          num,
-          addTime
+        type,
+        beansType,
+        num,
+        addTime
         FROM
-          user_beans_history
+        user_beans_history
         WHERE
-          userId = #{userId}
-          AND addTime <![CDATA[ >= ]]> #{startTime}
-          AND addTime <![CDATA[ <= ]]> #{endTime}
-          AND delFlag = 0
-          <if test="type != null and type != 0">
-              AND type = #{type}
-          </if>
+        userId = #{userId}
+        AND addTime <![CDATA[ >= ]]> #{startTime}
+        AND addTime <![CDATA[ <= ]]> #{endTime}
+        AND delFlag = 0
+        <if test="type != null and type != 0">
+            AND type = #{type}
+        </if>
         ORDER BY addTime DESC
     </select>
 
     <select id="findLoginBeans" resultType="integer">
-        SELECT
-          id
-        FROM
-          user_beans_history
-        WHERE
-          beansType IN (1,12)
+        SELECT id
+        FROM user_beans_history
+        WHERE beansType IN (1, 12)
           AND DATE_FORMAT(addTime, '%Y-%m-%d') = DATE_FORMAT(NOW(), '%Y-%m-%d')
           AND userId = #{userId}
     </select>
 
     <select id="findCountCoupon" resultType="integer">
-        SELECT
-          COUNT(a.id)
-        FROM
-          cm_coupon_club a
-          LEFT JOIN cm_coupon cc ON a.couponId = cc.id
-        WHERE
-          cc.delFlag = 0
+        SELECT COUNT(a.id)
+        FROM cm_coupon_club a
+                 LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+        WHERE cc.delFlag = 0
           AND a.delFlag = 0
           AND a.userId = #{userId}
           AND a.status = 1
           AND NOW() BETWEEN cc.startDate
-          AND cc.endDate
+            AND cc.endDate
           AND cc.status != 2
     </select>
     <select id="findBeansHistoryByArchiveId" resultType="java.lang.Integer">
-        select id from user_beans_history where userId = #{userId} and archiveId = #{archiveId}
+        select id
+        from user_beans_history
+        where userId = #{userId}
+          and archiveId = #{archiveId}
     </select>
     <select id="getBeansNumByUserId" resultType="java.lang.Integer">
         select userBeans
@@ -197,14 +270,15 @@
         where userID = #{userId}
     </select>
     <select id="getRemarksList" resultType="com.caimei365.user.model.vo.RemarksVo">
-        select id as remarksId, remarks, addTime
+        select id as remarksId, remarks, addTime, questionMan, clubId
         from cm_club_remarks
-        where clubId = #{clubId}
+        where serviceProviderId = #{serviceProviderId}
         order by addTime desc
     </select>
     <select id="getRemarks" resultType="com.caimei365.user.model.vo.RemarksVo">
-        select id as remarksId, remarks, addTime
-        from cm_club_remarks
+        select ccr.id as remarksId, ccr.remarks, ccr.questionMan, ccr.addTime, ccr.clubId, c.userID
+        from cm_club_remarks ccr
+                 left join club c on ccr.clubId = c.clubId
         where id = #{remarksId}
     </select>
     <select id="getRemarksImageList" resultType="java.lang.String">
@@ -220,20 +294,39 @@
           and fileType = 2
     </select>
     <select id="getAfterSale" resultType="com.caimei365.user.model.vo.AfterSaleVo">
-        SELECT id, organizeName, organizeLinkName, mobile, contactNumber, systemName, systemImage,
-               introduction, afterSale, shoppingNotes, updateTime, addTime, delFlag
+        SELECT id,
+               organizeName,
+               organizeLinkName,
+               mobile,
+               contactNumber,
+               systemName,
+               systemImage,
+               introduction,
+               afterSale,
+               shoppingNotes,
+               updateTime,
+               addTime,
+               delFlag
         FROM cm_mall_organize
-        WHERE id = 0 AND delFlag = '0'
+        WHERE id = 0
+          AND delFlag = '0'
     </select>
     <select id="getUnReadMessageCount" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM message WHERE toUserID = #{userId} AND readFlag='0'
+        SELECT COUNT(*)
+        FROM message
+        WHERE toUserID = #{userId}
+          AND readFlag = '0'
     </select>
     <select id="getUserCouponCount" resultType="java.lang.Integer">
         SELECT COUNT(a.id)
         FROM cm_coupon_club a
-        LEFT JOIN cm_coupon cc ON a.couponId = cc.id
-        WHERE cc.delFlag = 0 AND a.delFlag = 0 AND a.status = 1 AND cc.status != 2
-        AND a.userId = #{userId}  AND NOW() BETWEEN cc.startDate AND cc.endDate
+                 LEFT JOIN cm_coupon cc ON a.couponId = cc.id
+        WHERE cc.delFlag = 0
+          AND a.delFlag = 0
+          AND a.status = 1
+          AND cc.status != 2
+          AND a.userId = #{userId}
+          AND NOW() BETWEEN cc.startDate AND cc.endDate
     </select>
     <select id="getUserAdvertiseList" resultType="com.caimei365.user.model.vo.AdvertiseVo">
         SELECT image, link, title
@@ -264,4 +357,92 @@
         </where>
         ORDER BY informationID DESC
     </select>
+    <select id="getVisitorList" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
+        SELECT questionManId, serviceProviderId, addTime as addDate, questionMan
+        FROM cm_visitor_remarks
+        WHERE serviceProviderId = #{serviceProviderId}
+          and clubId is null
+        GROUP BY questionManId
+        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
+        from cm_visitor_remarks
+        where id = #{remarksId}
+          AND remarks IS NOT NULL
+          and clubId is null
+    </select>
+    <select id="getVisitRemarksImageList" resultType="java.lang.String">
+        select imageUrl
+        from cm_visitor_remarks_file
+        where remarksId = #{remarksId}
+          and fileType = 1
+    </select>
+    <select id="getVisitRemarksFileList" resultType="com.caimei365.user.model.vo.RemarksFileVo">
+        select fileName, ossName
+        from cm_visitor_remarks_file
+        where remarksId = #{remarksId}
+          and fileType = 2
+    </select>
+    <select id="findClubName" resultType="java.lang.String">
+        select name
+        from club
+        where clubID = #{clubId}
+    </select>
+    <select id="getVisitRecordList" 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 remarks IS NOT NULL
+          and clubId is null
+        ORDER BY ADDTIME DESC
+    </select>
+    <select id="findConcactVisit" resultType="com.caimei365.user.model.vo.VisitorRemarkVo">
+        select id      as remarksId,
+               questionManId,
+               serviceProviderId,
+               remarks,
+               addTime as addDate,
+               questionMan,
+               clubId,
+               concactTime
+        from cm_visitor_remarks
+        where questionManId = #{questionManId}
+          and remarks is not null
+    </select>
+    <select id="findQuestionMan" resultType="java.lang.String">
+        select DISTINCT questionMan
+        from cm_visitor_remarks
+        where questionManId = #{questionManId}
+          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
+        from cm_club_remarks ccr
+                 LEFT JOIN club c ON c.clubID = ccr.clubId
+        where ccr.serviceProviderId = #{serviceProviderId}
+            AND ccr.remarks LIKE CONCAT('%', #{keyWord}, '%')
+           OR c.name LIKE CONCAT('%', #{keyWord}, '%')
+           OR ccr.questionMan LIKE CONCAT('%', #{keyWord}, '%')
+        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}
+          and questionMan LIKE CONCAT('%', #{keyWord}, '%')
+          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>
 </mapper>