Przeglądaj źródła

Merge branch '20251119-wyp-weCom' into test

wangyunpeng 3 tygodni temu
rodzic
commit
eae7176e40

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

@@ -8,9 +8,11 @@ import java.util.List;
 
 public interface ThirdPartWeComRoomMapperExt {
 
-    int getRoomCount(@Param("param") ThirdPartyRoomListParam param);
+    int getRoomCount(@Param("param") ThirdPartyRoomListParam param,
+                     @Param("pushAccountIds") List<Long> pushAccountIds);
 
     List<ThirdPartWeComRoom> getRoomList(@Param("param") ThirdPartyRoomListParam param,
+                                         @Param("pushAccountIds") List<Long> pushAccountIds,
                                          @Param("offset") int offset, @Param("pageSize") Integer pageSize);
 
     List<ThirdPartWeComRoom> getNoConfigRoomList(@Param("staffId") Long id);

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

@@ -13,4 +13,6 @@ public class ThirdPartyRoomListParam extends PageParam {
     private String groupLeaderName;
     @ApiModelProperty(value = "群名称")
     private String roomName;
+    @ApiModelProperty(value = "推送人员")
+    private String pushAccountName;
 }

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

@@ -22,7 +22,6 @@ import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
 import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketDataExample;
 import com.tzld.piaoquan.growth.common.model.po.GhDetail;
 import com.tzld.piaoquan.growth.common.model.po.GhDetailExample;
-import com.tzld.piaoquan.growth.common.utils.LarkRobotUtil;
 import com.tzld.piaoquan.growth.common.utils.RedisUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -69,7 +68,7 @@ public class CgiReplyServiceImpl implements CgiReplyService {
         example.createCriteria().andGhIdEqualTo(ghId).andIsDeleteEqualTo(0);
         List<GhDetail> ghDetails = ghDetailMapper.selectByExample(example);
         if (CollectionUtils.isEmpty(ghDetails)) {
-            LarkRobotUtil.sendMessage("公众号信息查询失败 ghId=" + ghId);
+            //LarkRobotUtil.sendMessage("公众号信息查询失败 ghId=" + ghId);
             return null;
         }
         GhDetail ghDetail = ghDetails.get(0);

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

@@ -21,6 +21,8 @@ public interface WeComThirdPartyService {
 
     LoginInfo getRunClientByUuid(UuidRequest request);
 
+    void saveStaffQrCode(String uuid);
+
     List<ThirdPartWeComCorp> getCorpListByIds(List<Long> ids);
 
     List<GetInnerContactsResponse.ContactItem> getInnerContacts(GetInnerContactsRequest request);

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

@@ -495,6 +495,10 @@ public class WeComThirdPartyAccountServiceImpl implements WeComThirdPartyAccount
         for (ThirdPartWeComStaff staff : staffList) {
             ThirdPartyAccountConfigParam configParam = buildThirdPartyAccountConfigParam(staff);
             saveAccountConfig(configParam);
+            if (staff.getStatus() == 0) {
+                apiClient.setCallbackUrl(new SetCallbackUrlRequest(staff.getThirdUuid(), callbackUrl));
+                weComThirdPartyService.saveStaffQrCode(staff.getThirdUuid());
+            }
         }
     }
 

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

@@ -53,12 +53,20 @@ public class WeComThirdPartyRoomServiceImpl implements WeComThirdPartyRoomServic
     public Page<ThirdPartyRoomVO> list(ThirdPartyRoomListParam param) {
         Page<ThirdPartyRoomVO> result = new Page<>(param.getPageNum(), param.getPageSize());
         int offset = (param.getPageNum() - 1) * param.getPageSize();
-        int count = roomMapperExt.getRoomCount(param);
+        List<Long> pushAccountIds = null;
+        if (StringUtils.isNotBlank(param.getPushAccountName())) {
+            pushAccountIds = staffMapperExt.getStaffIdByName(param.getPushAccountName());
+            if (CollectionUtils.isEmpty(pushAccountIds)) {
+                result.setTotalSize(0);
+                return result;
+            }
+        }
+        int count = roomMapperExt.getRoomCount(param, pushAccountIds);
         result.setTotalSize(count);
         if (count == 0) {
             return result;
         }
-        List<ThirdPartWeComRoom> roomList = roomMapperExt.getRoomList(param, offset, param.getPageSize());
+        List<ThirdPartWeComRoom> roomList = roomMapperExt.getRoomList(param, pushAccountIds, offset, param.getPageSize());
         List<ThirdPartyRoomVO> list = buildThirdPartyRoomVOList(roomList);
         result.setObjs(list);
         return result;

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

@@ -27,6 +27,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.ByteArrayInputStream;
@@ -53,6 +54,9 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
     @Autowired
     private RedisUtils redisUtils;
 
+    @Value("${wecom.thirdpart.callback.url:https://test-tp-open.piaoquantv.com/wecom/thirdparty/callback}")
+    private String callbackUrl;
+
     @Override
     public InitResponse init(InitRequest request) {
         if (Objects.isNull(request)) {
@@ -84,6 +88,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             log.error("WeComThirdPartyService get qr code failed, request: {}, response: {}", request, response);
             return null;
         }
+        apiClient.setCallbackUrl(new SetCallbackUrlRequest(request.getUuid(), callbackUrl));
         return commonResponse.getData();
     }
 
@@ -170,7 +175,15 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
             existStaff.setUpdateTime(new Date());
             thirdPartWeComStaffMapper.updateByPrimaryKeySelective(existStaff);
         }
+        saveStaffQrCode(uuid);
+
+        // 清除掉线检测
+        String offLineKey = "wecom:thirdpart:offline:" + uuid;
+        redisUtils.del(offLineKey);
+    }
 
+    @Override
+    public void saveStaffQrCode(String uuid) {
         // 获取名片二维码
         String response = apiClient.getExternalBusinessCard(new UuidRequest(uuid));
         CommonResponse<ExternalBusinessCardResponse> cardCommonResponse =
@@ -189,10 +202,6 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
         String fileUri = "temp/" + System.currentTimeMillis() + "_" + RandomUtil.generate18String() + ".png";
         String qrImage = AliOssFileTool.saveInPublicReturnHost(inputStream, EnumPublicBuckets.PUBBUCKET, fileUri, EnumFileType.PICTURE);
         weComMapperExt.updateStaffQrImageByUuid(uuid, qrImage);
-
-        // 清除掉线检测
-        String offLineKey = "wecom:thirdpart:offline:" + uuid;
-        redisUtils.del(offLineKey);
     }
 
     private Corp getCorpByName(String corpName) {

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

@@ -18,6 +18,12 @@
         <if test="param.roomName != null">
             and room.name like concat('%', #{param.roomName}, '%')
         </if>
+        <if test="pushAccountIds != null and pushAccountIds.size() > 0">
+            and (room_config.primary_third_staff_id in
+            <foreach collection="pushAccountIds" item="item" open="(" close=")" separator=",">#{item}</foreach>
+            or room_config.second_third_staff_id in
+            <foreach collection="pushAccountIds" item="item" open="(" close=")" separator=",">#{item}</foreach>)
+        </if>
     </select>
 
     <select id="getRoomList"
@@ -37,6 +43,12 @@
         <if test="param.roomName != null">
             and room.name like concat('%', #{param.roomName}, '%')
         </if>
+        <if test="pushAccountIds != null and pushAccountIds.size() > 0">
+            and (room_config.primary_third_staff_id in
+            <foreach collection="pushAccountIds" item="item" open="(" close=")" separator=",">#{item}</foreach>
+            or room_config.second_third_staff_id in
+            <foreach collection="pushAccountIds" item="item" open="(" close=")" separator=",">#{item}</foreach>)
+        </if>
         order by staff.id desc
         limit #{offset}, #{pageSize}
     </select>