|
|
@@ -551,4 +551,98 @@ public interface QwExternalContactMapper extends BaseMapper<QwExternalContact> {
|
|
|
List<QwExternalContact> getGroupChatUserByChatIdAndUserName(@Param("userId")String userId,@Param("userName")String userName,@Param("corpId") String corpId,@Param("chatId") String chatId);
|
|
|
@Select("select * from qw_external_contact where unionid = #{unionID} order by create_time asc limit 1 ")
|
|
|
QwExternalContact selectQwExternalByUnionID(String unionId);
|
|
|
+
|
|
|
+ @Select("<script> " +
|
|
|
+ "WITH contact_analysis AS (\n" +
|
|
|
+ " SELECT \n" +
|
|
|
+ " id,\n" +
|
|
|
+ " external_user_id,\n" +
|
|
|
+ " corp_id,\n" +
|
|
|
+ " fs_user_id,\n" +
|
|
|
+ " COUNT(CASE WHEN fs_user_id IS NOT NULL THEN 1 END) OVER (\n" +
|
|
|
+ " PARTITION BY external_user_id, corp_id\n" +
|
|
|
+ " ) as has_valid_fs_user,\n" +
|
|
|
+ " COUNT(CASE WHEN fs_user_id IS NULL THEN 1 END) OVER (\n" +
|
|
|
+ " PARTITION BY external_user_id, corp_id\n" +
|
|
|
+ " ) as has_null_fs_user,\n" +
|
|
|
+ " COUNT(*) OVER (\n" +
|
|
|
+ " PARTITION BY external_user_id, corp_id\n" +
|
|
|
+ " ) as total_records\n" +
|
|
|
+ " FROM qw_external_contact\n" +
|
|
|
+ " WHERE external_user_id IS NOT NULL \n" +
|
|
|
+ " AND corp_id IS NOT NULL\n" +
|
|
|
+ " AND create_time >='2025-10-01 00:00:00'\n" +
|
|
|
+ " \n" +
|
|
|
+ "),\n" +
|
|
|
+ "filtered_contacts AS (\n" +
|
|
|
+ " SELECT \n" +
|
|
|
+ " id,\n" +
|
|
|
+ " external_user_id,\n" +
|
|
|
+ " corp_id,\n" +
|
|
|
+ " fs_user_id\n" +
|
|
|
+ " FROM contact_analysis\n" +
|
|
|
+ " WHERE total_records >= 2\n" +
|
|
|
+ " AND has_valid_fs_user >= 1\n" +
|
|
|
+ " AND has_null_fs_user >= 1\n" +
|
|
|
+ " AND fs_user_id IS NULL\n" +
|
|
|
+ ")\n" +
|
|
|
+ "SELECT \n" +
|
|
|
+ " corp_id\n" +
|
|
|
+ "FROM filtered_contacts\n" +
|
|
|
+ "GROUP BY corp_id" +
|
|
|
+ "</script> ")
|
|
|
+ public List<String> selectQwExternalContactMandatoryRegistration();
|
|
|
+
|
|
|
+ @Select("<script>" +
|
|
|
+ "SELECT t1.id,t2.valid_fs_user_id as fs_user_id \n" +
|
|
|
+ "FROM qw_external_contact t1\n" +
|
|
|
+ "JOIN (\n" +
|
|
|
+ " SELECT \n" +
|
|
|
+ " external_user_id,\n" +
|
|
|
+ " corp_id,\n" +
|
|
|
+ " MAX(fs_user_id) as valid_fs_user_id\n" +
|
|
|
+ " FROM qw_external_contact\n" +
|
|
|
+ " WHERE external_user_id IS NOT NULL \n" +
|
|
|
+ " AND corp_id IS NOT NULL \n" +
|
|
|
+ " AND corp_id = #{corpId}\n" +
|
|
|
+ " AND fs_user_id IS NOT NULL\n" +
|
|
|
+ " AND create_time >='2025-10-01 00:00:00' \n" +
|
|
|
+ " GROUP BY external_user_id, corp_id\n" +
|
|
|
+ ") t2 ON t1.external_user_id = t2.external_user_id \n" +
|
|
|
+ " AND t1.corp_id = t2.corp_id\n" +
|
|
|
+ "JOIN (\n" +
|
|
|
+ " SELECT \n" +
|
|
|
+ " external_user_id,\n" +
|
|
|
+ " corp_id\n" +
|
|
|
+ " FROM qw_external_contact\n" +
|
|
|
+ " WHERE external_user_id IS NOT NULL \n" +
|
|
|
+ " AND corp_id IS NOT NULL \n" +
|
|
|
+ " AND corp_id = #{corpId}\n" +
|
|
|
+ " AND create_time >='2025-10-01 00:00:00' \n" +
|
|
|
+ " GROUP BY external_user_id, corp_id\n" +
|
|
|
+ " HAVING COUNT(*) >= 2\n" +
|
|
|
+ " AND SUM(CASE WHEN fs_user_id IS NOT NULL THEN 1 ELSE 0 END) >= 1\n" +
|
|
|
+ " AND SUM(CASE WHEN fs_user_id IS NULL THEN 1 ELSE 0 END) >= 1\n" +
|
|
|
+ ") t3 ON t1.external_user_id = t3.external_user_id \n" +
|
|
|
+ " AND t1.corp_id = t3.corp_id\n" +
|
|
|
+ "WHERE t1.fs_user_id IS NULL\n" +
|
|
|
+ " AND t1.corp_id = #{corpId}\n" +
|
|
|
+ "</script>")
|
|
|
+ public List<QwMandatoryRegistrParam> selectQwExternalContactMandatoryRegistrationByIds(@Param("corpId") String corpId);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Update("<script>" +
|
|
|
+ "UPDATE qw_external_contact " +
|
|
|
+ "SET fs_user_id = CASE " +
|
|
|
+ "<foreach collection='map' item='item'>" +
|
|
|
+ "WHEN id = #{item.id} THEN #{item.fsUserId} " +
|
|
|
+ "</foreach>" +
|
|
|
+ "ELSE fs_user_id END " +
|
|
|
+ "WHERE id IN " +
|
|
|
+ "<foreach collection='map' item='item' open='(' separator=',' close=')'>" +
|
|
|
+ "#{item.id}" +
|
|
|
+ "</foreach>" +
|
|
|
+ "</script>")
|
|
|
+ public int batchUpdateQwExternalContactMandatoryRegistration(@Param("map") List<QwMandatoryRegistrParam> batchList);
|
|
|
}
|