wangyunpeng преди 2 дни
родител
ревизия
7d83e7d353
променени са 12 файла, в които са добавени 320 реда и са изтрити 17 реда
  1. 16 0
      api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/wecom/thirdpart/ext/ThirdPartWeComRoomMapperExt.java
  2. 4 0
      api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/wecom/thirdpart/ext/ThirdPartWeComStaffMapperExt.java
  3. 3 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/ThirdPartyRoomConfigParam.java
  4. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/ThirdPartyRoomListParam.java
  5. 4 0
      api-module/src/main/java/com/tzld/piaoquan/api/model/vo/IdNameVO.java
  6. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/model/vo/wecom/thirdpart/ThirdPartyRoomVO.java
  7. 4 0
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/WeComThirdPartyService.java
  8. 2 1
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyAccountServiceImpl.java
  9. 204 14
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyRoomServiceImpl.java
  10. 12 0
      api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyServiceImpl.java
  11. 46 0
      api-module/src/main/resources/mapper/wecom/thirdpart/ext/ThirdPartWeComRoomMapperExt.xml
  12. 21 0
      api-module/src/main/resources/mapper/wecom/thirdpart/ext/ThirdPartWeComStaffMapperExt.xml

+ 16 - 0
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/wecom/thirdpart/ext/ThirdPartWeComRoomMapperExt.java

@@ -0,0 +1,16 @@
+package com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ext;
+
+import com.tzld.piaoquan.api.model.param.wecom.thirdpart.ThirdPartyRoomListParam;
+import com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComRoom;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface ThirdPartWeComRoomMapperExt {
+
+    int getRoomCount(@Param("param") ThirdPartyRoomListParam param);
+
+    List<ThirdPartWeComRoom> getRoomList(@Param("param") ThirdPartyRoomListParam param,
+                                         @Param("offset") int offset, @Param("pageSize") Integer pageSize);
+
+}

+ 4 - 0
api-module/src/main/java/com/tzld/piaoquan/api/dao/mapper/wecom/thirdpart/ext/ThirdPartWeComStaffMapperExt.java

@@ -12,4 +12,8 @@ public interface ThirdPartWeComStaffMapperExt {
 
     List<ThirdPartWeComStaff> getAccountList(@Param("param") ThirdPartyAccountListParam param,
                                              @Param("offset") int offset, @Param("pageSize") Integer pageSize);
+
+    List<ThirdPartWeComStaff> getPushStaffList(@Param("accountId") Long accountId,
+                                               @Param("roomId") Long roomId,
+                                               @Param("name") String name);
 }

+ 3 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/ThirdPartyRoomConfigParam.java

@@ -8,6 +8,9 @@ import java.util.List;
 @Data
 public class ThirdPartyRoomConfigParam {
 
+    @ApiModelProperty(value = "群id")
+    private Long roomId;
+
     @ApiModelProperty(value = "投放场景")
     private String putScene;
     @ApiModelProperty(value = "渠道")

+ 2 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/param/wecom/thirdpart/ThirdPartyRoomListParam.java

@@ -1,10 +1,11 @@
 package com.tzld.piaoquan.api.model.param.wecom.thirdpart;
 
+import com.tzld.piaoquan.api.model.param.PageParam;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 @Data
-public class ThirdPartyRoomListParam {
+public class ThirdPartyRoomListParam extends PageParam {
 
     @ApiModelProperty(value = "企微主体名称")
     private String corpName;

+ 4 - 0
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/IdNameVO.java

@@ -1,10 +1,14 @@
 package com.tzld.piaoquan.api.model.vo;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.Objects;
 
 @Data
+@AllArgsConstructor
+@NoArgsConstructor
 public class IdNameVO<T> {
     private T id;
     private String name;

+ 2 - 1
api-module/src/main/java/com/tzld/piaoquan/api/model/vo/wecom/thirdpart/ThirdPartyRoomVO.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.api.model.vo.wecom.thirdpart;
 
+import com.tzld.piaoquan.api.model.vo.IdNameVO;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -17,7 +18,7 @@ public class ThirdPartyRoomVO {
     @ApiModelProperty(value = "群主")
     private String groupLeaderName;
     @ApiModelProperty(value = "推送人员")
-    private List<String> pushAccountNameList;
+    private List<IdNameVO<Long>> pushAccountNameList;
     @ApiModelProperty(value = "群人数")
     private Integer memberCount;
 

+ 4 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/WeComThirdPartyService.java

@@ -57,6 +57,8 @@ public interface WeComThirdPartyService {
 
     ThirdPartWeComStaff getStaffById(Long id);
 
+    List<ThirdPartWeComStaff> getStaffByIds(List<Long> ids);
+
     ThirdPartWeComStaff getStaffByUuid(String uuid);
 
     List<ThirdPartWeComStaff> getStaffListByThirdStaffIds(List<Long> thirdStaffIds);
@@ -64,4 +66,6 @@ public interface WeComThirdPartyService {
     void updateStaffStatus(UpdateStaffStatusRequest request);
 
     void updateAutoCreateRoomStatus(UpdateAutoCreateRoomStatusRequest request);
+
+    ThirdPartWeComRoom getRoomById(Long roomId);
 }

+ 2 - 1
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyAccountServiceImpl.java

@@ -142,7 +142,8 @@ public class WeComThirdPartyAccountServiceImpl implements WeComThirdPartyAccount
 
     @Override
     public List<IdNameVO<Long>> getPushAccountList(Long accountId, String name) {
-        return null;
+        List<ThirdPartWeComStaff> pushStaffList = staffMapperExt.getPushStaffList(accountId, null, name);
+        return pushStaffList.stream().map(staff -> new IdNameVO<>(staff.getThirdStaffId(), staff.getName())).collect(Collectors.toList());
     }
 
     @Override

+ 204 - 14
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyRoomServiceImpl.java

@@ -1,51 +1,241 @@
 package com.tzld.piaoquan.api.service.wecom.thirdparty.impl;
 
-import com.tzld.piaoquan.api.component.WeComThirdPartyApiClient;
-import com.tzld.piaoquan.api.model.param.wecom.thirdpart.ThirdPartyConfigGetParam;
-import com.tzld.piaoquan.api.model.param.wecom.thirdpart.ThirdPartyRoomConfigParam;
-import com.tzld.piaoquan.api.model.param.wecom.thirdpart.ThirdPartyRoomListParam;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ThirdPartWeComRoomConfigMapper;
+import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ThirdPartWeComRoomConfigTaskContentMapper;
+import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ThirdPartWeComRoomConfigTaskMapper;
+import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ext.ThirdPartWeComRoomMapperExt;
+import com.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ext.ThirdPartWeComStaffMapperExt;
+import com.tzld.piaoquan.api.model.param.wecom.thirdpart.*;
+import com.tzld.piaoquan.api.model.po.wecom.thirdpart.*;
 import com.tzld.piaoquan.api.model.vo.IdNameVO;
+import com.tzld.piaoquan.api.model.vo.wecom.thirdpart.ThirdPartyRoomConfigTaskContentVO;
+import com.tzld.piaoquan.api.model.vo.wecom.thirdpart.ThirdPartyRoomConfigTaskVO;
 import com.tzld.piaoquan.api.model.vo.wecom.thirdpart.ThirdPartyRoomConfigVO;
 import com.tzld.piaoquan.api.model.vo.wecom.thirdpart.ThirdPartyRoomVO;
 import com.tzld.piaoquan.api.service.wecom.thirdparty.WeComThirdPartyRoomService;
 import com.tzld.piaoquan.api.service.wecom.thirdparty.WeComThirdPartyService;
-import com.tzld.piaoquan.growth.common.utils.RedisUtils;
+import com.tzld.piaoquan.growth.common.utils.DistributedIdGenerator;
 import com.tzld.piaoquan.growth.common.utils.page.Page;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
 public class WeComThirdPartyRoomServiceImpl implements WeComThirdPartyRoomService {
 
-    @Autowired
-    private WeComThirdPartyApiClient apiClient;
     @Autowired
     private WeComThirdPartyService weComThirdPartyService;
-
     @Autowired
-    private RedisUtils redisUtils;
+    private ThirdPartWeComRoomConfigMapper roomConfigMapper;
+    @Autowired
+    private ThirdPartWeComRoomConfigTaskMapper roomConfigTaskMapper;
+    @Autowired
+    private ThirdPartWeComRoomConfigTaskContentMapper roomConfigTaskContentMapper;
+    @Autowired
+    private ThirdPartWeComStaffMapperExt staffMapperExt;
+    @Autowired
+    private ThirdPartWeComRoomMapperExt roomMapperExt;
 
     @Override
     public Page<ThirdPartyRoomVO> list(ThirdPartyRoomListParam param) {
-        return null;
+        Page<ThirdPartyRoomVO> result = new Page<>(param.getPageNum(), param.getPageSize());
+        int offset = (param.getPageNum() - 1) * param.getPageSize();
+        int count = roomMapperExt.getRoomCount(param);
+        result.setTotalSize(count);
+        if (count == 0) {
+            return result;
+        }
+        List<ThirdPartWeComRoom> roomList = roomMapperExt.getRoomList(param, offset, param.getPageSize());
+        List<ThirdPartyRoomVO> list = buildThirdPartyRoomVOList(roomList);
+        result.setObjs(list);
+        return result;
+    }
+
+    private List<ThirdPartyRoomVO> buildThirdPartyRoomVOList(List<ThirdPartWeComRoom> roomList) {
+        List<Long> roomIds = roomList.stream().map(ThirdPartWeComRoom::getId).collect(Collectors.toList());
+        List<Long> corpIds = roomList.stream().map(ThirdPartWeComRoom::getCorpId).collect(Collectors.toList());
+        List<ThirdPartWeComCorp> corpList = weComThirdPartyService.getCorpListByIds(corpIds);
+        Map<Long, ThirdPartWeComCorp> corpMap = corpList.stream()
+                .collect(Collectors.toMap(ThirdPartWeComCorp::getId, corp -> corp));
+        List<Long> staffIds = roomList.stream().map(ThirdPartWeComRoom::getStaffId).collect(Collectors.toList());
+        List<ThirdPartWeComStaff> staffList = weComThirdPartyService.getStaffByIds(staffIds);
+        Map<Long, ThirdPartWeComStaff> staffMap = staffList.stream()
+                .collect(Collectors.toMap(ThirdPartWeComStaff::getId, staff -> staff));
+        List<ThirdPartWeComRoomConfig> roomConfigList = getRoomConfigList(roomIds);
+        Map<Long, ThirdPartWeComRoomConfig> roomConfigMap = roomConfigList.stream()
+                .collect(Collectors.toMap(ThirdPartWeComRoomConfig::getRoomId, config -> config));
+        List<ThirdPartWeComStaff> pushStaffList = getRoomConfigPushList(roomConfigList);
+        Map<Long, ThirdPartWeComStaff> pushStaffMap = pushStaffList.stream()
+                .collect(Collectors.toMap(ThirdPartWeComStaff::getThirdStaffId, staff -> staff));
+
+        List<ThirdPartyRoomVO> result = new ArrayList<>();
+        for (ThirdPartWeComRoom room : roomList) {
+            ThirdPartyRoomVO vo = new ThirdPartyRoomVO();
+            vo.setId(room.getId());
+            vo.setCorpName(corpMap.get(room.getCorpId()).getName());
+            vo.setRoomName(room.getName());
+            vo.setGroupLeaderName(staffMap.get(room.getStaffId()).getName());
+            ThirdPartWeComRoomConfig roomConfig = roomConfigMap.get(room.getId());
+            if (Objects.nonNull(roomConfig)) {
+                List<IdNameVO<Long>> pushAccountNameList = new ArrayList<>();
+                ThirdPartWeComStaff primaryStaff = pushStaffMap.get(roomConfig.getPrimaryThirdStaffId());
+                if (Objects.nonNull(primaryStaff)) {
+                    pushAccountNameList.add(new IdNameVO<>(primaryStaff.getThirdStaffId(), primaryStaff.getName()));
+                }
+                ThirdPartWeComStaff secondaryStaff = pushStaffMap.get(roomConfig.getSecondThirdStaffId());
+                if (Objects.nonNull(secondaryStaff)) {
+                    pushAccountNameList.add(new IdNameVO<>(secondaryStaff.getThirdStaffId(), secondaryStaff.getName()));
+                }
+                vo.setPushAccountNameList(pushAccountNameList);
+            }
+            vo.setMemberCount(room.getMemberCount());
+            result.add(vo);
+        }
+        return result;
+    }
+
+    private List<ThirdPartWeComRoomConfig> getRoomConfigList(List<Long> roomIds) {
+        ThirdPartWeComRoomConfigExample example = new ThirdPartWeComRoomConfigExample();
+        example.createCriteria().andRoomIdIn(roomIds).andStatusEqualTo(1);
+        return roomConfigMapper.selectByExample(example);
     }
 
     @Override
     public List<IdNameVO<Long>> getPushAccountList(Long roomId, String name) {
-        return null;
+        ThirdPartWeComRoom room = weComThirdPartyService.getRoomById(roomId);
+        Long accountId = room.getStaffId();
+        List<ThirdPartWeComStaff> pushStaffList = staffMapperExt.getPushStaffList(accountId, roomId, name);
+        return pushStaffList.stream().map(staff -> new IdNameVO<>(staff.getThirdStaffId(), staff.getName())).collect(Collectors.toList());
     }
 
     @Override
     public ThirdPartyRoomConfigVO getRoomConfig(ThirdPartyConfigGetParam param) {
-        return null;
+        ThirdPartWeComRoomConfig config = getRoomConfig(param.getId());
+        if (Objects.isNull(config)) {
+            return null;
+        }
+        List<ThirdPartWeComStaff> pushStaffList = getRoomConfigPushList(Collections.singletonList(config));
+        Map<Long, String> pushStaffMap = pushStaffList.stream()
+                .collect(Collectors.toMap(ThirdPartWeComStaff::getThirdStaffId, ThirdPartWeComStaff::getName));
+        List<ThirdPartWeComRoomConfigTask> taskList = getRoomConfigTasks(config.getId());
+        List<String> taskIds = taskList.stream().map(ThirdPartWeComRoomConfigTask::getId).collect(Collectors.toList());
+        List<ThirdPartWeComRoomConfigTaskContent> contentList = getRoomConfigTaskContents(taskIds);
+        Map<String, List<ThirdPartWeComRoomConfigTaskContent>> taskContentMap = contentList.stream()
+                .collect(Collectors.groupingBy(ThirdPartWeComRoomConfigTaskContent::getTaskId));
+        ThirdPartyRoomConfigVO result = new ThirdPartyRoomConfigVO();
+        result.setPutScene(config.getPutScene());
+        result.setChannel(config.getChannel());
+        if (Objects.nonNull(config.getPrimaryThirdStaffId())) {
+            result.setPrimaryThirdStaffId(config.getPrimaryThirdStaffId());
+            result.setPrimaryThirdStaffName(pushStaffMap.get(config.getPrimaryThirdStaffId()));
+        }
+        if (Objects.nonNull(config.getSecondThirdStaffId())) {
+            result.setSecondThirdStaffId(config.getSecondThirdStaffId());
+            result.setSecondThirdStaffName(pushStaffMap.get(config.getSecondThirdStaffId()));
+        }
+        result.setTaskList(taskList.stream().map(task -> {
+            ThirdPartyRoomConfigTaskVO vo = new ThirdPartyRoomConfigTaskVO();
+            vo.setSwitchFlag(task.getSwitchFlag());
+            vo.setSendTime(JSONObject.parseArray(task.getSendTime(), String.class));
+            vo.setRandomMin(task.getRandomMin());
+            vo.setSeq(task.getSeq());
+            List<ThirdPartWeComRoomConfigTaskContent> contents = taskContentMap.get(task.getId());
+            vo.setContentList(contents.stream().map(content -> {
+                ThirdPartyRoomConfigTaskContentVO contentVO = new ThirdPartyRoomConfigTaskContentVO();
+                contentVO.setType(content.getType());
+                contentVO.setContent(content.getContent());
+                contentVO.setSource(content.getSource());
+                contentVO.setSourceContent(content.getSourceContent());
+                contentVO.setSeq(content.getSeq());
+                return contentVO;
+            }).collect(Collectors.toList()));
+            return vo;
+        }).collect(Collectors.toList()));
+        return result;
+    }
+
+    private List<ThirdPartWeComStaff> getRoomConfigPushList(List<ThirdPartWeComRoomConfig> configList) {
+        List<Long> thirdStaffIds = new ArrayList<>();
+        for (ThirdPartWeComRoomConfig config : configList) {
+            if (Objects.nonNull(config.getPrimaryThirdStaffId())) {
+                thirdStaffIds.add(config.getPrimaryThirdStaffId());
+            }
+            if (Objects.nonNull(config.getSecondThirdStaffId())) {
+                thirdStaffIds.add(config.getSecondThirdStaffId());
+            }
+        }
+        return weComThirdPartyService.getStaffListByThirdStaffIds(thirdStaffIds);
+    }
+
+    private ThirdPartWeComRoomConfig getRoomConfig(Long roomId) {
+        ThirdPartWeComRoomConfigExample example = new ThirdPartWeComRoomConfigExample();
+        example.createCriteria().andRoomIdEqualTo(roomId).andStatusEqualTo(1);
+        List<ThirdPartWeComRoomConfig> configs = roomConfigMapper.selectByExample(example);
+        if (configs.isEmpty()) {
+            return null;
+        }
+        return configs.get(0);
+    }
+
+    private List<ThirdPartWeComRoomConfigTask> getRoomConfigTasks(String configId) {
+        ThirdPartWeComRoomConfigTaskExample example = new ThirdPartWeComRoomConfigTaskExample();
+        example.createCriteria().andConfigIdEqualTo(configId);
+        return roomConfigTaskMapper.selectByExample(example);
+    }
+
+    private List<ThirdPartWeComRoomConfigTaskContent> getRoomConfigTaskContents(List<String> taskIds) {
+        ThirdPartWeComRoomConfigTaskContentExample example = new ThirdPartWeComRoomConfigTaskContentExample();
+        example.createCriteria().andTaskIdIn(taskIds);
+        return roomConfigTaskContentMapper.selectByExample(example);
     }
 
     @Override
     public void saveRoomConfig(ThirdPartyRoomConfigParam param) {
-
+        // todo check param
+        ThirdPartWeComRoomConfig config = getRoomConfig(param.getRoomId());
+        if (Objects.nonNull(config)) {
+            config.setStatus(0);
+            config.setUpdateTime(new Date());
+            roomConfigMapper.updateByPrimaryKey(config);
+        }
+        ThirdPartWeComRoomConfig newConfig = new ThirdPartWeComRoomConfig();
+        newConfig.setId(DistributedIdGenerator.generate());
+        newConfig.setRoomId(param.getRoomId());
+        newConfig.setPutScene(param.getPutScene());
+        newConfig.setChannel(param.getChannel());
+        newConfig.setPrimaryThirdStaffId(param.getPrimaryThirdStaffId());
+        newConfig.setSecondThirdStaffId(param.getSecondThirdStaffId());
+        newConfig.setStatus(1);
+        newConfig.setCreateTime(new Date());
+        newConfig.setUpdateTime(new Date());
+        roomConfigMapper.insert(newConfig);
+        for (ThirdPartyRoomConfigTaskParam taskParam : param.getTaskList()) {
+            ThirdPartWeComRoomConfigTask newTask = new ThirdPartWeComRoomConfigTask();
+            newTask.setConfigId(newConfig.getId());
+            newTask.setSwitchFlag(taskParam.getSwitchFlag());
+            newTask.setSendTime(JSONObject.toJSONString(taskParam.getSendTime()));
+            newTask.setRandomMin(taskParam.getRandomMin());
+            newTask.setSeq(taskParam.getSeq());
+            newTask.setCreateTime(new Date());
+            newTask.setUpdateTime(new Date());
+            roomConfigTaskMapper.insert(newTask);
+            for (ThirdPartyRoomConfigTaskContentParam taskContentParam : taskParam.getContentList()) {
+                ThirdPartWeComRoomConfigTaskContent newContent = new ThirdPartWeComRoomConfigTaskContent();
+                newContent.setTaskId(newTask.getId());
+                newContent.setType(taskContentParam.getType());
+                newContent.setContent(taskContentParam.getContent());
+                newContent.setSource(taskContentParam.getSource());
+                newContent.setSourceContent(taskContentParam.getSourceContent());
+                newContent.setSeq(taskContentParam.getSeq());
+                newContent.setCreateTime(new Date());
+                newContent.setUpdateTime(new Date());
+                roomConfigTaskContentMapper.insert(newContent);
+            }
+        }
     }
 }

+ 12 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/wecom/thirdparty/impl/WeComThirdPartyServiceImpl.java

@@ -498,6 +498,13 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         return thirdPartWeComStaffMapper.selectByPrimaryKey(id);
     }
 
+    @Override
+    public List<ThirdPartWeComStaff> getStaffByIds(List<Long> ids) {
+        ThirdPartWeComStaffExample example = new ThirdPartWeComStaffExample();
+        example.createCriteria().andIdIn(ids);
+        return thirdPartWeComStaffMapper.selectByExample(example);
+    }
+
     @Override
     public ThirdPartWeComStaff getStaffByUuid(String uuid) {
         ThirdPartWeComStaffExample example = new ThirdPartWeComStaffExample();
@@ -536,4 +543,9 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         thirdPartWeComStaffMapper.updateByPrimaryKeySelective(staff);
     }
 
+    @Override
+    public ThirdPartWeComRoom getRoomById(Long roomId) {
+        return thirdPartWeComRoomMapper.selectByPrimaryKey(roomId);
+    }
+
 }

+ 46 - 0
api-module/src/main/resources/mapper/wecom/thirdpart/ext/ThirdPartWeComRoomMapperExt.xml

@@ -0,0 +1,46 @@
+<?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.tzld.piaoquan.api.dao.mapper.wecom.thirdpart.ext.ThirdPartWeComRoomMapperExt">
+
+    <select id="getRoomCount" resultType="java.lang.Integer">
+        select count(1)
+        from third_part_we_com_staff staff
+        join third_part_we_com_corp corp on staff.corp_id = corp.id
+        <where>
+            <trim prefixOverrides="and">
+                <if test="param.corpName != null">
+                    and corp.name = #{param.corpName}
+                </if>
+                <if test="param.accountName != null">
+                    and staff.name = #{param.accountName}
+                </if>
+                <if test="param.mobile != null">
+                    and staff.mobile = #{param.mobile}
+                </if>
+            </trim>
+        </where>
+    </select>
+
+    <select id="getRoomList"
+            resultType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComRoom">
+        select room.*
+        from third_part_we_com_room room
+        join third_part_we_com_corp corp on room.corp_id = corp.id
+        <where>
+            <trim prefixOverrides="and">
+                <if test="param.corpName != null">
+                    and corp.name = #{param.corpName}
+                </if>
+                <if test="param.accountName != null">
+                    and staff.name = #{param.accountName}
+                </if>
+                <if test="param.mobile != null">
+                    and staff.mobile = #{param.mobile}
+                </if>
+            </trim>
+        </where>
+        order by staff.id desc
+        limit #{offset}, #{pageSize}
+    </select>
+
+</mapper>

+ 21 - 0
api-module/src/main/resources/mapper/wecom/thirdpart/ext/ThirdPartWeComStaffMapperExt.xml

@@ -43,4 +43,25 @@
         limit #{offset}, #{pageSize}
     </select>
 
+    <select id="getPushStaffList"
+            resultType="com.tzld.piaoquan.api.model.po.wecom.thirdpart.ThirdPartWeComStaff">
+        select staff.*
+        from third_part_we_com_staff staff
+        join (
+            select distinct staff.name, staff.third_staff_id, staff.id
+            from third_part_we_com_room room
+             join third_part_we_com_room_user room_user on room.third_room_id = room_user.third_room_id
+             join third_part_we_com_staff staff on staff.third_staff_id = room_user.uin
+            where room.staff_id = #{accountId}
+            <if test="roomId != null and roomId != ''">
+                and room.id = #{roomId}
+            </if>
+        ) t2 on staff.id = t2.id
+        where staff.status = 0
+        and staff.id != #{accountId}
+        <if test="name != null and name != ''">
+            and staff.name like concat('%', #{name}, '%')
+        </if>
+    </select>
+
 </mapper>