Commit 581193ec by 徐高华

好办表并发控制

parent 8621f41f
...@@ -18,7 +18,7 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -18,7 +18,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
int updateByPrimaryKeySelective(TabHaobanExternalClerkRelated record); int updateByPrimaryKeySelective(TabHaobanExternalClerkRelated record);
TabHaobanExternalClerkRelated selectByClerkIdAndExternalUserId(@Param("clerkId") String clerkId, int selectByClerkIdAndExternalUserId(@Param("clerkId") String clerkId,
@Param("externalUserId") String externalUserId); @Param("externalUserId") String externalUserId);
int delByUserIdAndExternalUserId(@Param("externalUserId") String externalUserId , @Param("staffId") String staffId); int delByUserIdAndExternalUserId(@Param("externalUserId") String externalUserId , @Param("staffId") String staffId);
......
...@@ -89,15 +89,24 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -89,15 +89,24 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
public void insert(TabHaobanExternalClerkRelated related) { public void insert(TabHaobanExternalClerkRelated related) {
String clerkId = related.getClerkId(); String clerkId = related.getClerkId();
String externalUserId = related.getExternalUserId(); String externalUserId = related.getExternalUserId();
TabHaobanExternalClerkRelated tab = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId); String lockKey = "addExternalUser:"+externalUserId ;
if (tab == null) { int num1 = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId);
if(num1 > 0) {
return ;
}
RedisUtil.lock(lockKey,1L);
int num2 = mapper.selectByClerkIdAndExternalUserId(clerkId, externalUserId);
logger.info("好友数={},{},{}",num1,num2,externalUserId);
if (num2 == 0) {
String uuId = StringUtil.randomUUID(); String uuId = StringUtil.randomUUID();
Date now = new Date() ;
related.setStatusFlag(related.getStatusFlag() != null ? related.getStatusFlag() : 1); related.setStatusFlag(related.getStatusFlag() != null ? related.getStatusFlag() : 1);
related.setExternalClerkRelatedId(uuId); related.setExternalClerkRelatedId(uuId);
related.setCreateTime(new Date()); related.setCreateTime(now);
related.setUpdateTime(new Date()); related.setUpdateTime(now);
mapper.insertSelective(related); mapper.insertSelective(related);
} }
RedisUtil.unlock(lockKey);
} }
@Override @Override
......
...@@ -226,9 +226,9 @@ ...@@ -226,9 +226,9 @@
where external_clerk_related_id = #{externalClerkRelatedId,jdbcType=VARCHAR} where external_clerk_related_id = #{externalClerkRelatedId,jdbcType=VARCHAR}
</update> </update>
<select id="selectByClerkIdAndExternalUserId" resultMap="BaseResultMap" parameterType="java.lang.String"> <select id="selectByClerkIdAndExternalUserId" resultType="int" parameterType="java.lang.String">
select select
<include refid="Base_Column_List"/> count(*)
from tab_haoban_external_clerk_related from tab_haoban_external_clerk_related
where clerk_id = #{clerkId,jdbcType=VARCHAR} where clerk_id = #{clerkId,jdbcType=VARCHAR}
and external_user_id = #{externalUserId} 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