Commit 5913e2cd by 徐高华

Merge branch 'feature/xgh/bug/0415' into 'master'

Feature/xgh/bug/0415

See merge request !1697
parents 8621f41f 768f3570
......@@ -18,7 +18,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
int updateByPrimaryKeySelective(TabHaobanExternalClerkRelated record);
TabHaobanExternalClerkRelated selectByClerkIdAndExternalUserId(@Param("clerkId") String clerkId,
int selectByClerkIdAndExternalUserId(@Param("clerkId") String clerkId,
@Param("externalUserId") String externalUserId);
int delByUserIdAndExternalUserId(@Param("externalUserId") String externalUserId , @Param("staffId") String staffId);
......
......@@ -89,15 +89,24 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
public void insert(TabHaobanExternalClerkRelated related) {
String clerkId = related.getClerkId();
String externalUserId = related.getExternalUserId();
TabHaobanExternalClerkRelated tab = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId);
if (tab == null) {
String lockKey = "addExternalUser:"+externalUserId+clerkId ;
int num1 = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId);
if(num1 > 0) {
return ;
}
RedisUtil.lock(lockKey,2L);
int num2 = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId);
logger.info("好友数={},{},{}",num1,num2,externalUserId);
if (num2 == 0) {
String uuId = StringUtil.randomUUID();
Date now = new Date() ;
related.setStatusFlag(related.getStatusFlag() != null ? related.getStatusFlag() : 1);
related.setExternalClerkRelatedId(uuId);
related.setCreateTime(new Date());
related.setUpdateTime(new Date());
related.setCreateTime(now);
related.setUpdateTime(now);
mapper.insertSelective(related);
}
RedisUtil.unlock(lockKey);
}
@Override
......
......@@ -630,6 +630,17 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
if(null != hmId) {
this.hmQrcodeApiService.updateAddNumById(hmId, hyClerkId);
}
// 并发控制
String cacheKey = "qwAddLog"+externalUserId+staffId ;
if(null != RedisUtil.getCache(cacheKey)) {
return;
}
String lockKey = cacheKey+"lock" ;
RedisUtil.lock(lockKey,2L);
if(null != RedisUtil.getCache(cacheKey)) {
return;
}
RedisUtil.setCache(cacheKey,1,5L);
//设置会员标签
this.setMemberTag(enterpriseId, memberLabelId, memberId);
//加好友增加数量
......@@ -648,6 +659,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
wxUserAddLogQDTO.setClerkId(hyClerkId);
wxUserAddLogQDTO.setAddWay(dto.getAddWay());
this.wxUserAddLogService.save(wxUserAddLogQDTO);
RedisUtil.unlock(lockKey);
if(StringUtils.isNotBlank(memberId)) {
this.groupChatService.matchGicMember(wxEnterpriseId, enterpriseId, memberId, externalUserId);
}
......
......@@ -226,9 +226,9 @@
where external_clerk_related_id = #{externalClerkRelatedId,jdbcType=VARCHAR}
</update>
<select id="selectByClerkIdAndExternalUserId" resultMap="BaseResultMap" parameterType="java.lang.String">
<select id="selectByClerkIdAndExternalUserId" resultType="int" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
count(*)
from tab_haoban_external_clerk_related
where clerk_id = #{clerkId,jdbcType=VARCHAR}
and external_user_id = #{externalUserId}
......
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