瀏覽代碼

feat:企微侧边栏功能

caoliqin 1 周之前
父節點
當前提交
f4d93247d4

+ 67 - 0
fs-qwhook/src/main/java/com/fs/app/controller/ApisQwUserController.java

@@ -1,16 +1,26 @@
 package com.fs.app.controller;
 
+import com.fs.common.BeanCopyUtils;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
 import com.fs.course.param.FsCourseListBySidebarParam;
 import com.fs.qw.domain.QwExternalContactInfo;
+import com.fs.qw.domain.QwTagGroup;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.param.ExternalContactDetailsParam;
+import com.fs.qw.param.sidebar.ExternalContactInfoParam;
+import com.fs.qw.param.sidebar.TagGroupListParam;
+import com.fs.qw.param.sidebar.TagGroupUpdateParam;
 import com.fs.qw.service.IQwExternalContactInfoService;
 import com.fs.qw.service.IQwExternalContactService;
+import com.fs.qw.service.IQwTagGroupService;
+import com.fs.qw.service.IQwTagService;
 import com.fs.qw.vo.ExternalContactDetailsVO;
 import com.fs.qw.vo.QwExternalListByHeavyVO;
+import com.fs.qw.vo.QwTagGroupListVO;
+import com.fs.qw.vo.sidebar.ExternalContactInfoVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -36,6 +46,9 @@ public class ApisQwUserController extends BaseController {
     @Autowired
     private IQwExternalContactInfoService qwExternalContactInfoService;
 
+    @Autowired
+    private IQwTagGroupService qwTagGroupService;
+
     @GetMapping("/details")
     @ApiOperation("会员看课详情")
     public R getUserDetails(@ApiParam(value = "外部联系人id", required = true) @RequestParam Long contactId,
@@ -98,4 +111,58 @@ public class ApisQwUserController extends BaseController {
         PageInfo<QwExternalListByHeavyVO> result = new PageInfo<>(qwExternalListByHeavy);
         return R.ok().put("data", result);
     }
+
+    @GetMapping("/externalContact")
+    @ApiOperation("获取侧边栏外部联系人信息")
+    public R getExternalContactInfo(@RequestParam(value = "qwExternalContactId") Long qwExternalContactId) {
+        ExternalContactInfoVO externalContactInfo = qwExternalContactService.getExternalContactInfo(qwExternalContactId);
+        return R.ok().put("data", externalContactInfo);
+    }
+
+
+    @GetMapping("/externalContact/tag")
+    @ApiOperation("获取侧边栏外部联系人标签")
+    public R getExternalContactTag(@RequestParam(value = "qwExternalContactId") Long qwExternalContactId) {
+        List<ExternalContactTagVO> tagList = qwExternalContactService.getExternalContactTag(qwExternalContactId);
+        return R.ok().put("data", tagList);
+    }
+
+    @PutMapping("/externalContact")
+    @ApiOperation("编辑外部联系人信息")
+    public R updateExternalContactInfo(@RequestBody ExternalContactInfoParam param) {
+        return qwExternalContactService.updateExternalContactInfo(param);
+    }
+
+    @GetMapping("/tagGroupList")
+    @ApiOperation("获取所有标签组和其下标签")
+    public R getTagGroupList(TagGroupListParam param) {
+        QwTagGroup qwTagGroup = new QwTagGroup();
+        BeanCopyUtils.copy(param, qwTagGroup);
+        qwTagGroup.setName(param.getTagName());
+
+        PageHelper.startPage(qwTagGroup.getPageNum(), qwTagGroup.getPageSize());
+        List<QwTagGroupListVO> list = qwTagGroupService.selectQwGroupTagList(qwTagGroup);
+
+        PageInfo<QwTagGroupListVO> result = new PageInfo<>(list);
+        return R.ok().put("data", result);
+    }
+
+//    @GetMapping("/searchTags")
+//    @ApiOperation("搜索标签-跟管理端保持一致")
+//    public R searchTagList(QwTagParam param) {
+//        List<QwTagGroupListVO> list = qwTagService.searchTags(param);
+//        return R.ok().put("data", list);
+//    }
+
+    @PutMapping("/externalContact/tag")
+    @ApiOperation("编辑标签")
+    public R updateExternalContactTag(@RequestBody TagGroupUpdateParam param) {
+        int i = qwExternalContactService.updateExternalContactTag(param);
+        if (i > 0) {
+            return R.ok();
+        }
+        return R.error();
+    }
+
+
 }

+ 7 - 0
fs-service/src/main/java/com/fs/qw/domain/QwTagGroup.java

@@ -1,5 +1,6 @@
 package com.fs.qw.domain;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fs.common.annotation.Excel;
 import com.fs.common.core.domain.BaseEntity;
 import lombok.Data;
@@ -40,4 +41,10 @@ public class QwTagGroup extends BaseEntity
 
     private Integer groupFrom;
 
+    @TableField(exist = false)
+    private Integer pageNum = 1;
+
+    @TableField(exist = false)
+    private Integer pageSize = 10;
+
 }

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

@@ -16,6 +16,7 @@ import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -396,4 +397,11 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
     int batchUpdateContactByIds(List<Map<Long, Integer>> list);
 
     int updateContactByIds(List<String> list, int i);
+
+    @Select("select count( DISTINCT fs_course_answer_logs.log_id ) AS answerTime from fs_course_answer_logs where user_id = #{userId}")
+    int getAnswerTime(@Param("userId") Long userId);
+
+    @Select("select sum(amount) as redPacketAmount from fs_course_red_packet_log where user_id = #{userId}")
+    BigDecimal getRedPacketAmount(@Param("userId") Long userId);
+
 }

+ 3 - 0
fs-service/src/main/java/com/fs/qw/mapper/QwTagGroupMapper.java

@@ -80,4 +80,7 @@ public interface QwTagGroupMapper
 
     @Select("select * from qw_tag_group where id=#{id}")
     QwTagGroupVO selectQwTagGroupByIdVO(Long id);
+
+    List<QwTagGroupListVO> selectQwTagGroups(QwTagGroup qwTagGroup);
+
 }

+ 11 - 1
fs-service/src/main/java/com/fs/qw/mapper/QwTagMapper.java

@@ -4,6 +4,7 @@ import com.fs.qw.domain.QwTag;
 import com.fs.qw.param.QwTagSearchParam;
 import com.fs.qw.param.newparam.ContactTagListParam;
 import com.fs.qw.vo.QwTagVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -72,7 +73,7 @@ public interface QwTagMapper
             "select * from qw_tag "+
             "<where>\n" +
             "            <if test=\"tagId != null  and tagId != ''\"> and tag_id = #{tagId}</if>\n" +
-            "            <if test=\"name != null  and name != ''\"> and name like concat( #{name}, '%')</if>\n" +
+            "            <if test=\"name != null  and name != ''\"> and name like concat('%', #{name}, '%')</if>\n" +
             "            <if test=\"groupId != null  and groupId != ''\"> and group_id = #{groupId}</if>\n" +
             "            <if test=\"order != null  and order != ''\"> and `order` = #{order}</if>\n" +
             "            <if test=\"corpId != null  and corpId != ''\"> and corp_id = #{corpId}</if>\n" +
@@ -95,4 +96,13 @@ public interface QwTagMapper
     List<QwTag> selectQwTagListByTagIdsNew(@Param("tagIds") List<String> tagIds);
 
     List<QwTagVO> selectTagListByUserId(@Param("param") ContactTagListParam param,  @Param("keywords") String[] keywords);
+
+    @Select("<script>" +
+            "SELECT tag_id, name FROM qw_tag WHERE tag_id IN " +
+            "<foreach collection='tagIds' item='tagId' open='(' separator=',' close=')'>" +
+            "#{tagId}" +
+            "</foreach>" +
+            "</script>")
+    List<ExternalContactTagVO> selectQwTagListByTagIds(@Param("tagIds") List<String> tagIds);
+
 }

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

@@ -9,6 +9,7 @@ import com.fs.qw.dto.QwUserDTO;
 import com.fs.qw.dto.QwUserKeyDTO;
 import com.fs.qw.param.*;
 import com.fs.qw.vo.*;
+import com.fs.qw.vo.sidebar.ExternalContactQwUserVO;
 import com.fs.sop.domain.QwSop;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.ibatis.annotations.MapKey;
@@ -415,4 +416,11 @@ public interface QwUserMapper extends BaseMapper<QwUser>
             "</script>")
     List<Long> selectQwUserListByCuDeptIdList(@Param("map") QwSop qwSop);
 
+    /**
+     * 根据外部联系人的fsUserId查询关联的企微员工信息
+     * @param fsUserId 会员id
+     * @return
+     */
+    List<ExternalContactQwUserVO> selectQwUserByFsUserId(@Param("fsUserId") Long fsUserId);
+
 }

+ 31 - 0
fs-service/src/main/java/com/fs/qw/param/sidebar/ExternalContactInfoParam.java

@@ -0,0 +1,31 @@
+package com.fs.qw.param.sidebar;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import javax.validation.constraints.NotNull;
+
+/**
+ * 侧边栏-外部联系人编辑信息-入参
+ */
+@Data
+@ApiModel
+public class ExternalContactInfoParam {
+
+    @ApiModelProperty(value = "外部联系人id")
+    @NotNull(message = "外部联系人id不能为空")
+    private Long qwExternalContactId;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "描述")
+    private String remark;
+
+    @ApiModelProperty(value = "性别")
+    private Integer gender;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+}

+ 24 - 0
fs-service/src/main/java/com/fs/qw/param/sidebar/TagGroupListParam.java

@@ -0,0 +1,24 @@
+package com.fs.qw.param.sidebar;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 侧边栏-标签列表-入参
+ */
+@Data
+@ApiModel
+public class TagGroupListParam {
+
+    @ApiModelProperty(value = "页码,默认为1", required = true)
+    private Integer pageNum = 1;
+
+    @ApiModelProperty(value = "页大小,默认为10", required = true)
+    private Integer pageSize = 10;
+
+    @ApiModelProperty(value = "标签名称")
+    private String tagName;
+
+
+}

+ 24 - 0
fs-service/src/main/java/com/fs/qw/param/sidebar/TagGroupUpdateParam.java

@@ -0,0 +1,24 @@
+package com.fs.qw.param.sidebar;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 侧边栏-标签列表-入参
+ */
+@Data
+@ApiModel
+public class TagGroupUpdateParam {
+
+    @ApiModelProperty(value = "外部联系人id")
+    @NotNull(message = "外部联系人id不能为空")
+    private Long qwExternalContactId;
+
+    @ApiModelProperty(value = "标签ids")
+    List<String> tagIds;
+
+}

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

@@ -8,6 +8,8 @@ import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
+import com.fs.qw.param.sidebar.ExternalContactInfoParam;
+import com.fs.qw.param.sidebar.TagGroupUpdateParam;
 import com.fs.qw.result.QwExternalContactLogVo;
 import com.fs.qw.result.QwExternalContactVo;
 import com.fs.qw.vo.ExternalContactDetailsVO;
@@ -16,6 +18,8 @@ import com.fs.qw.vo.QwExternalListByHeavyVO;
 import com.fs.qw.vo.QwSopRuleTimeVO;
 import com.fs.qw.vo.newvo.ExternalContactListVO;
 import com.fs.qw.vo.newvo.ExternalContactPageVO;
+import com.fs.qw.vo.sidebar.ExternalContactInfoVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import com.fs.qwApi.param.QwExternalContactHParam;
 import org.codehaus.jettison.json.JSONException;
 
@@ -203,4 +207,32 @@ public interface IQwExternalContactService extends IService<QwExternalContact> {
     ExternalContactPageVO getContactNumber(Long l);
 
     Boolean disabledUser(String[] ids, boolean b);
+
+    /**
+     * 获取外部联系人基本信息
+     * @param qwExternalContactId 联系人主键id
+     * @return
+     */
+    ExternalContactInfoVO getExternalContactInfo(Long qwExternalContactId);
+
+    /**
+     * 获取侧边栏外部联系人标签
+     * @param qwExternalContactId 联系人主键id
+     * @return
+     */
+    List<ExternalContactTagVO> getExternalContactTag(Long qwExternalContactId);
+
+    /**
+     * 侧边栏-编辑外部联系人信息
+     * @param param 入参
+     * @return
+     */
+    R updateExternalContactInfo(ExternalContactInfoParam param);
+
+    /**
+     * 修改外部联系人的标签
+     * @param param
+     */
+    int updateExternalContactTag(TagGroupUpdateParam param);
+
 }

+ 2 - 0
fs-service/src/main/java/com/fs/qw/service/IQwTagGroupService.java

@@ -68,6 +68,8 @@ public interface IQwTagGroupService
 
     List<QwTagGroupListVO> selectQwTagGroupListVO(QwTagGroup qwTagGroup);
 
+    List<QwTagGroupListVO> selectQwGroupTagList(QwTagGroup qwTagGroup);
+
     QwTagGroupVO selectQwTagGroupByIdVO(Long id);
 
     int insertQwTagGroupParam(QwTagGroupAddParam qwTagGroup);

+ 110 - 1
fs-service/src/main/java/com/fs/qw/service/impl/QwExternalContactServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fs.qw.service.impl;
 
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONException;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,10 +27,13 @@ import com.fs.crm.domain.CrmCustomer;
 import com.fs.crm.mapper.CrmCustomerMapper;
 import com.fs.his.domain.FsUser;
 import com.fs.his.mapper.FsUserMapper;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.qw.domain.*;
 import com.fs.qw.mapper.*;
 import com.fs.qw.param.*;
 import com.fs.qw.param.newparam.ExternalContactPageListParam;
+import com.fs.qw.param.sidebar.ExternalContactInfoParam;
+import com.fs.qw.param.sidebar.TagGroupUpdateParam;
 import com.fs.qw.result.QwExternalContactLogVo;
 import com.fs.qw.result.QwExternalContactVo;
 import com.fs.qw.service.*;
@@ -37,6 +41,9 @@ import com.fs.qw.vo.*;
 import com.fs.qw.vo.newvo.ExternalContactListVO;
 import com.fs.qw.vo.newvo.ExternalContactNumVO;
 import com.fs.qw.vo.newvo.ExternalContactPageVO;
+import com.fs.qw.vo.sidebar.ExternalContactInfoVO;
+import com.fs.qw.vo.sidebar.ExternalContactQwUserVO;
+import com.fs.qw.vo.sidebar.ExternalContactTagVO;
 import com.fs.qwApi.Result.QwOpenidResult;
 import com.fs.qwApi.domain.*;
 import com.fs.qwApi.domain.inner.*;
@@ -54,10 +61,14 @@ import com.fs.sop.service.IQwSopService;
 import com.fs.sop.service.ISopUserLogsInfoService;
 import com.fs.sop.service.ISopUserLogsService;
 import com.fs.system.service.ISysConfigService;
+import com.fs.system.service.ISysDictTypeService;
 import com.fs.voice.utils.StringUtil;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import lombok.extern.log4j.Log4j;
 import lombok.extern.log4j.Log4j2;
 import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -191,8 +202,11 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
     @Autowired
     private QwTagMapper qwTagMapper;
 
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
 
-    org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
+    Logger logger = LoggerFactory.getLogger(getClass());
 
     @Override
     public void addQwCourseJob() {
@@ -5379,6 +5393,101 @@ public class QwExternalContactServiceImpl extends ServiceImpl<QwExternalContactM
         }
     }
 
+    @Override
+    public ExternalContactInfoVO getExternalContactInfo(Long qwExternalContactId) {
+        QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(qwExternalContactId);
+        ExternalContactInfoVO externalContactInfoVO = new ExternalContactInfoVO();
+        BeanUtils.copyProperties(qwExternalContact, externalContactInfoVO);
+        externalContactInfoVO.setQwExternalContactId(qwExternalContact.getId());
+
+        // 设置性别
+        if(externalContactInfoVO.getGender() == 1){
+            externalContactInfoVO.setGenderName("男性");
+        } else if(externalContactInfoVO.getGender() == 2) {
+            externalContactInfoVO.setGenderName("女性");
+        } else {
+            externalContactInfoVO.setGenderName("未知");
+        }
+
+        // 设置电话
+        if(qwExternalContact.getFsUserId() != null) {
+            FsUser fsUser = fsUserMapper.selectFsUserByUserId(qwExternalContact.getFsUserId());
+            if(fsUser != null && StringUtils.isNotEmpty(fsUser.getPhone())){
+                externalContactInfoVO.setPhone(PhoneUtil.decryptPhone(fsUser.getPhone()));
+                externalContactInfoVO.setContactLevel("注册会员");
+            } else {
+                externalContactInfoVO.setContactLevel("未注册会员");
+            }
+        }
+
+        // 设置红包和答题
+        int answerTime = 0;
+        BigDecimal redPacketAmount = BigDecimal.ZERO;
+        if(qwExternalContact.getFsUserId() != null){
+            answerTime = qwExternalContactMapper.getAnswerTime(qwExternalContact.getFsUserId());
+            redPacketAmount = qwExternalContactMapper.getRedPacketAmount(qwExternalContact.getFsUserId());
+        }
+        externalContactInfoVO.setAnswerTime(answerTime);
+        externalContactInfoVO.setRedPacketAmount(redPacketAmount);
+
+        // 设置添加员工信息
+        List<ExternalContactQwUserVO> emptyList = Collections.emptyList();
+        List<ExternalContactQwUserVO> qwUsers = qwUserMapper.selectQwUserByFsUserId(qwExternalContact.getFsUserId());
+        externalContactInfoVO.setQwUserList(qwUsers.isEmpty() ? emptyList : qwUsers);
+
+        return externalContactInfoVO;
+    }
+
+    @Override
+    public List<ExternalContactTagVO> getExternalContactTag(Long qwExternalContactId) {
+        QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(qwExternalContactId);
+
+        if (StringUtils.isNotEmpty(qwExternalContact.getTagIds()) && !Objects.equals(qwExternalContact.getTagIds(), "[]")) {
+            Gson gson = new Gson();
+            List<String> tagIds = gson.fromJson(
+                    qwExternalContact.getTagIds(),
+                    new TypeToken<List<String>>() {
+                    }.getType()
+            );
+
+            return qwTagMapper.selectQwTagListByTagIds(tagIds);
+        }
+        return Collections.emptyList();
+    }
+
+    @Override
+    public R updateExternalContactInfo(ExternalContactInfoParam param) {
+        QwExternalContact qwExternalContact;
+        if(param.getQwExternalContactId() == null) {
+            return R.error(400, "外部联系人id不能为空");
+        }
+
+        qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(param.getQwExternalContactId());
+        BeanUtils.copyProperties(param, qwExternalContact);
+        qwExternalContact.setId(param.getQwExternalContactId());
+
+        qwExternalContactMapper.updateQwExternalContact(qwExternalContact);
+
+        // 修改电话
+        if(qwExternalContact.getFsUserId() != null) {
+            FsUser fsUser = fsUserMapper.selectFsUserByUserId(qwExternalContact.getFsUserId());
+            if(fsUser != null && StringUtils.isNotEmpty(param.getPhone())){
+                fsUser.setPhone(PhoneUtil.encryptPhone(param.getPhone()));
+                fsUserMapper.updateFsUser(fsUser);
+            }
+        }
+        return R.ok();
+    }
+
+    @Override
+    public int updateExternalContactTag(TagGroupUpdateParam param) {
+        QwExternalContact qwExternalContact = qwExternalContactMapper.selectQwExternalContactById(param.getQwExternalContactId());
+        if(qwExternalContact != null){
+            qwExternalContact.setTagIds(JSONUtil.toJsonStr(param.getTagIds()));
+            return qwExternalContactMapper.updateQwExternalContact(qwExternalContact);
+        }
+        return 0;
+    }
 
 
     //发送好友欢迎语

+ 16 - 4
fs-service/src/main/java/com/fs/qw/service/impl/QwTagGroupServiceImpl.java

@@ -36,10 +36,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  * 企微客户标签组Service业务层处理
@@ -266,6 +263,21 @@ public class QwTagGroupServiceImpl implements IQwTagGroupService
         return vo;
     }
 
+    @Override
+    public List<QwTagGroupListVO> selectQwGroupTagList(QwTagGroup qwTagGroup) {
+        List<QwTagGroupListVO> vo = qwTagGroupMapper.selectQwTagGroups(qwTagGroup);
+
+        for (QwTagGroupListVO qwTagGroupListVO : vo) {
+            QwTag qwTag = new QwTag();
+            qwTag.setGroupId(qwTagGroupListVO.getGroupId());
+            qwTag.setCompanyId(qwTagGroupListVO.getCompanyId());
+            qwTag.setName(qwTagGroup.getName());
+            List<QwTagVO> qwTags = qwTagMapper.selectQwTagListVO(qwTag);
+            qwTagGroupListVO.setTag(qwTags);
+        }
+        return vo;
+    }
+
     @Override
     public QwTagGroupVO selectQwTagGroupByIdVO(Long id) {
         QwTagGroupVO qwTagGroupVO = qwTagGroupMapper.selectQwTagGroupByIdVO(id);

+ 59 - 0
fs-service/src/main/java/com/fs/qw/vo/sidebar/ExternalContactInfoVO.java

@@ -0,0 +1,59 @@
+package com.fs.qw.vo.sidebar;
+
+import com.fs.common.annotation.Excel;
+import com.fs.qw.domain.QwUser;
+import com.fs.qw.vo.QwUserVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 侧边栏-外部联系人相关信息
+ */
+@Data
+@ApiModel
+public class ExternalContactInfoVO {
+
+    @ApiModelProperty(value = "外部联系人id")
+    private Long qwExternalContactId;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "企微用户主键id")
+    private Long qwUserId;
+
+    @ApiModelProperty(value = "描述")
+    private String remark;
+
+    @ApiModelProperty(value = "性别")
+    private Integer gender;
+
+    @ApiModelProperty(value = "性别名称")
+    private String genderName;
+
+    @ApiModelProperty(value = "电话")
+    private String phone;
+
+    @ApiModelProperty(value = "用户等级")
+    private String contactLevel;
+
+    @ApiModelProperty(value = "累计答题次数")
+    private Integer answerTime;
+
+    @ApiModelProperty(value = "累计红包金额")
+    private BigDecimal redPacketAmount;
+
+    @ApiModelProperty(value = "企微员工列表")
+    private List<ExternalContactQwUserVO> qwUserList;
+
+
+}

+ 63 - 0
fs-service/src/main/java/com/fs/qw/vo/sidebar/ExternalContactQwUserVO.java

@@ -0,0 +1,63 @@
+package com.fs.qw.vo.sidebar;
+
+
+import com.fs.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 外部联系人的所属企微-出参
+ */
+@Data
+public class ExternalContactQwUserVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Long id;
+
+    /**
+     * 企微用户id
+     */
+    @Excel(name = "企微用户id")
+    private String qwUserId;
+
+    /**
+     * 企微用户名
+     */
+    @Excel(name = "企微用户名")
+    private String qwUserName;
+
+    /**
+     * 所属部门id
+     */
+    @Excel(name = "所属部门id")
+    private String department;
+
+    /**
+     * 公司id
+     */
+    @Excel(name = "公司id")
+    private Long companyId;
+
+    /**
+     * 公司员工id
+     */
+    @Excel(name = "公司员工id")
+    private Long companyUserId;
+
+    /**
+     * 公司名称
+     */
+    @Excel(name = "公司名称")
+    private String companyName;
+
+    /**
+     * 销售昵称
+     */
+    @Excel(name = "销售昵称")
+    private String companyUserName;
+
+}

+ 20 - 0
fs-service/src/main/java/com/fs/qw/vo/sidebar/ExternalContactTagVO.java

@@ -0,0 +1,20 @@
+package com.fs.qw.vo.sidebar;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+/**
+ * 侧边栏-外部联系人标签
+ */
+@Data
+@ApiModel
+public class ExternalContactTagVO {
+
+    @ApiModelProperty(value = "标签id")
+    private String tagId;
+
+    @ApiModelProperty(value = "标签名称")
+    private String name;
+
+
+}

+ 11 - 0
fs-service/src/main/resources/mapper/qw/QwTagGroupMapper.xml

@@ -97,4 +97,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+
+    <select id="selectQwTagGroups" resultType="com.fs.qw.vo.QwTagGroupListVO">
+        select * from qw_tag_group  where group_id in (
+            select DISTINCT group_id from qw_tag
+     <where>
+        <if test="name != null and name != '' ">
+         and name like concat( '%', #{name}, '%')
+        </if>
+     </where>
+        )
+    </select>
 </mapper>

+ 18 - 0
fs-service/src/main/resources/mapper/qw/QwUserMapper.xml

@@ -230,4 +230,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and qwt.status = 0
     </select>
 
+    <select id="selectQwUserByFsUserId" resultType="com.fs.qw.vo.sidebar.ExternalContactQwUserVO">
+        SELECT
+            qw_user.id,
+            qw_user.qw_user_id,
+            qw_user.qw_user_name,
+            qw_user.department,
+            qw_user.company_user_id,
+            qw_user.company_id,
+            company.company_name,
+            company_user.nick_name as companyUserName
+        FROM
+            qw_user
+                LEFT JOIN company_user ON company_user.user_id = qw_user.company_user_id
+                LEFT JOIN company ON company.company_id = qw_user.company_id
+        WHERE
+            qw_user.qw_user_id IN ( SELECT user_id FROM qw_external_contact WHERE fs_user_id = #{fsUserId} )
+    </select>
+
 </mapper>