Commit 67e74e4f by qwmqiuwenmin

fix

parent 903b5199
...@@ -7,7 +7,9 @@ public enum PreDealTypeEnum { ...@@ -7,7 +7,9 @@ public enum PreDealTypeEnum {
all(-1), all(-1),
group(0), group(0),
store(1), store(1),
clerk(2); clerk(2),
friend_clerk(3),
friend(4);
private int val; private int val;
PreDealTypeEnum(int val) { PreDealTypeEnum(int val) {
......
...@@ -10,7 +10,8 @@ public enum SyncTaskStatusEnum { ...@@ -10,7 +10,8 @@ public enum SyncTaskStatusEnum {
clerk_sync(3), clerk_sync(3),
compute(4), compute(4),
exception_compute(5), exception_compute(5),
exception_close(6); exception_close(6),
friend_sync(7);
private int val; private int val;
......
...@@ -117,6 +117,21 @@ public interface DealSyncOperationApiService { ...@@ -117,6 +117,21 @@ public interface DealSyncOperationApiService {
* @param taskId * @param taskId
*/ */
public void cleanDiffrence(String wxEnterpriseId,String taskId); public void cleanDiffrence(String wxEnterpriseId,String taskId);
/**
* 创建企业微信好友刷新任务
* @param wxEnterpriseId
* @param taskName
* @param staffId
* @param desc
* @return
*/
public String createWxFriendTask(String wxEnterpriseId, String taskName, String staffId, String desc);
/**
* 处理需要处理的导购
* @param taskId
* @param wxEnterpriseId
*/
public void dealWxFriendClerk(String taskId, String wxEnterpriseId);
} }
...@@ -44,5 +44,9 @@ public interface MemberUnionidRelatedApiService { ...@@ -44,5 +44,9 @@ public interface MemberUnionidRelatedApiService {
String addMemberUnionidRelatedNew(MemberUnionidRelatedDTO dto); String addMemberUnionidRelatedNew(MemberUnionidRelatedDTO dto);
void mqFreshWxFrend(String res); void mqFreshWxFrend(String res);
void cleanNoExsitFriend(String wxEnterpriseId,String wxUserId);
List<String> listSelfExterialList(String wxEnterpriseId,String wxUserId);
} }
package com.gic.haoban.manage.service.dao.mapper; package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.service.entity.MemberClerkChatConfig; import com.gic.haoban.manage.service.entity.MemberClerkChatConfig;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import java.util.List;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -33,4 +37,6 @@ public interface TabHaobanMemberClerkChatConfigMapper { ...@@ -33,4 +37,6 @@ public interface TabHaobanMemberClerkChatConfigMapper {
/** /**
*/ */
MemberClerkChatConfig getChatByMemberIdStaffId(@Param("memberId") String memberId, @Param("staffId") String staffId); MemberClerkChatConfig getChatByMemberIdStaffId(@Param("memberId") String memberId, @Param("staffId") String staffId);
List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
} }
\ No newline at end of file
...@@ -6,6 +6,8 @@ import java.util.Set; ...@@ -6,6 +6,8 @@ import java.util.Set;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.service.entity.MemberClerkChatConfig; import com.gic.haoban.manage.service.entity.MemberClerkChatConfig;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
public interface StaffClerkRelationService { public interface StaffClerkRelationService {
...@@ -72,6 +74,12 @@ public interface StaffClerkRelationService { ...@@ -72,6 +74,12 @@ public interface StaffClerkRelationService {
* @return * @return
*/ */
public MemberClerkChatConfig getChatConfig(String staffId,String memberId); public MemberClerkChatConfig getChatConfig(String staffId,String memberId);
/**
* 根据企业查询
* @param wxEnterpriseId
* @return
*/
List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(String wxEnterpriseId);
} }
...@@ -224,4 +224,9 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService ...@@ -224,4 +224,9 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
MemberClerkChatConfig chatConfig = memberClerkChatConfigMapper.getChatByMemberIdStaffId(memberId, staffId); MemberClerkChatConfig chatConfig = memberClerkChatConfigMapper.getChatByMemberIdStaffId(memberId, staffId);
return chatConfig; return chatConfig;
} }
@Override
public List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(String wxEnterpriseId) {
return memberClerkChatConfigMapper.listByWxEnterpriseId(wxEnterpriseId);
}
} }
...@@ -26,6 +26,7 @@ import com.gic.haoban.manage.api.service.WxEnterpriseApiService; ...@@ -26,6 +26,7 @@ import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.service.entity.TabHaobanDepartment; import com.gic.haoban.manage.service.entity.TabHaobanDepartment;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog; import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanStaff; import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask; import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.task.BaseSyncOperation; import com.gic.haoban.manage.service.task.BaseSyncOperation;
...@@ -135,6 +136,12 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -135,6 +136,12 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
} else { } else {
operationMap.get("qywxClerkSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre); operationMap.get("qywxClerkSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
} }
}else if(dataPre.getDataType().equals(PreDealTypeEnum.friend_clerk.getVal())){
logger.info("好友导购处理:{}", params);
}else if(dataPre.getDataType().equals(PreDealTypeEnum.friend.getVal())){
logger.info("好友处理:{}", params);
} else { } else {
logger.info("不是正常数据:{}", params); logger.info("不是正常数据:{}", params);
} }
...@@ -610,4 +617,32 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -610,4 +617,32 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
RedisUtil.delLocalCache("department-list-cache-"+wxEnterpriseId); RedisUtil.delLocalCache("department-list-cache-"+wxEnterpriseId);
} }
@Override
public String createWxFriendTask(String wxEnterpriseId, String taskName, String staffId, String desc) {
return createBaseTask(wxEnterpriseId, taskName, staffId, desc, 2);
}
@Override
public void dealWxFriendClerk(String taskId, String wxEnterpriseId) {
List<TabHaobanStaffClerkRelation> relationList = staffClerkRelationService.listByWxEnterpriseId(wxEnterpriseId);
List<TabHaobanPreDealLog> dealLogList = relationList.stream().map(dto -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(dto.getWxUserId().toString());
dealLog.setpDataId(dto.getStaffId().toString());
dealLog.setDataType(PreDealTypeEnum.friend_clerk.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setDataContent(JSONObject.toJSONString(dto));
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(dealLogList);
HashSet<String> hashSet = new HashSet<>();
hashSet.add("1");
dealDepartmentToMq(taskId, hashSet, SyncTaskStatusEnum.friend_sync);
}
} }
...@@ -743,4 +743,51 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -743,4 +743,51 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String wxEnterpriseId) { String wxEnterpriseId) {
return EntityUtil.changeEntityListByJSON(MemberUnionidRelatedDTO.class, memberUnionidRelatedMapper.getByWxUserIdListAndWxEnterpriseId(userIdList,wxEnterpriseId)); return EntityUtil.changeEntityListByJSON(MemberUnionidRelatedDTO.class, memberUnionidRelatedMapper.getByWxUserIdListAndWxEnterpriseId(userIdList,wxEnterpriseId));
} }
@Override
public void cleanNoExsitFriend(String wxEnterpriseId, String wxUserId) {
log.info("【清除不存在的好友】wxEnterpriseId={},wxUserId={}",wxEnterpriseId,wxUserId);
WxEnterpriseDTO enterprise = wxEnterpriseService.selectById(wxEnterpriseId);
String wxRes = qywxUserApiService.listExternalUserid(enterprise.getCorpid(), config.getWxSuiteid(), wxUserId);
List<MemberUnionidRelatedDTO> list = this.getByWxUserIdAndWxEnterpriseId(wxUserId, wxEnterpriseId);
List<String> externalUserIdList = list.stream().map(external->external.getExternalUserid())
.collect(Collectors.toList());
JSONArray externalArr = JSON.parseArray(wxRes);
for (String externalUserId : externalUserIdList) {
if(!externalArr.contains(externalUserId)){
//删除成员和外部联系人关系
MemberUnionidRelatedDTO dto = new MemberUnionidRelatedDTO();
dto.setExternalUserid(externalUserId);
dto.setWxUserId(wxUserId);
memberUnionRelatedService.delMemberUnionidRelated(dto);
//删除导购和外部联系人关系
externalClerkRelatedService.delByUserIdAndExternalUserId(dto);
}
}
}
@Override
public List<String> listSelfExterialList(String wxEnterpriseId, String wxUserId) {
log.info("【或者自建应用好友】wxEnterpriseId={},wxUserId={}",wxEnterpriseId,wxUserId);
WxEnterpriseDTO enterprise = wxEnterpriseService.selectById(wxEnterpriseId);
List<String> list = new ArrayList<>();
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.CONTACT_CUSTOMER.getVal());
if (null == secretSetting||secretSetting.getCheckFlag()==0) {
log.info("没有配置客户联系secret:{}",wxEnterpriseId);
return list;
}
String res = qywxUserApiService.listSelfExternalUserid(enterprise.getCorpid(), secretSetting.getSecretVal(), wxUserId);
log.info("【刷下好友】res={}",res);
if(StringUtils.isBlank(res)){
return list;
}
JSONArray jsonArr = JSON.parseArray(res);
if(jsonArr.size() == 0) {
return list;
}
for (Object object : jsonArr) {
list.add(object.toString());
}
return list;
}
} }
package com.gic.haoban.manage.service.task;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
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.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
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.SyncTaskService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
@Service
public class FriendClerkSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(FriendClerkSyncOperation.class);
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getDataId();
memberUnionidRelatedApiService.cleanNoExsitFriend(wxEnterpriseId, wxUserId);
List<String> selfUserIdList = memberUnionidRelatedApiService.listSelfExterialList(wxEnterpriseId, wxUserId);
List<TabHaobanPreDealLog> dealLogList = selfUserIdList.stream().map(dto -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(dataPre.getDataId());
dealLog.setpDataId(dto);
dealLog.setDataType(PreDealTypeEnum.friend.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(dataPre.getTaskId());
dealLog.setDataContent(JSONObject.toJSONString(dto));
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(dealLogList);
HashSet<String> hashSet = new HashSet<>();
hashSet.add("1");
dealDepartmentToMq(dataPre.getTaskId(), hashSet, SyncTaskStatusEnum.friend_sync);
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal(), reason);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal(), "成功");
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.friend.getVal());
if (!b) {
return;
}
logger.info("好友同步成功:{}", taskId);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.friend_sync.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());
}
}
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务
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();
}
});
}
}
package com.gic.haoban.manage.service.task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.SyncTaskService;
public class FriendSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(FriendSyncOperation.class);
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private ClerkMainStoreRelatedApiService clerkMainStoreRelatedApiService;
@Autowired
private StaffApiService staffApiService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataId();
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if(staff == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "成员不存在");
return;
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if(mainStore == null){
preDealService.updateStatusByDataId(taskId, externalUserId, PreDealStatusEnum.exception.getVal(), "主门店不存在");
return;
}
memberUnionidRelatedApiService.add(wxEnterpriseId, externalUserId, wxUserId, mainStore.getStoreId());
dealSuccess(taskId, externalUserId, null, wxEnterpriseId);
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal(), reason);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal(), "成功");
}
@Override
public void checkDepartmentTask(String taskId) {
// TODO Auto-generated method stub
}
}
...@@ -136,4 +136,12 @@ ...@@ -136,4 +136,12 @@
where staff_id = #{staffId,jdbcType=VARCHAR} and member_id = #{memberId,jdbcType=VARCHAR} where staff_id = #{staffId,jdbcType=VARCHAR} and member_id = #{memberId,jdbcType=VARCHAR}
and status =1 and status =1
</select> </select>
<select id="getChatByMemberIdStaffId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_haoban_member_clerk_chat_config
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and status =1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.gic.haoban.manage.api.dto.SecretSettingDTO; ...@@ -19,6 +19,7 @@ import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.StaffDTO; import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO; import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.enums.SecretTypeEnum; import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.DepartmentApiService; import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.api.service.StaffApiService; import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService; import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
...@@ -31,6 +32,7 @@ import com.gic.haoban.manage.web.vo.EnterpriseSearchVO; ...@@ -31,6 +32,7 @@ import com.gic.haoban.manage.web.vo.EnterpriseSearchVO;
import com.gic.haoban.manage.web.vo.LoginVO; import com.gic.haoban.manage.web.vo.LoginVO;
import com.gic.haoban.manage.web.vo.SecretSettingVO; import com.gic.haoban.manage.web.vo.SecretSettingVO;
import com.gic.haoban.manage.web.vo.StoreVo; import com.gic.haoban.manage.web.vo.StoreVo;
import com.gic.redis.data.util.RedisUtil;
import com.gic.wechat.api.dto.qywx.UserDTO; import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService; import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.gic.wechat.token.api.dto.QywxCorpInfoDTO; import com.gic.wechat.token.api.dto.QywxCorpInfoDTO;
...@@ -67,6 +69,8 @@ public class WxEnterpriseController extends WebBaseController{ ...@@ -67,6 +69,8 @@ public class WxEnterpriseController extends WebBaseController{
@Autowired @Autowired
private StaffApiService staffApiService; private StaffApiService staffApiService;
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
//授权企业列表 //授权企业列表
...@@ -503,6 +507,20 @@ public class WxEnterpriseController extends WebBaseController{ ...@@ -503,6 +507,20 @@ public class WxEnterpriseController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1,true); return resultResponse(HaoBanErrCode.ERR_1,true);
} }
/**
* 刷新企业微信好友
* @param enterpriseId
* @return
*/
@RequestMapping("/fresh-wx-friend")
public HaobanResponse freshWxFriend(Integer enterpriseId){
LoginVO login = (LoginVO) AuthRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String taskId = dealSyncOperationApiService.createWxFriendTask(wxEnterpriseId, "刷新企微好友", login.getStaffDTO().getStaffId(), "刷新企微好友");
dealSyncOperationApiService.dealWxFriendClerk(taskId, wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1);
}
} }
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