Commit 8c543db7 by xugaojun

Merge remote-tracking branch 'origin/feature-02-22' into feature-02-22

parents 2c9d0e6b e2a23cb0
......@@ -22,7 +22,11 @@ public class MemberUnionidWechatAccountQDTO implements Serializable {
*/
private String openId;
/**
* 参数
* 会员id
*/
private String memberId;
/**
* 参数(带参数的公众号二维码必填)
*/
private String sceneStr;
......@@ -57,4 +61,12 @@ public class MemberUnionidWechatAccountQDTO implements Serializable {
public void setSceneStr(String sceneStr) {
this.sceneStr = sceneStr;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
}
......@@ -79,6 +79,19 @@ public interface ExternalClerkRelatedApiService {
ServiceResponse<ExternalClerkRelatedDTO> bindMemberIdExternalByRelationKey(String relationKey, String enterpriseId, String memberId, String unionid);
/**
* 绑定好友-关注公共号
*
* @param externalClerkRelatedId
* @param enterpriseId
* @param memberId
* @param unionid
* @return {@link ExternalClerkRelatedDTO }
* @author mozhu
* @date 2022-02-09 16:57:19
*/
void bindMemberIdExternalById(String externalClerkRelatedId, String enterpriseId, String memberId, String unionid);
/**
* 查询clerk与union好友关系
*
* @param enterpriseId
......
......@@ -226,6 +226,6 @@ public interface MemberUnionidRelatedApiService {
* @author mozhu
* @date 2022-01-22 17:06:24
*/
ServiceResponse<Boolean> addMemberUnionidWechatAccountByClerk(MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO);
ServiceResponse addMemberUnionidWechatAccountByClerk(MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO);
}
......@@ -27,8 +27,6 @@ public interface StaffDepartmentRelatedMapper {
void deleteCode(TabHaobanStaffDepartmentRelated dto);
List<TabHaobanStaffDepartmentRelated> listStaffDepartmentByStaffId(String staffId);
Page<TabHaobanStaffDepartmentRelated> pageStaff(String departmentId, Integer activeFlag, String keyword);
TabHaobanStaffDepartmentRelated getById(String staffDepartmentRelatedId);
......
......@@ -36,6 +36,20 @@ public interface TabHaobanExternalClerkRelatedMapper {
List<TabHaobanExternalClerkRelated> listByExTernalUseridAndWxUserId(@Param("externalUserid") String externalUserid, @Param("userId") String wxUserId);
/**
* 查询该会员该企业下的好友关系
*
* @param externalUserid 外部用户标识
* @param wxEnterpriseId wx企业标识
* @param statusFlags 状态标志
* @return {@link List<TabHaobanExternalClerkRelated> }
* @author mozhu
* @date 2022-02-10 10:11:21
*/
List<TabHaobanExternalClerkRelated> listByExTernalUseridAndWxEnterpriseId(@Param("externalUserid") String externalUserid,
@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("statusFlags") List<String> statusFlags);
List<TabHaobanExternalClerkRelated> listByExTernalUseridAndWxUserIdAllStatus(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserid") String externalUserid, @Param("userId") String wxUserId);
List<TabHaobanExternalClerkRelated> listByEnterpriseIdAndDate(@Param("enterpriseId") String enterpriseId, @Param("date") Date date);
......@@ -191,7 +205,8 @@ public interface TabHaobanExternalClerkRelatedMapper {
* @param wxEnterpriseId
* @return
*/
List<TabHaobanExternalClerkRelated> listByExternalUserId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserId") String externalUserId);
List<TabHaobanExternalClerkRelated> listByExternalUserId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("externalUserId") String externalUserId);
/**
* 根据会员id更新新老会员id
......@@ -267,4 +282,14 @@ public interface TabHaobanExternalClerkRelatedMapper {
@Param("enterpriseId") String enterpriseId,
@Param("wxUserId") String wxUserId,
@Param("clerkId") String clerkId);
/**
* 客户好友需触达列表
* @param enterpriseId
* @param externalUserId
* @return
*/
List<TabHaobanExternalClerkRelated> listByEnterpriseIdAndExternalUserId(@Param("enterpriseId") String enterpriseId,
@Param("externalUserId") String externalUserId);
}
\ No newline at end of file
......@@ -66,5 +66,4 @@ public interface ExternalClerkRelatedService {
* @return
*/
String checkAndUpdateMemberByUnonId(String enterpriseId, String memberId, String unionId);
}
......@@ -162,6 +162,29 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
resp.setMessage("relationKey对应的企业与所传会员企业不对应");
return resp;
}
updateExternalClerkRelated(enterpriseId, memberId, unionid, externalClerkRelated);
resp.setResult(EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, externalClerkRelated));
return resp;
}
@Override
public void bindMemberIdExternalById(String externalClerkRelatedId, String enterpriseId, String memberId, String unionid) {
TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.selectByPrimaryKey(externalClerkRelatedId);
if (externalClerkRelated == null) {
log.error("查询好办与gic数据为空,externalClerkRelatedId:{},enterpriseId:{},memberId:{},unionid:{}",externalClerkRelatedId,enterpriseId,memberId,unionid);
return;
}
updateExternalClerkRelated(enterpriseId, memberId, unionid, externalClerkRelated);
}
/**
* 更新好友关系
* @param enterpriseId
* @param memberId
* @param unionid
* @param externalClerkRelated
*/
private void updateExternalClerkRelated(String enterpriseId, String memberId, String unionid, TabHaobanExternalClerkRelated externalClerkRelated) {
externalClerkRelated.setMemberId(memberId);
externalClerkRelated.setUnionid(unionid);
externalClerkRelated.setUpdateTime(new Date());
......@@ -175,10 +198,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
memberUnionidRelated.setEnterpriseId(enterpriseId);
memberUnionidRelated.setUpdateTime(new Date());
memberUnionidRelatedMapper.updateByPrimaryKeySelective(memberUnionidRelated);
resp.setResult(EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, externalClerkRelated));
//同步标签
pushTagSync(memberId, externalClerkRelated.getWxEnterpriseId(), enterpriseId);
return resp;
}
/**
......@@ -201,8 +222,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
try {
clientInstance.sendMessage("qywxTagSyncDeal", JSONObject.toJSONString(pojo));
} catch (Exception e) {
e.printStackTrace();
log.info("异常:{}", e);
log.info("异常:{}", e.getMessage(),e);
}
}
......
......@@ -31,10 +31,12 @@ import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.service.CheckQywxSettingApiService;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
import com.gic.haoban.manage.api.service.MaterialApiService;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.MemberUnionidRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMapper;
import com.gic.haoban.manage.service.dao.mapper.WxApplicationMapper;
import com.gic.haoban.manage.service.entity.*;
......@@ -98,7 +100,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private ClerkService clerkService;
@Autowired
private MemberUnionidRelatedMapper memberUnionidRelatedMapper;
@Autowired
private ClerkMainStoreRelatedService clerkMainStoreRelatedService;
@Autowired
......@@ -109,10 +110,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private MaterialApiService materialApiService;
@Autowired
private SecretSettingService secretSettingService;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
......@@ -121,13 +120,10 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private PowerService powerService;
@Autowired
private MiniprogramSettingService miniprogramSettingService;
@Autowired
private TabHaobanWelcomeMapper welcomeMapper;
@Autowired
private CheckQywxSettingApiService checkQywxSettingApiService;
@Autowired
private CustomerApiService customerApiService;
@Autowired
......@@ -138,6 +134,10 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private WeixinBaseFunService weixinBaseFunService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private TabHaobanExternalClerkRelatedMapper externalClerkRelatedMapper;
@Autowired
private ExternalClerkRelatedApiService externalClerkRelatedApiService;
@Override
public void dealQywxExternalUser(String params) {
......@@ -958,7 +958,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private void delMemberUnionidRelatedProcess(MemberUnionidRelatedDTO dto) {
externalClerkRelatedService.delByUserIdAndExternalUserId(dto);
memberUnionRelatedService.delMemberUnionidRelated(dto);
}
/**
......@@ -1719,10 +1718,15 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
@Override
public void addMemberUnionidWechatAccount(String res) {
log.info("通过查询unionid关联导购对外联系人id接口,res:{}", res);
JSONObject jsonObject = JSON.parseObject(res);
String unionid = jsonObject.getString("unionid");
String openid = jsonObject.getString("openid");
String enterpriseId = jsonObject.getString("enterpriseId");
MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO = JSON.parseObject(res,MemberUnionidWechatAccountQDTO.class);
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
String memberId = memberUnionidWechatAccountQDTO.getMemberId();
if (StringUtils.isAnyBlank(enterpriseId,unionid,openId,memberId)) {
log.error("关注公共号-会员回调好办关联好友 有参数为空:enterpriseId:{},unionid:{},openId:{},memberId:{}",enterpriseId,unionid,openId,memberId);
return;
}
List<TabHaobanWxEnterprise> tabHaobanWxEnterprises = wxEnterpriseRelatedService.listByEnterpriseId(enterpriseId);
if (CollectionUtils.isEmpty(tabHaobanWxEnterprises)) {
log.error("企业为空");
......@@ -1730,11 +1734,10 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
RRateLimiter rateLimiter = RedisUtil.getRedisClient().getRateLimiter("member:weChat:add:limit");
// 每1小时产生10000个令牌
// 每1小时产生9500个令牌
rateLimiter.trySetRate(RateType.OVERALL, 9500, 1, RateIntervalUnit.HOURS);
for (TabHaobanWxEnterprise tabHaobanWxEnterpris : tabHaobanWxEnterprises) {
if (!rateLimiter.tryAcquire(1)) {
if (!rateLimiter.tryAcquire()) {
log.error("请求unionidToExternalUserid3rd超过限制,丢入消息队列,重新消费");
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
......@@ -1744,22 +1747,45 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
return;
}
List<UnionidToExternalUseridDTO> unionidToExternalUseridDTOS = qywxUserApiService.unionidToExternalUserid3rd(unionid, openid, tabHaobanWxEnterpris.getCorpid(), config.getWxSuiteid());
List<UnionidToExternalUseridDTO> unionidToExternalUseridDTOS = qywxUserApiService.unionidToExternalUserid3rd(unionid, openId, tabHaobanWxEnterpris.getCorpid(), config.getWxSuiteid());
if (CollectionUtils.isEmpty(unionidToExternalUseridDTOS)) {
log.error("请求unionidToExternalUserid3rd返回为空");
return;
}
for (UnionidToExternalUseridDTO unionidToExternalUseridDTO : unionidToExternalUseridDTOS) {
unionidToExternalUseridDTO.getExternalUserid();
List<TabHaobanExternalClerkRelated> tabHaobanExternalClerkRelateds = externalClerkRelatedMapper.listByEnterpriseIdAndExternalUserId(enterpriseId, unionidToExternalUseridDTO.getExternalUserid());
if (CollectionUtils.isEmpty(tabHaobanExternalClerkRelateds)) {
break;
}
for (TabHaobanExternalClerkRelated tabHaobanExternalClerkRelated : tabHaobanExternalClerkRelateds) {
externalClerkRelatedApiService.bindMemberIdExternalById(tabHaobanExternalClerkRelated.getExternalClerkRelatedId(),enterpriseId,memberId,unionid);
}
}
}
}
@Override
public ServiceResponse<Boolean> addMemberUnionidWechatAccountByClerk(MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO) {
public ServiceResponse addMemberUnionidWechatAccountByClerk(MemberUnionidWechatAccountQDTO memberUnionidWechatAccountQDTO) {
log.info("关注公共号-会员回调好办关联好友请求参数:{}",JSON.toJSONString(memberUnionidWechatAccountQDTO));
String enterpriseId = memberUnionidWechatAccountQDTO.getEnterpriseId();
String unionid = memberUnionidWechatAccountQDTO.getUnionid();
String openId = memberUnionidWechatAccountQDTO.getOpenId();
String memberId = memberUnionidWechatAccountQDTO.getMemberId();
String sceneStr = memberUnionidWechatAccountQDTO.getSceneStr();
ServiceResponse serviceResponse = new ServiceResponse();
if (StringUtils.isAnyBlank(enterpriseId,unionid,openId,memberId,sceneStr)) {
log.error("关注公共号-会员回调好办关联好友,有参数为空:enterpriseId:{},unionid:{},openId:{},memberId:{},sceneStr:{}",enterpriseId,unionid,openId,memberId,sceneStr);
serviceResponse.setCode(0);
serviceResponse.setMessage("参数为空");
return serviceResponse;
}
String[] s = sceneStr.split("_");
String relationKey = s[1];
TabHaobanExternalClerkRelated externalClerkRelated = externalClerkRelatedMapper.getByRelationKey(relationKey);
externalClerkRelatedApiService.bindMemberIdExternalById(externalClerkRelated.getExternalClerkRelatedId(),enterpriseId,memberId,unionid);
return serviceResponse;
}
return null;
}
}
......@@ -21,17 +21,20 @@
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
external_clerk_related_id, wx_enterprise_id, enterprise_id, store_id, member_id,
unionid, head_url,external_name, add_create_time, member_unionid_related_id, clerk_id, staff_id,
wx_user_id,relation_key, status_flag, create_time, update_time,external_user_id
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related
where external_clerk_related_id = #{externalClerkRelatedId,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete
from tab_haoban_external_clerk_related
......@@ -320,6 +323,20 @@
and status_flag = 1
</select>
<select id="listByExTernalUseridAndWxEnterpriseId" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related
where external_user_id = #{externalUserid} and wx_enterprise_id = #{wxEnterpriseId}
<if test="statusFlags != null">
and status_flag IN
<foreach collection="statusFlags" item="id" index="index" open="(" close=")" separator=",">
#{id,jdbcType=VARCHAR}
</foreach>
</if>
</select>
<select id="listByExTernalUseridAndWxUserIdAllStatus" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
......@@ -603,4 +620,15 @@
and clerk_id = #{clerkId}
AND status_flag = 1
</select>
<select id="listByEnterpriseIdAndExternalUserId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related
where enterprise_id = #{enterpriseId}
and status_flag = 4
and external_user_id = #{externalUserId}
</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