Commit 955f4603 by 徐高华

Merge branch 'feature-canvas'

# Conflicts:
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/dao/mapper/TabHaobanExternalClerkRelatedMapper.java
#	haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/ExternalClerkRelatedApiServiceImpl.java
parents f1d812ca 46172f03
...@@ -49,6 +49,23 @@ public class ExternalUserClerkDTO implements Serializable { ...@@ -49,6 +49,23 @@ public class ExternalUserClerkDTO implements Serializable {
return externalStatus; return externalStatus;
} }
// 外部联系人ID状态1正常, 3单向好友
private Integer externalStatus ;
public Integer getExternalStatus() {
if(null == externalStatus) {
return 1;
}
if(externalStatus != 3) {
return 1;
}
return externalStatus;
}
public void setExternalStatus(Integer externalStatus) {
this.externalStatus = externalStatus;
}
public String getMemberId() { public String getMemberId() {
return memberId; return memberId;
} }
......
...@@ -8,7 +8,7 @@ public class CommonMQDTO implements Serializable { ...@@ -8,7 +8,7 @@ public class CommonMQDTO implements Serializable {
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么) * @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
*/ */
private static final long serialVersionUID = -5681421708810402425L; private static final long serialVersionUID = -5681421708810402425L;
// 1删除日报定时 2无部门成员修复 // 1删除日报定时 2无部门成员修复 3 通知会员好友关系 4社群终止 5 刷新社群群发结果
private int type; private int type;
private Object params; private Object params;
......
...@@ -6,7 +6,7 @@ public class ContentMaterialDTO implements Serializable { ...@@ -6,7 +6,7 @@ public class ContentMaterialDTO implements Serializable {
private static final long serialVersionUID = -8114034921530488238L; private static final long serialVersionUID = -8114034921530488238L;
// 素材类型, 1文本, 2图片, 3网页, 4视频, 5文件,6小程序 // 素材类型, 1文本, 2图片, 3网页, 4视频, 5文件,6小程序 7 卡券
private int materialType; private int materialType;
private String imgUrl; private String imgUrl;
...@@ -19,6 +19,70 @@ public class ContentMaterialDTO implements Serializable { ...@@ -19,6 +19,70 @@ public class ContentMaterialDTO implements Serializable {
*/ */
private String videoImgUrl; private String videoImgUrl;
private String appid ;
private int type ;
private String materialTitle ;
private String link ;
private String materialDesc;
/**
* 画布-群发-卡券素材ID
*/
private String canvasCouponUUID ;
public String getCanvasCouponUUID() {
return canvasCouponUUID;
}
public void setCanvasCouponUUID(String canvasCouponUUID) {
this.canvasCouponUUID = canvasCouponUUID;
}
public String getMaterialDesc() {
return materialDesc;
}
public void setMaterialDesc(String materialDesc) {
this.materialDesc = materialDesc;
}
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getMaterialTitle() {
return materialTitle;
}
public void setMaterialTitle(String materialTitle) {
this.materialTitle = materialTitle;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public int getMediaType() { public int getMediaType() {
return mediaType; return mediaType;
} }
......
...@@ -37,6 +37,16 @@ public class StaffClerkRelationDTO implements Serializable { ...@@ -37,6 +37,16 @@ public class StaffClerkRelationDTO implements Serializable {
private Integer manageFlag; private Integer manageFlag;
private Integer clerkType; private Integer clerkType;
private String staffHeadImg ;
public String getStaffHeadImg() {
return staffHeadImg;
}
public void setStaffHeadImg(String staffHeadImg) {
this.staffHeadImg = staffHeadImg;
}
public String getQwUserId() { public String getQwUserId() {
return qwUserId; return qwUserId;
} }
......
...@@ -131,6 +131,19 @@ public class WxEnterpriseDTO implements Serializable { ...@@ -131,6 +131,19 @@ public class WxEnterpriseDTO implements Serializable {
*/ */
private Integer callbackFlag; private Integer callbackFlag;
/**
* 是否开启微信托管-自动发送
*/
private Boolean isOpenQywxAutoSend ;
public Boolean getOpenQywxAutoSend() {
return isOpenQywxAutoSend;
}
public void setOpenQywxAutoSend(Boolean openQywxAutoSend) {
isOpenQywxAutoSend = openQywxAutoSend;
}
public Integer getCallbackFlag() { public Integer getCallbackFlag() {
return callbackFlag; return callbackFlag;
} }
......
...@@ -22,6 +22,15 @@ public class ChatOwnerTotalDTO implements Serializable { ...@@ -22,6 +22,15 @@ public class ChatOwnerTotalDTO implements Serializable {
private int notSendCount; private int notSendCount;
// 计划状态 1进行中 2已结束 // 计划状态 1进行中 2已结束
private int planStatus; private int planStatus;
private int execType ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public int getPlanStatus() { public int getPlanStatus() {
return planStatus; return planStatus;
......
...@@ -62,6 +62,16 @@ public class GroupChatPlanDTO implements Serializable { ...@@ -62,6 +62,16 @@ public class GroupChatPlanDTO implements Serializable {
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件 // 所有的群发条件
private String allSearchParams ; private String allSearchParams ;
// 执行方式 0企微1好办小程序
private int execType ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public String getAllSearchParams() { public String getAllSearchParams() {
return allSearchParams; return allSearchParams;
......
...@@ -38,7 +38,26 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{ ...@@ -38,7 +38,26 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{
private String remark ; private String remark ;
private String msgid ; private String msgid ;
private Date expireDate ; private Date expireDate ;
private Date sendTime ; private Date sendTime ;
private int execType ;
private Date dataGetTime ;
public Date getDataGetTime() {
return dataGetTime;
}
public void setDataGetTime(Date dataGetTime) {
this.dataGetTime = dataGetTime;
}
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public Date getStartTime() { public Date getStartTime() {
return startTime; return startTime;
} }
......
...@@ -78,9 +78,22 @@ public class NoticeMessageInfoDTO implements Serializable { ...@@ -78,9 +78,22 @@ public class NoticeMessageInfoDTO implements Serializable {
private String pageType; private String pageType;
/** /**
* 关联的具体业务消息id
*/
private String relationId;
/**
*/ */
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public String getRelationId() {
return relationId;
}
public void setRelationId(String relationId) {
this.relationId = relationId;
}
public String getPageType() { public String getPageType() {
return pageType; return pageType;
} }
......
...@@ -15,7 +15,7 @@ public class GroupChatPlanSearchQDTO implements Serializable { ...@@ -15,7 +15,7 @@ public class GroupChatPlanSearchQDTO implements Serializable {
private String searchParams; private String searchParams;
// 1进行中、2未开始、3已结束 // 1进行中、2未开始、3已结束
private Integer status; private Integer status;
// 群主 0发送失败 1待发送 2已发送 // 群主 0发送失败 1待发送 2已发送 3放弃 30(失败+放弃)
private Integer sendStatus ; private Integer sendStatus ;
// 群名称 // 群名称
private String chatName ; private String chatName ;
......
...@@ -37,7 +37,18 @@ public class GroupChatSearchQDTO extends PageQo implements Serializable { ...@@ -37,7 +37,18 @@ public class GroupChatSearchQDTO extends PageQo implements Serializable {
private Integer canUseFlag ; private Integer canUseFlag ;
private String wxChatId ; private String wxChatId ;
private String searchPage ; private String searchPage ;
// 查询放弃群的过滤时间
private Date giveUpStartTime ;
public Date getGiveUpStartTime() {
return giveUpStartTime;
}
public void setGiveUpStartTime(Date giveUpStartTime) {
this.giveUpStartTime = giveUpStartTime;
}
public String getSearchPage() { public String getSearchPage() {
return searchPage; return searchPage;
} }
......
...@@ -35,6 +35,13 @@ public enum NoticeMessageTypeEnum { ...@@ -35,6 +35,13 @@ public enum NoticeMessageTypeEnum {
CLERK_TASK_SEND_NOTICE(2014, "导购任务通知", NoticeMessageCategoryTypeEnum.TASK.getType(), "clerk_task_send_notice", "/pages/route/index?pageType=", "hbapp_guide_task_detail", "clerk_task_send_notice", "haobanNotice"), CLERK_TASK_SEND_NOTICE(2014, "导购任务通知", NoticeMessageCategoryTypeEnum.TASK.getType(), "clerk_task_send_notice", "/pages/route/index?pageType=", "hbapp_guide_task_detail", "clerk_task_send_notice", "haobanNotice"),
GROUP_CHAT_PLAN(2015, "社群群发任务通知", NoticeMessageCategoryTypeEnum.TASK.getType(), "haobanGroupChatPlan", "/pages/route/index?pageType=", "hbapp_canvas_group_send", "haobanGroupChatPlan", "haobanNotice"),
MASS_GROUP_SEND_PLAN(2016, "客户群发任务通知", NoticeMessageCategoryTypeEnum.TASK.getType(), "haobanMassGroupSendPlan", "/pages/route/index?pageType=", "hbapp_canvas_custom_send", "haobanMassGroupSendPlan", "haobanNotice"),
TEL_TASK_CANVAS(2017, "话务任务通知", NoticeMessageCategoryTypeEnum.TASK.getType(), "haobanTelTaskCanvas", "/pages/route/index?pageType=", "hbapp_canvas_task", "haobanTelTaskCanvas", "haobanNotice"),
HB_TASK_TO_DO_LIST_NOTICE(2018, "任务执行提醒", NoticeMessageCategoryTypeEnum.TASK.getType(), "haobanTaskTodoNotice", "/pages/route/index?pageType=", "", "haobanTaskTodoNotice", "haobanNotice"),
STORE_ACCOUNT(3001, "账号申请", NoticeMessageCategoryTypeEnum.OTHER.getType(), "store_account", "/pages/route/index?pageType=", "store_relate_store_record_list", "accountApplication", "haobanNotice"), STORE_ACCOUNT(3001, "账号申请", NoticeMessageCategoryTypeEnum.OTHER.getType(), "store_account", "/pages/route/index?pageType=", "store_relate_store_record_list", "accountApplication", "haobanNotice"),
// //
MEMBER_FACE(3002, "账号申请", NoticeMessageCategoryTypeEnum.OTHER.getType(), "member_face", "/pages/route/index?pageType=", "hbapp_customer_edit_tag", "", "haobanNotice"), MEMBER_FACE(3002, "账号申请", NoticeMessageCategoryTypeEnum.OTHER.getType(), "member_face", "/pages/route/index?pageType=", "hbapp_customer_edit_tag", "", "haobanNotice"),
......
...@@ -6,7 +6,10 @@ public enum PlanSendStatusEnum { ...@@ -6,7 +6,10 @@ public enum PlanSendStatusEnum {
TO_BE_SEND(1, "待发送"), TO_BE_SEND(1, "待发送"),
SENDED(2, "禁用"); SENDED(2, "已发送"),
GIVE_UP(3, "放弃");
private int code; private int code;
private String name; private String name;
......
package com.gic.haoban.manage.api.qdto;
import java.io.Serializable;
public class CanvasInfoQDTO implements Serializable {
private Long canvasId ;
private Long nodeId ;
private Long execLogId ;
private String clerkId ;
private Long taskTime ;
public Long getCanvasId() {
return canvasId;
}
public void setCanvasId(Long canvasId) {
this.canvasId = canvasId;
}
public Long getNodeId() {
return nodeId;
}
public void setNodeId(Long nodeId) {
this.nodeId = nodeId;
}
public Long getExecLogId() {
return execLogId;
}
public void setExecLogId(Long execLogId) {
this.execLogId = execLogId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Long getTaskTime() {
return taskTime;
}
public void setTaskTime(Long taskTime) {
this.taskTime = taskTime;
}
}
package com.gic.haoban.manage.api.qdto;
import java.io.Serializable;
import java.util.Date;
public class StaffSendResultQDTO implements Serializable {
private String wxEnterpriseId ;
private String staffId ;
private Long planId ;
/**
* 发送失败原因,为空是成功
*/
private String failRemark ;
/**
* 发送时间
*/
private Date sendTime ;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Long getPlanId() {
return planId;
}
public void setPlanId(Long planId) {
this.planId = planId;
}
public String getFailRemark() {
return failRemark;
}
public void setFailRemark(String failRemark) {
this.failRemark = failRemark;
}
public Date getSendTime() {
return sendTime;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
}
...@@ -6,6 +6,10 @@ public class CombinedQDTO implements Serializable { ...@@ -6,6 +6,10 @@ public class CombinedQDTO implements Serializable {
private static final long serialVersionUID = -28454620622119889L; private static final long serialVersionUID = -28454620622119889L;
/** /**
* 企业id
*/
private String enterpriseId;
/**
* 主图url * 主图url
*/ */
private String imageUrl; private String imageUrl;
...@@ -27,11 +31,16 @@ public class CombinedQDTO implements Serializable { ...@@ -27,11 +31,16 @@ public class CombinedQDTO implements Serializable {
private String lineTwo; private String lineTwo;
/** /**
* 1群发 2朋友圈 * 1群发 2朋友圈 3合成图片
*/ */
private Integer mediaType; private Integer mediaType;
/** /**
* 额外参数
*/
private String extend = "";
/**
* 导购id(作标识) * 导购id(作标识)
*/ */
private String clerkId; private String clerkId;
...@@ -41,6 +50,14 @@ public class CombinedQDTO implements Serializable { ...@@ -41,6 +50,14 @@ public class CombinedQDTO implements Serializable {
*/ */
private String businessId; private String businessId;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getImageUrl() { public String getImageUrl() {
return imageUrl; return imageUrl;
} }
...@@ -89,8 +106,16 @@ public class CombinedQDTO implements Serializable { ...@@ -89,8 +106,16 @@ public class CombinedQDTO implements Serializable {
this.mediaType = mediaType; this.mediaType = mediaType;
} }
public String getExtend() {
return extend;
}
public void setExtend(String extend) {
this.extend = extend;
}
public String getUnionString() { public String getUnionString() {
return this.getImageUrl() + this.getQrCodeUrl() + this.getShowStyle() + this.getLineOne() + this.getLineTwo() + this.getMediaType(); return this.getImageUrl() + this.getQrCodeUrl() + this.getShowStyle() + this.getLineOne() + this.getLineTwo() + this.getMediaType() + this.getExtend();
} }
public String getClerkId() { public String getClerkId() {
......
...@@ -363,5 +363,13 @@ public interface ExternalClerkRelatedApiService { ...@@ -363,5 +363,13 @@ public interface ExternalClerkRelatedApiService {
*/ */
public com.gic.api.base.commons.ServiceResponse<MemberGroupFriendDTO> memberIsAddClerk(String enterpriseId, String memberId) ; public com.gic.api.base.commons.ServiceResponse<MemberGroupFriendDTO> memberIsAddClerk(String enterpriseId, String memberId) ;
/**
* 获取好友数据
* @param memberId
* @param storeId
* @param clerkId
* @return
*/
int getFriendNum(String memberId , String storeId , String clerkId) ;
} }
...@@ -139,4 +139,16 @@ public interface HaobanTimerApiService { ...@@ -139,4 +139,16 @@ public interface HaobanTimerApiService {
* @param params * @param params
*/ */
void groupChatActivityTime(String params); void groupChatActivityTime(String params);
/**
* 群群发获取msgid
* @param params
*/
void groupChatMsgidTimer(String params) ;
/**
* 取消企微群群发
* @param params
*/
void cancelSendTimer(String params) ;
} }
...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service; ...@@ -3,6 +3,7 @@ package com.gic.haoban.manage.api.service;
import com.gic.api.base.commons.JSONResponse; import com.gic.api.base.commons.JSONResponse;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.*; import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.qdto.CanvasInfoQDTO;
import java.util.List; import java.util.List;
...@@ -82,6 +83,9 @@ public interface MemberUnionidRelatedApiService { ...@@ -82,6 +83,9 @@ public interface MemberUnionidRelatedApiService {
JSONResponse sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, List<String> materialIdList , String planId); JSONResponse sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, List<String> materialIdList , String planId);
JSONResponse sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList, String message ,List<ContentMaterialDTO> imgList); JSONResponse sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList, String message ,List<ContentMaterialDTO> imgList);
JSONResponse sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
String message , List<ContentMaterialDTO> imageList, String planId , CanvasInfoQDTO canvas) ;
/** /**
* 创建企业群发, 支出素材批量发送 * 创建企业群发, 支出素材批量发送
......
...@@ -390,4 +390,7 @@ public interface StaffApiService { ...@@ -390,4 +390,7 @@ public interface StaffApiService {
Page<StaffDTO> listByParams(String enterpriseId , String params, String wxEnterpriseId, BasePageInfo pageInfo) ; Page<StaffDTO> listByParams(String enterpriseId , String params, String wxEnterpriseId, BasePageInfo pageInfo) ;
void deleteStaff(String enterpriseId , String clerkId) ;
} }
...@@ -8,6 +8,7 @@ import com.gic.haoban.manage.api.dto.StaffClerkInfoDTO; ...@@ -8,6 +8,7 @@ import com.gic.haoban.manage.api.dto.StaffClerkInfoDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
public interface StaffClerkRelationApiService { public interface StaffClerkRelationApiService {
...@@ -222,4 +223,16 @@ public interface StaffClerkRelationApiService { ...@@ -222,4 +223,16 @@ public interface StaffClerkRelationApiService {
List<String> listAllClerkIdsByEnterpriseId(String enterpriseId); List<String> listAllClerkIdsByEnterpriseId(String enterpriseId);
List<String> listAlStoreIdsByEnterpriseId(String enterpriseId);
/**
* 画布查询关联好办的的导购
* @param wxEnterpriseId
* @param enterpriseId
* @param creatorId
* @param storeFilterId
* @return
*/
ServiceResponse<Map<String,List<String>>> listClerkForCanvas(String wxEnterpriseId , String enterpriseId , String creatorId , String storeFilterId) ;
} }
...@@ -8,6 +8,9 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO; ...@@ -8,6 +8,9 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import java.util.Date;
/** /**
* *
...@@ -74,4 +77,22 @@ public interface GroupChatPlanApiService { ...@@ -74,4 +77,22 @@ public interface GroupChatPlanApiService {
* @return * @return
*/ */
public ServiceResponse<Integer> getTotalCount(String enterpriseId,String clerkId,String storeId); public ServiceResponse<Integer> getTotalCount(String enterpriseId,String clerkId,String storeId);
void staffSendResult(StaffSendResultQDTO qdto);
/**
* 获取msgid(非社群群发)
* @return
*/
String getQwMsgId(String staffId , Date sendTime) ;
/**
*
* @param params
*/
void noticeTimer(String params) ;
Integer getTaskNum(String wxEnterpriseId, String enterpriseId, String storeId, String clerkId, String staffId);
} }
package com.gic.haoban.manage.api.util.notify; package com.gic.haoban.manage.api.util.notify;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -27,6 +28,7 @@ public class NoticeMessageUtil { ...@@ -27,6 +28,7 @@ public class NoticeMessageUtil {
private static final Logger logger = getLogger(NoticeMessageUtil.class); private static final Logger logger = getLogger(NoticeMessageUtil.class);
//com.gic.haoban.manage.api.service.notify.NoticeMessageApiService#run
private static final String NOTICE_MESSAGE = "haobanNoticeMessage"; private static final String NOTICE_MESSAGE = "haobanNoticeMessage";
private static final String NOTICE_MESSAGE_BATCH = "haobanNoticeMessageBatch"; private static final String NOTICE_MESSAGE_BATCH = "haobanNoticeMessageBatch";
......
...@@ -457,4 +457,5 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -457,4 +457,5 @@ public interface TabHaobanExternalClerkRelatedMapper {
* @param memberId * @param memberId
*/ */
TabHaobanExternalClerkRelated isClerkFriend(@Param("enterpriseId")String enterpriseId, @Param("clerkId")String clerkId, @Param("memberId")String memberId); TabHaobanExternalClerkRelated isClerkFriend(@Param("enterpriseId")String enterpriseId, @Param("clerkId")String clerkId, @Param("memberId")String memberId);
int getFriendNum(@Param("memberId")String memberId, @Param("storeId")String storeId, @Param("clerkId")String clerkId);
} }
\ No newline at end of file
...@@ -125,6 +125,8 @@ public interface TabHaobanStaffClerkRelationMapper { ...@@ -125,6 +125,8 @@ public interface TabHaobanStaffClerkRelationMapper {
List<String> listAllClerkIdsByEnterpriseId(@Param("enterpriseId") String enterpriseId); List<String> listAllClerkIdsByEnterpriseId(@Param("enterpriseId") String enterpriseId);
List<String> listAlStoreIdsByEnterpriseId(@Param("enterpriseId") String enterpriseId);
/** /**
* 根据staffId查询gic品牌id * 根据staffId查询gic品牌id
* @param wxEnterpriseId 企业微信id * @param wxEnterpriseId 企业微信id
......
...@@ -29,6 +29,12 @@ public interface GroupChatPlanOwnerLogMapper { ...@@ -29,6 +29,12 @@ public interface GroupChatPlanOwnerLogMapper {
public TabGroupChatPlanOwnerLog selectById(Long ownerLogId); public TabGroupChatPlanOwnerLog selectById(Long ownerLogId);
/**
* 放弃
* @param id
*/
void giveUp(@Param("id")Long id) ;
public void updateSendCount(@Param("id") Long id, @Param("sendCount") int sendCount, public void updateSendCount(@Param("id") Long id, @Param("sendCount") int sendCount,
@Param("failCount") int failCount, @Param("sendTime") Date sendTime); @Param("failCount") int failCount, @Param("sendTime") Date sendTime);
...@@ -53,4 +59,22 @@ public interface GroupChatPlanOwnerLogMapper { ...@@ -53,4 +59,22 @@ public interface GroupChatPlanOwnerLogMapper {
* @return * @return
*/ */
Integer getTotalCount(@Param("enterpriseId")String enterpriseId,@Param("clerkId")String clerkId,@Param("storeId")String storeId); Integer getTotalCount(@Param("enterpriseId")String enterpriseId,@Param("clerkId")String clerkId,@Param("storeId")String storeId);
void updateExecType(@Param("planId")Long planId , @Param("execType")int execType) ;
List<GroupChatPlanOwnerLogDTO> listForMsgid() ;
List<GroupChatPlanOwnerLogDTO> listForCancelSend() ;
void updateMsgid(@Param("id")Long id , @Param("msgid")String msgid) ;
void staffSendResult(@Param("staffId")String staffId, @Param("planId")Long planId, @Param("sendTime")Date sendTime, @Param("failRemark")String failRemark , @Param("statusFlag")int statusFlag);
int getTotalTask(@Param("enterpriseId")String enterpriseId , @Param("clerkId")String clerkId , @Param("time")Date time ) ;
int getInvalidTask(@Param("enterpriseId")String enterpriseId , @Param("clerkId")String clerkId , @Param("time")Date time ) ;
int getOverdueTask(@Param("enterpriseId")String enterpriseId , @Param("clerkId")String clerkId , @Param("time")Date time ) ;
int getTaskNum(@Param("enterpriseId")String enterpriseId, @Param("clerkId")String clerkId, @Param("storeId")String storeId, @Param("staffId")String staffId);
} }
\ No newline at end of file
...@@ -39,6 +39,8 @@ public interface WxUserAddLogMapper { ...@@ -39,6 +39,8 @@ public interface WxUserAddLogMapper {
*/ */
public List<TabWxUserAddLog> listAllForDel(String externalUserid); public List<TabWxUserAddLog> listAllForDel(String externalUserid);
TabWxUserAddLog getForTask(@Param("externalUserid") String externalUserid) ;
/** /**
* *
* @Title: selectNewLog * @Title: selectNewLog
......
...@@ -32,6 +32,7 @@ public class TabMaterialContent implements Serializable { ...@@ -32,6 +32,7 @@ public class TabMaterialContent implements Serializable {
private java.util.Date createTime; private java.util.Date createTime;
/**修改时间*/ /**修改时间*/
private java.util.Date updateTime; private java.util.Date updateTime;
// 1群发 2朋友圈
private int mediaType ; private int mediaType ;
/** /**
...@@ -39,6 +40,36 @@ public class TabMaterialContent implements Serializable { ...@@ -39,6 +40,36 @@ public class TabMaterialContent implements Serializable {
*/ */
private String videoImgUrl; private String videoImgUrl;
private String appid ;
private String materialTitle ;
private String link ;
public String getLink() {
return link;
}
public void setLink(String link) {
this.link = link;
}
public String getMaterialTitle() {
return materialTitle;
}
public void setMaterialTitle(String materialTitle) {
this.materialTitle = materialTitle;
}
public String getAppid() {
return appid;
}
public void setAppid(String appid) {
this.appid = appid;
}
public int getMediaType() { public int getMediaType() {
return mediaType; return mediaType;
} }
......
...@@ -58,6 +58,17 @@ public class TabGroupChatPlan implements Serializable { ...@@ -58,6 +58,17 @@ public class TabGroupChatPlan implements Serializable {
// 所有的群发条件 // 所有的群发条件
private String allSearchParams ; private String allSearchParams ;
// 执行方式 0企微1好办小程序
private int execType ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public String getAllSearchParams() { public String getAllSearchParams() {
return allSearchParams; return allSearchParams;
} }
......
...@@ -34,6 +34,24 @@ public class TabGroupChatPlanOwnerLog implements Serializable { ...@@ -34,6 +34,24 @@ public class TabGroupChatPlanOwnerLog implements Serializable {
private Integer doneFlag; private Integer doneFlag;
private Integer deleteFlag; private Integer deleteFlag;
private Date sendTime; private Date sendTime;
private int execType ;
private Date dataGetTime ;
public Date getDataGetTime() {
return dataGetTime;
}
public void setDataGetTime(Date dataGetTime) {
this.dataGetTime = dataGetTime;
}
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public Integer getFailCount() { public Integer getFailCount() {
return failCount; return failCount;
......
...@@ -57,6 +57,16 @@ public class GroupChatPlanBO implements Serializable{ ...@@ -57,6 +57,16 @@ public class GroupChatPlanBO implements Serializable{
private int sendAllFlag ; private int sendAllFlag ;
// 所有的群发条件 // 所有的群发条件
private String allSearchParams ; private String allSearchParams ;
// 执行方式 0企微1好办小程序
private int execType ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public String getAllSearchParams() { public String getAllSearchParams() {
return allSearchParams; return allSearchParams;
......
...@@ -123,4 +123,14 @@ public interface ExternalClerkRelatedService { ...@@ -123,4 +123,14 @@ public interface ExternalClerkRelatedService {
*/ */
String getMemberIdByExternalId(String wxEnterpriseId,String externalUserId); String getMemberIdByExternalId(String wxEnterpriseId,String externalUserId);
/**
* 获取好友数据
* @param memberId
* @param storeId
* @param clerkId
* @return
*/
int getFriendNum(String memberId , String storeId , String clerkId) ;
} }
...@@ -56,7 +56,8 @@ public interface MaterialService { ...@@ -56,7 +56,8 @@ public interface MaterialService {
public MaterialDTO getHasChangeMadieMaterialById(String materialId,int from) ; public MaterialDTO getHasChangeMadieMaterialById(String materialId,int from) ;
public JSONResponse reUpdalodMetailJson(String materialId,int from) ; public JSONResponse reUpdalodMetailJson(String materialId,int from) ;
//mediaType1群发 2朋友圈
public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ; public List<String> getImageMediaId(String wxEnterpriseId, List<ContentMaterialDTO> imageList, int mediaType) ;
List<MaterialDTO> listContentMaterialByIds(List<String> materialIds,Integer mediaType); List<MaterialDTO> listContentMaterialByIds(List<String> materialIds,Integer mediaType);
......
...@@ -4,6 +4,7 @@ import java.util.List; ...@@ -4,6 +4,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.ContentMaterialDTO; import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.qdto.CanvasInfoQDTO;
public interface QywxSendService { public interface QywxSendService {
...@@ -13,6 +14,7 @@ public interface QywxSendService { ...@@ -13,6 +14,7 @@ public interface QywxSendService {
public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<String> materialIdList , String planId); List<String> materialIdList , String planId);
/** /**
* 素材-分享 * 素材-分享
*/ */
...@@ -20,6 +22,12 @@ public interface QywxSendService { ...@@ -20,6 +22,12 @@ public interface QywxSendService {
List<ContentMaterialDTO> imageList, String message); List<ContentMaterialDTO> imageList, String message);
/** /**
* 画布
*/
public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<ContentMaterialDTO> imageList, String message , String planId , CanvasInfoQDTO canvas);
/**
* 分享朋友圈 * 分享朋友圈
*/ */
public ServiceResponse<String> share(String wxEnterpriseId, List<String> clerkIdList, String message, public ServiceResponse<String> share(String wxEnterpriseId, List<String> clerkIdList, String message,
......
package com.gic.haoban.manage.service.service; package com.gic.haoban.manage.service.service;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.base.api.common.BasePageInfo; import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.service.entity.MemberClerkChatConfig; import com.gic.haoban.manage.service.entity.MemberClerkChatConfig;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
public interface StaffClerkRelationService { public interface StaffClerkRelationService {
...@@ -182,6 +184,8 @@ public interface StaffClerkRelationService { ...@@ -182,6 +184,8 @@ public interface StaffClerkRelationService {
*/ */
List<String> listAllClerkIdsByEnterpriseId(String enterpriseId); List<String> listAllClerkIdsByEnterpriseId(String enterpriseId);
List<String> listAlStoreIdsByEnterpriseId(String enterpriseId);
/** /**
* 根据staffId查询gic品牌id * 根据staffId查询gic品牌id
* @param wxEnterpriseId 企业微信id * @param wxEnterpriseId 企业微信id
...@@ -198,4 +202,6 @@ public interface StaffClerkRelationService { ...@@ -198,4 +202,6 @@ public interface StaffClerkRelationService {
List<String> listAllStaffIdByEnterpriseId(String enterpriseId,String wxEnterpriseId); List<String> listAllStaffIdByEnterpriseId(String enterpriseId,String wxEnterpriseId);
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);
} }
...@@ -15,7 +15,7 @@ public interface GroupChatPlanOwnerLogService { ...@@ -15,7 +15,7 @@ public interface GroupChatPlanOwnerLogService {
public void batchAdd(String staffIdList, TabGroupChatPlan entity); public void batchAdd(String staffIdList, TabGroupChatPlan entity);
public void update(TabGroupChatPlanOwnerLog entity); public boolean update(TabGroupChatPlanOwnerLog entity);
public void deleteByStaffIds(Long planId, String delStaffIds); public void deleteByStaffIds(Long planId, String delStaffIds);
......
...@@ -5,7 +5,11 @@ import com.gic.api.base.commons.Page; ...@@ -5,7 +5,11 @@ import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO; import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO;
import com.gic.haoban.manage.service.service.content.impl.GroupMessageServiceImpl;
import java.util.Date;
public interface GroupChatPlanService { public interface GroupChatPlanService {
...@@ -29,4 +33,17 @@ public interface GroupChatPlanService { ...@@ -29,4 +33,17 @@ public interface GroupChatPlanService {
public void updateRemark(GroupChatPlanDTO dto); public void updateRemark(GroupChatPlanDTO dto);
void groupChatMsgidTimer(String params);
void cancelSendTimer(String params);
void staffSendResult(StaffSendResultQDTO qdto);
void stopByMsgid(Long planId);
String getQwMsgId(String staffId , Date sendTime, GroupMessageServiceImpl.GroupMsgChatType groupMsgChatType) ;
void noticeTimer(String params);
Integer getTaskNum(String wxEnterpriseId, String enterpriseId, String storeId, String clerkId, String staffId);
} }
\ No newline at end of file
...@@ -128,34 +128,40 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe ...@@ -128,34 +128,40 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
log.setUpdateTime(new Date()); log.setUpdateTime(new Date());
log.setSendCount(0); log.setSendCount(0);
log.setStaffId(staffId); log.setStaffId(staffId);
log.setExecType(entity.getExecType());
logList.add(log); logList.add(log);
} }
this.groupChatPlanOwnerLogMapper.batchInsert(logList); this.groupChatPlanOwnerLogMapper.batchInsert(logList);
} }
@Override @Override
public void update(TabGroupChatPlanOwnerLog entity) { public boolean update(TabGroupChatPlanOwnerLog entity) {
String staffId = entity.getStaffId(); String staffId = entity.getStaffId();
TabHaobanClerkMainStoreRelated mainStore = this.clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, TabHaobanClerkMainStoreRelated mainStore = this.clerkMainStoreRelatedService.getMainStoreByStaffId(staffId,
entity.getWxEnterpriseId()); entity.getWxEnterpriseId());
boolean flag = true ;
if (null == mainStore) { if (null == mainStore) {
entity.setRemark("区经/未配置主门店"); entity.setRemark("区经/未配置主门店");
flag = false ;
} else { } else {
String storeId = mainStore.getStoreId(); String storeId = mainStore.getStoreId();
StaffClerkRelationDTO clerk = this.staffClerkRelationService.getOneBindByStoreId(staffId, storeId); StaffClerkRelationDTO clerk = this.staffClerkRelationService.getOneBindByStoreId(staffId, storeId);
if (null != clerk) { if (null != clerk) {
if (!clerk.getEnterpriseId().equals(entity.getEnterpriseId())) { if (!clerk.getEnterpriseId().equals(entity.getEnterpriseId())) {
entity.setRemark("主门店不在任务商户下"); entity.setRemark("主门店不在任务商户下");
flag = false ;
} else { } else {
entity.setClerkId(clerk.getClerkId()); entity.setClerkId(clerk.getClerkId());
entity.setStoreId(mainStore.getStoreId()); entity.setStoreId(mainStore.getStoreId());
} }
} else { } else {
entity.setRemark("无关联导购"); entity.setRemark("无关联导购");
flag = false ;
logger.info("导购关联数据不存在,staffid={},storeid={}", staffId, mainStore.getStoreId()); logger.info("导购关联数据不存在,staffid={},storeid={}", staffId, mainStore.getStoreId());
} }
} }
this.groupChatPlanOwnerLogMapper.update(entity); this.groupChatPlanOwnerLogMapper.update(entity);
return flag ;
} }
@Override @Override
...@@ -196,6 +202,14 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe ...@@ -196,6 +202,14 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
qdto.setClerkId(qdto.getSearchClerkId()); qdto.setClerkId(qdto.getSearchClerkId());
} }
} }
if(clerkType > 1) {
storeId = qdto.getStoreId() ;
clerkId = null;
qdto.setClerkId(null);
if (StringUtils.isNotBlank(qdto.getSearchClerkId())) {
qdto.setClerkId(qdto.getSearchClerkId());
}
}
qdto.setStoreId(storeId); qdto.setStoreId(storeId);
PageHelper.startPage(basePageInfo); PageHelper.startPage(basePageInfo);
List<ChatOwnerTotalDTO> list = this.groupChatPlanOwnerLogMapper.listOwnerLogPageForWxaTotal(qdto); List<ChatOwnerTotalDTO> list = this.groupChatPlanOwnerLogMapper.listOwnerLogPageForWxaTotal(qdto);
......
...@@ -9,18 +9,31 @@ import java.util.stream.Collectors; ...@@ -9,18 +9,31 @@ import java.util.stream.Collectors;
import com.gic.enterprise.api.dto.EnterpriseDTO; import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService; import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.dto.CommonMQDTO;
import com.gic.haoban.manage.api.dto.ContentMaterialDTO; import com.gic.haoban.manage.api.dto.ContentMaterialDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO; import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.chat.ChatContentDTO; import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
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.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import com.gic.haoban.manage.api.service.HaobanCommonMQApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper; import com.gic.haoban.manage.service.dao.mapper.TabHaobanStaffClerkRelationMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatOwnerMapper; import com.gic.haoban.manage.service.dao.mapper.WxEnterpriseRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.*;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.content.impl.GroupMessageServiceImpl;
import com.gic.haoban.manage.service.util.StreamUtils; import com.gic.haoban.manage.service.util.StreamUtils;
import com.gic.haoban.task.manage.api.service.QywxGroupSendCanvasApiService;
import com.gic.thirdparty.cloudfile.CloudFileUtil; import com.gic.thirdparty.cloudfile.CloudFileUtil;
import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum; import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum;
import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum; import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum;
import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo; import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp;
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;
...@@ -46,16 +59,11 @@ import com.gic.enterprise.api.dto.StoreDTO; ...@@ -46,16 +59,11 @@ import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.common.utils.DingUtils; import com.gic.haoban.common.utils.DingUtils;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO; import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.enums.PendingTaskTypeEnum; import com.gic.haoban.manage.api.enums.PendingTaskTypeEnum;
import com.gic.haoban.manage.api.enums.chat.PlanSendStatusEnum; import com.gic.haoban.manage.api.enums.chat.PlanSendStatusEnum;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper; import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanLogMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanOwnerLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff; import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
...@@ -117,6 +125,16 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -117,6 +125,16 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private GroupChatOwnerMapper groupChatOwnerMapper ; private GroupChatOwnerMapper groupChatOwnerMapper ;
@Autowired @Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper ; private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper ;
@Autowired
private GroupChatMapper groupChatMapper ;
@Autowired
private HaobanCommonMQApiService haobanCommonMQApiService ;
@Autowired
private QywxGroupSendCanvasApiService qywxGroupSendCanvasApiService ;
@Autowired
private WxEnterpriseRelatedMapper wxEnterpriseRelatedMapper;
@Autowired
private StaffClerkRelationService staffClerkRelationService ;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance(); private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
...@@ -185,6 +203,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -185,6 +203,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
this.groupChatPlanMapper.updateById(entity); this.groupChatPlanMapper.updateById(entity);
// 删除本次删除的 // 删除本次删除的
this.groupChatPlanOwnerLogService.deleteByStaffIds(planId, dto.getDelStaffIdList()); this.groupChatPlanOwnerLogService.deleteByStaffIds(planId, dto.getDelStaffIdList());
if(old.getExecType() != dto.getExecType()) {
this.groupChatPlanOwnerLogMapper.updateExecType(planId,dto.getExecType());
}
} }
// 新增群主日志 // 新增群主日志
this.groupChatPlanOwnerLogService.batchAdd(staffIdList, entity); this.groupChatPlanOwnerLogService.batchAdd(staffIdList, entity);
...@@ -295,6 +316,19 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -295,6 +316,19 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
return Collections.emptyList() ; return Collections.emptyList() ;
} }
private void sendNotice(String enterpriseId, String staffId ,String clerkId , String taskName , Date endTime,Long planId,Long ownerLogId) {
logger.info("发送社群任务通知,clerkId={}",clerkId);
// 发送通知
Map<String, String> map = new HashMap<>();
map.put("taskName", taskName);
map.put("overTime", DateUtil.dateToStr(endTime,"yyyy-MM-dd HH:mm:ss"));
JSONObject jsonObject = new JSONObject();
jsonObject.put("planId",planId) ;
jsonObject.put("ownerLogId",ownerLogId) ;
int messageType = NoticeMessageTypeEnum.GROUP_CHAT_PLAN.getType();
NoticeMessageUtil.sendNoticeMessageByStaff(enterpriseId,staffId,clerkId,messageType,null,map,jsonObject);
}
@Override @Override
public void doPlan(Long planId) { public void doPlan(Long planId) {
logger.info("开始群群发发送{}", planId); logger.info("开始群群发发送{}", planId);
...@@ -347,7 +381,6 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -347,7 +381,6 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
} }
} }
} }
int pageNum = 0;
List<TabGroupChatPlanOwnerLog> ownerList = null; List<TabGroupChatPlanOwnerLog> ownerList = null;
int sendAlFlag = plan.getSendAllFlag() ; int sendAlFlag = plan.getSendAllFlag() ;
String allSearchParams = plan.getAllSearchParams() ; String allSearchParams = plan.getAllSearchParams() ;
...@@ -387,6 +420,28 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -387,6 +420,28 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
} }
this.groupChatPlanMapper.updateStaffCount(planId,totalCount); this.groupChatPlanMapper.updateStaffCount(planId,totalCount);
} }
int pageNum = 0;
if(plan.getExecType() == 1) {
logger.info("好办小程序执行={}",planId);
while (true) {
ownerList = this.groupChatPlanOwnerLogMapper.listForDoPlan(planId, pageNum * pageSize, pageSize);
if (CollectionUtils.isEmpty(ownerList)) {
break;
}
pageNum++;
for (TabGroupChatPlanOwnerLog ownerLog : ownerList) {
boolean flag = this.groupChatPlanOwnerLogService.update(ownerLog);
if(flag) {
// 发送消息
String enterpriseId = ownerLog.getEnterpriseId() ;
String clerkId = ownerLog.getClerkId() ;
String staffId = ownerLog.getStaffId() ;
this.sendNotice(enterpriseId,staffId,clerkId,plan.getName(),plan.getEndTime(),planId,ownerLog.getOwnerLogId());
}
}
}
return;
}
while (true) { while (true) {
ownerList = this.groupChatPlanOwnerLogMapper.listForDoPlan(planId, pageNum * pageSize, pageSize); ownerList = this.groupChatPlanOwnerLogMapper.listForDoPlan(planId, pageNum * pageSize, pageSize);
if (CollectionUtils.isEmpty(ownerList)) { if (CollectionUtils.isEmpty(ownerList)) {
...@@ -463,11 +518,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -463,11 +518,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
public void doPlanSendInfo(Long ownerLogId) { public void doPlanSendInfo(Long ownerLogId) {
logger.info("开始群群发统计{}", ownerLogId); logger.info("开始群群发统计{}", ownerLogId);
TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(ownerLogId); TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(ownerLogId);
if (ownerLog.getSendStatus() == 2) { if (ownerLog.getSendStatus() == 2 && null != ownerLog.getSendTime() && ownerLog.getSendTime().getTime() < System.currentTimeMillis()+1000*60*60) {
logger.info("已统计过"); logger.info("已统计过");
return; return;
} }
logger.info("开始群群发统计{}", ownerLog.getMsgid()); logger.info("开始群群发统计{}", ownerLog.getMsgid());
if(StringUtils.isBlank(ownerLog.getMsgid())) {
logger.info("msgid为空");
return ;
}
Long planId = ownerLog.getPlanId(); Long planId = ownerLog.getPlanId();
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId); TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId);
if (null == plan) { if (null == plan) {
...@@ -509,9 +568,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -509,9 +568,11 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
int failCount = 0; int failCount = 0;
List<TabGroupChatPlanLog> addList = new ArrayList<>(); List<TabGroupChatPlanLog> addList = new ArrayList<>();
boolean endFlag = false; boolean endFlag = false;
List<Long> doneGroupChatIdList = new ArrayList<>() ;
Date sendTime = null ;
for (QywxSendMessageResultDTO item : list) { for (QywxSendMessageResultDTO item : list) {
TabGroupChatPlanLog entity = new TabGroupChatPlanLog(); TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
Date sendTime = item.getSendTime(); sendTime = item.getSendTime();
String wxChatId = item.getChatId(); String wxChatId = item.getChatId();
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据 // 如果企微的发送时间晚于计划的结束时间,不记录此类数据
if (sendTime.after(plan.getEndTime())) { if (sendTime.after(plan.getEndTime())) {
...@@ -529,6 +590,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -529,6 +590,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
continue; continue;
} }
entity.setGroupChatId(chat.getGroupChatId()); entity.setGroupChatId(chat.getGroupChatId());
doneGroupChatIdList.add(chat.getGroupChatId()) ;
// 企微返回成功 // 企微返回成功
// 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败 // 0-未发送 1-已发送 2-因客户不是好友导致发送失败 3-因客户已经收到其他群发消息导致发送失败
if (item.getStatus() == 1) { if (item.getStatus() == 1) {
...@@ -549,9 +611,40 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -549,9 +611,40 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
entity.setSendTime(sendTime); entity.setSendTime(sendTime);
addList.add(entity); addList.add(entity);
} }
// 查询群主的所有群
GroupChatSearchQDTO chatQDTO = new GroupChatSearchQDTO() ;
chatQDTO.setWxEnterpriseId(wxEnterpriseId);
chatQDTO.setEnterpriseId(enterpriseId);
chatQDTO.setStaffId(staffId);
chatQDTO.setStatus(0);
chatQDTO.setGicFlag(1);
chatQDTO.setGiveUpStartTime(sendTime);
List<GroupChatDTO> groupChatDTOList = this.groupChatMapper.list(chatQDTO);
if(CollectionUtils.isNotEmpty(groupChatDTOList)) {
for(GroupChatDTO chatDTO : groupChatDTOList) {
Long groupChatId = chatDTO.getGroupChatId();
if(!doneGroupChatIdList.contains(groupChatId)) {
logger.info("放弃执行的群={}",groupChatId);
TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
entity.setSendStatus(PlanSendStatusEnum.GIVE_UP.getCode());
entity.setGroupChatId(groupChatId);
entity.setLogId(UniqueIdUtils.uniqueLong());
entity.setPlanId(ownerLog.getPlanId());
entity.setOwnLogId(ownerLog.getOwnerLogId());
entity.setWxEnterpriseId(wxEnterpriseId);
entity.setEnterpriseId(enterpriseId);
entity.setStaffId(staffId);
entity.setSendTime(new Date());
failCount = failCount+1 ;
addList.add(entity) ;
}
}
}
if (CollectionUtils.isNotEmpty(addList)) { if (CollectionUtils.isNotEmpty(addList)) {
this.groupChatPlanLogMapper.batchInsert(addList); this.groupChatPlanLogMapper.batchInsert(addList);
} }
// 更新统计数量、状态 // 更新统计数量、状态
if (!endFlag) { if (!endFlag) {
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount, this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
...@@ -578,6 +671,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -578,6 +671,15 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
modifyStartTimeFlag = 1; modifyStartTimeFlag = 1;
} }
this.groupChatPlanMapper.stopById(planId, clerkId, clerkName, modifyStartTimeFlag); this.groupChatPlanMapper.stopById(planId, clerkId, clerkName, modifyStartTimeFlag);
// 停止企微发送
if(plan.getExecType()==0) {
CommonMQDTO dto = new CommonMQDTO();
dto.setType(4);
Map<String,String> map = new HashMap<>() ;
map.put("planId", planId+"") ;
dto.setParams(map);
this.haobanCommonMQApiService.putCommonMessage(dto);
}
this.putMQForData(planId); this.putMQForData(planId);
} }
...@@ -635,6 +737,24 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -635,6 +737,24 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
return retPage; return retPage;
} }
@Override
public void staffSendResult(StaffSendResultQDTO qdto ) {
String wxEnterpriseId = qdto.getWxEnterpriseId() ;
String staffId = qdto.getStaffId() ;
Long planId = qdto.getPlanId() ;
String failRemark = qdto.getFailRemark() ;
Date sendTime = qdto.getSendTime() ;
if(StringUtils.isNotBlank(failRemark)) {
this.groupChatPlanOwnerLogMapper.staffSendResult(staffId,planId,sendTime,failRemark,3) ;
logger.info("好办小程序发送失败={}",failRemark);
return;
}else {
this.groupChatPlanOwnerLogMapper.staffSendResult(staffId,planId,sendTime,failRemark,2) ;
}
GroupChatPlanOwnerLogDTO dto = this.groupChatPlanOwnerLogService.getOwnerInfo(planId,staffId,null,wxEnterpriseId) ;
this.updateMsgid(dto);
}
public void addOrDelTimer(Long planId, Date sendTime, int status) { public void addOrDelTimer(Long planId, Date sendTime, int status) {
logger.info("添加1/删除0定时,{},{}", status, planId); logger.info("添加1/删除0定时,{},{}", status, planId);
QuartzTaskDTO quartzTask = new QuartzTaskDTO(); QuartzTaskDTO quartzTask = new QuartzTaskDTO();
...@@ -670,4 +790,169 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -670,4 +790,169 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
this.groupChatPlanMapper.updateRemark(dto); this.groupChatPlanMapper.updateRemark(dto);
} }
@Override
public void cancelSendTimer(String params) {
logger.info("过期取消发送={}",params);
List<GroupChatPlanOwnerLogDTO> list = this.groupChatPlanOwnerLogMapper.listForCancelSend();
if(CollectionUtils.isNotEmpty(list)) {
for(GroupChatPlanOwnerLogDTO dto : list) {
this.cancelSend(dto);
}
}
}
@Override
public void stopByMsgid(Long planId) {
logger.info("终止群群发送={}",planId);
List<Long> list = this.groupChatPlanOwnerLogMapper.listForTimer(planId);
if(CollectionUtils.isNotEmpty(list)) {
for(Long ownerLogId : list) {
TabGroupChatPlanOwnerLog tab = this.groupChatPlanOwnerLogService.getById(ownerLogId) ;
if(null != tab) {
GroupChatPlanOwnerLogDTO dto = EntityUtil.changeEntityByJSON(GroupChatPlanOwnerLogDTO.class, tab);
this.cancelSend(dto);
}
}
}
}
private void cancelSend(GroupChatPlanOwnerLogDTO dto) {
try {
String wxEnterpriseId = dto.getWxEnterpriseId();
String msgid = dto.getMsgid();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
if(null == qwDTO) {
return;
}
String secret = config.getWxSuiteid();
if (qwDTO.isSelf()) {
secret = qwDTO.getSelfSecret();
}
ServiceResponse<Void> resp = this.qywxSuiteApiService.cancelGroupmsgSend(qwDTO.getThirdCorpid(), secret, msgid, qwDTO.isSelf(), qwDTO.getUrlHost());
if (resp.isSuccess()) {
this.groupChatPlanOwnerLogMapper.giveUp(dto.getOwnerLogId());
}
}catch (Exception e) {
logger.info("异常",e);
}
}
@Override
public void groupChatMsgidTimer(String params) {
logger.info("社群群发获取msgid");
List<GroupChatPlanOwnerLogDTO> list = this.groupChatPlanOwnerLogMapper.listForMsgid();
if(CollectionUtils.isNotEmpty(list)) {
for(GroupChatPlanOwnerLogDTO dto : list) {
this.updateMsgid(dto);
}
}
}
private void updateMsgid(GroupChatPlanOwnerLogDTO dto) {
try{
if(null == dto) {
return;
}
Long ownerLogId = dto.getOwnerLogId() ;
String staffId = dto.getStaffId() ;
Date sendTime = dto.getSendTime() ;
String msgid = this.getQwMsgId(staffId,sendTime,GroupMessageServiceImpl.GroupMsgChatType.group) ;
if(null != msgid) {
logger.info("获取msgid={},{}",ownerLogId,msgid);
this.groupChatPlanOwnerLogMapper.updateMsgid(ownerLogId,msgid);
CommonMQDTO mq = new CommonMQDTO() ;
mq.setType(5) ;
Map<String,String> map = new HashMap<>() ;
map.put("ownerLogId",ownerLogId+"") ;
mq.setParams(map);
this.haobanCommonMQApiService.putCommonDelayMessage(mq, 60);
}
}catch (Exception e) {
logger.info("异常",e);
}
}
@Override
public String getQwMsgId(String staffId , Date sendTime, GroupMessageServiceImpl.GroupMsgChatType groupMsgChatType) {
Date startTime = DateUtil.addNumForSecond(sendTime,-10) ;
Date endTime = DateUtil.addNumForMinute(sendTime,1) ;
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId) ;
String wxEnterpriseId = staff.getWxEnterpriseId() ;
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
String wxUserId = staff.getWxUserId() ;
if(qwDTO.needOpenUserId3th()) {
wxUserId = staff.getWxOpenUseId() ;
}
// 发送到群
List<QywxGroupMessageInfoDTO> msgList = this.queryGroupMsg(groupMsgChatType,startTime, endTime, qwDTO, wxUserId);
if(CollectionUtils.isNotEmpty(msgList)) {
if(msgList.size()==0) {
return msgList.get(0).getMsgId() ;
}else {
return msgList.get(msgList.size()-1).getMsgId() ;
}
}
return null ;
}
private List<QywxGroupMessageInfoDTO> queryGroupMsg(GroupMessageServiceImpl.GroupMsgChatType groupMsgChatType, Date startTime, Date endTime , WxEnterpriseQwDTO qwDTO , String qwUserId) {
QywxGroupMessageQDTO qdto = new QywxGroupMessageQDTO();
qdto.setCorpid(qwDTO.getThirdCorpid());
qdto.setCreator(qwUserId);
qdto.setStartTime(startTime.getTime() / 1000);
qdto.setEndTime(endTime.getTime() / 1000);
qdto.setSuiteid(qwDTO.getSelf3thSecret());
qdto.setChatType(groupMsgChatType.getCode());
qdto.setPageSize(100);
ServiceResponse<QywxGroupMsgResp> resp = this.qywxSuiteApiService.queryQywxGroupMessageList(qdto,qwDTO.isSelf(),qwDTO.getUrlHost());
logger.info("查询msgid,企微返回={},{}",JSONObject.toJSONString(qdto),JSONObject.toJSONString(resp));
if (!resp.isSuccess() || CollectionUtils.isEmpty(resp.getResult().getGroupMessageInfos())) {
return Collections.emptyList();
}
return resp.getResult().getGroupMessageInfos();
}
@Override
public void noticeTimer(String params) {
// 生成数据
//获取所有的企业
List<String> enterpriseIdList = this.wxEnterpriseRelatedMapper.findAllEnterpriseId();
if (CollectionUtils.isEmpty(enterpriseIdList)) {
logger.info("任务自动刷新定时器触发, 企业id列表为空");
return;
}
for (String enterpriseId : enterpriseIdList) {
this.massTaskData(enterpriseId);
}
}
private void massTaskData(String enterpriseId) {
logger.info("生成社群数据={}",enterpriseId);
Date date = DateUtil.getEndTimeOfDay() ;
List<String> clerkIdList = this.staffClerkRelationService.listAllClerkIdsByEnterpriseId(enterpriseId) ;
if(CollectionUtils.isNotEmpty(clerkIdList)) {
for(String clerkId : clerkIdList) {
int total = this.groupChatPlanOwnerLogMapper.getTotalTask(enterpriseId,clerkId,date) ;
if(total >= 0) {
int invalid = this.groupChatPlanOwnerLogMapper.getInvalidTask(enterpriseId,clerkId,date) ;
int overdue = this.groupChatPlanOwnerLogMapper.getOverdueTask(enterpriseId,clerkId,date) ;
this.qywxGroupSendCanvasApiService.saveNoticeLog(enterpriseId,clerkId,total,overdue,invalid,"chat") ;
}
}
}
}
@Override
public Integer getTaskNum(String wxEnterpriseId, String enterpriseId, String storeId, String clerkId, String staffId) {
ClerkDTO clerkDTO = this.clerkService.getclerkById(clerkId) ;
if(null == clerkDTO) {
return 0 ;
}
if(clerkDTO.getClerkType()==1) {
clerkId = null ;
}
int total = this.groupChatPlanOwnerLogMapper.getTaskNum(enterpriseId,clerkId,storeId,staffId) ;
return total;
}
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.gic.haoban.manage.service.service.hm.HmClerkRelationService; ...@@ -19,6 +19,7 @@ import com.gic.haoban.manage.service.service.hm.HmClerkRelationService;
import com.gic.haoban.manage.service.service.hm.HmLinkService; import com.gic.haoban.manage.service.service.hm.HmLinkService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeService; import com.gic.haoban.manage.service.service.hm.HmQrcodeService;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService; import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.task.api.service.TelTaskApiService;
import com.gic.member.api.dto.es.MemberDataDTO; import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.member.tag.api.dto.MemberTagDTO; import com.gic.member.tag.api.dto.MemberTagDTO;
import com.gic.member.tag.api.dto.MemberTagItemDTO; import com.gic.member.tag.api.dto.MemberTagItemDTO;
...@@ -49,6 +50,8 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService { ...@@ -49,6 +50,8 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService {
private MemberTagApiService memberTagApiService; private MemberTagApiService memberTagApiService;
@Autowired @Autowired
private HmClerkRelationService hmClerkRelationService; private HmClerkRelationService hmClerkRelationService;
@Autowired
private TelTaskApiService telTaskApiService;
@Override @Override
public void save(WxUserAddLogQDTO qdto) { public void save(WxUserAddLogQDTO qdto) {
...@@ -158,6 +161,13 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService { ...@@ -158,6 +161,13 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService {
entity.setFriendStoreId(qdto.getFriendStoreId()); entity.setFriendStoreId(qdto.getFriendStoreId());
entity.setDelType(qdto.getDelType()); entity.setDelType(qdto.getDelType());
entity.setDelIsSingle(qdto.getDelIsSingle()); entity.setDelIsSingle(qdto.getDelIsSingle());
if(null != qdto.getAddWay() && qdto.getAddWay().equals(202) && null != entity.getMemberId()) {
TabWxUserAddLog delUser = this.wxUserAddLogMapper.getForTask(externalUserid) ;
if(null != delUser && null != delUser.getStoreId() && delUser.getStoreId().equals(entity.getStoreId())) {
String overClerkId = delUser.getClerkId() ;
this.telTaskApiService.distributeTask(qdto.getEnterpriseId(), overClerkId , Arrays.asList(entity.getMemberId()), entity.getClerkId());
}
}
this.wxUserAddLogMapper.insert(entity); this.wxUserAddLogMapper.insert(entity);
}catch(Exception e) { }catch(Exception e) {
log.info("异常",e); log.info("异常",e);
......
...@@ -592,4 +592,9 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -592,4 +592,9 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
public String getMemberIdByExternalId(String wxEnterpriseId, String externalUserId) { public String getMemberIdByExternalId(String wxEnterpriseId, String externalUserId) {
return this.mapper.getMemberIdByExternalId(wxEnterpriseId,externalUserId); return this.mapper.getMemberIdByExternalId(wxEnterpriseId,externalUserId);
} }
@Override
public int getFriendNum(String memberId, String storeId, String clerkId) {
return this.mapper.getFriendNum(memberId,storeId,clerkId);
}
} }
...@@ -8,10 +8,16 @@ import java.util.stream.Collectors; ...@@ -8,10 +8,16 @@ import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.HttpClient; import com.gic.commons.util.HttpClient;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.service.util.ApolloUtils; import com.gic.haoban.manage.service.util.ApolloUtils;
import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO; import com.gic.haoban.manage.api.qdto.combined.CombinedQDTO;
import com.gic.haoban.manage.service.context.combined.ImageCombined; import com.gic.haoban.manage.service.context.combined.ImageCombined;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
import com.gic.thirdparty.cloudfile.CloudFileUtil;
import com.gic.thirdparty.cloudfile.enums.CloudFileBusinessOptEnum;
import com.gic.thirdparty.cloudfile.enums.CloudFileTypeEnum;
import com.gic.thirdparty.cloudfile.pojo.CloudFileInfo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -48,6 +54,8 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -48,6 +54,8 @@ public class MaterialServiceImpl implements MaterialService {
@Autowired @Autowired
private WxEnterpriseService wxEnterpriseService ; private WxEnterpriseService wxEnterpriseService ;
@Autowired @Autowired
private EnterpriseService enterpriseService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService ; private QywxSuiteApiService qywxSuiteApiService ;
@Autowired @Autowired
private Config config; private Config config;
...@@ -141,7 +149,7 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -141,7 +149,7 @@ public class MaterialServiceImpl implements MaterialService {
Integer materialType = materialDTO.getMaterialType(); Integer materialType = materialDTO.getMaterialType();
String madiaId = materialDTO.getMediaId(); String madiaId = materialDTO.getMediaId();
//需要上传的类型 //需要上传的类型
List<Integer> typeList = Arrays.asList(2, 4, 5, 6); List<Integer> typeList = Arrays.asList(2, 4, 5, 6 , 7);
if (typeList.contains(materialType)) { if (typeList.contains(materialType)) {
madiaId = this.reUpdalodMetail(materialId,from); madiaId = this.reUpdalodMetail(materialId,from);
} }
...@@ -201,7 +209,7 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -201,7 +209,7 @@ public class MaterialServiceImpl implements MaterialService {
if (type == 5) { if (type == 5) {
fileType = QywxMediaTypeEnum.FILE; fileType = QywxMediaTypeEnum.FILE;
url = old.getLink(); url = old.getLink();
} else if (type == 6) { } else if (type == 6 || type ==7) {
fileType = QywxMediaTypeEnum.IMAGE; fileType = QywxMediaTypeEnum.IMAGE;
url = old.getImgUrl(); url = old.getImgUrl();
} }
...@@ -299,7 +307,12 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -299,7 +307,12 @@ public class MaterialServiceImpl implements MaterialService {
imageList.forEach(dto -> { imageList.forEach(dto -> {
String imageUrl = dto.getImgUrl(); String imageUrl = dto.getImgUrl();
int type = dto.getMaterialType(); int type = dto.getMaterialType();
String md5 = Md5Util.MD5(imageUrl); String md5 = null ;
if(type==7) {
md5 = Md5Util.MD5(imageUrl + type + dto.getCanvasCouponUUID()+dto.getMaterialTitle());
}else {
md5 = Md5Util.MD5(imageUrl+type);
}
TabMaterialContent tab = this.materialContentMapper.selectByUrl(wxEnterpriseId, md5, mediaType); TabMaterialContent tab = this.materialContentMapper.selectByUrl(wxEnterpriseId, md5, mediaType);
if (null != tab) { if (null != tab) {
Integer materialType = tab.getMaterialType(); Integer materialType = tab.getMaterialType();
...@@ -318,6 +331,12 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -318,6 +331,12 @@ public class MaterialServiceImpl implements MaterialService {
tab.setMediaType(mediaType); tab.setMediaType(mediaType);
tab.setWxEnterpriseId(wxEnterpriseId); tab.setWxEnterpriseId(wxEnterpriseId);
tab.setVideoImgUrl(dto.getVideoImgUrl()); tab.setVideoImgUrl(dto.getVideoImgUrl());
tab.setAppid(dto.getAppid());
tab.setMaterialTitle(dto.getMaterialTitle());
tab.setLink(dto.getLink());
if(type==7) {
tab.setLink(dto.getCanvasCouponUUID());
}
this.materialContentMapper.insert(tab); this.materialContentMapper.insert(tab);
materialIdList.add(id); materialIdList.add(id);
} }
...@@ -372,11 +391,26 @@ public class MaterialServiceImpl implements MaterialService { ...@@ -372,11 +391,26 @@ public class MaterialServiceImpl implements MaterialService {
arr = imageUrl.split("/"); arr = imageUrl.split("/");
} }
JSONResponse json = null; JSONResponse json = null;
Integer mediaType = combinedQDTO.getMediaType(); Integer mediaType = combinedQDTO.getMediaType();
if (Objects.equals(1,mediaType)) { if (Objects.equals(1,mediaType)) {
json = qywxSuiteApiService.uploadMedia(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost()); json = qywxSuiteApiService.uploadMedia(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost());
}else if (Objects.equals(2,mediaType)) { }else if (Objects.equals(2,mediaType)) {
json = qywxSuiteApiService.uploadAttachment(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost()); json = qywxSuiteApiService.uploadAttachment(qwDTO.getThirdCorpid(), qwDTO.getSelf3thSecret(), combinedImageData, arr[arr.length - 1], QywxMediaTypeEnum.IMAGE.getCode(), qwDTO.isSelf(), qwDTO.getUrlHost());
} else if (Objects.equals(3, mediaType)) {
EnterpriseDTO enterprise = enterpriseService.getEnterpriseById(combinedQDTO.getEnterpriseId());
if (enterprise == null) {
return jsonResponse;
}
CloudFileInfo uploadInfo = CloudFileUtil.uploadFile(combinedImageData, "jpg", CloudFileTypeEnum.IMAGE, enterprise.getFactoryCode(), CloudFileBusinessOptEnum.COMMON) ;
String orgFileUrl = uploadInfo.getOrgFileUrl();
if (StringUtils.isBlank(orgFileUrl)) {
return jsonResponse;
}
json = new JSONResponse();
json.setErrorCode(0);
json.setSuccess(true);
json.setResult(orgFileUrl);
} }
return json; return json;
} catch (Exception e) { } catch (Exception e) {
......
package com.gic.haoban.manage.service.service.impl; package com.gic.haoban.manage.service.service.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.gic.enterprise.api.dto.EnterpriseWxaRelationDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.enterprise.api.service.EnterpriseWxaLinkService;
import com.gic.haoban.manage.api.qdto.CanvasInfoQDTO;
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;
...@@ -67,6 +71,10 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -67,6 +71,10 @@ public class QywxSendServiceImpl implements QywxSendService {
private QywxExternalUserService qywxExternalUserService; private QywxExternalUserService qywxExternalUserService;
@Autowired @Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper; private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper;
@Autowired
private EnterpriseWxaLinkService enterpriseWxaLinkService ;
@Autowired
private EnterpriseService enterpriseService ;
private static final String single = "single" ; private static final String single = "single" ;
private static final String group = "group" ; private static final String group = "group" ;
...@@ -74,26 +82,33 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -74,26 +82,33 @@ public class QywxSendServiceImpl implements QywxSendService {
@Override @Override
public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<String> materialIdList,String planId) { List<String> materialIdList,String planId) {
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, null, 1 , single , planId , 1); return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, null, 1 , single , planId , 1,null);
}
@Override
public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<ContentMaterialDTO> imageList, String message , String planId , CanvasInfoQDTO canvas) {
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, message, 2 , single , planId , 1,canvas);
} }
@Override @Override
public ServiceResponse<String> sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList, public ServiceResponse<String> sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<ContentMaterialDTO> imageList, String message) { List<ContentMaterialDTO> imageList, String message) {
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1); List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, message, 2,null,null,null); return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, message, 2,null,null,null,null);
} }
// 群发发送 // 群发发送
private ServiceResponse<String> send(String wxEnterpriseId, String staffId, List<String> extendUserList, private ServiceResponse<String> send(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<String> materialIdList, String message, int from , String chatType ,String planId , Integer planType) { List<String> materialIdList, String message, int from , String chatType ,String planId , Integer planType,CanvasInfoQDTO canvas) {
TabHaobanStaff tabHaobanStaff = staffService.selectById(staffId); TabHaobanStaff tabHaobanStaff = staffService.selectById(staffId);
if (null == tabHaobanStaff) { if (null == tabHaobanStaff) {
log.info("staff不存在,staffId={}", staffId); log.info("staff不存在,staffId={}", staffId);
return ServiceResponse.failure("9999", "群发失败,成员不存在"); return ServiceResponse.failure("9999", "群发失败,成员不存在");
} }
// 群发请求参数 // 群发请求参数
QywxExternalMessageDTO messageDTO = this.getMessage(from, message, materialIdList,chatType,planId,planType); QywxExternalMessageDTO messageDTO = this.getMessage(from, message, materialIdList,chatType,planId,planType,canvas);
log.info("群发信息={}",JSON.toJSONString(messageDTO)); log.info("群发信息={}",JSON.toJSONString(messageDTO));
if (messageDTO.getAttachments().isEmpty() && StringUtils.isBlank(messageDTO.getContent())) { if (messageDTO.getAttachments().isEmpty() && StringUtils.isBlank(messageDTO.getContent())) {
log.info("群发素材不存在, 群发创建失败"); log.info("群发素材不存在, 群发创建失败");
...@@ -132,7 +147,7 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -132,7 +147,7 @@ public class QywxSendServiceImpl implements QywxSendService {
List<ContentMaterialDTO> imageList) { List<ContentMaterialDTO> imageList) {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId); WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 2); List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 2);
QywxExternalMessageDTO dto = this.getMessage(2, message, materialIdList,null,null,null); QywxExternalMessageDTO dto = this.getMessage(2, message, materialIdList,null,null,null,null);
MomentTaskDTO moment = EntityUtil.changeEntity(MomentTaskDTO.class, dto); MomentTaskDTO moment = EntityUtil.changeEntity(MomentTaskDTO.class, dto);
Text text = new Text(); Text text = new Text();
text.setContent(dto.getContent()); text.setContent(dto.getContent());
...@@ -166,7 +181,7 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -166,7 +181,7 @@ public class QywxSendServiceImpl implements QywxSendService {
} }
// from 1好办素材 2内容中台 // from 1好办素材 2内容中台
private QywxExternalMessageDTO getMessage(int from, String message, List<String> materialIdList , String chatType , String planId , Integer planType) { private QywxExternalMessageDTO getMessage(int from, String message, List<String> materialIdList , String chatType , String planId , Integer planType, CanvasInfoQDTO canvas) {
QywxExternalMessageDTO messageDTO = new QywxExternalMessageDTO(); QywxExternalMessageDTO messageDTO = new QywxExternalMessageDTO();
messageDTO.setChatType(chatType); messageDTO.setChatType(chatType);
List<QywxMessageMaterialDTO> attachList = new ArrayList<>(); List<QywxMessageMaterialDTO> attachList = new ArrayList<>();
...@@ -185,7 +200,7 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -185,7 +200,7 @@ public class QywxSendServiceImpl implements QywxSendService {
if (material.getMaterialType() == 1) { if (material.getMaterialType() == 1) {
messageDTO.setContent(material.getMaterialContent()); messageDTO.setContent(material.getMaterialContent());
} else { } else {
attachList.add(this.getMessageMaterial(material,planId,planType)); attachList.add(this.getMessageMaterial(material,planId,planType,canvas));
} }
}); });
} }
...@@ -196,7 +211,10 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -196,7 +211,10 @@ public class QywxSendServiceImpl implements QywxSendService {
/** /**
* 素材发送对象构造 * 素材发送对象构造
*/ */
private QywxMessageMaterialDTO getMessageMaterial(MaterialDTO material,String planId , Integer planType) { private QywxMessageMaterialDTO getMessageMaterial(MaterialDTO material, String planId , Integer planType , CanvasInfoQDTO canvas) {
if(null == canvas) {
canvas = new CanvasInfoQDTO() ;
}
// 素材类型 // 素材类型
Integer materialType = material.getMaterialType(); Integer materialType = material.getMaterialType();
// 企微对应的id // 企微对应的id
...@@ -221,22 +239,40 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -221,22 +239,40 @@ public class QywxSendServiceImpl implements QywxSendService {
videoMaterialDTO.setMediaId(maerialId); videoMaterialDTO.setMediaId(maerialId);
dto.setMsgType(QywxMediaTypeEnum.VIDEO.getName()); dto.setMsgType(QywxMediaTypeEnum.VIDEO.getName());
dto.setVideo(videoMaterialDTO); dto.setVideo(videoMaterialDTO);
} else if (materialType == 6) { } else if (materialType == 6 || materialType == 7) {
QywxMiniprogramMaterialDTO miniprogramMaterialDTO = new QywxMiniprogramMaterialDTO(); QywxMiniprogramMaterialDTO miniprogramMaterialDTO = new QywxMiniprogramMaterialDTO();
miniprogramMaterialDTO.setTitle(material.getMaterialTitle()); miniprogramMaterialDTO.setTitle(material.getMaterialTitle());
miniprogramMaterialDTO.setPicMediaId(maerialId); miniprogramMaterialDTO.setPicMediaId(maerialId);
miniprogramMaterialDTO.setAppid(material.getAppId()); miniprogramMaterialDTO.setAppid(material.getAppId());
miniprogramMaterialDTO.setPage(material.getLink()); miniprogramMaterialDTO.setPage(material.getLink());
// 卡券
String path = material.getLink();
Long canvasId = canvas.getCanvasId();
Long nodeId = canvas.getNodeId();
Long execLogId = canvas.getExecLogId() ;
Long clerkTaskTime = canvas.getTaskTime();
String clerkId = canvas.getClerkId() ;
if(materialType==7) {
String unid = material.getLink();
String str = "{\"id\":48,\"url\":\"/pages/member-center/coupon/coupon-group-get/coupon-group-get?canvasCouponUUID="+unid+"&execLogId="+execLogId+"&canvasId="+canvasId+"&time="+clerkTaskTime+"&nodeId="+nodeId+"\"}" ;
EnterpriseWxaRelationDTO en = this.enterpriseService.getByWxappkey(material.getAppId()) ;
//Map<String, Object> map = this.enterpriseWxaLinkService.getWxaLinkAndQrCodeWithChannelAndSceneOfNotUrl(en.getEnterpriseId(),str,canvasId+"","canvas",nodeId+"_"+execLogId+"_"+clerkTaskTime+"_"+clerkId) ;
path = this.enterpriseWxaLinkService.getLinkForCanvas(en.getEnterpriseId(),str,canvasId,nodeId,execLogId,new Date(clerkTaskTime),clerkId) ;
}
if(StringUtils.isNotBlank(material.getLink()) && material.getLink().startsWith("{")) {
EnterpriseWxaRelationDTO en = this.enterpriseService.getByWxappkey(material.getAppId()) ;
path = this.enterpriseWxaLinkService.getLinkForCanvas(en.getEnterpriseId(),material.getLink(),canvasId,nodeId,execLogId,new Date(clerkTaskTime),clerkId) ;
}
if(null != planType && StringUtils.isNotBlank(planId)) { if(null != planType && StringUtils.isNotBlank(planId)) {
String url = "qtActivityType="+planType+"&qtActivityId="+planId ; String url = "qtActivityType="+planType+"&qtActivityId="+planId ;
if(material.getLink().contains("?")) { if(path.contains("?")) {
url = "&" + url ; url = "&" + url ;
}else { }else {
url = "?" +url ; url = "?" +url ;
} }
miniprogramMaterialDTO.setPage(material.getLink()+url); miniprogramMaterialDTO.setPage(path+url);
} }
log.info("群发链接={}",material.getLink(),miniprogramMaterialDTO.getPage()); log.info("群发链接={},{}",material.getLink(),miniprogramMaterialDTO.getPage());
dto.setMsgType(QywxMediaTypeEnum.MINIPROGRAM.getName()); dto.setMsgType(QywxMediaTypeEnum.MINIPROGRAM.getName());
dto.setMiniprogram(miniprogramMaterialDTO); dto.setMiniprogram(miniprogramMaterialDTO);
} }
...@@ -245,12 +281,12 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -245,12 +281,12 @@ public class QywxSendServiceImpl implements QywxSendService {
@Override @Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList,int planType ,String planId) { public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList,int planType ,String planId) {
return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group,planId,planType); return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group,planId,planType,null);
} }
@Override @Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message) { public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message) {
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1); List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, null, materialIdList, message, 2 , group,null,null); return this.send(wxEnterpriseId, staffId, null, materialIdList, message, 2 , group,null,null,null);
} }
} }
...@@ -11,7 +11,9 @@ import java.util.Set; ...@@ -11,7 +11,9 @@ import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
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.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
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;
...@@ -89,6 +91,10 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService ...@@ -89,6 +91,10 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
private MemberApiService memberApiService; private MemberApiService memberApiService;
@Autowired @Autowired
private ClerkService clerkService; private ClerkService clerkService;
@Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper;
@Autowired
private StoreWidgetService storeWidgetService;
@Override @Override
public List<StaffClerkRelationDTO> listBindCode(String wxEnterpriseId, String enterpriseId, Set<String> clerkCodeList) { public List<StaffClerkRelationDTO> listBindCode(String wxEnterpriseId, String enterpriseId, Set<String> clerkCodeList) {
...@@ -634,6 +640,11 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService ...@@ -634,6 +640,11 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
} }
@Override @Override
public List<String> listAlStoreIdsByEnterpriseId(String enterpriseId) {
return this.mapper.listAlStoreIdsByEnterpriseId(enterpriseId);
}
@Override
public List<StaffClerkRelationDTO>listByWxEnterpriseIdAndStaffId(String wxEnterpriseId, Set<String> staffIdList) { public List<StaffClerkRelationDTO>listByWxEnterpriseIdAndStaffId(String wxEnterpriseId, Set<String> staffIdList) {
return this.mapper.listByWxEnterpriseIdAndStaffId(wxEnterpriseId,staffIdList); return this.mapper.listByWxEnterpriseIdAndStaffId(wxEnterpriseId,staffIdList);
} }
...@@ -647,4 +658,18 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService ...@@ -647,4 +658,18 @@ public class StaffClerkRelationServiceImpl implements StaffClerkRelationService
public List<String> listAllStaffIdForOpenStaff(String enterpriseId, String wxEnterpriseId, String clerkId, List<String> storeIdList) { public List<String> listAllStaffIdForOpenStaff(String enterpriseId, String wxEnterpriseId, String clerkId, List<String> storeIdList) {
return this.mapper.listAllStaffIdForOpenStaff(enterpriseId,wxEnterpriseId,clerkId,storeIdList); return this.mapper.listAllStaffIdForOpenStaff(enterpriseId,wxEnterpriseId,clerkId,storeIdList);
} }
@Override
public ServiceResponse<Map<String, List<String>>> listClerkForCanvas(String wxEnterpriseId, String enterpriseId, String creatorId, String storeFilterId) {
Map<String,List<String>> map = new HashMap<>() ;
List<String> storeIdList = storeWidgetService.getStoreWidgetStore(storeFilterId, enterpriseId, creatorId, null, 2);
if (CollectionUtils.isEmpty(storeIdList)) {
logger.info("无门店");
return ServiceResponse.success();
}
logger.info("门店筛选器查询结果数量:{}", storeIdList.size());
List<StaffClerkRelationDTO> list = tabHaobanStaffClerkRelationMapper.listByStoreIds(wxEnterpriseId,storeIdList);
map = list.stream().collect(Collectors.groupingBy(StaffClerkRelationDTO::getStoreId,Collectors.mapping(StaffClerkRelationDTO::getClerkId,Collectors.toList()))) ;
return ServiceResponse.success(map) ;
}
} }
...@@ -455,7 +455,20 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService { ...@@ -455,7 +455,20 @@ public class NoticeMessageApiServiceImpl implements NoticeMessageApiService {
if (retPage != null && CollectionUtils.isNotEmpty(tPage.getResult())) { if (retPage != null && CollectionUtils.isNotEmpty(tPage.getResult())) {
tPage.getResult().forEach(mid -> { tPage.getResult().forEach(mid -> {
NoticeMessageTypeEnum messageTypeEnum = NoticeMessageTypeEnum.getByType(mid.getMessageType()); NoticeMessageTypeEnum messageTypeEnum = NoticeMessageTypeEnum.getByType(mid.getMessageType());
mid.setPageType(messageTypeEnum.getPageType()); if(messageTypeEnum.getMessageCode().equals("haobanTaskTodoNotice")) {
String relationId = mid.getRelationId() ;
if("chat".equals(relationId)) {
mid.setPageType("hbapp_canvas_group_send_list");
}else if("mass".equals(relationId)) {
mid.setPageType("hbapp_canvas_custom_send_list");
}else if("tel".equals(relationId)) {
mid.setPageType("hbapp_canvas_task_list");
}else {
mid.setPageType("workbench");
}
}else {
mid.setPageType(messageTypeEnum.getPageType());
}
}); });
} }
return ServiceResponse.success(tPage); return ServiceResponse.success(tPage);
......
...@@ -39,6 +39,7 @@ import com.gic.haoban.manage.service.service.StaffClerkRelationService; ...@@ -39,6 +39,7 @@ import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.WxEnterpriseService; import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.hm.WxUserAddLogService; import com.gic.haoban.manage.service.service.hm.WxUserAddLogService;
import com.gic.haoban.manage.service.util.EventUtils; import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.haoban.task.manage.api.service.IMarketTaskMemberApiService;
import com.gic.member.api.dto.MemberDTO; import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.MemberSourceDetailDTO; import com.gic.member.api.dto.MemberSourceDetailDTO;
import com.gic.member.api.dto.MemberSourceShowDTO; import com.gic.member.api.dto.MemberSourceShowDTO;
...@@ -106,6 +107,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -106,6 +107,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
private ExternalClerkRelatedService externalClerkRelatedService; private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired @Autowired
private StaffClerkRelationService staffClerkRelationService ; private StaffClerkRelationService staffClerkRelationService ;
@Autowired
private IMarketTaskMemberApiService iMarketTaskMemberApiService ;
/** /**
* 查询会员在企业下的好友关系 * 查询会员在企业下的好友关系
...@@ -423,6 +426,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -423,6 +426,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
if(type==0) { if(type==0) {
log.info("删除会员,memberId:{}", memberId); log.info("删除会员,memberId:{}", memberId);
this.tabHaobanExternalClerkRelatedMapper.updateStatusByMemberId(memberId, enterpriseId); this.tabHaobanExternalClerkRelatedMapper.updateStatusByMemberId(memberId, enterpriseId);
this.iMarketTaskMemberApiService.memberEvent(0,enterpriseId,memberId,null);
}else if(type==1) { }else if(type==1) {
//合并会员,会员会先调删除,在调合并。顺序不能调换 //合并会员,会员会先调删除,在调合并。顺序不能调换
log.info("合并会员,memberId:{},新memberId={}", memberId , mergeMemberId); log.info("合并会员,memberId:{},新memberId={}", memberId , mergeMemberId);
...@@ -432,6 +436,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -432,6 +436,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
log.info("会员合并 ,更新为企微好友,新memberId:{}", mergeMemberId); log.info("会员合并 ,更新为企微好友,新memberId:{}", mergeMemberId);
this.memberApiService.updateMemberQywxFlag(enterpriseId, mergeMemberId, 1); this.memberApiService.updateMemberQywxFlag(enterpriseId, mergeMemberId, 1);
this.staffClerkRelationService.addMemberQywxFlag(enterpriseId,memberId); this.staffClerkRelationService.addMemberQywxFlag(enterpriseId,memberId);
this.iMarketTaskMemberApiService.memberEvent(1,enterpriseId,memberId,mergeMemberId);
} }
}else if(type==2) { }else if(type==2) {
int m1 = this.tabHaobanExternalClerkRelatedMapper.countByMemberId(memberId, enterpriseId) ; int m1 = this.tabHaobanExternalClerkRelatedMapper.countByMemberId(memberId, enterpriseId) ;
...@@ -915,4 +920,9 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -915,4 +920,9 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
} }
return com.gic.api.base.commons.ServiceResponse.success(null) ; return com.gic.api.base.commons.ServiceResponse.success(null) ;
} }
@Override
public int getFriendNum(String memberId, String storeId, String clerkId) {
return this.externalClerkRelatedService.getFriendNum(memberId,storeId,clerkId);
}
} }
...@@ -11,6 +11,7 @@ import com.gic.haoban.manage.service.service.StaffClerkRelationService; ...@@ -11,6 +11,7 @@ import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.commons.util.StringUtil; 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.role.HaobanMenuService; import com.gic.haoban.manage.service.service.role.HaobanMenuService;
import com.gic.haoban.manage.service.util.EventUtils; import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.member.api.dto.MemberInfoChangeNotifyDTO; import com.gic.member.api.dto.MemberInfoChangeNotifyDTO;
...@@ -56,6 +57,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -56,6 +57,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
private HaobanMenuService haobanMenuService ; private HaobanMenuService haobanMenuService ;
@Autowired @Autowired
private TabHaobanExternalClerkRelatedMapper externalClerkRelatedMapper ; private TabHaobanExternalClerkRelatedMapper externalClerkRelatedMapper ;
@Autowired
private GroupChatPlanService groupChatPlanService ;
@Override @Override
public void putCommonMessage(CommonMQDTO dto) { public void putCommonMessage(CommonMQDTO dto) {
...@@ -135,6 +138,14 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -135,6 +138,14 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
String clerkId = map.get("clerkId") ; String clerkId = map.get("clerkId") ;
this.memberOpenCardBusinessService.memberClerkByQywx(enterpriseId, memberId, clerkId); this.memberOpenCardBusinessService.memberClerkByQywx(enterpriseId, memberId, clerkId);
break ; break ;
case 4:
Long planId = Long.valueOf(map.get("planId")) ;
this.groupChatPlanService.stopByMsgid(planId);
break ;
case 5 :
Long ownerLogId = Long.valueOf(map.get("ownerLogId")) ;
this.groupChatPlanService.doPlanSendInfo(ownerLogId);
break;
default: default:
break; break;
} }
......
...@@ -8,9 +8,7 @@ import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper; ...@@ -8,9 +8,7 @@ import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated; import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog; import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityInviteLogService; import com.gic.haoban.manage.service.service.chat.*;
import com.gic.haoban.manage.service.service.chat.GroupChatActivityService;
import com.gic.haoban.manage.service.service.chat.GroupChatDataService;
import com.gic.haoban.manage.service.util.DingUtils; import com.gic.haoban.manage.service.util.DingUtils;
import com.gic.haoban.manage.service.util.HBQwMonitorUtils; import com.gic.haoban.manage.service.util.HBQwMonitorUtils;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
...@@ -24,7 +22,6 @@ import org.springframework.stereotype.Service; ...@@ -24,7 +22,6 @@ import org.springframework.stereotype.Service;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.HaobanTimerApiService; import com.gic.haoban.manage.api.service.HaobanTimerApiService;
import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService; import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService;
import java.util.*; import java.util.*;
...@@ -58,6 +55,8 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -58,6 +55,8 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private OpenStaffService openStaffService ; private OpenStaffService openStaffService ;
@Autowired @Autowired
private GroupChatActivityService groupChatActivityService; private GroupChatActivityService groupChatActivityService;
@Autowired
private GroupChatPlanService groupChatPlanService ;
@Override @Override
...@@ -195,4 +194,14 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -195,4 +194,14 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
public void groupChatActivityTime(String params) { public void groupChatActivityTime(String params) {
groupChatActivityService.activityQuartzUpdateStatus(); groupChatActivityService.activityQuartzUpdateStatus();
} }
@Override
public void groupChatMsgidTimer(String params) {
this.groupChatPlanService.groupChatMsgidTimer(params) ;
}
@Override
public void cancelSendTimer(String params) {
this.groupChatPlanService.cancelSendTimer(params) ;
}
} }
...@@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit; ...@@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; 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.util.notify.NoticeMessageUtil; import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
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.*;
...@@ -1246,7 +1247,14 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -1246,7 +1247,14 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
com.gic.api.base.commons.ServiceResponse<String> resp = this.qywxSendService.sendMessageShare(wxEnterpriseId, staffId, extendUserList, imgList, message) ; com.gic.api.base.commons.ServiceResponse<String> resp = this.qywxSendService.sendMessageShare(wxEnterpriseId, staffId, extendUserList, imgList, message) ;
return this.retJson(resp) ; return this.retJson(resp) ;
} }
@Override
public JSONResponse sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList, String message, List<ContentMaterialDTO> imageList, String planId, CanvasInfoQDTO canvas) {
log.info("imageList={}",JSONObject.toJSON(imageList));
com.gic.api.base.commons.ServiceResponse<String> resp = this.qywxSendService.sendMessage(wxEnterpriseId, staffId, extendUserList, imageList, message,planId,canvas) ;
return this.retJson(resp) ;
}
@Override @Override
public JSONResponse share(String wxEnterpriseId, List<String> clerkIdList, String message, public JSONResponse share(String wxEnterpriseId, List<String> clerkIdList, String message,
List<ContentMaterialDTO> imgList) { List<ContentMaterialDTO> imgList) {
......
...@@ -916,6 +916,10 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -916,6 +916,10 @@ public class StaffApiServiceImpl implements StaffApiService {
boolean isMustReturnStoreIdWhenSuperAdmin, Boolean addUnassignedStore) { boolean isMustReturnStoreIdWhenSuperAdmin, Boolean addUnassignedStore) {
//兼容店长和店员登陆 //兼容店长和店员登陆
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId); ClerkDTO clerkDTO = clerkService.getClerkByClerkId(clerkId);
if (clerkDTO == null) {
logger.info("被删除或者冻结:{}", clerkId);
return Collections.singletonList("no_store");
}
if (clerkDTO != null) { if (clerkDTO != null) {
if (clerkDTO.getClerkType() == null || clerkDTO.getClerkType() == 0 || clerkDTO.getClerkType() == 1) { if (clerkDTO.getClerkType() == null || clerkDTO.getClerkType() == 0 || clerkDTO.getClerkType() == 1) {
StoreDTO storeDTO = storeService.getStore(clerkDTO.getStoreId()); StoreDTO storeDTO = storeService.getStore(clerkDTO.getStoreId());
...@@ -1539,4 +1543,27 @@ public class StaffApiServiceImpl implements StaffApiService { ...@@ -1539,4 +1543,27 @@ public class StaffApiServiceImpl implements StaffApiService {
List<StaffDTO> pageList = this.staffMapper.listByParams(wxEnterpriseIdList , params) ; List<StaffDTO> pageList = this.staffMapper.listByParams(wxEnterpriseIdList , params) ;
return PageUtil.changePageHelperToCurrentPage(new PageInfo<>(pageList), StaffDTO.class); return PageUtil.changePageHelperToCurrentPage(new PageInfo<>(pageList), StaffDTO.class);
} }
@Override
public void deleteStaff(String enterpriseId, String clerkId) {
StaffClerkRelationDTO staffDTO = this.staffClerkRelationService.getByClerkId(clerkId) ;
if(null == staffDTO) {
logger.info("没找到成员={}",clerkId);
return ;
}
logger.info("删除企微成员={},{}",clerkId,JSONObject.toJSONString(staffDTO));
String wxEnterpriseId = staffDTO.getWxEnterpriseId() ;
String staffId = staffDTO.getStaffId() ;
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId) ;
if(null == staff) {
logger.info("staff无={}",staffId);
return ;
}
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
if(qwDTO.isSelf()) {
this.qywxUserApiService.deleteSelfWorkWxUser(qwDTO.getDkCorpid(), qwDTO.getSelf3thSecret(), staff.getWxUserId(),qwDTO.getUrlHost()) ;
}else {
this.qywxUserApiService.deleteWorkWxUser(qwDTO.getThirdCorpid(), config.getWxSuiteid(), staff.getWxOpenUseId()) ;
}
}
} }
...@@ -659,4 +659,14 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe ...@@ -659,4 +659,14 @@ public class StaffClerkRelationApiServiceImpl implements StaffClerkRelationApiSe
public List<String> listAllClerkIdsByEnterpriseId(String enterpriseId) { public List<String> listAllClerkIdsByEnterpriseId(String enterpriseId) {
return this.staffClerkRelationService.listAllClerkIdsByEnterpriseId(enterpriseId); return this.staffClerkRelationService.listAllClerkIdsByEnterpriseId(enterpriseId);
} }
@Override
public List<String> listAlStoreIdsByEnterpriseId(String enterpriseId) {
return this.staffClerkRelationService.listAlStoreIdsByEnterpriseId(enterpriseId);
}
@Override
public ServiceResponse<Map<String, List<String>>> listClerkForCanvas(String wxEnterpriseId, String enterpriseId, String creatorId, String storeFilterId) {
return staffClerkRelationService.listClerkForCanvas(wxEnterpriseId,enterpriseId,creatorId,storeFilterId);
}
} }
package com.gic.haoban.manage.service.service.out.impl.chat; package com.gic.haoban.manage.service.service.out.impl.chat;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import com.gic.haoban.manage.service.service.content.impl.GroupMessageServiceImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -23,6 +25,8 @@ import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO; ...@@ -23,6 +25,8 @@ import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanOwnerLogService; import com.gic.haoban.manage.service.service.chat.GroupChatPlanOwnerLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService; import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import java.util.Date;
@Service("groupChatPlanApiService") @Service("groupChatPlanApiService")
public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService { public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
...@@ -108,6 +112,11 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService { ...@@ -108,6 +112,11 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
Long planId = log.getPlanId() ; Long planId = log.getPlanId() ;
GroupChatPlanBO plan = this.groupChatPlanService.getById(planId) ; GroupChatPlanBO plan = this.groupChatPlanService.getById(planId) ;
dto.setPlanName(plan.getName()); dto.setPlanName(plan.getName());
if(dto.getSendStatus()==1) {
if(plan.getSendFlag()==0 || plan.getEndTime().getTime() < System.currentTimeMillis()) {
dto.setSendStatus(0);
}
}
return ServiceResponse.success(dto); return ServiceResponse.success(dto);
} }
...@@ -168,4 +177,23 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService { ...@@ -168,4 +177,23 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
return ServiceResponse.success(page); return ServiceResponse.success(page);
} }
@Override
public void staffSendResult(StaffSendResultQDTO qdto) {
this.groupChatPlanService.staffSendResult(qdto);
}
@Override
public String getQwMsgId(String staffId, Date sendTime) {
return this.groupChatPlanService.getQwMsgId(staffId,sendTime, GroupMessageServiceImpl.GroupMsgChatType.single);
}
@Override
public void noticeTimer(String params) {
this.groupChatPlanService.noticeTimer(params) ;
}
@Override
public Integer getTaskNum(String wxEnterpriseId, String enterpriseId, String storeId, String clerkId, String staffId) {
return this.groupChatPlanService.getTaskNum(wxEnterpriseId,enterpriseId,storeId,clerkId,staffId);
}
} }
...@@ -252,5 +252,8 @@ ...@@ -252,5 +252,8 @@
<dubbo:reference id="memberTagEsApiService" interface="com.gic.member.tag.api.service.MemberTagEsApiService" timeout="100000" retries="0" check="false"/> <dubbo:reference id="memberTagEsApiService" interface="com.gic.member.tag.api.service.MemberTagEsApiService" timeout="100000" retries="0" check="false"/>
<dubbo:reference id="memberCrowdApiService" interface="com.gic.member.ext.api.service.MemberCrowdApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="memberCrowdApiService" interface="com.gic.member.ext.api.service.MemberCrowdApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="coupCardDistributionService" interface="com.gic.marketing.api.service.CoupCardDistributionService" timeout="30000" retries="0" check="false"/> <dubbo:reference id="coupCardDistributionService" interface="com.gic.marketing.api.service.CoupCardDistributionService" timeout="30000" retries="0" check="false"/>
<dubbo:reference id="enterpriseWxaLinkService" interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" timeout="30000" retries="0" check="false"/>
<dubbo:reference id="qywxGroupSendCanvasApiService" interface="com.gic.haoban.task.manage.api.service.QywxGroupSendCanvasApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.haoban.task.api.service.TelTaskApiService" id="telTaskApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.task.manage.api.service.IMarketTaskMemberApiService" id="iMarketTaskMemberApiService"/>
</beans> </beans>
\ No newline at end of file
...@@ -924,6 +924,16 @@ ...@@ -924,6 +924,16 @@
and external_status = 3 and external_status = 3
</select> </select>
<select id="getFriendNum" resultType="java.lang.Integer">
select count(*) from tab_haoban_external_clerk_related where
member_id = #{memberId} and store_id = #{storeId}
<if test="null != clerkId">
and clerk_id=#{clerkId}
</if>
and status_flag = 1
</select>
<select id="halfFriendPage" resultMap="BaseResultMap"> <select id="halfFriendPage" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from tab_haoban_external_clerk_related select <include refid="Base_Column_List"/> from tab_haoban_external_clerk_related
where wx_enterprise_id = #{wxEnterpriseId} and status_flag in (1,3,4) where wx_enterprise_id = #{wxEnterpriseId} and status_flag in (1,3,4)
......
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="media_type" property="mediaType" /> <result column="media_type" property="mediaType" />
<result column="video_img_url" property="videoImgUrl" /> <result column="video_img_url" property="videoImgUrl" />
<result column="app_id" property="appid" />
<result column="material_title" property="materialTitle" />
<result column="link" property="link" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
material_id, material_id,
...@@ -26,7 +29,7 @@ ...@@ -26,7 +29,7 @@
status_flag, status_flag,
create_time, create_time,
update_time , media_type, update_time , media_type,
video_img_url video_img_url , app_id , material_title , link
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabMaterialContent" useGeneratedKeys="true" keyProperty="id"> <insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabMaterialContent" useGeneratedKeys="true" keyProperty="id">
...@@ -43,7 +46,7 @@ ...@@ -43,7 +46,7 @@
create_time, create_time,
update_time , update_time ,
media_type, media_type,
video_img_url video_img_url , app_id , material_title , link
)VALUES( )VALUES(
#{materialId,jdbcType=VARCHAR}, #{materialId,jdbcType=VARCHAR},
#{materialType,jdbcType=INTEGER}, #{materialType,jdbcType=INTEGER},
...@@ -54,7 +57,7 @@ ...@@ -54,7 +57,7 @@
#{urlMd5,jdbcType=VARCHAR}, #{urlMd5,jdbcType=VARCHAR},
1, 1,
now(), now(),
now() , #{mediaType},#{videoImgUrl} now() , #{mediaType},#{videoImgUrl} , #{appid} , #{materialTitle} , #{link}
) )
]]> ]]>
</insert> </insert>
......
...@@ -263,7 +263,7 @@ ...@@ -263,7 +263,7 @@
</foreach> </foreach>
and a.status_flag = 1 and a.status_flag = 1
group by a.staff_id, a.clerk_id) as scr on scr.staff_id = ecr.staff_id group by a.staff_id, a.clerk_id) as scr on scr.staff_id = ecr.staff_id
where ecr.status_flag = 1 AND ecr.`external_status` in (1 , 3) where ecr.status_flag = 1 AND ecr.`external_status` in (1)
and ecr.enterprise_id = #{enterpriseId,jdbcType=VARCHAR} and ecr.enterprise_id = #{enterpriseId,jdbcType=VARCHAR}
and ecr.wx_enterprise_id=#{wxEnterpriseId} and ecr.wx_enterprise_id=#{wxEnterpriseId}
and ecr.member_id in and ecr.member_id in
...@@ -415,7 +415,8 @@ ...@@ -415,7 +415,8 @@
a.update_time updateTime , a.update_time updateTime ,
a.manage_flag manageFlag , a.manage_flag manageFlag ,
b.wx_user_id qwUserId, b.wx_user_id qwUserId,
b.wx_open_user_id openUserId b.wx_open_user_id openUserId ,
b.head_img staffHeadImg
from tab_haoban_staff_clerk_relation a left join tab_haoban_staff b on b.staff_id = a.staff_id from tab_haoban_staff_clerk_relation a left join tab_haoban_staff b on b.staff_id = a.staff_id
</sql> </sql>
...@@ -439,6 +440,12 @@ ...@@ -439,6 +440,12 @@
where a.enterprise_id = #{enterpriseId} and a.status_flag=1 and b.status_flag = 1 where a.enterprise_id = #{enterpriseId} and a.status_flag=1 and b.status_flag = 1
</select> </select>
<select id="listAlStoreIdsByEnterpriseId" resultType="java.lang.String">
select distinct(a.store_id) storeId
from tab_haoban_staff_clerk_relation a inner join tab_haoban_staff b on b.staff_id = a.staff_id
where a.enterprise_id = #{enterpriseId} and a.status_flag=1 and b.status_flag = 1
</select>
<select id="listByWxEnterpriseIdAndStaffId" resultType="com.gic.haoban.manage.api.dto.StaffClerkRelationDTO"> <select id="listByWxEnterpriseIdAndStaffId" resultType="com.gic.haoban.manage.api.dto.StaffClerkRelationDTO">
select select
staff_id staffId, staff_id staffId,
......
...@@ -316,6 +316,11 @@ ...@@ -316,6 +316,11 @@
<if test="null != startDate"> <if test="null != startDate">
and a.chat_add_time <![CDATA[ >=]]> #{startDate} and a.chat_add_time <![CDATA[ <= ]]> #{endDate} and a.chat_add_time <![CDATA[ >=]]> #{startDate} and a.chat_add_time <![CDATA[ <= ]]> #{endDate}
</if> </if>
<if test="null != giveUpStartTime">
and a.chat_add_time <![CDATA[ <= ]]> #{giveUpStartTime}
</if>
<if test="null != dismissStartDate"> <if test="null != dismissStartDate">
and a.chat_dissolve_time <![CDATA[ >=]]> #{startDate} and a.chat_dissolve_time <![CDATA[ <= ]]> #{endDate} and a.chat_dissolve_time <![CDATA[ >=]]> #{startDate} and a.chat_dissolve_time <![CDATA[ <= ]]> #{endDate}
</if> </if>
......
...@@ -96,8 +96,14 @@ ...@@ -96,8 +96,14 @@
and (d.name like #{chatName} or d.wx_chat_id like #{wxChatId} and (d.name like #{chatName} or d.wx_chat_id like #{wxChatId}
</if> </if>
<if test="null !=sendStatus"> <if test="null !=sendStatus">
and a.send_status = #{sendStatus} <if test="sendStatus==30">
and a.send_status in (0,3)
</if>
<if test="sendStatus != 30">
and a.send_status = #{sendStatus}
</if>
</if> </if>
<if test="null != startDate"> <if test="null != startDate">
and a.create_time <![CDATA[>=]]> #{startDate} and a.create_time <![CDATA[<=]]> #{endDate} and a.create_time <![CDATA[>=]]> #{startDate} and a.create_time <![CDATA[<=]]> #{endDate}
</if> </if>
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
<result column="material_from" property="materialFrom" /> <result column="material_from" property="materialFrom" />
<result column="send_all_flag" property="sendAllFlag" /> <result column="send_all_flag" property="sendAllFlag" />
<result column="all_search_params" property="allSearchParams" /> <result column="all_search_params" property="allSearchParams" />
<result column="exec_type" property="execType" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
plan_id, plan_id,
...@@ -53,7 +54,7 @@ ...@@ -53,7 +54,7 @@
success_chat_count, success_chat_count,
fail_chat_count , fail_chat_count ,
wx_enterprise_id , enterprise_id , send_flag , wx_enterprise_id , enterprise_id , send_flag ,
material_from , send_all_flag , all_search_params material_from , send_all_flag , all_search_params , exec_type
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -80,7 +81,7 @@ ...@@ -80,7 +81,7 @@
send_count, send_count,
success_chat_count, success_chat_count,
fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag, fail_chat_count , wx_enterprise_id , enterprise_id , delete_flag , send_flag,
material_from , send_all_flag , all_search_params material_from , send_all_flag , all_search_params , exec_type
)VALUES( )VALUES(
#{planId}, #{planId},
#{name}, #{name},
...@@ -102,7 +103,7 @@ ...@@ -102,7 +103,7 @@
#{sendCount}, #{sendCount},
#{successChatCount}, #{successChatCount},
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1, #{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1,
#{materialFrom} , #{sendAllFlag} , #{allSearchParams} #{materialFrom} , #{sendAllFlag} , #{allSearchParams} , #{execType}
) )
]]> ]]>
</insert> </insert>
...@@ -147,7 +148,8 @@ ...@@ -147,7 +148,8 @@
expire_days=#{expireDays}, expire_days=#{expireDays},
material_from=#{materialFrom} , material_from=#{materialFrom} ,
send_all_flag = #{sendAllFlag} , send_all_flag = #{sendAllFlag} ,
all_search_params = #{allSearchParams} all_search_params = #{allSearchParams} ,
exec_type = #{execType}
where plan_id = #{planId} where plan_id = #{planId}
]]> ]]>
</update> </update>
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
<result column="done_flag" property="doneFlag"/> <result column="done_flag" property="doneFlag"/>
<result column="send_time" property="sendTime"/> <result column="send_time" property="sendTime"/>
<result column="fail_count" property="failCount"/> <result column="fail_count" property="failCount"/>
<result column="exec_type" property="execType" />
<result column="data_get_time" property="dataGetTime" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
owner_log_id, owner_log_id,
...@@ -31,7 +33,7 @@ ...@@ -31,7 +33,7 @@
send_status, send_status,
send_count, send_count,
create_time, create_time,
update_time , remark , msgid , delete_flag , done_flag , send_time , fail_count update_time , remark , msgid , delete_flag , done_flag , send_time , fail_count , exec_type , data_get_time
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
...@@ -48,7 +50,7 @@ ...@@ -48,7 +50,7 @@
send_count, send_count,
fail_count, fail_count,
create_time, create_time,
update_time , remark , msgid , delete_flag , done_flag update_time , remark , msgid , delete_flag , done_flag , exec_type
)VALUES )VALUES
<foreach collection="list" item="item" separator="," > <foreach collection="list" item="item" separator="," >
( #{item.ownerLogId,jdbcType=BIGINT}, ( #{item.ownerLogId,jdbcType=BIGINT},
...@@ -62,7 +64,7 @@ ...@@ -62,7 +64,7 @@
0, 0,
0, 0,
#{item.createTime}, #{item.createTime},
#{item.updateTime} , #{item.remark} , #{item.msgid} , 0 , 0 #{item.updateTime} , #{item.remark} , #{item.msgid} , 0 , 0 , #{item.execType}
) )
</foreach> </foreach>
</insert> </insert>
...@@ -92,12 +94,26 @@ ...@@ -92,12 +94,26 @@
<update id="updateSendCount"> <update id="updateSendCount">
<![CDATA[ <![CDATA[
UPDATE tab_haoban_group_chat_plan_owner_log SET send_count = #{sendCount} , fail_count =#{failCount} , done_flag = 1 , UPDATE tab_haoban_group_chat_plan_owner_log SET send_count = #{sendCount} , fail_count =#{failCount} , done_flag = 1 ,
send_status = 2 , send_time = #{sendTime} , send_status = 2 , send_time = #{sendTime} , data_get_time = now() ,
update_time = now() where owner_log_id = #{id} update_time = now() where owner_log_id = #{id}
]]> ]]>
</update> </update>
<update id="updateExecType">
<!-- ============ 查询=============--> update tab_haoban_group_chat_plan_owner_log set exec_type =#{execType} where plan_id=#{planId} and delete_flag = 0
</update>
<update id="updateMsgid">
update tab_haoban_group_chat_plan_owner_log set msgid=#{msgid} where owner_log_id = #{id}
</update>
<update id="giveUp" parameterType="java.lang.Long">
update tab_haoban_group_chat_plan_owner_log set send_status = 3 where owner_log_id = #{id}
</update>
<update id="staffSendResult">
update tab_haoban_group_chat_plan_owner_log set send_status = #{statusFlag} , send_time = #{sendTime} , remark = #{failRemark} where plan_id = #{planId} and staff_id = #{staffId}
</update>
<!-- ============ 查询=============-->
<select id="selectById" parameterType="long" resultMap="result-map-tabHaobanGroupChatPlanOwnerLog"> <select id="selectById" parameterType="long" resultMap="result-map-tabHaobanGroupChatPlanOwnerLog">
SELECT <include refid="Base_Column_List"/> FROM tab_haoban_group_chat_plan_owner_log WHERE owner_log_id = #{ownerLogId} and delete_flag = 0 SELECT <include refid="Base_Column_List"/> FROM tab_haoban_group_chat_plan_owner_log WHERE owner_log_id = #{ownerLogId} and delete_flag = 0
</select> </select>
...@@ -128,7 +144,7 @@ ...@@ -128,7 +144,7 @@
a.send_time sendTime , a.send_time sendTime ,
a.create_time createTime , a.create_time createTime ,
a.done_flag doneFlag , a.done_flag doneFlag ,
a.msgid msgid a.msgid msgid , a.exec_type execType
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_staff b on a.staff_id = b.staff_id from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_staff b on a.staff_id = b.staff_id
where where
a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and a.delete_flag = 0 a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and a.delete_flag = 0
...@@ -143,20 +159,47 @@ ...@@ -143,20 +159,47 @@
</if> </if>
order by a.create_time , a.owner_log_id order by a.create_time , a.owner_log_id
</select> </select>
<select id="getOwnerInfo" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
select
a.owner_log_id ownerLogId ,
b.plan_id planId ,
b.name planName ,
b.exec_type execType ,
a.staff_id staffId ,
a.clerk_id clerkId ,
a.store_id storeId ,
a.send_status sendStatus ,
a.send_count sendCount ,
a.fail_count failCount ,
a.send_time sendTime ,
a.create_time createTime ,
b.end_time expireDate ,
b.end_time endTime ,
b.start_time startTime ,
a.done_flag doneFlag ,
a.msgid msgid
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and b.delete_flag = 0 and a.staff_id = #{staffId}
<if test="null != clerkId">
and a.clerk_id = #{clerkId}
</if>
</select>
<select id="listOwnerLogPageForWxaTotal" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO"> <select id="listOwnerLogPageForWxaTotal" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO">
select select
b.plan_id planId , b.plan_id planId ,
b.name planName , b.name planName ,
b.start_time startTime , b.start_time startTime ,
b.end_time endTime , b.end_time endTime ,
b.exec_type execType ,
<!-- 已发送 --> <!-- 已发送 -->
SUM(CASE a.send_status WHEN 2 THEN 1 ELSE 0 END ) sendCount, SUM(CASE a.send_status WHEN 2 THEN 1 ELSE 0 END ) sendCount,
<!-- 待发送 --> <!-- 待发送 -->
SUM(CASE a.send_status WHEN 1 THEN 1 ELSE 0 END ) notSendCount SUM(CASE a.send_status WHEN 1 THEN 1 ELSE 0 END ) notSendCount
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where where
a.wx_enterprise_id = #{wxEnterpriseId} and b.delete_flag = 0 a.wx_enterprise_id = #{wxEnterpriseId} and b.delete_flag = 0
<if test="null != storeId"> <if test="null != storeId">
and a.store_id = #{storeId} and a.store_id = #{storeId}
...@@ -171,25 +214,25 @@ ...@@ -171,25 +214,25 @@
and b.name like #{searchParams} and b.name like #{searchParams}
</if> </if>
<if test="1==clerkTaskStatus"> <if test="1==clerkTaskStatus">
and b.end_time > now() and b.end_time > now() and a.send_status =1
</if> </if>
<if test="2==clerkTaskStatus"> <if test="2==clerkTaskStatus">
and b.end_time <![CDATA[<=]]> now() and ( b.end_time <![CDATA[<=]]> now() or a.send_status !=1 )
</if> </if>
group by b.plan_id group by b.plan_id
order by b.end_time desc , a.create_time desc order by b.end_time desc , a.create_time desc
</select> </select>
<select id="listOwnerLogPageForWxa" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO"> <select id="listOwnerLogPageForWxa" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
select select
a.owner_log_id ownerLogId , a.owner_log_id ownerLogId ,
b.plan_id planId , b.plan_id planId ,
b.name planName , b.name planName ,
a.staff_id staffId , a.staff_id staffId ,
a.clerk_id clerkId , a.clerk_id clerkId ,
a.store_id storeId , a.store_id storeId ,
a.send_status sendStatus , a.send_status sendStatus ,
a.send_count sendCount , a.send_count sendCount ,
a.fail_count failCount , a.fail_count failCount ,
a.send_time sendTime , a.send_time sendTime ,
a.create_time createTime , a.create_time createTime ,
...@@ -197,8 +240,8 @@ ...@@ -197,8 +240,8 @@
b.end_time endTime , b.end_time endTime ,
b.start_time startTime , b.start_time startTime ,
a.done_flag doneFlag , a.done_flag doneFlag ,
a.msgid msgid a.msgid msgid
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and b.delete_flag = 0 where a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and b.delete_flag = 0
<if test="null != storeId"> <if test="null != storeId">
and a.store_id = #{storeId} and a.store_id = #{storeId}
...@@ -211,29 +254,6 @@ ...@@ -211,29 +254,6 @@
</if> </if>
order by a.create_time desc , a.owner_log_id order by a.create_time desc , a.owner_log_id
</select> </select>
<select id="getOwnerInfo" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
select
a.owner_log_id ownerLogId ,
b.plan_id planId ,
b.name planName ,
a.staff_id staffId ,
a.clerk_id clerkId ,
a.store_id storeId ,
a.send_status sendStatus ,
a.send_count sendCount ,
a.fail_count failCount ,
a.send_time sendTime ,
a.create_time createTime ,
b.end_time expireDate ,
b.end_time endTime ,
b.start_time startTime ,
a.done_flag doneFlag ,
a.msgid msgid
from tab_haoban_group_chat_plan_owner_log a left join tab_haoban_group_chat_plan b on a.plan_id = b.plan_id
where a.wx_enterprise_id = #{wxEnterpriseId} and a.plan_id = #{planId} and b.delete_flag = 0 and a.staff_id = #{staffId}
and a.clerk_id = #{clerkId}
</select>
<select id="getTotalCount" resultType="java.lang.Integer"> <select id="getTotalCount" resultType="java.lang.Integer">
...@@ -256,7 +276,62 @@ ...@@ -256,7 +276,62 @@
AND b.status_flag = 1 AND b.status_flag = 1
AND b.end_time >= now() AND b.end_time >= now()
</select> </select>
<select id="listForMsgid" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
SELECT
</mapper> a.owner_log_id ownerLogId ,
\ No newline at end of file b.plan_id planId ,
a.staff_id staffId ,
a.send_time sendTime
FROM tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
WHERE b.exec_type = 1 AND a.send_status = 2 AND a.msgid IS NULL
</select>
<select id="listForCancelSend" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO">
SELECT
a.wx_enterprise_id wxEnterpriseId ,
a.owner_log_id ownerLogId ,
b.plan_id planId ,
a.staff_id staffId ,
a.send_time sendTime,
a.msgid msgid
FROM tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
WHERE b.exec_type = 0 AND a.send_status = 1 AND a.msgid IS not NULL and b.end_time <![CDATA[<=]]> now() AND end_time > DATE_ADD(CURDATE(), INTERVAL -2 DAY)
</select>
<!-- 查询所有任务数-->
<select id="getTotalTask" resultType="int">
select count(1) from tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
where a.enterprise_id = #{enterpriseId} and b.end_time <![CDATA[ > ]]> now()
AND a.clerk_id = #{clerkId} AND a.send_status = 1 and a.delete_flag = 0
</select>
<!-- 查询逾期任务数-->
<select id="getInvalidTask" resultType="int">
select count(1) from tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
where a.enterprise_id = #{enterpriseId} and b.end_time = #{time}
AND a.clerk_id = #{clerkId} AND a.send_status = 1 and a.delete_flag = 0
</select>
<!-- 查询失效任务数-->
<select id="getOverdueTask" resultType="int">
select count(1) from tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
where a.enterprise_id = #{enterpriseId} and b.end_time = now()
AND a.clerk_id = #{clerkId} AND a.send_status = 1 and a.delete_flag = 0
</select>
<select id="getTaskNum" resultType="java.lang.Integer">
select count(1) from (
select a.plan_id from tab_haoban_group_chat_plan_owner_log a LEFT JOIN tab_haoban_group_chat_plan b ON a.plan_id = b.plan_id
where a.enterprise_id = #{enterpriseId}
and a.store_id = #{storeId}
<if test="null != clerkId">
AND a.clerk_id = #{clerkId}
</if>
and b.end_time <![CDATA[ > ]]> now()
AND a.send_status = 1 and a.delete_flag = 0 group by a.plan_id ) t
</select>
</mapper>
\ No newline at end of file
...@@ -171,6 +171,15 @@ ...@@ -171,6 +171,15 @@
create_time asc create_time asc
</select> </select>
<select id="getForTask"
resultMap="result-map-tabHaobanWxUserAddLog">
select
<include refid="Base_Column_List"/>
from tab_haoban_wx_user_add_log where
external_userid=#{externalUserid} and status_flag = 2 and add_channel = 4 order by
create_time desc limit 1
</select>
<select id="selectNewLog" resultMap="result-map-tabHaobanWxUserAddLog"> <select id="selectNewLog" resultMap="result-map-tabHaobanWxUserAddLog">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
......
import com.alibaba.fastjson.JSON;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.api.dto.StaffDTO;
import com.gic.haoban.manage.api.dto.qdto.hm.WxUserAddLogQDTO;
import com.gic.haoban.manage.api.enums.SyncTaskTypeEnum;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.service.ExternalClerkRelatedService;
import com.gic.haoban.manage.service.service.out.impl.MemberUnionidRelatedApiServiceImpl;
import com.gic.member.api.service.MemberApiService;
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.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* 删除无效外部联系人
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class DelInvalidExternalUserTest {
private static final Logger log = LogManager.getLogger(DelInvalidExternalUserTest.class);
@Autowired
private MemberUnionidRelatedApiService memberUnionidRelatedApiService ;
@Autowired
private TabHaobanExternalClerkRelatedMapper tabHaobanExternalClerkRelatedMapper ;
@Autowired
private MemberApiService memberApiService;
@Autowired
private ExternalClerkRelatedService externalClerkRelatedService ;
@Test
public void test() {
String wxEnterpriseId = "8477c149d8774f06ab841f042645832b" ;
String wxUserId = "51301";
String staffId = "4eaf610dde494b4bb05ea4529b86a328" ;
this.doSelf(wxEnterpriseId,wxUserId,staffId);
}
public void doSelf(String wxEnterpriseId,String wxUserId , String staffId) {
List<String> list = memberUnionidRelatedApiService.listSelfExterialList(wxEnterpriseId,wxUserId) ;
log.info("企微={}",list);
/* List<TabHaobanExternalClerkRelated> gicList = this.tabHaobanExternalClerkRelatedMapper.listByWxEnterpriseIdAndWxUserId(staffId,wxEnterpriseId) ;
if(CollectionUtils.isNotEmpty(gicList)) {
for(TabHaobanExternalClerkRelated item : gicList) {
String extid = item.getExternalUserId() ;
if(!list.contains(extid)) {
log.info("不存在好友关系={}",extid);
this.delByUserIdAndExternalUserId(item) ;
}
}
}*/
}
public void delByUserIdAndExternalUserId(TabHaobanExternalClerkRelated dto) {
String staffId = dto.getStaffId();
String externalUserid = dto.getExternalUserId();
String wxEnterpriseId = dto.getWxEnterpriseId();
int count = tabHaobanExternalClerkRelatedMapper.delByUserIdAndExternalUserId(externalUserid,staffId);
if (count <= 0) {
log.error("无需删除的好友数据:{}", JSON.toJSONString(dto));
return;
}
List<TabHaobanExternalClerkRelated> deleteRelatedList = tabHaobanExternalClerkRelatedMapper.listByExTernalUseridAndWxUserId(externalUserid, staffId, 2);
if (CollectionUtils.isEmpty(deleteRelatedList)) {
log.info("无解除的好友关系:externalUserid:{},staffId:{}", externalUserid,staffId);
return;
}
TabHaobanExternalClerkRelated related = deleteRelatedList.get(0);
String enterpriseId = related.getEnterpriseId() ;
//该企微该会员所有关联关系解除后通知会员
List<TabHaobanExternalClerkRelated> list = tabHaobanExternalClerkRelatedMapper.listByExternalUseridAndWxEnterpriseId(externalUserid, wxEnterpriseId, Arrays.asList("1", "3", "4"));
if (CollectionUtils.isEmpty(list)) {
//删除的好友关系
List<TabHaobanExternalClerkRelated> haobanExternalClerkRelatedList = tabHaobanExternalClerkRelatedMapper.listByExternalUseridAndWxEnterpriseId(externalUserid, wxEnterpriseId, Collections.singletonList("2"));
for (TabHaobanExternalClerkRelated externalClerkRelated : haobanExternalClerkRelatedList) {
String memberId = externalClerkRelated.getMemberId();
log.info("通知会员 删除会员后更新为非企微好友 memberId:{}", memberId);
List<TabHaobanExternalClerkRelated> memberList = this.externalClerkRelatedService.getAddTimeByMemberId(memberId, enterpriseId,null);
Date date = new Date();
Date opTime = new Date(0);
if (CollectionUtils.isNotEmpty(memberList)){
for (TabHaobanExternalClerkRelated a : memberList){
if ((a.getStatusFlag() == 0 || a.getStatusFlag() == 2) && a.getUpdateTime().after(opTime)){
opTime= a.getUpdateTime();
date = opTime;
}
}
}
memberApiService.updateMemberQywxEveryOccasion(enterpriseId, memberId, 0, date,null);
}
}
}
}
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.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
public class FileUtils { public class FileUtils {
...@@ -13,7 +16,7 @@ public class FileUtils { ...@@ -13,7 +16,7 @@ public class FileUtils {
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(JSONArray.parseArray(getText().toString())); cleanNoExsitFriendNew(null,null,null);
} }
public static StringBuilder getText(){ public static StringBuilder getText(){
...@@ -21,4 +24,20 @@ public class FileUtils { ...@@ -21,4 +24,20 @@ public class FileUtils {
return list ; return list ;
} }
public static void cleanNoExsitFriendNew(String wxEnterpriseId, String staffId, List<String> externalUserIds) {
externalUserIds = Arrays.asList("wm0JLXDgAATwCdjIMGe-fwl7ZOMoJ2hw","wm0JLXDgAAa2Cqg0fa2F5BGgwfJo2dJw","wm0JLXDgAAzUoijz9olOmRV7PEBrQhNw","wm0JLXDgAAXI_2kotwsZHLdETKmJenYA","wm0JLXDgAA11ODZutAcho6-5BFC1zy4A") ;
Set<String> externalUserIdList = new HashSet<>() ;
externalUserIdList.add("wm0JLXDgAA5A396Jqh-mQQjbTa39m1yw") ;
Sets.SetView<String> delExternalUserIds = Sets.difference(externalUserIdList,new HashSet<>(externalUserIds));
System.out.println(delExternalUserIds);
}
} }
...@@ -24,18 +24,9 @@ public class QwOpenTest { ...@@ -24,18 +24,9 @@ public class QwOpenTest {
@Test @Test
public void tt() { public void tt() {
/* OpenStaffInitQDTO s = new OpenStaffInitQDTO() ;
s.setStaffId("52995ea8c81c4cc286a9b82bc36a7081");
s.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
s.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
this.openStaffApiService.init(s) ;*/
List<String> list = this.list();
for(String m : list) {
// memberApiService.updateMemberQywxEveryOccasion("ff8080816f6be950016f82d9c2061b92", "0000000090dacb280190deec34d0531b", 0, new Date(), null);
}
memberApiService.updateMemberQywxEveryOccasion("ff8080816f6be950016f82d9c2061b92", "0000000090dacb280190deec34d0531b", 0, new Date(), null); memberApiService.updateMemberQywxEveryOccasion("ff8080816d6905a5016d6b79a017014a", "61dd1e382a1f42ea9256c7e9c819dc34", 1, new Date(1705232487000L), new Date(1705232487000L));
} }
......
...@@ -66,6 +66,17 @@ public class GroupChatPlanVO implements Serializable{ ...@@ -66,6 +66,17 @@ public class GroupChatPlanVO implements Serializable{
// 所有的群发条件 // 所有的群发条件
private String allSearchParams ; private String allSearchParams ;
// 执行方式 0企微1好办小程序
private int execType ;
public int getExecType() {
return execType;
}
public void setExecType(int execType) {
this.execType = execType;
}
public String getAllSearchParams() { public String getAllSearchParams() {
return allSearchParams; return allSearchParams;
} }
......
...@@ -263,6 +263,12 @@ ...@@ -263,6 +263,12 @@
<version>${gic-webapp-common}</version> <version>${gic-webapp-common}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-search-engine-api</artifactId>
<version>${gic-search-engine-api}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
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;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.content.api.dto.column.ContentColumnListDTO; import com.gic.content.api.dto.column.ContentColumnListDTO;
import com.gic.content.api.dto.material.ContentMaterialDTO; import com.gic.content.api.dto.material.ContentMaterialDTO;
...@@ -244,6 +245,9 @@ public class ContentMaterialController { ...@@ -244,6 +245,9 @@ public class ContentMaterialController {
} }
ContentMaterialShareQDTO contentMaterialShareQDTO = new ContentMaterialShareQDTO(); ContentMaterialShareQDTO contentMaterialShareQDTO = new ContentMaterialShareQDTO();
BeanUtils.copyProperties(contentMaterialShareQO, contentMaterialShareQDTO); BeanUtils.copyProperties(contentMaterialShareQO, contentMaterialShareQDTO);
if(null != contentMaterialShareQO.getMarketingTime()) {
contentMaterialShareQDTO.setMarketingTime(DateUtil.strToDate(contentMaterialShareQO.getMarketingTime(),"yyyy-MM-dd HH:mm:ss"));
}
ServiceResponse<ContentMaterialShareInfoDTO> serviceResponse = contentMaterialShareApiService.shareContentMaterial(contentMaterialShareQDTO); ServiceResponse<ContentMaterialShareInfoDTO> serviceResponse = contentMaterialShareApiService.shareContentMaterial(contentMaterialShareQDTO);
if (!serviceResponse.isSuccess()) { if (!serviceResponse.isSuccess()) {
return RestResponse.failure(serviceResponse.getCode(), serviceResponse.getMessage()); return RestResponse.failure(serviceResponse.getCode(), serviceResponse.getMessage());
......
package com.gic.haoban.manage.web.controller.data;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DataApiUtils;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.api.service.StaffClerkRelationApiService;
import com.gic.haoban.manage.web.qo.canvas.*;
import com.gic.haoban.manage.web.utils.EsMemberInfoUtils;
import com.gic.haoban.manage.web.vo.canvas.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
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.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 画布数据
*/
@Slf4j
@RestController
@RequestMapping("/canvas-data")
public class CanvasDataController {
@Autowired
private EsMemberInfoUtils esMemberInfoUtils;
@Autowired
private StaffApiService staffApiService;
@Autowired
private ClerkService clerkService;
@Autowired
private StaffClerkRelationApiService staffClerkRelationApiService;
/**
* 活动转化数据
* @param qo
* @return
*/
@RequestMapping("get-canvas-conversion-data")
public RestResponse<CanvasConversionDataVO> getCanvasConversionData(@RequestBody CanvasConversionDataQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, null, null);
//1画布维度2导购维度3会员维度
jsonObject.put("dataType", 1);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_list");
List<CanvasConversionDataVO> list = DataApiUtils.parsePageDataList(res, CanvasConversionDataVO.class);
return RestResponse.successResult(list.size() > 0 ? list.get(0) : new CanvasConversionDataVO());
}
/**
* 画布待完成会员列表
* @param qo
* @return
*/
@RequestMapping("get-canvas-to-do-complete-member")
public RestResponse<Page<CanvasToDoCompleteMemberVO>> getCanvasToDoCompleteMember(@RequestBody CanvasToDoCompleteMemberQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_mbr");
Page<CanvasToDoCompleteMemberVO> page = DataApiUtils.getPageData(res, CanvasToDoCompleteMemberVO.class);
List<CanvasToDoCompleteMemberVO> list = page.getResult();
esMemberInfoUtils.setMemberInfo(qo.getEnterpriseId(), list, Stream.of("memberName","memberNick","photoUrl","clerkCode", "clerkName")
.collect(Collectors.toSet()));
return RestResponse.successResult(page);
}
private void removeClerkIdParam(String clerkId, JSONObject jsonObject) {
if (StringUtils.isNotBlank(clerkId) && staffApiService.isManager(clerkId)) {
//店长不需要传参
jsonObject.remove("clerkId");
}
}
/**
* 活动已完成的会员
* @param qo
* @return
*/
@RequestMapping("get-canvas-conversion-member")
public RestResponse<Page<CanvasConversionMemberVO>> getCanvasConversionMember(@RequestBody CanvasConversionMemberQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
//1导购2会员
jsonObject.put("dataType", 2);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_clerk");
Page<CanvasConversionMemberVO> page = DataApiUtils.getPageData(res, CanvasConversionMemberVO.class);
List<CanvasConversionMemberVO> list = page.getResult();
esMemberInfoUtils.setMemberInfo(qo.getEnterpriseId(), list, Stream.of("memberName","memberNick","photoUrl","clerkCode", "clerkName")
.collect(Collectors.toSet()));
return RestResponse.successResult(page);
}
/**
* 活动导购详情
* @param qo
* @return
*/
@RequestMapping("get-canvas-conversion-clerk")
public RestResponse<Page<CanvasConversionMemberVO>> getCanvasConversionClerk(@RequestBody CanvasConversionClerkQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
//1导购2会员
jsonObject.put("dataType", 1);
removeClerkIdParam(qo.getClerkId(), jsonObject);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_clerk");
Page<CanvasConversionMemberVO> page = DataApiUtils.getPageData(res, CanvasConversionMemberVO.class);
List<CanvasConversionMemberVO> list = page.getResult();
esMemberInfoUtils.setMemberInfo(qo.getEnterpriseId(), list, Stream.of("clerkCode", "clerkName")
.collect(Collectors.toSet()));
return RestResponse.successResult(page);
}
/**
* 区经的话务/群发 门店和活动数据
* @param qo
* @return
*/
@RequestMapping("get-tel-or-mass-task-data")
public RestResponse<Page<CanvasTaskVO>> getTelOrMassTaskData(@RequestBody CanvasTaskQO qo) {
boolean isStore = qo.getDataType() == 1;
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
if (StringUtils.isBlank(qo.getStoreId())) {
List<String> authStoreIdList = staffApiService
.getHaobanStoreIdsRolesByClerkIdAndStoreStatus(qo.getClerkId(), qo.getWxEnterpriseId(), null, null);
if (CollectionUtils.isNotEmpty(authStoreIdList)) {
jsonObject.put("storeId", authStoreIdList.stream().collect(Collectors.joining(",")));
}
}
//区经,设置了门店ID参数后,取出clerkId
jsonObject.remove("clerkId");
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_mkt_task");
Page<CanvasTaskVO> page = DataApiUtils.getPageData(res, CanvasTaskVO.class);
List<CanvasTaskVO> list = page.getResult();
if (CollectionUtils.isNotEmpty(list)) {
if (qo.getPageNum() == 1) {
//合计
jsonObject.put("dataType", 4);
res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_mkt_task");
JSONObject total = DataApiUtils.getPageOne(res);
total.put(isStore ? "storeName" : "canvasName", "合计");
if (CollectionUtils.isEmpty(list)) {
list = new ArrayList<>();
}
list.add(0, JSONObject.parseObject(total.toJSONString(), CanvasTaskVO.class));
page.setResult(list);
}
}
return RestResponse.successResult(page);
}
/**
* 店长/店员 任务列表
* @param qo
* @return
*/
@RequestMapping("get-tel-and-mass-task-data")
public RestResponse<Page<CanvasStoreTaskVO>> getTelAndMassTaskData(@RequestBody CanvasStoreTaskQO qo) {
JSONObject jsonObject = (JSONObject) JSONObject.toJSON(qo);
setPageParam(jsonObject, qo.getPageNum(), qo.getPageSize());
jsonObject.put("subType", "all");
// if (StringUtils.isNotBlank(qo.getClerkId()) && staffApiService.isManager(qo.getClerkId())) {
// //店长不需要传参
// jsonObject.remove("clerkId");
// }
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mkt_canvas_haoban_mkt_task");
Page<CanvasStoreTaskVO> page = DataApiUtils.getPageData(res, CanvasStoreTaskVO.class);
List<CanvasStoreTaskVO> list = page.getResult();
if (CollectionUtils.isNotEmpty(list)) {
List<String> clerkIdList = list.stream().filter(e -> StringUtils.isNotBlank(e.getClerkId())).map(e -> e.getClerkId()).distinct().collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(clerkIdList)) {
List<StaffClerkRelationDTO> staffClerkRelationDTOS = staffClerkRelationApiService.listByClerkIds(clerkIdList);
if (CollectionUtils.isNotEmpty(staffClerkRelationDTOS)) {
Map<String, String> clerkIdMapHeadImage = staffClerkRelationDTOS.stream()
.filter(e -> StringUtils.isNotBlank(e.getStaffHeadImg()))
.collect(Collectors.toMap(StaffClerkRelationDTO::getClerkId, StaffClerkRelationDTO::getStaffHeadImg, (v1, v2) -> v1));
for (CanvasStoreTaskVO vo : list) {
vo.setClerkImageUrl(clerkIdMapHeadImage.get(vo.getClerkId()));
}
}
}
}
return RestResponse.successResult(page);
}
private void setPageParam(JSONObject jsonObject, Integer pageNum, Integer pageSize) {
jsonObject.put("pageNum", pageNum == null ? 1 : pageNum);
jsonObject.put("pageSize", pageSize == null ? 10 : pageSize);
}
}
...@@ -7,13 +7,17 @@ import java.util.List; ...@@ -7,13 +7,17 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.CommonMQDTO;
import com.gic.haoban.manage.api.dto.chat.*; import com.gic.haoban.manage.api.dto.chat.*;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatSearchQDTO;
import com.gic.haoban.manage.api.qdto.StaffSendResultQDTO;
import com.gic.haoban.manage.api.service.HaobanCommonMQApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatApiService;
import com.gic.haoban.manage.web.qo.GroupChatQO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -27,12 +31,7 @@ import com.gic.haoban.manage.api.service.MaterialApiService; ...@@ -27,12 +31,7 @@ import com.gic.haoban.manage.api.service.MaterialApiService;
import com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService; import com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService;
/** /**
* * 群群发计划
* @ClassName: GroupChatPlanController
* @Description: 群群发计划
* @author xugh
* @date 2022年11月26日 上午9:32:56
*
*/ */
@RestController @RestController
@RequestMapping("/chat/plan") @RequestMapping("/chat/plan")
...@@ -43,12 +42,26 @@ public class GroupChatPlanController { ...@@ -43,12 +42,26 @@ public class GroupChatPlanController {
@Autowired @Autowired
private GroupChatPlanApiService groupChatPlanApiService; private GroupChatPlanApiService groupChatPlanApiService;
@Autowired @Autowired
private GroupChatApiService groupChatApiService ;
@Autowired
private MaterialApiService materialApiService; private MaterialApiService materialApiService;
@Autowired
private HaobanCommonMQApiService haobanCommonMQApiService ;
// clerkTaskStatus 1待处理 2已处理/已失效 /**
* 群计划列表 - 分页
* @param clerkId
* @param wxEnterpriseId
* @param enterpriseId
* @param searchParams
* @param basePageInfo
* @param clerkTaskStatus 1待处理 2已处理/已失效
* @return
*/
@RequestMapping("total-list") @RequestMapping("total-list")
public RestResponse<Object> totalList(String clerkId, String wxEnterpriseId, String enterpriseId, public RestResponse<Page<ChatOwnerTotalDTO>> totalList(String clerkId, String wxEnterpriseId, String enterpriseId,
String searchParams, BasePageInfo basePageInfo , @RequestParam(defaultValue = "1") int clerkTaskStatus) { String searchParams, BasePageInfo basePageInfo , @RequestParam(defaultValue = "1") int clerkTaskStatus , String storeId) {
if (StringUtils.isEmpty(clerkId)) { if (StringUtils.isEmpty(clerkId)) {
return RestResponse.failure("1", "clerkId为空"); return RestResponse.failure("1", "clerkId为空");
} }
...@@ -56,6 +69,7 @@ public class GroupChatPlanController { ...@@ -56,6 +69,7 @@ public class GroupChatPlanController {
qdto.setWxEnterpriseId(wxEnterpriseId); qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setEnterpriseId(enterpriseId); qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId); qdto.setClerkId(clerkId);
qdto.setStoreId(storeId);
if (StringUtils.isNotBlank(searchParams)) { if (StringUtils.isNotBlank(searchParams)) {
qdto.setSearchParams("%" + searchParams + "%"); qdto.setSearchParams("%" + searchParams + "%");
} }
...@@ -75,8 +89,52 @@ public class GroupChatPlanController { ...@@ -75,8 +89,52 @@ public class GroupChatPlanController {
return RestResponse.successResult(page); return RestResponse.successResult(page);
} }
/**
* 好办小程序发送-群列表
* @return
*/
@RequestMapping("staff-group-list")
public RestResponse<Page<GroupChatDTO>> staffGroupList(@RequestBody GroupChatQO qo) {
logger.info("params={}",JSONObject.toJSONString(qo));
GroupChatSearchQDTO qdto = new GroupChatSearchQDTO() ;
qdto.setWxEnterpriseId(qo.getWxEnterpriseId());
qdto.setStaffId(qo.getStaffId());
qdto.setEnterpriseId(qo.getEnterpriseId());
qdto.setSearchParams(qo.getChatName());
qdto.setStatus(0);
qdto.setGicFlag(1);
if(null != qo.getOwnLogId()) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(qo.getOwnLogId());
GroupChatPlanOwnerLogDTO owner = resp.getResult();
if (null != owner && owner.getSendStatus()==2) {
return RestResponse.successResult(new Page<>()) ;
}
qdto.setStaffId(owner.getStaffId());
}
ServiceResponse<Page<GroupChatDTO>> page = this.groupChatApiService.listPage(qdto, qo);
return RestResponse.successResult(page.getResult());
}
/**
* 好办小程序发送-成员发送结果
* @return
*/
@RequestMapping("staff-send-result")
public RestResponse<Void> staffSendResult(@RequestBody StaffSendResultQDTO qdto) {
logger.info("企微返回={}",JSONObject.toJSONString(qdto));
this.groupChatPlanApiService.staffSendResult(qdto) ;
return RestResponse.successResult();
}
/**
* 群计划下-群主列表-分页
* @param qdto
* @param basePageInfo
* @return
*/
@RequestMapping("owner-list") @RequestMapping("owner-list")
public RestResponse<Object> ownerList(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) { public RestResponse<Page<GroupChatPlanOwnerLogDTO>> ownerList(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) {
if (null == qdto.getPlanId()) { if (null == qdto.getPlanId()) {
return RestResponse.failure("1", "planid为空"); return RestResponse.failure("1", "planid为空");
} }
...@@ -85,15 +143,29 @@ public class GroupChatPlanController { ...@@ -85,15 +143,29 @@ public class GroupChatPlanController {
return RestResponse.successResult(page.getResult()); return RestResponse.successResult(page.getResult());
} }
/**
* 刷新群发结果
* @param wxEnterpriseId
* @param enterpriseId
* @param ownerLogId
* @return
*/
@RequestMapping("reflush-send-msg") @RequestMapping("reflush-send-msg")
public RestResponse<Object> reflush(String wxEnterpriseId, String enterpriseId, Long ownerLogId) { public RestResponse<GroupChatPlanOwnerLogDTO> reflush(String wxEnterpriseId, String enterpriseId, Long ownerLogId) {
this.groupChatPlanApiService.reflushSendInfo(ownerLogId); this.groupChatPlanApiService.reflushSendInfo(ownerLogId);
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId); ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId);
return RestResponse.successResult(resp.getResult()); return RestResponse.successResult(resp.getResult());
} }
/**
* 详情
* @param planId
* @param wxEnterpriseId
* @param ownerLogId
* @return
*/
@RequestMapping("detail") @RequestMapping("detail")
public RestResponse<Object> detail(Long planId, String wxEnterpriseId, Long ownerLogId) { public RestResponse<Map<String, Object>> detail(Long planId, String wxEnterpriseId, Long ownerLogId) {
if (null == planId) { if (null == planId) {
return RestResponse.failure("1", "planid为空"); return RestResponse.failure("1", "planid为空");
} }
...@@ -122,6 +194,9 @@ public class GroupChatPlanController { ...@@ -122,6 +194,9 @@ public class GroupChatPlanController {
MaterialDTO materialDTO = new MaterialDTO(); MaterialDTO materialDTO = new MaterialDTO();
materialDTO.setMaterialType(x.getType()); materialDTO.setMaterialType(x.getType());
materialDTO.setMaterialContent(x.getContent()); materialDTO.setMaterialContent(x.getContent());
if(materialDTO.getMaterialType() == 4) {
materialDTO.setLink(x.getContent());
}
materialDTO.setImgUrl(x.getImg()); materialDTO.setImgUrl(x.getImg());
return materialDTO; return materialDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -134,17 +209,36 @@ public class GroupChatPlanController { ...@@ -134,17 +209,36 @@ public class GroupChatPlanController {
return RestResponse.failure("1", "记录不存在"); return RestResponse.failure("1", "记录不存在");
} }
Map<String, Object> ownerInfo = new HashMap<>(); Map<String, Object> ownerInfo = new HashMap<>();
ownerInfo.put("clerkId",owner.getClerkId());
ownerInfo.put("clerkName", owner.getClerkName()); ownerInfo.put("clerkName", owner.getClerkName());
ownerInfo.put("ownerLogId", owner.getOwnerLogId()); ownerInfo.put("ownerLogId", owner.getOwnerLogId());
ownerInfo.put("sendStatus", owner.getSendStatus()); ownerInfo.put("sendStatus", owner.getSendStatus());
if(owner.getSendStatus() > 0) {
CommonMQDTO mq = new CommonMQDTO() ;
mq.setType(5) ;
Map<String,String> map = new HashMap<>() ;
map.put("ownerLogId",ownerLogId+"") ;
mq.setParams(map);
this.haobanCommonMQApiService.putCommonDelayMessage(mq, 0);
}
ownerInfo.put("dataGetTime",owner.getDataGetTime());
retMap.put("ownerInfo", ownerInfo); retMap.put("ownerInfo", ownerInfo);
} }
return RestResponse.successResult(retMap); return RestResponse.successResult(retMap);
} }
/**
* 群主-执行的群列表-分页
* @param planId
* @param wxEnterpriseId
* @param enterpriseId
* @param ownLogId
* @param basePageInfo
* @return
*/
@RequestMapping("owner-do-list") @RequestMapping("owner-do-list")
public RestResponse<Object> ownerDoList(Long planId, String wxEnterpriseId, String enterpriseId, Long ownLogId, public RestResponse<Page<GroupChatPlanLogDTO>> ownerDoList(Long planId, String wxEnterpriseId, String enterpriseId, Long ownLogId,
BasePageInfo basePageInfo) { BasePageInfo basePageInfo,Integer sendStatus) {
if (null == planId || null == ownLogId) { if (null == planId || null == ownLogId) {
return RestResponse.failure("1", "参数未传"); return RestResponse.failure("1", "参数未传");
} }
...@@ -153,9 +247,28 @@ public class GroupChatPlanController { ...@@ -153,9 +247,28 @@ public class GroupChatPlanController {
qdto.setEnterpriseId(enterpriseId); qdto.setEnterpriseId(enterpriseId);
qdto.setPlanId(planId); qdto.setPlanId(planId);
qdto.setOwnLogId(ownLogId); qdto.setOwnLogId(ownLogId);
if(null == sendStatus) {
sendStatus = 2 ;
}
qdto.setSendStatus(sendStatus);
ServiceResponse<Page<GroupChatPlanLogDTO>> page = this.groupChatPlanApiService.listLogPage(planId, qdto, ServiceResponse<Page<GroupChatPlanLogDTO>> page = this.groupChatPlanApiService.listLogPage(planId, qdto,
basePageInfo); basePageInfo);
return RestResponse.successResult(page.getResult()); return RestResponse.successResult(page.getResult());
} }
/**
* 获取社群群发任务数
* @param wxEnterpriseId
* @param enterpriseId
* @param storeId
* @param clerkId
* @return
*/
@RequestMapping("get-task-num")
@ResponseBody
public RestResponse<Integer> getTaskNum(String wxEnterpriseId , String enterpriseId , String storeId , String clerkId , String staffId) {
return RestResponse.successResult(this.groupChatPlanApiService.getTaskNum(wxEnterpriseId,enterpriseId,storeId,clerkId,staffId)) ;
}
} }
package com.gic.haoban.manage.web.qo;
import com.gic.api.base.commons.BasePageInfo;
import java.io.Serializable;
public class GroupChatQO extends BasePageInfo implements Serializable {
/**
* 群名
*/
private String chatName ;
private String enterpriseId ;
private String wxEnterpriseId ;
private String staffId ;
private Long ownLogId ;
public Long getOwnLogId() {
return ownLogId;
}
public void setOwnLogId(Long ownLogId) {
this.ownLogId = ownLogId;
}
public String getChatName() {
return chatName;
}
public void setChatName(String chatName) {
this.chatName = chatName;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasConversionClerkQO extends CanvasConversionDataQO implements Serializable {
private Integer pageNum;
private Integer pageSize;
/**
* 1 升序 2降序
*/
private Integer orderByType;
/**
* 1金额/积分 2人数
*/
private String orderByFields;
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasConversionDataQO implements Serializable {
private Long canvasId;
private String enterpriseId;
/**
* 1:积分消耗 2:转化
*/
private Integer sourceType;
/**
* mass:群发任务 tel_task:话务任务
*/
private String subType;
private String storeId;
private String clerkId;
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasConversionMemberQO extends CanvasConversionDataQO implements Serializable {
private Integer pageNum;
private Integer pageSize;
/**
* 1已转化2为转化 默认已转化
*/
private Integer isConvs;
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.gic.commons.web.qo.PageQo;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasStoreTaskQO extends PageQo implements Serializable {
/**
* 1 升序 2降序
*/
private Integer orderByType;
/**
* 1完成任务数2待完成任务数3逾期任务数4逾期失效任务数5总任务数6任务完成率
*/
private String orderByFields;
/**
* 开始时间 yyyy-MM-dd
*/
private String startDate;
private String endDate;
/**
* 导购筛选
*/
private String clerkQuery;
/**
* 画布活动筛选
*/
private String canvasQuery;
/**
* 活动ID
*/
private String canvasId;
/**
* 门店ID
*/
private String storeId;
/**
* 不传则查询整个门店
*/
private String clerkId;
/**
* 2导购3活动 4:门店合计
*/
private Integer dataType;
/**
* 企业ID.
*/
private String enterpriseId;
public Integer getDataType() {
return dataType == null ? 2 : dataType;
}
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.gic.commons.web.qo.PageQo;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasTaskQO extends PageQo implements Serializable {
/**
* 1 升序 2降序
*/
private Integer orderByType;
/**
* 1完成任务数2待完成任务数3逾期任务数4逾期失效任务数5总任务数6任务完成率
*/
private String orderByFields;
/**
* tel_task 话务任务 mass 群发任务
*/
private String subType;
/**
* 开始时间 yyyy-MM-dd
*/
private String startDate;
private String endDate;
/**
* 门店筛选
*/
private String storeQuery;
/**
* 画布活动筛选
*/
private String canvasQuery;
/**
* 门店维度跳转到活动维度时候,传递
*/
private String storeId;
/**
* 1门店 3活动
*/
private Integer dataType;
/**
* 企业ID.
*/
private String enterpriseId;
/**
* 微信企业
*/
private String wxEnterpriseId;
/**
* 区经,用于查询管辖门店权限
*/
private String clerkId;
public Integer getDataType() {
return dataType == null ? 1 : dataType;
}
}
package com.gic.haoban.manage.web.qo.canvas;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.gic.commons.web.qo.PageQo;
import lombok.Data;
import java.io.Serializable;
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class CanvasToDoCompleteMemberQO extends PageQo implements Serializable {
private Long canvasId;
private String enterpriseId;
/**
* mass:群发任务 tel_task:话务任务
*/
private String subType;
private String storeId;
private String clerkId;
}
...@@ -5,6 +5,8 @@ import java.io.Serializable; ...@@ -5,6 +5,8 @@ import java.io.Serializable;
public class CombinedQO implements Serializable { public class CombinedQO implements Serializable {
private static final long serialVersionUID = -28454620622119889L; private static final long serialVersionUID = -28454620622119889L;
private String enterpriseId;
private String wxEnterpriseId; private String wxEnterpriseId;
/** /**
* 主图url * 主图url
...@@ -40,6 +42,14 @@ public class CombinedQO implements Serializable { ...@@ -40,6 +42,14 @@ public class CombinedQO implements Serializable {
*/ */
private String businessId; private String businessId;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getWxEnterpriseId() { public String getWxEnterpriseId() {
return wxEnterpriseId; return wxEnterpriseId;
} }
......
package com.gic.haoban.manage.web.qo.content; package com.gic.haoban.manage.web.qo.content;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* @Author MUSI * @Author MUSI
...@@ -57,6 +58,37 @@ public class ContentMaterialShareQO implements Serializable { ...@@ -57,6 +58,37 @@ public class ContentMaterialShareQO implements Serializable {
*/ */
private Integer isPreview; private Integer isPreview;
//活动id
private Long canvasId;
// 节点id
private Long nodeId;
// 营销时间(任务创建时间)
private String marketingTime ;
public Long getCanvasId() {
return canvasId;
}
public void setCanvasId(Long canvasId) {
this.canvasId = canvasId;
}
public Long getNodeId() {
return nodeId;
}
public void setNodeId(Long nodeId) {
this.nodeId = nodeId;
}
public String getMarketingTime() {
return marketingTime;
}
public void setMarketingTime(String marketingTime) {
this.marketingTime = marketingTime;
}
public String getEnterpriseId() { public String getEnterpriseId() {
return enterpriseId; return enterpriseId;
} }
......
package com.gic.haoban.manage.web.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService;
import com.gic.search.engine.api.constant.OperateEnum;
import com.gic.search.engine.api.dto.ESResponseQueryBatch;
import com.gic.search.engine.api.dto.dynamic.DynamicSearchDTO;
import com.gic.search.engine.api.filter.NewNodeAddUtil;
import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.stream.Collectors;
@Component
@Slf4j
public class EsMemberInfoUtils {
@Autowired
private ESDataDynamicOperationApiService esDataDynamicOperationApiService;
@Autowired
private StoreService storeService;
@Autowired
private ClerkService clerkService;
public void setMemberInfo(String enterpriseId, List list, Set<String> fieldName) {
if (CollectionUtils.isNotEmpty(list)) {
List<String> memberIdList = new ArrayList<>();
for (Object o : list) {
String memberId = ReflectUtils.getDateFieldValue(o, "memberId");
if (org.apache.commons.lang.StringUtils.isNotBlank(memberId) && !"-1".equals(memberId)) {
memberIdList.add(memberId);
}
}
if (CollectionUtils.isNotEmpty(memberIdList)) {
List<JSONObject> memberJson = queryDataBatch(enterpriseId, memberIdList, "memberId,name,mainStoreId,phoneNumber,name,nickName,mainClerkId,photoUrl");
if (CollectionUtils.isNotEmpty(memberJson)) {
Map<String, JSONObject> map = memberJson.stream()
.collect(Collectors.toMap(e -> e.getString("memberId"), e -> e));
Map<String, StoreDTO> storeMap = new HashMap<>();
Map<String, ClerkDTO> clerkMap = new HashMap<>();
boolean isQueryStore = fieldName.contains("storeName") || fieldName.contains("storeCode");
if (isQueryStore) {
List<String> mainStoreIdList = memberJson.stream().
filter(e -> org.apache.commons.lang3.StringUtils.isNotBlank(e.getString("mainStoreId")))
.map(e -> e.getString("mainStoreId")).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(mainStoreIdList)) {
List<StoreDTO> mainStoreList = storeService.queryStore(mainStoreIdList);
if (CollectionUtils.isNotEmpty(mainStoreList)) {
storeMap = mainStoreList.stream().collect(Collectors.toMap(e -> e.getStoreId(), e -> e));
}
}
}
boolean isQueryClerk = fieldName.contains("clerkCode") || fieldName.contains("clerkName");
if (isQueryClerk) {
Set<String> mainClerkIdList = memberJson.stream().
filter(e -> org.apache.commons.lang3.StringUtils.isNotBlank(e.getString("mainClerkId")))
.map(e -> e.getString("mainClerkId")).collect(Collectors.toSet());
if (CollectionUtils.isNotEmpty(mainClerkIdList)) {
List<ClerkDTO> mainClerkList = clerkService.getClerkByClerkIds(mainClerkIdList);
if (CollectionUtils.isNotEmpty(mainClerkList)) {
clerkMap = mainClerkList.stream().collect(Collectors.toMap(e -> e.getClerkId(), e -> e));
}
}
}
for (Object vo : list) {
String memberId = ReflectUtils.getDateFieldValue(vo, "memberId");
JSONObject jsonValue = map.get(memberId);
if (jsonValue != null) {
if (fieldName.contains("memberPhone")) {
ReflectUtils.setDateFieldValue(vo, "memberPhone", jsonValue.getString("phoneNumber"));
}
if (fieldName.contains("memberName")) {
ReflectUtils.setDateFieldValue(vo, "memberName", jsonValue.getString("name"));
}
if (fieldName.contains("memberNick")) {
ReflectUtils.setDateFieldValue(vo, "memberNick", jsonValue.getString("nickName"));
}
if (fieldName.contains("photoUrl")) {
ReflectUtils.setDateFieldValue(vo, "photoUrl", jsonValue.getString("photoUrl"));
}
if (fieldName.contains("memberScene")) {
ReflectUtils.setDateFieldValue(vo, "memberScene", 3);
}
if (isQueryStore) {
String mainStoreId = jsonValue.getString("mainStoreId");
// ReflectUtils.setDateFieldValue(vo, "storeId", mainStoreId);
if (org.apache.commons.lang.StringUtils.isNotBlank(mainStoreId)) {
StoreDTO storeValue = storeMap.get(mainStoreId);
if (storeValue != null) {
ReflectUtils.setDateFieldValue(vo, "storeCode", storeValue.getStoreCode());
ReflectUtils.setDateFieldValue(vo, "storeName", storeValue.getStoreName());
if (fieldName.contains("parentStoreGroupName")) {
ReflectUtils.setDateFieldValue(vo, "parentStoreGroupName", storeValue.getStoreGroupName());
}
}
}
}
if (isQueryClerk) {
String mainClerkId = jsonValue.getString("mainClerkId");
// ReflectUtils.setDateFieldValue(vo, "clerkId", mainClerkId);
if (org.apache.commons.lang.StringUtils.isNotBlank(mainClerkId)) {
ClerkDTO clerkDTO = clerkMap.get(mainClerkId);
if (clerkDTO != null) {
ReflectUtils.setDateFieldValue(vo, "clerkCode", clerkDTO.getClerkCode());
ReflectUtils.setDateFieldValue(vo, "clerkName", clerkDTO.getClerkName());
}
}
}
}
}
}
}
}
}
public List<JSONObject> queryDataBatch(String enterpriseId, List<String> memberIdList, String returnFields) {
if (CollectionUtils.isEmpty(memberIdList)) {
log.warn("memberIdList 为空", enterpriseId);
return null;
}
List<JSONObject> jsonObjList = new ArrayList<JSONObject>();
try {
JSONObject searchJson = new JSONObject();
String[] memberIdArr = memberIdList.toArray(new String[memberIdList.size()]);
String memberIds = StringUtils.join(memberIdArr, " ");
searchJson = NewNodeAddUtil.addNewNodeForAnd("memberId", OperateEnum.OPERATE_CONTAIN.getValue(), memberIds,
searchJson);
DynamicSearchDTO search = new DynamicSearchDTO();
log.info("==============搜索条件==============: {}", JSON.toJSONString(searchJson));
search.setRecordNumber(memberIdList.size() + 1);
search.setSearchJson(searchJson);
search.setEnterpriseId(enterpriseId);
search.setColumnCategoryCode("member");
search.setReturnFileds(returnFields);
search.setSortJson(NewNodeAddUtil.createSortNode("memberId", NewNodeAddUtil.SORT_RULE_ASC));
ESResponseQueryBatch esRes = esDataDynamicOperationApiService.queryDataBatch(search, false, null);
jsonObjList = esRes.getRes();
} catch (Exception e) {
log.warn("从搜索引擎搜索会员数据异常", memberIdList, enterpriseId, e);
}
return jsonObjList;
}
}
package com.gic.haoban.manage.web.utils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MemberInfoQO implements Serializable {
/**
* 是否设置服务门店名称和code
*/
private boolean setStore;
/**
* 是否设置专属导购名称和code
*/
private boolean setClerk;
/**
* 是否设置服务门店上级分组名称
*/
private boolean setParentStoreGroup;
/**
* 是否设置会员类型。
* 1:非会员 2:会员已注销 3:正常
*/
private boolean setMemberScene;
}
package com.gic.haoban.manage.web.utils;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Method;
@Slf4j
public class ReflectUtils {
public static String getDateFieldValue(Object obj, String fieldName) {
try {
Method method = obj.getClass().getMethod("get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1));
return (String) method.invoke(obj);
} catch (Exception e) {
log.warn("反射get值错误:{}", e.getMessage(), e);
return null;
}
}
public static void setDateFieldValue(Object obj, String fieldName, String dataValue) {
try {
Method method = obj.getClass().getMethod("set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1), String.class);
method.invoke(obj, dataValue);
} catch (Exception e) {
log.warn("反射set值错误:{}", e.getMessage(), e);
}
}
public static void setDateFieldValue(Object obj, String fieldName, Integer dataValue) {
try {
Method method = obj.getClass().getMethod("set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1), Integer.class);
method.invoke(obj, dataValue);
} catch (Exception e) {
log.warn("反射set值错误:{}", e.getMessage(), e);
}
}
public static <T> T createInstance(Class<T> clazz) {
try {
return clazz.newInstance();
} catch (InstantiationException e) {
return null;
} catch (IllegalAccessException e) {
return null;
}
}
}
package com.gic.haoban.manage.web.vo.canvas;
import lombok.Data;
import java.io.Serializable;
@Data
public class CanvasConversionDataVO implements Serializable {
/**
* 消耗积分数
*/
private Integer convsCsmeIntglCnt;
/**
* 积分消耗人数
*/
private Integer csmeIntglMbrNum;
/**
* 转化人数
*/
private Integer convsMbrNum;
/**
* 转化金额
*/
private Double convsAmt;
}
package com.gic.haoban.manage.web.vo.canvas;
import lombok.Data;
import java.io.Serializable;
@Data
public class CanvasConversionMemberVO extends CanvasConversionDataVO implements Serializable {
/**
* 会员id
*/
private String mbrId;
private String memberId;
private String clerkId;
private String clerkCode;
private String clerkName;
/**
* 会员名称
*/
private String memberName;
/**
* 会员昵称
*/
private String memberNick;
/**
* 头像
*/
private String photoUrl;
public String getMemberId() {
return mbrId;
}
}
package com.gic.haoban.manage.web.vo.canvas;
import lombok.Data;
import java.io.Serializable;
@Data
public class CanvasStoreTaskVO implements Serializable {
/**
* 完成任务数
*/
private Integer complTaskCnt;
/**
* 待完成任务数
*/
private Integer untreatedTaskCnt;
/**
* 逾期中任务数
*/
private Integer overdueTaskCnt;
/**
* 逾期失效任务数
*/
private Integer overdueInvalidTaskCnt;
/**
* 总任务数
*/
private Integer assignedTaskCnt;
/**
* 任务完成率
*/
private Double taskComplRate;
/**
* 放弃任务数
*/
private Integer abandonTaskCnt;
/**
* 导购名称
*/
private String clerkName;
private String clerkId;
/**
* 导购头像
*/
private String clerkImageUrl;
/**
* 画布活动名称
*/
private String canvasName;
/**
* 活动ID
*/
private String canvasId;
/**
* 排序值
*/
private Integer rn;
}
package com.gic.haoban.manage.web.vo.canvas;
import lombok.Data;
import java.io.Serializable;
@Data
public class CanvasTaskVO implements Serializable {
/**
* 完成任务数
*/
private Integer complTaskCnt;
/**
* 待完成任务数
*/
private Integer untreatedTaskCnt;
/**
* 逾期中任务数
*/
private Integer overdueTaskCnt;
/**
* 逾期失效任务数
*/
private Integer overdueInvalidTaskCnt;
/**
* 总任务数
*/
private Integer assignedTaskCnt;
/**
* 任务完成率
*/
private Double taskComplRate;
/**
*
*/
private String storeId;
/**
* 放弃任务数
*/
private Integer abandonTaskCnt;
/**
* 门店名称
*/
private String storeName;
/**
* 画布活动名称
*/
private String canvasName;
/**
* 活动ID
*/
private String canvasId;
}
package com.gic.haoban.manage.web.vo.canvas;
import lombok.Data;
import java.io.Serializable;
@Data
public class CanvasToDoCompleteMemberVO implements Serializable {
private String mbrId;
private String memberId;
private String clerkId;
private String clerkCode;
private String clerkName;
/**
* 会员名称
*/
private String memberName;
/**
* 会员昵称
*/
private String memberNick;
/**
* 头像
*/
private String photoUrl;
/**
* 逾期天数
*/
private Integer invalidDays;
public String getMemberId() {
return mbrId;
}
}
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<dubbo:protocol name="dubbo" port="30010"/> <dubbo:protocol name="dubbo" port="30010"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.OpenStaffApiService" id="openStaffApiService" /> <dubbo:reference interface="com.gic.haoban.manage.api.service.OpenStaffApiService" id="openStaffApiService" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatApiService" id="groupChatApiService" />
<dubbo:reference interface="com.gic.enterprise.api.service.CustomPageNewService" id="customPageNewService" /> <dubbo:reference interface="com.gic.enterprise.api.service.CustomPageNewService" id="customPageNewService" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" id="groupChatPlanApiService" /> <dubbo:reference interface="com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService" id="groupChatPlanApiService" />
<dubbo:reference interface="com.gic.member.api.service.GradeService" id="gradeService" /> <dubbo:reference interface="com.gic.member.api.service.GradeService" id="gradeService" />
...@@ -175,6 +175,7 @@ ...@@ -175,6 +175,7 @@
<dubbo:reference id="storeRankApiService" interface="com.gic.enterprise.api.service.rank.StoreRankApiService" timeout="100000" retries="0" check="false" /> <dubbo:reference id="storeRankApiService" interface="com.gic.enterprise.api.service.rank.StoreRankApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference id="enterpriseWxaLinkService" interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" timeout="100000" retries="0" check="false" /> <dubbo:reference id="enterpriseWxaLinkService" interface="com.gic.enterprise.api.service.EnterpriseWxaLinkService" timeout="100000" retries="0" check="false" />
<dubbo:reference id="clerkTaskApiService" interface="com.gic.marketing.pro.api.service.clerktask.ClerkTaskApiService" timeout="100000" retries="0" check="false" /> <dubbo:reference id="clerkTaskApiService" interface="com.gic.marketing.pro.api.service.clerktask.ClerkTaskApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.HaobanCommonMQApiService" id="haobanCommonMQApiService" timeout="10000"/>
...@@ -186,4 +187,7 @@ ...@@ -186,4 +187,7 @@
<dubbo:reference id="gatheringActivityWxApiService" interface="com.gic.marketing.pro.api.service.activity.GatheringActivityWxApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="gatheringActivityWxApiService" interface="com.gic.marketing.pro.api.service.activity.GatheringActivityWxApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="eSDataDynamicOperationApiService"
interface="com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService"
timeout="10000"/>
</beans> </beans>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment