Commit fbbbab62 by 徐高华

Merge branch 'feature/xgh/202506迭代' into developer

parents 29478d6b e4b65ec4
......@@ -47,8 +47,45 @@ public class GroupChatHmDTO implements Serializable {
private Integer statusFlag ;
// 可以群数
private Integer usableChatCount;
private String storeId ;
private String storeName ;
private String storeCode ;
// 0已删除 1有效
private int storeStatus ;
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public int getStoreStatus() {
return storeStatus;
}
public void setStoreStatus(int storeStatus) {
this.storeStatus = storeStatus;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public Integer getUsableChatCount() {
return usableChatCount;
}
......
......@@ -28,7 +28,17 @@ public class GroupChatOwnerDTO implements Serializable {
private String wxOpenUserId;
private java.util.Date createTime;
private java.util.Date updateTime;
private String storeNames ;
public String getStoreNames() {
return storeNames;
}
public void setStoreNames(String storeNames) {
this.storeNames = storeNames;
}
public String getWxUserId() {
return wxUserId;
}
......
......@@ -46,6 +46,17 @@ public class HmLinkDTO implements Serializable {
// 群活码配置
private List<HmLinkChatDTO> linkChatList ;
// [{"type":1服务门店2协管3lbs4指定人群,"open":1}]
private String chatStoreRule ;
public String getChatStoreRule() {
return chatStoreRule;
}
public void setChatStoreRule(String chatStoreRule) {
this.chatStoreRule = chatStoreRule;
}
public List<HmLinkChatDTO> getLinkChatList() {
return linkChatList;
}
......
......@@ -78,6 +78,26 @@ public class QwMomentPlanDTO implements Serializable{
*/
private List<QwMomentPlanAttendDTO> clerkList ;
private Integer analyseFlag ;
private Integer analyseDay ;
public Integer getAnalyseFlag() {
return analyseFlag;
}
public void setAnalyseFlag(Integer analyseFlag) {
this.analyseFlag = analyseFlag;
}
public Integer getAnalyseDay() {
return analyseDay;
}
public void setAnalyseDay(Integer analyseDay) {
this.analyseDay = analyseDay;
}
public Integer getMediaLinkFlag() {
return mediaLinkFlag;
}
......
......@@ -23,6 +23,17 @@ public class ChatHmSearchQDTO extends PageQo implements Serializable {
private List<String> creatorIdList;
private Integer linkCount;
private int allFlag;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getSearchParamsCode() {
return searchParamsCode;
}
......
......@@ -26,7 +26,29 @@ public class OwnerSearchQDTO implements Serializable {
private List<String> departmentIdList ;
// 1查询在职 2查离职
private int status = 1;
// 选择的企业id
private String paramsEnterpriseId ;
// 是否需要显示门店名称
private int showStoreNames ;
public int getShowStoreNames() {
return showStoreNames;
}
public void setShowStoreNames(int showStoreNames) {
this.showStoreNames = showStoreNames;
}
public String getParamsEnterpriseId() {
return paramsEnterpriseId;
}
public void setParamsEnterpriseId(String paramsEnterpriseId) {
this.paramsEnterpriseId = paramsEnterpriseId;
}
public List<String> getDepartmentIdList() {
return departmentIdList;
}
......
......@@ -10,6 +10,7 @@ import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.dto.StoreSearchDTO;
......@@ -22,10 +23,12 @@ import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinRuleEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatHmMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatHmRelationMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatHm;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatHmRelation;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
......@@ -79,6 +82,8 @@ public class JoinRuleManager {
private ESMemberInfoService esMemberInfoService;
@Autowired
private MemberTagGroupApiService memberTagGroupApiService;
@Autowired
private GroupChatHmMapper groupChatHmMapper ;
private final Map<ChatActivityJoinRuleEnum, FunctionWithException<GroupChatActivityHmQDTO,List<GroupChatHmBO>>> ruleHandlers = new HashMap<>();
......@@ -241,7 +246,7 @@ public class JoinRuleManager {
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) {
public List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
......@@ -260,7 +265,7 @@ public class JoinRuleManager {
* @param activityHmQDTO qdto
* @return
*/
private List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) {
public List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
......@@ -280,7 +285,7 @@ public class JoinRuleManager {
* @return
* @throws BusinessException
*/
private List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException {
public List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException {
String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
boolean skipArea = activityHmQDTO.isSkipArea();
......@@ -336,6 +341,10 @@ public class JoinRuleManager {
*/
private List<GroupChatHmBO> getByStoreIdList(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
List<TabGroupChatHm> hmList = this.groupChatHmMapper.listByStoreIdList(storeIdList) ;
if(CollectionUtils.isNotEmpty(hmList)) {
return EntityUtil.changeEntityListByJSON(GroupChatHmBO.class,hmList) ;
}
// 获取导购列表
Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,1000);
List<ClerkDTO> clerkList = page.getResult();
......@@ -355,6 +364,13 @@ public class JoinRuleManager {
if (CollectionUtils.isEmpty(staffIdList)) {
return new ArrayList<>();
}
// 过滤绑定多个门店的成员
Map<String,Boolean> map = this.staffClerkRelationService.staffManyStore(staffIdList) ;
staffIdList = staffIdList.stream().filter(item -> null == map.get(item) || !map.get(item)).collect(Collectors.toList()) ;
logger.info("过滤有多个门店的成员后={}",staffIdList);
if (CollectionUtils.isEmpty(staffIdList)) {
return new ArrayList<>();
}
// 通过staffId查询群
List<TabGroupChat> groupChatList = groupChatMapper.listByStaffIds(enterpriseId, staffIdList);
if (CollectionUtils.isEmpty(groupChatList)) {
......@@ -377,7 +393,13 @@ public class JoinRuleManager {
hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo);
return listPage.getResult();
logger.info("群活码列表:{}",JSON.toJSONString(listPage));
List<GroupChatHmBO> retList = listPage.getResult();
if(CollectionUtils.isNotEmpty(retList)) {
Map<Long,Boolean> hmMap = this.groupChatHmService.hasManyOwnerStore(wxEnterpriseId,retList.stream().map(o->o.getChatHmId()).collect(Collectors.toList())) ;
retList = retList.stream().filter(item -> null == hmMap.get(item.getChatHmId()) || !hmMap.get(item.getChatHmId())).collect(Collectors.toList()) ;
}
return retList;
}
......@@ -407,6 +429,13 @@ public class JoinRuleManager {
if (CollectionUtils.isEmpty(staffIdList)) {
return new HashMap<>();
}
// 过滤绑定多个门店的成员
Map<String,Boolean> map = this.staffClerkRelationService.staffManyStore(staffIdList) ;
staffIdList = staffIdList.stream().filter(item -> null == map.get(item) || !map.get(item)).collect(Collectors.toList()) ;
logger.info("过滤有多个门店的成员后={}",staffIdList);
if (CollectionUtils.isEmpty(staffIdList)) {
return new HashMap<>();
}
Map<String, Set<String>> storeToStaffMap = relationDTOList.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,
Collectors.mapping(StaffClerkRelationDTO::getStaffId, Collectors.toSet())));
//通过staffId查询群
......@@ -436,11 +465,16 @@ public class JoinRuleManager {
hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo);
if (CollectionUtils.isEmpty(listPage.getResult())) {
List<GroupChatHmBO> hmList = listPage.getResult();
if (CollectionUtils.isEmpty(hmList)) {
return new HashMap<>();
}
Map<Long,Boolean> hmMap = this.groupChatHmService.hasManyOwnerStore(wxEnterpriseId,hmList.stream().map(o->o.getChatHmId()).collect(Collectors.toList())) ;
hmList = hmList.stream().filter(item -> null == hmMap.get(item.getChatHmId()) || !hmMap.get(item.getChatHmId())).collect(Collectors.toList()) ;
Map<Long, GroupChatHmBO> groupHmMap = hmList.stream().collect(Collectors.toMap(GroupChatHmBO::getChatHmId, v -> v, (e, x) -> e));
if (CollectionUtils.isEmpty(hmList)) {
return new HashMap<>();
}
Map<Long, GroupChatHmBO> groupHmMap = listPage.getResult().stream().collect(Collectors.toMap(GroupChatHmBO::getChatHmId, v -> v, (e, x) -> e));
Map<String, List<GroupChatHmBO>> storeIdToGroupChatHmBOMap = convertMap(storeToStaffMap, staffToGroupChatMap, groupChatToHmMap, groupHmMap);
return storeIdToGroupChatHmBOMap;
......
......@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import com.gic.haoban.manage.service.entity.ext.MemberStaffRelExtDO;
import com.gic.haoban.manage.service.pojo.StaffStoreNumBO;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
......@@ -150,4 +151,6 @@ public interface TabHaobanStaffClerkRelationMapper {
List<TabHaobanStaffClerkRelation> taskoverClerkIdListAll(@Param("staffId")String staffId) ;
List<String> listAllStaffIdForOpenStaff(@Param("enterpriseId")String enterpriseId, @Param("wxEnterpriseId")String wxEnterpriseId, @Param("clerkId") String clerkId, @Param(("storeIdList")) List<String> storeIdList);
List<StaffStoreNumBO> staffStoreNum(@Param("staffIdList")List<String> staffIdList);
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List;
import com.gic.haoban.manage.service.pojo.HmStoreNumBO;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO;
......@@ -33,5 +34,9 @@ public interface GroupChatHmMapper {
public List<TabGroupChatHm> list(ChatHmSearchQDTO qdto);
List<TabGroupChatHm> listByStoreIdList(@Param("storeIdList") List<String> storeIdList) ;
List<TabGroupChatHm> listAvailableByEnterpriseId(@Param("enterpriseId") String enterpriseId);
List<HmStoreNumBO> hasManyOwnerStore(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("chatHmIdList") List<Long> chatHmIdList);
}
\ No newline at end of file
......@@ -54,6 +54,10 @@ public interface WxUserAddLogMapper {
public TabWxUserAddLog selectNewLog(@Param("externalUserid") String externalUserid,
@Param("staffId") String staffId);
public TabWxUserAddLog listNewLog(@Param("externalUserid") String externalUserid,
@Param("staffId") String staffId , @Param("friendClerkId")String friendClerkId);
/**
*
* @Title: listAllForDel
......
......@@ -41,6 +41,15 @@ public class TabGroupChatHm implements Serializable{
// 1有效 2作废 3待生效
private Integer statusFlag ;
private Integer linkCount ;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public Integer getLinkCount() {
return linkCount;
......
......@@ -43,6 +43,16 @@ public class TabHmLink implements Serializable {
private Long otherChatHmId ;
private String chatStoreRule ;
public String getChatStoreRule() {
return chatStoreRule;
}
public void setChatStoreRule(String chatStoreRule) {
this.chatStoreRule = chatStoreRule;
}
public Long getOtherChatHmId() {
return otherChatHmId;
}
......
......@@ -82,6 +82,25 @@ public class TabQwMomentPlan implements Serializable{
*/
private Integer mediaLinkFlag ;
private Integer analyseFlag ;
private Integer analyseDay ;
public Integer getAnalyseFlag() {
return analyseFlag;
}
public void setAnalyseFlag(Integer analyseFlag) {
this.analyseFlag = analyseFlag;
}
public Integer getAnalyseDay() {
return analyseDay;
}
public void setAnalyseDay(Integer analyseDay) {
this.analyseDay = analyseDay;
}
public Integer getMediaLinkFlag() {
return mediaLinkFlag;
}
......
package com.gic.haoban.manage.service.pojo;
import java.io.Serializable;
public class HmStoreNumBO implements Serializable {
private Long chatHmId ;
private int num ;
public Long getChatHmId() {
return chatHmId;
}
public void setChatHmId(Long chatHmId) {
this.chatHmId = chatHmId;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
package com.gic.haoban.manage.service.pojo;
import java.io.Serializable;
public class StaffStoreNumBO implements Serializable {
private String staffId ;
private int num ;
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
......@@ -44,6 +44,16 @@ public class GroupChatHmBO implements Serializable{
private Integer statusFlag ;
// 可以群数
private Integer usableChatCount;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public Integer getUsableChatCount() {
return usableChatCount;
......
......@@ -41,6 +41,16 @@ public class HmLinkBO implements Serializable {
/**0删除 1正常*/
private Integer statusFlag;
private Long otherChatHmId ;
// [{"type":1服务门店2协管3lbs4指定人群,"open":1}]
private String chatStoreRule ;
public String getChatStoreRule() {
return chatStoreRule;
}
public void setChatStoreRule(String chatStoreRule) {
this.chatStoreRule = chatStoreRule;
}
public Long getOtherChatHmId() {
return otherChatHmId;
......
......@@ -204,4 +204,6 @@ public interface StaffClerkRelationService {
List<String> listAllStaffIdForOpenStaff(String enterpriseId,String wxEnterpriseId,String clerkId , List<String> storeIdList);
ServiceResponse<Map<String, List<String>>> listClerkForCanvas(String wxEnterpriseId, String enterpriseId, String creatorId, String storeFilterId);
Map<String,Boolean> staffManyStore(List<String> staffIdList);
}
package com.gic.haoban.manage.service.service.chat;
import java.util.List;
import java.util.Map;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
......@@ -63,4 +64,11 @@ public interface GroupChatHmService {
Page<GroupChatHmMemberRelationDTO> memberGroupChatHmPage(String enterpriseId, String memberId, BasePageInfo basePageInfo);
Integer memberJoinGroupChatHmCount(String enterpriseId, String memberId);
/**
* 活码包含的群主有多个门店
* @param wxEnterpriseId
* @return
*/
Map<Long,Boolean> hasManyOwnerStore(String wxEnterpriseId, List<Long> chatHmIdList);
}
\ No newline at end of file
package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.GroupChatHmMemberRelationDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.*;
import com.gic.haoban.manage.service.pojo.HmStoreNumBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmMemberRelationBO;
import com.gic.haoban.manage.service.service.chat.GroupChatUserService;
import org.apache.commons.collections.CollectionUtils;
......@@ -471,4 +465,18 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
public Integer memberJoinGroupChatHmCount(String enterpriseId, String memberId) {
return groupChatUserMapper.getMemberJoinChatGroupCountByHmName(enterpriseId, memberId, "骑行");
}
@Override
public Map<Long,Boolean> hasManyOwnerStore(String wxEnterpriseId, List<Long> chatHmIdList) {
Map<Long, Boolean> map = new HashMap<>() ;
List<HmStoreNumBO> list = this.groupChatHmMapper.hasManyOwnerStore(wxEnterpriseId, chatHmIdList);
if(CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
map.put(item.getChatHmId(),item.getNum()>1) ;
}) ;
}
return map ;
}
}
\ No newline at end of file
......@@ -15,6 +15,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.enterprise.api.service.StoreWidgetService;
import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.pojo.StaffStoreNumBO;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -682,4 +683,17 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
map = list.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,Collectors.mapping(StaffClerkRelationDTO::getClerkId,Collectors.toList()))) ;
return ServiceResponse.success(map) ;
}
// 成员是否绑定多加家门店
@Override
public Map<String, Boolean> staffManyStore(List<String> staffIdList) {
Map<String, Boolean> map = new HashMap<>() ;
List<StaffStoreNumBO> list = this.tabHaobanStaffClerkRelationMapper.staffStoreNum(staffIdList) ;
if(CollectionUtils.isNotEmpty(list)) {
list.forEach(item -> {
map.put(item.getStaffId(),item.getNum()>1) ;
}) ;
}
return map ;
}
}
......@@ -9,6 +9,11 @@ import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONArray;
import com.gic.api.base.commons.BusinessException;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.service.context.chat.JoinRuleManager;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
......@@ -121,6 +126,8 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
private GroupChatHmService groupChatHmService;
@Autowired
private TabHaobanStaffClerkRelationMapper staffClerkRelationMapper;
@Autowired
private JoinRuleManager joinRuleManager ;
@Override
public ServiceResponse<String> getHmLinkUrl() {
......@@ -184,7 +191,6 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
String mixPhone, String unionid, String memberId, HmLinkBO link, HmLinkWxaDTO retDTO) {
Long hmId = link.getOtherChatHmId();
Long linkId = link.getLinkId();
List<HmLinkChatDTO> hmList = this.hmLinkChatService.listByLinkId(wxEnterpriseId, enterpriseId, linkId);
if (StringUtils.isNotEmpty(mixPhone)) {
String mobile = this.keyDataService.getMobile(mixPhone, link.getShortCode());
log.info("查询手机号,mobile={},mixPhone={}", mobile, mixPhone);
......@@ -193,14 +199,61 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
memberId = mobileMemberId;
}
}
if (CollectionUtils.isNotEmpty(hmList)) {
for (HmLinkChatDTO item : hmList) {
boolean flag = this.memberCondition(enterpriseId, memberId, item, link.getCreatorId(),
link.getUpdateTime());
if (flag) {
log.info("使用特殊群活码={}", item.getChatHmId());
hmId = item.getChatHmId();
break;
String chatStoreRule = link.getChatStoreRule() ;
log.info("活码规则={},memberId={}",chatStoreRule,memberId);
if(StringUtils.isBlank(chatStoreRule)) {
log.info("无活码规则配置");
return ServiceResponse.failure("9999", "群活码不存在");
}
// [{"type":1服务门店2协管3lbs4指定人群,"open":1}]
JSONArray arr = JSONArray.parseArray(chatStoreRule) ;
GroupChatActivityHmQDTO hmQDTO = new GroupChatActivityHmQDTO() ;
hmQDTO.setEnterpriseId(enterpriseId);
hmQDTO.setInviteeMemberId(memberId);
GroupChatActivityDTO chatActivity = new GroupChatActivityDTO() ;
chatActivity.setWxEnterpriseId(wxEnterpriseId);
hmQDTO.setChatActivity(chatActivity);
for(int i=0;i< arr.size();i++) {
JSONObject json = arr.getJSONObject(i) ;
int open = json.getIntValue("open") ;
if(open == 1) {
int type = json.getIntValue("type") ;
if(type==1) {
List<GroupChatHmBO> hmBOList = joinRuleManager.handleMainStore(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
hmId = hmBOList.get(0).getChatHmId() ;
break;
}
}else if(type==2) {
List<GroupChatHmBO> hmBOList = joinRuleManager.handleOtherStore(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
hmId = hmBOList.get(0).getChatHmId() ;
break;
}
}else if(type==3) {
try {
List<GroupChatHmBO> hmBOList = joinRuleManager.handleLbs(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
hmId = hmBOList.get(0).getChatHmId() ;
break;
}
} catch (BusinessException e) {
log.info("获取lbs失败");
continue;
}
}else if(type==4) {
List<HmLinkChatDTO> hmList = this.hmLinkChatService.listByLinkId(wxEnterpriseId, enterpriseId, linkId);
if (CollectionUtils.isNotEmpty(hmList)) {
for (HmLinkChatDTO item : hmList) {
boolean flag = this.memberCondition(enterpriseId, memberId, item, link.getCreatorId(),
link.getUpdateTime());
if (flag) {
log.info("使用特殊群活码={}", item.getChatHmId());
hmId = item.getChatHmId();
break;
}
}
}
}
}
}
......
......@@ -514,5 +514,14 @@
</if>
GROUP BY a.staff_id
</select>
<select id="staffStoreNum" resultType="com.gic.haoban.manage.service.pojo.StaffStoreNumBO">
select a.staff_id staffId, count(a.store_id) num from tab_haoban_staff_clerk_relation a
where a.status_flag = 1 and a.staff_id in
<foreach collection="staffIdList" item="item" separator="," open="(" close=")">
#{item}
</foreach>
and a.store_id is not null
</select>
</mapper>
\ No newline at end of file
......@@ -25,6 +25,7 @@
<result column="chat_count" property="chatCount" />
<result column="link_count" property="linkCount"/>
<result column="status_flag" property="statusFlag"/>
<result column="store_id" property="storeId" />
</resultMap>
<sql id="Base_Column_List">
chat_hm_id,
......@@ -46,7 +47,7 @@
create_time,
update_time,
chat_count, link_count ,
status_flag
status_flag , store_id
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert"
......@@ -72,7 +73,7 @@
create_time,
update_time,
chat_count,
status_flag
status_flag , store_id
)VALUES(
#{chatHmId},
#{chatHmCode},
......@@ -93,7 +94,7 @@
now(),
now(),
#{chatCount},
1
1 , #{storeId}
)
]]>
</insert>
......@@ -118,7 +119,7 @@
modifier_id=#{modifierId},
modifier_name=#{modifierName},
update_time=now(),
chat_count=#{chatCount}
chat_count=#{chatCount} , store_id = #{storeId}
where chat_hm_id = #{chatHmId}
]]>
</update>
......@@ -169,6 +170,9 @@
#{id}
</foreach>
</if>
<if test="null != storeId and ''!=storeId">
and store_id = #{storeId}
</if>
order by create_time desc
</select>
<select id="listAvailableByEnterpriseId"
......@@ -183,4 +187,24 @@
order by create_time desc
</select>
<select id="listByStoreIdList" resultMap="result-map-tabHaobanGroupChatHm">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_hm where store_id in
<foreach collection="storeIdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
and status_flag = 1 and delete_flag = 0
</select>
<select id="hasManyOwnerStore" resultType="com.gic.haoban.manage.service.pojo.HmStoreNumBO">
SELECT chat_hm_id , COUNT(1) FROM (
SELECT a.chat_hm_id , c.store_id FROM `tab_haoban_group_chat_hm_relation` a
LEFT JOIN tab_haoban_group_chat b ON a.group_chat_id = b.group_chat_id
LEFT JOIN `tab_haoban_staff_clerk_relation` c ON c.staff_id = b.staff_id AND c.status_flag = 1
WHERE a.delete_flag = 0 AND a.status_flag = 1 AND b.delete_flag = 0 AND c.`store_id` <![CDATA[ <> ]]> '' AND a.chat_hm_id in
<foreach collection="chatHmIdList" item="item" index="index" separator="," open="(" close=")">
#{item}
</foreach>
GROUP BY a.`chat_hm_id` , c.`store_id` ) t GROUP BY chat_hm_id
</select>
</mapper>
\ No newline at end of file
......@@ -94,7 +94,7 @@
</foreach>
</if>
<if test="null != searchParams and ''!=searchParams ">
and b.staff_name like #{searchParams}
and b.staff_name like #{searchParams}g
</if>
and b.status_flag = 1
<if test="departmentIdList != null and departmentIdList.size() > 0">
......
......@@ -23,6 +23,7 @@
<result column="status_flag" property="statusFlag"/>
<result column="short_code" property="shortCode" />
<result column="other_chat_hm_id" property="otherChatHmId"/>
<result column="chat_store_rule" property="chatStoreRule"/>
</resultMap>
<sql id="Base_Column_List">
link_id,
......@@ -43,7 +44,7 @@
store_rule_json,
custom_rule_json,
member_label_id,
status_flag,short_code , other_chat_hm_id
status_flag,short_code , other_chat_hm_id , chat_store_rule
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.hm.TabHmLink">
......@@ -67,7 +68,7 @@
store_rule_json,
custom_rule_json,
member_label_id,
status_flag , short_code , other_chat_hm_id
status_flag , short_code , other_chat_hm_id , chat_store_rule
)VALUES(
#{linkId,jdbcType=BIGINT},
#{linkCode,jdbcType=VARCHAR},
......@@ -87,7 +88,7 @@
#{storeRuleJson,jdbcType=VARCHAR},
#{customRuleJson,jdbcType=VARCHAR},
#{memberLabelId,jdbcType=VARCHAR},
#{statusFlag,jdbcType=INTEGER} , #{shortCode} , #{otherChatHmId}
#{statusFlag,jdbcType=INTEGER} , #{shortCode} , #{otherChatHmId} , #{chatStoreRule}
)
]]>
</insert>
......@@ -105,7 +106,7 @@
update_time=now(),
store_rule_json=#{storeRuleJson,jdbcType=VARCHAR},
custom_rule_json=#{customRuleJson,jdbcType=VARCHAR},
member_label_id=#{memberLabelId,jdbcType=VARCHAR} , other_chat_hm_id = #{otherChatHmId}
member_label_id=#{memberLabelId,jdbcType=VARCHAR} , other_chat_hm_id = #{otherChatHmId} , chat_store_rule = #{chatStoreRule}
WHERE link_id = #{linkId}
]]>
</update>
......
......@@ -188,6 +188,14 @@
status_flag != 0 order by create_time desc limit 1
</select>
<select id="listNewLog" resultMap="result-map-tabHaobanWxUserAddLog">
select
<include refid="Base_Column_List"/>
from tab_haoban_wx_user_add_log where
external_userid=#{externalUserid} and staff_id =#{staffId} and
status_flag != 0 and friend_clerk_id = #{friendClerkId} order by create_time desc limit 1
</select>
<select id="listForPage" parameterType="com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogSearchQDTO"
resultMap="result-map-tabHaobanWxUserAddLog">
select
......
import com.gic.api.base.commons.BasePageInfo;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.qdto.OpenStaffPageQDTO;
import com.gic.haoban.manage.api.service.HaobanTimerApiService;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService;
import com.gic.haoban.manage.api.service.role.HaobanRoleApiService;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.service.OpenStaffService;
import com.gic.weimob.common.Md5Util;
import com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogQDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class HalfFriendTest {
@Autowired
private OpenStaffService openStaffService ;
private TabHaobanExternalClerkRelatedMapper haobanExternalClerkRelatedMapper ;
@Autowired
private NoticeMessageApiService noticeMessageApiService ;
private WxUserAddLogMapper wxUserAddLogMapper ;
@Autowired
private WxUserAddLogService wxUserAddLogService ;
@Test
public void tt() {
Map<String,String> map = new HashMap<>() ;
map.put("accountName","111222333111K") ;
map.put("errorTime","2024年4月20日 22:22") ;
map.put("reason","异常断开") ;
this.noticeMessageApiService.sendMessageForOpenStaff("ff8080815dacd3a2015dacd3ef5c0000","xgh","首次托管,需要二次验证");
/*OpenStaffPageQDTO qdto = new OpenStaffPageQDTO() ;
qdto.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
qdto.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
qdto.setClerkId("b2ef17cce11f476b996d0b27ebadf7fb");
qdto.setStoreGroupIdList(Arrays.asList("ff8080815dacd3a2015dacd3f4fc0033"));
qdto.setStaffParams("徐高华");
BasePageInfo basePageInfo = new BasePageInfo() ;
basePageInfo.setPageSize(11);
basePageInfo.setPageNum(1);
this.openStaffService.page(qdto,basePageInfo) ;*/
int messageType = NoticeMessageTypeEnum.HAOBAN_OPEN_STAFF_LOGOUT.getType();
// NoticeMessageUtil.sendNoticeMessageByStaff("ff8080815dacd3a2015dacd3ef5c0000","52995ea8c81c4cc286a9b82bc36a7081","-1",messageType,null,map,null);
String wxEnterpriseId = "b8f2f238e73844219d8c1ac563cec0db" ;
String staffId = "c153778c9ec24c189ac31e67748677e3";
List<TabHaobanExternalClerkRelated> list = this.haobanExternalClerkRelatedMapper.listByWxEnterpriseIdAndWxUserIdAndStatus(wxEnterpriseId, staffId, Arrays.asList(2)) ;
int count = 0 ;
for(TabHaobanExternalClerkRelated item : list) {
String externalUserId = item.getExternalUserId() ;
// a2d6b466a4fc436099a949db3756f6c1
// 8be4cae54aec4dbe90079d824f3c1490
String clerkId = "8be4cae54aec4dbe90079d824f3c1490" ;
TabWxUserAddLog log = this.wxUserAddLogMapper.listNewLog(externalUserId,staffId,clerkId) ;
if(null == log || log.getStatusFlag()!=3) {
continue;
}
count++ ;
System.err.println("insert"+externalUserId + " " + count);
//添加日志
WxUserAddLogQDTO wxUserAddLogQDTO = new WxUserAddLogQDTO();
wxUserAddLogQDTO.setWxEnterpriseId(wxEnterpriseId);
wxUserAddLogQDTO.setEnterpriseId(item.getEnterpriseId());
wxUserAddLogQDTO.setMemberId(item.getMemberId());
wxUserAddLogQDTO.setUnionid(item.getUnionid());
wxUserAddLogQDTO.setDelFlag(true);
wxUserAddLogQDTO.setExternalUserid(item.getExternalUserId());
wxUserAddLogQDTO.setStaffId(item.getStaffId());
wxUserAddLogQDTO.setClerkId(log.getFriendClerkId());
if(null != item.getAddTime()) {
wxUserAddLogQDTO.setQwAddTime(item.getAddTime());
}
wxUserAddLogQDTO.setFriendClerkId(log.getFriendClerkId());
wxUserAddLogQDTO.setFriendStoreId(log.getFriendStoreId());
this.wxUserAddLogService.save(wxUserAddLogQDTO);
}
}
}
......@@ -14,6 +14,7 @@ import com.gic.commons.util.ExcelUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.EnterpriseDetailDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
......@@ -23,6 +24,7 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
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.WxEnterpriseRelatedApiService;
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;
......@@ -68,6 +70,8 @@ public class GroupChatController {
private GroupChatUserExcelHandler groupChatUserExcelHandler;
@Autowired
private GroupChatUserQuitExcelHandler groupChatUserQuitExcelHandler ;
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService ;
@RequestMapping("get-set-gic-flag")
public RestResponse<Object> getFlag() {
......@@ -268,6 +272,20 @@ public class GroupChatController {
public RestResponse<Object> ownerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
// 是否需要显示门店名称
String paramsEnterpriseId = qdto.getParamsEnterpriseId() ;
if(StringUtils.isNotBlank(paramsEnterpriseId)) {
qdto.setShowStoreNames(1);
}else {
List<EnterpriseDetailDTO> list = this.wxEnterpriseRelatedApiService.listEnterpriseByWxEnterpriseId(loginUser.getWxEnterpriseId(),loginUser.getPhoneNumber(),false) ;
if(CollectionUtils.isEmpty(list)) {
return RestResponse.failure("-1", "未关联gic商户");
}
if(list.size()==1) {
qdto.setShowStoreNames(1);
}
qdto.setParamsEnterpriseId(list.get(0).getEnterpriseId());
}
ServiceResponse<Page<GroupChatOwnerDTO>> resp = this.groupChatApiService.listOwnerPage(qdto, basePageInfo);
return RestResponse.successResult(resp.getResult());
}
......
......@@ -15,6 +15,8 @@ import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
......@@ -88,6 +90,8 @@ public class GroupChatHmController {
private DownloadReportService downloadReportService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private StoreService storeService ;
@RequestMapping("add")
@GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HB_QHM, optType = GicLogRecordOptTypeEnum.HB_1002_01, userFunc = LogRecordUserServiceImpl.class, optPage = "群活码-新建活码")
......@@ -283,6 +287,16 @@ public class GroupChatHmController {
if (vo.getUsableChatCount() == 0) {
vo.setUseRemark("无可加入的群聊");
}
if(StringUtils.isNotBlank(vo.getStoreId())) {
StoreDTO storeDTO = this.storeService.getStoreByIdNoStatus(vo.getStoreId());
if(null != storeDTO) {
vo.setStoreName(storeDTO.getStoreName());
vo.setStoreCode(storeDTO.getStoreCode());
if(null != storeDTO.getStatus() && storeDTO.getStatus()!=0) {
vo.setStoreStatus(1);
}
}
}
});
}
return RestResponse.successResult(retPage);
......@@ -298,6 +312,16 @@ public class GroupChatHmController {
return RestResponse.failure("1", "群活码不存在");
}
GroupChatHmDTO hm = linkResp.getResult();
if(StringUtils.isNotBlank(hm.getStoreId())) {
StoreDTO storeDTO = this.storeService.getStoreByIdNoStatus(hm.getStoreId());
if(null != storeDTO) {
hm.setStoreName(storeDTO.getStoreName());
hm.setStoreCode(storeDTO.getStoreCode());
if(null != storeDTO.getStatus() && storeDTO.getStatus()!=0) {
hm.setStoreStatus(1);
}
}
}
return RestResponse.successResult(hm);
}
......
......@@ -69,6 +69,26 @@ public class QwMomentPlanQO implements Serializable {
*/
private Integer mediaLinkFlag ;
private Integer analyseFlag ;
private Integer analyseDay ;
public Integer getAnalyseFlag() {
return analyseFlag;
}
public void setAnalyseFlag(Integer analyseFlag) {
this.analyseFlag = analyseFlag;
}
public Integer getAnalyseDay() {
return analyseDay;
}
public void setAnalyseDay(Integer analyseDay) {
this.analyseDay = analyseDay;
}
public Integer getMediaLinkFlag() {
return mediaLinkFlag;
}
......
......@@ -42,6 +42,43 @@ public class GroupChatHmVO implements Serializable {
// 可以群数
private Integer usableChatCount;
private String useRemark;
private String storeId ;
private String storeName ;
private String storeCode ;
// 0已删除 1有效
private int storeStatus ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public int getStoreStatus() {
return storeStatus;
}
public void setStoreStatus(int storeStatus) {
this.storeStatus = storeStatus;
}
public String getUseRemark() {
return useRemark;
......
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