Commit cec971d2 by 徐高华

群同步

parent 01990c17
......@@ -23,6 +23,8 @@ public interface GroupChatMapper {
public int update(TabGroupChat tabHaobanGroupChat);
public int updateData() ;
// 更新群状态
public int updateChatStatus(@Param("groupChatId")Long groupChatId , @Param("chatStatus")int chatStatus) ;
......
package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
......@@ -17,7 +19,7 @@ public interface GroupChatUserMapper {
public int insert(TabGroupChatUser tabHaobanGroupChatUser);
public int deleteByPrimaryKey(Long chatUserId);
public int delete(@Param("idList") List<Long> chatUserIdList);
public int update(TabGroupChatUser tabHaobanGroupChatUser);
......@@ -26,4 +28,7 @@ public interface GroupChatUserMapper {
public TabGroupChatUser selectByUserIdAndChatId(@Param("groupChatId") Long groupChatId,
@Param("userId") String userId);
public List<TabGroupChatUser> listAllChatUser(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("groupChatId") Long groupChatId);
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
......@@ -232,6 +233,7 @@ public class GroupChatServiceImpl implements GroupChatService {
}
private void initGroupChatDetail(WxEnterpriseQwDTO qwDTO, TabGroupChat chat, boolean syncMember) {
// 控制同时刷新
Long groupChatId = chat.getGroupChatId();
String wxEnterpriseId = chat.getWxEnterpriseId();
String enterpriseId = chat.getEnterpriseId();
......@@ -265,9 +267,12 @@ public class GroupChatServiceImpl implements GroupChatService {
}
List<GroupChatDetailMemberDTO> memberList = detail.getMember_list();
List<TabGroupChatUser> userList = new ArrayList<>();
List<TabGroupChatUser> allUserList = this.groupChatUserMapper.listAllChatUser(wxEnterpriseId, groupChatId);
Map<String, TabGroupChatUser> userMap = allUserList.stream()
.collect(Collectors.toMap(TabGroupChatUser::getUserId, o -> o, ((k1, k2) -> k1)));
for (GroupChatDetailMemberDTO member : memberList) {
String userId = member.getUserid();
TabGroupChatUser user = this.groupChatUserMapper.selectByUserIdAndChatId(groupChatId, userId);
TabGroupChatUser user = userMap.get(userId);
if (null != user) {
logger.info("更新用户");
this.matchGicMember(wxEnterpriseId, enterpriseId, member.getUnionid(), userId, user);
......@@ -296,9 +301,23 @@ public class GroupChatServiceImpl implements GroupChatService {
this.matchGicMember(wxEnterpriseId, enterpriseId, member.getUnionid(), userId, user);
userList.add(user);
}
List<String> nowUserIdList = memberList.stream().map(dto -> dto.getUserid()).collect(Collectors.toList());
for (TabGroupChatUser item : userList) {
this.groupChatUserMapper.insert(item);
}
int addNum = userList.size();
// 删除退群的人
List<Long> deleteIdList = new ArrayList<>();
for (TabGroupChatUser user : allUserList) {
if (!nowUserIdList.contains(user.getUserId())) {
deleteIdList.add(user.getChatUserId());
}
}
if (CollectionUtils.isNotEmpty(deleteIdList)) {
this.groupChatUserMapper.delete(deleteIdList);
}
// 群统计
this.groupChatMapper.updateData();
}
// 初始化群信息-不包括群状态
......
......@@ -102,43 +102,44 @@
</insert>
<!-- =====================删除==================== -->
<update id="deleteByPrimaryKey" parameterType="long">
UPDATE tab_haoban_group_chat_user SET delete_flag = 1 WHERE chat_user_id =
#{chatUserId}
<update id="delete">
UPDATE tab_haoban_group_chat_user SET delete_flag = 1 WHERE chat_user_id
<foreach collection="idList" close=")" open="(" index="index" item="id" separator=",">
#{id}
</foreach>
</update>
<!-- ==================更新 ========== -->
<update id="update"
parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatUser">
<![CDATA[
UPDATE tab_haoban_group_chat_user SET
user_type=#{userType,jdbcType=INTEGER},
join_time=#{joinTime,jdbcType=DATE},
user_name=#{userName,jdbcType=VARCHAR},
nick_name=#{nickName,jdbcType=VARCHAR},
user_id=#{userId,jdbcType=VARCHAR},
unionid=#{unionid,jdbcType=VARCHAR},
member_id=#{memberId,jdbcType=VARCHAR},
invitor_user_id=#{invitorUserId,jdbcType=VARCHAR},
update_time=now(),
group_chat_id=#{groupChatId,jdbcType=BIGINT},
status_flag=#{statusFlag,jdbcType=INTEGER},
user_quit_time=#{userQuitTime,jdbcType=TIMESTAMP},
quit_scene=#{quitScene,jdbcType=INTEGER},
join_scene=#{joinScene,jdbcType=INTEGER},
join_remark=#{joinRemark,jdbcType=VARCHAR},
join_state=#{joinState,jdbcType=VARCHAR}
where chat_user_id = #{chatUserId}
]]>
<![CDATA[
UPDATE tab_haoban_group_chat_user SET
user_type=#{userType,jdbcType=INTEGER},
join_time=#{joinTime,jdbcType=DATE},
user_name=#{userName,jdbcType=VARCHAR},
nick_name=#{nickName,jdbcType=VARCHAR},
user_id=#{userId,jdbcType=VARCHAR},
unionid=#{unionid,jdbcType=VARCHAR},
member_id=#{memberId,jdbcType=VARCHAR},
invitor_user_id=#{invitorUserId,jdbcType=VARCHAR},
update_time=now(),
group_chat_id=#{groupChatId,jdbcType=BIGINT},
status_flag=#{statusFlag,jdbcType=INTEGER},
user_quit_time=#{userQuitTime,jdbcType=TIMESTAMP},
quit_scene=#{quitScene,jdbcType=INTEGER},
join_scene=#{joinScene,jdbcType=INTEGER},
join_remark=#{joinRemark,jdbcType=VARCHAR},
join_state=#{joinState,jdbcType=VARCHAR}
where chat_user_id = #{chatUserId}
]]>
</update>
<!-- ============ 查询============= -->
<select id="selectById" parameterType="long"
resultMap="result-map-tabHaobanGroupChatUser">
<select id="selectById" parameterType="long" resultMap="result-map-tabHaobanGroupChatUser">
SELECT
<include refid="Base_Column_List" />
FROM tab_haoban_group_chat_user WHERE chat_user_id = #{chatUserId}
FROM tab_haoban_group_chat_user WHERE chat_user_id = #{chatUserId} and delete_flag = 0
</select>
<select id="selectByUserIdAndChatId" resultMap="result-map-tabHaobanGroupChatUser">
......@@ -148,9 +149,7 @@
and user_id =#{userId} and delete_flag = 0
</select>
<select id="listAll"
parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatUser"
resultMap="result-map-tabHaobanGroupChatUser">
select * from tab_haoban_group_chat_user
<select id="listAllChatUser" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_user where group_chat_id = #{groupChatId} and wx_enterprise_id = #{wxEnterpriseId} and delete_flag = 0
</select>
</mapper>
\ No newline at end of file
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