瀏覽代碼

Merge branch 'master' of http://1.14.104.71:10880/root/ylrz_scrm_java

# Conflicts:
#	fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java
#	fs-service-system/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java
caoliqin 4 周之前
父節點
當前提交
3c20706519

+ 11 - 0
fs-company/src/main/java/com/fs/qw/QwExternalContactController.java

@@ -17,6 +17,8 @@ import com.fs.crm.service.ICrmCustomerService;
 import com.fs.crm.vo.CrmMyCustomerListQueryVO;
 import com.fs.core.security.LoginUser;
 import com.fs.core.web.service.TokenService;
+import com.fs.qw.dto.GetQwRepeatDataDTO;
+import com.fs.qw.vo.GetQwRepeatDataVO;
 import com.fs.store.service.IFsUserService;
 import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.param.*;
@@ -73,6 +75,15 @@ public class QwExternalContactController extends BaseController
         List<QwExternalContactVO> list = qwExternalContactService.selectQwExternalContactListVO(qwExternalContact);
         return getDataTable(list);
     }
+
+    /**
+     * 企微获取重粉数据
+     */
+    @PostMapping("/qwRepeatData")
+    public R getQwRepeatData(@RequestBody GetQwRepeatDataDTO dto){
+        List<GetQwRepeatDataVO> qwRepeatData = qwExternalContactService.getQwRepeatData(dto);
+        return R.ok().put("data",qwRepeatData);
+    }
     /**
      * 同步企业微信客户
      */

+ 5 - 0
fs-company/src/main/java/com/fs/qw/vo/QwExternalContactVO.java

@@ -111,4 +111,9 @@ public class QwExternalContactVO {
     private Long level;
     @Excel(name = "等级升降")
     private Long levelType;
+
+    /**
+     * 是否重粉
+     */
+    private Integer isRepeat;
 }

+ 8 - 0
fs-service-system/src/main/java/com/fs/qw/cache/IQwExternalContactCacheService.java

@@ -8,4 +8,12 @@ public interface IQwExternalContactCacheService {
      * @return 企业微信客户
      */
     String selectQwExternalContactById(Long id);
+
+    /**
+     * 查询是否宠粉
+     *
+     * @param id 企业微信客户主键
+     * @return 企业微信客户
+     */
+    Integer selectQwIsRepeat(Long id);
 }

+ 12 - 0
fs-service-system/src/main/java/com/fs/qw/cache/impl/QwExternalContactCacheServiceImpl.java

@@ -23,6 +23,11 @@ public class QwExternalContactCacheServiceImpl implements IQwExternalContactCach
             .expireAfterWrite(12, TimeUnit.HOURS)
             .build();
 
+    private static final Cache<Long,Integer> QW_REPEAT_CACHE = Caffeine.newBuilder()
+            .maximumSize(5000)
+            .expireAfterWrite(3, TimeUnit.MINUTES)
+            .build();
+
 
     @Override
     public String selectQwExternalContactById(Long id) {
@@ -34,4 +39,11 @@ public class QwExternalContactCacheServiceImpl implements IQwExternalContactCach
             return "-";
         });
     }
+
+    @Override
+    public Integer selectQwIsRepeat(Long id) {
+        return QW_REPEAT_CACHE.get(id,e->{
+            return qwExternalContactService.selectQwIsRepeat(id);
+        });
+    }
 }

+ 19 - 0
fs-service-system/src/main/java/com/fs/qw/converter/QwExternalContactConverter.java

@@ -0,0 +1,19 @@
+package com.fs.qw.converter;
+
+import com.fs.qw.domain.QwExternalContact;
+import com.fs.qw.vo.GetQwRepeatDataVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.Mappings;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface QwExternalContactConverter {
+
+    QwExternalContactConverter INSTANT = Mappers.getMapper(QwExternalContactConverter.class);
+    @Mappings({
+            @Mapping(source = "companyId",target = "companyId"),
+            @Mapping(source = "companyUserId",target = "companyUserId")
+    })
+    GetQwRepeatDataVO convert(QwExternalContact contact);
+}

+ 20 - 0
fs-service-system/src/main/java/com/fs/qw/dto/GetQwRepeatDataDTO.java

@@ -0,0 +1,20 @@
+package com.fs.qw.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 获取重粉数据
+ */
+@Data
+public class GetQwRepeatDataDTO implements Serializable {
+    /**
+     * 外部联系人ID
+     */
+    private String externalUserID;
+    /**
+     * 企微id
+     */
+    private String corpId;
+}

+ 8 - 0
fs-service-system/src/main/java/com/fs/qw/mapper/QwExternalContactMapper.java

@@ -374,4 +374,12 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
     int batchUpdateContactByIds(@Param("list") List<Map<Long, Integer>> list);
 
     List<QwExternalContactVOTime> selectQwExternalContactListVOByUserIds(@Param("ids") List<String> ids);
+
+    /**
+     * 查询外部联系人是否宠粉
+     * @param id
+     * @return
+     */
+    @Select("select is_repeat from qw_external_contact where user_id=${userId} limit 1")
+    Integer selectQwIsRepeat(@Param("userId") Long id);
 }

+ 11 - 0
fs-service-system/src/main/java/com/fs/qw/service/IQwExternalContactService.java

@@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.ResponseResult;
 import com.fs.qw.domain.QwExternalContact;
+import com.fs.qw.dto.GetQwRepeatDataDTO;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
 import com.fs.qw.result.QwExternalContactLogVo;
 import com.fs.qw.result.QwExternalContactVo;
+import com.fs.qw.vo.GetQwRepeatDataVO;
 import com.fs.qw.vo.QwExternalContactVO;
 import com.fs.qw.vo.QwSopRuleTimeVO;
 import com.fs.qw.vo.newvo.ExternalContactDetailsVO;
@@ -198,4 +200,13 @@ public interface IQwExternalContactService extends IService<QwExternalContact> {
     Boolean disabledUser(String[] ids, boolean status);
 
     List<QwExternalContactVOTime> selectQwExternalContactListVOByUserIds(List<String> externalIdList);
+
+    /**
+     * 获取企微重粉数据
+     * @param dto
+     * @return
+     */
+    List<GetQwRepeatDataVO> getQwRepeatData(GetQwRepeatDataDTO dto);
+
+    Integer selectQwIsRepeat(Long id);
 }

+ 62 - 0
fs-service-system/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -3,6 +3,7 @@ package com.fs.qw.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fs.ad.enums.AdUploadType;
@@ -11,6 +12,8 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.PubFun;
 import com.fs.common.utils.StringUtils;
+import com.fs.company.cache.ICompanyCacheService;
+import com.fs.company.cache.ICompanyUserCacheService;
 import com.fs.company.service.ICompanyConfigService;
 import com.fs.course.config.CourseConfig;
 import com.fs.course.domain.FsCourseSop;
@@ -25,6 +28,7 @@ import com.fs.course.service.IFsCourseLinkService;
 import com.fs.crm.domain.CrmCustomer;
 import com.fs.crm.mapper.CrmCustomerMapper;
 import com.fs.qw.domain.*;
+import com.fs.qw.dto.GetQwRepeatDataDTO;
 import com.fs.qw.mapper.*;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
@@ -57,6 +61,7 @@ import com.fs.system.domain.SysConfig;
 import com.fs.system.service.ISysConfigService;
 import com.fs.voice.utils.StringUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.utils.DateUtils;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -4499,6 +4504,63 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         return qwExternalContactMapper.selectQwExternalContactListVOByUserIds(ids);
     }
 
+
+    @Autowired
+    private ICompanyCacheService companyCacheService;
+    @Autowired
+    private ICompanyUserCacheService companyUserCacheService;
+    @Override
+    public List<GetQwRepeatDataVO> getQwRepeatData(GetQwRepeatDataDTO dto) {
+
+        List<QwExternalContact> externalContactList = qwExternalContactMapper
+                .selectList(buildQuery(dto));
+        List<GetQwRepeatDataVO> result = new ArrayList<>();
+        for (QwExternalContact qwExternalContact : externalContactList) {
+            GetQwRepeatDataVO getQwRepeatDataVO = new GetQwRepeatDataVO();
+            getQwRepeatDataVO.setCompanyId(qwExternalContact.getCompanyId());
+            if(qwExternalContact.getCompanyId() != null) {
+                String companyName = companyCacheService.selectCompanyNameById(qwExternalContact.getCompanyId());
+                getQwRepeatDataVO.setCompanyName(companyName);
+            }
+            getQwRepeatDataVO.setCompanyUserId(qwExternalContact.getCompanyUserId());
+            if(qwExternalContact.getCompanyUserId() != null) {
+                String companyUserName = companyUserCacheService.selectCompanyUserNameUserById(qwExternalContact.getCompanyUserId());
+                getQwRepeatDataVO.setCompanyUserName(companyUserName);
+            }
+            getQwRepeatDataVO.setSaleerWx(qwExternalContact.getQwUserId());
+            Date createTime = qwExternalContact.getCreateTime();
+            if(createTime != null) {
+                getQwRepeatDataVO.setCreateDate(DateUtils.formatDate(createTime, "yyyy-MM-dd HH:mm:ss"));
+            }
+
+            result.add(getQwRepeatDataVO);
+        }
+
+        return result;
+    }
+
+    public LambdaQueryWrapper<QwExternalContact> buildQuery(GetQwRepeatDataDTO dto){
+        String corpId = dto.getCorpId();
+        String externalUserID = dto.getExternalUserID();
+        LambdaQueryWrapper<QwExternalContact> eq = new LambdaQueryWrapper<QwExternalContact>()
+                .select(QwExternalContact::getFsUserId,
+                        QwExternalContact::getCompanyId,
+                        QwExternalContact::getCompanyUserId,
+                        QwExternalContact::getName,
+                        QwExternalContact::getQwUserId,
+                        QwExternalContact::getCreateTime
+                )
+                .eq(QwExternalContact::getExternalUserId, externalUserID)
+                .eq(QwExternalContact::getCorpId, corpId);
+
+        return eq;
+    }
+
+    @Override
+    public Integer selectQwIsRepeat(Long id) {
+        return qwExternalContactMapper.selectQwIsRepeat(id);
+    }
+
     //发送好友欢迎语
     void SyncAddSendWelcome(QwExternalContact qwExternalContact, QwUser qwUser, String corpId) {
         QwFriendWelcomeVO qwFriendWelcomeVO = qwFriendWelcomeMapper.selectQwFriendWelcomeByUserIdVO(qwUser.getId(), corpId);

+ 39 - 0
fs-service-system/src/main/java/com/fs/qw/vo/GetQwRepeatDataVO.java

@@ -0,0 +1,39 @@
+package com.fs.qw.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 获取重粉数据VO
+ */
+@Data
+public class GetQwRepeatDataVO implements Serializable {
+    /**
+     * 所属公司
+     */
+    private Long companyId;
+    /**
+     * 公司名称
+     */
+    private String companyName;
+    /**
+     * 销售ID
+     */
+    private Long companyUserId;
+    /**
+     * 销售
+     */
+    private String companyUserName;
+    /**
+     * 销售-微信号
+     */
+    private Long saleerWx;
+
+    /**
+     * 创建时间
+     */
+    private String createDate;
+}

+ 5 - 0
fs-service-system/src/main/java/com/fs/qw/vo/QwExternalContactVO.java

@@ -111,4 +111,9 @@ public class QwExternalContactVO {
     private Long level;
     @Excel(name = "等级升降")
     private Long levelType;
+
+    /**
+     * 是否重粉
+     */
+    private Integer isRepeat;
 }

+ 2 - 0
fs-service-system/src/main/java/com/fs/store/param/h5/FsUserPageListParam.java

@@ -73,5 +73,7 @@ public class FsUserPageListParam implements Serializable {
     private Long pcLoginUserId;
 
 
+
+
 }
 

+ 11 - 0
fs-service-system/src/main/java/com/fs/store/service/impl/FsUserServiceImpl.java

@@ -27,6 +27,7 @@ import com.fs.course.vo.newfs.FsCourseAnalysisCountVO;
 import com.fs.course.vo.newfs.FsCourseAnalysisVO;
 import com.fs.course.vo.newfs.FsUserCourseVideoPageListVO;
 import com.fs.his.vo.OptionsVO;
+import com.fs.qw.cache.IQwExternalContactCacheService;
 import com.fs.qw.param.QwFsUserParam;
 import com.fs.qw.vo.QwFsUserVO;
 import com.fs.store.domain.*;
@@ -111,8 +112,12 @@ public class FsUserServiceImpl implements IFsUserService
     @Autowired
     private ICompanyTagCacheService companyTagCacheService;
 
+    @Autowired
+    private IQwExternalContactCacheService qwExternalContactCacheService;
+
     @Autowired
     private FsUserCompanyUserMapper fsUserCompanyUserMapper;
+
     /**
      * 查询用户
      *
@@ -517,6 +522,12 @@ public class FsUserServiceImpl implements IFsUserService
                     item.setTagIds(userTagByUserId);
                     item.setTag(String.join(",",tagNames));
                 }
+
+                // 是否宠粉
+                Integer isRepeat = qwExternalContactCacheService.selectQwIsRepeat(item.getUserId());
+                if(isRepeat != null) {
+                    item.setIsRepeat(isRepeat);
+                }
             }
         }
 

+ 5 - 0
fs-service-system/src/main/java/com/fs/store/vo/h5/FsUserPageListVO.java

@@ -80,6 +80,11 @@ public class FsUserPageListVO {
     @ApiModelProperty(value = "是否属于当前销售")
     private int isCurrentCompanyUser;
 
+    /**
+     * 是否宠粉
+     */
+    private Integer isRepeat;
+
     @ApiModelProperty(value = "是否是重粉,1-是,0-否")
     private int isRepeatFans;