Commit dfbe4484 by 徐高华

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

Feature/xgh/202506迭代

See merge request !3061
parents c36e009e 86f9c432
...@@ -47,8 +47,45 @@ public class GroupChatHmDTO implements Serializable { ...@@ -47,8 +47,45 @@ public class GroupChatHmDTO implements Serializable {
private Integer statusFlag ; private Integer statusFlag ;
// 可以群数 // 可以群数
private Integer usableChatCount; 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() { public Integer getUsableChatCount() {
return usableChatCount; return usableChatCount;
} }
......
...@@ -28,7 +28,17 @@ public class GroupChatOwnerDTO implements Serializable { ...@@ -28,7 +28,17 @@ public class GroupChatOwnerDTO implements Serializable {
private String wxOpenUserId; private String wxOpenUserId;
private java.util.Date createTime; private java.util.Date createTime;
private java.util.Date updateTime; private java.util.Date updateTime;
private String storeNames ;
public String getStoreNames() {
return storeNames;
}
public void setStoreNames(String storeNames) {
this.storeNames = storeNames;
}
public String getWxUserId() { public String getWxUserId() {
return wxUserId; return wxUserId;
} }
......
...@@ -46,6 +46,17 @@ public class HmLinkDTO implements Serializable { ...@@ -46,6 +46,17 @@ public class HmLinkDTO implements Serializable {
// 群活码配置 // 群活码配置
private List<HmLinkChatDTO> linkChatList ; 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() { public List<HmLinkChatDTO> getLinkChatList() {
return linkChatList; return linkChatList;
} }
......
...@@ -31,6 +31,25 @@ public class HmLinkStoreDTO implements Serializable { ...@@ -31,6 +31,25 @@ public class HmLinkStoreDTO implements Serializable {
private java.util.Date createTime; private java.util.Date createTime;
private java.util.Date updateTime; private java.util.Date updateTime;
private double distance ;
private String distanceStr ;
public double getDistance() {
return distance;
}
public void setDistance(double distance) {
this.distance = distance;
}
public String getDistanceStr() {
return distanceStr;
}
public void setDistanceStr(String distanceStr) {
this.distanceStr = distanceStr;
}
public String getStoreAddress() { public String getStoreAddress() {
return storeAddress; return storeAddress;
} }
......
...@@ -25,7 +25,7 @@ public class HmLinkWxaDTO implements Serializable { ...@@ -25,7 +25,7 @@ public class HmLinkWxaDTO implements Serializable {
// 二维码 // 二维码
private String hmQrcode; private String hmQrcode;
// 自定义门店规则1推荐门店 2附近门店 // 自定义门店规则1推荐门店 2附近门店 3:获取群活码需要传入经纬度
private int storeType; private int storeType;
// 是否展示省市区门店查询 // 是否展示省市区门店查询
private int selectStoreFlag; private int selectStoreFlag;
...@@ -40,6 +40,18 @@ public class HmLinkWxaDTO implements Serializable { ...@@ -40,6 +40,18 @@ public class HmLinkWxaDTO implements Serializable {
*/ */
private Integer qwFriendFlag ; private Integer qwFriendFlag ;
// 是否群活码
private boolean isGroupChatHm ;
public boolean isGroupChatHm() {
return isGroupChatHm;
}
public void setGroupChatHm(boolean isGroupChatHm) {
this.isGroupChatHm = isGroupChatHm;
}
public Integer getQwFriendFlag() { public Integer getQwFriendFlag() {
return qwFriendFlag; return qwFriendFlag;
} }
......
...@@ -78,6 +78,26 @@ public class QwMomentPlanDTO implements Serializable{ ...@@ -78,6 +78,26 @@ public class QwMomentPlanDTO implements Serializable{
*/ */
private List<QwMomentPlanAttendDTO> clerkList ; 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() { public Integer getMediaLinkFlag() {
return mediaLinkFlag; return mediaLinkFlag;
} }
......
...@@ -23,6 +23,17 @@ public class ChatHmSearchQDTO extends PageQo implements Serializable { ...@@ -23,6 +23,17 @@ public class ChatHmSearchQDTO extends PageQo implements Serializable {
private List<String> creatorIdList; private List<String> creatorIdList;
private Integer linkCount; private Integer linkCount;
private int allFlag; private int allFlag;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getSearchParamsCode() { public String getSearchParamsCode() {
return searchParamsCode; return searchParamsCode;
} }
......
...@@ -26,7 +26,38 @@ public class OwnerSearchQDTO implements Serializable { ...@@ -26,7 +26,38 @@ public class OwnerSearchQDTO implements Serializable {
private List<String> departmentIdList ; private List<String> departmentIdList ;
// 1查询在职 2查离职 // 1查询在职 2查离职
private int status = 1; private int status = 1;
// 选择的企业id(过滤条件)
private String paramsEnterpriseId ;
// 显示门店名称的企业
private String showNameEnterpriseId ;
// 是否需要显示门店名称
private int showStoreNames ;
public String getShowNameEnterpriseId() {
return showNameEnterpriseId;
}
public void setShowNameEnterpriseId(String showNameEnterpriseId) {
this.showNameEnterpriseId = showNameEnterpriseId;
}
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() { public List<String> getDepartmentIdList() {
return departmentIdList; return departmentIdList;
} }
......
...@@ -49,6 +49,17 @@ public class GroupChatActivityHmQDTO implements Serializable { ...@@ -49,6 +49,17 @@ public class GroupChatActivityHmQDTO implements Serializable {
private GroupChatActivityDTO chatActivity; private GroupChatActivityDTO chatActivity;
// 指定门店
private String inStoreId ;
public String getInStoreId() {
return inStoreId;
}
public void setInStoreId(String inStoreId) {
this.inStoreId = inStoreId;
}
public Long getChatActivityId() { public Long getChatActivityId() {
return chatActivityId; return chatActivityId;
} }
......
package com.gic.haoban.manage.api.qdto.chat;
import java.io.Serializable;
public class LinkHmFromWxaQDTO implements Serializable {
/**
* 纬度
*/
private String latitude;
/**
* 经度
*/
private String longitude;
/**
* 省市编码
*/
private String districtCode;
/**
* 小程序是否需要位置信息的查询
*/
private Integer justLocationFlag ;
public Integer getJustLocationFlag() {
return justLocationFlag;
}
public void setJustLocationFlag(Integer justLocationFlag) {
this.justLocationFlag = justLocationFlag;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getDistrictCode() {
return districtCode;
}
public void setDistrictCode(String districtCode) {
this.districtCode = districtCode;
}
}
...@@ -63,6 +63,9 @@ public interface HandoverOperationApiService { ...@@ -63,6 +63,9 @@ public interface HandoverOperationApiService {
*/ */
public Page<HandoverExternalDTO> pageHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds, List<String> transferIds, BasePageInfo pageInfo); public Page<HandoverExternalDTO> pageHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds, List<String> transferIds, BasePageInfo pageInfo);
List<HandoverExternalDTO> listAllHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds);
/** /**
* 分配的客户列表 * 分配的客户列表
* *
......
...@@ -97,4 +97,6 @@ public interface MaterialApiService { ...@@ -97,4 +97,6 @@ public interface MaterialApiService {
//mediaType1群发 2朋友圈 //mediaType1群发 2朋友圈
public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ; public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ;
void getImageMediaId(String wxEnterpriseId, List<String> idList) ;
} }
...@@ -88,7 +88,7 @@ public interface QywxTagApiService { ...@@ -88,7 +88,7 @@ public interface QywxTagApiService {
/** /**
* 同步企业微信导入gic的会员标签 * 企业微信打标-gic侧的处理
* *
* @param wxEnterpriseId * @param wxEnterpriseId
* @param externalUserId * @param externalUserId
......
...@@ -5,6 +5,7 @@ import java.util.List; ...@@ -5,6 +5,7 @@ import java.util.List;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.hm.HmLinkDTO; import com.gic.haoban.manage.api.dto.hm.HmLinkDTO;
import com.gic.haoban.manage.api.dto.hm.HmLinkWxaDTO; import com.gic.haoban.manage.api.dto.hm.HmLinkWxaDTO;
import com.gic.haoban.manage.api.qdto.chat.LinkHmFromWxaQDTO;
/** /**
* *
...@@ -53,7 +54,10 @@ public interface HmLinkApiService { ...@@ -53,7 +54,10 @@ public interface HmLinkApiService {
*/ */
public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String storeId, public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String storeId,
String clerkId, String linkShortCode, String mixPhone, String unionid , String memberId); String clerkId, String linkShortCode, String mixPhone, String unionid , String memberId);
public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String storeId,
String clerkId, String linkShortCode, String mixPhone, String unionid , String memberId , LinkHmFromWxaQDTO qdto);
/** /**
* *
* @Title: getMemberClerkHm * @Title: getMemberClerkHm
......
...@@ -135,7 +135,7 @@ public class QywxCallbackController extends WebBaseController { ...@@ -135,7 +135,7 @@ public class QywxCallbackController extends WebBaseController {
private void chat(String uuid, JSONObject json) { private void chat(String uuid, JSONObject json) {
int msgtype = json.getIntValue("msgtype"); int msgtype = json.getIntValue("msgtype");
// 群发任务 // 群发任务
if (msgtype == 573) { if (msgtype == 573 || msgtype==529) {
json.put("uuid", uuid); json.put("uuid", uuid);
this.openQwApiService.saveNotice(json.toJSONString()); this.openQwApiService.saveNotice(json.toJSONString());
return; return;
......
...@@ -158,6 +158,21 @@ function corpidToken() { ...@@ -158,6 +158,21 @@ function corpidToken() {
}); });
} }
function corpidTokenSelf() {
var corpids = $("#corpids").val() ;
if(!corpids || corpids.indexOf("#")==-1) {
alert("请输入corpid#secret") ;
return ;
}
$.ajax({
type:"post",
url: host+'/gic/weixin3th/qywx-token/reflush-token?tokenType=4&corpid='+corpids.split("#")[0]+"&suiteId="+corpids.split("#")[1] ,
success:function(retData) {
alert("已刷新")
}
});
}
function suiteToken() { function suiteToken() {
$.ajax({ $.ajax({
type:"post", type:"post",
...@@ -183,6 +198,7 @@ function provideToken() { ...@@ -183,6 +198,7 @@ function provideToken() {
<body> <body>
<div class="container" id="couponDiv"> <div class="container" id="couponDiv">
<div class="tab-pane" id="tab2" style="padding:5px"> <div class="tab-pane" id="tab2" style="padding:5px">
<button onclick="corpidTokenSelf()">自建应用token强刷(access-token)</button>
<button onclick="corpidToken()">企业应用token(access-token)</button> <button onclick="corpidToken()">企业应用token(access-token)</button>
<button onclick="suiteToken()">好办应用token(suite-access-token)</button> <button onclick="suiteToken()">好办应用token(suite-access-token)</button>
<button onclick="provideToken()">服务商token</button> <button onclick="provideToken()">服务商token</button>
......
...@@ -10,6 +10,7 @@ import com.gic.api.base.commons.Constant; ...@@ -10,6 +10,7 @@ import com.gic.api.base.commons.Constant;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO; import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService; 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.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO; import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.dto.StoreSearchDTO; import com.gic.enterprise.api.dto.StoreSearchDTO;
...@@ -22,10 +23,12 @@ import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO; ...@@ -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.ChatActivityJoinEnum;
import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinRuleEnum; import com.gic.haoban.manage.api.enums.chat.ChatActivityJoinRuleEnum;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO; 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.GroupChatHmRelationMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper; 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.dao.mapper.chat.GroupChatUserMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat; 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.TabGroupChatHmRelation;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser; import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO; import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
...@@ -79,6 +82,8 @@ public class JoinRuleManager { ...@@ -79,6 +82,8 @@ public class JoinRuleManager {
private ESMemberInfoService esMemberInfoService; private ESMemberInfoService esMemberInfoService;
@Autowired @Autowired
private MemberTagGroupApiService memberTagGroupApiService; private MemberTagGroupApiService memberTagGroupApiService;
@Autowired
private GroupChatHmMapper groupChatHmMapper ;
private final Map<ChatActivityJoinRuleEnum, FunctionWithException<GroupChatActivityHmQDTO,List<GroupChatHmBO>>> ruleHandlers = new HashMap<>(); private final Map<ChatActivityJoinRuleEnum, FunctionWithException<GroupChatActivityHmQDTO,List<GroupChatHmBO>>> ruleHandlers = new HashMap<>();
...@@ -241,18 +246,22 @@ public class JoinRuleManager { ...@@ -241,18 +246,22 @@ public class JoinRuleManager {
* @param activityHmQDTO qdto * @param activityHmQDTO qdto
* @return * @return
*/ */
private List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) { public List<GroupChatHmBO> handleMainStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId()); if(StringUtils.isNotBlank(activityHmQDTO.getInStoreId())) {
if (memberStoreRelation == null) { return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(activityHmQDTO.getInStoreId()));
return new ArrayList<>(); }else {
} MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
String mainStoreId = memberStoreRelation.getMainStoreId(); if (memberStoreRelation == null) {
if (StringUtils.isBlank(mainStoreId)) { return new ArrayList<>();
return new ArrayList<>(); }
String mainStoreId = memberStoreRelation.getMainStoreId();
if (StringUtils.isBlank(mainStoreId)) {
return new ArrayList<>();
}
return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(mainStoreId));
} }
return getByStoreIdList(enterpriseId,wxEnterpriseId, Lists.newArrayList(mainStoreId));
} }
/** /**
...@@ -260,7 +269,7 @@ public class JoinRuleManager { ...@@ -260,7 +269,7 @@ public class JoinRuleManager {
* @param activityHmQDTO qdto * @param activityHmQDTO qdto
* @return * @return
*/ */
private List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) { public List<GroupChatHmBO> handleOtherStore(GroupChatActivityHmQDTO activityHmQDTO) {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId()); MemberStoreResp memberStoreRelation = memberStoreService.getMemberStoreRelation(enterpriseId, activityHmQDTO.getInviteeMemberId());
...@@ -280,7 +289,7 @@ public class JoinRuleManager { ...@@ -280,7 +289,7 @@ public class JoinRuleManager {
* @return * @return
* @throws BusinessException * @throws BusinessException
*/ */
private List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException { public List<GroupChatHmBO> handleLbs(GroupChatActivityHmQDTO activityHmQDTO) throws BusinessException {
String enterpriseId = activityHmQDTO.getEnterpriseId(); String enterpriseId = activityHmQDTO.getEnterpriseId();
String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId(); String wxEnterpriseId = activityHmQDTO.getChatActivity().getWxEnterpriseId();
boolean skipArea = activityHmQDTO.isSkipArea(); boolean skipArea = activityHmQDTO.isSkipArea();
...@@ -304,6 +313,7 @@ public class JoinRuleManager { ...@@ -304,6 +313,7 @@ public class JoinRuleManager {
} }
//获取storeId对应活码 //获取storeId对应活码
Map<String, List<GroupChatHmBO>> storeToHmMap = getStoreIdToGroupChatHmBOMap(enterpriseId, wxEnterpriseId, storeIds); Map<String, List<GroupChatHmBO>> storeToHmMap = getStoreIdToGroupChatHmBOMap(enterpriseId, wxEnterpriseId, storeIds);
addSetHm(storeIds, storeToHmMap);
if (MapUtil.isEmpty(storeToHmMap)) { if (MapUtil.isEmpty(storeToHmMap)) {
return new ArrayList<>(); return new ArrayList<>();
} }
...@@ -327,6 +337,24 @@ public class JoinRuleManager { ...@@ -327,6 +337,24 @@ public class JoinRuleManager {
return storeToHmMap.get(storeId); return storeToHmMap.get(storeId);
} }
public void addSetHm(List<String> storeIds, Map<String, List<GroupChatHmBO>> storeToHmMap) {
List<TabGroupChatHm> hmList = groupChatHmMapper.listByStoreIdList(storeIds) ;
if(CollectionUtils.isNotEmpty(hmList)) {
List<GroupChatHmBO> setList = EntityUtil.changeEntityListByJSON(GroupChatHmBO.class,hmList) ;
Map<String,List<GroupChatHmBO>> setMap = setList.stream().collect(Collectors.groupingBy(o->o.getStoreId(),Collectors.toList()));
Set<String> set = setMap.keySet();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String key = it.next() ;
if(null != storeToHmMap.get(key)) {
storeToHmMap.get(key).addAll(setMap.get(key));
}else {
storeToHmMap.put(key,setMap.get(key));
}
}
}
}
/** /**
* 根据门店id获取群活码 * 根据门店id获取群活码
* @param enterpriseId 企业id * @param enterpriseId 企业id
...@@ -336,6 +364,10 @@ public class JoinRuleManager { ...@@ -336,6 +364,10 @@ public class JoinRuleManager {
*/ */
private List<GroupChatHmBO> getByStoreIdList(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) { private List<GroupChatHmBO> getByStoreIdList(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(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); Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,1000);
List<ClerkDTO> clerkList = page.getResult(); List<ClerkDTO> clerkList = page.getResult();
...@@ -355,6 +387,13 @@ public class JoinRuleManager { ...@@ -355,6 +387,13 @@ public class JoinRuleManager {
if (CollectionUtils.isEmpty(staffIdList)) { if (CollectionUtils.isEmpty(staffIdList)) {
return new ArrayList<>(); 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查询群 // 通过staffId查询群
List<TabGroupChat> groupChatList = groupChatMapper.listByStaffIds(enterpriseId, staffIdList); List<TabGroupChat> groupChatList = groupChatMapper.listByStaffIds(enterpriseId, staffIdList);
if (CollectionUtils.isEmpty(groupChatList)) { if (CollectionUtils.isEmpty(groupChatList)) {
...@@ -377,7 +416,13 @@ public class JoinRuleManager { ...@@ -377,7 +416,13 @@ public class JoinRuleManager {
hmSearchQDTO.setChatHmIdList(chatHmIdList); hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1); hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo); 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;
} }
...@@ -388,7 +433,7 @@ public class JoinRuleManager { ...@@ -388,7 +433,7 @@ public class JoinRuleManager {
* @param storeIdList 门店id列表 * @param storeIdList 门店id列表
* @return * @return
*/ */
private Map<String, List<GroupChatHmBO>> getStoreIdToGroupChatHmBOMap(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) { public Map<String, List<GroupChatHmBO>> getStoreIdToGroupChatHmBOMap(String enterpriseId,String wxEnterpriseId,List<String> storeIdList) {
logger.info("门店id列表:{}",JSON.toJSONString(storeIdList)); logger.info("门店id列表:{}",JSON.toJSONString(storeIdList));
Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,10000); Page<ClerkDTO> page = clerkService.pageClerkByNameOrCode(enterpriseId,"",storeIdList,1,10000);
List<ClerkDTO> clerkList = page.getResult(); List<ClerkDTO> clerkList = page.getResult();
...@@ -407,6 +452,13 @@ public class JoinRuleManager { ...@@ -407,6 +452,13 @@ public class JoinRuleManager {
if (CollectionUtils.isEmpty(staffIdList)) { if (CollectionUtils.isEmpty(staffIdList)) {
return new HashMap<>(); 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, Map<String, Set<String>> storeToStaffMap = relationDTOList.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,
Collectors.mapping(StaffClerkRelationDTO::getStaffId, Collectors.toSet()))); Collectors.mapping(StaffClerkRelationDTO::getStaffId, Collectors.toSet())));
//通过staffId查询群 //通过staffId查询群
...@@ -436,11 +488,16 @@ public class JoinRuleManager { ...@@ -436,11 +488,16 @@ public class JoinRuleManager {
hmSearchQDTO.setChatHmIdList(chatHmIdList); hmSearchQDTO.setChatHmIdList(chatHmIdList);
hmSearchQDTO.setStatus(1); hmSearchQDTO.setStatus(1);
Page<GroupChatHmBO> listPage = groupChatHmService.listPage(hmSearchQDTO, basePageInfo); 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<>(); 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); Map<String, List<GroupChatHmBO>> storeIdToGroupChatHmBOMap = convertMap(storeToStaffMap, staffToGroupChatMap, groupChatToHmMap, groupHmMap);
return storeIdToGroupChatHmBOMap; return storeIdToGroupChatHmBOMap;
......
package com.gic.haoban.manage.service.dao.mapper; package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.HandoverExternalDTO;
import com.gic.haoban.manage.api.dto.HandoverStaffFriendCountDTO; import com.gic.haoban.manage.api.dto.HandoverStaffFriendCountDTO;
import com.gic.haoban.manage.service.entity.TabHandoverExternal; import com.gic.haoban.manage.service.entity.TabHandoverExternal;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -76,4 +77,6 @@ public interface HandoverExternalMapper { ...@@ -76,4 +77,6 @@ public interface HandoverExternalMapper {
* @return * @return
*/ */
List<HandoverStaffFriendCountDTO> listPreCountByStaffIds(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIds") List<String> staffIds); List<HandoverStaffFriendCountDTO> listPreCountByStaffIds(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIds") List<String> staffIds);
List<TabHandoverExternal> listAllByStaffIds(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("staffIds") List<String> staffIds, @Param("search") String search, @Param("status") Integer status);
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.service.dao.mapper; ...@@ -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.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation; import com.gic.haoban.manage.service.entity.TabHaobanStaffClerkRelation;
import com.gic.haoban.manage.service.entity.ext.MemberStaffRelExtDO; import com.gic.haoban.manage.service.entity.ext.MemberStaffRelExtDO;
import com.gic.haoban.manage.service.pojo.StaffStoreNumBO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date; import java.util.Date;
...@@ -150,4 +151,6 @@ public interface TabHaobanStaffClerkRelationMapper { ...@@ -150,4 +151,6 @@ public interface TabHaobanStaffClerkRelationMapper {
List<TabHaobanStaffClerkRelation> taskoverClerkIdListAll(@Param("staffId")String staffId) ; 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<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; ...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List; import java.util.List;
import com.gic.haoban.manage.service.pojo.HmStoreNumBO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.ChatHmSearchQDTO;
...@@ -33,5 +34,9 @@ public interface GroupChatHmMapper { ...@@ -33,5 +34,9 @@ public interface GroupChatHmMapper {
public List<TabGroupChatHm> list(ChatHmSearchQDTO qdto); public List<TabGroupChatHm> list(ChatHmSearchQDTO qdto);
List<TabGroupChatHm> listByStoreIdList(@Param("storeIdList") List<String> storeIdList) ;
List<TabGroupChatHm> listAvailableByEnterpriseId(@Param("enterpriseId") String enterpriseId); 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 { ...@@ -54,6 +54,10 @@ public interface WxUserAddLogMapper {
public TabWxUserAddLog selectNewLog(@Param("externalUserid") String externalUserid, public TabWxUserAddLog selectNewLog(@Param("externalUserid") String externalUserid,
@Param("staffId") String staffId); @Param("staffId") String staffId);
public TabWxUserAddLog listNewLog(@Param("externalUserid") String externalUserid,
@Param("staffId") String staffId , @Param("friendClerkId")String friendClerkId);
/** /**
* *
* @Title: listAllForDel * @Title: listAllForDel
......
...@@ -41,6 +41,15 @@ public class TabGroupChatHm implements Serializable{ ...@@ -41,6 +41,15 @@ public class TabGroupChatHm implements Serializable{
// 1有效 2作废 3待生效 // 1有效 2作废 3待生效
private Integer statusFlag ; private Integer statusFlag ;
private Integer linkCount ; private Integer linkCount ;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public Integer getLinkCount() { public Integer getLinkCount() {
return linkCount; return linkCount;
......
...@@ -43,6 +43,16 @@ public class TabHmLink implements Serializable { ...@@ -43,6 +43,16 @@ public class TabHmLink implements Serializable {
private Long otherChatHmId ; private Long otherChatHmId ;
private String chatStoreRule ;
public String getChatStoreRule() {
return chatStoreRule;
}
public void setChatStoreRule(String chatStoreRule) {
this.chatStoreRule = chatStoreRule;
}
public Long getOtherChatHmId() { public Long getOtherChatHmId() {
return otherChatHmId; return otherChatHmId;
} }
......
...@@ -82,6 +82,25 @@ public class TabQwMomentPlan implements Serializable{ ...@@ -82,6 +82,25 @@ public class TabQwMomentPlan implements Serializable{
*/ */
private Integer mediaLinkFlag ; 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() { public Integer getMediaLinkFlag() {
return mediaLinkFlag; 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{ ...@@ -44,6 +44,16 @@ public class GroupChatHmBO implements Serializable{
private Integer statusFlag ; private Integer statusFlag ;
// 可以群数 // 可以群数
private Integer usableChatCount; private Integer usableChatCount;
private String storeId ;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public Integer getUsableChatCount() { public Integer getUsableChatCount() {
return usableChatCount; return usableChatCount;
......
...@@ -41,6 +41,16 @@ public class HmLinkBO implements Serializable { ...@@ -41,6 +41,16 @@ public class HmLinkBO implements Serializable {
/**0删除 1正常*/ /**0删除 1正常*/
private Integer statusFlag; private Integer statusFlag;
private Long otherChatHmId ; 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() { public Long getOtherChatHmId() {
return otherChatHmId; return otherChatHmId;
......
...@@ -123,4 +123,6 @@ public interface HandoverService { ...@@ -123,4 +123,6 @@ public interface HandoverService {
Boolean filterHandoverStaff(String wxEnterpriseId, String wxUserId); Boolean filterHandoverStaff(String wxEnterpriseId, String wxUserId);
public void delHandoverStaff(String wxEnterpriseId, List<String> wxUserIds) ; public void delHandoverStaff(String wxEnterpriseId, List<String> wxUserIds) ;
List<HandoverExternalDTO> listAllByStaffIds(String wxEnterpriseId, String search, List<String> staffIds);
} }
...@@ -204,4 +204,6 @@ public interface StaffClerkRelationService { ...@@ -204,4 +204,6 @@ public interface StaffClerkRelationService {
List<String> listAllStaffIdForOpenStaff(String enterpriseId,String wxEnterpriseId,String clerkId , List<String> storeIdList); 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); 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; package com.gic.haoban.manage.service.service.chat;
import java.util.List; import java.util.List;
import java.util.Map;
import com.gic.api.base.commons.BasePageInfo; import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
...@@ -63,4 +64,11 @@ public interface GroupChatHmService { ...@@ -63,4 +64,11 @@ public interface GroupChatHmService {
Page<GroupChatHmMemberRelationDTO> memberGroupChatHmPage(String enterpriseId, String memberId, BasePageInfo basePageInfo); Page<GroupChatHmMemberRelationDTO> memberGroupChatHmPage(String enterpriseId, String memberId, BasePageInfo basePageInfo);
Integer memberJoinGroupChatHmCount(String enterpriseId, String memberId); 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; package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList; import java.util.*;
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.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.GroupChatHmMemberRelationDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatHmMemberRelationDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.*; 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.pojo.bo.chat.GroupChatHmMemberRelationBO;
import com.gic.haoban.manage.service.service.chat.GroupChatUserService; import com.gic.haoban.manage.service.service.chat.GroupChatUserService;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -471,4 +465,18 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -471,4 +465,18 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
public Integer memberJoinGroupChatHmCount(String enterpriseId, String memberId) { public Integer memberJoinGroupChatHmCount(String enterpriseId, String memberId) {
return groupChatUserMapper.getMemberJoinChatGroupCountByHmName(enterpriseId, 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
...@@ -1122,6 +1122,40 @@ public class GroupChatServiceImpl implements GroupChatService { ...@@ -1122,6 +1122,40 @@ public class GroupChatServiceImpl implements GroupChatService {
PageHelper.startPage(basePageInfo); PageHelper.startPage(basePageInfo);
List<GroupChatOwnerDTO> list = this.groupChatOwnerMapper.listOwner(qdto); List<GroupChatOwnerDTO> list = this.groupChatOwnerMapper.listOwner(qdto);
Page<GroupChatOwnerDTO> retPage = PageHelperUtils.changePageHelperToCurrentPage(list, GroupChatOwnerDTO.class); Page<GroupChatOwnerDTO> retPage = PageHelperUtils.changePageHelperToCurrentPage(list, GroupChatOwnerDTO.class);
// 拼门店名称
if(CollectionUtils.isNotEmpty(retPage.getResult()) && qdto.getShowStoreNames()==1 && StringUtils.isNotBlank(qdto.getShowNameEnterpriseId())) {
List<String> staffIdList = retPage.getResult().stream().map(GroupChatOwnerDTO::getStaffId).collect(Collectors.toList());
List<StaffClerkRelationDTO> staffList = this.staffClerkRelationService.listByWxEnterpriseIdAndStaffId(qdto.getWxEnterpriseId(),staffIdList.stream().collect(Collectors.toSet())) ;
Map<String,List<StaffClerkRelationDTO>> staffMap = staffList.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStaffId)) ;
staffList = staffList.stream().filter(o->o.getEnterpriseId().equals(qdto.getShowNameEnterpriseId()) && StringUtils.isNotBlank(o.getStoreId())).collect(Collectors.toList());
Map<String,String> storeNameMap = new HashMap<>() ;
if(CollectionUtils.isNotEmpty(staffList)) {
List<String> storeIdList = staffList.stream().filter(o->StringUtils.isNotEmpty(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toList()) ;
if(CollectionUtils.isNotEmpty(storeIdList)) {
String[] arr = new String[storeIdList.size()] ;
for(int i=0;i<storeIdList.size();i++) {
arr[i] = storeIdList.get(i) ;
}
List<StoreDTO> storeList = this.storeService.getStores(arr) ;
if(CollectionUtils.isNotEmpty(storeList)) {
storeNameMap = storeList.stream().collect(Collectors.toMap(StoreDTO::getStoreId, o->o.getStoreName(),(k1,k2)->k1)) ;
}
}
}
for(GroupChatOwnerDTO item : retPage.getResult()) {
String staffId = item.getStaffId() ;
List<StaffClerkRelationDTO> relationList = staffMap.get(staffId) ;
List<String> storeNameList = new ArrayList<>() ;
if(CollectionUtils.isNotEmpty(relationList)) {
for (StaffClerkRelationDTO relation : relationList) {
if(StringUtils.isNotBlank(relation.getStoreId()) && storeNameMap.containsKey(relation.getStoreId())) {
storeNameList.add(storeNameMap.get(relation.getStoreId()));
}
}
}
item.setStoreNames(String.join("、", storeNameList));
}
}
return retPage; return retPage;
} }
......
...@@ -21,7 +21,7 @@ public interface HmLinkChatService { ...@@ -21,7 +21,7 @@ public interface HmLinkChatService {
public List<HmLinkChatDTO> listByLinkId(String wxEnterpriseId, String enterpriseId, Long linkId); public List<HmLinkChatDTO> listByLinkId(String wxEnterpriseId, String enterpriseId, Long linkId);
public int save(Long linkId, List<HmLinkChatDTO> list , Long otherHmId , TabHmLink link); public int save(String wxEnterpriseId,String enterpriseId,Long linkId, List<HmLinkChatDTO> list , Long otherHmId , TabHmLink link);
public Page<HmLinkChatDTO> listPage(HmLinkChatQDTO qdto, BasePageInfo basePageInfo); public Page<HmLinkChatDTO> listPage(HmLinkChatQDTO qdto, BasePageInfo basePageInfo);
......
...@@ -46,48 +46,49 @@ public class HmLinkChatServiceImpl implements HmLinkChatService { ...@@ -46,48 +46,49 @@ public class HmLinkChatServiceImpl implements HmLinkChatService {
} }
@Override @Override
public int save(Long linkId, List<HmLinkChatDTO> list, Long otherHmId, TabHmLink link) { public int save(String wxEnterpriseId,String enterpriseId,Long linkId, List<HmLinkChatDTO> list, Long otherHmId, TabHmLink oldLink) {
log.info("保存群链接={}", JSON.toJSONString(list)); log.info("保存群链接={}", JSON.toJSONString(list));
List<HmLinkChatDTO> updateList = list.stream().filter(dto -> null != dto.getLinkChatId()) List<HmLinkChatDTO> oldList = this.hmLinkChatMapper.listByLinkId(wxEnterpriseId, enterpriseId, linkId) ;
.collect(Collectors.toList()); if(CollectionUtils.isEmpty(list)) {
List<Long> notDelIdList = updateList.stream().map(dto -> dto.getLinkChatId()).collect(Collectors.toList()); log.info("删除关联群活码={},{}", linkId, null);
log.info("不删除关联群活码={},{}", linkId, notDelIdList); this.hmLinkChatMapper.delete(linkId, null , 0);
String wxEnterpriseId = list.get(0).getWxEnterpriseId(); }
String enterpriseId = list.get(0).getEnterpriseId(); if(CollectionUtils.isNotEmpty(list)) {
// 先查出历史记录 List<HmLinkChatDTO> updateList = list.stream().filter(dto -> null != dto.getLinkChatId()).collect(Collectors.toList());
List<HmLinkChatDTO> oldList = this.hmLinkChatMapper.listByLinkId(wxEnterpriseId, enterpriseId, linkId); List<Long> notDelIdList = updateList.stream().map(dto -> dto.getLinkChatId()).collect(Collectors.toList());
this.hmLinkChatMapper.delete(linkId, notDelIdList , 0); log.info("不删除关联群活码={},{}", linkId, notDelIdList);
if (CollectionUtils.isNotEmpty(updateList)) { this.hmLinkChatMapper.delete(linkId, notDelIdList , 0);
for (HmLinkChatDTO item : updateList) { if (CollectionUtils.isNotEmpty(updateList)) {
TabHmLinkChat entity = EntityUtil.changeEntityByJSON(TabHmLinkChat.class, item); for (HmLinkChatDTO item : updateList) {
this.hmLinkChatMapper.update(entity); TabHmLinkChat entity = EntityUtil.changeEntityByJSON(TabHmLinkChat.class, item);
if (item.getMemberType() == 0) { this.hmLinkChatMapper.update(entity);
screeningDetailService.save(HmLinkChatService.ES_ID + entity.getLinkChatId(), item.getSearchJson()); if (item.getMemberType() == 0) {
screeningDetailService.save(HmLinkChatService.ES_ID + entity.getLinkChatId(), item.getSearchJson());
}
} }
} }
} List<HmLinkChatDTO> addList = list.stream().filter(dto -> null == dto.getLinkChatId())
List<HmLinkChatDTO> addList = list.stream().filter(dto -> null == dto.getLinkChatId()) .collect(Collectors.toList());
.collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(addList)) {
if (CollectionUtils.isNotEmpty(addList)) { for (HmLinkChatDTO dto : addList) {
for (HmLinkChatDTO dto : addList) { TabHmLinkChat entity = EntityUtil.changeEntityByJSON(TabHmLinkChat.class, dto);
TabHmLinkChat entity = EntityUtil.changeEntityByJSON(TabHmLinkChat.class, dto); entity.setLinkChatId(UniqueIdUtils.uniqueLong());
entity.setLinkChatId(UniqueIdUtils.uniqueLong()); entity.setLinkId(linkId);
entity.setLinkId(linkId); this.hmLinkChatMapper.insert(entity);
this.hmLinkChatMapper.insert(entity); if (dto.getMemberType() == 0) {
if (dto.getMemberType() == 0) { screeningDetailService.save(HmLinkChatService.ES_ID + entity.getLinkChatId(), dto.getSearchJson());
screeningDetailService.save(HmLinkChatService.ES_ID + entity.getLinkChatId(), dto.getSearchJson()); }
} }
} }
} }
// 更新其他链接 // 更新其他链接
List<Long> chatHmIdList = list.stream().map(dto -> dto.getChatHmId()).collect(Collectors.toList()); List<Long> chatHmIdList = list.stream().map(dto -> dto.getChatHmId()).collect(Collectors.toList());
chatHmIdList.add(otherHmId); chatHmIdList.add(otherHmId);
boolean addOther = false; boolean addOther = false;
if (null != link) { if (null != oldLink) {
chatHmIdList.add(link.getOtherChatHmId()); chatHmIdList.add(oldLink.getOtherChatHmId());
if (!otherHmId.equals(link.getOtherChatHmId())) { if (!otherHmId.equals(oldLink.getOtherChatHmId())) {
this.hmLinkChatMapper.delete(linkId, Arrays.asList(link.getOtherChatHmId()) , 1); this.hmLinkChatMapper.delete(linkId, Arrays.asList(oldLink.getOtherChatHmId()) , 1);
addOther = true; addOther = true;
} }
} else { } else {
...@@ -107,7 +108,6 @@ public class HmLinkChatServiceImpl implements HmLinkChatService { ...@@ -107,7 +108,6 @@ public class HmLinkChatServiceImpl implements HmLinkChatService {
other.setLinkChatId(UniqueIdUtils.uniqueLong()); other.setLinkChatId(UniqueIdUtils.uniqueLong());
this.hmLinkChatMapper.insert(other); this.hmLinkChatMapper.insert(other);
} }
// 统计活码关联的链接数量 // 统计活码关联的链接数量
for (HmLinkChatDTO old : oldList) { for (HmLinkChatDTO old : oldList) {
chatHmIdList.add(old.getChatHmId()); chatHmIdList.add(old.getChatHmId());
......
package com.gic.haoban.manage.service.service.hm.impl; package com.gic.haoban.manage.service.service.hm.impl;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -141,6 +142,7 @@ public class HmLinkServiceImpl implements HmLinkService { ...@@ -141,6 +142,7 @@ public class HmLinkServiceImpl implements HmLinkService {
this.delCache(oldLink.getLinkId(), oldLink.getShortCode()); this.delCache(oldLink.getLinkId(), oldLink.getShortCode());
oldWelcomeId = oldLink.getWelcomeId(); oldWelcomeId = oldLink.getWelcomeId();
TabHmLink entity = EntityUtil.changeEntityByJSON(TabHmLink.class, dto); TabHmLink entity = EntityUtil.changeEntityByJSON(TabHmLink.class, dto);
this.linkMapper.update(entity); this.linkMapper.update(entity);
} }
// 单人活码 // 单人活码
...@@ -159,12 +161,15 @@ public class HmLinkServiceImpl implements HmLinkService { ...@@ -159,12 +161,15 @@ public class HmLinkServiceImpl implements HmLinkService {
// 群活码 // 群活码
if (dto.getLinkType() == HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) { if (dto.getLinkType() == HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
int index = 0; int index = 0;
if(CollectionUtils.isEmpty(dto.getLinkChatList())) {
dto.setLinkChatList(new ArrayList<>());
}
for (HmLinkChatDTO item : dto.getLinkChatList()) { for (HmLinkChatDTO item : dto.getLinkChatList()) {
item.setWxEnterpriseId(dto.getWxEnterpriseId()); item.setWxEnterpriseId(dto.getWxEnterpriseId());
item.setEnterpriseId(dto.getEnterpriseId()); item.setEnterpriseId(dto.getEnterpriseId());
item.setSortNum(index++); item.setSortNum(index++);
} }
this.hmLinkChatService.save(linkId, dto.getLinkChatList() , dto.getOtherChatHmId() , oldLink); this.hmLinkChatService.save(dto.getWxEnterpriseId(),dto.getEnterpriseId(),linkId, dto.getLinkChatList() , dto.getOtherChatHmId() , oldLink);
} }
return dto.getLinkCode(); return dto.getLinkCode();
} }
......
...@@ -9,6 +9,7 @@ import java.util.Map; ...@@ -9,6 +9,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.commons.util.EntityUtil;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -244,6 +245,16 @@ public class HandoverServiceImpl implements HandoverService { ...@@ -244,6 +245,16 @@ public class HandoverServiceImpl implements HandoverService {
} }
@Override @Override
public List<HandoverExternalDTO> listAllByStaffIds(String wxEnterpriseId, String search, List<String> staffIds) {
List<TabHandoverExternal> list = handoverExternalMapper.listAllByStaffIds(wxEnterpriseId, staffIds , search , 1);
if(null != list) {
List<HandoverExternalDTO> retList = EntityUtil.changeEntityListByJSON(HandoverExternalDTO.class, list) ;
return retList;
}
return new ArrayList<>() ;
}
@Override
public List<TabHandoverExternal> listByIds(String wxEnterpriseId, List<String> ids) { public List<TabHandoverExternal> listByIds(String wxEnterpriseId, List<String> ids) {
return handoverExternalMapper.listByIds(wxEnterpriseId, ids); return handoverExternalMapper.listByIds(wxEnterpriseId, ids);
} }
......
...@@ -15,6 +15,7 @@ import com.gic.api.base.commons.ServiceResponse; ...@@ -15,6 +15,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil; import com.gic.commons.util.DateUtil;
import com.gic.enterprise.api.service.StoreWidgetService; import com.gic.enterprise.api.service.StoreWidgetService;
import com.gic.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
import com.gic.haoban.manage.service.pojo.StaffStoreNumBO;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -678,4 +679,17 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService ...@@ -678,4 +679,17 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
map = list.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,Collectors.mapping(StaffClerkRelationDTO::getClerkId,Collectors.toList()))) ; map = list.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,Collectors.mapping(StaffClerkRelationDTO::getClerkId,Collectors.toList()))) ;
return ServiceResponse.success(map) ; 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 ;
}
} }
...@@ -10,9 +10,11 @@ import com.gic.commons.util.UniqueIdUtils; ...@@ -10,9 +10,11 @@ import com.gic.commons.util.UniqueIdUtils;
import com.gic.content.api.service.ContentProducerApiService; import com.gic.content.api.service.ContentProducerApiService;
import com.gic.haoban.app.customer.service.api.service.InnerApiService; import com.gic.haoban.app.customer.service.api.service.InnerApiService;
import com.gic.haoban.common.utils.StringUtil; import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.CommonMQDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.StaffDTO; import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.enums.ChannelCodeEnum; import com.gic.haoban.manage.api.enums.ChannelCodeEnum;
import com.gic.haoban.manage.api.service.HaobanCommonMQApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService; import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.api.service.hm.HmQrcodeApiService; import com.gic.haoban.manage.api.service.hm.HmQrcodeApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
...@@ -78,6 +80,8 @@ public class StaffServiceImpl implements StaffService { ...@@ -78,6 +80,8 @@ public class StaffServiceImpl implements StaffService {
private StaffClerkRelationApiService staffClerkRelationApiService ; private StaffClerkRelationApiService staffClerkRelationApiService ;
@Autowired @Autowired
private StaffDepartmentRelatedService staffDepartmentRelatedService ; private StaffDepartmentRelatedService staffDepartmentRelatedService ;
@Autowired
private HaobanCommonMQApiService haobanCommonMQApiService ;
@Override @Override
public TabHaobanStaff selectById(String id) { public TabHaobanStaff selectById(String id) {
...@@ -113,6 +117,12 @@ public class StaffServiceImpl implements StaffService { ...@@ -113,6 +117,12 @@ public class StaffServiceImpl implements StaffService {
return staff.getStaffId() ; return staff.getStaffId() ;
} }
mapper.insertSelective(tab); mapper.insertSelective(tab);
CommonMQDTO mq = new CommonMQDTO() ;
mq.setType(11) ;
Map<String,String> map = new HashMap<>() ;
map.put("staffId",tab.getStaffId()) ;
mq.setParams(map);
this.haobanCommonMQApiService.putCommonDelayMessage(mq, 10);
RedisUtil.unlock(lockKey); RedisUtil.unlock(lockKey);
return tab.getStaffId(); return tab.getStaffId();
} }
......
...@@ -79,6 +79,9 @@ public class QwMomentPlanAttendServiceImpl implements QwMomentPlanAttendService ...@@ -79,6 +79,9 @@ public class QwMomentPlanAttendServiceImpl implements QwMomentPlanAttendService
// 0已失效 1待完成 2已完成 // 0已失效 1待完成 2已完成
Integer sendStatus = qdto.getSendStatus() ; Integer sendStatus = qdto.getSendStatus() ;
TabQwMomentPlan plan = this.qwMomentPlanMapper.getById(qdto.getPlanId()) ; TabQwMomentPlan plan = this.qwMomentPlanMapper.getById(qdto.getPlanId()) ;
if(null == plan) {
return ServiceResponse.failure("9999","活动不存在") ;
}
boolean isEnd = plan.getStatusFlag()==2 || plan.getEndDate().getTime() <= System.currentTimeMillis() ; boolean isEnd = plan.getStatusFlag()==2 || plan.getEndDate().getTime() <= System.currentTimeMillis() ;
if(null != sendStatus && isEnd && sendStatus==1) { if(null != sendStatus && isEnd && sendStatus==1) {
return ServiceResponse.success(new Page<>()); return ServiceResponse.success(new Page<>());
......
...@@ -155,9 +155,11 @@ public class QwMomentPlanServiceImpl implements QwMomentPlanService { ...@@ -155,9 +155,11 @@ public class QwMomentPlanServiceImpl implements QwMomentPlanService {
plan.setBeginDate(plan.getPublishTime()); plan.setBeginDate(plan.getPublishTime());
Date endTime = DateUtil.getEndTimeOfDay(DateUtil.addDay(plan.getBeginDate(), plan.getExpireDays())); Date endTime = DateUtil.getEndTimeOfDay(DateUtil.addDay(plan.getBeginDate(), plan.getExpireDays()));
plan.setEndDate(endTime); plan.setEndDate(endTime);
if(null == planId) { if(null == planId || null == this.qwMomentPlanMapper.getById(planId)) {
createFlag = true ; createFlag = true ;
planId = UniqueIdUtils.uniqueLong(); if(null == planId) {
planId = UniqueIdUtils.uniqueLong();
}
dto.setPlanId(planId); dto.setPlanId(planId);
plan.setPlanId(planId); plan.setPlanId(planId);
plan.setCreateTime(now); plan.setCreateTime(now);
......
...@@ -238,6 +238,21 @@ public class HandoverOperationApiServiceImpl implements HandoverOperationApiServ ...@@ -238,6 +238,21 @@ public class HandoverOperationApiServiceImpl implements HandoverOperationApiServ
} }
@Override @Override
public List<HandoverExternalDTO> listAllHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds) {
List<HandoverExternalDTO> retList = handoverService.listAllByStaffIds(wxEnterpriseId, search, staffIds);
if(CollectionUtils.isEmpty(retList)) {
return retList ;
}
List<TabHaobanStaff> haobanStaffs = staffService.listNoStatusByStaffIds(wxEnterpriseId, staffIds);
Map<String, String> staffNameMap = haobanStaffs.stream().collect(Collectors.toMap(dto -> dto.getStaffId(), dto -> dto.getStaffName(), (o, n) -> o));
retList.forEach(dto -> {
String staffName = staffNameMap.get(dto.getStaffId());
dto.setStaffName(staffName);
});
return retList;
}
@Override
public Page<ExternalInfoDTO> pageHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds, List<String> transferIds, BasePageInfo pageInfo, int status) { public Page<ExternalInfoDTO> pageHandoverFriend(String wxEnterpriseId, String search, List<String> staffIds, List<String> transferIds, BasePageInfo pageInfo, int status) {
Page<HandoverExternalDTO> retPage = handoverService.pageByStaffIds(wxEnterpriseId, search, staffIds, transferIds, pageInfo, status); Page<HandoverExternalDTO> retPage = handoverService.pageByStaffIds(wxEnterpriseId, search, staffIds, transferIds, pageInfo, status);
if (CollectionUtils.isEmpty(retPage.getResult())) { if (CollectionUtils.isEmpty(retPage.getResult())) {
......
...@@ -12,6 +12,7 @@ import com.gic.commons.util.StringUtil; ...@@ -12,6 +12,7 @@ import com.gic.commons.util.StringUtil;
import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO; import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService; import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService; import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.haoban.manage.service.service.moment.QwMomentPlanAttendService; import com.gic.haoban.manage.service.service.moment.QwMomentPlanAttendService;
import com.gic.haoban.manage.service.service.moment.QwMomentPlanService; import com.gic.haoban.manage.service.service.moment.QwMomentPlanService;
import com.gic.haoban.manage.service.service.role.HaobanMenuService; import com.gic.haoban.manage.service.service.role.HaobanMenuService;
...@@ -65,6 +66,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -65,6 +66,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
private QwMomentPlanService qwMomentPlanService ; private QwMomentPlanService qwMomentPlanService ;
@Autowired @Autowired
private QwMomentPlanAttendService qwMomentPlanAttendService; private QwMomentPlanAttendService qwMomentPlanAttendService;
@Autowired
private GroupChatService groupChatService ;
@Override @Override
public void putCommonMessage(CommonMQDTO dto) { public void putCommonMessage(CommonMQDTO dto) {
...@@ -178,6 +181,10 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -178,6 +181,10 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
Long planId10 = Long.valueOf(map.get("planId")) ; Long planId10 = Long.valueOf(map.get("planId")) ;
this.qwMomentPlanService.getQwData(planId10); this.qwMomentPlanService.getQwData(planId10);
break; break;
case 11 :
String staffId11 = map.get("staffId") ;
this.groupChatService.initStaffGroupChat(staffId11);
break;
default: default:
break; break;
} }
......
...@@ -575,10 +575,25 @@ public class MaterialApiServiceImpl implements MaterialApiService { ...@@ -575,10 +575,25 @@ public class MaterialApiServiceImpl implements MaterialApiService {
public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) { public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) {
List<String> list = this.materialService.getImageMediaId(wxEnterpriseId, imageList, mediaType); List<String> list = this.materialService.getImageMediaId(wxEnterpriseId, imageList, mediaType);
if(CollectionUtils.isNotEmpty(list)) { if(CollectionUtils.isNotEmpty(list)) {
list.forEach(materialId -> { for(String materialId : list) {
materialService.getHasChangeMadieMaterialById(materialId, 2); MaterialDTO m = materialService.getHasChangeMadieMaterialById(materialId, 2);
}) ; Integer materialType = m.getMaterialType();
String madiaId = m.getMediaId();
//需要上传的类型
if (Arrays.asList(2, 3, 4, 5, 6, 7).contains(materialType) && StringUtils.isBlank(madiaId)) {
return null ;
}
}
} }
return list ; return list ;
} }
@Override
public void getImageMediaId(String wxEnterpriseId, List<String> idList) {
if(CollectionUtils.isNotEmpty(idList)) {
idList.forEach(materialId -> {
materialService.getHasChangeMadieMaterialById(materialId, 1);
}) ;
}
}
} }
...@@ -7,6 +7,7 @@ import java.util.stream.Collectors; ...@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum; import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.qdto.CanvasInfoQDTO; import com.gic.haoban.manage.api.qdto.CanvasInfoQDTO;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil; import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper;
import com.gic.haoban.manage.service.pojo.GicNewMemberBO; import com.gic.haoban.manage.service.pojo.GicNewMemberBO;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.util.EventUtils; import com.gic.haoban.manage.service.util.EventUtils;
...@@ -177,7 +178,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -177,7 +178,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private QywxErrorLogService qywxErrorLogService ; private QywxErrorLogService qywxErrorLogService ;
@Autowired @Autowired
private MemberTagService memberTagService ; private MemberTagService memberTagService ;
@Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper ;
GicMQClient instance = GICMQClientUtil.getClientInstance(); GicMQClient instance = GICMQClientUtil.getClientInstance();
@Override @Override
...@@ -277,7 +280,17 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -277,7 +280,17 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String staffId, String enterpriseId) { String staffId, String enterpriseId) {
MemberStoreDTO dto = new MemberStoreDTO(); MemberStoreDTO dto = new MemberStoreDTO();
log.info("好办顾客详情={},staffId={}",externalUserid,staffId); log.info("好办顾客详情={},staffId={}",externalUserid,staffId);
List<TabHaobanExternalClerkRelated> list = externalClerkRelatedService.listByExternalUseridAndWxUserId(externalUserid, staffId); // 如果是区经
StaffClerkRelationDTO relation = this.tabHaobanStaffClerkRelationMapper.getOneByStoreIdAndStaffId(null,staffId) ;
List<TabHaobanExternalClerkRelated> list = null ;
if(null != relation && StringUtils.isBlank(relation.getStoreId())) {
// 区经
log.info("区经");
list = externalClerkRelatedService.listByExternalUseridAndWxUserId(externalUserid, null);
}else {
list = externalClerkRelatedService.listByExternalUseridAndWxUserId(externalUserid, staffId);
}
if (CollectionUtil.isEmpty(list)) { if (CollectionUtil.isEmpty(list)) {
log.info("好友记录查不到"); log.info("好友记录查不到");
dto.setErrmsg("客户不存在"); dto.setErrmsg("客户不存在");
...@@ -781,7 +794,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -781,7 +794,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
// 如果gic会员上没标签,不同步 // 如果gic会员上没标签,不同步
List<MemberTagDTO> memberTags = memberTagService.listMemberClerkManualTag(enterpriseId, memberId); List<MemberTagDTO> memberTags = memberTagService.listMemberClerkManualTag(enterpriseId, memberId);
if (CollectionUtils.isNotEmpty(memberTags)) { if (CollectionUtils.isNotEmpty(memberTags)) {
this.pushTagSync(memberId, wxEnterpriseId, enterpriseId,null); this.pushTagSync(memberId, wxEnterpriseId, enterpriseId,null,dto.isFlush());
}else { }else {
log.info("gic会员上无标签,不同步企微侧标签"); log.info("gic会员上无标签,不同步企微侧标签");
} }
...@@ -1238,7 +1251,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1238,7 +1251,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
return; return;
} }
pushTagSync(dto.getExternalUserid(), wxUserId pushTagSync(dto.getExternalUserid(), wxUserId
, GicQywxSyncTypeEnum.FRIEND_TAG_SYNC.getType(), QywxSyncTaskTypeEnum.MEMBER_SYNC.getType(), wxEnterprise.getWxEnterpriseId(), null,null); , GicQywxSyncTypeEnum.FRIEND_TAG_SYNC.getType(), QywxSyncTaskTypeEnum.MEMBER_SYNC.getType(), wxEnterprise.getWxEnterpriseId(), null,null , true);
} }
@Override @Override
...@@ -1592,7 +1605,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1592,7 +1605,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
this.saveExternalClerk(memberId, staffId, unionDTO, staffClerkRelation, statusFlag , 1); this.saveExternalClerk(memberId, staffId, unionDTO, staffClerkRelation, statusFlag , 1);
if(StringUtils.isNotBlank(memberId)) { if(StringUtils.isNotBlank(memberId)) {
if(null == RedisUtil.getCache("zhuan_self")) { if(null == RedisUtil.getCache("zhuan_self")) {
this.pushTagSync(memberId, wxEnterpriseId, enterpriseId,dto.getExternalUseridInfo()); this.pushTagSync(memberId, wxEnterpriseId, enterpriseId,dto.getExternalUseridInfo() , true);
}else { }else {
log.info("不同步标签"); log.info("不同步标签");
} }
...@@ -1625,7 +1638,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1625,7 +1638,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
/** /**
* 同步 * 同步
*/ */
private void pushTagSync(String dataId, String taskId, int syncType, int taskType, String wxEnterpriseId, String enterpriseId,String externalUseridInfo) { private void pushTagSync(String dataId, String taskId, int syncType, int taskType, String wxEnterpriseId, String enterpriseId,String externalUseridInfo ,boolean flushFlag) {
QywxTagSyncInfoPojo pojo = new QywxTagSyncInfoPojo(); QywxTagSyncInfoPojo pojo = new QywxTagSyncInfoPojo();
pojo.setDataId(dataId); pojo.setDataId(dataId);
pojo.setTaskId(taskId); pojo.setTaskId(taskId);
...@@ -1647,7 +1660,11 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1647,7 +1660,11 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
delay = 90 ; delay = 90 ;
log.info("美邦延迟处理"); log.info("美邦延迟处理");
} }
clientInstance.sendMessage("qywxTagSyncDeal", JSONObject.toJSONString(pojo),delay); String mqName = "qywxTagSyncDeal" ;
if(!flushFlag) {
mqName = "qywxTagSyncDealAddFriend" ;
}
clientInstance.sendMessage(mqName, JSONObject.toJSONString(pojo),delay);
} catch (Exception e) { } catch (Exception e) {
log.info("异常:{}", e); log.info("异常:{}", e);
} }
...@@ -1656,8 +1673,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1656,8 +1673,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
/** /**
* 同步 * 同步
*/ */
private void pushTagSync(String memberId, String wxEnterpriseId, String enterpriseId , String externalUseridInfo) { private void pushTagSync(String memberId, String wxEnterpriseId, String enterpriseId , String externalUseridInfo , boolean flushFlag) {
this.pushTagSync(memberId, "-1", GicQywxSyncTypeEnum.SINGLE_WXENT_MEMNER_SYNC.getType(), QywxSyncTaskTypeEnum.MEMBER_SYNC.getType(), wxEnterpriseId, enterpriseId,externalUseridInfo); this.pushTagSync(memberId, "-1", GicQywxSyncTypeEnum.SINGLE_WXENT_MEMNER_SYNC.getType(), QywxSyncTaskTypeEnum.MEMBER_SYNC.getType(), wxEnterpriseId, enterpriseId,externalUseridInfo , flushFlag);
} }
private String saveMemberUnionTable(ExternalUserDTO dto) { private String saveMemberUnionTable(ExternalUserDTO dto) {
...@@ -2080,7 +2097,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -2080,7 +2097,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
qdto.setSence(sence); qdto.setSence(sence);
String memberId = null; String memberId = null;
com.gic.api.base.commons.ServiceResponse<MemberSimpleDetailDTO> resp = this.memberEntranceApiService.enterpriseWechatByFriendEntrance(qdto); com.gic.api.base.commons.ServiceResponse<MemberSimpleDetailDTO> resp = this.memberEntranceApiService.enterpriseWechatByFriendEntrance(qdto);
log.info("刷新好友,创建member,resp={},param={}",JSON.toJSON(resp),JSON.toJSONString(qdto)); log.info("获取创建member,resp={},param={}",JSON.toJSON(resp),JSON.toJSONString(qdto));
if(resp.isSuccess()) { if(resp.isSuccess()) {
MemberSimpleDetailDTO member = resp.getResult() ; MemberSimpleDetailDTO member = resp.getResult() ;
memberId = member.getMemberId() ; memberId = member.getMemberId() ;
......
...@@ -482,6 +482,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -482,6 +482,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
return this.syncFriendTagToQywxByExternalUserId(wxEnterpriseId,enterpriseId,externalUserId,tagItemIds,null); return this.syncFriendTagToQywxByExternalUserId(wxEnterpriseId,enterpriseId,externalUserId,tagItemIds,null);
} }
/**
* gic打标签、加好友、刷新好友时,会以gic侧的标签为准。新增或删除企微侧的客户标签。此外部联系人加的每个staff下都会处理
*/
@Override @Override
public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds, String externalUserInfo) { public ServiceResponse syncFriendTagToQywxByExternalUserId(String wxEnterpriseId, String enterpriseId, String externalUserId, List<String> tagItemIds, String externalUserInfo) {
logger.info("同步gic标签到企业微信:externalUserId={},{},{}", externalUserId, JSONObject.toJSONString(tagItemIds),externalUserInfo); logger.info("同步gic标签到企业微信:externalUserId={},{},{}", externalUserId, JSONObject.toJSONString(tagItemIds),externalUserInfo);
...@@ -544,12 +547,10 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -544,12 +547,10 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
Sets.SetView<String> needSetTags = Sets.difference(entQywxTagKeys, entHasSetQywxTagKeys); Sets.SetView<String> needSetTags = Sets.difference(entQywxTagKeys, entHasSetQywxTagKeys);
//需要删除的标签 //需要删除的标签
Sets.SetView<String> needDelTags = Sets.difference(entHasSetQywxTagKeys, entQywxTagKeys); Sets.SetView<String> needDelTags = Sets.difference(entHasSetQywxTagKeys, entQywxTagKeys);
logger.info("该用户打标签:{}",wxUserId);
if (CollectionUtils.isEmpty(needDelTags) && CollectionUtils.isEmpty(needSetTags)) { if (CollectionUtils.isEmpty(needDelTags) && CollectionUtils.isEmpty(needSetTags)) {
logger.info("不需要操作:{},{}", wxUserId, externalUserId); logger.info("无需处理,staff={}", wxUserId);
return; return;
} }
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("corpid", qwDTO.getThirdCorpid()); jsonObject.put("corpid", qwDTO.getThirdCorpid());
jsonObject.put("suiteId", wxSuiteid); jsonObject.put("suiteId", wxSuiteid);
...@@ -563,7 +564,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -563,7 +564,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
} }
GicMQClient clientInstance = GICMQClientUtil.getClientInstance(); GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try { try {
logger.info("qywxMarkTagMq 该用户打标签:{}",jsonObject.toJSONString()); logger.info("同步企微mq,={}",jsonObject.toJSONString());
clientInstance.sendMessage("qywxMarkTagMq", jsonObject.toJSONString()); clientInstance.sendMessage("qywxMarkTagMq", jsonObject.toJSONString());
} catch (Exception e) { } catch (Exception e) {
logger.info("企微标签同步qywxMarkTagMq发送失败:{}", e.getMessage(), e); logger.info("企微标签同步qywxMarkTagMq发送失败:{}", e.getMessage(), e);
...@@ -704,13 +705,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -704,13 +705,13 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
Set<String> noSyncTagItemIds = new HashSet<>(); Set<String> noSyncTagItemIds = new HashSet<>();
if (!CollectionUtils.isEmpty(gicItems)) { if (!CollectionUtils.isEmpty(gicItems)) {
noSyncTagItemIds = gicItems.stream().filter(item -> !entQywxSyncTagItemIds.contains(item.getTagsId())).map(dto -> dto.getTagsId()).collect(Collectors.toSet()); noSyncTagItemIds = gicItems.stream().filter(item -> !entQywxSyncTagItemIds.contains(item.getTagsId())).map(dto -> dto.getTagsId()).collect(Collectors.toSet());
logger.info("没有同步的标签:{}", JSONObject.toJSONString(noSyncTagItemIds)); logger.info("与企微不同步的标签:{}", JSONObject.toJSONString(noSyncTagItemIds));
} }
//该企业下会员需要设置的标签 //该企业下会员需要设置的标签
Sets.SetView<String> entMemberNeedSetQywxKeys = Sets.intersection(staffHasSetTagKeys, entQywxSyncTagKeys); Sets.SetView<String> entMemberNeedSetQywxKeys = Sets.intersection(staffHasSetTagKeys, entQywxSyncTagKeys);
Set<String> saveTagIds = entMemberNeedSetQywxKeys.stream().map(qywxKey -> syncTagFormatPojo.getQywxToGicTagItemIdMap().get(qywxKey)).collect(Collectors.toSet()); Set<String> saveTagIds = entMemberNeedSetQywxKeys.stream().map(qywxKey -> syncTagFormatPojo.getQywxToGicTagItemIdMap().get(qywxKey)).collect(Collectors.toSet());
saveTagIds.addAll(noSyncTagItemIds); saveTagIds.addAll(noSyncTagItemIds);
logger.info("会员需要打的企微标签:{}", JSONObject.toJSONString(entMemberNeedSetQywxKeys)); logger.info("企微标签:{},所有标签={}", JSONObject.toJSONString(entMemberNeedSetQywxKeys),JSONObject.toJSONString(saveTagIds));
//更新标签 会自动同步 //更新标签 会自动同步
if (CollectionUtils.isEmpty(saveTagIds)) { if (CollectionUtils.isEmpty(saveTagIds)) {
saveMemberTags(new HashSet<>(), clerkRelated.getEnterpriseId(), memberId, clerkRelated.getClerkId()); saveMemberTags(new HashSet<>(), clerkRelated.getEnterpriseId(), memberId, clerkRelated.getClerkId());
...@@ -747,7 +748,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -747,7 +748,7 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
* @return * @return
*/ */
private Map<String, Set<String>> getExternalTagMap(String externalUseridInfo, String wxEnterpriseId) { private Map<String, Set<String>> getExternalTagMap(String externalUseridInfo, String wxEnterpriseId) {
logger.info("externalUseridInfo:{}", externalUseridInfo); // logger.info("externalUseridInfo:{}", externalUseridInfo);
Map<String, Set<String>> ret = new HashMap<>(); Map<String, Set<String>> ret = new HashMap<>();
JSONObject jsonObject = JSONObject.parseObject(externalUseridInfo); JSONObject jsonObject = JSONObject.parseObject(externalUseridInfo);
......
package com.gic.haoban.manage.service.service.out.impl.hm; package com.gic.haoban.manage.service.service.out.impl.hm;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.Arrays; import java.math.RoundingMode;
import java.util.Date; import java.text.DateFormat;
import java.util.HashMap; import java.text.SimpleDateFormat;
import java.util.List; import java.util.*;
import java.util.Map;
import java.util.Random;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONArray;
import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.Page;
import com.gic.enterprise.api.service.WechatStoreService;
import com.gic.haoban.manage.api.dto.chat.GroupChatActivityDTO;
import com.gic.haoban.manage.api.qdto.chat.GroupChatActivityHmQDTO;
import com.gic.haoban.manage.api.qdto.chat.LinkHmFromWxaQDTO;
import com.gic.haoban.manage.service.context.chat.JoinRuleManager;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
...@@ -121,6 +128,11 @@ public class HmLinkApiServiceImpl implements HmLinkApiService { ...@@ -121,6 +128,11 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
private GroupChatHmService groupChatHmService; private GroupChatHmService groupChatHmService;
@Autowired @Autowired
private TabHaobanStaffClerkRelationMapper staffClerkRelationMapper; private TabHaobanStaffClerkRelationMapper staffClerkRelationMapper;
@Autowired
private JoinRuleManager joinRuleManager ;
@Autowired
private WechatStoreService wechatStoreService;
@Override @Override
public ServiceResponse<String> getHmLinkUrl() { public ServiceResponse<String> getHmLinkUrl() {
...@@ -181,10 +193,10 @@ public class HmLinkApiServiceImpl implements HmLinkApiService { ...@@ -181,10 +193,10 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
// 群链接 // 群链接
private ServiceResponse<HmLinkWxaDTO> getLinkChatHmFromWxa(String wxEnterpriseId, String enterpriseId, private ServiceResponse<HmLinkWxaDTO> getLinkChatHmFromWxa(String wxEnterpriseId, String enterpriseId,
String mixPhone, String unionid, String memberId, HmLinkBO link, HmLinkWxaDTO retDTO) { String mixPhone, String unionid, String memberId, HmLinkBO link, HmLinkWxaDTO retDTO, LinkHmFromWxaQDTO qdto,String inStoreId) {
Long hmId = link.getOtherChatHmId(); Long hmId = link.getOtherChatHmId();
Long linkId = link.getLinkId(); Long linkId = link.getLinkId();
List<HmLinkChatDTO> hmList = this.hmLinkChatService.listByLinkId(wxEnterpriseId, enterpriseId, linkId); retDTO.setGroupChatHm(true);
if (StringUtils.isNotEmpty(mixPhone)) { if (StringUtils.isNotEmpty(mixPhone)) {
String mobile = this.keyDataService.getMobile(mixPhone, link.getShortCode()); String mobile = this.keyDataService.getMobile(mixPhone, link.getShortCode());
log.info("查询手机号,mobile={},mixPhone={}", mobile, mixPhone); log.info("查询手机号,mobile={},mixPhone={}", mobile, mixPhone);
...@@ -193,17 +205,110 @@ public class HmLinkApiServiceImpl implements HmLinkApiService { ...@@ -193,17 +205,110 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
memberId = mobileMemberId; memberId = mobileMemberId;
} }
} }
if (CollectionUtils.isNotEmpty(hmList)) { String chatStoreRule = link.getChatStoreRule() ;
for (HmLinkChatDTO item : hmList) { log.info("活码规则={},memberId={}",chatStoreRule,memberId);
boolean flag = this.memberCondition(enterpriseId, memberId, item, link.getCreatorId(), if(StringUtils.isBlank(chatStoreRule)) {
link.getUpdateTime()); log.info("无活码规则配置");
if (flag) { return ServiceResponse.failure("9999", "群活码不存在");
log.info("使用特殊群活码={}", item.getChatHmId()); }
hmId = item.getChatHmId(); // [{"type":1服务门店2协管3lbs4指定人群,"open":1}]
break; GroupChatActivityHmQDTO hmQDTO = new GroupChatActivityHmQDTO() ;
hmQDTO.setEnterpriseId(enterpriseId);
hmQDTO.setInviteeMemberId(memberId);
GroupChatActivityDTO chatActivity = new GroupChatActivityDTO() ;
chatActivity.setWxEnterpriseId(wxEnterpriseId);
hmQDTO.setChatActivity(chatActivity);
if(StringUtils.isNotBlank(inStoreId)) {
log.info("lbs后指定门店={}",inStoreId);
hmQDTO.setInStoreId(inStoreId);
List<GroupChatHmBO> hmBOList = joinRuleManager.handleMainStore(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
int sort = new Random().nextInt(hmBOList.size()) ;
hmId = hmBOList.get(sort).getChatHmId() ;
}
}else {
JSONArray arr = JSONArray.parseArray(chatStoreRule) ;
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) {
log.info("服务门店");
List<GroupChatHmBO> hmBOList = joinRuleManager.handleMainStore(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
int sort = new Random().nextInt(hmBOList.size()) ;
log.info("{}",sort);
hmId = hmBOList.get(sort).getChatHmId() ;
break;
}
}else if(type==2) {
log.info("协管门店");
List<GroupChatHmBO> hmBOList = joinRuleManager.handleOtherStore(hmQDTO);
if(CollectionUtils.isNotEmpty(hmBOList)) {
int sort = new Random().nextInt(hmBOList.size()) ;
hmId = hmBOList.get(sort).getChatHmId() ;
break;
}
}else if(type==3) {
log.info("lbs门店");
if(StringUtils.isNotEmpty(qdto.getLatitude()) && StringUtils.isNotEmpty(qdto.getLongitude()) && StringUtils.isNotEmpty(qdto.getDistrictCode())) {
Page<StoreDTO> page = new Page<>() ;
Map<String, Object> params = new HashMap<String, Object>();
params.put("latitude", qdto.getLatitude());
params.put("longitude", qdto.getLongitude());
params.put("enterpriseId",enterpriseId) ;
params.put("areaId",qdto.getDistrictCode()) ;
params.put("brandType", 1);
page.setParams(params);
page.setPageSize(1000);
page.setCurrentPage(1);
page = this.wechatStoreService.getActiveStoresByPage(page) ;
if (CollectionUtils.isEmpty(page.getResult())) {
break;
}
List<String> storeIds = page.getResult().stream().map(StoreDTO::getStoreId).collect(Collectors.toList());
log.info("lbs门店={}",storeIds);
//获取storeId对应活码
Map<String, List<GroupChatHmBO>> storeToHmMap = this.joinRuleManager.getStoreIdToGroupChatHmBOMap(enterpriseId, wxEnterpriseId, storeIds);
this.joinRuleManager.addSetHm(storeIds, storeToHmMap);
if (MapUtil.isEmpty(storeToHmMap)) {
break;
}
log.info("lbs门店={}",storeToHmMap.size());
if(storeToHmMap.size()==1) {
hmId = storeToHmMap.values().iterator().next().get(0).getChatHmId();
break;
}else {
List<HmLinkStoreDTO> storeList = page.getResult().stream().filter(o->CollectionUtils.isNotEmpty(storeToHmMap.get(o.getStoreId()))).map(store -> {
HmLinkStoreDTO storeDTO = EntityUtil.changeEntityByJSON(HmLinkStoreDTO.class, store) ;
return storeDTO;
}).collect(Collectors.toList()) ;
this.handleStoreList(storeList) ;
retDTO.setStoreList(storeList);
return ServiceResponse.success(retDTO);
}
}else {
log.info("无经纬度");
}
}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;
}
}
}
}
} }
} }
} }
log.info("hmid={}",hmId);
GroupChatHmBO hm = null; GroupChatHmBO hm = null;
if (null == hmId) { if (null == hmId) {
log.info("群活码不存在"); log.info("群活码不存在");
...@@ -213,13 +318,41 @@ public class HmLinkApiServiceImpl implements HmLinkApiService { ...@@ -213,13 +318,41 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
if (null == hm) { if (null == hm) {
log.info("群活码不存在,hmid={}", hmId); log.info("群活码不存在,hmid={}", hmId);
} }
retDTO.setHmId(hmId);
retDTO.setHmQrcode(hm.getWxQrCode()); retDTO.setHmQrcode(hm.getWxQrCode());
return ServiceResponse.success(retDTO); return ServiceResponse.success(retDTO);
} }
private void handleStoreList(List<HmLinkStoreDTO> storeList) {
if (storeList == null) {
return;
}
/* 处理返回信息,营业时间和距离说明问题 */
for (HmLinkStoreDTO tabStore : storeList) {
double distance = tabStore.getDistance();
String distanceStr = "";
if (distance > 0) {
if (distance > 1000) {
BigDecimal b1 = new BigDecimal(distance / 1000);
distanceStr += b1.setScale(1, RoundingMode.HALF_UP) + "km";
} else {
BigDecimal b1 = new BigDecimal(distance);
distanceStr += b1.setScale(0, RoundingMode.HALF_UP) + "m";
}
}
tabStore.setDistanceStr(distanceStr);
}
}
@Override
public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String storeId, String clerkId, String linkShortCode, String mixPhone, String unionid, String memberId) {
return this.getLinkHmFromWxa(enterpriseId, whitchStore, storeId, clerkId, linkShortCode, mixPhone, unionid, memberId, new LinkHmFromWxaQDTO());
}
@Override @Override
public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String inStoreId, public ServiceResponse<HmLinkWxaDTO> getLinkHmFromWxa(String enterpriseId, Integer whitchStore, String inStoreId,
String inClerkId, String linkShortCode, String mixPhone, String unionid, String memberId) { String inClerkId, String linkShortCode, String mixPhone, String unionid, String memberId, LinkHmFromWxaQDTO qdto) {
if ("-1".equals(memberId)) { if ("-1".equals(memberId)) {
memberId = null; memberId = null;
} }
...@@ -252,8 +385,27 @@ public class HmLinkApiServiceImpl implements HmLinkApiService { ...@@ -252,8 +385,27 @@ public class HmLinkApiServiceImpl implements HmLinkApiService {
// 如果是社群链接 // 如果是社群链接
if (link.getLinkType() == HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) { if (link.getLinkType() == HmLinkTypeEnum.CHAT_HM_LINK_TYPE.getLinkType()) {
retDTO.setGroupChatHm(true);
log.info("群链接,linkId={}", link.getLinkId()); log.info("群链接,linkId={}", link.getLinkId());
return this.getLinkChatHmFromWxa(wxEnterpriseId, enterpriseId, mixPhone, unionid, memberId, link, retDTO); if(null != qdto.getJustLocationFlag() && qdto.getJustLocationFlag()==1) {
JSONArray arr = JSONArray.parseArray(link.getChatStoreRule()) ;
boolean flag = false ;
for(int i=0;i< arr.size();i++) {
JSONObject json = arr.getJSONObject(i) ;
int open = json.getIntValue("open") ;
int type = json.getIntValue("type") ;
if(open == 1 && type==3) {
flag = true ;
break;
}
}
if(flag) {
retDTO.setStoreType(3);
return ServiceResponse.success(retDTO) ;
}
}
ServiceResponse<HmLinkWxaDTO> resp = this.getLinkChatHmFromWxa(wxEnterpriseId, enterpriseId, mixPhone, unionid, memberId, link, retDTO,qdto,inStoreId);
return resp;
} }
// 判断导购是否有活码,如果没有返回错误 // 判断导购是否有活码,如果没有返回错误
......
...@@ -151,6 +151,12 @@ public class HaobanMenuServiceImpl implements HaobanMenuService { ...@@ -151,6 +151,12 @@ public class HaobanMenuServiceImpl implements HaobanMenuService {
List<TabHaobanMenu> notPidMenuList = tabHaobanMenuMapper.getHaobanNotPidMenuList(wxEnterpriseId, clerkType, 0); List<TabHaobanMenu> notPidMenuList = tabHaobanMenuMapper.getHaobanNotPidMenuList(wxEnterpriseId, clerkType, 0);
List<HaobanMenuBO> pidMenuBOList = EntityUtil.changeEntityListNew(HaobanMenuBO.class, pidMenuList); List<HaobanMenuBO> pidMenuBOList = EntityUtil.changeEntityListNew(HaobanMenuBO.class, pidMenuList);
List<HaobanMenuBO> notPidMenuBOList = EntityUtil.changeEntityListNew(HaobanMenuBO.class, notPidMenuList); List<HaobanMenuBO> notPidMenuBOList = EntityUtil.changeEntityListNew(HaobanMenuBO.class, notPidMenuList);
if(CollectionUtils.isEmpty(pidMenuBOList)) {
pidMenuBOList = new ArrayList<>() ;
}
if(CollectionUtils.isEmpty(notPidMenuBOList)) {
notPidMenuBOList = new ArrayList<>() ;
}
List<String> gicMenulist = this.getGicBuyCodes(enterpriseId,clerkType) ; List<String> gicMenulist = this.getGicBuyCodes(enterpriseId,clerkType) ;
if(CollectionUtils.isNotEmpty(gicMenulist)) { if(CollectionUtils.isNotEmpty(gicMenulist)) {
List<HaobanMenuBO> allMenuList = this.getAllMenuList(); List<HaobanMenuBO> allMenuList = this.getAllMenuList();
......
...@@ -273,5 +273,6 @@ ...@@ -273,5 +273,6 @@
<dubbo:reference id="settingApiService" interface="com.gic.haoban.task.api.service.SettingApiService" timeout="10000" retries="0" /> <dubbo:reference id="settingApiService" interface="com.gic.haoban.task.api.service.SettingApiService" timeout="10000" retries="0" />
<dubbo:reference interface="com.gic.haoban.task.manage.api.service.IMarketClueTaskApiService" id="iMarketClueTaskApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.haoban.task.manage.api.service.IMarketClueTaskApiService" id="iMarketClueTaskApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference id="canvasApiService" interface="com.gic.canvas.api.service.CanvasApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="canvasApiService" interface="com.gic.canvas.api.service.CanvasApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="wechatStoreService" interface="com.gic.enterprise.api.service.WechatStoreService" timeout="10000" retries="0" check="false"/>
</beans> </beans>
\ No newline at end of file
...@@ -125,6 +125,24 @@ ...@@ -125,6 +125,24 @@
order by create_time desc order by create_time desc
</select> </select>
<select id="listAllByStaffIds" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_handover_external
where wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR}
and staff_id in
<foreach collection="staffIds" item="item" separator="," open="(" close=")">
#{item}
</foreach>
and status_flag = #{status}
<if test="search!=null and search!=''">
and external_user_name like CONCAT('%',#{search},'%')
</if>
limit 0 , 5000
</select>
<select id="listIdByStaffIds" resultMap="BaseResultMap"> <select id="listIdByStaffIds" resultMap="BaseResultMap">
select select
handover_external_id handover_external_id
......
...@@ -316,8 +316,10 @@ ...@@ -316,8 +316,10 @@
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related from tab_haoban_external_clerk_related
where staff_id = #{staffId,jdbcType=VARCHAR} where external_user_id = #{externalUserid}
and external_user_id = #{externalUserid} <if test="null != staffId">
and staff_id = #{staffId,jdbcType=VARCHAR}
</if>
and status_flag = #{statusFlag} order by update_time desc and status_flag = #{statusFlag} order by update_time desc
</select> </select>
......
...@@ -514,5 +514,15 @@ ...@@ -514,5 +514,15 @@
</if> </if>
GROUP BY a.staff_id GROUP BY a.staff_id
</select> </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
group by a.staff_id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
<result column="chat_count" property="chatCount" /> <result column="chat_count" property="chatCount" />
<result column="link_count" property="linkCount"/> <result column="link_count" property="linkCount"/>
<result column="status_flag" property="statusFlag"/> <result column="status_flag" property="statusFlag"/>
<result column="store_id" property="storeId" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
chat_hm_id, chat_hm_id,
...@@ -46,7 +47,7 @@ ...@@ -46,7 +47,7 @@
create_time, create_time,
update_time, update_time,
chat_count, link_count , chat_count, link_count ,
status_flag status_flag , store_id
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -72,7 +73,7 @@ ...@@ -72,7 +73,7 @@
create_time, create_time,
update_time, update_time,
chat_count, chat_count,
status_flag status_flag , store_id
)VALUES( )VALUES(
#{chatHmId}, #{chatHmId},
#{chatHmCode}, #{chatHmCode},
...@@ -93,7 +94,7 @@ ...@@ -93,7 +94,7 @@
now(), now(),
now(), now(),
#{chatCount}, #{chatCount},
1 1 , #{storeId}
) )
]]> ]]>
</insert> </insert>
...@@ -118,7 +119,7 @@ ...@@ -118,7 +119,7 @@
modifier_id=#{modifierId}, modifier_id=#{modifierId},
modifier_name=#{modifierName}, modifier_name=#{modifierName},
update_time=now(), update_time=now(),
chat_count=#{chatCount} chat_count=#{chatCount} , store_id = #{storeId}
where chat_hm_id = #{chatHmId} where chat_hm_id = #{chatHmId}
]]> ]]>
</update> </update>
...@@ -169,6 +170,9 @@ ...@@ -169,6 +170,9 @@
#{id} #{id}
</foreach> </foreach>
</if> </if>
<if test="null != storeId and ''!=storeId">
and store_id = #{storeId}
</if>
order by create_time desc order by create_time desc
</select> </select>
<select id="listAvailableByEnterpriseId" <select id="listAvailableByEnterpriseId"
...@@ -183,4 +187,24 @@ ...@@ -183,4 +187,24 @@
order by create_time desc order by create_time desc
</select> </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 chatHmId , COUNT(1) num 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> </mapper>
\ No newline at end of file
...@@ -53,7 +53,10 @@ ...@@ -53,7 +53,10 @@
<select id="listOwner" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO"> <select id="listOwner" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
SELECT a.staff_id staffId , b.`staff_name` staffName , a.wx_enterprise_id wxEnterpriseId , SELECT a.staff_id staffId , b.`staff_name` staffName , a.wx_enterprise_id wxEnterpriseId ,
b.wx_user_id wxUserId , b.wx_open_user_id wxOpenUserId b.wx_user_id wxUserId , b.wx_open_user_id wxOpenUserId
FROM tab_haoban_group_chat_owner a LEFT JOIN tab_haoban_staff b ON a.`staff_id` = b.`staff_id` FROM tab_haoban_group_chat_owner a LEFT JOIN tab_haoban_staff b ON a.`staff_id` = b.`staff_id`
<if test="null != paramsEnterpriseId and ''!=paramsEnterpriseId ">
left join tab_haoban_staff_clerk_relation d on a.staff_id = d.staff_id and d.status_flag = 1
</if>
<if test="departmentIdList != null and departmentIdList.size() > 0"> <if test="departmentIdList != null and departmentIdList.size() > 0">
left join tab_haoban_staff_department_related c on a.staff_id = c.staff_id and c.status_flag = 1 left join tab_haoban_staff_department_related c on a.staff_id = c.staff_id and c.status_flag = 1
</if> </if>
...@@ -64,6 +67,9 @@ ...@@ -64,6 +67,9 @@
#{id,jdbcType=VARCHAR} #{id,jdbcType=VARCHAR}
</foreach> </foreach>
</if> </if>
<if test="null != paramsEnterpriseId and ''!=paramsEnterpriseId ">
and d.enterprise_id = #{paramsEnterpriseId}
</if>
<if test="null != searchParams and ''!=searchParams "> <if test="null != searchParams and ''!=searchParams ">
and b.staff_name like #{searchParams} and b.staff_name like #{searchParams}
</if> </if>
...@@ -73,7 +79,7 @@ ...@@ -73,7 +79,7 @@
<if test="status==2"> <if test="status==2">
and b.status_flag = 0 and b.status_flag = 0
</if> </if>
<if test="departmentIdList != null and departmentIdList.size() > 0"> <if test="(departmentIdList != null and departmentIdList.size() > 0 ) or (null != paramsEnterpriseId and ''!=paramsEnterpriseId)">
group by a.staff_id group by a.staff_id
</if> </if>
</select> </select>
...@@ -94,7 +100,7 @@ ...@@ -94,7 +100,7 @@
</foreach> </foreach>
</if> </if>
<if test="null != searchParams and ''!=searchParams "> <if test="null != searchParams and ''!=searchParams ">
and b.staff_name like #{searchParams} and b.staff_name like #{searchParams}g
</if> </if>
and b.status_flag = 1 and b.status_flag = 1
<if test="departmentIdList != null and departmentIdList.size() > 0"> <if test="departmentIdList != null and departmentIdList.size() > 0">
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<result column="status_flag" property="statusFlag"/> <result column="status_flag" property="statusFlag"/>
<result column="short_code" property="shortCode" /> <result column="short_code" property="shortCode" />
<result column="other_chat_hm_id" property="otherChatHmId"/> <result column="other_chat_hm_id" property="otherChatHmId"/>
<result column="chat_store_rule" property="chatStoreRule"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
link_id, link_id,
...@@ -43,7 +44,7 @@ ...@@ -43,7 +44,7 @@
store_rule_json, store_rule_json,
custom_rule_json, custom_rule_json,
member_label_id, member_label_id,
status_flag,short_code , other_chat_hm_id status_flag,short_code , other_chat_hm_id , chat_store_rule
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.hm.TabHmLink"> <insert id="insert" parameterType="com.gic.haoban.manage.service.entity.hm.TabHmLink">
...@@ -67,7 +68,7 @@ ...@@ -67,7 +68,7 @@
store_rule_json, store_rule_json,
custom_rule_json, custom_rule_json,
member_label_id, member_label_id,
status_flag , short_code , other_chat_hm_id status_flag , short_code , other_chat_hm_id , chat_store_rule
)VALUES( )VALUES(
#{linkId,jdbcType=BIGINT}, #{linkId,jdbcType=BIGINT},
#{linkCode,jdbcType=VARCHAR}, #{linkCode,jdbcType=VARCHAR},
...@@ -87,7 +88,7 @@ ...@@ -87,7 +88,7 @@
#{storeRuleJson,jdbcType=VARCHAR}, #{storeRuleJson,jdbcType=VARCHAR},
#{customRuleJson,jdbcType=VARCHAR}, #{customRuleJson,jdbcType=VARCHAR},
#{memberLabelId,jdbcType=VARCHAR}, #{memberLabelId,jdbcType=VARCHAR},
#{statusFlag,jdbcType=INTEGER} , #{shortCode} , #{otherChatHmId} #{statusFlag,jdbcType=INTEGER} , #{shortCode} , #{otherChatHmId} , #{chatStoreRule}
) )
]]> ]]>
</insert> </insert>
...@@ -105,7 +106,7 @@ ...@@ -105,7 +106,7 @@
update_time=now(), update_time=now(),
store_rule_json=#{storeRuleJson,jdbcType=VARCHAR}, store_rule_json=#{storeRuleJson,jdbcType=VARCHAR},
custom_rule_json=#{customRuleJson,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} WHERE link_id = #{linkId}
]]> ]]>
</update> </update>
......
...@@ -188,6 +188,14 @@ ...@@ -188,6 +188,14 @@
status_flag != 0 order by create_time desc limit 1 status_flag != 0 order by create_time desc limit 1
</select> </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" <select id="listForPage" parameterType="com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogSearchQDTO"
resultMap="result-map-tabHaobanWxUserAddLog"> resultMap="result-map-tabHaobanWxUserAddLog">
select select
......
...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
<result column="task_clerk_num" property="taskClerkNum" /> <result column="task_clerk_num" property="taskClerkNum" />
<result column="moment_id" property="momentId" /> <result column="moment_id" property="momentId" />
<result column="media_link_flag" property="mediaLinkFlag" /> <result column="media_link_flag" property="mediaLinkFlag" />
<result column="analyse_flag" property="analyseFlag" />
<result column="analyse_day" property="analyseDay" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
plan_id, plan_id,
...@@ -62,7 +64,7 @@ ...@@ -62,7 +64,7 @@
total_like_count, total_like_count,
total_comment_count, total_comment_count,
qw_jobid, qw_jobid,
exec_rate , task_clerk_num , moment_id , media_link_flag exec_rate , task_clerk_num , moment_id , media_link_flag , analyse_flag , analyse_day
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert"> <insert id="insert">
...@@ -91,7 +93,7 @@ ...@@ -91,7 +93,7 @@
total_like_count, total_like_count,
total_comment_count, total_comment_count,
qw_jobid, qw_jobid,
exec_rate , media_link_flag exec_rate , media_link_flag , analyse_flag , analyse_day
)VALUES( )VALUES(
#{planId,jdbcType=BIGINT}, #{planId,jdbcType=BIGINT},
#{title,jdbcType=VARCHAR}, #{title,jdbcType=VARCHAR},
...@@ -117,7 +119,7 @@ ...@@ -117,7 +119,7 @@
#{totalLikeCount,jdbcType=INTEGER}, #{totalLikeCount,jdbcType=INTEGER},
#{totalCommentCount,jdbcType=INTEGER}, #{totalCommentCount,jdbcType=INTEGER},
#{qwJobid,jdbcType=VARCHAR}, #{qwJobid,jdbcType=VARCHAR},
#{execRate,jdbcType=INTEGER} , #{mediaLinkFlag} #{execRate,jdbcType=INTEGER} , #{mediaLinkFlag} , #{analyseFlag} , #{analyseDay}
) )
</insert> </insert>
...@@ -166,6 +168,12 @@ ...@@ -166,6 +168,12 @@
<if test="null != mediaLinkFlag"> <if test="null != mediaLinkFlag">
media_link_flag=#{mediaLinkFlag}, media_link_flag=#{mediaLinkFlag},
</if> </if>
<if test="null != analyseFlag">
analyse_flag= #{analyseFlag},
</if>
<if test="null != analyseDay">
analyse_day= #{analyseDay},
</if>
</set> </set>
where plan_id =#{planId} where plan_id =#{planId}
</update> </update>
......
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.DateUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.util.ArrayList; import java.math.BigDecimal;
import java.util.List; import java.util.*;
public class FileUtils4 { public class FileUtils4 {
public static void main(String[] args) {
Date endTime = DateUtil.strToDate("2025-06-30","yyyy-MM-dd") ;
if(DateUtil.getStartTimeOfDay(endTime).getTime() - 1000*3600*24*3 <= DateUtil.getStartTimeOfDay().getTime()) {
System.out.printf(""+DateUtil.daysBetween(DateUtil.getStartTimeOfDay(), DateUtil.getStartTimeOfDay(endTime)));
if(DateUtil.getStartTimeOfDay(endTime).getTime()<DateUtil.getStartTimeOfDay().getTime() && DateUtil.daysBetween(DateUtil.getStartTimeOfDay(endTime),DateUtil.getStartTimeOfDay())>1) {
return;
}
System.out.printf("1111");
}
/* List<X> list = getText() ;
Collections.sort(list);
Collections.reverse(list);
System.out.println(JSONObject.toJSONString(list));*/
}
public static List<X> getText(){
public static String getText(){
try { try {
BufferedReader bw = new BufferedReader(new FileReader(new File("c:\\c.txt"))) ; BufferedReader bw = new BufferedReader(new FileReader(new File("d:\\c.txt"))) ;
StringBuilder sb = new StringBuilder() ; List<X> sb = new ArrayList<>() ;
while(true) { while(true) {
String s = bw.readLine() ; String s = bw.readLine() ;
if(StringUtils.isBlank(s)) { if(StringUtils.isBlank(s)) {
break ; break ;
}else { }else {
String ss = new String(s.getBytes(),"UTF-8") ; String ss = new String(s.getBytes(),"UTF-8") ;
sb.append(ss) ; String[] arr = ss.split("\\s") ;
String s1 = arr[0] ;
String s2 = arr[1] ;
sb.add(new X(s1,s2));
} }
} }
bw.close(); bw.close();
return sb.toString() ; System.out.println(sb.size());
return sb ;
}catch(Exception e) { }catch(Exception e) {
} }
return null ; return null ;
} }
static class X implements Comparable<X>{
public String id ;
public String name ;
public X(String id, String name) {
this.id = id ;
this.name = name ;
}
@Override
public int compareTo(X o) {
return Integer.valueOf(o.id) - Integer.valueOf(this.id);
}
}
} }
import com.gic.api.base.commons.BasePageInfo; import com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogQDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum; import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.api.qdto.OpenStaffPageQDTO; import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper;
import com.gic.haoban.manage.api.service.HaobanTimerApiService; import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService; import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog;
import com.gic.haoban.manage.api.service.role.HaobanRoleApiService; import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.service.OpenStaffService;
import com.gic.weimob.common.Md5Util;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.lang.reflect.Array;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"}) @ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class HalfFriendTest { public class HalfFriendTest {
@Autowired @Autowired
private OpenStaffService openStaffService ; private TabHaobanExternalClerkRelatedMapper haobanExternalClerkRelatedMapper ;
@Autowired @Autowired
private NoticeMessageApiService noticeMessageApiService ; private WxUserAddLogMapper wxUserAddLogMapper ;
@Autowired
private WxUserAddLogService wxUserAddLogService ;
@Test @Test
public void tt() { public void tt() {
Map<String,String> map = new HashMap<>() ; String wxEnterpriseId = "b8f2f238e73844219d8c1ac563cec0db" ;
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 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);
}
} }
} }
...@@ -45,7 +45,7 @@ public class HandoverTest { ...@@ -45,7 +45,7 @@ public class HandoverTest {
@Test @Test
public void test1() { public void test1() {
String wxEnterpriseId = "ca66a01b79474c40b3e7c7f93daf1a3b"; String wxEnterpriseId = "ef8607976407491fb5ff66611b1d57ea";
handoverOperationApiService.dealQywxEnterpriseHandoverResult(wxEnterpriseId); handoverOperationApiService.dealQywxEnterpriseHandoverResult(wxEnterpriseId);
} }
......
...@@ -4,6 +4,7 @@ import java.util.Arrays; ...@@ -4,6 +4,7 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.qdto.chat.LinkHmFromWxaQDTO;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -106,7 +107,13 @@ public class HmLinkTest { ...@@ -106,7 +107,13 @@ public class HmLinkTest {
@Test @Test
public void getLinkHmFromWxa(){ public void getLinkHmFromWxa(){
this.hmLinkApiService.getLinkHmFromWxa("ff8080815dacd3a2015dacd3ef5c0000", null, null, null, "fKzecO", "3b9167b1a", "orXl9t6P-XBJQyaNCaJj38GLyYd0",null) ; LinkHmFromWxaQDTO qq = new LinkHmFromWxaQDTO();
qq.setLatitude("30.281719563802085");
qq.setDistrictCode("3301");
qq.setLongitude("120.00284342447917");
qq.setJustLocationFlag(0);
this.hmLinkApiService.getLinkHmFromWxa("ff8080815dacd3a2015dacd3ef5c0000", null, null, null,
"roFgte", "", "","ff8080819763a714019767096103000f",qq) ;
} }
@Test @Test
......
...@@ -139,8 +139,10 @@ public class ServiceTest { ...@@ -139,8 +139,10 @@ public class ServiceTest {
"fa88746dfe964acd8761d1de8ff7d139", "fa88746dfe964acd8761d1de8ff7d139",
"fcae29cc5d7d4739a353e777e5e77d82") ; "fcae29cc5d7d4739a353e777e5e77d82") ;
for(int i=0;i<list.size();i++) { for(int i=0;i<list.size();i++) {
haobanQywxFeeApiService.addFee(list.get(i));
} }
haobanQywxFeeApiService.addFee("ca66a01b79474c40b3e7c7f93daf1a3b");
} }
@Test @Test
......
...@@ -14,6 +14,7 @@ import com.gic.commons.util.ExcelUtils; ...@@ -14,6 +14,7 @@ import com.gic.commons.util.ExcelUtils;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO; import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil; 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.StaffDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
...@@ -23,6 +24,7 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO; ...@@ -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.GroupChatUserSearchQDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO; 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.StaffApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService; import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode; import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl; import com.gic.haoban.manage.web.log.LogRecordUserServiceImpl;
...@@ -68,6 +70,8 @@ public class GroupChatController { ...@@ -68,6 +70,8 @@ public class GroupChatController {
private GroupChatUserExcelHandler groupChatUserExcelHandler; private GroupChatUserExcelHandler groupChatUserExcelHandler;
@Autowired @Autowired
private GroupChatUserQuitExcelHandler groupChatUserQuitExcelHandler ; private GroupChatUserQuitExcelHandler groupChatUserQuitExcelHandler ;
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService ;
@RequestMapping("get-set-gic-flag") @RequestMapping("get-set-gic-flag")
public RestResponse<Object> getFlag() { public RestResponse<Object> getFlag() {
...@@ -268,6 +272,21 @@ public class GroupChatController { ...@@ -268,6 +272,21 @@ public class GroupChatController {
public RestResponse<Object> ownerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo) { public RestResponse<Object> ownerPage(OwnerSearchQDTO qdto, BasePageInfo basePageInfo) {
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId()); qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
// 是否需要显示门店名称
String paramsEnterpriseId = qdto.getParamsEnterpriseId() ;
if(StringUtils.isNotBlank(paramsEnterpriseId)) {
qdto.setShowStoreNames(1);
qdto.setShowNameEnterpriseId(paramsEnterpriseId);
}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.setShowNameEnterpriseId(list.get(0).getEnterpriseId());
}
}
ServiceResponse<Page<GroupChatOwnerDTO>> resp = this.groupChatApiService.listOwnerPage(qdto, basePageInfo); ServiceResponse<Page<GroupChatOwnerDTO>> resp = this.groupChatApiService.listOwnerPage(qdto, basePageInfo);
return RestResponse.successResult(resp.getResult()); return RestResponse.successResult(resp.getResult());
} }
......
...@@ -15,6 +15,8 @@ import java.util.stream.Collectors; ...@@ -15,6 +15,8 @@ import java.util.stream.Collectors;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; 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.collections.CollectionUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
...@@ -88,6 +90,8 @@ public class GroupChatHmController { ...@@ -88,6 +90,8 @@ public class GroupChatHmController {
private DownloadReportService downloadReportService; private DownloadReportService downloadReportService;
@Autowired @Autowired
private EnterpriseService enterpriseService; private EnterpriseService enterpriseService;
@Autowired
private StoreService storeService ;
@RequestMapping("add") @RequestMapping("add")
@GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HB_QHM, optType = GicLogRecordOptTypeEnum.HB_1002_01, userFunc = LogRecordUserServiceImpl.class, optPage = "群活码-新建活码") @GicLogRecord(value = "${#logValue}", category = GicLogRecordCategoryEnum.HB_QHM, optType = GicLogRecordOptTypeEnum.HB_1002_01, userFunc = LogRecordUserServiceImpl.class, optPage = "群活码-新建活码")
...@@ -174,6 +178,34 @@ public class GroupChatHmController { ...@@ -174,6 +178,34 @@ public class GroupChatHmController {
content.append(b); content.append(b);
} }
String s = null ;
String oldStoreId = oldDTO.getStoreId();
if(null == oldStoreId) {
oldStoreId = "";
}
String newStoreId = newDTO.getStoreId();
if(null == newStoreId) {
newStoreId = "";
}
if(!oldStoreId.equals(newStoreId)) {
String oldName = "--";
if(StringUtils.isNotBlank(oldStoreId)) {
StoreDTO oldStore = this.storeService.getStore(oldStoreId) ;
if(null != oldStore) {
oldName = oldStore.getStoreName() + "-" + oldStore.getStoreCode();
}
}
String newName = "--";
if(StringUtils.isNotBlank(newStoreId)) {
StoreDTO newStore = this.storeService.getStore(newStoreId) ;
if(null != newStore) {
newName = newStore.getStoreName() + "-" + newStore.getStoreCode();
}
}
s = String.format("归属门店从【%s】修改为【%s】", oldName, newName);
content.append(s) ;
}
String o = null; String o = null;
List<Long> newIdList = newDTO.getChatIdList(); List<Long> newIdList = newDTO.getChatIdList();
...@@ -222,7 +254,7 @@ public class GroupChatHmController { ...@@ -222,7 +254,7 @@ public class GroupChatHmController {
content.append(f); content.append(f);
} }
} }
if (org.apache.commons.lang3.StringUtils.isAllBlank(a, b, c, d, e, f, o, p)) { if (org.apache.commons.lang3.StringUtils.isAllBlank(a, b, c, d, e, f, o, p , s)) {
return null; return null;
} }
StringBuilder sb = new StringBuilder("编辑群活码").append("【").append(oldDTO.getChatHmCode()).append("-") StringBuilder sb = new StringBuilder("编辑群活码").append("【").append(oldDTO.getChatHmCode()).append("-")
...@@ -283,6 +315,16 @@ public class GroupChatHmController { ...@@ -283,6 +315,16 @@ public class GroupChatHmController {
if (vo.getUsableChatCount() == 0) { if (vo.getUsableChatCount() == 0) {
vo.setUseRemark("无可加入的群聊"); 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 && storeDTO.getStatus()!=-3) {
vo.setStoreStatus(1);
}
}
}
}); });
} }
return RestResponse.successResult(retPage); return RestResponse.successResult(retPage);
...@@ -298,6 +340,16 @@ public class GroupChatHmController { ...@@ -298,6 +340,16 @@ public class GroupChatHmController {
return RestResponse.failure("1", "群活码不存在"); return RestResponse.failure("1", "群活码不存在");
} }
GroupChatHmDTO hm = linkResp.getResult(); 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); return RestResponse.successResult(hm);
} }
......
...@@ -49,7 +49,7 @@ import javax.servlet.http.HttpServletResponse; ...@@ -49,7 +49,7 @@ import javax.servlet.http.HttpServletResponse;
/** /**
* *
* @ClassName: GroupChatPlanController * @ClassName: GroupChatPlanController
* @Description: 群群发任务 * @Description: 群群发活动
* @author xugh * @author xugh
* @date 2022年11月26日 上午9:32:56 * @date 2022年11月26日 上午9:32:56
* *
...@@ -94,12 +94,12 @@ public class GroupChatPlanController { ...@@ -94,12 +94,12 @@ public class GroupChatPlanController {
public RestResponse<Object> del(Long planId) { public RestResponse<Object> del(Long planId) {
if (null == planId) { if (null == planId) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("9999", "任务ID空"); return RestResponse.failure("9999", "活动ID空");
} }
ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId); ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId);
if (!planResp.isSuccess()) { if (!planResp.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("1", "任务不存在"); return RestResponse.failure("1", "活动不存在");
} }
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
this.groupChatPlanApiService.del(loginUser.getClerkId(), loginUser.getClerkName(), planId); this.groupChatPlanApiService.del(loginUser.getClerkId(), loginUser.getClerkName(), planId);
...@@ -123,17 +123,17 @@ public class GroupChatPlanController { ...@@ -123,17 +123,17 @@ public class GroupChatPlanController {
public RestResponse<Object> stop(Long planId) { public RestResponse<Object> stop(Long planId) {
if (null == planId) { if (null == planId) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("9999", "任务ID空"); return RestResponse.failure("9999", "活动ID空");
} }
ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId); ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId);
if (!planResp.isSuccess()) { if (!planResp.isSuccess()) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("1", "任务不存在"); return RestResponse.failure("1", "活动不存在");
} }
GroupChatPlanDTO plan = planResp.getResult(); GroupChatPlanDTO plan = planResp.getResult();
if (plan.getEndTime().getTime() <= new Date().getTime()) { if (plan.getEndTime().getTime() <= new Date().getTime()) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("1", "任务已结束"); return RestResponse.failure("1", "活动已结束");
} }
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
this.groupChatPlanApiService.stop(loginUser.getClerkId(), loginUser.getClerkName(), planId); this.groupChatPlanApiService.stop(loginUser.getClerkId(), loginUser.getClerkName(), planId);
...@@ -151,12 +151,12 @@ public class GroupChatPlanController { ...@@ -151,12 +151,12 @@ public class GroupChatPlanController {
GroupChatPlanDTO oldPlan = oldResp.getResult(); GroupChatPlanDTO oldPlan = oldResp.getResult();
if (null == oldPlan) { if (null == oldPlan) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("9999", "任务不存在"); return RestResponse.failure("9999", "活动不存在");
} }
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if (oldPlan.getEndTime().getTime() <= now || oldPlan.getStatusFlag() == 0) { if (oldPlan.getEndTime().getTime() <= now || oldPlan.getStatusFlag() == 0) {
GicLogRecordEvaluationContext.noWriteLog(); GicLogRecordEvaluationContext.noWriteLog();
return RestResponse.failure("9999", "任务已结束"); return RestResponse.failure("9999", "活动已结束");
} }
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
dto.setWxEnterpriseId(loginUser.getWxEnterpriseId()); dto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
...@@ -164,7 +164,7 @@ public class GroupChatPlanController { ...@@ -164,7 +164,7 @@ public class GroupChatPlanController {
dto.setModifierId(loginUser.getClerkId()); dto.setModifierId(loginUser.getClerkId());
dto.setModifierName(loginUser.getClerkName()); dto.setModifierName(loginUser.getClerkName());
ServiceResponse<GroupChatPlanDTO> resp = null; ServiceResponse<GroupChatPlanDTO> resp = null;
// 任务进行中只能编辑备注 // 活动进行中只能编辑备注
if (oldPlan.getStartTime().getTime() <= now && oldPlan.getEndTime().getTime() >= now) { if (oldPlan.getStartTime().getTime() <= now && oldPlan.getEndTime().getTime() >= now) {
resp = this.groupChatPlanApiService.updateRemark(dto); resp = this.groupChatPlanApiService.updateRemark(dto);
} else { } else {
...@@ -187,11 +187,11 @@ public class GroupChatPlanController { ...@@ -187,11 +187,11 @@ public class GroupChatPlanController {
String wxEnterpriseId = newDTO.getWxEnterpriseId(); String wxEnterpriseId = newDTO.getWxEnterpriseId();
String enterpriseId = newDTO.getEnterpriseId(); String enterpriseId = newDTO.getEnterpriseId();
StringBuilder content = new StringBuilder(); StringBuilder content = new StringBuilder();
String a = comp(wxEnterpriseId, enterpriseId, "任务标题", oldDTO.getName(), newDTO.getName(), 0); String a = comp(wxEnterpriseId, enterpriseId, "活动标题", oldDTO.getName(), newDTO.getName(), 0);
if (null != a) { if (null != a) {
content.append(a); content.append(a);
} }
String b = comp(wxEnterpriseId, enterpriseId, "任务描述", oldDTO.getRemark(), newDTO.getRemark(), 0); String b = comp(wxEnterpriseId, enterpriseId, "活动描述", oldDTO.getRemark(), newDTO.getRemark(), 0);
if (null != b) { if (null != b) {
content.append(b); content.append(b);
} }
...@@ -298,7 +298,7 @@ public class GroupChatPlanController { ...@@ -298,7 +298,7 @@ public class GroupChatPlanController {
public RestResponse<Object> detail(Long planId, @RequestParam(defaultValue = "0") int updteFlag) { public RestResponse<Object> detail(Long planId, @RequestParam(defaultValue = "0") int updteFlag) {
ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId); ServiceResponse<GroupChatPlanDTO> planResp = this.groupChatPlanApiService.detail(planId);
if (!planResp.isSuccess()) { if (!planResp.isSuccess()) {
return RestResponse.failure("1", "任务不存在"); return RestResponse.failure("1", "活动不存在");
} }
GroupChatPlanDTO plan = planResp.getResult(); GroupChatPlanDTO plan = planResp.getResult();
plan.getStaffIdList(); plan.getStaffIdList();
...@@ -355,14 +355,14 @@ public class GroupChatPlanController { ...@@ -355,14 +355,14 @@ public class GroupChatPlanController {
@RequestMapping("owner-log") @RequestMapping("owner-log")
public RestResponse<Object> ownerLog(Long planId, GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) { public RestResponse<Object> ownerLog(Long planId, GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) {
if (null == planId) { if (null == planId) {
return RestResponse.failure("9999", "任务ID空"); return RestResponse.failure("9999", "活动ID空");
} }
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId()); qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> resp = this.groupChatPlanApiService.listOwnerLogPage(planId, ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> resp = this.groupChatPlanApiService.listOwnerLogPage(planId,
qdto, basePageInfo); qdto, basePageInfo);
if (!resp.isSuccess()) { if (!resp.isSuccess()) {
return RestResponse.failure("1", "任务不存在"); return RestResponse.failure("1", "活动不存在");
} }
return RestResponse.successResult(resp.getResult()); return RestResponse.successResult(resp.getResult());
} }
...@@ -370,14 +370,14 @@ public class GroupChatPlanController { ...@@ -370,14 +370,14 @@ public class GroupChatPlanController {
@RequestMapping("log") @RequestMapping("log")
public RestResponse<Object> log(Long planId, GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) { public RestResponse<Object> log(Long planId, GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) {
if (null == planId) { if (null == planId) {
return RestResponse.failure("9999", "任务ID空"); return RestResponse.failure("9999", "活动ID空");
} }
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId()); qdto.setWxEnterpriseId(loginUser.getWxEnterpriseId());
ServiceResponse<Page<GroupChatPlanLogDTO>> resp = this.groupChatPlanApiService.listLogPage(planId, qdto, ServiceResponse<Page<GroupChatPlanLogDTO>> resp = this.groupChatPlanApiService.listLogPage(planId, qdto,
basePageInfo); basePageInfo);
if (!resp.isSuccess()) { if (!resp.isSuccess()) {
return RestResponse.failure("1", "任务不存在"); return RestResponse.failure("1", "活动不存在");
} }
return RestResponse.successResult(resp.getResult()); return RestResponse.successResult(resp.getResult());
} }
...@@ -445,9 +445,9 @@ public class GroupChatPlanController { ...@@ -445,9 +445,9 @@ public class GroupChatPlanController {
} }
//设置sheet的表头与表名 //设置sheet的表头与表名
String[] groupChatListSheetHead = {"任务名称", "任务状态", "已完成群主数", "未完成群主数", "完成率", "已送达群数", "任务开始时间", "任务结束时间", "创建人", "创建时间"}; String[] groupChatListSheetHead = {"活动名称", "活动状态", "执行方式","已完成群主数", "未完成群主数", "完成率", "已送达群数", "活动开始时间", "活动结束时间", "创建人", "创建时间"};
String[] sendSheetHead = {"任务名称", "发送人", "关联导购","关联导购code", "关联门店", "关联门店code","完成状态", "已送达客户群数", "发送时间", "任务开始时间", "任务结束时间"}; String[] sendSheetHead = {"活动名称", "发送人", "关联导购","关联导购code", "关联门店", "关联门店code","完成状态", "已送达客户群数", "发送时间", "活动开始时间", "活动结束时间"};
String[] receiveSheetHead = {"任务名称", "群名称", "群人数", "发送人", "关联导购", "关联导购code","关联门店", "关联门店code","发送状态", "发送时间", "任务开始时间", "任务结束时间"}; String[] receiveSheetHead = {"活动名称", "群名称", "群人数", "发送人", "关联导购", "关联导购code","关联门店", "关联门店code","发送状态", "发送时间", "活动开始时间", "活动结束时间"};
List<ExcelSheet> mysheet = new ArrayList<>(); List<ExcelSheet> mysheet = new ArrayList<>();
ExcelSheet groupChatListExcel = new ExcelSheet("客户群发列表", groupChatListSheetHead, changeGroupChatPlanExcelVOList(groupChatPlanExcelVOList)); ExcelSheet groupChatListExcel = new ExcelSheet("客户群发列表", groupChatListSheetHead, changeGroupChatPlanExcelVOList(groupChatPlanExcelVOList));
...@@ -467,7 +467,7 @@ public class GroupChatPlanController { ...@@ -467,7 +467,7 @@ public class GroupChatPlanController {
String startTime = DateUtil.formatString(vo.getStartTime(), DateUtil.FORMAT_DATETIME_19); String startTime = DateUtil.formatString(vo.getStartTime(), DateUtil.FORMAT_DATETIME_19);
String endTime = DateUtil.formatString(vo.getEndTime(), DateUtil.FORMAT_DATETIME_19); String endTime = DateUtil.formatString(vo.getEndTime(), DateUtil.FORMAT_DATETIME_19);
String createTime = DateUtil.formatString(vo.getCreateTime(), DateUtil.FORMAT_DATETIME_19); String createTime = DateUtil.formatString(vo.getCreateTime(), DateUtil.FORMAT_DATETIME_19);
String[] a = {vo.getName(), vo.getStatus(), vo.getSendCount()==null?"":vo.getSendCount().toString(), vo.getStaffCount()==null?"":vo.getStaffCount().toString(), String[] a = {vo.getName(), vo.getStatus(), vo.getExecTypeExcel(),vo.getSendCount()==null?"":vo.getSendCount().toString(), vo.getStaffCount()==null?"":vo.getStaffCount().toString(),
vo.getCompletionRate(), vo.getSuccessChatCount()==null?"":vo.getSuccessChatCount().toString(), startTime, endTime, vo.getCreatorName(),createTime}; vo.getCompletionRate(), vo.getSuccessChatCount()==null?"":vo.getSuccessChatCount().toString(), startTime, endTime, vo.getCreatorName(),createTime};
result.add(a); result.add(a);
} }
......
...@@ -11,6 +11,7 @@ import java.util.stream.Collectors; ...@@ -11,6 +11,7 @@ import java.util.stream.Collectors;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.gic.api.base.commons.JSONResponse; import com.gic.api.base.commons.JSONResponse;
import com.gic.clerk.api.dto.AuthorizedUser; import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.qcloud.BucketNameEnum; import com.gic.qcloud.BucketNameEnum;
...@@ -226,6 +227,22 @@ public class HmLinkController { ...@@ -226,6 +227,22 @@ public class HmLinkController {
if (null != b) { if (null != b) {
content.append(b); content.append(b);
} }
String oldChatRule = oldDTO.getChatStoreRule();
if(null == oldChatRule) {
oldChatRule = "";
}
String newChatRule = newDTO.getChatStoreRule();
if(null == newChatRule) {
newChatRule = "";
}
String s = null ;
logger.info("{},{}",oldChatRule,newChatRule);
if(!oldChatRule.equals(newChatRule)) {
String oldName = this.getChatRuleName(oldChatRule) ;
String newName = this.getChatRuleName(newChatRule) ;
s = String.format("定向入群设置从【%s】修改为【%s】", oldName, newName) ;
content.append(s) ;
}
// 其他群活码 // 其他群活码
String c = null; String c = null;
if (!oldDTO.getOtherChatHmId().equals(newDTO.getOtherChatHmId())) { if (!oldDTO.getOtherChatHmId().equals(newDTO.getOtherChatHmId())) {
...@@ -262,7 +279,7 @@ public class HmLinkController { ...@@ -262,7 +279,7 @@ public class HmLinkController {
d = sb.toString(); d = sb.toString();
content.append(d); content.append(d);
} }
if (org.apache.commons.lang3.StringUtils.isAllBlank(a, b, c, d)) { if (org.apache.commons.lang3.StringUtils.isAllBlank(a, b, c, d,s)) {
return null; return null;
} }
StringBuilder sb = new StringBuilder("编辑引流链接").append("【").append(oldDTO.getLinkCode()).append("-") StringBuilder sb = new StringBuilder("编辑引流链接").append("【").append(oldDTO.getLinkCode()).append("-")
...@@ -270,6 +287,34 @@ public class HmLinkController { ...@@ -270,6 +287,34 @@ public class HmLinkController {
return sb.append(content).toString(); return sb.append(content).toString();
} }
private String getChatRuleName(String chatRule) {
if(org.apache.commons.lang3.StringUtils.isBlank(chatRule)) {
return "--" ;
}
JSONArray arr = JSON.parseArray(chatRule) ;
List<String> list = new ArrayList<>() ;
for(int i=0;i<arr.size();i++) {
JSONObject json = arr.getJSONObject(i) ;
if(json.getIntValue("open")==1) {
int type = json.getIntValue("type") ;
if(type==1) {
list.add("服务门店");
}else if(type==2) {
list.add("协管门店");
}else if(type==3) {
list.add("LBS定位");
}else if(type==4) {
list.add("指定人群");
}
}
}
if(CollectionUtils.isEmpty(list)) {
return "--" ;
}
return list.stream().collect(Collectors.joining("、"));
}
private String getUpdateLog(HmLinkDTO oldDTO, HmLinkDTO newDTO) { private String getUpdateLog(HmLinkDTO oldDTO, HmLinkDTO newDTO) {
String wxEnterpriseId = newDTO.getWxEnterpriseId(); String wxEnterpriseId = newDTO.getWxEnterpriseId();
String enterpriseId = newDTO.getEnterpriseId(); String enterpriseId = newDTO.getEnterpriseId();
......
package com.gic.haoban.manage.web.controller.moment;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.haoban.manage.web.vo.moment.MomentDataClickVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataClickExcelHandler extends DownloadHandlerAbstract<MomentDataClickVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataClickVO> getData(Context context, String json, Integer currentPage) {
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_mbr_click_detail");
JSONObject jsonObject = JSONObject.parseObject(json) ;
Page page = DataApiUtils.getPageData(res);
List<MomentDataClickVO> voList = EntityUtil.changeEntityListByJSON(MomentDataClickVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(jsonObject.getString("enterpriseId"),memberIdList) ;
for (MomentDataClickVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null == map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet) ;
Map<String, ClerkDTO> clerkMap = this.qwMomentDataController.clerkMap(clerkSet) ;
for (MomentDataClickVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "专属导购姓名", "专属导购code", "所属门店名称", "所属门店code", "点击时间", "停留时长");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "clerkName", "clerkCode", "storeName", "storeCode", "clickTime", "dur");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.web.vo.moment.MomentDataMemberVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataMemberExcelHandler extends DownloadHandlerAbstract<MomentDataMemberVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataMemberVO> getData(Context context, String json, Integer currentPage) {
JSONObject jsonObject = JSONObject.parseObject(json) ;
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
List<MomentDataMemberVO> voList = EntityUtil.changeEntityListByJSON(MomentDataMemberVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(jsonObject.getString("enterpriseId"),memberIdList) ;
for (MomentDataMemberVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null == map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o-> StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet) ;
Map<String, ClerkDTO> clerkMap = this.qwMomentDataController.clerkMap(clerkSet) ;
for (MomentDataMemberVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "专属导购姓名", "专属导购code", "所属门店名称", "所属门店code", "转化金额");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "clerkName", "clerkCode", "storeName", "storeCode", "matlConvsAmt");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.web.vo.moment.MomentDataOrderVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataOrderExcelHandler extends DownloadHandlerAbstract<MomentDataOrderVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataOrderVO> getData(Context context, String json, Integer currentPage) {
JSONObject jsonObject = JSONObject.parseObject(json) ;
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
List<MomentDataOrderVO> voList = EntityUtil.changeEntityListByJSON(MomentDataOrderVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o -> o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(jsonObject.getString("enterpriseId"), memberIdList);
for (MomentDataOrderVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if (null == map.get(memberId)) {
vo.setMemberScene(2);
} else {
MemberDataDTO data = map.get(memberId);
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setMemberScene(3);
}
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByChannelCode(vo.getChannelCode()) ;
if(null != channel) {
vo.setChannelName(channel.getChannelName());
}
}
Set<String> storeSet = voList.stream().filter(o -> StringUtils.isNotBlank(o.getOrderStoreId()) && !"-1".equals(o.getOrderStoreId())).map(o -> o.getOrderStoreId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet);
for (MomentDataOrderVO vo : voList) {
if (null != storeMap.get(vo.getOrderStoreId())) {
vo.setOrderStoreCode(storeMap.get(vo.getOrderStoreId()).getStoreCode());
vo.setOrderStoreName(storeMap.get(vo.getOrderStoreId()).getStoreName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "订单渠道", "订单编号", "订单实付金额", "消费门店名称", "消费门店 code", "下单时间");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "channelName", "orderCode", "matlConvsAmt", "orderStoreName", "orderStoreCode", "orderTime");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment;
import cn.hutool.core.date.DatePattern;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.moment.QwMomentPlanDTO;
import com.gic.haoban.manage.api.service.moment.QwMomentApiService;
import com.gic.haoban.manage.web.qo.moment.MomentDataQO;
import com.gic.haoban.manage.web.vo.moment.MomentDataClickVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataMemberVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataOrderVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.qcloud.BucketNameEnum;
import com.gic.web.common.download.DownloadTask;
import com.gic.web.common.download.DownloadTaskUtil;
import com.gic.web.common.download.constants.TaskTypeEnum;
import com.gic.web.common.utils.DataApiUtils;
import com.gic.web.common.utils.SessionContextUtils;
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 java.util.*;
import java.util.stream.Collectors;
/**
* 企微朋友圈-数据
*/
@RestController
@RequestMapping("/qw-moment")
public class QwMomentDataController {
private static Logger logger = LogManager.getLogger(QwMomentDataController.class);
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private StoreService storeService ;
@Autowired
private ClerkService clerkService ;
@Autowired
private QwMomentApiService qwMomentApiService ;
@Autowired
private MomentDataClickExcelHandler momentDataClickExcelHandler ;
@Autowired
private MomentDataOrderExcelHandler momentDataOrderExcelHandler ;
@Autowired
private MomentDataMemberExcelHandler momentDataMemberExcelHandler ;
/**
* 概览
*/
@RequestMapping("data_qw_moment_plan_overview")
public RestResponse<MomentDataVO> data(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_plan_overview");
JSONObject data = DataApiUtils.getPageOne(res);
MomentDataVO vo = new MomentDataVO();
if(null != data) {
vo.setMatlClickCnt(data.getInteger("matlClickCnt"));
vo.setMatlClickMbrNum(data.getInteger("matlClickMbrNum"));
vo.setMatlConvsAmt(data.getDoubleValue("matlConvsAmt"));
vo.setMatlConvsMbrNum(data.getInteger("matlConvsMbrNum"));
}
return RestResponse.successResult(vo);
}
/**
* 转化会员
*/
@RequestMapping("data_qw_moment_mbr_detail")
public RestResponse<Page<MomentDataMemberVO>> memberData(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataMemberVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataMemberVO> voList = EntityUtil.changeEntityListByJSON(MomentDataMemberVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataMemberVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null == map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.storeMap(storeSet) ;
Map<String,ClerkDTO> clerkMap = this.clerkMap(clerkSet) ;
for (MomentDataMemberVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
}
/**
* 转化会员导出
*/
@RequestMapping("data_qw_moment_mbr_detail_excel")
public RestResponse<String> memberDataExcel(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-转化明细"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
json.put("pageSize",1000) ;
task.setSearchDataParams(json.toJSONString());
task.setHandler(momentDataMemberExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
}
/**
* 转化订单
*/
@RequestMapping("data_qw_moment_order_detail")
public RestResponse<Page<MomentDataOrderVO>> orderData(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataOrderVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataOrderVO> voList = EntityUtil.changeEntityListByJSON(MomentDataOrderVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o -> o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(), memberIdList);
for (MomentDataOrderVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if (null == map.get(memberId)) {
vo.setMemberScene(2);
} else {
MemberDataDTO data = map.get(memberId);
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setMemberScene(3);
}
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByChannelCode(vo.getChannelCode()) ;
if(null != channel) {
vo.setChannelName(channel.getChannelNameOrder());
}
}
Set<String> storeSet = voList.stream().filter(o -> StringUtils.isNotBlank(o.getOrderStoreId()) && !"-1".equals(o.getOrderStoreId())).map(o -> o.getOrderStoreId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.storeMap(storeSet);
for (MomentDataOrderVO vo : voList) {
if (null != storeMap.get(vo.getOrderStoreId())) {
vo.setOrderStoreCode(storeMap.get(vo.getOrderStoreId()).getStoreCode());
vo.setOrderStoreName(storeMap.get(vo.getOrderStoreId()).getStoreName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
}
/**
* 转化订单导出
*/
@RequestMapping("data_qw_moment_order_detail_excel")
public RestResponse<String> orderDataExcel(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-转化订单"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
json.put("pageSize",1000) ;
task.setSearchDataParams(json.toJSONString());
task.setHandler(momentDataOrderExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
}
/**
* 点击数据
*/
@RequestMapping("data_qw_moment_mbr_click_detail")
public RestResponse<Page<MomentDataClickVO>> clerkData(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_click_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataClickVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataClickVO> voList = EntityUtil.changeEntityListByJSON(MomentDataClickVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataClickVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null == map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.storeMap(storeSet) ;
Map<String,ClerkDTO> clerkMap = this.clerkMap(clerkSet) ;
for (MomentDataClickVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
}
/**
* 点击导出
*/
@RequestMapping("data_qw_moment_mbr_click_detail_excel")
public RestResponse<String> clerkDataExcel(@RequestBody MomentDataQO qo) {
JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_click_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-点击明细"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
json.put("pageSize",1000) ;
task.setSearchDataParams(json.toJSONString());
task.setHandler(momentDataClickExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
}
private JSONObject paramsJson(MomentDataQO qo) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
String enterpriseId = user.getEnterpriseId();
JSONObject json = new JSONObject();
json.put("planId", qo.getPlanId()) ;
json.put("enterpriseId",enterpriseId) ;
json.put("pageNum",qo.getPageNum()) ;
json.put("pageSize",qo.getPageSize()) ;
if(StringUtils.isNotBlank(qo.getMemberId())) {
json.put("mbrId",qo.getMemberId()) ;
}
if(StringUtils.isNotBlank(qo.getOrderNumber())) {
json.put("orderCode",qo.getOrderNumber()) ;
}
if(StringUtils.isNotBlank(qo.getOrderChannel())) {
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByOldOrderType(Integer.valueOf(qo.getOrderChannel())) ;
if(null != channel) {
json.put("channelCode", channel.getChannelCode());
}
}
return json ;
}
public Map<String, StoreDTO> storeMap(Set<String> storeIdList) {
Map<String, StoreDTO> storeMap = new HashMap<>();
if(CollectionUtils.isEmpty(storeIdList)) {
return storeMap ;
}
List<String> list = new ArrayList<>() ;
list.addAll(storeIdList) ;
if (CollectionUtils.isNotEmpty(storeIdList)) {
List<StoreDTO> mainStoreList = storeService.queryStore(list);
if (CollectionUtils.isNotEmpty(mainStoreList)) {
storeMap = mainStoreList.stream().collect(Collectors.toMap(e -> e.getStoreId(), e -> e));
}
}
return storeMap ;
}
public Map<String, ClerkDTO> clerkMap(Set<String> clerkIdList) {
Map<String, ClerkDTO> clerkMap = new HashMap<>();
if(CollectionUtils.isEmpty(clerkIdList)) {
return clerkMap ;
}
List<ClerkDTO> mainClerkList = clerkService.getClerkByClerkIds(clerkIdList);
if (CollectionUtils.isNotEmpty(mainClerkList)) {
clerkMap = mainClerkList.stream().collect(Collectors.toMap(e -> e.getClerkId(), e -> e));
}
return clerkMap ;
}
}
...@@ -726,6 +726,18 @@ public class QywxOpenTaskController { ...@@ -726,6 +726,18 @@ public class QywxOpenTaskController {
} }
newType += "社群群发"; newType += "社群群发";
} }
if (oldSendType.contains("3")) {
if (StringUtils.isNotBlank(oldType)) {
oldType += "、";
}
oldType += "企微朋友圈";
}
if (newSendType.contains("3")) {
if (StringUtils.isNotBlank(newType)) {
newType += "、";
}
newType += "企微朋友圈";
}
if (!oldType.equals(newType)) { if (!oldType.equals(newType)) {
logContent2 += "执行消息类型从【" + oldType + "】修改为【" + newType + "】"; logContent2 += "执行消息类型从【" + oldType + "】修改为【" + newType + "】";
} }
......
package com.gic.haoban.manage.web.qo.moment;
import com.gic.api.base.commons.BasePageInfo;
import java.io.Serializable;
public class MomentDataQO extends BasePageInfo implements Serializable {
private Long planId ;
private String memberId ;
/**
* 订单渠道
*/
private String orderChannel ;
/**
* 订单编号
*/
private String orderNumber ;
private Integer dataType ;
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
public Long getPlanId() {
return planId;
}
public void setPlanId(Long planId) {
this.planId = planId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getOrderChannel() {
return orderChannel;
}
public void setOrderChannel(String orderChannel) {
this.orderChannel = orderChannel;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
}
...@@ -69,6 +69,26 @@ public class QwMomentPlanQO implements Serializable { ...@@ -69,6 +69,26 @@ public class QwMomentPlanQO implements Serializable {
*/ */
private Integer mediaLinkFlag ; 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() { public Integer getMediaLinkFlag() {
return mediaLinkFlag; return mediaLinkFlag;
} }
......
...@@ -42,6 +42,43 @@ public class GroupChatHmVO implements Serializable { ...@@ -42,6 +42,43 @@ public class GroupChatHmVO implements Serializable {
// 可以群数 // 可以群数
private Integer usableChatCount; private Integer usableChatCount;
private String useRemark; 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() { public String getUseRemark() {
return useRemark; return useRemark;
......
...@@ -60,6 +60,30 @@ public class GroupChatPlanExcelVO extends Object implements Serializable{ ...@@ -60,6 +60,30 @@ public class GroupChatPlanExcelVO extends Object implements Serializable{
*/ */
private Date createTime; private Date createTime;
private int execType;
// 执行方式 0企微1好办小程序
private String execTypeExcel ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public String getExecTypeExcel() {
if(execType==1) {
return "好办小程序发送" ;
}
return "企微快捷键发送";
}
public void setExecTypeExcel(String execTypeExcel) {
this.execTypeExcel = execTypeExcel;
}
public String getName() { public String getName() {
return name; return name;
} }
...@@ -80,6 +104,8 @@ public class GroupChatPlanExcelVO extends Object implements Serializable{ ...@@ -80,6 +104,8 @@ public class GroupChatPlanExcelVO extends Object implements Serializable{
return status; return status;
} }
public void setStatus(String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }
......
...@@ -51,6 +51,16 @@ public class HmLinkVO implements Serializable { ...@@ -51,6 +51,16 @@ public class HmLinkVO implements Serializable {
private List<HmLinkStoreVO> storeList; private List<HmLinkStoreVO> storeList;
private Long otherChatHmId ; private Long otherChatHmId ;
private List<HmLinkChatVO> linkChatList ; private List<HmLinkChatVO> linkChatList ;
// [{"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() { public Long getOtherChatHmId() {
return otherChatHmId; return otherChatHmId;
......
...@@ -141,6 +141,25 @@ public class HaobanQwMomentPlanVO implements Serializable { ...@@ -141,6 +141,25 @@ public class HaobanQwMomentPlanVO implements Serializable {
*/ */
private Integer mediaLinkFlag ; 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() { public Integer getMediaLinkFlag() {
return mediaLinkFlag; return mediaLinkFlag;
} }
......
package com.gic.haoban.manage.web.vo.moment;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.CardNoJsonSeralizer;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
public class MomentDataClickVO implements Serializable {
private String mbrId ;
private String memberId ;
/**
* 会员名称
*/
private String memberName;
private String memberImage;
/**
* 会员昵称
*/
private String memberNick;
@JsonSerialize(using = CardNoJsonSeralizer.class)
private String memberCardNo;
/**
* 会员手机号
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone;
private String storeId ;
private String clerkId ;
private String clerkCode;
private String clerkName;
private String storeName;
private String storeCode;
/**
* 浏览时长
*/
private Integer dur ;
/**
* 浏览时间
*/
private String clickTime ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberImage() {
return memberImage;
}
public void setMemberImage(String memberImage) {
this.memberImage = memberImage;
}
public String getMemberNick() {
return memberNick;
}
public void setMemberNick(String memberNick) {
this.memberNick = memberNick;
}
public String getMemberCardNo() {
return memberCardNo;
}
public void setMemberCardNo(String memberCardNo) {
this.memberCardNo = memberCardNo;
}
public String getMemberPhone() {
return memberPhone;
}
public void setMemberPhone(String memberPhone) {
this.memberPhone = memberPhone;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String 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 Integer getDur() {
return dur;
}
public void setDur(Integer dur) {
this.dur = dur;
}
public String getClickTime() {
return clickTime;
}
public void setClickTime(String clickTime) {
this.clickTime = clickTime;
}
}
package com.gic.haoban.manage.web.vo.moment;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.CardNoJsonSeralizer;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
public class MomentDataMemberVO implements Serializable {
private String mbrId ;
private String memberId ;
/**
* 会员名称
*/
private String memberName;
private String memberImage;
/**
* 会员昵称
*/
private String memberNick;
@JsonSerialize(using = CardNoJsonSeralizer.class)
private String memberCardNo;
/**
* 会员手机号
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone;
private String storeId ;
private String clerkId ;
private String clerkCode;
private String clerkName;
private String storeName;
private String storeCode;
/**
* 转化金额
*/
private Double matlConvsAmt ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberImage() {
return memberImage;
}
public void setMemberImage(String memberImage) {
this.memberImage = memberImage;
}
public String getMemberNick() {
return memberNick;
}
public void setMemberNick(String memberNick) {
this.memberNick = memberNick;
}
public String getMemberCardNo() {
return memberCardNo;
}
public void setMemberCardNo(String memberCardNo) {
this.memberCardNo = memberCardNo;
}
public String getMemberPhone() {
return memberPhone;
}
public void setMemberPhone(String memberPhone) {
this.memberPhone = memberPhone;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String 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 Double getMatlConvsAmt() {
return matlConvsAmt;
}
public void setMatlConvsAmt(Double matlConvsAmt) {
this.matlConvsAmt = matlConvsAmt;
}
}
package com.gic.haoban.manage.web.vo.moment;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.CardNoJsonSeralizer;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import java.io.Serializable;
public class MomentDataOrderVO implements Serializable {
private String mbrId ;
private String memberId ;
/**
* 会员名称
*/
private String memberName;
private String memberImage;
/**
* 会员昵称
*/
private String memberNick;
@JsonSerialize(using = CardNoJsonSeralizer.class)
private String memberCardNo;
/**
* 会员手机号
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone;
/**
* 订单渠道
*/
private String channelCode ;
private String channelName ;
/**
* 订单编号
*/
private String orderCode ;
/**
* 实付金额
*/
private Double matlConvsAmt ;
/**
* 消费门店
*/
private String orderStoreId ;
private String orderStoreName ;
private String orderStoreCode ;
/**
* 订单时间
*/
private String orderTime ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() {
return memberId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getMemberImage() {
return memberImage;
}
public void setMemberImage(String memberImage) {
this.memberImage = memberImage;
}
public String getMemberNick() {
return memberNick;
}
public void setMemberNick(String memberNick) {
this.memberNick = memberNick;
}
public String getMemberCardNo() {
return memberCardNo;
}
public void setMemberCardNo(String memberCardNo) {
this.memberCardNo = memberCardNo;
}
public String getMemberPhone() {
return memberPhone;
}
public void setMemberPhone(String memberPhone) {
this.memberPhone = memberPhone;
}
public String getChannelCode() {
return channelCode;
}
public void setChannelCode(String channelCode) {
this.channelCode = channelCode;
}
public String getChannelName() {
return channelName;
}
public void setChannelName(String channelName) {
this.channelName = channelName;
}
public String getOrderCode() {
return orderCode;
}
public void setOrderCode(String orderCode) {
this.orderCode = orderCode;
}
public Double getMatlConvsAmt() {
return matlConvsAmt;
}
public void setMatlConvsAmt(Double matlConvsAmt) {
this.matlConvsAmt = matlConvsAmt;
}
public String getOrderStoreId() {
return orderStoreId;
}
public void setOrderStoreId(String orderStoreId) {
this.orderStoreId = orderStoreId;
}
public String getOrderStoreName() {
return orderStoreName;
}
public void setOrderStoreName(String orderStoreName) {
this.orderStoreName = orderStoreName;
}
public String getOrderStoreCode() {
return orderStoreCode;
}
public void setOrderStoreCode(String orderStoreCode) {
this.orderStoreCode = orderStoreCode;
}
public String getOrderTime() {
return orderTime;
}
public void setOrderTime(String orderTime) {
this.orderTime = orderTime;
}
}
package com.gic.haoban.manage.web.vo.moment;
import java.io.Serializable;
public class MomentDataVO implements Serializable {
/**
* 点击数
*/
private Integer matlClickCnt ;
/**
* 点击会员数
*/
private Integer matlClickMbrNum ;
/**
* 转化金额
*/
private Double matlConvsAmt ;
/**
* 转化会员数
*/
private Integer matlConvsMbrNum ;
public Integer getMatlClickCnt() {
return matlClickCnt;
}
public void setMatlClickCnt(Integer matlClickCnt) {
this.matlClickCnt = matlClickCnt;
}
public Integer getMatlClickMbrNum() {
return matlClickMbrNum;
}
public void setMatlClickMbrNum(Integer matlClickMbrNum) {
this.matlClickMbrNum = matlClickMbrNum;
}
public Double getMatlConvsAmt() {
return matlConvsAmt;
}
public void setMatlConvsAmt(Double matlConvsAmt) {
this.matlConvsAmt = matlConvsAmt;
}
public Integer getMatlConvsMbrNum() {
return matlConvsMbrNum;
}
public void setMatlConvsMbrNum(Integer matlConvsMbrNum) {
this.matlConvsMbrNum = matlConvsMbrNum;
}
}
...@@ -229,7 +229,7 @@ public class WxEnterpriseInfoController extends WebBaseController { ...@@ -229,7 +229,7 @@ public class WxEnterpriseInfoController extends WebBaseController {
return resultResponse(HaoBanErrCode.ERR_1, wellDoneLoginInfoVo); return resultResponse(HaoBanErrCode.ERR_1, wellDoneLoginInfoVo);
} }
if (StringUtils.isNotBlank(loginStaff.getPhoneNumber()) || StringUtils.isNotBlank(loginStaff.getWxOpenUseId())) { if (StringUtils.isNotBlank(loginStaff.getPhoneNumber()) || StringUtils.isNotBlank(loginStaff.getWxOpenUseId()) || StringUtils.isNotBlank(loginStaff.getWxUserId())) {
DictDTO loginUserDict = managerDictService.getSMSDict("app_login_phone_num", loginStaff.getPhoneNumber()); DictDTO loginUserDict = managerDictService.getSMSDict("app_login_phone_num", loginStaff.getPhoneNumber());
if (null == loginUserDict) { if (null == loginUserDict) {
loginUserDict = managerDictService.getSMSDict("app_login_phone_num", loginStaff.getWxOpenUseId()); loginUserDict = managerDictService.getSMSDict("app_login_phone_num", loginStaff.getWxOpenUseId());
......
...@@ -71,6 +71,29 @@ public class ContentMaterialShareQO implements Serializable { ...@@ -71,6 +71,29 @@ public class ContentMaterialShareQO implements Serializable {
// 营销时间(任务创建时间) // 营销时间(任务创建时间)
private String marketingTime ; private String marketingTime ;
// 1朋友圈
private int planType ;
// 生成素材的活动id
private String planId ;
public int getPlanType() {
return planType;
}
public void setPlanType(int planType) {
this.planType = planType;
}
public String getPlanId() {
return planId;
}
public void setPlanId(String planId) {
this.planId = planId;
}
public Long getCanvasId() { public Long getCanvasId() {
return canvasId; return canvasId;
} }
......
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