Commit e3f4a3c3 by 徐高华

群群发

parent 29684b70
...@@ -60,6 +60,16 @@ public class GroupChatPlanDTO implements Serializable { ...@@ -60,6 +60,16 @@ public class GroupChatPlanDTO implements Serializable {
// 是否发送全部 // 是否发送全部
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() { public int getSendAllFlag() {
return sendAllFlag; return sendAllFlag;
......
...@@ -26,6 +26,11 @@ public interface GroupChatOwnerMapper { ...@@ -26,6 +26,11 @@ public interface GroupChatOwnerMapper {
public int updateChatCount(@Param("staffId") String staffId, @Param("chatCount") int chatCount); public int updateChatCount(@Param("staffId") String staffId, @Param("chatCount") int chatCount);
public List<GroupChatOwnerDTO> listOwner(OwnerSearchQDTO qdto); public List<GroupChatOwnerDTO> listOwner(OwnerSearchQDTO qdto);
public List<GroupChatOwnerDTO> listOwnerPage(@Param("wxEnterpriseId")String wxEnterpriseId ,
@Param("departmentIdList") List<String> departmentIdList ,
@Param("searchParams") String searchParams ,
@Param("startItem") int startItem, @Param("pageSize") int pageSize);
public List<GroupChatOwnerDTO> listOwnerForStatistic(@Param("wxEnterpriseId")String wxEnterpriseId , @Param("startItem") int startItem, public List<GroupChatOwnerDTO> listOwnerForStatistic(@Param("wxEnterpriseId")String wxEnterpriseId , @Param("startItem") int startItem,
@Param("pageSize") int pageSize); @Param("pageSize") int pageSize);
......
...@@ -55,6 +55,16 @@ public class TabGroupChatPlan implements Serializable { ...@@ -55,6 +55,16 @@ public class TabGroupChatPlan implements Serializable {
// 是否发送全部 // 是否发送全部
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() { public int getSendAllFlag() {
return sendAllFlag; return sendAllFlag;
......
...@@ -55,6 +55,16 @@ public class GroupChatPlanBO implements Serializable{ ...@@ -55,6 +55,16 @@ public class GroupChatPlanBO implements Serializable{
private Integer materialFrom; private Integer materialFrom;
// 是否发送全部 // 是否发送全部
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() { public int getSendAllFlag() {
return sendAllFlag; return sendAllFlag;
......
...@@ -93,6 +93,9 @@ public interface GroupChatService { ...@@ -93,6 +93,9 @@ public interface GroupChatService {
*/ */
public Page<GroupChatOwnerDTO> listOwnerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo); public Page<GroupChatOwnerDTO> listOwnerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo);
public List<String> setDepartIdList(String wxEnterpriseId, String departmentId) ;
/** /**
* *
* @Title: listOwnerHistory * @Title: listOwnerHistory
......
...@@ -350,25 +350,37 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -350,25 +350,37 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
int pageNum = 0; int pageNum = 0;
List<TabGroupChatPlanOwnerLog> ownerList = null; List<TabGroupChatPlanOwnerLog> ownerList = null;
int sendAlFlag = plan.getSendAllFlag() ; int sendAlFlag = plan.getSendAllFlag() ;
String allSearchParams = plan.getAllSearchParams() ;
// 发送全部群主 // 发送全部群主
if(sendAlFlag==1) { if(sendAlFlag==1) {
int ownerPageNo = 0; int ownerPageNo = 0;
int ownerPageSize = 500 ; int ownerPageSize = 500 ;
int totalCount = 0 ; int totalCount = 0 ;
List<GroupChatOwnerDTO> list = null; List<GroupChatOwnerDTO> list = null;
String searchParams = null ;
List<String> departmentIdList = null ;
if(StringUtils.isNotEmpty(allSearchParams)) {
JSONObject json = JSONObject.parseObject(allSearchParams) ;
searchParams = json.getString("searchParams") ;
String dpid = json.getString("departmentId") ;
if(StringUtils.isNotBlank(dpid)) {
departmentIdList = this.groupChatService.setDepartIdList(wxEnterpriseId,dpid) ;
}
}
while (true) { while (true) {
list = this.groupChatOwnerMapper.listOwnerForStatistic(wxEnterpriseId, ownerPageNo * ownerPageSize, ownerPageSize); if(null != searchParams || null != departmentIdList) {
list = this.groupChatOwnerMapper.listOwnerPage(wxEnterpriseId, departmentIdList,searchParams,ownerPageNo * ownerPageSize, ownerPageSize);
}else {
list = this.groupChatOwnerMapper.listOwnerForStatistic(wxEnterpriseId, ownerPageNo * ownerPageSize, ownerPageSize);
}
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isEmpty(list)) {
break; break;
} }
ownerPageNo++; ownerPageNo++;
List<String> staffIdList = this.filterNoClerk(wxEnterpriseId,list) ; logger.info("全部,群主数={},{},过滤后={}", wxEnterpriseId,list.size());
logger.info("全部,群主数={},{},过滤后={}", wxEnterpriseId,list.size(),staffIdList.size()); String staffIds = list.stream().map(o->o.getStaffId()).collect(Collectors.joining(",")) ;
if(CollectionUtils.isNotEmpty(staffIdList)) { totalCount = totalCount + list.size() ;
String staffIds = staffIdList.stream().collect(Collectors.joining(",")) ; this.groupChatPlanOwnerLogService.batchAdd(staffIds, plan);
totalCount = totalCount + staffIdList.size() ;
this.groupChatPlanOwnerLogService.batchAdd(staffIds, plan);
}
} }
this.groupChatPlanMapper.updateStaffCount(planId,totalCount); this.groupChatPlanMapper.updateStaffCount(planId,totalCount);
} }
......
...@@ -1075,7 +1075,8 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -1075,7 +1075,8 @@ public class GroupChatServiceImpl implements GroupChatService {
return retPage; return retPage;
} }
private List<String> setDepartIdList(String wxEnterpriseId, String departmentId) { @Override
public List<String> setDepartIdList(String wxEnterpriseId, String departmentId) {
List<String> departmentIdList = new ArrayList<>(); List<String> departmentIdList = new ArrayList<>();
if (StringUtils.isNotBlank(departmentId)) { if (StringUtils.isNotBlank(departmentId)) {
TabHaobanDepartment department = this.departmentService.selectById(departmentId); TabHaobanDepartment department = this.departmentService.selectById(departmentId);
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
and b.staff_name like #{searchParams} and b.staff_name like #{searchParams}
</if> </if>
<if test="status==1"> <if test="status==1">
and b.status_flag = 1 and b.status_flag = 1
</if> </if>
<if test="status==2"> <if test="status==2">
and b.status_flag = 0 and b.status_flag = 0
...@@ -77,6 +77,32 @@ ...@@ -77,6 +77,32 @@
group by a.staff_id group by a.staff_id
</if> </if>
</select> </select>
<select id="listOwnerPage" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
select * from (
SELECT a.staff_id staffId , b.`staff_name` staffName , a.wx_enterprise_id wxEnterpriseId ,
b.wx_user_id wxUserId , b.wx_open_user_id wxOpenUserId
FROM tab_haoban_group_chat_owner a LEFT JOIN tab_haoban_staff b ON a.`staff_id` = b.`staff_id`
<if test="departmentIdList != null and departmentIdList.size() > 0">
left join tab_haoban_staff_department_related c on a.staff_id = c.staff_id and c.status_flag = 1
</if>
where a.wx_enterprise_id=#{wxEnterpriseId}
<if test="departmentIdList != null and departmentIdList.size() > 0">
and c.department_id IN
<foreach collection="departmentIdList" item="id" index="index" open="(" close=")" separator=",">
#{id,jdbcType=VARCHAR}
</foreach>
</if>
<if test="null != searchParams and ''!=searchParams ">
and b.staff_name like #{searchParams}
</if>
and b.status_flag = 1
<if test="departmentIdList != null and departmentIdList.size() > 0">
group by a.staff_id
</if>
) t limit ${startItem},${pageSize}
</select>
<select id="listOwnerForStatistic" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO"> <select id="listOwnerForStatistic" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
SELECT a.staff_id staffId , a.wx_enterprise_id wxEnterpriseId , SELECT a.staff_id staffId , a.wx_enterprise_id wxEnterpriseId ,
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
<result column="send_flag" property="sendFlag" /> <result column="send_flag" property="sendFlag" />
<result column="material_from" property="materialFrom" /> <result column="material_from" property="materialFrom" />
<result column="send_all_flag" property="sendAllFlag" /> <result column="send_all_flag" property="sendAllFlag" />
<result column="all_search_params" property="allSearchParams" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
plan_id, plan_id,
...@@ -52,7 +53,7 @@ ...@@ -52,7 +53,7 @@
success_chat_count, success_chat_count,
fail_chat_count , fail_chat_count ,
wx_enterprise_id , enterprise_id , send_flag , wx_enterprise_id , enterprise_id , send_flag ,
material_from , send_all_flag material_from , send_all_flag , all_search_params
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -79,7 +80,7 @@ ...@@ -79,7 +80,7 @@
send_count, send_count,
success_chat_count, success_chat_count,
fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag, fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag,
material_from , send_all_flag material_from , send_all_flag , all_search_params
)VALUES( )VALUES(
#{planId}, #{planId},
#{name}, #{name},
...@@ -101,7 +102,7 @@ ...@@ -101,7 +102,7 @@
#{sendCount}, #{sendCount},
#{successChatCount}, #{successChatCount},
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1, #{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1,
#{materialFrom} , #{sendAllFlag} #{materialFrom} , #{sendAllFlag} , #{allSearchParams}
) )
]]> ]]>
</insert> </insert>
...@@ -145,7 +146,8 @@ ...@@ -145,7 +146,8 @@
end_time=#{endTime}, end_time=#{endTime},
expire_days=#{expireDays}, expire_days=#{expireDays},
material_from=#{materialFrom} , material_from=#{materialFrom} ,
send_all_flag = #{sendAllFlag} send_all_flag = #{sendAllFlag} ,
all_search_params = #{allSearchParams}
where plan_id = #{planId} where plan_id = #{planId}
]]> ]]>
</update> </update>
......
...@@ -63,6 +63,16 @@ public class GroupChatPlanVO implements Serializable{ ...@@ -63,6 +63,16 @@ public class GroupChatPlanVO implements Serializable{
// 是否发送全部 // 是否发送全部
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件
private String allSearchParams ;
public String getAllSearchParams() {
return allSearchParams;
}
public void setAllSearchParams(String allSearchParams) {
this.allSearchParams = allSearchParams;
}
public int getSendAllFlag() { public int getSendAllFlag() {
return sendAllFlag; return sendAllFlag;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment