Commit 20ccfe64 by fudahua

Merge branch 'up-4.15'

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/MemberUnionidRelatedApiServiceImpl.java
parents ddd14eee 648e8cd4
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
import java.util.Date;
/**
* Created 2021/3/22.
*
* @author hua
*/
public class FriendStoreInfoDTO implements Serializable {
private String storeId;
private String storeCode;
private String storeName;
private String clerkId;
private String clerkCode;
private String clerkName;
private String clerkPhoneNumber;
private String addFriendTime;
private String wxUserId;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkPhoneNumber() {
return clerkPhoneNumber;
}
public void setClerkPhoneNumber(String clerkPhoneNumber) {
this.clerkPhoneNumber = clerkPhoneNumber;
}
public String getAddFriendTime() {
return addFriendTime;
}
public void setAddFriendTime(String addFriendTime) {
this.addFriendTime = addFriendTime;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
@Override
public String toString() {
return "FriendStoreInfoDTO{" +
"storeId='" + storeId + '\'' +
", storeCode='" + storeCode + '\'' +
", storeName='" + storeName + '\'' +
", clerkId='" + clerkId + '\'' +
", clerkCode='" + clerkCode + '\'' +
", clerkName='" + clerkName + '\'' +
", clerkPhoneNumber='" + clerkPhoneNumber + '\'' +
", addFriendTime='" + addFriendTime + '\'' +
", wxUserId='" + wxUserId + '\'' +
'}';
}
}
package com.gic.haoban.manage.api.enums;
/**
* Created by hua on 2021/3/22.
*/
public enum SyncTaskTypeEnum {
QYWX_CONTACT(1, "后门同步企业微信架构"),
FRIEND_SINGLE(4, "单个成员刷新好友"),
FRIEND_STORE(5, "刷新门店好友"),;
private int type;
private String taskName;
SyncTaskTypeEnum(int type, String taskName) {
this.type = type;
this.taskName = taskName;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getTaskName() {
return taskName;
}
public void setTaskName(String taskName) {
this.taskName = taskName;
}
public static String getTaskName(int taskType) {
SyncTaskTypeEnum[] values = SyncTaskTypeEnum.values();
for (SyncTaskTypeEnum value : values) {
if (value.getType() == taskType) {
return value.getTaskName();
}
}
return null;
}
}
......@@ -137,10 +137,9 @@ public interface DealSyncOperationApiService {
* @param wxEnterpriseId
* @param taskName
* @param staffId
* @param desc
* @return
*/
public String createWxFriendSingleTask(String wxEnterpriseId, String taskName, String staffId, String staffName);
public String createWxFriendTaskSingle(String wxEnterpriseId, String taskName, String staffId, String staffName, int syncTaskType);
/**
* 单个导购刷新
......@@ -150,6 +149,15 @@ public interface DealSyncOperationApiService {
* @param wxEnterpriseId
*/
public void dealWxFriendClerkSingle(String taskId, String wxUserId, String staffId,String wxEnterpriseId);
/**
* 单个导购刷新
*
* @param taskId
* @param wxEnterpriseId
*/
public void dealWxFriendStore(String taskId, String storeId, String wxEnterpriseId);
/**
* 定时
* @param res
......
......@@ -6,10 +6,8 @@ import java.util.List;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberStoreDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.*;
public interface MemberUnionidRelatedApiService {
......@@ -19,6 +17,13 @@ public interface MemberUnionidRelatedApiService {
void delMemberUnionidRelated(MemberUnionidRelatedDTO dto);
/**
* 处理外部联系人异步
*
* @param params
*/
void dealQywxExternalUser(String params);
ExternalClerkRelatedDTO getByMemberId(String staffId, String memberId);
List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId);
......@@ -58,4 +63,22 @@ public interface MemberUnionidRelatedApiService {
ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId);
/**
* 清理外部联系人
*
* @param wxEnterpriseId
* @param wxUserId
* @param externalUserIds
*/
void cleanNoExsitFriendNew(String wxEnterpriseId, String wxUserId, List<String> externalUserIds);
/**
* 根据会员的unionid 获取好友导购列表
*
* @param enterpriseId
* @param unionId
* @return
*/
ServiceResponse<List<FriendStoreInfoDTO>> listFriendClerkByMemberUnionid(String enterpriseId, String unionId);
}
......@@ -24,12 +24,14 @@ public interface MemberUnionidRelatedMapper {
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);
void deleteByUnionidAndUserId(@Param("externalUserid")String externalUserid,@Param("wxUserId") String wxUserId);
void delMemberUnionidRelatedBatch(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserids") List<String> externalUserid, @Param("wxUserId") String wxUserId);
List<MemberUnionidRelated> getByWxUserIdAndWxEnterpriseId(@Param("wxUserId")String wxUserId, @Param("wxEnterpriseId")String wxEnterpriseId);
List<MemberUnionidRelated> listByEnterpriseIdAndDate(@Param("enterpriseId")String enterpriseId,@Param("date")Date date);
......
......@@ -181,6 +181,19 @@ public interface PreDealLogMapper {
* @return
*/
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
......@@ -196,6 +209,34 @@ public interface PreDealLogMapper {
*/
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 {
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 cleanStaffRelated(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("staffIds")List<String> staffIds);
......@@ -43,4 +45,13 @@ public interface TabHaobanExternalClerkRelatedMapper {
List<TabHaobanExternalClerkRelated> listByWxEnterpriseIdAndWxUserIds(@Param("userIdList")List<String> userIdList, @Param("wxEnterpriseId")String wxEnterpriseId);
TabHaobanExternalClerkRelated getByMemberId(@Param("wxUserId")String wxUserId, @Param("memberId")String memberId);
/**
* 外部联系人的unionid
*
* @param enterpriseId
* @param unionId
* @return
*/
List<TabHaobanExternalClerkRelated> listExternalByUnionId(@Param("enterpriseId") String enterpriseId, @Param("unionId") String unionId);
}
\ No newline at end of file
......@@ -87,4 +87,6 @@ public interface TabHaobanStaffClerkRelationMapper {
List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
List<TabHaobanStaffClerkRelation> pageByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
List<TabHaobanStaffClerkRelation> listBindByStoreId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("storeId") String storeId);
}
\ No newline at end of file
......@@ -61,8 +61,18 @@ public class TabHaobanPreDealLog implements Serializable {
private String dataContent;
private String relationKey;
private String reason;
public String getRelationKey() {
return relationKey;
}
public void setRelationKey(String relationKey) {
this.relationKey = relationKey;
}
public String getReason() {
return reason;
}
......
package com.gic.haoban.manage.service.exception;
/**
* Created 2021/3/31.
*
* @author hua
*/
public class WxApiLimitException extends RuntimeException {
public WxApiLimitException(String message) {
super(message);
}
}
package com.gic.haoban.manage.service.pojo;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import java.io.Serializable;
/**
* Created 2021/4/2.
*
* @author hua
*/
public class DealQywxExternalUserPojo implements Serializable {
public enum DealType {
//删除
del(0),
//新增
add(1);
private int type;
DealType(int type) {
this.type = type;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
// 0 删除 1新增
private int type;
private MemberUnionidRelatedDTO data;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public MemberUnionidRelatedDTO getData() {
return data;
}
public void setData(MemberUnionidRelatedDTO data) {
this.data = data;
}
}
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 {
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 cleanStaffRelated(String wxEnterpriseId, List<String> staffIds);
......@@ -24,4 +33,13 @@ public interface ExternalClerkRelatedService {
ExternalClerkRelatedDTO getByMemberId(String wxUserId, String memberId);
/**
* 根据unionid获取外部联系人的绑定导购
*
* @param enterpriseId
* @param unionId
* @return
*/
List<TabHaobanExternalClerkRelated> listExternalByUnionId(String enterpriseId, String unionId);
}
......@@ -7,7 +7,7 @@ import com.gic.haoban.manage.service.entity.MemberUnionidRelated;
public interface MemberUnionRelatedService {
MemberUnionidRelatedDTO getByUnionId(String wxUserId, String unionid);
MemberUnionidRelatedDTO getByUnionId(String wxEnterpriseId, String wxUserId, String unionid);
MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId);
......@@ -15,6 +15,15 @@ public interface MemberUnionRelatedService {
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);
MemberUnionidRelatedDTO getByParams(String wxUserId, String enterpriseId, String name, String createTime);
......
......@@ -168,6 +168,18 @@ public interface PreDealService {
* @param 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
......@@ -183,4 +195,39 @@ public interface PreDealService {
*/
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);
}
......@@ -85,5 +85,14 @@ public interface StaffClerkRelationService {
Page<StaffClerkRelationDTO> pageByWxEnterpriseId(String wxEnterpriseId, BasePageInfo pageInfo);
/**
* 根据门店获取门店的绑定列表
*
* @param wxEnterpriseId
* @param storeId
* @return
*/
List<StaffClerkRelationDTO> listBindByStoreId(String wxEnterpriseId, String storeId);
}
......@@ -44,6 +44,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
}
@Override
public void delByUserIdAndExternalUserIdBatch(String wxEnterpriseId, String wxUserId, List<String> externalUserids) {
mapper.delByUserIdAndExternalUserIdBatch(wxUserId, wxEnterpriseId, externalUserids);
}
@Override
public void delByClerkIdAndStaffId(String clerkId, String staffId) {
mapper.delByClerkIdAndStaffId(clerkId,staffId);
}
......@@ -79,4 +84,8 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
return EntityUtil.changeEntityByJSON(ExternalClerkRelatedDTO.class, mapper.getByMemberId(wxUserId,memberId));
}
@Override
public List<TabHaobanExternalClerkRelated> listExternalByUnionId(String enterpriseId, String unionId) {
return mapper.listExternalByUnionId(enterpriseId, unionId);
}
}
......@@ -22,8 +22,8 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
private MemberUnionidRelatedMapper mapper;
@Override
public MemberUnionidRelatedDTO getByUnionId(String wxUserId, String unionid) {
return EntityUtil.changeEntityByJSON(MemberUnionidRelatedDTO.class,mapper.getByUnionId(wxUserId,unionid));
public MemberUnionidRelatedDTO getByUnionId(String wxEnterpriseId, String wxUserId, String unionid) {
return EntityUtil.changeEntityByJSON(MemberUnionidRelatedDTO.class, mapper.getByUnionId(wxEnterpriseId, wxUserId, unionid));
}
@Override
public MemberUnionidRelatedDTO getByMemberId(String wxUserId, String memberId) {
......@@ -45,6 +45,11 @@ public class MemberUnionRelatedServiceImpl implements MemberUnionRelatedService
}
@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) {
return EntityUtil.changeEntityListByJSON(MemberUnionidRelatedDTO.class, mapper.getByWxUserIdAndWxEnterpriseId(wxUserId,wxEnterpriseId));
}
......
......@@ -174,6 +174,12 @@ public class PreDealServiceImpl implements PreDealService {
}
@Override
public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent, String relationKey) {
int i = preDealLogMapper.updateFriendStatusAndRelationKeyByDataId(taskId, dataId, status, reason, dataContent, relationKey);
return i >= 0;
}
@Override
public boolean checkStaffTaskByTaskIdAndPDataId(String taskId, String pDataId) {
return preDealLogMapper.countFailStaffTaskByTaskIdAndPDataId(taskId,pDataId) == 0;
}
......@@ -182,4 +188,26 @@ public class PreDealServiceImpl implements PreDealService {
public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String 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);
}
}
......@@ -245,4 +245,10 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
Page<StaffClerkRelationDTO> retPage = PageUtil.changePageHelperToCurrentPage(new PageInfo<>(clerkBindList), StaffClerkRelationDTO.class);
return retPage;
}
@Override
public List<StaffClerkRelationDTO> listBindByStoreId(String wxEnterpriseId, String storeId) {
List<TabHaobanStaffClerkRelation> ret = mapper.listBindByStoreId(wxEnterpriseId, storeId);
return EntityUtil.changeEntityListNew(StaffClerkRelationDTO.class, ret);
}
}
......@@ -17,10 +17,7 @@ import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.common.utils.PageUtil;
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.SecretTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.enums.*;
import com.gic.haoban.manage.api.service.ClerkMainStoreRelatedApiService;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.DepartmentApiService;
......@@ -111,6 +108,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
private static final String LOCK_SUCCESS_KEY = "sync_wx_success_lock_";
private static final String FRIEND_LOCK = "haoban_fresh_wx_friend_lock_";
@Override
public void departmentDealMq(String params) {
logger.info("mq处理中:{}", params);
......@@ -145,13 +144,13 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
}
}else if(dataPre.getDataType().equals(PreDealTypeEnum.friend_clerk.getVal())){
logger.info("好友导购处理:{}", params);
operationMap.get("friendClerkSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
operationMap.get("friendClerkSyncNewOperation").dealSingleByMq(dealParamMqDTO, dataPre);
}else if(dataPre.getDataType().equals(PreDealTypeEnum.friend.getVal())){
operationMap.get("friendSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
operationMap.get("friendSyncNewOperation").dealSingleByMq(dealParamMqDTO, dataPre);
logger.info("好友处理:{}", params);
}else if(dataPre.getDataType().equals(PreDealTypeEnum.self_friend.getVal())){
operationMap.get("selfFriendSyncOperation").dealSingleByMq(dealParamMqDTO, dataPre);
operationMap.get("selfFriendSyncNewOperation").dealSingleByMq(dealParamMqDTO, dataPre);
logger.info("好友处理:{}", params);
} else if(dataPre.getDataType().equals(PreDealTypeEnum.friend_merge.getVal())){
......@@ -263,7 +262,7 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
@Override
public String createQywxTask(String wxEnterpriseId, String taskName, String userId, String desc) {
return createBaseTask(wxEnterpriseId, taskName, userId, desc, 1);
return createBaseTask(wxEnterpriseId, taskName, userId, desc, SyncTaskTypeEnum.QYWX_CONTACT.getType());
}
......@@ -694,17 +693,27 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
}
@Override
public String createWxFriendSingleTask(String wxEnterpriseId, String taskName, String staffId, String staffName) {
public String createWxFriendTaskSingle(String wxEnterpriseId, String taskName, String staffId, String staffName, int syncTaskType) {
String lockKey = FRIEND_LOCK + "_lock_" + staffId;
String staffLockKey = FRIEND_LOCK + staffId;
RedisUtil.lock(lockKey, 2L);
Object cache = RedisUtil.getCache(staffLockKey);
if (null != cache) {
RedisUtil.unlock(lockKey);
return null;
}
TabHaobanSyncTask tabHaobanSyncTask = new TabHaobanSyncTask();
tabHaobanSyncTask.setAddUser(staffId);
tabHaobanSyncTask.setTaskName(taskName);
tabHaobanSyncTask.setTaskName(SyncTaskTypeEnum.getTaskName(syncTaskType));
tabHaobanSyncTask.setTaskDesc(staffName);
tabHaobanSyncTask.setWxEnterpriseId(wxEnterpriseId);
tabHaobanSyncTask.setStatusFlag(SyncTaskStatusEnum.init.getVal());
tabHaobanSyncTask.setTaskId(ToolUtil.randomUUID());
tabHaobanSyncTask.setTaskType(4);
tabHaobanSyncTask.setTaskType(syncTaskType);
syncTaskService.createTask(tabHaobanSyncTask);
RedisUtil.setCache(staffLockKey, tabHaobanSyncTask.getTaskId(), 1L, TimeUnit.HOURS);
RedisUtil.unlock(lockKey);
return tabHaobanSyncTask.getTaskId();
}
......@@ -726,6 +735,27 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
dealDepartmentToMq(taskId, hashSet, SyncTaskStatusEnum.friend_clerk_sync);
}
@Override
public void dealWxFriendStore(String taskId, String storeId, String wxEnterpriseId) {
List<StaffClerkRelationDTO> clerkRelationDTOS = staffClerkRelationService.listBindByStoreId(wxEnterpriseId, storeId);
if (CollectionUtils.isEmpty(clerkRelationDTOS)) {
logger.info("没有要刷新的:{},{}", wxEnterpriseId, storeId);
return;
}
List<TabHaobanPreDealLog> dealLogList = clerkRelationDTOS.stream().map(dto -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(dto.getWxUserId());
dealLog.setpDataId(dto.getStaffId());
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.friend_clerk_sync);
}
@Override
public void quartWxFriendClerk(String res) {
......
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.task;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.enterprise.api.service.StoreGroupService;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.ServiceResponse;
......@@ -77,8 +78,8 @@ public class QywxClerkSyncOperation implements BaseSyncOperation {
}
} catch (Exception e) {
e.printStackTrace();
logger.info("微信成员同步失败:", JSONObject.toJSONString(dataPre));
reason="同步异常";
logger.info("微信成员同步失败:{}", e);
reason = "同步异常:";
dealFlag = false;
} finally {
if (!dealFlag) {
......
......@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.service.StoreGroupService;
......@@ -147,9 +148,9 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
}
} catch (Exception e) {
resultFlag = false;
reason = "处理异常";
reason = "处理异常:";
e.printStackTrace();
logger.info("处理异常");
logger.info("处理异常:{}", e);
} finally {
if (!resultFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), reason);
......
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.exception.WxApiLimitException;
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.concurrent.TimeUnit;
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;
private static final String TRY_AGAIN = "haoban_fresh_wx_friend_again_";
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("自建好友处理:{}", JSONObject.toJSONString(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 (WxApiLimitException e) {
logger.info("接口次数限制:{}", JSONObject.toJSONString(dataPre));
dealFlag = tryAgainToMq(dataPre);
reason = "getCorpSelfExternalUseridInfo重试次数过多";
} 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 dataPre
* @return
*/
private boolean tryAgainToMq(TabHaobanPreDealLog dataPre) {
logger.info("需要重试self:{}", dataPre.getDataId());
String key = TRY_AGAIN + dataPre.getTaskId() + ":" + dataPre.getDataId();
Object cache = RedisUtil.getCache(key);
if (null == cache) {
RedisUtil.setCache(key, 1, 2L, TimeUnit.HOURS);
} else {
Integer count = Integer.valueOf(cache.toString());
RedisUtil.setCache(key, count + 1);
if (count > 4) {
return false;
}
}
HashSet<String> reTrysIds = new HashSet<>();
reTrysIds.add(dataPre.getDataId());
dealDepartmentToMq(dataPre.getTaskId(), reTrysIds, SyncTaskStatusEnum.self_friend_sync);
return true;
}
/**
* 自定义处理流程
*
* @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 + ":" + pDataId;
String lockKey = "haoban_sync_self_friend_task_lock_" + taskId + ":" + pDataId;
RedisUtil.lock(lockKey, 3L);
Object hasDealCheck = RedisUtil.getCache(key);
if (hasDealCheck != null) {
logger.info("重复提交处理第三方好友:{}", pDataId);
RedisUtil.unlock(lockKey);
return;
}
RedisUtil.setCache(key, pDataId, 30L, TimeUnit.SECONDS);
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(lockKey);
}
@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));
}
}
......@@ -161,9 +161,7 @@
<if test="createTime != null" >
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null" >
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
update_time = now()
</set>
where member_unionid_related_id = #{memberUnionidRelatedId,jdbcType=VARCHAR}
</update>
......@@ -200,6 +198,7 @@
<include refid="Base_Column_List" />
from tab_haoban_member_unionid_related
where wx_user_id = #{wxUserId}
and wx_enterprise_id=#{wxEnterpriseId}
and status_flag = 1
and unionid = #{unionid}
limit 1
......@@ -222,6 +221,18 @@
and wx_user_id = #{wxUserId}
</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
<include refid="Base_Column_List" />
......
......@@ -356,6 +356,21 @@
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<update id="updateFriendStatusAndRelationKeyByDataId">
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
reason=#{reason},
<if test="dataContent !=null">
data_content = #{dataContent},
</if>
relation_key=#{relationKey},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select id="countFailStaffTaskByTaskIdAndPDataId" resultType="integer">
select
count(*)
......@@ -373,4 +388,33 @@
where task_id = #{taskId}
and p_data_id =#{pDataId}
</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">
and 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>
\ No newline at end of file
......@@ -240,6 +240,22 @@
and status_flag = 1
</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 tab_haoban_external_clerk_related
set
......@@ -343,4 +359,13 @@
and external_user_id is not null
limit 1
</select>
<select id="listExternalByUnionId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related
where enterprise_id = #{enterpriseId}
and unionid = #{unionId}
and status_flag = 1
</select>
</mapper>
\ No newline at end of file
......@@ -375,5 +375,12 @@
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and status_flag =1
</select>
<select id="listBindByStoreId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_staff_clerk_relation
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and store_id=#{storeId}
and status_flag =1
</select>
</mapper>
\ No newline at end of file
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import org.apache.commons.lang3.StringUtils;
public class test {
public static void main(String[] args) {
//插入不存在的我们pre表的企业微信数据
int pageSize = 500;
int count = 345;
int pre = count/pageSize+1;
int yushu = count%pageSize;
if(yushu==0){
pre = pre- 1;
}
int i= 0;
while(i<pre){
System.out.println("这是第{}次,进入"+i);
i++;
int fromIndex = (i-1)*pageSize;
int toIndex = (count-fromIndex) > pageSize ? (fromIndex+pageSize):count;
System.out.println("fromIndex=============>"+fromIndex);
System.out.println("toIndex=============>"+toIndex);
String key = "3.2.1";
String[] split = key.split(".");
}
System.out.println(split[1]);
//
// //插入不存在的我们pre表的企业微信数据
// int pageSize = 500;
// int count = 345;
// int pre = count/pageSize+1;
// int yushu = count%pageSize;
// if(yushu==0){
// pre = pre- 1;
// }
// int i= 0;
// while(i<pre){
// System.out.println("这是第{}次,进入"+i);
// i++;
// int fromIndex = (i-1)*pageSize;
// int toIndex = (count-fromIndex) > pageSize ? (fromIndex+pageSize):count;
//
// System.out.println("fromIndex=============>"+fromIndex);
// System.out.println("toIndex=============>"+toIndex);
//
// }
}
}
......@@ -261,6 +261,12 @@ public class ApplicationController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_0, this.qywxUserApiService.getExternalUseridInfo(corpid, suiteid, userid));
}
@RequestMapping("get-external-unionid")
@IgnoreLogin
public Object userInfoUninid(String corpid, String suiteid, String unionid) {
return resultResponse(HaoBanErrCode.ERR_0, this.qywxUserApiService.getExternalUseridByUnionid(corpid, suiteid, unionid));
}
@RequestMapping("sync-qywx")
@IgnoreLogin
public Object syncQywx(){
......
package com.gic.haoban.manage.web.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.web.vo.SdkVersionLimitVo;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
......@@ -27,6 +32,10 @@ public class ApplicationController extends WebBaseController{
@Autowired
private ApplicationSettingApiService applicationSettingApiService;
private static final String SDKVERSION_KEY = "haoban-wx-sdk-version";
@RequestMapping("application-list")
public HaobanResponse applicationList(String wxEnterpriseId) {
......@@ -63,4 +72,43 @@ public class ApplicationController extends WebBaseController{
}
@RequestMapping("sdk-version-check")
public HaobanResponse sdkVersionCheck(String skdVersion) {
if (StringUtils.isBlank(skdVersion)) {
return resultResponse(HaoBanErrCode.ERR_2);
}
SdkVersionLimitVo sdkVersionLimitVo = new SdkVersionLimitVo();
Object cache = RedisUtil.getCache(SDKVERSION_KEY);
if (null == cache) {
return resultResponse(HaoBanErrCode.ERR_1, sdkVersionLimitVo);
}
String limitSdkVersion = cache.toString();
sdkVersionLimitVo.setLimitSdkVersion(limitSdkVersion);
String[] limitSdk = StringUtils.split(limitSdkVersion, ".");
String[] versionSplit = StringUtils.split(skdVersion, ".");
int checkFlag = checkNum(Integer.valueOf(limitSdk[0]), Integer.valueOf(versionSplit[0]));
if (checkFlag != 0) {
sdkVersionLimitVo.setCheckFlag(checkFlag > 0 ? true : false);
return resultResponse(HaoBanErrCode.ERR_1, sdkVersionLimitVo);
}
checkFlag = checkNum(Integer.valueOf(limitSdk[1]), Integer.valueOf(versionSplit[1]));
if (checkFlag != 0) {
sdkVersionLimitVo.setCheckFlag(checkFlag > 0 ? true : false);
return resultResponse(HaoBanErrCode.ERR_1, sdkVersionLimitVo);
}
checkFlag = checkNum(Integer.valueOf(limitSdk[2]), Integer.valueOf(versionSplit[2]));
if (checkFlag != 0) {
sdkVersionLimitVo.setCheckFlag(checkFlag > 0 ? true : false);
return resultResponse(HaoBanErrCode.ERR_1, sdkVersionLimitVo);
}
return resultResponse(HaoBanErrCode.ERR_1, sdkVersionLimitVo);
}
private int checkNum(int limit, int cur) {
return cur > limit ? 1 : (cur == limit ? 0 : -1);
}
}
......@@ -9,7 +9,6 @@ import com.gic.clerk.api.service.ClerkNewService;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.EnterpriseService;
......@@ -23,7 +22,6 @@ import com.gic.haoban.manage.api.enums.*;
import com.gic.haoban.manage.api.service.*;
import com.gic.haoban.manage.web.anno.HttpLimit;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.utils.RouterConstant;
import com.gic.haoban.manage.web.vo.*;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang3.StringUtils;
......@@ -31,6 +29,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
......@@ -382,7 +381,8 @@ public class ClerkController extends WebBaseController{
//刷新微信好友
@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);
String yyyyMM = DateUtil.dateToStr(new Date(), "yyyyMM");
if(staff == null){
......@@ -390,30 +390,28 @@ public class ClerkController extends WebBaseController{
}
String key = "haoban_fresh_wx_friend" + yyyyMM + staffId;
Integer count = RedisUtil.getCache(key) == null ? 0 : (Integer)RedisUtil.getCache(key);
if(count == null || count < 4){
RedisUtil.setCache(key,count + 1,31 * 24 * 60 * 60l);
JSONObject json = new JSONObject();
json.put("wxUserId", staff.getWxUserId());
json.put("wxEnterpriseId", wxEnterpriseId);
json.put("storeId", storeId);
// logger.info("【刷下微信好友】{},{},{}",RouterConstant.FRESH_WX_FRIEND_SERVICENAME,RouterConstant.INIT_FRESH_WX_FRIEND_METHODNAME,json.toJSONString());
if (count != null && count >= 4) {
logger.info("次数超出限制:{}", staffId);
return resultResponse(HaoBanErrCode.ERR_10011);
}
RedisUtil.setCache(key, count + 1, 31 * 24 * 60 * 60L);
if (flushType == 0) {
String taskName = "刷新企业微信好友("+staff.getStaffName()+")";
String taskId = dealSyncOperationApiService.createWxFriendSingleTask(wxEnterpriseId, taskName, staffId, staff.getStaffName());
String taskId = dealSyncOperationApiService.createWxFriendTaskSingle(wxEnterpriseId, taskName, staffId, staff.getStaffName(), SyncTaskTypeEnum.FRIEND_SINGLE.getType());
if(StringUtils.isNotBlank(taskId)){
dealSyncOperationApiService.dealWxFriendClerkSingle(taskId,wxUserId,staffId,wxEnterpriseId);
}else{
return resultResponse(HaoBanErrCode.ERR_999);
return resultResponse(HaoBanErrCode.ERR_10022);
}
} else {
String taskName = "刷新门店好友";
String taskId = dealSyncOperationApiService.createWxFriendTaskSingle(wxEnterpriseId, taskName, staffId, staff.getStaffName(), SyncTaskTypeEnum.FRIEND_STORE.getType());
if (StringUtils.isNotBlank(taskId)) {
dealSyncOperationApiService.dealWxFriendStore(taskId, storeId, wxEnterpriseId);
} else {
return resultResponse(HaoBanErrCode.ERR_10022);
}
// try {
// GICMQClientUtil.getClientInstance().sendCommonMessage(RouterConstant.ROUTERTYPE, json.toJSONString(),
// RouterConstant.FRESH_WX_FRIEND_SERVICENAME, RouterConstant.INIT_FRESH_WX_FRIEND_METHODNAME);
// } catch (Exception e) {
// logger.info(e.getMessage(),e);
// }
// memberUnionidRelatedApiService.freshWxFrend(wxEnterpriseId, staff.getWxUserId(),storeId);
}else{
return resultResponse(HaoBanErrCode.ERR_10011);
}
return resultResponse(HaoBanErrCode.ERR_1);
}
......
......@@ -200,7 +200,6 @@ public enum HaoBanErrCode {
ERR_10012(10012,"手机号格式不正确"),
ERR_10013(10013,"code已经存在"),
ERR_10014(10014,"请输入手机号"),
ERR_10015(10015,"素材不存在"),
ERR_10016(10016,"导购不存在"),
......@@ -215,12 +214,15 @@ public enum HaoBanErrCode {
ERR_10021(10021,"待审核中存在code或该手机号"),
ERR_10022(10022, "已有刷新在执行中,请不要重复刷新"),
ERR_11122(11122,"手机号已存在"),
ERR_999(999, "操作失败"),
ERR_DEFINE(-888, "自定义错误"),
ERR_OTHER(-999, "未知错误code");
private int code;
private String msg;
......
package com.gic.haoban.manage.web.vo;
import java.io.Serializable;
/**
* Created 2021/3/24.
*
* @author hua
*/
public class SdkVersionLimitVo implements Serializable {
private String limitSdkVersion;
private boolean checkFlag = true;
public String getLimitSdkVersion() {
return limitSdkVersion;
}
public void setLimitSdkVersion(String limitSdkVersion) {
this.limitSdkVersion = limitSdkVersion;
}
public boolean isCheckFlag() {
return checkFlag;
}
public void setCheckFlag(boolean checkFlag) {
this.checkFlag = checkFlag;
}
}
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