Commit 3ef55f37 by fudahua

企业微信标签同步fix

parent 8394deee
...@@ -11,7 +11,9 @@ public enum PreDealTypeEnum { ...@@ -11,7 +11,9 @@ public enum PreDealTypeEnum {
friend_clerk(6), friend_clerk(6),
friend(8), friend(8),
self_friend(7), self_friend(7),
friend_merge(9); friend_merge(9),
tag(10),
tag_member(11);
private int val; private int val;
PreDealTypeEnum(int val) { PreDealTypeEnum(int val) {
......
...@@ -14,7 +14,9 @@ public enum SyncTaskStatusEnum { ...@@ -14,7 +14,9 @@ public enum SyncTaskStatusEnum {
friend_clerk_sync(7), friend_clerk_sync(7),
self_friend_sync(8), self_friend_sync(8),
friend_sync(9), friend_sync(9),
merge_friend_sync(10); merge_friend_sync(10),
tag(10),
member_tag(10);
private int val; private int val;
......
...@@ -6,7 +6,8 @@ package com.gic.haoban.manage.api.enums; ...@@ -6,7 +6,8 @@ package com.gic.haoban.manage.api.enums;
public enum SyncTaskTypeEnum { public enum SyncTaskTypeEnum {
QYWX_CONTACT(1, "后门同步企业微信架构"), QYWX_CONTACT(1, "后门同步企业微信架构"),
FRIEND_SINGLE(4, "单个成员刷新好友"), FRIEND_SINGLE(4, "单个成员刷新好友"),
FRIEND_STORE(5, "刷新门店好友"),; FRIEND_STORE(5, "刷新门店好友"),
MEMBER_TAG(6, "企业微信标签刷新");
private int type; private int type;
private String taskName; private String taskName;
......
...@@ -162,6 +162,7 @@ public interface DealSyncOperationApiService { ...@@ -162,6 +162,7 @@ public interface DealSyncOperationApiService {
* 定时 * 定时
* @param res * @param res
*/ */
@Deprecated
public void quartWxFriendClerk(String res); public void quartWxFriendClerk(String res);
void test(String wxEnterpriseId, String taskId); void test(String wxEnterpriseId, String taskId);
...@@ -174,4 +175,22 @@ public interface DealSyncOperationApiService { ...@@ -174,4 +175,22 @@ public interface DealSyncOperationApiService {
* @return true 刷新中 false 没刷新或刷新完成 * @return true 刷新中 false 没刷新或刷新完成
*/ */
public boolean getFreshFriendSyncTask(String wxEnterpriseId, String staffId); public boolean getFreshFriendSyncTask(String wxEnterpriseId, String staffId);
/**
* 创建标签任务
*
* @param wxEnterpriseId
* @return
*/
public String createTagTask(String wxEnterpriseId, String addUser, String memberTagId);
/**
* 执行任务
*
* @param wxEnterpriseId
* @param enterpriseId
* @param tagIds
* @param taskId
*/
public void dealTagTask(String wxEnterpriseId, String enterpriseId, List<String> tagIds, String taskId);
} }
...@@ -97,6 +97,14 @@ public interface ExternalClerkRelatedApiService { ...@@ -97,6 +97,14 @@ public interface ExternalClerkRelatedApiService {
*/ */
List<ExternalClerkRelatedDTO> listByIds(String wxEnterpriseId, List<String> ids); List<ExternalClerkRelatedDTO> listByIds(String wxEnterpriseId, List<String> ids);
/**
* 查询导购好友关联
*
* @param wxEnterpriseId : 微信企业id
* @return : 返回好友关联
*/
Page<String> pageExternalByEnterpriseId(String wxEnterpriseId, String enterpriseId, BasePageInfo pageInfo);
} }
...@@ -65,4 +65,13 @@ public interface QywxTagApiService { ...@@ -65,4 +65,13 @@ public interface QywxTagApiService {
*/ */
public void editQywxTag(QywxTagCallbackDTO callbackDTO); public void editQywxTag(QywxTagCallbackDTO callbackDTO);
/**
* 同步好友标签到企业微信
*
* @param wxEnterpriseId
* @param enterpriseId
* @param externalUserId
*/
public void syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, String tagItemId);
} }
...@@ -141,4 +141,11 @@ public interface WxEnterpriseRelatedApiService { ...@@ -141,4 +141,11 @@ public interface WxEnterpriseRelatedApiService {
*/ */
public boolean setClerkEditFlag(String wxEnterprieseRelatedId, int clerkEditFlag); public boolean setClerkEditFlag(String wxEnterprieseRelatedId, int clerkEditFlag);
/**
* 判断企业是否是总部 true是 false 不是
*
* @return
*/
public boolean checkIsGeneral(String wxEnterpriseId, String enterpriseId);
} }
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
<dependency> <dependency>
<groupId>com.gic</groupId> <groupId>com.gic</groupId>
<artifactId>gic-member-api</artifactId> <artifactId>gic-member-api</artifactId>
<version>3.0-SNAPSHOT</version> <version>${gic-member-api}</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
...@@ -181,6 +181,12 @@ ...@@ -181,6 +181,12 @@
<artifactId>sql-check-sdk</artifactId> <artifactId>sql-check-sdk</artifactId>
<version>${sql-check-sdk}</version> <version>${sql-check-sdk}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-member-tag-api</artifactId>
<version>${gic-member-tag-api}</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -148,4 +148,13 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -148,4 +148,13 @@ public interface TabHaobanExternalClerkRelatedMapper {
*/ */
List<TabHaobanExternalClerkRelated> listByIds(@Param("wxEnterpriseId") String wxEnterpriseId, List<TabHaobanExternalClerkRelated> listByIds(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("ids") List<String> ids); @Param("ids") List<String> ids);
/**
* 根据企业id 查询列表
*
* @param wxEnterpriseId
* @return
*/
List<String> listMemberIdByEnterpriseId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("enterpriseId") String enterpriseId);
} }
\ No newline at end of file
package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.QywxTagInfoDTO;
import com.gic.haoban.manage.api.dto.QywxTagItemDTO;
import com.gic.haoban.manage.service.entity.TabQywxSyncLog;
import com.gic.haoban.manage.service.entity.TabQywxTag;
import com.gic.haoban.manage.service.entity.TabQywxTagItem;
import com.gic.haoban.manage.service.entity.TabQywxTagRelation;
import com.gic.member.tag.api.base.BasePageInfo;
import com.gic.wechat.api.dto.qywx.QywxTagGroupDTO;
import org.apache.commons.lang3.tuple.Pair;
import java.util.List;
/**
* Created 2021/6/21.
*
* @author hua
*/
public interface QywxTagSyncLogService {
/**
* 分页查询日志
*
* @param wxEnterpriseId
* @param enterpriseId
* @param search
* @param pageInfo
* @return
*/
public Page<TabQywxSyncLog> pageLog(String wxEnterpriseId, String enterpriseId, String search, BasePageInfo pageInfo);
/**
* 保存日志
*
* @param tabQywxSyncLog
* @return
*/
public boolean saveSyncLog(TabQywxSyncLog tabQywxSyncLog);
}
package com.gic.haoban.manage.service.service.impl;
import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.service.entity.TabQywxSyncLog;
import com.gic.haoban.manage.service.service.QywxTagSyncLogService;
import com.gic.member.tag.api.base.BasePageInfo;
import org.springframework.stereotype.Service;
/**
* Created 2021/6/23.
*
* @author hua
*/
@Service
public class QywxTagSyncLogServiceImpl implements QywxTagSyncLogService {
@Override
public Page<TabQywxSyncLog> pageLog(String wxEnterpriseId, String enterpriseId, String search, BasePageInfo pageInfo) {
return null;
}
@Override
public boolean saveSyncLog(TabQywxSyncLog tabQywxSyncLog) {
return false;
}
}
...@@ -110,6 +110,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -110,6 +110,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
private static final String FRIEND_LOCK = "haoban_fresh_wx_friend_lock_"; private static final String FRIEND_LOCK = "haoban_fresh_wx_friend_lock_";
private static final String FRIEND_TAG_LOCK = "haoban_sync_tag_lock_";
@Override @Override
public void departmentDealMq(String params) { public void departmentDealMq(String params) {
logger.info("mq处理中:{}", params); logger.info("mq处理中:{}", params);
...@@ -157,6 +159,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -157,6 +159,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
operationMap.get("friendMergeSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre); operationMap.get("friendMergeSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
logger.info("好友合并处理:{}", params); logger.info("好友合并处理:{}", params);
} else if (dataPre.getDataType().equals(PreDealTypeEnum.tag.getVal())) {
operationMap.get("friendTagSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
logger.info("会员标签处理:{}", params);
} else if (dataPre.getDataType().equals(PreDealTypeEnum.tag_member.getVal())) {
operationMap.get("friendMemberTagSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
logger.info("会员标签处理标签项:{}", params);
} else { } else {
logger.info("不是正常数据:{}", params); logger.info("不是正常数据:{}", params);
} }
...@@ -386,21 +395,6 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -386,21 +395,6 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) { private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务 //预处理分组任务
syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal()); syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal());
//
// dealList.forEach(relationId -> {
// DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
// dealParamMqDTO.setTaskId(taskId);
// dealParamMqDTO.setData(relationId);
// dealParamMqDTO.setType(syncTaskStatusEnum.getVal());
// GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
// try {
// clientInstance.sendMessage("departmentSyncDealMq", JSONObject.toJSONString(dealParamMqDTO));
// } catch (Exception e) {
// logger.info("发送失败:{},{}", taskId, relationId);
// e.printStackTrace();
// }
// });
List<String> listRet = dealList.stream().map(relationId -> { List<String> listRet = dealList.stream().map(relationId -> {
DealParamMqDTO dealParamMqDTO = new DealParamMqDTO(); DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
dealParamMqDTO.setTaskId(taskId); dealParamMqDTO.setTaskId(taskId);
...@@ -879,4 +873,51 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -879,4 +873,51 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
} }
return true; return true;
} }
@Override
public String createTagTask(String wxEnterpriseId, String addUser, String memberTagId) {
String lockKey = FRIEND_TAG_LOCK + "_lock_" + memberTagId;
String staffLockKey = FRIEND_TAG_LOCK + memberTagId;
RedisUtil.lock(lockKey, 2L);
Object cache = RedisUtil.getCache(staffLockKey);
if (null != cache) {
RedisUtil.unlock(lockKey);
return null;
}
TabHaobanSyncTask tabHaobanSyncTask = new TabHaobanSyncTask();
tabHaobanSyncTask.setAddUser(addUser);
tabHaobanSyncTask.setTaskName(SyncTaskTypeEnum.MEMBER_TAG.getTaskName());
tabHaobanSyncTask.setTaskDesc(memberTagId);
tabHaobanSyncTask.setWxEnterpriseId(wxEnterpriseId);
tabHaobanSyncTask.setStatusFlag(SyncTaskStatusEnum.init.getVal());
tabHaobanSyncTask.setTaskId(ToolUtil.randomUUID());
tabHaobanSyncTask.setTaskType(SyncTaskTypeEnum.MEMBER_TAG.getType());
syncTaskService.createTask(tabHaobanSyncTask);
RedisUtil.setCache(staffLockKey, tabHaobanSyncTask.getTaskId(), 1L, TimeUnit.HOURS);
RedisUtil.unlock(lockKey);
return tabHaobanSyncTask.getTaskId();
}
@Override
public void dealTagTask(String wxEnterpriseId, String enterpriseId, List<String> tagIds, String taskId) {
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
if (CollectionUtils.isEmpty(tagIds)) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
return;
}
List<TabHaobanPreDealLog> dealLogList = tagIds.stream().map(tagId -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(tagId);
dealLog.setpDataId(syncTask.getTaskDesc());
dealLog.setDataType(PreDealTypeEnum.friend_clerk.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(dealLogList);
Set<String> hashSet = dealLogList.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, hashSet, SyncTaskStatusEnum.tag);
}
} }
...@@ -153,4 +153,11 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -153,4 +153,11 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
List<TabHaobanExternalClerkRelated> list = tabHaobanExternalClerkRelatedMapper.listByIds(wxEnterpriseId, ids); List<TabHaobanExternalClerkRelated> list = tabHaobanExternalClerkRelatedMapper.listByIds(wxEnterpriseId, ids);
return EntityUtil.changeEntityListNew(ExternalClerkRelatedDTO.class, list); return EntityUtil.changeEntityListNew(ExternalClerkRelatedDTO.class, list);
} }
@Override
public Page<String> pageExternalByEnterpriseId(String wxEnterpriseId, String enterpriseId, BasePageInfo pageInfo) {
PageHelper.startPage(pageInfo);
List<String> memberIDs = tabHaobanExternalClerkRelatedMapper.listMemberIdByEnterpriseId(wxEnterpriseId, enterpriseId);
return PageUtil.changePageHelperToCurrentPage(new PageInfo<>(memberIDs));
}
} }
...@@ -5,6 +5,7 @@ import com.gic.commons.util.ToolUtil; ...@@ -5,6 +5,7 @@ import com.gic.commons.util.ToolUtil;
import com.gic.haoban.common.utils.EntityUtil; import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.dto.*; import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.QywxTagRelationTypeEnum; import com.gic.haoban.manage.api.enums.QywxTagRelationTypeEnum;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.QywxTagApiService; import com.gic.haoban.manage.api.service.QywxTagApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise; import com.gic.haoban.manage.service.entity.TabHaobanWxEnterprise;
...@@ -54,6 +55,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -54,6 +55,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
@Autowired @Autowired
private QywxTagService qywxTagService; private QywxTagService qywxTagService;
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
@Override @Override
public void pullQywxTag(String wxEnterpriseId) { public void pullQywxTag(String wxEnterpriseId) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId); WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
...@@ -97,8 +101,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -97,8 +101,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
//保存关联关系 //保存关联关系
saveRelation(wxEnterpriseId, enterpriseId, infoDTO, items, savePair); saveRelation(wxEnterpriseId, enterpriseId, infoDTO, items, savePair);
//todo 后续处理 比如同步会员标签等 操作标签项的会员同步过来 String taskId = dealSyncOperationApiService.createTagTask(wxEnterpriseId, "-1", infoDTO.getMemberTagId());
if (null == taskId) {
logger.info("标签不能重复执行");
throw new RuntimeException("标签不能重复执行:" + infoDTO.getQywxGroupName());
}
List<String> tagItemIds = items.stream().map(dto -> dto.getQywxTagItemId()).collect(Collectors.toList());
dealSyncOperationApiService.dealTagTask(wxEnterpriseId, enterpriseId, tagItemIds, taskId);
} }
/** /**
...@@ -421,4 +430,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -421,4 +430,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
} }
} }
@Override
public void syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, String tagItemId) {
}
} }
...@@ -638,4 +638,13 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi ...@@ -638,4 +638,13 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
wxEnterpriseRelatedService.setClerkEdit(wxEnterprieseRelatedId, clerkEditFlag); wxEnterpriseRelatedService.setClerkEdit(wxEnterprieseRelatedId, clerkEditFlag);
return true; return true;
} }
@Override
public boolean checkIsGeneral(String wxEnterpriseId, String enterpriseId) {
TabHaobanWxEnterpriseRelated enterpriseRelated = wxEnterpriseRelatedService.getByEnterpriseId(wxEnterpriseId, enterpriseId);
if (null == enterpriseRelated) {
return false;
}
return enterpriseRelated.getWxEnterpriseType() == 0;
}
} }
package com.gic.haoban.manage.service.task.tag;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.app.customer.dto.SearchComputeDTO;
import com.gic.haoban.app.customer.dto.SearchDataDTO;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.service.*;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.haoban.manage.service.service.WxEnterpriseRelatedService;
import com.gic.haoban.manage.service.task.BaseSyncOperation;
import com.gic.haoban.manage.service.util.EmojiFilterUtil;
import com.gic.member.api.service.MemberTagService;
import com.gic.member.tag.api.service.MemberTagApiService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import com.gic.search.engine.api.constant.MemberDataEnum;
import com.gic.search.engine.api.constant.OperateEnum;
import com.gic.search.engine.api.dto.ESResponseQueryBatch;
import com.gic.search.engine.api.dto.ESResponseQueryCount;
import com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO;
import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created 2021/6/23.
*
* @author hua
*/
@Service
public class FriendMemberTagSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(FriendMemberTagSyncOperation.class);
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private ClerkMainStoreRelatedApiService clerkMainStoreRelatedApiService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private ClerkService clerkService;
@Autowired
private ExternalClerkRelatedApiService externalClerkRelatedApiService;
@Autowired
private WxEnterpriseRelatedService wxEnterpriseRelatedService;
@Autowired
private MemberTagService memberTagService;
@Autowired
private MemberTagApiService memberTagApiService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private QywxTagApiService qywxTagApiService;
@Autowired
private ESDataDynamicOperationApiService esDataDynamicOperationApiService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("处理会员标签同步初始化:{}", JSONObject.toJSONString(dealParamMqDTO));
boolean resultFlag = true;
String reason = "";
String memberId = dataPre.getDataId();
String tagId = dataPre.getpDataId();
String enterpriseId = dataPre.getEnterpriseId();
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String taskId = dataPre.getTaskId();
try {
List<ExternalClerkRelatedDTO> dtoList = externalClerkRelatedApiService.listByMemberIdAndWxEnterpriseId(memberId, wxEnterpriseId, enterpriseId);
if (CollectionUtils.isEmpty(dtoList)) {
logger.info("没有好友关系:{},{}", memberId, taskId);
reason = "会员非好友";
return;
}
List<String> items = new ArrayList<>();
items.add(tagId);
Set<String> memberIds = listMemberIds(wxEnterpriseId, enterpriseId, items);
logger.info("memberIds");
} catch (Exception e) {
resultFlag = false;
reason = "处理异常:";
e.printStackTrace();
logger.info("处理异常:{}", e);
} finally {
if (!resultFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), reason);
} else {
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), reason, dataPre.getWxEnterpriseId());
}
}
}
private Set<String> listMemberIds(String wxEnterpriseId, String enterpriseId, List<String> memberTagIds) {
Set<String> ret = new HashSet<>();
int pageSize = 5000;
BasePageInfo pageInfo = new BasePageInfo();
pageInfo.setPageSize(pageSize);
Page<String> page = externalClerkRelatedApiService.pageExternalByEnterpriseId(wxEnterpriseId, enterpriseId, pageInfo);
Set<String> midMemberIDs = this.listMemberIds(wxEnterpriseId, enterpriseId, memberTagIds, page.getResult());
ret.addAll(midMemberIDs);
while (page.getCurrentPageSize() == pageSize) {
pageInfo.setPageNum(page.getCurrentPage() + 1);
page = externalClerkRelatedApiService.pageExternalByEnterpriseId(wxEnterpriseId, enterpriseId, pageInfo);
midMemberIDs = this.listMemberIds(wxEnterpriseId, enterpriseId, memberTagIds, page.getResult());
ret.addAll(midMemberIDs);
}
return ret;
}
private Set<String> listMemberIds(String wxEnterpriseId, String enterpriseId, List<String> itemIds, List<String> memberIds) {
String searchParams = StringUtils.join(itemIds, " ");
List<SearchComputeDTO> andList = new ArrayList<>();
SearchDataDTO tagSearchDto = new SearchDataDTO(MemberDataEnum.member_tag.getCode(), OperateEnum.OPERATE_CONTAIN.getValue(), searchParams);
SearchDataDTO memberIdDto = new SearchDataDTO(MemberDataEnum.member_id.getCode(), OperateEnum.OPERATE_CONTAIN.getValue(), searchParams);
SearchComputeDTO memberTagCompute = new SearchComputeDTO("data", null, tagSearchDto);
SearchComputeDTO memberIdCompute = new SearchComputeDTO("data", null, memberIdDto);
andList.add(memberIdCompute);
andList.add(memberTagCompute);
SearchComputeDTO searchComputeDTO = new SearchComputeDTO(OperateEnum.OPERATE_AND.getValue(), andList, null);
DynamicSearchDTO searchDTO = new DynamicSearchDTO();
searchDTO.setEnterpriseId(enterpriseId);
searchDTO.setColumnCategoryCode("member");
searchDTO.setReturnFileds(MemberDataEnum.member_id.getCode());
searchDTO.setSearchJson(searchComputeDTO.toJSONObject());
logger.info("searchJson:" + searchDTO.getSearchJson());
ESResponseQueryBatch queryDataBatch = esDataDynamicOperationApiService.queryDataBatch(searchDTO, false, null);
List<JSONObject> res = queryDataBatch.getRes();
if (CollectionUtils.isEmpty(res)) {
return new HashSet<>();
}
return res.stream().map(mid -> mid.getString(MemberDataEnum.member_id.getCode())).collect(Collectors.toSet());
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
logger.info("标签同步异常:{},{}", taskId, dataId);
preDealService.updateStatusByDataId(taskId, dataId, PreDealTypeEnum.group.getVal(), PreDealStatusEnum.exception.getVal(), reason);
checkDepartmentTask(taskId);
}
@Override
public void dealSuccess(String taskId, String dataId, String reason, String wxEnterpriseId) {
boolean b = preDealService.updateStatusByDataId(taskId, dataId, PreDealTypeEnum.tag.getVal(), PreDealStatusEnum.computed.getVal(), reason);
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
checkDepartmentTask(taskId);
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.tag.getVal());
if (!b) {
return;
}
logger.info("开始同步完成:{}", taskId);
String key = "haoban_sync_tag_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入会员标签同步
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.member_tag.getVal())) {
int errCount = preDealService.countByTaskId(taskId, -1, PreDealStatusEnum.exception.getVal());
if (errCount > 0) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.exception_compute.getVal());
} else {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
}
}
RedisUtil.unlock(key);
}
}
...@@ -521,4 +521,13 @@ ...@@ -521,4 +521,13 @@
#{item} #{item}
</foreach> </foreach>
</select> </select>
<select id="listMemberIdByEnterpriseId" resultType="String">
select
member_id
from tab_haoban_external_clerk_related
where wx_enterprise_id = #{wxEnterpriseId}
and enterprise_id=#{enterpriseId}
and status_flag in(1,3,4)
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -10,6 +10,7 @@ import com.gic.clerk.api.service.ClerkService; ...@@ -10,6 +10,7 @@ import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil; import com.gic.commons.util.DateUtil;
import com.gic.commons.util.ExcelUtils; import com.gic.commons.util.ExcelUtils;
import com.gic.enterprise.api.dto.*; import com.gic.enterprise.api.dto.*;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.*; import com.gic.enterprise.api.service.*;
import com.gic.enterprise.api.service.EnterpriseService; import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.BasePageInfo; import com.gic.haoban.base.api.common.BasePageInfo;
...@@ -337,10 +338,18 @@ public class StaffController extends WebBaseController{ ...@@ -337,10 +338,18 @@ public class StaffController extends WebBaseController{
public boolean isEnterpriseOver(String eid) { public boolean isEnterpriseOver(String eid) {
com.gic.enterprise.api.dto.EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(eid); com.gic.enterprise.api.dto.EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(eid);
if(enterprise == null || enterprise.getExpireTime() == null){ if (enterprise == null) {
return true;
}
if (enterprise.getExpireTime() == null) {
if (enterprise.getEnabledState() == null) {
return false;
} else if (enterprise.getEnabledState() == 1) {
return false; return false;
} else {
return true;
} }
if(enterprise.getExpireTime().getTime() > System.currentTimeMillis()){ } else if (enterprise.getExpireTime().getTime() > System.currentTimeMillis() && enterprise.getEnabledState() == 1) {
return false; return false;
} }
return true; return true;
......
...@@ -329,10 +329,16 @@ public class StoreController extends WebBaseController{ ...@@ -329,10 +329,16 @@ public class StoreController extends WebBaseController{
return true; return true;
} }
EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(store.getEnterpriseId()); EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(store.getEnterpriseId());
if(enterprise == null || enterprise.getExpireTime() == null || enterprise.getEnabledState() == null){ if (enterprise == null || enterprise.getStatus() != 1) {
return true;
}
if (enterprise.getExpireTime() == null) {
if (enterprise.getEnabledState() == null) {
return false;
} else if (enterprise.getEnabledState() == 1) {
return false; return false;
} }
if(enterprise.getExpireTime().getTime() > System.currentTimeMillis() && enterprise.getEnabledState() == 1){ } else if (enterprise.getExpireTime().getTime() > System.currentTimeMillis() && enterprise.getEnabledState() == 1) {
return false; return false;
} }
return true; return true;
......
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