Commit f665f24c by fudahua

好友

parent ce5a9bfc
...@@ -58,4 +58,13 @@ public interface MemberUnionidRelatedApiService { ...@@ -58,4 +58,13 @@ public interface MemberUnionidRelatedApiService {
ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId); ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId);
/**
* 清理外部联系人
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserIds
*/
void cleanNoExsitFriendNew(String wxEnterpriseId, String wxUserId, List<String> externalUserIds);
} }
...@@ -24,12 +24,14 @@ public interface MemberUnionidRelatedMapper { ...@@ -24,12 +24,14 @@ public interface MemberUnionidRelatedMapper {
int cleanByCid(@Param("cid") String cid); int cleanByCid(@Param("cid") String cid);
MemberUnionidRelated getByUnionId(@Param("wxUserId")String wxUserId, @Param("unionid")String unionid); MemberUnionidRelated getByUnionId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("wxUserId") String wxUserId, @Param("unionid") String unionid);
MemberUnionidRelated getByMemberId(@Param("wxUserId")String wxUserId, @Param("memberId")String memberId); MemberUnionidRelated getByMemberId(@Param("wxUserId")String wxUserId, @Param("memberId")String memberId);
void deleteByUnionidAndUserId(@Param("externalUserid")String externalUserid,@Param("wxUserId") String wxUserId); void deleteByUnionidAndUserId(@Param("externalUserid")String externalUserid,@Param("wxUserId") String wxUserId);
void delMemberUnionidRelatedBatch(String wxEnterpriseId, @Param("externalUserids") List<String> externalUserid, @Param("wxUserId") String wxUserId);
List<MemberUnionidRelated> getByWxUserIdAndWxEnterpriseId(@Param("wxUserId")String wxUserId, @Param("wxEnterpriseId")String wxEnterpriseId); List<MemberUnionidRelated> getByWxUserIdAndWxEnterpriseId(@Param("wxUserId")String wxUserId, @Param("wxEnterpriseId")String wxEnterpriseId);
List<MemberUnionidRelated> listByEnterpriseIdAndDate(@Param("enterpriseId")String enterpriseId,@Param("date")Date date); List<MemberUnionidRelated> listByEnterpriseIdAndDate(@Param("enterpriseId")String enterpriseId,@Param("date")Date date);
......
...@@ -181,7 +181,20 @@ public interface PreDealLogMapper { ...@@ -181,7 +181,20 @@ public interface PreDealLogMapper {
* @return * @return
*/ */
int updateFriendStatusByDataId(@Param("taskId")String taskId, @Param("dataId")String dataId, @Param("status")int status, @Param("reason")String reason, @Param("dataContent")String dataContent); int updateFriendStatusByDataId(@Param("taskId")String taskId, @Param("dataId")String dataId, @Param("status")int status, @Param("reason")String reason, @Param("dataContent")String dataContent);
/**
/**
* 更新状态
*
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
* @return
*/
int updateFriendStatusAndRelationKeyByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId, @Param("status") int status, @Param("reason") String reason, @Param("dataContent") String dataContent, @Param("relationKey") String relationKey);
/**
* *
* @param taskId * @param taskId
* @param pDataId * @param pDataId
...@@ -196,6 +209,34 @@ public interface PreDealLogMapper { ...@@ -196,6 +209,34 @@ public interface PreDealLogMapper {
*/ */
List<TabHaobanPreDealLog> listByPDataIdAndTaskId(@Param("taskId")String taskId, @Param("pDataId")String wxUserId); List<TabHaobanPreDealLog> listByPDataIdAndTaskId(@Param("taskId")String taskId, @Param("pDataId")String wxUserId);
/**
* 根据关联键获取字段
*
* @param taskId
* @param relationKey
* @return
*/
TabHaobanPreDealLog getByRelationKey(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("relationKey") String relationKey);
/**
* 校验任务
*
* @param taskId
* @param dataType
* @return
*/
public int checkTaskFriend(@Param("taskId") String taskId, @Param("pDataId") String pDataId, @Param("dataType") int dataType);
/**
* 获取dataid 根据父id
*
* @param taskId
* @param pDataId
* @return
*/
List<String> listReDataIdByPDataId(@Param("taskId") String taskId, @Param("dataId") String pDataId
, @Param("dataType") int dataType);
} }
\ No newline at end of file
...@@ -25,6 +25,8 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -25,6 +25,8 @@ public interface TabHaobanExternalClerkRelatedMapper {
void delByUserIdAndExternalUserId(TabHaobanExternalClerkRelated record); void delByUserIdAndExternalUserId(TabHaobanExternalClerkRelated record);
void delByUserIdAndExternalUserIdBatch(@Param("wxUserId") String wxUserId, @Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserIds") List<String> externalUserIds);
void delByClerkIdAndStaffId(@Param("clerkId")String clerkId, @Param("staffId")String staffId); void delByClerkIdAndStaffId(@Param("clerkId")String clerkId, @Param("staffId")String staffId);
void cleanStaffRelated(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("staffIds")List<String> staffIds); void cleanStaffRelated(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("staffIds")List<String> staffIds);
......
...@@ -61,8 +61,18 @@ public class TabHaobanPreDealLog implements Serializable { ...@@ -61,8 +61,18 @@ public class TabHaobanPreDealLog implements Serializable {
private String dataContent; private String dataContent;
private String relationKey;
private String reason; private String reason;
public String getRelationKey() {
return relationKey;
}
public void setRelationKey(String relationKey) {
this.relationKey = relationKey;
}
public String getReason() { public String getReason() {
return reason; return reason;
} }
......
package com.gic.haoban.manage.service.pojo;
import java.io.Serializable;
/**
* Created 2021/3/18.
*
* @author hua
*/
public class ExternalUserIdWxUserIdPojo implements Serializable {
private String externalUserId;
private String wxUserId;
public ExternalUserIdWxUserIdPojo(String externalUserId, String wxUserId) {
this.externalUserId = externalUserId;
this.wxUserId = wxUserId;
}
public String getExternalUserId() {
return externalUserId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
}
...@@ -12,6 +12,15 @@ public interface ExternalClerkRelatedService { ...@@ -12,6 +12,15 @@ public interface ExternalClerkRelatedService {
void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto); void delByUserIdAndExternalUserId(MemberUnionidRelatedDTO dto);
/**
* 删除会员与导购的关联关系
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserids
*/
void delByUserIdAndExternalUserIdBatch(String wxEnterpriseId, String wxUserId, List<String> externalUserids);
void delByClerkIdAndStaffId(String clerkId, String staffId); void delByClerkIdAndStaffId(String clerkId, String staffId);
void cleanStaffRelated(String wxEnterpriseId, List<String> staffIds); void cleanStaffRelated(String wxEnterpriseId, List<String> staffIds);
......
...@@ -7,7 +7,7 @@ import com.gic.haoban.manage.service.entity.MemberUnionidRelated; ...@@ -7,7 +7,7 @@ import com.gic.haoban.manage.service.entity.MemberUnionidRelated;
public interface MemberUnionRelatedService { public interface MemberUnionRelatedService {
MemberUnionidRelatedDTO getByUnionId(String wxUserId, String unionid); MemberUnionidRelatedDTO getByUnionId(String wxEnterpriseId, String wxUserId, String unionid);
MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId); MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId);
...@@ -15,6 +15,15 @@ public interface MemberUnionRelatedService { ...@@ -15,6 +15,15 @@ public interface MemberUnionRelatedService {
void delMemberUnionidRelated(MemberUnionidRelatedDTO dto); void delMemberUnionidRelated(MemberUnionidRelatedDTO dto);
/**
* 删除外部联系人关系
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserids
*/
void delMemberUnionidRelatedBatch(String wxEnterpriseId, String wxUserId, List<String> externalUserids);
List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId); List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId);
MemberUnionidRelatedDTO getByParams(String wxUserId, String enterpriseId, String name, String createTime); MemberUnionidRelatedDTO getByParams(String wxUserId, String enterpriseId, String name, String createTime);
......
...@@ -168,7 +168,19 @@ public interface PreDealService { ...@@ -168,7 +168,19 @@ public interface PreDealService {
* @param dataContent * @param dataContent
*/ */
public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent); public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent);
/**
/**
* 更新好友成功状态
*
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
*/
public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent, String relationKey);
/**
* 根据父任务判断子任务是否全部完成 * 根据父任务判断子任务是否全部完成
* @param taskId * @param taskId
* @param pDataId * @param pDataId
...@@ -182,5 +194,40 @@ public interface PreDealService { ...@@ -182,5 +194,40 @@ public interface PreDealService {
* @return * @return
*/ */
public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId); public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId);
/**
* 根据唯一key 获取用户
*
* @param taskId
* @param dataType
* @param relationKey
* @return
*/
public TabHaobanPreDealLog getByRelationKey(String taskId, Integer dataType, String relationKey);
/**
* 获取任务是否有在同步中 好友
*
* @param dataType
* @return
*/
public boolean checkFriendTask(String taskId, int dataType);
/**
* 获取任务是否有在同步中 好友
*
* @param dataType
* @return
*/
public boolean checkFriendTaskByPDataId(String taskId, String pDataId, int dataType);
/**
* 根据父数据id 所有dataid
*
* @param pDataId
* @return
*/
public List<String> listReDataIdByPDataId(String taskId, String pDataId, Integer dataType);
} }
...@@ -44,6 +44,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -44,6 +44,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
} }
@Override @Override
public void delByUserIdAndExternalUserIdBatch(String wxEnterpriseId, String wxUserId, List<String> externalUserids) {
}
@Override
public void delByClerkIdAndStaffId(String clerkId, String staffId) { public void delByClerkIdAndStaffId(String clerkId, String staffId) {
mapper.delByClerkIdAndStaffId(clerkId,staffId); mapper.delByClerkIdAndStaffId(clerkId,staffId);
} }
......
...@@ -22,8 +22,8 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService ...@@ -22,8 +22,8 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
private MemberUnionidRelatedMapper mapper; private MemberUnionidRelatedMapper mapper;
@Override @Override
public MemberUnionidRelatedDTO getByUnionId(String wxUserId, String unionid) { public MemberUnionidRelatedDTO getByUnionId(String wxEnterpriseId, String wxUserId, String unionid) {
return EntityUtil.changeEntityByJSON(MemberUnionidRelatedDTO.class,mapper.getByUnionId(wxUserId,unionid)); return EntityUtil.changeEntityByJSON(MemberUnionidRelatedDTO.class, mapper.getByUnionId(wxEnterpriseId, wxUserId, unionid));
} }
@Override @Override
public MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId) { public MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId) {
...@@ -45,6 +45,11 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService ...@@ -45,6 +45,11 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
} }
@Override @Override
public void delMemberUnionidRelatedBatch(String wxEnterpriseId, String wxUserId, List<String> externalUserids) {
mapper.delMemberUnionidRelatedBatch(wxEnterpriseId, externalUserids, wxUserId);
}
@Override
public List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId) { public List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId) {
return EntityUtil.changeEntityListByJSON(MemberUnionidRelatedDTO.class, mapper.getByWxUserIdAndWxEnterpriseId(wxUserId,wxEnterpriseId)); return EntityUtil.changeEntityListByJSON(MemberUnionidRelatedDTO.class, mapper.getByWxUserIdAndWxEnterpriseId(wxUserId,wxEnterpriseId));
} }
......
...@@ -173,8 +173,13 @@ public class PreDealServiceImpl implements PreDealService { ...@@ -173,8 +173,13 @@ public class PreDealServiceImpl implements PreDealService {
} }
@Override @Override
public boolean checkStaffTaskByTaskIdAndPDataId(String taskId, String pDataId) { public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent, String relationKey) {
return false;
}
@Override
public boolean checkStaffTaskByTaskIdAndPDataId(String taskId, String pDataId) {
return preDealLogMapper.countFailStaffTaskByTaskIdAndPDataId(taskId,pDataId) == 0; return preDealLogMapper.countFailStaffTaskByTaskIdAndPDataId(taskId,pDataId) == 0;
} }
...@@ -182,4 +187,26 @@ public class PreDealServiceImpl implements PreDealService { ...@@ -182,4 +187,26 @@ public class PreDealServiceImpl implements PreDealService {
public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId) { public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId) {
return preDealLogMapper.listByPDataIdAndTaskId(taskId,wxUserId); return preDealLogMapper.listByPDataIdAndTaskId(taskId,wxUserId);
} }
@Override
public TabHaobanPreDealLog getByRelationKey(String taskId, Integer dataType, String relationKey) {
return preDealLogMapper.getByRelationKey(taskId, dataType, relationKey);
}
@Override
public boolean checkFriendTask(String taskId, int dataType) {
int i = preDealLogMapper.checkTaskFriend(taskId, null, dataType);
return i == 0;
}
@Override
public boolean checkFriendTaskByPDataId(String taskId, String pDataId, int dataType) {
int i = preDealLogMapper.checkTaskFriend(taskId, pDataId, dataType);
return i == 0;
}
@Override
public List<String> listReDataIdByPDataId(String taskId, String pDataId, Integer dataType) {
return preDealLogMapper.listReDataIdByPDataId(taskId, pDataId, dataType);
}
} }
...@@ -16,13 +16,11 @@ import com.gic.wechat.api.service.qywx.QywxSuiteApiService; ...@@ -16,13 +16,11 @@ import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService; import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -235,7 +233,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -235,7 +233,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return null; return null;
} }
log.info("【查询会员】wxUserId={},unionid={}",staff.getWxUserId(),unionid); log.info("【查询会员】wxUserId={},unionid={}",staff.getWxUserId(),unionid);
return memberUnionRelatedService.getByUnionId(staff.getWxUserId(),unionid); return memberUnionRelatedService.getByUnionId(staff.getWxEnterpriseId(), staff.getWxUserId(), unionid);
} }
@Override @Override
public String addMemberUnionidRelated(MemberUnionidRelatedDTO dto) { public String addMemberUnionidRelated(MemberUnionidRelatedDTO dto) {
...@@ -926,7 +924,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -926,7 +924,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
+ "",wxUserId,wxEnterpriseId,name,createTime,unionId,externalUserId,memberId,storeId,enterpriseId,staffId,clerkId); + "",wxUserId,wxEnterpriseId,name,createTime,unionId,externalUserId,memberId,storeId,enterpriseId,staffId,clerkId);
return "参数不对"; return "参数不对";
} }
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByParams(wxUserId, wxEnterpriseId,name,createTime); MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByUnionId(wxEnterpriseId, wxUserId, unionId);
String uuid = ""; String uuid = "";
if(exsitDTO == null){ if(exsitDTO == null){
exsitDTO = new MemberUnionidRelatedDTO(); exsitDTO = new MemberUnionidRelatedDTO();
...@@ -947,9 +945,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -947,9 +945,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
exsitDTO.setUnionid(unionId); exsitDTO.setUnionid(unionId);
memberUnionRelatedService.update(exsitDTO); memberUnionRelatedService.update(exsitDTO);
} }
TabHaobanExternalClerkRelated external = externalClerkRelatedService.getByParams(wxUserId, wxEnterpriseId,name,createTime); List<TabHaobanExternalClerkRelated> clerkRelateds = externalClerkRelatedService.listByExTernalUseridAndWxUserId(externalUserId, wxUserId);
if(external == null){ if (CollectionUtils.isEmpty(clerkRelateds)) {
TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated(); TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated();
related.setAddCreateTime(createTime); related.setAddCreateTime(createTime);
related.setClerkId(clerkId); related.setClerkId(clerkId);
...@@ -966,6 +964,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -966,6 +964,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
externalClerkRelatedService.insert(related); externalClerkRelatedService.insert(related);
}else{ }else{
TabHaobanExternalClerkRelated external = clerkRelateds.get(0);
external.setMemberId(memberId); external.setMemberId(memberId);
external.setMemberUnionidRelatedId(uuid); external.setMemberUnionidRelatedId(uuid);
external.setExternalUserId(externalUserId); external.setExternalUserId(externalUserId);
...@@ -977,4 +976,29 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -977,4 +976,29 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
} }
return ""; return "";
} }
@Override
public void cleanNoExsitFriendNew(String wxEnterpriseId, String wxUserId, List<String> externalUserIds) {
log.info("【清除不存在的好友】wxEnterpriseId={},wxUserId={}", wxEnterpriseId, wxUserId);
//查询所有的外部联系人
List<MemberUnionidRelatedDTO> list = memberUnionRelatedService.getByWxUserIdAndWxEnterpriseId(wxUserId, wxEnterpriseId);
if (CollectionUtils.isEmpty(list)) {
log.info("改导购下没有外部联系人,无需清理外部联系人:{},{}", wxUserId, wxEnterpriseId);
return;
}
Set<String> externalUserIdList = list.stream().map(external -> external.getExternalUserid())
.collect(Collectors.toSet());
Sets.SetView<String> delExternalUserIds = Sets.difference(new HashSet<>(externalUserIds), externalUserIdList);
if (CollectionUtils.isEmpty(delExternalUserIds)) {
log.info("没有需要删除逇外部联系人:{},{}", wxUserId, wxEnterpriseId);
return;
}
//删除成员与union的关联关系
memberUnionRelatedService.delMemberUnionidRelatedBatch(wxEnterpriseId, wxUserId, new ArrayList<>(delExternalUserIds));
//删除导购和外部联系人关系
externalClerkRelatedService.delByUserIdAndExternalUserIdBatch(wxEnterpriseId, wxUserId, new ArrayList<>(delExternalUserIds));
}
} }
package com.gic.haoban.manage.service.task.friend;
import com.alibaba.fastjson.JSON;
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.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.haoban.manage.service.task.BaseSyncOperation;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class FriendClerkSyncNewOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(FriendClerkSyncNewOperation.class);
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("dealParamMqDTO={},dataPre={}", JSON.toJSONString(dealParamMqDTO), JSON.toJSONString(dataPre));
String reason = "";
boolean dealFlag = true;
String taskId = dealParamMqDTO.getTaskId();
try {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getDataId();
//获取所有外部联系人的外部联系人ids
List<String> selfUserIdList = memberUnionidRelatedApiService.listSelfExterialList(wxEnterpriseId, wxUserId);
logger.info("selfUserIdList={}", selfUserIdList.size());
if (CollectionUtils.isEmpty(selfUserIdList)) {
logger.info("改用户没有外部联系人:{}", JSONObject.toJSONString(dataPre));
dealFlag = false;
reason = "该用户没有外部联系人";
return;
}
//第三方服务商的外部联系人
List<String> userIdList = memberUnionidRelatedApiService.listExterialList(wxEnterpriseId, wxUserId);
if (CollectionUtils.isEmpty(userIdList)) {
logger.info("改用户没有外部联系人2:{}", JSONObject.toJSONString(dataPre));
dealFlag = false;
reason = "该用户没有外部联系人";
return;
}
//清理外部联系人
memberUnionidRelatedApiService.cleanNoExsitFriendNew(wxEnterpriseId, wxUserId, userIdList);
//写入外部联系人的处理队列
List<TabHaobanPreDealLog> dealLogList = selfUserIdList.stream().map(externalUserId -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(externalUserId + "-" + dataPre.getDataId());
dealLog.setpDataId(dataPre.getDataId());
dealLog.setDataType(PreDealTypeEnum.self_friend.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(dataPre.getTaskId());
dealLog.setDataContent(externalUserId);
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(dealLogList);
//写入外部联系人的处理队列
List<TabHaobanPreDealLog> thirddealLogList = userIdList.stream().map(externalUserId -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(externalUserId + "-" + dataPre.getDataId());
dealLog.setpDataId(dataPre.getDataId());
dealLog.setDataType(PreDealTypeEnum.friend.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(dataPre.getTaskId());
dealLog.setDataContent(externalUserId);
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(thirddealLogList);
//成功更新状态
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), dataPre.getWxEnterpriseId());
} catch (Exception e) {
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre), e);
reason = "成员好友处理异常";
dealFlag = false;
} finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), reason);
}
}
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal(), reason);
checkDepartmentTask(taskId);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.dealing.getVal(), "预处理中");
List<String> dataIds = preDealService.listReDataIdByPDataId(taskId, dataId, PreDealTypeEnum.self_friend.getVal());
dealDepartmentToMq(taskId, new HashSet<>(dataIds), SyncTaskStatusEnum.self_friend_sync);
checkDepartmentTask(taskId);
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkFriendTask(taskId, PreDealTypeEnum.friend_clerk.getVal());
if (!b) {
return;
}
logger.info("好友同步成功:{}", taskId);
String key = "haoban_sync_friend_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
if (syncTask.getStatusFlag() == SyncTaskStatusEnum.compute.getVal()
|| syncTask.getStatusFlag() == SyncTaskStatusEnum.exception_compute.getVal()) {
logger.info("已经处理成功");
return;
}
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);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务
syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal());
List<String> ret = dealList.stream().map(relationId -> {
DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
dealParamMqDTO.setData(relationId);
dealParamMqDTO.setTaskId(taskId);
dealParamMqDTO.setType(syncTaskStatusEnum.getVal());
return JSONObject.toJSONString(dealParamMqDTO);
}).collect(Collectors.toList());
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
clientInstance.sendBatchMessages("departmentSyncDealMq", ret);
} catch (Exception e) {
logger.info("发送失败:{},{}", taskId);
e.printStackTrace();
}
}
}
package com.gic.haoban.manage.service.task.friend;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.clerk.api.service.PowerService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.*;
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.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.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.haoban.manage.service.task.BaseSyncOperation;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
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.util.*;
import java.util.stream.Collectors;
@Service
public class FriendSyncNewOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(FriendSyncNewOperation.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 PowerService powerService;
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService;
@Autowired
private FriendClerkSyncNewOperation friendClerkSyncNewOperation;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "";
boolean dealFlag = true;
try {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataContent();
ExternalUserDTO externalUserDTO = memberUnionidRelatedApiService.getExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if (externalUserDTO == null) {
dealFlag = false;
reason = "好友不存在";
return;
}
//relationkey
String relationKey = SecureUtil.md5(wxUserId + "_" + externalUserDTO.getName() + "_" + externalUserDTO.getAddCreateTime());
logger.info("relationKey:{},{}", relationKey, externalUserDTO.getExternalUserId());
// 根据关联键relationkey查看自建应用 是否有数据
TabHaobanPreDealLog selfPre = preDealService.getByRelationKey(taskId, PreDealTypeEnum.self_friend.getVal(), relationKey);
if (null == selfPre) {
logger.info("用户的自建应用不存在该数据:{},{}", JSONObject.toJSONString(dataPre), JSONObject.toJSONString(externalUserDTO));
dealFlag = false;
reason = "用户的自建应用不存在该数据:" + relationKey;
return;
}
ExternalUserDTO selfUserData = JSON.parseObject(selfPre.getDataContent(), ExternalUserDTO.class);
externalUserDTO.setUnionId(selfUserData.getUnionId());
//序列化数据
String ret = dealMerge(externalUserDTO, dataPre);
if (StringUtils.isBlank(ret)) {
logger.info("好友创建失败:{},{}", ret, JSONObject.toJSONString(externalUserDTO));
dealFlag = false;
reason = ret + ":" + relationKey;
}
//更新状态
preDealService.updateFriendStatusByDataId(taskId, dataPre.getDataId(), PreDealStatusEnum.computed.getVal(), reason, externalUserDTO.getMemberId(), relationKey);
dealSuccess(taskId, dataPre.getDataId(), null, wxEnterpriseId);
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre), e);
reason = "第三方好友处理异常";
dealFlag = false;
} finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dataPre.getDataId(), dataPre.getpDataId(), reason);
}
}
}
private String dealMerge(ExternalUserDTO externalUserDTO, TabHaobanPreDealLog dataPre) {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getpDataId();
String taskId = dataPre.getTaskId();
//staff信息
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if (staff == null) {
return "成员不存在";
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if (mainStore == null) {
return "主门店不存在";
}
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staff.getStaffId(), mainStore.getStoreId());
if (staffClerkRelationDTO == null) {
return "未绑定导购";
}
externalUserDTO.setWxEnterpriseId(wxEnterpriseId);
externalUserDTO.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
externalUserDTO.setStoreId(mainStore.getStoreId());
externalUserDTO.setClerkId(staffClerkRelationDTO.getClerkId());
externalUserDTO.setWxUserId(wxUserId);
externalUserDTO.setStaffId(staffClerkRelationDTO.getStaffId());
String clerkCode = staffClerkRelationDTO.getClerkCode();
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
if (clerk == null) {
return "导购不存在:" + clerkCode;
}
String qrcodeParam = clerk.getQrcodeParam();
if (StringUtils.isBlank(qrcodeParam)) {
powerService.saveClerkQrCode(clerk.getClerkId());
clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
qrcodeParam = clerk.getQrcodeParam();
}
if (StringUtils.isBlank(qrcodeParam)) {
return "导购码不存在:" + clerkCode;
}
MemberDTO member = null;
if (clerk != null && StringUtils.isNotBlank(qrcodeParam) && StringUtils.isNotBlank(externalUserDTO.getUnionId())) {
member = memberOpenCardBusinessService.getMemberByQywxChannelParam(staffClerkRelationDTO.getEnterpriseId(),
externalUserDTO.getUnionId(), "", externalUserDTO.getName(), externalUserDTO.getAvatar(), qrcodeParam);
}
if (member == null) {
return "会员不存在:" + externalUserDTO.getUnionId();
}
externalUserDTO.setMemberId(member.getMemberId());
return memberUnionidRelatedApiService.addExternal(externalUserDTO);
}
@Override
public void dealException(String taskId, String dataId, String pDataId, String reason) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal(), reason);
checkDepartmentTask(taskId, pDataId);
}
@Override
public void dealSuccess(String taskId, String dataId, String pDataId, String wxEnterpriseId) {
//校验成功是否都
checkDepartmentTask(taskId, pDataId);
}
/**
* 自定义处理流程
*
* @param taskId
* @param pDataId
*/
public void checkDepartmentTask(String taskId, String pDataId) {
//校验是否都已经处理完成
boolean b = preDealService.checkFriendTaskByPDataId(taskId, pDataId, PreDealTypeEnum.friend.getVal());
if (!b) {
return;
}
logger.info("同步第三方服务商好友:{},{}", taskId, pDataId);
String key = "haoban_sync_third_friend_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanPreDealLog preDealLog = preDealService.getByDataId(taskId, pDataId, PreDealTypeEnum.friend_clerk.getVal(), PreDealStatusEnum.dealing.getVal());
if (preDealLog != null) {
preDealService.updateStatusByDataId(taskId, pDataId, PreDealTypeEnum.friend_clerk.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
this.checkDepartmentTask(taskId);
}
RedisUtil.unlock(key);
}
@Override
public void checkDepartmentTask(String taskId) {
friendClerkSyncNewOperation.checkDepartmentTask(taskId);
}
}
package com.gic.haoban.manage.service.task.friend;
import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
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.dto.ExternalUserDTO;
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.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.haoban.manage.service.task.BaseSyncOperation;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@Service
public class SelfFriendSyncNewOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(SelfFriendSyncNewOperation.class);
@Autowired
private PreDealService preDealService;
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private FriendClerkSyncNewOperation friendClerkSyncNewOperation;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "成功";
boolean dealFlag = true;
try {
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataContent();
ExternalUserDTO pojo = memberUnionidRelatedApiService.getCorpSelfExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if (pojo == null) {
logger.info("外部联系人好友不存在:{}", JSONObject.toJSONString(dataPre));
dealException(taskId, dataPre.getDataId(), null, "好友不存在");
return;
}
//自有应用信息
JSONObject json = new JSONObject();
json.put("name", pojo.getName());
json.put("unionId", pojo.getUnionId());
json.put("addCreateTime", pojo.getAddCreateTime());
//relationkey
String relationKey = SecureUtil.md5(wxUserId + "_" + pojo.getName() + "_" + pojo.getAddCreateTime());
//更新状态
preDealService.updateFriendStatusByDataId(taskId, dataPre.getDataId(), PreDealStatusEnum.computed.getVal(), reason, json.toJSONString(), relationKey);
dealSuccess(taskId, dataPre.getDataId(), null, wxEnterpriseId);
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre), e);
reason = "自建应用好友处理异常";
dealFlag = false;
} finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dataPre.getDataId(), dataPre.getpDataId(), reason);
}
}
}
@Override
public void dealException(String taskId, String dataId, String pDataId, String reason) {
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal(), reason);
checkDepartmentTask(taskId, pDataId);
}
@Override
public void dealSuccess(String taskId, String dataId, String dataContent, String wxEnterpriseId) {
TabHaobanPreDealLog data = preDealService.getByDataId(taskId, dataId, PreDealTypeEnum.self_friend.getVal(), -1);
//校验成功是否都
checkDepartmentTask(taskId, data.getpDataId());
}
/**
* 自定义处理流程
*
* @param taskId
* @param pDataId
*/
public void checkDepartmentTask(String taskId, String pDataId) {
//校验是否都已经处理完成
boolean b = preDealService.checkFriendTaskByPDataId(taskId, pDataId, PreDealTypeEnum.self_friend.getVal());
if (!b) {
return;
}
logger.info("同步第三方服务商好友:{},{}", taskId, pDataId);
String key = "haoban_sync_self_friend_task_" + taskId;
RedisUtil.lock(key, 3L);
List<String> dataIds = preDealService.listReDataIdByPDataId(taskId, pDataId, PreDealTypeEnum.friend.getVal());
if (CollectionUtils.isEmpty(dataIds)) {
//更新父级别
preDealService.updateStatusByDataId(taskId, pDataId, PreDealTypeEnum.friend_clerk.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
//校验异常
this.checkDepartmentTask(taskId);
} else {
dealDepartmentToMq(taskId, new HashSet<>(dataIds), SyncTaskStatusEnum.friend_sync);
}
RedisUtil.unlock(key);
}
@Override
public void checkDepartmentTask(String taskId) {
friendClerkSyncNewOperation.checkDepartmentTask(taskId);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务
syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal());
List<String> ret = dealList.stream().map(relationId -> {
DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
dealParamMqDTO.setData(relationId);
dealParamMqDTO.setTaskId(taskId);
dealParamMqDTO.setType(syncTaskStatusEnum.getVal());
return JSONObject.toJSONString(dealParamMqDTO);
}).collect(Collectors.toList());
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
clientInstance.sendBatchMessages("departmentSyncDealMq", ret);
} catch (Exception e) {
logger.info("发送失败:{},{}", taskId);
e.printStackTrace();
}
}
public static void main(String[] args) {
String res = "{'clerkId':'b160eb9a3daf4b3da936b678f1b06744','enterpriseId':'ff8080815dacd3a2015dacd3ef5c0000','externalUserId':'wm59NLDQAAY5Q4pABXAfaTJ6mORvpw','name':'hzw','storeId':'ff8080815695df44015697ada25b0102','wxEnterpriseId':'ca66a01b79474c40b3e7c7f93";
System.err.println(JSON.parseObject(res, ExternalUserDTO.class));
}
}
...@@ -200,6 +200,7 @@ ...@@ -200,6 +200,7 @@
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
from tab_haoban_member_unionid_related from tab_haoban_member_unionid_related
where wx_user_id = #{wxUserId} where wx_user_id = #{wxUserId}
and wx_enterprise_id=#{wxEnterpriseId}
and status_flag = 1 and status_flag = 1
and unionid = #{unionid} and unionid = #{unionid}
limit 1 limit 1
...@@ -221,6 +222,18 @@ ...@@ -221,6 +222,18 @@
where external_userid = #{externalUserid,jdbcType=VARCHAR} where external_userid = #{externalUserid,jdbcType=VARCHAR}
and wx_user_id = #{wxUserId} and wx_user_id = #{wxUserId}
</update> </update>
<update id="delMemberUnionidRelatedBatch" parameterType="com.gic.haoban.manage.service.entity.MemberUnionidRelated">
update tab_haoban_member_unionid_related
set status_flag = 0
where
wx_enterprise_id=#{wxEnterpriseId}
and wx_user_id = #{wxUserId}
and external_userid in
<foreach collection="externalUserids" open="(" close=")" separator="," item="item">
#{item}
</foreach>
</update>
<select id="getByWxUserIdAndWxEnterpriseId" resultMap="BaseResultMap" parameterType="java.lang.String" > <select id="getByWxUserIdAndWxEnterpriseId" resultMap="BaseResultMap" parameterType="java.lang.String" >
select select
......
...@@ -355,6 +355,19 @@ ...@@ -355,6 +355,19 @@
</set> </set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId} where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update> </update>
<update id="updateFriendStatusAndRelationKeyByDataId">
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
reason=#{reason},
data_content = #{dataContent},
relation_key=#{relationKey},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select id="countFailStaffTaskByTaskIdAndPDataId" resultType="integer"> <select id="countFailStaffTaskByTaskIdAndPDataId" resultType="integer">
select select
...@@ -373,4 +386,33 @@ ...@@ -373,4 +386,33 @@
where task_id = #{taskId} where task_id = #{taskId}
and p_data_id =#{pDataId} and p_data_id =#{pDataId}
</select> </select>
<select id="getByRelationKey" resultMap="BaseResultMap">
select
<include refid="Base_Column_List_data"/>
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and relation_key =#{relationKey}
and data_type =#{dataType}
</select>
<select id="checkTaskFriend" resultType="Integer">
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
<if test="pDataId!=null">
p_data_id=#{pDataId}
</if>
and data_type=#{dataType}
and status_flag in(0,1)
</select>
<select id="listReDataIdByPDataId" resultType="String">
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId} and p_data_id=#{dataId} and data_type=#{dataType}
and status_flag in(0,1,3)
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -239,6 +239,22 @@ ...@@ -239,6 +239,22 @@
and wx_user_id = #{wxUserId} and wx_user_id = #{wxUserId}
and status_flag = 1 and status_flag = 1
</update> </update>
<update id="delByUserIdAndExternalUserIdBatch"
parameterType="com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated">
update tab_haoban_external_clerk_related
set
status_flag = 2,
update_time = now()
where
wx_enterprise_id=#{wxEnterpriseId}
and wx_user_id = #{wxUserId}
and status_flag = 1
and external_user_id in
<foreach collection="externalUserIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</update>
<update id="delByClerkIdAndStaffId" parameterType="com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated" > <update id="delByClerkIdAndStaffId" parameterType="com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated" >
update tab_haoban_external_clerk_related update tab_haoban_external_clerk_related
......
...@@ -27,10 +27,12 @@ import com.gic.haoban.manage.web.utils.RouterConstant; ...@@ -27,10 +27,12 @@ import com.gic.haoban.manage.web.utils.RouterConstant;
import com.gic.haoban.manage.web.vo.*; import com.gic.haoban.manage.web.vo.*;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.*; import java.util.*;
...@@ -382,7 +384,8 @@ public class ClerkController extends WebBaseController{ ...@@ -382,7 +384,8 @@ public class ClerkController extends WebBaseController{
//刷新微信好友 //刷新微信好友
@RequestMapping("/fresh-wx-friend") @RequestMapping("/fresh-wx-friend")
public HaobanResponse freshWxFrend(String staffId,String storeId,String wxEnterpriseId,String staffDepartmentRelatedId,String wxUserId) { public HaobanResponse freshWxFrend(String staffId, String storeId, String wxEnterpriseId, String staffDepartmentRelatedId, String wxUserId
, @RequestParam(defaultValue = "0") Integer flushType) {
StaffDTO staff = staffApiService.selectById(staffId); StaffDTO staff = staffApiService.selectById(staffId);
String yyyyMM = DateUtil.dateToStr(new Date(), "yyyyMM"); String yyyyMM = DateUtil.dateToStr(new Date(), "yyyyMM");
if(staff == null){ if(staff == null){
......
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