Commit 1f0eea87 by fudahua

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	haoban-manage3-service/src/test/java/DealSyncTest.java
parents bb4512d8 e2204479
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
public class ExternalUserDTO implements Serializable{
private String wxEnterpriseId;
private String name;
private String unionId;
private String avatar;
private String addCreateTime;
private String wxUserId;
private String externalUserId;
private String memberId;
private String storeId;
private String enterpriseId;
private String clerkId;
private String staffId;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUnionId() {
return unionId;
}
public void setUnionId(String unionId) {
this.unionId = unionId;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getAddCreateTime() {
return addCreateTime;
}
public void setAddCreateTime(String addCreateTime) {
this.addCreateTime = addCreateTime;
}
public String getWxUserId() {
return wxUserId;
}
public void setWxUserId(String wxUserId) {
this.wxUserId = wxUserId;
}
public String getExternalUserId() {
return externalUserId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
}
......@@ -7,7 +7,11 @@ public enum PreDealTypeEnum {
all(-1),
group(0),
store(1),
clerk(2);
clerk(2),
friend_clerk(6),
friend(8),
self_friend(7),
friend_merge(9);
private int val;
PreDealTypeEnum(int val) {
......
......@@ -10,7 +10,11 @@ public enum SyncTaskStatusEnum {
clerk_sync(3),
compute(4),
exception_compute(5),
exception_close(6);
exception_close(6),
friend_clerk_sync(7),
self_friend_sync(8),
friend_sync(9),
merge_friend_sync(10);
private int val;
......
......@@ -117,6 +117,44 @@ public interface DealSyncOperationApiService {
* @param 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);
/**
* 创建企业微信好友刷新任务
* @param wxEnterpriseId
* @param taskName
* @param staffId
* @param desc
* @return
*/
public String createWxFriendSingleTask(String wxEnterpriseId, String taskName, String staffId, String staffName);
/**
* 单个导购刷新
* @param taskId
* @param wxUserId
* @param staffId
* @param wxEnterpriseId
*/
public void dealWxFriendClerkSingle(String taskId, String wxUserId, String staffId,String wxEnterpriseId);
/**
* 定时
* @param res
*/
public void quartWxFriendClerk(String res);
void test(String wxEnterpriseId, String taskId);
}
......@@ -6,6 +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;
......@@ -17,7 +19,7 @@ public interface MemberUnionidRelatedApiService {
void delMemberUnionidRelated(MemberUnionidRelatedDTO dto);
MemberUnionidRelatedDTO getByMemberId(String staffId, String memberId);
ExternalClerkRelatedDTO getByMemberId(String staffId, String memberId);
List<MemberUnionidRelatedDTO> getByWxUserIdAndWxEnterpriseId(String wxUserId, String wxEnterpriseId);
......@@ -43,5 +45,17 @@ public interface MemberUnionidRelatedApiService {
String addMemberUnionidRelatedNew(MemberUnionidRelatedDTO dto);
void mqFreshWxFrend(String res);
void cleanNoExsitFriend(String wxEnterpriseId,String wxUserId,String resWes);
List<String> listSelfExterialList(String wxEnterpriseId,String wxUserId);
List<String> listExterialList(String wxEnterpriseId, String wxUserId);
ExternalUserDTO getCorpSelfExternalUseridInfo(String wxEnterpriseId,String wxUserId, String externalUserId);
String addExternal(ExternalUserDTO dto);
ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId);
}
......@@ -10,4 +10,17 @@ public interface TestApiService {
* @return
*/
public String checkThread(String id,Long expireTime);
/**
* 拉取自己部门企业微信通讯录
* @return
*/
public String listSelfQywxUser(String corpid,String secretVal, String dataId);
/**
* 拉取所有部门企业微信通讯录
* @return
*/
public String listAllQywxUser(String corpid,String secretVal, String dataId);
}
......@@ -19,8 +19,25 @@ public class StoreListQo extends BasePageInfo {
private String countyId;
private Integer storeType;
private List<String> storeIdList;
private List<String> notStoreIdList;
private String storeId;
public List<String> getStoreIdList() {
return storeIdList;
}
public void setStoreIdList(List<String> storeIdList) {
this.storeIdList = storeIdList;
}
public List<String> getNotStoreIdList() {
return notStoreIdList;
}
public void setNotStoreIdList(List<String> notStoreIdList) {
this.notStoreIdList = notStoreIdList;
}
public String getStoreGroupId() {
return storeGroupId;
}
......
......@@ -48,7 +48,13 @@
<groupId>com.gic</groupId>
<artifactId>haoban-common</artifactId>
<version>${haoban-common}</version>
</dependency>
<!-- <exclusions> -->
<!-- <exclusion> -->
<!-- <artifactId>jsqlparser</artifactId> -->
<!-- <groupId>com.github.jsqlparser</groupId> -->
<!-- </exclusion> -->
<!-- </exclusions> -->
</dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>haoban-config</artifactId>
......@@ -83,6 +89,12 @@
<groupId>com.gic</groupId>
<artifactId>gic-enterprise-api</artifactId>
<version>${gic-enterprise-api}</version>
<!-- <exclusions> -->
<!-- <exclusion> -->
<!-- <artifactId>jsqlparser</artifactId> -->
<!-- <groupId>com.github.jsqlparser</groupId> -->
<!-- </exclusion> -->
<!-- </exclusions> -->
</dependency>
<dependency>
<groupId>com.gic</groupId>
......@@ -142,6 +154,16 @@
<artifactId>gic-binlog-base</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.1</version>
</dependency>
<!-- <dependency> -->
<!-- <groupId>com.gic</groupId> -->
<!-- <artifactId>sql-check-sdk</artifactId> -->
<!-- <version>4.0-SNAPSHOT</version> -->
<!-- </dependency> -->
</dependencies>
<build>
......
......@@ -150,7 +150,12 @@ public interface PreDealLogMapper {
* @return
*/
public int countByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId,@Param("dataType") int dataType);
/**
* 获取列表
* @param taskId
* @param dataType
*/
public List<String> listDataIdByTaskIdAndDataType(@Param("taskId") String taskId,@Param("dataType") int dataType);
/**
* 统计任务数量
* countExcepAndPreByTaskId
......@@ -159,5 +164,38 @@ public interface PreDealLogMapper {
* @return
*/
public TabHaobanPreDealLog getLastPreDataByTaskId(@Param("taskId") String taskId);
/**
* 获取根节点
* @param taskId
* @return
*/
public String getRootDataIdByWxEnterpriseIdAndTaskId(@Param("wxEnterpriseId") String wxEnterpriseId,@Param("taskId") String taskId);
/**
* 更新状态
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
* @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 pDataId
* @return
*/
int countFailStaffTaskByTaskIdAndPDataId(@Param("taskId")String taskId, @Param("pDataId")String pDataId);
/**
* 根据父id获取
* @param taskId
* @param wxUserId
* @return
*/
List<TabHaobanPreDealLog> listByPDataIdAndTaskId(@Param("taskId")String taskId, @Param("pDataId")String wxUserId);
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -34,4 +35,6 @@ public interface SyncTaskMapper {
/**
*/
List<TabHaobanSyncTask> listPageByWxEid(String wxEnterpriseId);
List<TabHaobanSyncTask> listTaskByType(@Param("taskType")int taskType);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
......@@ -18,4 +20,6 @@ public interface TabHaobanClerkMainStoreRelatedMapper {
int updateByPrimaryKey(TabHaobanClerkMainStoreRelated record);
TabHaobanClerkMainStoreRelated selectByWxEnterpriseIdAndStoreId(@Param("staffId")String staffId, @Param("wxEnterpriseId")String wxEnterpriseId);
List<TabHaobanClerkMainStoreRelated> listByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
}
\ No newline at end of file
......@@ -41,4 +41,6 @@ public interface TabHaobanExternalClerkRelatedMapper {
List<TabHaobanExternalClerkRelated> listByWxEnterpriseIdAndWxUserId(@Param("wxUserId")String wxUserId, @Param("wxEnterpriseId")String wxEnterpriseId);
List<TabHaobanExternalClerkRelated> listByWxEnterpriseIdAndWxUserIds(@Param("userIdList")List<String> userIdList, @Param("wxEnterpriseId")String wxEnterpriseId);
TabHaobanExternalClerkRelated getByMemberId(@Param("wxUserId")String wxUserId, @Param("memberId")String memberId);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper;
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.Param;
......@@ -33,4 +37,5 @@ public interface TabHaobanMemberClerkChatConfigMapper {
/**
*/
MemberClerkChatConfig getChatByMemberIdStaffId(@Param("memberId") String memberId, @Param("staffId") String staffId);
}
\ No newline at end of file
......@@ -83,4 +83,6 @@ public interface TabHaobanStaffClerkRelationMapper {
List<TabHaobanStaffClerkRelation> lisByStaffId(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("staffId")String staffId);
TabHaobanStaffClerkRelation getByCodeAndStoreId(@Param("clerkCode")String clerkCode, @Param("storeId")String storeId);
List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId);
}
\ No newline at end of file
......@@ -13,6 +13,8 @@ public class ExternalUserPojo implements Serializable{
private String avatar;
private String addCreateTime;
private String externalUserId;
public String getWxEnterpriseId() {
return wxEnterpriseId;
......@@ -53,6 +55,14 @@ public class ExternalUserPojo implements Serializable{
public void setAddCreateTime(String addCreateTime) {
this.addCreateTime = addCreateTime;
}
public String getExternalUserId() {
return externalUserId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
......
package com.gic.haoban.manage.service.service;
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
public interface ClerkMainStoreRelatedService {
......@@ -10,4 +12,6 @@ public interface ClerkMainStoreRelatedService {
void update(TabHaobanClerkMainStoreRelated r);
List<TabHaobanClerkMainStoreRelated> listByWxEnterpriseId(String wxEnterpriseId);
}
......@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.service;
import java.util.List;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
......@@ -21,4 +22,6 @@ public interface ExternalClerkRelatedService {
List<TabHaobanExternalClerkRelated> listByExTernalUseridAndWxUserId(String externalUserid, String wxUserId);
ExternalClerkRelatedDTO getByMemberId(String wxUserId, String memberId);
}
......@@ -138,11 +138,49 @@ public interface PreDealService {
* @return
*/
public boolean existDataId(String taskId, String dataId);
/**
* 获取dataIdList
* @param taskId
* @param dateType
* @return
*/
public List<String> listDataIdByTaskIdAndDataType(String taskId, Integer dateType);
/**
* 获取最近的数据
*
* @return
*/
public PreDealLogInfoDTO getLastPreDataByTaskId(String taskId);
/**
* 获取根节点
*
* @return
*/
public String getRootDataIdByWxEnterpriseIdAndTaskId(String wxEnterpriseId,String taskId);
/**
* 更新好友成功状态
* @param taskId
* @param dataId
* @param status
* @param reason
* @param dataContent
*/
public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent);
/**
* 根据父任务判断子任务是否全部完成
* @param taskId
* @param pDataId
* @return
*/
public boolean checkStaffTaskByTaskIdAndPDataId(String taskId, String pDataId);
/**
* 根据父id获取
* @param taskId
* @param wxUserId
* @return
*/
public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId);
}
......@@ -6,6 +6,8 @@ import java.util.Set;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.service.entity.MemberClerkChatConfig;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import org.apache.ibatis.annotations.Param;
public interface StaffClerkRelationService {
......@@ -72,6 +74,12 @@ public interface StaffClerkRelationService {
* @return
*/
public MemberClerkChatConfig getChatConfig(String staffId,String memberId);
/**
* 根据企业查询
* @param wxEnterpriseId
* @return
*/
List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(String wxEnterpriseId);
}
package com.gic.haoban.manage.service.service;
import java.util.List;
import com.gic.api.base.commons.Page;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.SyncTaskDTO;
......@@ -42,4 +44,10 @@ public interface SyncTaskService {
* @return
*/
public Page<SyncTaskDTO> listTaskPage(String wxEnterpriseId, BasePageInfo pageInfo);
/**
* 获取列表
* @param taskType
* @return
*/
public List<TabHaobanSyncTask> listTaskByType(int taskType);
}
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -42,4 +43,9 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
mapper.updateByPrimaryKeySelective(r);
}
@Override
public List<TabHaobanClerkMainStoreRelated> listByWxEnterpriseId(String wxEnterpriseId) {
return mapper.listByWxEnterpriseId(wxEnterpriseId);
}
}
......@@ -8,6 +8,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.dubbo.config.annotation.Service;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
......@@ -73,4 +74,9 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
return mapper.listByExTernalUseridAndWxUserId(externalUserid,wxUserId);
}
@Override
public ExternalClerkRelatedDTO getByMemberId(String wxUserId, String memberId) {
return EntityUtil.changeEntityByJSON(ExternalClerkRelatedDTO.class, mapper.getByMemberId(wxUserId,memberId));
}
}
......@@ -11,12 +11,17 @@ import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.service.dao.mapper.PreDealLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.task.QywxGroupSyncOperation;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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.ArrayList;
import java.util.List;
/**
......@@ -29,13 +34,30 @@ public class PreDealServiceImpl implements PreDealService {
@Autowired
private PreDealLogMapper preDealLogMapper;
private static final Logger logger = LoggerFactory.getLogger(PreDealServiceImpl.class);
private static final int pageSize = 1000;
@Override
public boolean insert(List<TabHaobanPreDealLog> list) {
if (CollectionUtils.isEmpty(list)) {
return true;
}
preDealLogMapper.insertSelectiveBatch(list);
//插入不存在的我们pre表的企业微信数据
int count = list.size();
int pre = count/pageSize+1;
int yushu = count%pageSize;
if(yushu==0){
pre = pre - 1;
}
int i= 0;
while(i<pre){
logger.info("这是第{}次,进入",i);
i++;
int fromIndex = (i-1)*pageSize;
int toIndex = (count-fromIndex) > pageSize ? (fromIndex+pageSize):count;
List<TabHaobanPreDealLog>subList = list.subList(fromIndex, toIndex);
preDealLogMapper.insertSelectiveBatch(subList);
}
return true;
}
......@@ -121,10 +143,43 @@ public class PreDealServiceImpl implements PreDealService {
int i = preDealLogMapper.countByDataId(taskId, dataId,PreDealTypeEnum.clerk.getVal());
return i > 0;
}
@Override
public List<String> listDataIdByTaskIdAndDataType(String taskId, Integer dateType) {
List<String> list = preDealLogMapper.listDataIdByTaskIdAndDataType(taskId,dateType);
if(list == null){
list = new ArrayList<String>();
}
return list;
}
@Override
public PreDealLogInfoDTO getLastPreDataByTaskId(String taskId) {
TabHaobanPreDealLog preDealLog = preDealLogMapper.getLastPreDataByTaskId(taskId);
return EntityUtil.changeEntityByOrika(PreDealLogInfoDTO.class,preDealLog);
}
@Override
public String getRootDataIdByWxEnterpriseIdAndTaskId(String wxEnterpriseId,
String taskId) {
return preDealLogMapper.getRootDataIdByWxEnterpriseIdAndTaskId( wxEnterpriseId, taskId);
}
@Override
public boolean updateFriendStatusByDataId(String taskId, String dataId, int status, String reason, String dataContent) {
int i = preDealLogMapper.updateFriendStatusByDataId(taskId, dataId, status, reason,dataContent);
return i >= 0;
}
@Override
public boolean checkStaffTaskByTaskIdAndPDataId(String taskId, String pDataId) {
return preDealLogMapper.countFailStaffTaskByTaskIdAndPDataId(taskId,pDataId) == 0;
}
@Override
public List<TabHaobanPreDealLog> listByPDataIdAndTaskId(String taskId, String wxUserId) {
return preDealLogMapper.listByPDataIdAndTaskId(taskId,wxUserId);
}
}
......@@ -93,8 +93,10 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
String staffId = staffClerkRelation.getStaffId();
String wxEnterpriseId = staffClerkRelation.getWxEnterpriseId();
TabHaobanClerkMainStoreRelated r = clerkMainStoreRelatedService.selectByWxEnterpriseIdAndStoreId(staffId, wxEnterpriseId);
r.setStatusFlag(0);
clerkMainStoreRelatedService.update(r);
if(r != null){
r.setStatusFlag(0);
clerkMainStoreRelatedService.update(r);
}
externalClerkRelatedService.delByClerkIdAndStaffId(staffClerkRelation.getClerkId(), staffId);
List<StaffClerkRelationDTO> list = this.lisByStaffId(wxEnterpriseId, staffId);
if (list != null && list.size() >= 1) {
......@@ -222,4 +224,9 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
MemberClerkChatConfig chatConfig = memberClerkChatConfigMapper.getChatByMemberIdStaffId(memberId, staffId);
return chatConfig;
}
@Override
public List<TabHaobanStaffClerkRelation> listByWxEnterpriseId(String wxEnterpriseId) {
return mapper.listByWxEnterpriseId(wxEnterpriseId);
}
}
......@@ -58,4 +58,10 @@ public class SyncTaskServiceImpl implements SyncTaskService {
Page<SyncTaskDTO> page = PageUtil.changePageHelperToCurrentPage(new PageInfo<>(list), SyncTaskDTO.class);
return page;
}
@Override
public List<TabHaobanSyncTask> listTaskByType(int taskType) {
List<TabHaobanSyncTask> list = syncTaskMapper.listTaskByType(taskType);
return list;
}
}
package com.gic.haoban.manage.service.service.out.impl;
import java.util.List;
import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.haoban.manage.api.enums.SecretTypeEnum;
import com.gic.haoban.manage.api.service.TestApiService;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -11,6 +22,13 @@ import org.springframework.stereotype.Service;
@Service
public class TestServiceImpl implements TestApiService {
private static final Logger logger= LoggerFactory.getLogger(TestServiceImpl.class);
@Autowired
private QywxUserApiService qywxUserApiService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private SecretSettingService secretSettingService;
@Override
public String checkThread(String id, Long expireTime) {
logger.info("测试-start:{}",id);
......@@ -25,4 +43,28 @@ public class TestServiceImpl implements TestApiService {
logger.info("测试-end:{}",id);
return id;
}
@Override
public String listSelfQywxUser(String corpid,String secretVal, String dataId) {
long t = System.currentTimeMillis();
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 0);
logger.info("耗时为===============>{}毫秒",(System.currentTimeMillis()-t));
if (null != list) {
logger.info("微信获取部门成员数量为:{}",list.size());
}else {
logger.info("微信获取部门成员数量异常");
}
return "";
}
@Override
public String listAllQywxUser(String corpid,String secretVal, String dataId) {
long t = System.currentTimeMillis();
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 1);
logger.info("耗时为===============>{}毫秒",(System.currentTimeMillis()-t));
if (null != list) {
logger.info("微信获取部门成员数量为:{}",list.size());
}else {
logger.info("微信获取部门成员数量异常");
}
return "";
}
}
......@@ -2,7 +2,9 @@ package com.gic.haoban.manage.service.service.out.impl;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -39,12 +41,34 @@ public class WxEnterpriseRelatedApiServiceImpl implements WxEnterpriseRelatedApi
private StaffService staffService;
@Autowired
private StaffMapper staffMapper;
@Autowired
private EnterpriseService enterpriseService;
//获取门店详情
public boolean isEnterpriseOver(String eid) {
EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(eid);
if(enterprise == null || enterprise.getExpireTime() == null){
return false;
}
if(enterprise.getExpireTime().getTime() > System.currentTimeMillis()){
return false;
}
return true;
}
@Override
public List<EnterpriseDetailDTO> listEnterpriseByWxEnterpriseId(
String wxEnterpriseId) {
List<TabHaobanWxEnterpriseRelated> relatedList = wxEnterpriseRelatedMapper.listByWxenterpriseId(wxEnterpriseId);
List<EnterpriseDetailDTO> result = EntityUtil.changeEntityListByJSON(EnterpriseDetailDTO.class, relatedList);
if (CollectionUtils.isEmpty(result)){
return result;
}
// for (EnterpriseDetailDTO enterpriseDetailDTO : result) {
// String enterpriseId = enterpriseDetailDTO.getEnterpriseId();
// int gicAllCount = storeGroupService.gicDepartmentCount(enterpriseId);
......
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.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 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.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) {
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();
List<String> selfUserIdList = memberUnionidRelatedApiService.listSelfExterialList(wxEnterpriseId, wxUserId);
logger.info("selfUserIdList={}",selfUserIdList.size());
List<String> userIdList = memberUnionidRelatedApiService.listExterialList(wxEnterpriseId, wxUserId);
if(CollectionUtils.isEmpty(userIdList) || CollectionUtils.isEmpty(selfUserIdList)){
return;
}
memberUnionidRelatedApiService.cleanNoExsitFriend(wxEnterpriseId, wxUserId,JSON.toJSONString(userIdList));
logger.info("userIdList={}",userIdList.size());
if(CollectionUtils.isNotEmpty(selfUserIdList)){
List<TabHaobanPreDealLog> dealLogList = selfUserIdList.stream().map(externalUserId -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(externalUserId +"-"+ wxUserId);
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);
HashSet<String> hashSet = (HashSet<String>) dealLogList.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(dataPre.getTaskId(), hashSet, SyncTaskStatusEnum.self_friend_sync);
}
if(CollectionUtils.isNotEmpty(userIdList)){
List<TabHaobanPreDealLog> dealLogList = userIdList.stream().map(externalUserId -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(externalUserId +"-"+ wxUserId);
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(dealLogList);
HashSet<String> hashSet = (HashSet<String>) dealLogList.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(dataPre.getTaskId(), hashSet, SyncTaskStatusEnum.friend_sync);
}
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre),e);
reason = "成员好友处理异常";
dealFlag = false;
}finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), reason);
} else {
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), dataPre.getWxEnterpriseId());
}
// checkDepartmentTask(taskId);
}
}
@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) {
String key = "sync_wx_lock_";
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.friend_clerk.getVal());
if (!b) {
return;
}
logger.info("好友同步成功:{}", taskId);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
RedisUtil.delCache(key + syncTask.getWxEnterpriseId());
}
/**
* 放入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.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 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.haoban.manage.api.dto.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
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.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.redis.data.util.RedisUtil;
@Service
public class FriendMergeSyncOperation implements BaseSyncOperation{
private static final Logger logger = LoggerFactory.getLogger(FriendMergeSyncOperation.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;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "";
boolean dealFlag = true;
String wxUserId = dataPre.getpDataId();
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String taskId = dealParamMqDTO.getTaskId();
String key = dataPre.getDataId();
try {
String dataContent = dataPre.getDataContent();
ExternalUserDTO pojo = JSON.parseObject(dataContent, ExternalUserDTO.class);
StaffDTO staff = staffApiService.selectByUserIdAndEnterpriseId(wxUserId, wxEnterpriseId);
if(staff == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "成员不存在");
checkDepartmentTask(taskId);
return;
}
ClerkMainStoreRelatedDTO mainStore = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staff.getStaffId());
if(mainStore == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "主门店不存在");
checkDepartmentTask(taskId);
return;
}
StaffClerkRelationDTO staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staff.getStaffId(),mainStore.getStoreId());
if(staffClerkRelationDTO == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "未绑定导购");
checkDepartmentTask(taskId);
return;
}
if(pojo == null){
dealException(taskId, key, null, "好友不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setWxEnterpriseId(wxEnterpriseId);
pojo.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
pojo.setStoreId(mainStore.getStoreId());
pojo.setClerkId(staffClerkRelationDTO.getClerkId());
pojo.setWxUserId(wxUserId);
pojo.setStaffId(staffClerkRelationDTO.getStaffId());
String externalUserId = pojo.getExternalUserId();
ExternalUserDTO p = memberUnionidRelatedApiService.getExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if(p == null){
dealException(taskId, key, null, "好友不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setAvatar(p.getAvatar());
//新增导购和外部联系人关系
String clerkCode = staffClerkRelationDTO.getClerkCode();
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), clerkCode);
if(clerk == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "导购不存在");
checkDepartmentTask(taskId);
return;
}
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)){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "导购码不存在");
checkDepartmentTask(taskId);
return;
}
MemberDTO member = null;
if(clerk != null && StringUtils.isNotBlank(qrcodeParam)&&StringUtils.isNotBlank(pojo.getUnionId())){
member = memberOpenCardBusinessService.getMemberByQywxChannelParam(staffClerkRelationDTO.getEnterpriseId(),pojo.getUnionId(),"",pojo.getName(),pojo.getAvatar(),qrcodeParam);
}
if(member == null){
preDealService.updateStatusByDataId(taskId, key, PreDealStatusEnum.exception.getVal(), "会员不存在");
checkDepartmentTask(taskId);
return;
}
pojo.setMemberId(member.getMemberId());
String res = memberUnionidRelatedApiService.addExternal(pojo);
if(StringUtils.isBlank(res)){
dealSuccess(dealParamMqDTO.getTaskId(), dataPre.getDataId(), null, null);
}else{
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "好友不存在");
}
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre),e);
reason = "合并处理异常";
dealFlag = false;
}finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), reason);
}
checkDepartmentTask(taskId);
}
//
}
@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_merge.getVal());
if (!b) {
return;
}
logger.info("好友合并成功:{}", taskId);
int errorCount = preDealService.countByTaskId(taskId, PreDealTypeEnum.friend_merge.getVal(), 3);
int errorSelfCount = preDealService.countByTaskId(taskId, PreDealTypeEnum.self_friend.getVal(), 3);
int errorFriendCount = preDealService.countByTaskId(taskId, PreDealTypeEnum.friend.getVal(), 3);
if(errorCount > 0 || errorFriendCount > 0 || errorSelfCount > 0){
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.exception_compute.getVal());
}else{
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
}
}
}
package com.gic.haoban.manage.service.task;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
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 com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
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.pojo.ExternalUserPojo;
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.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
@Service
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;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "";
boolean dealFlag = true;
String wxEnterpriseId = dataPre.getWxEnterpriseId();
String wxUserId = dataPre.getpDataId();
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataContent();
ExternalUserDTO pojo = memberUnionidRelatedApiService.getExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if(pojo == null){
preDealService.updateStatusByDataId(taskId, dataPre.getDataId(), PreDealStatusEnum.exception.getVal(), "好友不存在");
checkStaffTask(taskId, wxUserId);
return;
}
JSONObject json = new JSONObject();
json.put("name", pojo.getName());
json.put("externalUserId", pojo.getExternalUserId());
json.put("addCreateTime", pojo.getAddCreateTime());
dealSuccess(taskId, dataPre.getDataId(),JSON.toJSONString(json),wxEnterpriseId);
try {
checkStaffTask(taskId, wxUserId);
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre),e);
reason = "第三方好友处理异常";
dealFlag = false;
}finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dataPre.getDataId(), dataPre.getEnterpriseId(), reason);
}
}
}
@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 dataContent, String wxEnterpriseId) {
preDealService.updateFriendStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal(), "成功",dataContent);
}
public void checkStaffTask(String taskId,String wxUserId) {
boolean flag = preDealService.checkStaffTaskByTaskIdAndPDataId(taskId,wxUserId);
logger.info("checkStaffTask={}",flag);
if(flag){
List<TabHaobanPreDealLog> list = preDealService.listByPDataIdAndTaskId(taskId, wxUserId);
if(CollectionUtils.isNotEmpty(list)){
Map<String,ExternalUserDTO> map = new HashMap<>();
List<TabHaobanPreDealLog> dealLogList = new ArrayList<>();
for (TabHaobanPreDealLog tabHaobanPreDealLog : list) {
String dataContent = tabHaobanPreDealLog.getDataContent();
if(StringUtils.isNotBlank(dataContent) && dataContent.startsWith("{")){
ExternalUserDTO json = JSON.parseObject(dataContent, ExternalUserDTO.class);
String addCreateTime = json.getAddCreateTime();
String name = json.getName();
String key = name +"-"+wxUserId +"-"+ addCreateTime;
String unionId = json.getUnionId();
String wxEnterpriseId = tabHaobanPreDealLog.getWxEnterpriseId();
String externalUserId = json.getExternalUserId();
ExternalUserDTO dto = map.get(key);
if(dto != null){
if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.self_friend.getVal()){
dto.setUnionId(unionId);
}else if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.friend.getVal()){
dto.setExternalUserId(externalUserId);
}
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(key);
dealLog.setpDataId(wxUserId);
dealLog.setDataType(PreDealTypeEnum.friend_merge.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setDataContent(JSONObject.toJSONString(dto));
dealLog.setWxEnterpriseId(wxEnterpriseId);
dealLogList.add(dealLog);
}else{
map.put(key, json);
}
}
}
logger.info("dealLogList={}",JSON.toJSONString(dealLogList));
if(CollectionUtils.isNotEmpty(dealLogList)){
preDealService.insert(dealLogList);
HashSet<String> hashSet = (HashSet<String>) dealLogList.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, hashSet, SyncTaskStatusEnum.merge_friend_sync);
}
}
}
}
@Override
public void checkDepartmentTask(String taskId) {
}
/**
* 放入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();
}
});
}
}
......@@ -31,6 +31,7 @@ import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.vdurmont.emoji.EmojiParser;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -50,6 +51,7 @@ import java.util.stream.Collectors;
@Service
public class QywxGroupSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(QywxGroupSyncOperation.class);
private static final int pageSize = 500;
@Autowired
private DepartmentService departmentService;
......@@ -189,25 +191,77 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretTypeEnum.HAOBAN_HELP.getVal());
if (null == secretSetting||secretSetting.getCheckFlag()==0) {
logger.info("没有配置secret:{},{}",taskId,wxEnterpriseId);
return ;
}
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dataId, 0);
TabHaobanPreDealLog preData = preDealService.getByDataId(taskId, dataId, PreDealTypeEnum.group.getVal(), -1);
String pDataId = preData.getpDataId();
if("0".equals(pDataId)){
//根级部门
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal(), dataId, 1);
if (null == list) {
logger.info("微信获取部门成员异常:{},{}",taskId,dataId);
return;
}
logger.info("是否已经进来了,进来");
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(list)) {
List<String> dataList = preDealService.listDataIdByTaskIdAndDataType(taskId, PreDealTypeEnum.clerk.getVal());
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> !dataList.contains(mid.getUserid())
).map(userDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(userDTO.getUserid());
dealLog.setpDataId(dataId);
dealLog.setDataType(PreDealTypeEnum.clerk.getVal());
dealLog.setStatusFlag(0);
dealLog.setDataContent(EmojiFilterUtil.removeAllEmoji(userDTO.getName()));
dealLog.setTaskId(taskId);
dealLog.setWxEnterpriseId(wxEnterpriseId);
dealLog.setEnterpriseId(enterpriseId);
return dealLog;
}).collect(Collectors.toList());
//插入不存在的我们pre表的企业微信数据
preDealService.insert(preDealLogList);
}
}
boolean b = preDealService.updateStatusByDataId(taskId, dataId,PreDealTypeEnum.group.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<TabHaobanPreDealLog> preList = preDealService.listReByPDataId(taskId, dataId);
if (CollectionUtils.isNotEmpty(preList)) {
Set<String> mid = preList.stream().map(tab -> tab.getDataId()).collect(Collectors.toSet());
dealDepartmentToMq(taskId, mid, SyncTaskStatusEnum.group_sync);
} else {
// checkSelfDepartmentTask(taskId,wxEnterpriseId,enterpriseId,wxEnterpriseDTO.getCorpid(), secretSetting.getSecretVal());
checkDepartmentTask(taskId);
}
}
private void checkSelfDepartmentTask(String taskId,String wxEnterpriseId,String enterpriseId,String corpid,String secretVal) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.group.getVal());
if (!b) {
return;
}
//TODO 插入pre-clerk
//获取根节点
String dataId = preDealService.getRootDataIdByWxEnterpriseIdAndTaskId(wxEnterpriseId, taskId);
List<UserDTO> list = this.qywxUserApiService.listSelfDepartmentUser(corpid, secretVal, dataId, 1);
if (null == list) {
logger.info("微信获取部门成员异常:{},{}",taskId,dataId);
return;
}
logger.info("是否已经进来了,进来");
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(list)) {
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> {
boolean flag = preDealService.existDataId(taskId, mid.getUserid());
if (flag) {
return false;
}
return true;
}).map(userDTO -> {
List<String> dataList = preDealService.listDataIdByTaskIdAndDataType(taskId, PreDealTypeEnum.clerk.getVal());
List<TabHaobanPreDealLog> preDealLogList = list.stream().filter(mid -> !dataList.contains(mid.getUserid())
).map(userDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(userDTO.getUserid());
dealLog.setpDataId(dataId);
......@@ -219,20 +273,20 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
dealLog.setEnterpriseId(enterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(preDealLogList);
}
boolean b = preDealService.updateStatusByDataId(taskId, dataId,PreDealTypeEnum.group.getVal(), PreDealStatusEnum.computed.getVal(), "成功");
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<TabHaobanPreDealLog> preList = preDealService.listReByPDataId(taskId, dataId);
if (CollectionUtils.isNotEmpty(preList)) {
Set<String> mid = preList.stream().map(tab -> tab.getDataId()).collect(Collectors.toSet());
dealDepartmentToMq(taskId, mid, SyncTaskStatusEnum.group_sync);
} else {
checkDepartmentTask(taskId);
//插入不存在的我们pre表的企业微信数据
int count = preDealLogList.size();
int pre = count/1000+1;
int i= 0;
while(i<pre){
i++;
int fromIndex = (i-1)*1000;
int toIndex = (count-fromIndex) > 1000 ? (fromIndex+1000):count;
List<TabHaobanPreDealLog>subList = preDealLogList.subList(fromIndex, toIndex);
preDealService.insert(subList);
}
}
//处理导购任务
checkDepartmentTask(taskId);
}
@Override
......@@ -245,6 +299,7 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
String key = "haoban_sync_department_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.group_sync.getVal())) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.clerk_sync.getVal());
......@@ -259,8 +314,6 @@ public class QywxGroupSyncOperation implements BaseSyncOperation {
}
RedisUtil.unlock(key);
}
/**
* 放入mq处理部门数据
*
......
package com.gic.haoban.manage.service.task;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
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 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.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
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.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.mq.sdk.GicMQClient;
@Service
public class SelfFriendSyncOperation implements BaseSyncOperation{
private static final Logger logger = LoggerFactory.getLogger(SelfFriendSyncOperation.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;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
String reason = "";
boolean dealFlag = true;
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){
dealException(taskId, dataPre.getDataId(), null, "好友不存在");
checkStaffTask(taskId, wxUserId);
return;
}
JSONObject json = new JSONObject();
json.put("name", pojo.getName());
json.put("unionId", pojo.getUnionId());
json.put("addCreateTime", pojo.getAddCreateTime());
try {
dealSuccess(taskId, dataPre.getDataId(),json.toJSONString(),wxEnterpriseId);
checkStaffTask(taskId, wxUserId);
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:{},{}", JSONObject.toJSONString(dataPre),e);
reason = "自建应用好友处理异常";
dealFlag = false;
}finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dataPre.getDataId(), dataPre.getEnterpriseId(), reason);
}
}
}
@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 dataContent, String wxEnterpriseId) {
preDealService.updateFriendStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal(), "成功",dataContent);
}
public void checkStaffTask(String taskId,String wxUserId) {
boolean flag = preDealService.checkStaffTaskByTaskIdAndPDataId(taskId,wxUserId);
logger.info("checkStaffTask={}",flag);
if(flag){
List<TabHaobanPreDealLog> list = preDealService.listByPDataIdAndTaskId(taskId, wxUserId);
if(CollectionUtils.isNotEmpty(list)){
List<TabHaobanPreDealLog> dealLogList = new ArrayList<>();
Map<String,ExternalUserDTO> map = new HashMap<>();
for (TabHaobanPreDealLog tabHaobanPreDealLog : list) {
String dataContent = tabHaobanPreDealLog.getDataContent();
if(StringUtils.isNotBlank(dataContent) && dataContent.startsWith("{")){
ExternalUserDTO json = JSON.parseObject(dataContent, ExternalUserDTO.class);
String addCreateTime = json.getAddCreateTime();
String name = json.getName();
String key = name +"-" +wxUserId +"-"+ addCreateTime;
String unionId = json.getUnionId();
String wxEnterpriseId = tabHaobanPreDealLog.getWxEnterpriseId();
ExternalUserDTO dto = map.get(key);
if(dto != null){
if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.self_friend.getVal()){
dto.setUnionId(unionId);
}else if(tabHaobanPreDealLog.getDataType() == PreDealTypeEnum.friend.getVal()){
dto.setExternalUserId(tabHaobanPreDealLog.getDataId());
}
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(key);
dealLog.setpDataId(wxUserId);
dealLog.setDataType(PreDealTypeEnum.friend_merge.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setDataContent(JSONObject.toJSONString(dto));
dealLog.setWxEnterpriseId(wxEnterpriseId);
dealLogList.add(dealLog);
}else{
map.put(key, json);
}
}
}
logger.info("dealLogList={}",JSON.toJSONString(dealLogList));
if(CollectionUtils.isNotEmpty(dealLogList)){
preDealService.insert(dealLogList);
HashSet<String> hashSet = (HashSet<String>) dealLogList.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, hashSet, SyncTaskStatusEnum.merge_friend_sync);
}
}
}
}
@Override
public void checkDepartmentTask(String taskId) {
}
/**
* 放入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();
}
});
}
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));
}
}
......@@ -37,6 +37,7 @@
</value>
</property>
</bean>
<!-- <bean class="com.gic.sql.interceptor.MybatisSqlInterceptor"/> -->
</array>
</property>
</bean>
......
......@@ -20,7 +20,7 @@
update_time
</sql>
<sql id="Base_Column_List_data">
id, wx_enterprise_id,enterprise_id, data_id,data_content, p_data_id, task_id, data_type, status_flag, create_time,
id, wx_enterprise_id,enterprise_id, data_id,data_content, p_data_id, task_id, data_type, status_flag, create_time,reason,
update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
......@@ -318,6 +318,15 @@
and data_type=#{dataType}
</if>
</select>
<select id="listDataIdByTaskIdAndDataType" resultType="java.lang.String">
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and data_type =#{dataType}
</select>
<select id="getLastPreDataByTaskId" resultMap="BaseResultMap">
select
......@@ -325,4 +334,43 @@
from tab_haoban_pre_deal_log
where task_id = #{taskId,jdbcType=INTEGER} order by update_time desc limit 1
</select>
<select id="getRootDataIdByWxEnterpriseIdAndTaskId" resultType="java.lang.String">
select
data_id
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =0
and wx_enterprise_id =#{wxEnterpriseId} limit 1
</select>
<update id="updateFriendStatusByDataId">
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
reason=#{reason},
data_content = #{dataContent},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select id="countFailStaffTaskByTaskIdAndPDataId" resultType="integer">
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =#{pDataId}
and status_flag != 2
and status_flag != 3
</select>
<select id="listByPDataIdAndTaskId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List_data"/>
from tab_haoban_pre_deal_log
where task_id = #{taskId}
and p_data_id =#{pDataId}
</select>
</mapper>
\ No newline at end of file
......@@ -120,6 +120,17 @@
select
<include refid="Base_Column_List"/>
from tab_haoban_sync_task
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR} order by update_time desc
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and task_type != 4
order by update_time desc
</select>
<select id="listTaskByType" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_sync_task
where status_flag = 0
and task_type = #{taskType}
group by wx_enterprise_id
</select>
</mapper>
\ No newline at end of file
......@@ -138,4 +138,14 @@
and status_flag = 1
limit 1
</select>
<select id="listByWxEnterpriseId" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from tab_haoban_clerk_main_store_related
where 1
and wx_enterprise_id = #{wxEnterpriseId}
and status_flag = 1
group by staff_id
</select>
</mapper>
\ No newline at end of file
......@@ -332,4 +332,15 @@
and wx_enterprise_id = #{wxEnterpriseId}
and status_flag = 1
</select>
<select id="getByMemberId" resultMap="BaseResultMap" parameterType="java.lang.String" >
select
<include refid="Base_Column_List" />
from tab_haoban_external_clerk_related
where wx_user_id = #{wxUserId}
and member_id = #{memberId}
and status_flag = 1
and external_user_id is not null
limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -136,4 +136,5 @@
where staff_id = #{staffId,jdbcType=VARCHAR} and member_id = #{memberId,jdbcType=VARCHAR}
and status =1
</select>
</mapper>
\ No newline at end of file
......@@ -359,4 +359,13 @@
and status_flag = 1
</select>
<select id="listByWxEnterpriseId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_haoban_staff_clerk_relation
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and status_flag =1
group by wx_user_id
</select>
</mapper>
\ No newline at end of file
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSON;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
public class CountDownLatchTest implements Runnable{
private static Logger logger= LoggerFactory.getLogger(CountDownLatchTest.class);
final AtomicInteger number = new AtomicInteger();
volatile boolean bol = false;
private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
private String wxUserId;
private CountDownLatch countDownLatch;
public CountDownLatchTest(MemberUnionidRelatedApiService memberUnionidRelatedApiService,String wxUserId,CountDownLatch countDownLatch){
this.memberUnionidRelatedApiService = memberUnionidRelatedApiService;
this.wxUserId = wxUserId;
this.countDownLatch = countDownLatch;
}
@Override
public void run() {
try {
// 线程等待
countDownLatch.await();
long startTime = System.currentTimeMillis();
List<String> res = memberUnionidRelatedApiService.listSelfExterialList("ca66a01b79474c40b3e7c7f93daf1a3b", wxUserId);
System.out.println(JSON.toJSONString(res));
long endTime = System.currentTimeMillis();
System.out.println(Thread.currentThread().getName() + " ended at: " + endTime + ", cost: " + (endTime - startTime) + " ms.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
import cn.hutool.core.thread.ConcurrencyTester;
import cn.hutool.core.thread.ThreadUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.SyncSingleDealDTO;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
......@@ -5,15 +12,26 @@ import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.service.service.StaffService;
import com.gic.haoban.manage.service.service.TestService;
import com.gic.redis.data.util.RedisUtil;
import com.gic.wechat.api.dto.qywx.QywxExternalcontactDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.redisson.api.RLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class DealSyncTest {
......@@ -68,60 +86,5 @@ public class DealSyncTest {
// 启动多个线程
// countDownLatch.countDown();
}
@Test
public void test2() {
String key="test-my";
RedisUtil.setLocalCache(key,"111",0L);
{
Object localCache = RedisUtil.getLocalCache(key,false);
RedisUtil.setLocalCache(key,"222",0L);
logger.info("第一次:{}", localCache);
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
{
Object localCache = RedisUtil.getLocalCache(key,false);
System.out.println("第2次:{}"+localCache);
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
{
Object localCache = RedisUtil.getLocalCache(key,false);
System.out.println("第3次:{}"+localCache);
try {
Thread.sleep(4000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
int i=10;
while (i-->0) {
Object localCache = RedisUtil.getLocalCache(key, false);
System.out.println("第4次:{}"+localCache);
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// RedissonClient redisClient = RedisUtil.getRedisClient();
// RRateLimiter rateLimiter = redisClient.getRateLimiter(key);
// boolean b = rateLimiter.trySetRate(RateType.OVERALL, 2, 1, RateIntervalUnit.SECONDS);
// if (b) {
// ConcurrencyTester tester = ThreadUtil.concurrencyTest(2, () -> {
// System.out.println("=============");
// boolean b1 = rateLimiter.tryAcquire(0, TimeUnit.SECONDS);
// System.out.println(System.currentTimeMillis()+"===="+b1);
// });
// tester.getInterval();
// }
}
}
import java.util.List;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
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);
}
}
}
......@@ -7,14 +7,16 @@ import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkNewService;
import com.gic.clerk.api.service.ClerkService;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.enterprise.api.dto.*;
import com.gic.enterprise.api.service.*;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.PageResult;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.common.utils.HaobanResponse;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.enums.BindTypeEnum;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.api.service.*;
......@@ -69,6 +71,9 @@ public class StaffController extends WebBaseController{
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService;
@Autowired
private EnterpriseService enterpriseService;
@RequestMapping("staff-add")
public HaobanResponse staffAdd(StaffDTO staffDTO,String departmentIds){
......@@ -302,6 +307,20 @@ public class StaffController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1,b);
}
//获取门店详情
public boolean isEnterpriseOver(String eid) {
com.gic.enterprise.api.dto.EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(eid);
if(enterprise == null || enterprise.getExpireTime() == null){
return false;
}
if(enterprise.getExpireTime().getTime() > System.currentTimeMillis()){
return false;
}
return true;
}
/**
* 成员关联关系搜索接口
* @param search
......@@ -318,7 +337,10 @@ public class StaffController extends WebBaseController{
if (CollectionUtil.isEmpty(list)) {
return resultResponse(HaoBanErrCode.ERR_10010);
}
List<String> enterpriseIds = list.stream().map(EnterpriseDetailDTO::getEnterpriseId).collect(Collectors.toList());
List<String> enterpriseIds = list.stream().filter(dto->{
boolean over = isEnterpriseOver(dto.getEnterpriseId());
return !over;
}).map(EnterpriseDetailDTO::getEnterpriseId).collect(Collectors.toList());
List<ClerkDTO> clerkDTOList = clerkNewService.listClerkByEnterpriseIdAndSearch(enterpriseIds, search);
List<ClerkInfoVo> retList = EntityUtil.changeEntityListByJSON(ClerkInfoVo.class, clerkDTOList);
......
......@@ -12,10 +12,12 @@ import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.api.service.TestApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.qo.QywxXcxSendMessageQo;
import com.gic.redis.data.util.GicRateLimiter;
import com.gic.redis.data.util.RedisUtil;
import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -140,4 +142,29 @@ public class TestController extends WebBaseController {
Page<MaidianLogDTO> page = maidianLogApiService.queryList(hbversion, pageInfo);
return resultResponse(HaoBanErrCode.ERR_1,page);
}
@RequestMapping("/deal-slef-qywx-sys-department")
public HaobanResponse dealSys1(String corpid,String secretVal,String dataId) {
testApiService.listSelfQywxUser(corpid, secretVal, dataId);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("/deal-all-qywx-sys-department")
public HaobanResponse dealSys2(String corpid,String secretVal,String dataId) {
testApiService.listAllQywxUser(corpid, secretVal, dataId);
return resultResponse(HaoBanErrCode.ERR_1);
}
@RequestMapping("/test-limiter")
public HaobanResponse testLimiter(String key,String eid) {
if (StringUtils.isAnyBlank(key,eid)) {
return resultResponse(HaoBanErrCode.ERR_5);
}
GicRateLimiter instance = GicRateLimiter.getInstance("haoban-manage3-web");
Long acquire = instance.acquire(key, eid);
if (acquire == 0L) {
return resultResponse(HaoBanErrCode.ERR_13);
}
return resultResponse(HaoBanErrCode.ERR_1);
}
}
......@@ -3,7 +3,9 @@ package com.gic.haoban.manage.web.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.druid.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.DateUtil;
import com.gic.enterprise.api.dto.EnterpriseAndUserDTO;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.dto.StoreDTO;
......@@ -19,6 +21,7 @@ import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
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.StaffApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
......@@ -31,6 +34,9 @@ import com.gic.haoban.manage.web.vo.EnterpriseSearchVO;
import com.gic.haoban.manage.web.vo.LoginVO;
import com.gic.haoban.manage.web.vo.SecretSettingVO;
import com.gic.haoban.manage.web.vo.StoreVo;
import com.gic.quartz.api.dto.QuartzTaskDTO;
import com.gic.quartz.api.service.QuartzService;
import com.gic.redis.data.util.RedisUtil;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.gic.wechat.token.api.dto.QywxCorpInfoDTO;
......@@ -67,13 +73,17 @@ public class WxEnterpriseController extends WebBaseController{
@Autowired
private StaffApiService staffApiService;
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
@Autowired
private QuartzService quartzService;
//授权企业列表
@IgnoreLogin
@RequestMapping("wx-enterprise-list")
public HaobanResponse wxEnterpriseList() {
// String wxEnterpriseId = "123456";
// String wxEnterpriseId = "ca66a01b79474c40b3e7c7f93daf1a3b";
LoginVO login = (LoginVO) AuthRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
List<EnterpriseDetailDTO> list = wxEnterpriseRelatedApiService.listEnterpriseByWxEnterpriseId(wxEnterpriseId);
......@@ -102,7 +112,9 @@ public class WxEnterpriseController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1);
}
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseApiService.getOne(wxEnterpriseId);
if(wxEnterpriseDTO == null){
return resultResponse(HaoBanErrCode.ERR_100018);
}
wxEnterpriseDTO.setSmallVersion("免费版");
wxEnterpriseDTO.setStoreTotal(departmentApiService.totalStoreCountByEnterpriseId(wxEnterpriseId));
return resultResponse(HaoBanErrCode.ERR_1,wxEnterpriseDTO);
......@@ -463,7 +475,7 @@ public class WxEnterpriseController extends WebBaseController{
listRet.forEach(secretSettingVO -> {
if ((!StringUtils.isEmpty(secretSettingVO.getEnterpriseId()))&&(!secretSettingVO.getEnterpriseId().equals("-1"))) {
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(secretSettingVO.getEnterpriseId());
secretSettingVO.setEnterpriseName(enterpriseDTO.getBrandName());
secretSettingVO.setEnterpriseName(enterpriseDTO == null?"":enterpriseDTO.getBrandName());
}
});
}
......@@ -501,6 +513,73 @@ public class WxEnterpriseController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1,true);
}
/**
* 刷新企业微信好友
* @return
*/
@RequestMapping("/fresh-wx-friend")
public HaobanResponse freshWxFriend(){
LoginVO login = (LoginVO) AuthRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String dayKey = "haoban_fresh-wx-friend-day" + wxEnterpriseId + DateUtil.dateToStr(new Date(), "yyyy-MM-dd");
String monthKey = "haoban_fresh-wx-friend-month" + wxEnterpriseId + DateUtil.dateToStr(new Date(), "yyyy-MM");
String dateKey = "haoban_fresh-wx-friend-date" + wxEnterpriseId;
Integer dayCount = RedisUtil.getCache(dayKey) == null?0:Integer.parseInt(RedisUtil.getCache(dayKey).toString());
Integer monthCount = RedisUtil.getCache(monthKey) == null?0:Integer.parseInt(RedisUtil.getCache(monthKey).toString());
if(dayCount >= 1){
return resultResponse(HaoBanErrCode.ERR_100019);
}
if(monthCount >= 3){
return resultResponse(HaoBanErrCode.ERR_100020);
}
String taskId = dealSyncOperationApiService.createWxFriendTask(wxEnterpriseId, "刷新企微好友", login.getStaffDTO().getStaffId(), "刷新企微好友");
if(StringUtils.isEmpty(taskId)){
return resultResponse(HaoBanErrCode.ERR_100021);
}
// dealSyncOperationApiService.dealWxFriendClerk(taskId, wxEnterpriseId);
RedisUtil.setCache(dayKey, dayCount+1);
RedisUtil.setCache(monthKey, monthCount+1);
RedisUtil.setCache(dateKey, DateUtil.dateToStr(new Date(),DateUtil.FORMAT_DATETIME_19));
return resultResponse(HaoBanErrCode.ERR_1);
}
private QuartzTaskDTO buildQuartzTaskDTO(String id) {
QuartzTaskDTO taskDTO = new QuartzTaskDTO();
taskDTO.setReferId(id);
taskDTO.setTaskMethod("quartWxFriendClerk");
taskDTO.setTaskService("com.gic.haoban.manage.api.service.DealSyncOperationApiService");
return taskDTO;
}
/**
* 获取企业微信好友刷新时间
* @return
*/
@RequestMapping("/get-fresh-detail")
public HaobanResponse getFreshDetail(){
LoginVO login = (LoginVO) AuthRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String dateKey = "haoban_fresh-wx-friend-date" + wxEnterpriseId;
RedisUtil.getCache(dateKey);
return resultResponse(HaoBanErrCode.ERR_1,RedisUtil.getCache(dateKey));
}
/**
* 获取刷新好友开关接口
* @return
*/
@RequestMapping("/get-fresh-on-off")
public HaobanResponse getFreshOnOff(){
LoginVO login = (LoginVO) AuthRequestUtil.getLoginUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String dateKey = "haoban_fresh-wx-friend-enterprise";
Object value = RedisUtil.getCache(dateKey);
if(value != null){
String valueStr = value.toString();
return resultResponse(HaoBanErrCode.ERR_1,valueStr.contains(wxEnterpriseId));
}
return resultResponse(HaoBanErrCode.ERR_1,false);
}
}
......@@ -57,6 +57,11 @@ public enum HaoBanErrCode {
ERR_11(11, "验证码发送失败"),
/**
* 验证码发送失败
*/
ERR_13(13, "客官,当前访问人数较多,请稍后再试"),
/**
* 验证码校验失败
*/
ERR_12(12, "验证码校验失败"),
......@@ -105,6 +110,11 @@ public enum HaoBanErrCode {
ERR_100016(100016,"审核失败"),
ERR_100017(100017,"secret已经设置过"),
ERR_100018(100018,"企业不存在"),
ERR_100019(100019,"一天只能刷新1次"),
ERR_100020(100020,"一个月只能刷新3次"),
ERR_100021(100021,"创建任务失败"),
ERR_DEFINE(-888, "自定义错误"),
ERR_OTHER(-999, "未知错误code");
......
package com.gic.haoban.manage.web.init;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.DateUtil;
import com.gic.quartz.api.dto.QuartzTaskDTO;
import com.gic.quartz.api.service.QuartzService;
import java.util.Calendar;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.BeansException;
......@@ -23,22 +28,48 @@ public class MyApplicationContextAware implements ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
log.info("【定时开始】----------------------");
QuartzTaskDTO taskDTO = buildQuartzMessageDTO("haoban-message-status-time");
taskDTO.setTaskParam("");
// QuartzTaskDTO taskDTO = buildQuartzMessageDTO("haoban-message-status-time3");
// taskDTO.setTaskParam("");
// taskDTO.setTaskStatus(1);
// taskDTO.setTaskTimeInfo("0 30 1 * * *");
//// taskDTO.setTaskTimeInfo("0 0/5 * * * *");
// quartzService.addOrUpdateQuartzTask(taskDTO);
QuartzTaskDTO memberExportTask =buildMemberExportQuartzTaskDTO("haoban-member-export3");
memberExportTask.setTaskParam("-1");
memberExportTask.setTaskStatus(1);
memberExportTask.setTaskTimeInfo("0 0/15 * * * *");
quartzService.addOrUpdateQuartzTask(memberExportTask);
QuartzTaskDTO taskDTO = buildQuartzTaskDTO("hb-fresh-wx-friend");
taskDTO.setTaskParam("-1");
taskDTO.setTaskStatus(1);
taskDTO.setTaskTimeInfo("0 30 1 * * *");
// taskDTO.setTaskTimeInfo("0 0/5 * * * *");
taskDTO.setTaskTimeInfo("0 0 4 * * *");
quartzService.addOrUpdateQuartzTask(taskDTO);
}
private QuartzTaskDTO buildQuartzMessageDTO(String id) {
QuartzTaskDTO taskDTO = new QuartzTaskDTO();
taskDTO.setReferId(id);
taskDTO.setTaskMethod("quartzUpdateMessageStatus");
taskDTO.setTaskService("com.gic.haoban.app.customer.service.api.service.MessageLogApiService");
return taskDTO;
// private QuartzTaskDTO buildQuartzMessageDTO(String id) {
// QuartzTaskDTO taskDTO = new QuartzTaskDTO();
// taskDTO.setReferId(id);
// taskDTO.setTaskMethod("quartzUpdateMessageStatus");
// taskDTO.setTaskService("com.gic.haoban.app.customer.service.api.service.MessageLogApiService");
// return taskDTO;
// }
private QuartzTaskDTO buildQuartzTaskDTO(String id) {
QuartzTaskDTO taskDTO = new QuartzTaskDTO();
taskDTO.setReferId(id);
taskDTO.setTaskMethod("quartWxFriendClerk");
taskDTO.setTaskService("com.gic.haoban.manage.api.service.DealSyncOperationApiService");
return taskDTO;
}
private QuartzTaskDTO buildMemberExportQuartzTaskDTO(String id) {
QuartzTaskDTO taskDTO = new QuartzTaskDTO();
taskDTO.setReferId(id);
taskDTO.setTaskMethod("quartzMemberExport");
taskDTO.setTaskService("com.gic.haoban.app.customer.service.api.service.MemberExportApiService");
return taskDTO;
}
}
......@@ -10,6 +10,8 @@ import com.gic.haoban.manage.web.auth.AuthRequestUtil;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.vo.LoginVO;
//import com.gic.redis.data.util.GicRateLimiter;
import com.gic.redis.data.util.GicRateLimiter;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -37,7 +39,7 @@ public class WebInterceptor extends HandlerInterceptorAdapter {
// @Autowired
// private ClerkRightManageService clerkRightManageService;
private static String MOUDLE="haoban-manage3-web";
private void errorResult(HttpServletResponse httpServletResponse, HaoBanErrCode errCode) {
HaobanResponse response = new HaobanResponse();
......@@ -98,6 +100,17 @@ public class WebInterceptor extends HandlerInterceptorAdapter {
if (loginUser.getStaffDTO() != null) {
httpServletRequest.setAttribute("staffDTO", loginUser.getStaffDTO());
}
String wxEnterpriseId = loginUser.getWxEnterpriseId();
GicRateLimiter instance = GicRateLimiter.getInstance(MOUDLE);
Long acquire = instance.acquire(requestURI, wxEnterpriseId);
logger.info("限流返回值:{},{}",requestURI,acquire);
if (acquire==0L) {
this.errorResult(httpServletResponse, HaoBanErrCode.ERR_13);
logger.info("限流!");
return false;
}
return true;
}
......
......@@ -5,6 +5,7 @@ import java.util.ArrayList;
import java.util.List;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -32,6 +33,7 @@ import com.gic.haoban.manage.api.service.AuditApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.api.service.StaffDepartmentRelatedApiService;
import com.gic.haoban.manage.web.anno.HttpLimit;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.vo.AuditVO;
......@@ -180,6 +182,7 @@ public class AuditController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1,vo);
}
//审核,1同意,2拒绝,3取消审核
@HttpLimit
@RequestMapping("clerk-audit")
public HaobanResponse clerkAudit(String auditId,String auditReason,Integer auditStatus,String wxEnterpriseId,String staffId){
if(StringUtils.isAnyBlank(auditId,wxEnterpriseId)){
......
......@@ -72,6 +72,8 @@ public class ClerkController extends WebBaseController{
private ClerkNewService clerkNewService;
@Autowired
private AuditSettingApiService auditSettingApiService;
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
//选择成员列表
@RequestMapping("/staff-list")
public HaobanResponse staffList(String storeId) {
......@@ -394,13 +396,20 @@ public class ClerkController extends WebBaseController{
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());
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);
// logger.info("【刷下微信好友】{},{},{}",RouterConstant.FRESH_WX_FRIEND_SERVICENAME,RouterConstant.INIT_FRESH_WX_FRIEND_METHODNAME,json.toJSONString());
String taskName = "刷新企业微信好友("+staff.getStaffName()+")";
String taskId = dealSyncOperationApiService.createWxFriendSingleTask(wxEnterpriseId, taskName, staffId, staff.getStaffName());
if(StringUtils.isNotBlank(taskId)){
dealSyncOperationApiService.dealWxFriendClerkSingle(taskId,wxUserId,staffId,wxEnterpriseId);
}else{
return resultResponse(HaoBanErrCode.ERR_999);
}
// 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{
......@@ -408,6 +417,21 @@ public class ClerkController extends WebBaseController{
}
return resultResponse(HaoBanErrCode.ERR_1);
}
//获取门店详情
public boolean isEnterpriseOver(String eid) {
EnterpriseDTO enterprise = enterpriseService.getEnterpriseByEid(eid);
if(enterprise == null || enterprise.getExpireTime() == null){
return false;
}
if(enterprise.getExpireTime().getTime() > System.currentTimeMillis()){
return false;
}
return true;
}
//精确查,根据手机号或者code,查找
@RequestMapping("query-clerk-list-by-code")
public HaobanResponse queryClerkListByCode(String keyword,String wxEnterpriseId){
......@@ -418,7 +442,10 @@ public class ClerkController extends WebBaseController{
if(list == null || list.isEmpty()){
return resultResponse(HaoBanErrCode.ERR_1);
}
List<String> enterpriseIdList = list.stream().map(s->s.getEnterpriseId()).collect(Collectors.toList());
List<String> enterpriseIdList = list.stream().filter(s->{
boolean over = isEnterpriseOver(s.getEnterpriseId());
return !over;
}).map(s->s.getEnterpriseId()).collect(Collectors.toList());
List<ClerkDTO> clerkList = clerkNewService.listClerkByEnterpriseIdAndSearch(enterpriseIdList, keyword);
List<ClerkStoreVO> clerkStoreList = new ArrayList<>();
if(CollectionUtil.isEmpty(clerkList)){
......@@ -458,6 +485,7 @@ public class ClerkController extends WebBaseController{
return resultResponse(HaoBanErrCode.ERR_1,clerkStoreList);
}
//绑定
@HttpLimit
@RequestMapping("bind-staff")
public HaobanResponse bindStaff(String clerkId,String staffId ,Integer auditType){
if(StringUtils.isAnyBlank(clerkId,staffId)){
......
......@@ -102,6 +102,11 @@ public class StoreController extends WebBaseController{
ClerkMainStoreRelatedDTO mainDTO = clerkMainStoreRelatedApiService.getWxEnterpriseIdAndStaffId(wxEnterpriseId, staffId);
String storeId = mainDTO == null?"":mainDTO.getStoreId();
for (StaffClerkRelationDTO staffClerkRelationDTO : bindRelationList) {
boolean enterpriseOver = isEnterpriseOver(staffClerkRelationDTO.getStoreId());
if (enterpriseOver) {
logger.info("该企业过期了:{},{},{}",staffId,staffClerkRelationDTO.getEnterpriseId(),staffClerkRelationDTO.getStoreId());
continue;
}
ClerkDTO clerk = clerkService.getClerkByClerkCode(staffClerkRelationDTO.getEnterpriseId(), staffClerkRelationDTO.getClerkCode());
if(clerk != null){
StoreDTO store = storeService.getStore(clerk.getStoreId());
......
......@@ -61,6 +61,6 @@
<dubbo:reference interface="com.gic.clerk.api.service.ClerkNewService" id="clerkNewService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.DealSyncOperationApiService" id="dealSyncOperationApiService"/>
</beans>
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