浏览代码

用户行为优化1.0.5

huangzhiguo 1 年之前
父节点
当前提交
c9d902d1be

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

@@ -277,7 +277,8 @@ public class SellerApi {
 
     /**
      * 协销不活跃机构
-     * @param serviceProviderId
+     * @param serviceProviderId 协销Id
+     * @param type  行为记录标记 1记录
      * @param pageNum
      * @param pageSize
      * @return
@@ -285,13 +286,36 @@ public class SellerApi {
     @ApiOperation("协销不活跃机构")
     @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
     @GetMapping("/getUnActiveClubList")
-    public ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId,
+    public ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, Integer type,
                                                               @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                                               @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
         if (null == serviceProviderId) {
             return ResponseJson.error(-1, "协销Id不能为空", null);
         }
-        return sellerService.getUnActiveClubList(serviceProviderId, pageNum, pageSize);
+        if (null == type) {
+            return ResponseJson.error(-1, "记录类型不能为空不能为空", null);
+        }
+        return sellerService.getUnActiveClubList(serviceProviderId, type, pageNum, pageSize);
+    }
+
+    /**
+     * 协销活跃机构未填写咨询记录列表
+     * @param serviceProviderId 协销Id
+     * @param type  行为记录标记 1记录
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @ApiOperation("协销活跃机构未填写咨询记录列表")
+    @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
+    @GetMapping("getActiveClub")
+    public ResponseJson<PageInfo<ClubVo>> getActiveClub(Integer serviceProviderId, Integer type,
+                                                        @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                        @RequestParam(value = "pageSize", defaultValue = "10") int pageSize) {
+        if (null == serviceProviderId) {
+            return ResponseJson.error(-1, "协销Id不能为空", null);
+        }
+        return sellerService.getActiveClub(serviceProviderId, type, pageNum, pageSize);
     }
 
 }

+ 10 - 2
src/main/java/com/caimei365/user/controller/ShopApi.java

@@ -471,12 +471,13 @@ public class ShopApi {
      * @param type
      * @param marketReportId
      * @param shopId
+     * @param code
      * @param startTime
      * @param endTime
      * @return
      */
     @GetMapping("/preview")
-    public ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String startTime, String endTime) {
+    public ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String code, Integer userId, String startTime, String endTime) {
         if (null == type) {
             return ResponseJson.error(-1, "查询类型不能为空", null);
         }
@@ -484,11 +485,18 @@ public class ShopApi {
             if (null == marketReportId) {
                 return ResponseJson.error(-1, "供应商报表Id不能为空", null);
             }
+        } else if (3 == type) {
+            if (null == marketReportId) {
+                return ResponseJson.error(-1, "供应商报表Id不能为空", null);
+            }
+            if (StringUtils.isBlank(code)) {
+                return ResponseJson.error(-1, "预览码不能为空", null);
+            }
         } else {
             if (null == shopId) {
                 return ResponseJson.error(-1, "供应商Id不能为空", null);
             }
         }
-        return shopService.preview(type, marketReportId, shopId, startTime, endTime);
+        return shopService.preview(type, marketReportId, shopId, code, userId, startTime, endTime);
     }
 }

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

@@ -166,6 +166,7 @@ public interface SellerMapper {
      * @return
      */
     List<BehaviorRecodeVo> getClubKeynoteRecord(@Param("clubId") Integer clubId, @Param("accessDateList") List<String> accessDateList);
+
     /**
      * 协销不活跃机构列表
      * @param serviceProviderId
@@ -173,4 +174,12 @@ public interface SellerMapper {
      */
     List<ClubVo> getUnActiveClub(@Param("serviceProviderId") Integer serviceProviderId);
 
+    /**
+     * 协销活跃且没有填写咨询记录的机构
+     * @param accessDate
+     * @param serviceProviderId
+     * @return
+     */
+    List<ClubVo> getActiveClub(@Param("accessDate") String accessDate, @Param("serviceProviderId") Integer serviceProviderId);
+
 }

+ 14 - 0
src/main/java/com/caimei365/user/mapper/ShopMapper.java

@@ -228,6 +228,20 @@ public interface ShopMapper {
      * 删除轮播图
      */
     void deleteShopHomeImage(Integer id);
+
+    /**
+     * 查看报表对应供应商
+     * @param userId
+     * @return
+     */
+    Integer getUserShopId(@Param("userId") Integer userId);
+
+    /**
+     * 查看预览码
+     * @param marketReportId
+     * @return
+     */
+    String getMarketCode(@Param("marketReportId") Integer marketReportId);
     /**
      * 获取报表对应的供应商信息
      * @param shopId

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

@@ -166,4 +166,8 @@ public class VisitorRemarkVo implements Serializable {
      * 静态标签
      */
     private String stateKeyword;
+    /**
+     * 手机号/微信号
+     */
+    private String mobileOrWeChat;
 }

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

@@ -149,10 +149,21 @@ public interface SellerService {
     /**
      * 协销不活跃机构列表
      * @param serviceProviderId
+     * @param type
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, Integer type, int pageNum, int pageSize);
+
+    /**
+     * 协销活跃机构未填写咨询记录列表
+     * @param serviceProviderId
+     * @param type
      * @param pageNum
      * @param pageSize
      * @return
      */
-    ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, int pageNum, int pageSize);
+    ResponseJson<PageInfo<ClubVo>> getActiveClub(Integer serviceProviderId, Integer type, int pageNum, int pageSize);
 
 }

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

@@ -308,9 +308,11 @@ public interface ShopService {
      * @param type
      * @param marketReportId
      * @param shopId
+     * @param code
+     * @param userId
      * @param startTime
      * @param endTime
      * @return
      */
-    ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String startTime, String endTime);
+    ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String code, Integer userId, String startTime, String endTime);
 }

+ 3 - 0
src/main/java/com/caimei365/user/service/impl/ClubServiceImpl.java

@@ -2045,6 +2045,8 @@ public class ClubServiceImpl implements ClubService {
             String trendsKeyword = jsonObject.getString("trendsKeyword");
             // 静态标签
             String stateKeyword = jsonObject.getString("stateKeyword");
+            // 手机号或者微信号
+            String mobileOrWeChat = jsonObject.getString("mobileOrWeChat");
             if (null == questionManId) {
                 return ResponseJson.error("参数异常,咨询人id不能为空");
             }
@@ -2131,6 +2133,7 @@ public class ClubServiceImpl implements ClubService {
             visitorRemarkVo.setGroupAddition(groupAddition);
             visitorRemarkVo.setTrendsKeyword(StringUtils.strip(trendsKeywordList.toString(), "[]"));
             visitorRemarkVo.setStateKeyword(StringUtils.strip(stateKeywordList.toString(), "[]"));
+            visitorRemarkVo.setMobileOrWeChat(mobileOrWeChat);
             if (newRemarks) {
                 // 新增备注
                 clubMapper.insertVisitorRemark(visitorRemarkVo);

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

@@ -68,6 +68,8 @@ public class LoginServiceImpl implements LoginService {
     private RemoteCallService remoteCallService;
     @Resource
     private ClubMapper clubMapper;
+    @Value("${caimei.wwwDomain}")
+    private String wwwDomain;
 
 
     /**
@@ -727,6 +729,7 @@ public class LoginServiceImpl implements LoginService {
                 return ResponseJson.error(-1, "用户数据异常", null);
             } else {
                 // 记录
+                link = wwwDomain + link;
                 CmBehaviorInfoPo behaviorInfo = clubMapper.getClubSpId(userId);
                 setBehaviorInfo(behaviorInfo, link);
                 behaviorInfo.setOperateObject(1);

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

@@ -7,6 +7,7 @@ import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.ArrDateDto;
 import com.caimei365.user.model.dto.ClubTemporaryDto;
 import com.caimei365.user.model.dto.LoginCodeDto;
+import com.caimei365.user.model.po.CmBehaviorInfoPo;
 import com.caimei365.user.model.po.ServiceProviderPo;
 import com.caimei365.user.model.po.SuperVipPo;
 import com.caimei365.user.model.vo.*;
@@ -660,21 +661,80 @@ public class SellerServiceImpl implements SellerService {
      * 协销不活跃机构列表
      *
      * @param serviceProviderId
+     * @param type
      * @param pageNum
      * @param pageSize
      * @return
      */
     @Override
-    public ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, int pageNum, int pageSize) {
+    public ResponseJson<PageInfo<ClubVo>> getUnActiveClubList(Integer serviceProviderId, Integer type, int pageNum, int pageSize) {
         PageHelper.startPage(pageNum, pageSize);
         List<ClubVo> unActiveClub = sellerMapper.getUnActiveClub(serviceProviderId);
         for (ClubVo club : unActiveClub) {
             setClubNumber(club);
         }
+        if (1 == type) {
+            // 行为记录
+            try {
+                CmBehaviorInfoPo behaviorInfo = new CmBehaviorInfoPo();
+                behaviorInfo.setOperateObject(2);
+                behaviorInfo.setSpId(serviceProviderId);
+                behaviorInfo.setType(4);
+                behaviorInfo.setLabel("协销不活跃机构列表");
+                behaviorInfo.setPageType("协销不活跃机构列表");
+                behaviorInfo.setPagePath("");
+                clubMapper.insertBehaviorInfo(behaviorInfo);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
         PageInfo<ClubVo> page = new PageInfo<>(unActiveClub);
         return ResponseJson.success(page);
     }
 
+    /**
+     * 协销活跃机构未填写咨询记录列表
+     *
+     * @param serviceProviderId
+     * @param type
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    @Override
+    public ResponseJson<PageInfo<ClubVo>> getActiveClub(Integer serviceProviderId, Integer type, int pageNum, int pageSize) {
+        // 获取三天前日期
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(new Date());
+        calendar.add(Calendar.DAY_OF_MONTH, -3);
+        Date time = calendar.getTime();
+        String format = dateFormat.format(time);
+
+        PageHelper.startPage(pageNum, pageSize);
+        List<ClubVo> activeClub = sellerMapper.getActiveClub(format, serviceProviderId);
+        for (ClubVo club : activeClub) {
+            setClubNumber(club);
+        }
+        if (1 == type) {
+            // 行为记录
+            try {
+                CmBehaviorInfoPo behaviorInfo = new CmBehaviorInfoPo();
+                behaviorInfo.setOperateObject(2);
+                behaviorInfo.setSpId(serviceProviderId);
+                behaviorInfo.setType(4);
+                behaviorInfo.setLabel("协销未填写咨询记录机构列表");
+                behaviorInfo.setPageType("协销未填写咨询记录机构列表");
+                behaviorInfo.setPagePath("");
+                clubMapper.insertBehaviorInfo(behaviorInfo);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        PageInfo<ClubVo> page = new PageInfo<>(activeClub);
+        return ResponseJson.success(page);
+    }
+
     /**
      * 机构编号
      *

+ 22 - 1
src/main/java/com/caimei365/user/service/impl/ShopServiceImpl.java

@@ -1057,12 +1057,29 @@ public class ShopServiceImpl implements ShopService {
      * @param type
      * @param marketReportId
      * @param shopId
+     * @param code
      * @param startTime
      * @param endTime
      * @return
      */
     @Override
-    public ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String startTime, String endTime) {
+    public ResponseJson<Map<String, Object>> preview(Integer type, Integer marketReportId, Integer shopId, String code, Integer userId, String startTime, String endTime) {
+        // 用户对应供应商, 用于校验查看权限
+        if(null != userId) {
+            return ResponseJson.error(-1, "无权查看该报表", null);
+        }
+        Integer userShopId = shopMapper.getUserShopId(userId);
+        // 校验预览码 普通预览需校验预览码
+        if (3 == type) {
+            String marketCode = shopMapper.getMarketCode(marketReportId);
+            if (StringUtils.isNotBlank(marketCode)) {
+                if (!code.equals(marketCode)) {
+                    return ResponseJson.error(-1, "预览码错误", null);
+                }
+            } else {
+                return ResponseJson.error(-1, "预览码已失效", null);
+            }
+        }
         Map<String, Object> map = new HashMap<>();
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
         SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
@@ -1086,6 +1103,10 @@ public class ShopServiceImpl implements ShopService {
         Set<String> set = new HashSet<>();
         // 获取报表对应供应商数据
         CmMarketShopVo shopInfo = shopMapper.getShopInfoById(shopId, type, marketReportId);
+        // 验证权限
+        if(!userShopId.equals(shopInfo.getShopId())) {
+            return ResponseJson.error(-1, "无权查看该报表, 请登录对应供应商账号查看报表", null);
+        }
         List<Integer> marketReportIds = shopMapper.getMarketReportIds(shopInfo.getId(), type, marketReportId, startTime, endTime);
         log.info("marketReportIds===="+marketReportIds);
         // 获取阶段描述

+ 4 - 3
src/main/resources/mapper/ClubMapper.xml

@@ -32,11 +32,11 @@
                                        clubType, pinceSensitve, satisfied, followup, extra, reportID, productID,
                                        createServiceProviderId,
                                        communicationSituation, communicationMethods, customerSource, customerGender,
-                                       customerAge, groupAddition, trendsKeyword, stateKeyword)
+                                       customerAge, groupAddition, trendsKeyword, stateKeyword, mobileOrWeChat)
         values (#{questionMan}, #{questionManId}, #{serviceProviderId}, #{remarks}, now(), #{consult}, #{clubType},
                 #{pinceSensitve}, #{satisfied}, #{followup}, #{extra}, #{reportId}, #{productId}, #{serviceProviderId},
                 #{communicationSituation}, #{communicationMethods}, #{customerSource}, #{customerGender},
-                #{customerAge}, #{groupAddition}, #{trendsKeyword}, #{stateKeyword})
+                #{customerAge}, #{groupAddition}, #{trendsKeyword}, #{stateKeyword}, #{mobileOrWeChat})
     </insert>
     <update id="updateClubNewDeal">
         update club
@@ -357,7 +357,8 @@
             customerAge            = #{customerAge},
             groupAddition          = #{groupAddition},
             trendsKeyword          = #{trendsKeyword},
-            stateKeyword           = #{stateKeyword}
+            stateKeyword           = #{stateKeyword},
+            mobileOrWeChat         = #{mobileOrWeChat}
         where id = #{remarksId}
     </update>
     <update id="updateVisit">

+ 278 - 194
src/main/resources/mapper/SellerMapper.xml

@@ -2,19 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.user.mapper.SellerMapper">
     <select id="getLoginSellerByMobile" resultType="com.caimei365.user.model.vo.UserLoginVo">
-        select u.userID         as userId,
-               u.clubID         as clubId,
-               u.shopID         as shopId,
-               u.userName       as userName,
-               u.name           as name,
-               u.mobile         as mobile,
-               u.bindMobile     as bindMobile,
-               u.email          as email,
-               u.guideFlag      as guideFlag,
-               u.userIdentity   as userIdentity,
-               u.serviceProviderID as serviceProviderId,
+        select u.userID                as userId,
+               u.clubID                as clubId,
+               u.shopID                as shopId,
+               u.userName              as userName,
+               u.name                  as name,
+               u.mobile                as mobile,
+               u.bindMobile            as bindMobile,
+               u.email                 as email,
+               u.guideFlag             as guideFlag,
+               u.userIdentity          as userIdentity,
+               u.serviceProviderID     as serviceProviderId,
                u.serviceProviderStatus as serviceStatus,
-               u.password       as password
+               u.password              as password
         from user u
         where u.mobile = #{mobile}
           and u.userIdentity = 1
@@ -33,7 +33,7 @@
         </trim>
         where userID = #{userId}
     </update>
-    <update id="setSellerUserHome" >
+    <update id="setSellerUserHome">
         update user
         <trim prefix="SET" suffixOverrides=",">
             <if test="image != null and image != ''">image = #{image},</if>
@@ -118,7 +118,7 @@
     </select>
 
     <select id="findClubs" resultType="com.caimei365.user.model.vo.ClubVo">
-        select  c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
+        select c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
         c.contractEmail as contractEmail,
         c.contractPhone, c.linkMan, c.provinceID as proviceId, c.cityID as cityId, c.townID as townId,
         c.address, c.headpic as shopPhoto, c.businessLicenseImage as businessLicense, c.socialCreditCode,
@@ -133,11 +133,14 @@
         from club c
         left join user u on c.userID = u.userID
         LEFT JOIN record_link r ON r.`clubId`=c.`clubID`
-        LEFT JOIN (SELECT userId, activeStatus, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
-        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
+        LEFT JOIN (SELECT userId, activeStatus, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1)
+        coas ON coas.userId = c.userId
+        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON
+        covs.userID = c.userID
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
         LEFT JOIN cm_provider_record cpr ON cpr.spID = sp.serviceProviderID and cpr.clubId = c.clubId
-        LEFT JOIN (SELECT DISTINCT clubID, checkTime FROM clubchangesprecord WHERE checkStatus = 1 GROUP BY clubID ORDER BY clubChangeSpRecordID DESC )ccs ON ccs.clubId = c.clubId
+        LEFT JOIN (SELECT DISTINCT clubID, checkTime FROM clubchangesprecord WHERE checkStatus = 1 GROUP BY clubID ORDER
+        BY clubChangeSpRecordID DESC )ccs ON ccs.clubId = c.clubId
         where
         <if test="1 == type">
             c.spID = #{serviceProviderId}
@@ -165,18 +168,19 @@
             AND c.newDeal =1
         </if>
         <if test="name != null and name != ''">
-            AND (c.name LIKE CONCAT('%',#{name},'%') OR c.linkMan LIKE CONCAT('%',#{name},'%') OR c.contractMobile LIKE CONCAT('%',#{name},'%'))
+            AND (c.name LIKE CONCAT('%',#{name},'%') OR c.linkMan LIKE CONCAT('%',#{name},'%') OR c.contractMobile LIKE
+            CONCAT('%',#{name},'%'))
         </if>
         <if test="userIdentity != null">
             AND u.userIdentity = #{userIdentity}
         </if>
         <if test="startTime != null and startTime != ''">
             AND (ccs.checkTime <![CDATA[ >= ]]> #{startTime}
-                OR cpr.createTime <![CDATA[ >= ]]> #{startTime})
+            OR cpr.createTime <![CDATA[ >= ]]> #{startTime})
         </if>
         <if test="endTime != null and endTime != ''">
             AND (ccs.checkTime <![CDATA[ <= ]]> #{endTime}
-                OR cpr.createTime <![CDATA[ <= ]]> #{endTime})
+            OR cpr.createTime <![CDATA[ <= ]]> #{endTime})
         </if>
         <if test="activeState != null and activeState != ''">
             AND coas.activeState like concat('%', #{userIdentity}, '%')
@@ -218,29 +222,32 @@
         covs.customerValue AS customerValue,
         b.num,
         (
-            SELECT ADDTIME FROM
-            (
-                SELECT
-                ADDTIME
-                FROM cm_club_remarks
-                WHERE  clubId = c.clubId
-                UNION
-                SELECT
-                ADDTIME
-                FROM cm_visitor_remarks
-                WHERE
-                clubId IS NOT NULL AND clubId != ''
-                AND clubId = c.clubId
-            ) b ORDER BY ADDTIME DESC LIMIT 1
+        SELECT ADDTIME FROM
+        (
+        SELECT
+        ADDTIME
+        FROM cm_club_remarks
+        WHERE clubId = c.clubId
+        UNION
+        SELECT
+        ADDTIME
+        FROM cm_visitor_remarks
+        WHERE
+        clubId IS NOT NULL AND clubId != ''
+        AND clubId = c.clubId
+        ) b ORDER BY ADDTIME DESC LIMIT 1
         ) AS ADDTIME
         FROM club c
         LEFT JOIN USER u ON c.userID = u.userID
         LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
-        LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON coas.userId = c.userId
-        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON covs.userID = c.userID
-        LEFT JOIN (SELECT clubId, COUNT(id) AS num  FROM cm_club_remarks GROUP BY clubId
-                UNION
-                SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY clubId ) AS b  ON c.clubId = b.clubId
+        LEFT JOIN (SELECT userId, activeState FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) coas ON
+        coas.userId = c.userId
+        LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) covs ON
+        covs.userID = c.userID
+        LEFT JOIN (SELECT clubId, COUNT(id) AS num FROM cm_club_remarks GROUP BY clubId
+        UNION
+        SELECT clubId, COUNT(id) AS num FROM cm_visitor_remarks WHERE clubId IS NOT NULL AND clubId != '' GROUP BY
+        clubId ) AS b ON c.clubId = b.clubId
         where c.spId = #{spId}
         <if test="type != null">
             <if test="type == 1">
@@ -256,130 +263,130 @@
         select * from
         (
         SELECT DISTINCT ccr.id AS remarksId,
-                ccr.remarks,
-                ccr.addTime,
-                ccr.questionMan,
-                ccr.serviceProviderId AS serviceProviderId,
-                ccr.createServiceProviderId AS createServiceProviderId,
-                csr.leaderId AS leaderId,
-                IFNULL(ccr.consultType,'') AS consult,
-                c.Name AS clubName,
-                ccr.clubType AS clubType,
-                ccr.pinceSensitve AS pinceSensitve,
-                ccr.satisfied AS satisfied,
-                ccr.followup AS followup,
-                ccr.extra AS extra,
-                ccr.communicationSituation,
-                ccr.communicationMethods,
-                ccr.customerSource,
-                ccr.customerGender,
-                ccr.groupAddition,
-                ccr.customerAge,
-                ifnull(ccr.trendsKeyword, "") as trendsKeyword,
-                ifnull(ccr.stateKeyword, "") as stateKeyword,
-                (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID= csr.leaderId) AS leaderName,
-                (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.createServiceProviderId) AS recordName,
-                cmc.status AS STATUS
+        ccr.remarks,
+        ccr.addTime,
+        ccr.questionMan,
+        ccr.serviceProviderId AS serviceProviderId,
+        ccr.createServiceProviderId AS createServiceProviderId,
+        csr.leaderId AS leaderId,
+        IFNULL(ccr.consultType,'') AS consult,
+        c.Name AS clubName,
+        ccr.clubType AS clubType,
+        ccr.pinceSensitve AS pinceSensitve,
+        ccr.satisfied AS satisfied,
+        ccr.followup AS followup,
+        ccr.extra AS extra,
+        ccr.communicationSituation,
+        ccr.communicationMethods,
+        ccr.customerSource,
+        ccr.customerGender,
+        ccr.groupAddition,
+        ccr.customerAge,
+        ifnull(ccr.trendsKeyword, "") as trendsKeyword,
+        ifnull(ccr.stateKeyword, "") as stateKeyword,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID= csr.leaderId) AS leaderName,
+        (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.createServiceProviderId) AS recordName,
+        cmc.status AS STATUS
         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_group csg ON ccr.createServiceProviderId = csg.serviceId
-                 LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
-                 LEFT JOIN cm_club_report cmc ON cmc.clubId = ccr.clubId
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN club c ON c.clubId=ccr.clubId
+        LEFT JOIN cm_serviceTeam_group csg ON ccr.createServiceProviderId = csg.serviceId
+        LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
+        LEFT JOIN cm_club_report cmc ON cmc.clubId = ccr.clubId
         <where>
             ccr.clubId = #{clubId}
             <if test="search != null and search != ''">
                 and (
-                    ccr.remarks like concat('%',#{search},'%')
-                     or ccr.questionMan like concat('%',#{search},'%')
-                     or c.name like concat('%',#{search},'%')
-                     or c.contractMobile like concat('%',#{search},'%')
+                ccr.remarks like concat('%',#{search},'%')
+                or ccr.questionMan like concat('%',#{search},'%')
+                or c.name like concat('%',#{search},'%')
+                or c.contractMobile like concat('%',#{search},'%')
                 )
             </if>
         </where>
         UNION
         SELECT DISTINCT ccr.id AS remarksId,
-                ccr.remarks,
-                ccr.addTime AS ADDDATE,
-                ccr.questionMan,
-                ccr.serviceProviderId,
-                ccr.createServiceProviderId AS createServiceProviderId,
-                csr.leaderId AS leaderId,
-                IFNULL(ccr.consultType,'') AS consult,
-                c.Name AS clubName,
-                ccr.clubType AS clubType,
-                ccr.pinceSensitve AS pinceSensitve,
-                ccr.satisfied AS satisfied,
-                ccr.followup AS followup,
-                ccr.extra AS extra,
-                ccr.communicationSituation,
-                ccr.communicationMethods,
-                ccr.customerSource,
-                ccr.customerGender,
-                ccr.groupAddition,
-                ccr.customerAge,
-                ifnull(ccr.trendsKeyword, "") as trendsKeyword,
-                ifnull(ccr.stateKeyword, "") as stateKeyword,
-                (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = csr.leaderId) AS leaderName,
-                (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName,
-                cmc.status AS STATUS
+        ccr.remarks,
+        ccr.addTime AS ADDDATE,
+        ccr.questionMan,
+        ccr.serviceProviderId,
+        ccr.createServiceProviderId AS createServiceProviderId,
+        csr.leaderId AS leaderId,
+        IFNULL(ccr.consultType,'') AS consult,
+        c.Name AS clubName,
+        ccr.clubType AS clubType,
+        ccr.pinceSensitve AS pinceSensitve,
+        ccr.satisfied AS satisfied,
+        ccr.followup AS followup,
+        ccr.extra AS extra,
+        ccr.communicationSituation,
+        ccr.communicationMethods,
+        ccr.customerSource,
+        ccr.customerGender,
+        ccr.groupAddition,
+        ccr.customerAge,
+        ifnull(ccr.trendsKeyword, "") as trendsKeyword,
+        ifnull(ccr.stateKeyword, "") as stateKeyword,
+        (SELECT NAME FROM serviceprovider s WHERE s.serviceProviderID = csr.leaderId) AS leaderName,
+        (SELECT linkMan FROM serviceprovider s WHERE s.serviceProviderID = ccr.serviceProviderId) AS recordName,
+        cmc.status AS STATUS
         FROM cm_visitor_remarks ccr
-                 LEFT JOIN club c ON c.clubId=ccr.clubId
-                 LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
-                 LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
-                 LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
-                 LEFT JOIN cm_club_report cmc ON cmc.Id = ccr.reportID
+        LEFT JOIN club c ON c.clubId=ccr.clubId
+        LEFT JOIN serviceprovider s ON ccr.serviceProviderId = s.serviceProviderID
+        LEFT JOIN cm_serviceTeam_group csg ON ccr.serviceProviderId = csg.serviceId
+        LEFT JOIN cm_serviceTeam_role csr ON csr.id = csg.teamId
+        LEFT JOIN cm_club_report cmc ON cmc.Id = ccr.reportID
         <where>
             ccr.remarks IS NOT NULL
             AND ccr.clubId is NOT null AND ccr.clubId != '' AND ccr.clubId = #{clubId}
             <if test="search != null and search != ''">
                 and (
-                    ccr.remarks like concat('%',#{search},'%')
-                    or ccr.questionMan like concat('%',#{search},'%')
-                    or c.name like concat('%',#{search},'%')
-                    or c.contractMobile like concat('%',#{search},'%')
+                ccr.remarks like concat('%',#{search},'%')
+                or ccr.questionMan like concat('%',#{search},'%')
+                or c.name like concat('%',#{search},'%')
+                or c.contractMobile like concat('%',#{search},'%')
                 )
             </if>
         </where>
-            ) b
+        ) b
         ORDER BY b.addTime DESC
     </select>
 
 
     <select id="findSpUserLoginSum" resultType="java.util.HashMap">
-        SELECT
-            (CASE coas.activeStatus
-                 WHEN 0 THEN 'active'
-                 WHEN 1 THEN 'unActive'
-                END) AS activeStatus,
-            COUNT(coas.activeStatus) AS number
+        SELECT (CASE coas.activeStatus
+                    WHEN 0 THEN 'active'
+                    WHEN 1 THEN 'unActive'
+            END)                        AS activeStatus,
+               COUNT(coas.activeStatus) AS number
         FROM cm_organ_active_system coas
                  LEFT JOIN club c ON coas.userId = c.userId
                  LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId
-        WHERE  s.serviceProviderId = #{spId} AND coas.stage = 0 AND delType = 1
+        WHERE s.serviceProviderId = #{spId}
+          AND coas.stage = 0
+          AND delType = 1
         GROUP BY coas.activeStatus
     </select>
 
     <select id="getRemarkClub" resultType="java.util.Map">
-        SELECT
-            COUNT(clubId) AS isHaveClub,
-            (SELECT COUNT(clubId) FROM club c LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId WHERE s.serviceProviderId = #{spId})AS allclub
-        FROM
-            (
-                SELECT
-                    clubid AS clubID
-                FROM cm_club_remarks
-                WHERE  createServiceProviderId = #{spId}
-                GROUP BY clubId
-                UNION
-                SELECT
-                    clubId AS clubID
-                FROM cm_visitor_remarks
-                WHERE
-                    clubId IS NOT NULL AND clubId != ''
-                  AND createServiceProviderId = #{spId}
-                GROUP BY clubId
-            ) b
+        SELECT COUNT(clubId)                         AS isHaveClub,
+               (SELECT COUNT(clubId)
+                FROM club c
+                         LEFT JOIN serviceprovider s ON s.serviceProviderId = c.spId
+                WHERE s.serviceProviderId = #{spId}) AS allclub
+        FROM (
+                 SELECT clubid AS clubID
+                 FROM cm_club_remarks
+                 WHERE createServiceProviderId = #{spId}
+                 GROUP BY clubId
+                 UNION
+                 SELECT clubId AS clubID
+                 FROM cm_visitor_remarks
+                 WHERE clubId IS NOT NULL
+                   AND clubId != ''
+                   AND createServiceProviderId = #{spId}
+                 GROUP BY clubId
+             ) b
     </select>
     <select id="getAllClubList" resultType="com.caimei365.user.model.vo.ClubVo">
         SELECT DISTINCT c.clubID as clubId, c.userID as userId, c.name, c.sname as shortName, c.contractMobile,
@@ -421,7 +428,7 @@
                u.image,
                s.mainServiceProviderID AS mainServiceProviderId
         from serviceprovider s
-        LEFT JOIN USER u ON s.userId = u.userId
+                 LEFT JOIN USER u ON s.userId = u.userId
         where s.userID = #{userId}
     </select>
     <select id="findManager" resultType="java.lang.Integer">
@@ -498,33 +505,36 @@
             AND c.clubId =#{clubId}
         </if>
         and b.pageType in(6,8,11)
-        and  DATE(b.accessTime) = DATE(#{accessTime})
+        and DATE(b.accessTime) = DATE(#{accessTime})
         GROUP BY b.pageLabel LIMIT 10) as a
     </select>
     <select id="getBehaviorRecordYesterdayClubFrom" resultType="com.caimei365.user.model.vo.CmBehaviorRecordVo">
-        SELECT
-            b.recordID,
-            b.userID,
-            b.pagePath,
-            b.pageType,
-            b.pageLabel,
-            b.productID,
-            b.accessTime,
-            b.accessDuration,
-            b.accessDate,
-            b.referer,
-            b.accessClient,
-            b.isReckon,
-            b.region,
-            c.name,c.linkMan,c.contractMobile,c.clubId,u.image
+        SELECT b.recordID,
+               b.userID,
+               b.pagePath,
+               b.pageType,
+               b.pageLabel,
+               b.productID,
+               b.accessTime,
+               b.accessDuration,
+               b.accessDate,
+               b.referer,
+               b.accessClient,
+               b.isReckon,
+               b.region,
+               c.name,
+               c.linkMan,
+               c.contractMobile,
+               c.clubId,
+               u.image
         FROM cm_behavior_record b
-        LEFT JOIN club c ON b.userID = c.userID
-        LEFT JOIN user u ON u.userID = c.userID
-        WHERE b.userId !=0
-        and c.spId=#{spId}
-        and c.clubId=#{clubId}
-        and b.pageType in(6,11)
-        and  DATE(b.accessTime) = DATE(#{accessTime})
+                 LEFT JOIN club c ON b.userID = c.userID
+                 LEFT JOIN user u ON u.userID = c.userID
+        WHERE b.userId != 0
+          and c.spId = #{spId}
+          and c.clubId = #{clubId}
+          and b.pageType in (6, 11)
+          and DATE(b.accessTime) = DATE(#{accessTime})
     </select>
     <select id="getBehaviorRecordYesterdayClub" resultType="com.caimei365.user.model.vo.CmBehaviorRecordVo">
         SELECT b.recordID,
@@ -540,22 +550,28 @@
                b.accessClient,
                b.isReckon,
                b.region,
-               c.name,c.linkMan,c.contractMobile,c.clubId,u.image
+               c.name,
+               c.linkMan,
+               c.contractMobile,
+               c.clubId,
+               u.image
         FROM cm_behavior_record b
                  LEFT JOIN club c ON b.userID = c.userID
                  LEFT JOIN user u ON u.userID = c.userID
-        WHERE b.userId !=0
-        and c.spId=#{spId}
-          and b.pageType in(6,8,11)
-          and  DATE(b.accessTime) = DATE(#{accessTime})
+        WHERE b.userId != 0
+          and c.spId = #{spId}
+          and b.pageType in (6, 8, 11)
+          and DATE(b.accessTime) = DATE(#{accessTime})
         GROUP BY c.clubId
     </select>
 
     <select id="getClubAccessDate" resultType="com.caimei365.user.model.vo.RetuenDataVo">
         select cbr.accessDate
         from cm_behavior_record cbr
-        LEFT JOIN club c ON cbr.userID = c.userID
-        where c.clubID = #{clubId} group by cbr.accessDate order by cbr.accessDate desc
+                 LEFT JOIN club c ON cbr.userID = c.userID
+        where c.clubID = #{clubId}
+        group by cbr.accessDate
+        order by cbr.accessDate desc
     </select>
     <select id="getClubKeynoteRecord" resultType="com.caimei365.user.model.vo.BehaviorRecodeVo">
         SELECT
@@ -572,63 +588,131 @@
         b.accessClient,
         b.isReckon,
         b.region,
-        p.name      AS productName,
+        p.name AS productName,
         p.mainImage AS productImage
         FROM cm_behavior_record b
         LEFT JOIN club c ON b.userID = c.userID
         LEFT JOIN product p ON b.productID = p.productID
         LEFT JOIN cm_page_type pt ON b.pageType = pt.id
         WHERE c.clubID = #{clubId}
-            and b.pageType IN (6,11)
-            <if test="accessDateList.size()>0">
-                and
-                <foreach collection="accessDateList" item="accessDate" open="(" separator="or" close=")">
-                    b.accessTime like concat('%', #{accessDate}, '%')
-                </foreach>
-            </if>
+        and b.pageType IN (6,11)
+        <if test="accessDateList.size()>0">
+            and
+            <foreach collection="accessDateList" item="accessDate" open="(" separator="or" close=")">
+                b.accessTime like concat('%', #{accessDate}, '%')
+            </foreach>
+        </if>
         order by b.accessTime desc
     </select>
 
     <select id="getUnActiveClub" resultType="com.caimei365.user.model.vo.ClubVo">
-        SELECT c.clubID as clubId,
-               c.userID as userId,
+        SELECT c.clubID                    as clubId,
+               c.userID                    as userId,
                c.name,
-               c.sname as shortName,
+               c.sname                     as shortName,
                c.contractMobile,
-               c.contractEmail as contractEmail,
+               c.contractEmail             as contractEmail,
                c.contractPhone,
                c.linkMan,
-               c.provinceID as proviceId,
-               c.cityID as cityId,
-               c.townID as townId,
+               c.provinceID                as proviceId,
+               c.cityID                    as cityId,
+               c.townID                    as townId,
                c.address,
-               c.headpic as shopPhoto,
-               c.businessLicenseImage as businessLicense,
+               c.headpic                   as shopPhoto,
+               c.businessLicenseImage      as businessLicense,
                c.socialCreditCode,
                c.firstClubType,
                c.secondClubType,
                c.department,
                c.medicalPracticeLicenseImg as medicalPracticeLicense,
-               c.mainpro as mainProduct,
+               c.mainpro                   as mainProduct,
                c.fax,
-               c.info as profile,
-               c.spID as serviceProviderId,
-               c.addTime, c.status,
+               c.info                      as profile,
+               c.spID                      as serviceProviderId,
+               c.addTime,
+               c.status,
                c.lastCheckOrderDate,
                u.userIdentity,
-               c.newDeal as newDeal,IF(r.id IS NOT NULL,1,0) AS recordCount,
-               sp.name AS serviceName,
-               coas.activeState AS activeState,
-               covs.customerValue AS customerValue
-            from club c
-            left join user u on c.userID = u.userID
-            LEFT JOIN record_link r ON r.`clubId`=c.`clubID`
-            LEFT JOIN (SELECT userId, activeState, activeStatus FROM cm_organ_active_system WHERE stage = 0 AND delType = 1) AS coas ON coas.userId = c.userId
-            LEFT JOIN (SELECT userId, customerValue FROM cm_organ_value_system WHERE stage = 0 AND delType = 1) AS covs ON covs.userId = c.userId
-            LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
+               c.newDeal                   as newDeal,
+               IF(r.id IS NOT NULL, 1, 0)  AS recordCount,
+               sp.name                     AS serviceName,
+               coas.activeState            AS activeState,
+               covs.customerValue          AS customerValue
+        from club c
+                 left join user u on c.userID = u.userID
+                 LEFT JOIN record_link r ON r.`clubId` = c.`clubID`
+                 LEFT JOIN (SELECT userId, activeState, activeStatus
+                            FROM cm_organ_active_system
+                            WHERE stage = 0
+                              AND delType = 1) AS coas ON coas.userId = c.userId
+                 LEFT JOIN (SELECT userId, customerValue
+                            FROM cm_organ_value_system
+                            WHERE stage = 0
+                              AND delType = 1) AS covs ON covs.userId = c.userId
+                 LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
         WHERE coas.activeStatus = 1
           AND sp.serviceProviderID = #{serviceProviderId}
         GROUP BY covs.userID
     </select>
 
+
+    <select id="getActiveClub" resultType="com.caimei365.user.model.vo.ClubVo">
+        SELECT c.clubID as clubId,
+        c.userID as userId,
+        c.name,
+        c.sname as shortName,
+        c.contractMobile,
+        c.contractEmail as contractEmail,
+        c.contractPhone,
+        c.linkMan,
+        c.provinceID as proviceId,
+        c.cityID as cityId,
+        c.townID as townId,
+        c.address,
+        c.headpic as shopPhoto,
+        c.businessLicenseImage as businessLicense,
+        c.socialCreditCode,
+        c.firstClubType,
+        c.secondClubType,
+        c.department,
+        c.medicalPracticeLicenseImg as medicalPracticeLicense,
+        c.mainpro as mainProduct,
+        c.fax,
+        c.info as profile,
+        c.spID as serviceProviderId,
+        c.addTime, c.status,
+        c.lastCheckOrderDate,
+        u.userIdentity,
+        sp.name AS serviceName,
+        coas.activeState AS activeState
+        FROM cm_behavior_record cbr
+        left join user u on u.userID = cbr..userID
+        LEFT JOIN cm_organ_active_system coas ON coas.userId = cbr.userId
+        LEFT JOIN club c ON c.userId = cbr.userId
+        LEFT JOIN serviceprovider sp ON c.spID = sp.serviceProviderID
+        LEFT JOIN (SELECT
+            ccr.clubId,
+            c.userId
+            FROM cm_club_remarks ccr
+            LEFT JOIN club c ON c.clubId = ccr.clubId
+            WHERE ccr.addTime <![CDATA[ >= ]]> #{accessDate} AND ccr.addTime <![CDATA[ <= ]]> NOW()
+            UNION
+            SELECT
+            cvr.clubId,
+            c.userId
+            FROM cm_visitor_remarks cvr
+            LEFT JOIN club c ON c.clubId = cvr.clubId
+            WHERE cvr.clubId != '' AND cvr.clubId IS NOT NULL
+            AND cvr.addTime <![CDATA[ >= ]]> #{accessDate} AND cvr.addTime <![CDATA[ <= ]]> NOW()
+            ) cc ON cc.clubId = cbr.userId
+        WHERE cbr.userId != 0
+        AND cbr.accessDate = #{accessDate}
+        AND coas.addTime LIKE concat('%', #{accessDate}, '%')
+        AND coas.activeStatus = 0
+        AND c.spId = #{spId}
+        AND cc.clubId IS NULL
+        GROUP BY cbr.userId
+        ORDER BY MIN(cbr.accessTime) ASC
+    </select>
+
 </mapper>

+ 8 - 0
src/main/resources/mapper/ShopMapper.xml

@@ -401,6 +401,14 @@
         DELETE FROM shopbanner WHERE shopBannerID = #{id}
     </delete>
 
+    <select id="getUserShopId" resultType="java.lang.Integer">
+        select shopId from shop where userId = #{userId}
+    </select>
+
+    <select id="getMarketCode" resultType="java.lang.String">
+        select code from cm_market_code where marketReportId = #{marketReportId} and recodeTime <![CDATA[ < ]]> now()
+    </select>
+
     <select id="getShopInfoById" resultType="com.caimei365.user.model.vo.CmMarketShopVo">
         SELECT css.id,
                s.shopId,