Commit 987a3f82 by 徐高华

Merge remote-tracking branch 'origin/ferture/四月迭代需求' into feature/自建应用验证

Conflicts:
	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/impl/WelcomeSendServiceImpl.java
parents afd746c7 94207e58
package com.gic.haoban.manage.api.dto;
import java.io.Serializable ;
/**
*
* @ClassName: TabHaobanExternalMemberLog
* @Description: TODO
* @Author 徐高华
* @Date 2023年04月04日 10:19:47
* @Modify
* @CopyRight
*/
public class ExternalMemberLogDTO implements Serializable{
private static final long serialVersionUID = 1709395027793900L;
private Long logId;
private String enterpriseId;
private String unionid;
private String relationKey;
private Integer deleteFlag;
private java.util.Date createTime;
private java.util.Date updateTime;
/**1有效 0无效*/
private Integer statusFlag;
private String memberId ;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setLogId(Long logId){
this.logId = logId;
}
public Long getLogId(){
return logId;
}
public void setEnterpriseId(String enterpriseId){
this.enterpriseId = enterpriseId;
}
public String getEnterpriseId(){
return enterpriseId;
}
public void setUnionid(String unionid){
this.unionid = unionid;
}
public String getUnionid(){
return unionid;
}
public void setRelationKey(String relationKey){
this.relationKey = relationKey;
}
public String getRelationKey(){
return relationKey;
}
public void setDeleteFlag(Integer deleteFlag){
this.deleteFlag = deleteFlag;
}
public Integer getDeleteFlag(){
return deleteFlag;
}
public void setCreateTime(java.util.Date createTime){
this.createTime = createTime;
}
public java.util.Date getCreateTime(){
return createTime;
}
public void setUpdateTime(java.util.Date updateTime){
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime(){
return updateTime;
}
public void setStatusFlag(Integer statusFlag){
this.statusFlag = statusFlag;
}
public Integer getStatusFlag(){
return statusFlag;
}
}
\ No newline at end of file
......@@ -69,7 +69,19 @@ public class GroupChatDTO implements Serializable {
private int hmAddStatus = 1 ;
private String chatRemark ;
private int initFlag ;
private String clerkRelationExcel;
public String getClerkRelationExcel() {
if (clerkRelationFlag == 0){
clerkRelationExcel="未关联";
}else {
clerkRelationExcel="已关联";
}
return clerkRelationExcel;
}
public void setClerkRelationExcel(String clerkRelationExcel) {
this.clerkRelationExcel = clerkRelationExcel;
}
public int getInitFlag() {
return initFlag;
}
......
......@@ -195,10 +195,8 @@ public interface ExternalClerkRelatedApiService {
com.gic.api.base.commons.ServiceResponse<Boolean> isQwFriend(String enterpriseId, String staffId, String memberId) ;
//无效接口
// com.gic.api.base.commons.ServiceResponse<String> getExternalUseridForWxa(String enterpriseId, String staffId, String memberId) ;
List<String> listMemberAndClerk(List<String> memberIdList , List<String> clerkIdList , String enterpriseId) ;
List<String> listMemberAndStaff(List<String> memberIdList , String StaffId , String enterpriseId) ;
/**
* 批量查询会员与导购好友关系
......
......@@ -99,5 +99,10 @@ public interface HaobanTimerApiService {
* @throws
*/
public ServiceResponse<Void> ownerDimission(String params);
/**
* 定时处理欢迎语后的好友
*/
public ServiceResponse<Void> welcomeForMember(String params);
}
......@@ -146,14 +146,7 @@ public interface MemberUnionidRelatedApiService {
ExternalUserDTO getCorpSelfExternalUseridInfoForMember(String wxEnterpriseId, String wxUserId, String externalUserId,String enterpriseId);
/**
* 添加企微好友关联关系表-无需触达
*
* @param dto
* @return
*/
String addExternal(ExternalUserDTO dto);
public String dealMergeForReflsh(ExternalUserDTO externalUserDTO, String wxEnterpriseId , String staffId) ;
/**
* 获取客户详情-第三方
*
......@@ -215,17 +208,14 @@ public interface MemberUnionidRelatedApiService {
* @date 2022-02-21 14:56:25
*/
void addMemberUnionidWechatAccountByClerk(String res);
/**
* 事件订阅test
*
* @param param 参数
* @author mozhu
* @date 2022-09-09 14:18:34
*
* @Title: saveExternalMemberLog
* @Description: 欢迎语业务
* @author xugh
* @param memberLog
* @throws
*/
//无效接口
// void addDelFriendEventTest(String param);
void saveExternalMemberLog(ExternalMemberLogDTO memberLog);
}
......@@ -54,10 +54,6 @@ public interface StaffDepartmentRelatedApiService {
List<StaffDepartmentRelatedDTO> listByStaffIds(List<String> staffIds);
void sendClerkBind(String staffId, String clerkCode, String storeId, int auditStatus, String auditReason);
void sendStaffBind(String staffId, String clerkCode, String storeId, int auditStatus, String auditReason);
void sendClerkAdd(String clerkName, String clerkCode, String storeId, int auditStatus, String auditReason);
void sendClerkDel(String clerkName, String clerkCode, String storeId, int auditStatus, String auditReason);
......
package com.gic.haoban.manage.service.dao.mapper;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.service.entity.TabExternalMemberLog;
/**
*
* @ClassName: TabHaobanExternalMemberLogMapper
* @Description: TODO
* @Author 徐高华
* @Date 2023年04月04日 10:19:47
* @Modify
* @CopyRight
*/
public interface ExternalMemberLogMapper {
public int insert(TabExternalMemberLog log);
public int updateStatus(@Param("enterpriseId") String enterpriseId, @Param("id")long id,
@Param("statusFlag") int statusFlag);
public TabExternalMemberLog selectRelationKey(@Param("enterpriseId") String enterpriseId,
@Param("relationKey") String relationKey);
public List<TabExternalMemberLog> listForTimer(@Param("start")Date start , @Param("end")Date end) ;
}
\ No newline at end of file
......@@ -186,7 +186,7 @@ public interface PreDealLogMapper {
* @param relationKey
* @return
*/
TabHaobanPreDealLog getByRelationKey(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("relationKey") String relationKey);
List<TabHaobanPreDealLog> getByRelationKey(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("relationKey") String relationKey);
/**
* 校验任务
......
......@@ -82,21 +82,10 @@ public interface TabHaobanExternalClerkRelatedMapper {
@Param("unionId") String unionId);
/**
* 外部联系人的unionid
*
* @param enterpriseId
* @param unionId
* @return
*/
// TabHaobanExternalClerkRelated getClerkExternalByUnionId(@Param("enterpriseId") String enterpriseId,
// @Param("clerkId") String clerkId,
// @Param("unionId") String unionId);
/**
* @param relationKey
* @return
*/
TabHaobanExternalClerkRelated getByRelationKey(@Param("relationKey") String relationKey);
TabHaobanExternalClerkRelated getByRelationKey(@Param("relationKey") String relationKey , @Param("filterMember")int filterMember);
/**
* 列表数据 根据状态 时间倒序
......@@ -372,7 +361,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
@Param("staffId") String staffId);
List<String> listMemberAndClerk(@Param("memberIdList")List<String> memberIdList, @Param("clerkIdList")List<String> clerkIdList, @Param("enterpriseId")String enterpriseId);
int getCountExternalClerk(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("staffId") String staffId,
@Param("statusFlags") List<Integer> statusFlags);
......@@ -380,7 +369,9 @@ public interface TabHaobanExternalClerkRelatedMapper {
int getCountByMemberId(@Param("memberId") String memberId);
void updateClerkInfo(@Param("staffId")String staffId, @Param("oldClerkId")String oldClerkId, @Param("newClerkId")String newClerkId, @Param("storeId")String storeId);
List<String> listByClerkId(@Param("staffId")String staffId, @Param("clerkId")String clerkId) ;
int updateExternalStatus(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("externalUserid")String externalUserid, @Param("status")int status);
/**
......@@ -388,5 +379,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
*/
TabHaobanExternalClerkRelated getMemberForExternalId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("externalUserId") String externalUserId);
List<String> listMemberAndStaff(@Param("memberIdList")List<String> memberIdList, @Param("staffId")String staffId, @Param("enterpriseId")String enterpriseId);
}
\ No newline at end of file
package com.gic.haoban.manage.service.entity;
import java.io.Serializable ;
/**
*
* @ClassName: TabHaobanExternalMemberLog
* @Description: TODO
* @Author 徐高华
* @Date 2023年04月04日 10:19:47
* @Modify
* @CopyRight
*/
public class TabExternalMemberLog implements Serializable{
private static final long serialVersionUID = 1709395027793900L;
private Long logId;
private String enterpriseId;
private String unionid;
private String relationKey;
private Integer deleteFlag;
private java.util.Date createTime;
private java.util.Date updateTime;
/**1有效 0无效*/
private Integer statusFlag;
private String memberId ;
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setLogId(Long logId){
this.logId = logId;
}
public Long getLogId(){
return logId;
}
public void setEnterpriseId(String enterpriseId){
this.enterpriseId = enterpriseId;
}
public String getEnterpriseId(){
return enterpriseId;
}
public void setUnionid(String unionid){
this.unionid = unionid;
}
public String getUnionid(){
return unionid;
}
public void setRelationKey(String relationKey){
this.relationKey = relationKey;
}
public String getRelationKey(){
return relationKey;
}
public void setDeleteFlag(Integer deleteFlag){
this.deleteFlag = deleteFlag;
}
public Integer getDeleteFlag(){
return deleteFlag;
}
public void setCreateTime(java.util.Date createTime){
this.createTime = createTime;
}
public java.util.Date getCreateTime(){
return createTime;
}
public void setUpdateTime(java.util.Date updateTime){
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime(){
return updateTime;
}
public void setStatusFlag(Integer statusFlag){
this.statusFlag = statusFlag;
}
public Integer getStatusFlag(){
return statusFlag;
}
}
\ No newline at end of file
......@@ -8,8 +8,11 @@ import java.util.Set;
public interface ClerkMainStoreRelatedService {
void setMainStore(String staffId, String storeId, String wxEnterpriseId);
// 自动刷新好友列表
void reflushExternal(String wxEnterpriseId ,String staffId) ;
TabHaobanClerkMainStoreRelated selectByWxEnterpriseIdAndStoreId(String staffId, String wxEnterpriseId);
TabHaobanClerkMainStoreRelated selectStaffMainStore(String staffId, String wxEnterpriseId);
/**
* 获取主门店 如果没有主门店设置主门店
......
package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.api.dto.ExternalMemberLogDTO;
import com.gic.haoban.manage.service.entity.TabExternalMemberLog;
public interface ExternalMemberService {
public int updateStatus(String enterpriseId, long id, int statusFlag);
public int insert(ExternalMemberLogDTO log);
public TabExternalMemberLog selectRelationKey(String enterpriseId, String relationKey);
public void welcomeForMember();
}
......@@ -173,7 +173,7 @@ public interface PreDealService {
* @param relationKey
* @return
*/
public TabHaobanPreDealLog getByRelationKey(String taskId, Integer dataType, String relationKey);
public List<TabHaobanPreDealLog> getByRelationKey(String taskId, Integer dataType, String relationKey);
/**
* 获取任务是否有在同步中 好友
......
......@@ -44,7 +44,7 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
private StaffService staffService;
@Override
public TabHaobanClerkMainStoreRelated selectByWxEnterpriseIdAndStoreId(String staffId, String wxEnterpriseId) {
public TabHaobanClerkMainStoreRelated selectStaffMainStore(String staffId, String wxEnterpriseId) {
return mapper.selectByWxEnterpriseIdAndStoreId(staffId, wxEnterpriseId, null);
}
......@@ -55,7 +55,6 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
logger.info("区经无需设置主门店:{}", staffId);
return;
}
String uuId = com.gic.haoban.common.utils.StringUtil.randomUUID();
Date now = new Date();
TabHaobanClerkMainStoreRelated t = new TabHaobanClerkMainStoreRelated();
......@@ -68,9 +67,10 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
t.setFreshFriendFlag(1);
t.setClerkMainStoreRelatedId(uuId);
mapper.insert(t);
logger.info("切换主门店-刷新企业微信好友:{},{}", staffId, storeId);
//主门店切换需要刷新企业微信好友
}
@Override
public void reflushExternal(String wxEnterpriseId ,String staffId) {
TabHaobanStaff staff = staffService.selectById(staffId);
if (staff == null) {
logger.info("员工不存在:{}", staffId);
......@@ -79,21 +79,16 @@ public class ClerkMainStoreRelatedServiceImpl implements ClerkMainStoreRelatedSe
String taskName = "自动刷新企业微信好友(" + staff.getStaffName() + ")";
String taskId = dealSyncOperationApiService.createWxFriendTaskSingle(wxEnterpriseId, taskName, staffId, staff.getStaffName(), SyncTaskTypeEnum.FRIEND_SINGLE.getType());
if (StringUtils.isBlank(taskId)) {
logger.info("刷新好友失败或正在刷新:{},{}", staffId, storeId);
logger.info("刷新好友失败或正在刷新:{},{}", staffId);
return;
}
dealSyncOperationApiService.dealWxFriendClerkSingle(taskId, staffId, staffId, wxEnterpriseId);
logger.info("任务id:{}", taskId);
logger.info("开始自动刷新好友任务id={},staffId={}", taskId,staffId);
}
@Override
public TabHaobanClerkMainStoreRelated getMainStoreByStaffId(String staffId, String wxEnterpriseId) {
TabHaobanClerkMainStoreRelated mainStoreRelated = mapper.selectByWxEnterpriseIdAndStoreId(staffId, wxEnterpriseId, null);
if (null != mainStoreRelated) {
return mainStoreRelated;
}
return setStaffMainStore(staffId, wxEnterpriseId, null);
return this.getMainStoreByStaffId(staffId, wxEnterpriseId,null);
}
@Override
......
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import java.util.List;
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.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.ExternalMemberLogDTO;
import com.gic.haoban.manage.service.dao.mapper.ExternalMemberLogMapper;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.entity.TabExternalMemberLog;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.service.ExternalMemberService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.member.api.service.MemberService;
@Service
public class ExternalMemberServiceImpl implements ExternalMemberService {
private static final Logger logger = LoggerFactory.getLogger(ExternalMemberService.class);
@Autowired
private ExternalMemberLogMapper externalMemberLogMapper;
@Autowired
private MemberOpenCardBusinessService memberOpenCardBusinessService ;
@Autowired
private TabHaobanExternalClerkRelatedMapper tabHaobanExternalClerkRelatedMapper ;
@Autowired
private MemberService memberService ;
@Override
public int insert(ExternalMemberLogDTO log) {
TabExternalMemberLog entity = EntityUtil.changeEntity(TabExternalMemberLog.class, log);
TabExternalMemberLog old = this.externalMemberLogMapper.selectRelationKey(log.getEnterpriseId(),
log.getRelationKey());
if (null != old) {
return 0;
}
entity.setLogId(UniqueIdUtils.uniqueLong());
this.externalMemberLogMapper.insert(entity);
return 0;
}
public int updateStatus(String enterpriseId, long id, int statusFlag) {
return this.externalMemberLogMapper.updateStatus(enterpriseId, id, statusFlag);
}
@Override
public TabExternalMemberLog selectRelationKey(String enterpriseId, String relationKey) {
TabExternalMemberLog log = this.externalMemberLogMapper.selectRelationKey(enterpriseId, relationKey);
return log;
}
@Override
public void welcomeForMember() {
logger.info("欢迎语处理会员定时");
Date end = DateUtil.getStartTimeOfDay() ;
Date start = DateUtil.addNumForDay(end, -1) ;
List<TabExternalMemberLog> list = this.externalMemberLogMapper.listForTimer(start, end) ;
for(TabExternalMemberLog log : list) {
String relationKey = log.getRelationKey() ;
TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedMapper.getByRelationKey(relationKey,0);
if (related == null) {
logger.info("好友记录不存在relationKey={}",relationKey);
continue ;
}
String enterpriseId = log.getEnterpriseId() ;
if(StringUtils.isNotEmpty(related.getMemberId())) {
this.externalMemberLogMapper.updateStatus(enterpriseId, log.getLogId(), 2) ;
continue ;
}
String unionid = log.getUnionid() ;
MemberDTO member = this.memberService.getMemberByUnionid(unionid, enterpriseId) ;
if(null == member) {
logger.info("会员记录不存在relationKey={},{}",relationKey,unionid);
continue ;
}
String memberId =member.getMemberId() ;
this.memberOpenCardBusinessService.memberClerkProcessByQywxFriend(enterpriseId, memberId, unionid, relationKey);
this.externalMemberLogMapper.updateStatus(enterpriseId, log.getLogId(), 2) ;
}
}
}
......@@ -164,7 +164,7 @@ public class PreDealServiceImpl implements PreDealService {
}
@Override
public TabHaobanPreDealLog getByRelationKey(String taskId, Integer dataType, String relationKey) {
public List<TabHaobanPreDealLog> getByRelationKey(String taskId, Integer dataType, String relationKey) {
return preDealLogMapper.getByRelationKey(taskId, dataType, relationKey);
}
......
......@@ -462,4 +462,4 @@ public class WelcomeSendServiceImpl implements WelcomeSendService {
}
return null;
}
}
}
......@@ -23,9 +23,10 @@ public class ClerkMainStoreRelatedApiServiceImpl implements ClerkMainStoreRelate
@Override
public void setMainStore(String staffId, String storeId, String wxEnterpriseId) {
TabHaobanClerkMainStoreRelated related = clerkMainStoreRelatedService.selectByWxEnterpriseIdAndStoreId(staffId, wxEnterpriseId);
TabHaobanClerkMainStoreRelated related = clerkMainStoreRelatedService.selectStaffMainStore(staffId, wxEnterpriseId);
if (related == null) {
clerkMainStoreRelatedService.setMainStore(staffId, storeId, wxEnterpriseId);
this.clerkMainStoreRelatedService.setMainStore(staffId, storeId, wxEnterpriseId);
this.clerkMainStoreRelatedService.reflushExternal(wxEnterpriseId, staffId);
} else if (null != related && (!related.getStoreId().equals(storeId))) {
related.setStatusFlag(0);
related.setUpdateTime(new Date());
......
......@@ -132,7 +132,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
@Override
public ExternalClerkRelatedDTO getExternalClerkByRelationKeyAndPre(String relationKey) {
TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedMapper.getByRelationKey(relationKey);
TabHaobanExternalClerkRelated related = tabHaobanExternalClerkRelatedMapper.getByRelationKey(relationKey,0);
return EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, related);
}
......@@ -166,7 +166,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
@Override
public ServiceResponse<ExternalClerkRelatedDTO> bindMemberIdExternalByRelationKey(String relationKey, String enterpriseId, String memberId, String unionid) {
ServiceResponse<ExternalClerkRelatedDTO> resp = new ServiceResponse<>();
TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getByRelationKey(relationKey);
TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getByRelationKey(relationKey,1);
if (null == externalClerkRelated) {
log.error("relationKey对应的关联关系不存在或删除:relationKey:{},memberId:{},unionid:{}", relationKey, memberId, unionid);
resp.setCode(0);
......@@ -468,8 +468,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
// }
@Override
public List<String> listMemberAndClerk(List<String> memberIdList, List<String> clerkIdList, String enterpriseId) {
List<String> list = tabHaobanExternalClerkRelatedMapper.listMemberAndClerk(memberIdList, clerkIdList, enterpriseId);
public List<String> listMemberAndStaff(List<String> memberIdList, String staffId, String enterpriseId) {
List<String> list = tabHaobanExternalClerkRelatedMapper.listMemberAndStaff(memberIdList, staffId, enterpriseId);
return list;
}
......
......@@ -6,6 +6,7 @@ import org.springframework.stereotype.Service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.HaobanTimerApiService;
import com.gic.haoban.manage.service.service.ExternalClerkRelatedService;
import com.gic.haoban.manage.service.service.ExternalMemberService;
import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService;
import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService;
......@@ -21,6 +22,9 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private StaffDepartmentRelatedService staffDepartmentRelatedService;
@Autowired
private GroupChatService groupChatService;
@Autowired
private ExternalMemberService externalMemberService ;
@Override
public ServiceResponse<Void> deleteTempWxHm(String params) {
......@@ -69,4 +73,10 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
this.groupChatService.ownerDimission();
return ServiceResponse.success();
}
@Override
public ServiceResponse<Void> welcomeForMember(String params) {
this.externalMemberService.welcomeForMember() ;
return ServiceResponse.success();
}
}
......@@ -545,11 +545,11 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
// 导购门店转移
private void moveOrAddClerk(ClerkSyncQDTO clerkSyncQDTO, StaffClerkRelationDTO oldRelationDTO) {
boolean flag = false;
/* boolean flag = false;
if (null != RedisUtil.getCache("clerkMoveFlag2022")) {
flag = true;
}
if (flag) {
if (flag) {*/
String oldClerkId = oldRelationDTO.getClerkId();
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(), clerkSyncQDTO.getClerkId(),oldRelationDTO.getWxEnterpriseId());
// 设置新的ID
......@@ -560,15 +560,15 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
if (response == null) {
this.staffClerkRelationService.insert(oldRelationDTO);
}
} else {
/*} else {
String oldClerkId = oldRelationDTO.getClerkId();
this.staffClerkRelationService.delBind(oldClerkId, "-1", ChannelCodeEnum.SYNC_UNBIND.getCode(), null,null);
// 设置新的ID
oldRelationDTO.setClerkId(clerkSyncQDTO.getClerkId());
oldRelationDTO.setStoreId(clerkSyncQDTO.getStoreId());
ServiceResponse resp = this.bindStaffClerk(oldRelationDTO, "-1", ChannelCodeEnum.SYNC_BIND.getCode());
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(resp), oldRelationDTO.getClerkId());
}
logger.info("绑定结果正常:{},{}", JSONObject.toJSONString(resp), oldRelationDTO.getClerkId());*/
// }
}
@Override
......
......@@ -154,84 +154,6 @@ public class StaffDepartmentRelatedApiServiceImpl implements StaffDepartmentRela
return map;
}
//导购绑定,,审核记录,,消息发送
@Override
public void sendStaffBind(String staffId, String clerkCode, String storeId, int auditStatus, String auditReason) {
StaffDTO staffDTO = staffApiService.selectById(staffId);
if (staffDTO == null) {
logger.info("staff不存在,发送消息失败{}", staffId);
return;
}
String messageTitle = "账号申请";
String content = staffDTO.getStaffName() + "关联导购code(" + clerkCode + ")";
JSONObject jsonObject = new JSONObject();
jsonObject.put("storeId", storeId);
String data = jsonObject.toJSONString();
String pageUrl = this.getPageUrl(AppPageType.MY_RELATED_RECORD.getCode(), data);
String name = staffDTO.getStaffName();
if (content.length() > 30) {
content = content.substring(0, 26);
content = content + "...";
}
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(staffDTO.getWxEnterpriseId());
String wxUserId = "";
if (qwDTO.needOpenUserId3th()) {
wxUserId = staffDTO.getWxOpenUseId();
} else {
wxUserId = staffDTO.getWxUserId();
}
//先发送下,试试
QywxXcxSendMessageDTO messageDTO = new QywxXcxSendMessageDTO();
List<ItemDTO> items = new ArrayList<>();
ItemDTO dto1 = new ItemDTO();
ItemDTO dto2 = new ItemDTO();
ItemDTO dto3 = new ItemDTO();
ItemDTO dto4 = new ItemDTO();
dto1.setKey("接收人");
dto1.setValue(name);
dto2.setKey("接收事件");
dto2.setValue(content);
dto3.setKey("结果");
dto3.setValue(auditStatus == 1 ? "已同意" : "已拒绝");
items.add(dto1);
items.add(dto2);
items.add(dto3);
if (StringUtils.isNotEmpty(auditReason)) {
dto4.setKey("理由");
dto4.setValue(auditReason);
items.add(dto4);
}
ArrayList<String> list = new ArrayList<>();
list.add(wxUserId);
messageDTO.setAppid(config.getAppid());
messageDTO.setUserIds(list);
messageDTO.setPage(pageUrl);
messageDTO.setTitle(messageTitle);
messageDTO.setItems(items);
logger.info("发送参数为corpId============:{},suitId============:{},messageDTO============:{},", qwDTO.getThirdCorpid(), config.getWxSuiteid(), JSONObject.toJSONString(messageDTO));
boolean b = qywxSuiteApiService.sendMessage(qwDTO.getThirdCorpid(), config.getWxSuiteid(), messageDTO);
logger.info("发送===============》{}", b);
}
//导购绑定,,审核记录,,消息发送
@Override
public void sendClerkBind(String staffId, String clerkCode, String storeId, int auditStatus, String auditReason) {
StaffDTO staffDTO = staffApiService.selectById(staffId);
if (staffDTO == null) {
logger.info("staff不存在,发送消息失败{}", staffId);
return;
}
String messageTitle = "账号申请";
String messageContent = staffDTO.getStaffName() + "申请关联导购code(" + clerkCode + ")";
JSONObject jsonObject = new JSONObject();
jsonObject.put("storeId", storeId);
String data = jsonObject.toJSONString();
String pageUrl = this.getPageUrl(AppPageType.MY_RELATED_RECORD.getCode(), data);
this.sendAuditMessage(staffId, messageTitle, messageContent, pageUrl, auditStatus, auditReason);
}
//导购新增,,审核记录,,消息发送
@Override
public void sendClerkAdd(String clerkName, String clerkCode, String storeId, int auditStatus, String auditReason) {
......
......@@ -56,7 +56,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("dealParamMqDTO={},dataPre={}", JSON.toJSONString(dealParamMqDTO), JSON.toJSONString(dataPre));
logger.info("刷新好友列表(7-8),dealParamMqDTO={},dataPre={}", JSON.toJSONString(dealParamMqDTO), JSON.toJSONString(dataPre));
String reason = "";
boolean dealFlag = true;
try {
......@@ -82,7 +82,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
return;
}
if (CollectionUtils.isEmpty(selfUserIdList)) {
logger.info("改用户没有外部联系人:{}", JSONObject.toJSONString(dataPre));
logger.info("该用户无代开外部联系人:{}", JSONObject.toJSONString(dataPre));
dealFlag = false;
reason = "该用户没有外部联系人";
return;
......@@ -100,7 +100,7 @@ public class FriendClerkSyncNewOperation implements BaseSyncOperation {
return;
}
if (CollectionUtils.isEmpty(userIdList)) {
logger.info("该用户没有外部联系人2:{}", JSONObject.toJSONString(dataPre));
logger.info("该用户无第三方外部联系人:{}", JSONObject.toJSONString(dataPre));
dealFlag = false;
reason = "该用户没有外部联系人";
return;
......
......@@ -51,7 +51,7 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("同步好友开始,自建代开发={}", JSONObject.toJSONString(dataPre));
logger.info("刷新好友列表7,代开发={}", JSONObject.toJSONString(dataPre));
String reason = "成功";
boolean dealFlag = true;
try {
......@@ -60,10 +60,10 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
String staffId = dataPre.getpDataId() ;
String taskId = dealParamMqDTO.getTaskId();
String externalUserId = dataPre.getDataContent();
// 查询企微侧外部联系人详情
ExternalUserDTO externalUserDTO = memberUnionidRelatedApiService.getCorpSelfExternalUseridInfo(wxEnterpriseId, wxUserId, externalUserId);
if (externalUserDTO == null) {
logger.info("外部联系人好友不存在:{}", JSONObject.toJSONString(dataPre));
logger.info("代开发外部联系人详情查询失败,staffId={},{},{}", staffId,wxUserId,externalUserId);
dealException(taskId, dataPre.getDataId(), null, "好友不存在");
return;
}
......@@ -74,13 +74,11 @@ public class SelfFriendSyncNewOperation implements BaseSyncOperation {
json.put("avatar", externalUserDTO.getAvatar());
json.put("externalUserId", externalUserDTO.getExternalUserId());
json.put("addCreateTime", externalUserDTO.getAddCreateTime());
//relationkey
logger.info("生成relationKey:{},{},{}",staffId,externalUserDTO.getName(),externalUserDTO.getAddCreateTime());
String relationKey = SecureUtil.md5(staffId + "_" + externalUserDTO.getName() + "_" + externalUserDTO.getAddCreateTime());
logger.info("relationKey:{},{}", relationKey, externalUserDTO.getExternalUserId());
String str = staffId + "_" + externalUserDTO.getName() + "_" + externalUserDTO.getAddCreateTime() ;
String relationKey = SecureUtil.md5(str);
logger.info("生成代开发relationKey={},staff={},{}",relationKey,staffId,str);
//更新状态
preDealService.updateFriendStatusByDataId(taskId, dataPre.getDataId(), PreDealStatusEnum.computed.getVal(), reason, json.toJSONString(), relationKey , PreDealTypeEnum.self_friend.getVal());
this.preDealService.updateFriendStatusByDataId(taskId, dataPre.getDataId(), PreDealStatusEnum.computed.getVal(), reason, json.toJSONString(), relationKey , PreDealTypeEnum.self_friend.getVal());
dealSuccess(taskId, dataPre.getDataId(), null, wxEnterpriseId);
} catch (WxApiLimitException e) {
logger.info("接口次数限制:{}", JSONObject.toJSONString(dataPre));
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.ExternalMemberLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.TabExternalMemberLog" id="result-map-tabHaobanExternalMemberLog">
<result column="log_id" property="logId"/>
<result column="enterprise_id" property="enterpriseId"/>
<result column="unionid" property="unionid"/>
<result column="member_id" property="memberId"/>
<result column="relation_key" property="relationKey"/>
<result column="delete_flag" property="deleteFlag"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="status_flag" property="statusFlag"/>
</resultMap>
<sql id="Base_Column_List">
log_id,
enterprise_id,
unionid,
member_id ,
relation_key,
delete_flag,
create_time,
update_time,
status_flag
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabExternalMemberLog">
<![CDATA[
INSERT INTO tab_haoban_external_member_log(
log_id,
enterprise_id,
unionid,
member_id ,
relation_key,
delete_flag,
create_time,
update_time,
status_flag
)VALUES(
#{logId,jdbcType=BIGINT},
#{enterpriseId,jdbcType=CHAR},
#{unionid,jdbcType=VARCHAR},
#{memberId} ,
#{relationKey,jdbcType=VARCHAR},
0,
now(),
now(),
1
)
]]>
</insert>
<update id="updateStatus">
<![CDATA[
UPDATE tab_haoban_external_member_log SET
update_time=now() ,
status_flag= #{statusFlag}
where enterprise_id = #{enterpriseId} and log_id=#{id}
]]>
</update>
<!-- ============ 查询=============-->
<select id="selectRelationKey" resultMap="result-map-tabHaobanExternalMemberLog">
SELECT <include refid="Base_Column_List" /> FROM tab_haoban_external_member_log
where enterprise_id = #{enterpriseId} and relation_key=#{relationKey} limit 1
</select>
<select id="listForTimer" resultMap="result-map-tabHaobanExternalMemberLog">
SELECT <include refid="Base_Column_List" /> FROM tab_haoban_external_member_log
where create_time >= #{start} and create_time <![CDATA[ < ]]> #{end} and status_flag = 1
</select>
</mapper>
\ No newline at end of file
......@@ -392,22 +392,17 @@
and status_flag = 1
</select>
<!-- <select id="getClerkExternalByUnionId" resultMap="BaseResultMap">-->
<!-- select-->
<!-- <include refid="Base_Column_List"/>-->
<!-- from tab_haoban_external_clerk_related-->
<!-- where enterprise_id = #{enterpriseId}-->
<!-- and unionid = #{unionId}-->
<!-- and clerk_id = #{clerkId}-->
<!-- and status_flag = 1-->
<!-- </select>-->
<select id="getByRelationKey" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related
where
relation_key = #{relationKey} and member_id is null
relation_key = #{relationKey}
<if test="filterMember==1">
and member_id is null
</if>
and status_flag != 2
order by create_time desc limit 1
</select>
......@@ -739,6 +734,13 @@
and status_flag in (1,3,4)
</update>
<select id="listByClerkId" resultType="String">
select member_id from tab_haoban_external_clerk_related
where staff_id = #{staffId}
and clerk_id = #{clerkId}
and status_flag = 1
</select>
<update id="updateExternalStatus">
update tab_haoban_external_clerk_related set external_status = #{status} where
external_user_id = #{externalUserid} and wx_enterprise_id = #{wxEnterpriseId}
......@@ -750,5 +752,16 @@
and external_user_id = #{externalUserId} and status_flag in (1,3,4) and member_id <![CDATA[ <> '' ]]>
limit 1
</select>
<select id="listMemberAndStaff" resultType="java.lang.String">
select member_id
from tab_haoban_external_clerk_related
where member_id in
<foreach collection="memberIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
and staff_id = #{staffId}
and enterprise_id = #{enterpriseId}
AND status_flag = 1
</select>
</mapper>
\ No newline at end of file
package com.gic.haoban.manage.web.controller.chat;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.ExcelUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.StaffDTO;
......@@ -28,14 +20,29 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl;
import com.gic.log.record.anno.GicLogRecord;
import com.gic.log.record.util.GicLogRecordCategoryEnum;
import com.gic.log.record.util.GicLogRecordEvaluationContext;
import com.gic.log.record.util.GicLogRecordOptTypeEnum;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
*
* @ClassName: GroupChatController
* @Description: 群
* @author xugh
......@@ -52,6 +59,8 @@ public class GroupChatController {
private GroupChatApiService groupChatApiService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private EnterpriseService enterpriseService;
@RequestMapping("get-set-gic-flag")
public RestResponse<Object> getFlag() {
......@@ -63,7 +72,7 @@ public class GroupChatController {
}
/**
*
*
* @Title: save
* @Description: 认领gic
* @author xugh
......@@ -204,5 +213,52 @@ public class GroupChatController {
GicLogRecordEvaluationContext.putOptTargetId(AuthWebRequestUtil.getLoginUser().getClerkId());
return RestResponse.successResult(resp.getResult());
}
/**
* 客户群列表数据明细导出
*/
@RequestMapping("customer-group-export")
public RestResponse<Boolean> customerGroupExport(HttpServletRequest request, HttpServletResponse response,GroupChatSearchQDTO qdto) {
// 登录校验
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
if (loginUser == null || StringUtils.isBlank(loginUser.getEnterpriseId())) {
return RestResponse.failure(Convert.toStr(HaoBanErrCode.ERR_4.getCode()), HaoBanErrCode.ERR_4.getMsg());
}
String sortColumn = qdto.getSortColumn();
if (StringUtils.isBlank(sortColumn)) {
sortColumn = null;
} else if ("totalCount".equals(sortColumn)) {
sortColumn = "total_count";
} else if ("totalMemberCount".equals(sortColumn)) {
sortColumn = "total_member_count";
} else if ("addMemberCount".equals(sortColumn)) {
sortColumn = "add_member_count";
} else if ("addCount".equals(sortColumn)) {
sortColumn = "add_count";
} else if ("quitCount".equals(sortColumn)) {
sortColumn = "quit_count";
} else if ("quitMemberCount".equals(sortColumn)) {
sortColumn = "quit_member_count";
}
BasePageInfo basePageInfo = new BasePageInfo() ;
basePageInfo.setPageNum(qdto.getPageNum());
basePageInfo.setPageSize(qdto.getPageSize());
qdto.setSortColumn(sortColumn);
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
qdto.setEnterpriseId(loginUser.getEnterpriseId());
ServiceResponse<Page<GroupChatDTO>> page = this.groupChatApiService.listPage(qdto, basePageInfo);
if (page.isSuccess() && CollUtil.isNotEmpty(page.getResult().getResult())){
String fileName = "客户群列表数据";
List<String> titleList = Arrays.asList("客户群ID", "客户群名称", "群人数", "群客户数", "新增总数", "流失总数","群主","群主在好办小程序关联状态","创建时间");
List<String> fileList = Arrays.asList("groupChatId", "name", "totalCount", "totalMemberCount", "addCount", "quitCount", "staffName", "clerkRelationExcel", "createTime");
try {
ExcelUtils.xls(response, request, fileName, page.getResult().getResult(), fileList, titleList);
} catch (Exception e) {
e.printStackTrace();
logger.info("导出失败");
}
return RestResponse.successResult(true);
}
return RestResponse.successResult(false);
}
}
......@@ -47,6 +47,7 @@ import com.gic.haoban.common.utils.HaobanResponse;
import com.gic.haoban.manage.api.dto.ClerkMainStoreRelatedDTO;
import com.gic.haoban.manage.api.dto.EnterpriseDetailDTO;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.dto.ExternalMemberLogDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberStoreDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
......@@ -677,12 +678,23 @@ public class WxEnterpriseInfoController extends WebBaseController {
@IgnoreLogin
@RequestMapping("member-bind-friend")
public HaobanResponse memberBindFriend(String memberId, String enterpriseId, String unionid, String relationKey) {
if (StringUtils.isAnyBlank(memberId, enterpriseId, relationKey)) {
if (StringUtils.isAnyBlank(enterpriseId, relationKey , unionid)) {
logger.info("参数错误");
return resultResponse(HaoBanErrCode.ERR_2);
}
ExternalMemberLogDTO memberLog = new ExternalMemberLogDTO() ;
memberLog.setEnterpriseId(enterpriseId);
memberLog.setUnionid(unionid);
memberLog.setRelationKey(relationKey);
memberLog.setMemberId(memberId);
if(StringUtils.isEmpty(memberId)) {
this.memberUnionidRelatedApiService.saveExternalMemberLog(memberLog) ;
return resultResponse(HaoBanErrCode.ERR_1);
}
ExternalClerkRelatedDTO externalClerkRelatedDTO = externalClerkRelatedApiService.getExternalClerkByRelationKeyAndPre(relationKey);
if (externalClerkRelatedDTO == null) {
logger.info("会员绑定好友,该会员已经绑定成功,无需再次绑定,memberId:{},enterpriseId:{},unionid:{},relationKey:{}", memberId, enterpriseId, unionid, relationKey);
this.memberUnionidRelatedApiService.saveExternalMemberLog(memberLog) ;
logger.info("好友表不存在记录,memberId:{},enterpriseId:{},unionid:{},relationKey:{}", memberId, enterpriseId, unionid, relationKey);
return resultResponse(HaoBanErrCode.ERR_1);
}
logger.info("会员绑定好友,memberId:{},enterpriseId:{},unionid:{},relationKey:{}", memberId, enterpriseId, unionid, relationKey);
......
......@@ -126,7 +126,12 @@ public class WxStaffController extends WebBaseController {
List<StaffVO> resultList = new ArrayList<>();
for (StaffDTO staffDTO : resultlist) {
String enterpriseId = staffDTO.getEnterpriseId();
long memberCount = distributeApiService.getClerkMemberCount(enterpriseId, staffDTO.getClerkId(), storeId);
String staffClerkId = staffDTO.getClerkId() ;
ClerkDTO clerk = this.clerkService.getclerkById(staffClerkId) ;
if(null != clerk) {
staffDTO.setStaffName(clerk.getClerkName());
}
long memberCount = customerApiService.countMember(enterpriseId, storeId, staffDTO.getClerkId());
logger.info("【获取会员数】enterpriseId={},clerkId={},storeId={},memberCount={}", enterpriseId, staffDTO.getClerkId(), storeId, memberCount);
staffDTO.setMemberCount(Convert.toInt(memberCount, 0));
resultList.add(EntityUtil.changeEntityNew(StaffVO.class, staffDTO));
......@@ -563,15 +568,7 @@ public class WxStaffController extends WebBaseController {
@HttpLimit
@RequestMapping("/check-main-store")
public HaobanResponse checkMainStore(String staffId, String storeId, String wxEnterpriseId, String dateStr) {
StaffDTO staff = staffApiService.selectById(staffId);
Date curDate = new Date();
if (staff == null) {
return resultResponse(HaoBanErrCode.ERR_10006);
}
//给测试使用
if (StringUtils.isNotBlank(dateStr)) {
curDate = cn.hutool.core.date.DateUtil.parse(dateStr);
}
int i = cn.hutool.core.date.DateUtil.weekOfYear(curDate);
String key = "haoban_set_main_store_" + i + ":" + staffId;
Object hasSet = RedisUtil.getCache(key);
......
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