Commit bea384e6 by 徐高华

Merge branch 'feature-content2' of…

Merge branch 'feature-content2' of http://git.gicdev.com/haoban3.0/haoban-manage3.0.git into feature-content2
parents b8dfa68a cf3d4456
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
/**
* Created by wangzubo on 2023/3/20.
*/
public class ChatContentDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 封面url
*/
private String img;
/**
* 视频url
*/
private String content;
/**
* 关联id 企微素材id或内容素材id
* 兼容原有不是驼峰
*/
private String relation_id;
/**
* 素材类型 1文本, 2图片, 4视频
*/
private Integer type;
/**
* 内容素材url是否已经重新上传
*/
private Integer urlChangeFlag;
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getRelation_id() {
return relation_id;
}
public void setRelation_id(String relation_id) {
this.relation_id = relation_id;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public Integer getUrlChangeFlag() {
return urlChangeFlag;
}
public void setUrlChangeFlag(Integer urlChangeFlag) {
this.urlChangeFlag = urlChangeFlag;
}
}
...@@ -53,6 +53,11 @@ public class GroupChatPlanDTO implements Serializable { ...@@ -53,6 +53,11 @@ public class GroupChatPlanDTO implements Serializable {
// 1代发送 2已发送 // 1代发送 2已发送
private Integer sendFlag; private Integer sendFlag;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public String getDelStaffIdList() { public String getDelStaffIdList() {
return delStaffIdList; return delStaffIdList;
} }
...@@ -252,4 +257,12 @@ public class GroupChatPlanDTO implements Serializable { ...@@ -252,4 +257,12 @@ public class GroupChatPlanDTO implements Serializable {
public Integer getTotalChatCount() { public Integer getTotalChatCount() {
return totalChatCount; return totalChatCount;
} }
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
} }
\ No newline at end of file
package com.gic.haoban.manage.api.dto.content.log;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/3/18 8:23 PM
* @Description
* @Version
**/
public class ClerkShareMaterialLogDTO implements Serializable {
private static final long serialVersionUID = 57985108148863697L;
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 成员id
*/
private String staffId;
/**
* 素材分享类型
* @see com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType
*/
private Integer shareType;
/**
* 业务id
*/
private String bizId;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Integer getShareType() {
return shareType;
}
public void setShareType(Integer shareType) {
this.shareType = shareType;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
package com.gic.haoban.manage.api.dto.content.log;
import com.tencentcloudapi.vpc.v20170312.models.LocalGateway;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/3/20 4:27 PM
* @Description
* @Version
**/
public class TriggerCustomerDetailLogDTO implements Serializable {
private static final long serialVersionUID = -5149812263567137819L;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 类型
*
* @see com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType
*/
private Integer shareType;
/**
* 分享到朋友圈
*/
private SharePYQ sharePYQ;
public static class SharePYQ implements Serializable {
private static final long serialVersionUID = 273212828851672738L;
/**
* 导购分享日志id
*/
private Long shareLogId;
public Long getShareLogId() {
return shareLogId;
}
public void setShareLogId(Long shareLogId) {
this.shareLogId = shareLogId;
}
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getShareType() {
return shareType;
}
public void setShareType(Integer shareType) {
this.shareType = shareType;
}
public SharePYQ getSharePYQ() {
return sharePYQ;
}
public void setSharePYQ(SharePYQ sharePYQ) {
this.sharePYQ = sharePYQ;
}
}
package com.gic.haoban.manage.api.dto.content;
\ No newline at end of file
...@@ -58,8 +58,7 @@ public enum NoticeMessageTypeEnum { ...@@ -58,8 +58,7 @@ public enum NoticeMessageTypeEnum {
CUSTOMER_APPLY_ORDER_REFUND(4005, "客户申请退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_apply_order_refund", "/pages/route/index?pageType=", "hbapp_customer_order_detail"), CUSTOMER_APPLY_ORDER_REFUND(4005, "客户申请退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_apply_order_refund", "/pages/route/index?pageType=", "hbapp_customer_order_detail"),
CUSTOMER_SUCCESS_ORDER_REFUND(4006, "客户成功退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_success_order_refund", "/pages/route/index?pageType=", "hbapp_user_bill_detail"), CUSTOMER_SUCCESS_ORDER_REFUND(4006, "客户成功退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_success_order_refund", "/pages/route/index?pageType=", "hbapp_user_bill_detail"),
// todo pageType MATERIAL_NEW_NOTIFY(6001, "素材上新通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_new_notify", "/pages/route/index?pageType=", "hbapp_material_center"),
MATERIAL_NEW_NOTIFY(6001, "素材上新通知", NoticeMessageCategoryTypeEnum.MATERIAL.getType(), "material_new_notify", "/pages/route/index?pageType=", "hbapp_customer_list"),
; ;
/** /**
......
package com.gic.haoban.manage.api.enums.content;
/**
* @Author MUSI
* @Date 2023/3/18 8:26 PM
* @Description
* @Version
* 导购分享素材类型枚举
**/
public enum ClerkShareMaterialType {
SHARE_PYQ(1, "群发到朋友圈"),
SHARE_CUSTOMER(2, "群发给客户"),
SHARE_GROUP(3, "群发到群")
;
ClerkShareMaterialType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
private Integer code;
private String desc;
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package com.gic.haoban.manage.api.enums.content;
/**
* @Author MUSI
* @Date 2023/3/18 8:26 PM
* @Description
* @Version
* 导购分享素材类型枚举
**/
public enum ShareBizType {
MATERIAL(1, "素材");
ShareBizType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
private Integer code;
private String desc;
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package com.gic.haoban.manage.api.enums.content;
/**
* @Author MUSI
* @Date 2023/3/19 10:06 PM
* @Description
* @Version
* 客户触达渠道类型
**/
public enum TriggerCustomerChannelType {
PYQ(1, "朋友圈"),
CUSTOMER_GROUP(2, "客户群"),
DIALOG_BOX(3, "对话框/群发给客户"),
CONTENT_COPY(4, "复制文案"),
CONTENT_DOWNLOAD(5, "下载素材")
;
TriggerCustomerChannelType(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
private Integer code;
private String desc;
public Integer getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
package com.gic.haoban.manage.api.service.content;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO;
/**
* @Author MUSI
* @Date 2023/3/18 8:20 PM
* @Description
* @Version
*
* 素材分享日志
**/
public interface MaterialShareLogApiService {
/**
* 保存导购分享记录
* @param clerkShareMaterialLogDTO
* @return
*/
ServiceResponse<Long> saveClerkShareMaterialLog(ClerkShareMaterialLogDTO clerkShareMaterialLogDTO);
}
package com.gic.haoban.manage.api.service.content.task;
import com.gic.api.base.commons.ServiceResponse;
/**
* @Author MUSI
* @Date 2023/3/19 8:31 PM
* @Description
* @Version
* 企微群发消息处理任务
**/
public interface QywxGroupMsgTaskApiService {
/**
* 查询企微群发消息结果
* 10 分钟一次
* @param params
* @return
*/
ServiceResponse<Void> groupMsgTaskJob(String params);
/**
* 处理客户触达日志明细
* @param params
* @return
*/
ServiceResponse<Void> handlerTriggerCustomerDetailLog(String params);
}
...@@ -389,4 +389,9 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -389,4 +389,9 @@ public interface TabHaobanExternalClerkRelatedMapper {
TabHaobanExternalClerkRelated getMemberForExternalId(@Param("wxEnterpriseId") String wxEnterpriseId, TabHaobanExternalClerkRelated getMemberForExternalId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("externalUserId") String externalUserId); @Param("externalUserId") String externalUserId);
/**
* 查询成员的好友列表
*/
List<String> queryExternalUserIdWithStaffId(@Param("staffId") String staffId);
} }
\ No newline at end of file
...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.chat; ...@@ -2,6 +2,7 @@ package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List; import java.util.List;
import com.gic.haoban.manage.service.pojo.qo.chat.GroupChatUserQO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO;
...@@ -55,4 +56,11 @@ public interface GroupChatUserMapper { ...@@ -55,4 +56,11 @@ public interface GroupChatUserMapper {
@Param("enterpriseId") String enterpriseId, @Param("externalUserid") String externalUserid, @Param("enterpriseId") String enterpriseId, @Param("externalUserid") String externalUserid,
@Param("memberId") String memberId); @Param("memberId") String memberId);
/**
* 查询群组成员列表
* @param groupChatUserQO
* @return
*/
List<TabGroupChatUser> queryGroupChatUserList(GroupChatUserQO groupChatUserQO);
} }
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper.content;
import com.gic.haoban.manage.service.entity.content.TabHaobanClerkShareLog;
import com.gic.haoban.manage.service.pojo.qo.content.ClerkShareLogQO;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* 导购分享记录(TabHaobanClerkShareLog)表数据库访问层
*
* @author makejava
* @since 2023-03-18 20:54:15
*/
public interface TabHaobanClerkShareLogMapper {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabHaobanClerkShareLog queryById(Long id);
/**
* 条件查询
* @param clerkShareLogQO
* @return
*/
List<TabHaobanClerkShareLog> queryWithCondition(ClerkShareLogQO clerkShareLogQO);
/**
* 统计总行数
*
* @param tabHaobanClerkShareLog 查询条件
* @return 总行数
*/
long count(TabHaobanClerkShareLog tabHaobanClerkShareLog);
/**
* 新增数据
*
* @param tabHaobanClerkShareLog 实例对象
* @return 影响行数
*/
int insert(TabHaobanClerkShareLog tabHaobanClerkShareLog);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanClerkShareLog> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<TabHaobanClerkShareLog> entities);
/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanClerkShareLog> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<TabHaobanClerkShareLog> entities);
/**
* 修改数据
*
* @param tabHaobanClerkShareLog 实例对象
* @return 影响行数
*/
int update(TabHaobanClerkShareLog tabHaobanClerkShareLog);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Long id);
/**
* 标记分享日志为已处理
* @param enterpriseId
* @param ids
* @return
*/
int markShareLogWithDone(@Param("enterpriseId") String enterpriseId, @Param("ids") List<Long> ids);
}
package com.gic.haoban.manage.service.dao.mapper.content;
import com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail;
import com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* (TabHaobanTriggerCustomerDetail)表数据库访问层
*
* @author makejava
* @since 2023-03-19 21:35:22
*/
public interface TabHaobanTriggerCustomerDetailMapper {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabHaobanTriggerCustomerDetail queryById(Long id);
/**
*
* @param triggerCustomerDetailQO
* @return
*/
List<TabHaobanTriggerCustomerDetail> queryWithCondition(TriggerCustomerDetailQO triggerCustomerDetailQO);
/**
* 统计总行数
*
* @param tabHaobanTriggerCustomerDetail 查询条件
* @return 总行数
*/
long count(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail);
/**
* 新增数据
*
* @param tabHaobanTriggerCustomerDetail 实例对象
* @return 影响行数
*/
int insert(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail);
/**
* 批量新增数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanTriggerCustomerDetail> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<TabHaobanTriggerCustomerDetail> entities);
/**
* 批量新增或按主键更新数据(MyBatis原生foreach方法)
*
* @param entities List<TabHaobanTriggerCustomerDetail> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<TabHaobanTriggerCustomerDetail> entities);
/**
* 修改数据
*
* @param tabHaobanTriggerCustomerDetail 实例对象
* @return 影响行数
*/
int update(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Long id);
}
...@@ -48,6 +48,10 @@ public class TabGroupChatPlan implements Serializable { ...@@ -48,6 +48,10 @@ public class TabGroupChatPlan implements Serializable {
private String enterpriseId; private String enterpriseId;
// 1代发送 2已发送 // 1代发送 2已发送
private Integer sendFlag; private Integer sendFlag;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public Integer getSendFlag() { public Integer getSendFlag() {
return sendFlag; return sendFlag;
...@@ -232,4 +236,12 @@ public class TabGroupChatPlan implements Serializable { ...@@ -232,4 +236,12 @@ public class TabGroupChatPlan implements Serializable {
public void setFailChatCount(Integer failChatCount) { public void setFailChatCount(Integer failChatCount) {
this.failChatCount = failChatCount; this.failChatCount = failChatCount;
} }
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
} }
\ No newline at end of file
package com.gic.haoban.manage.service.entity.content;
import java.util.Date;
import java.io.Serializable;
/**
* 导购分享记录(TabHaobanClerkShareLog)实体类
*
* @author makejava
* @since 2023-03-18 20:54:23
*/
public class TabHaobanClerkShareLog implements Serializable {
private static final long serialVersionUID = -18857713225396709L;
private Long id;
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 成员id
*/
private String staffId;
/**
* 分享类型 1分享朋友圈; 2 群发给客户; 3 群发到群
*/
private Integer shareType;
/**
* 业务id
*/
private String bizId;
/**
* 业务类型 1素材
*/
private Integer bizType;
/**
* 删除标识 1 删除(已处理); 0未处理
*/
private Integer deleteFlag;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Integer getShareType() {
return shareType;
}
public void setShareType(Integer shareType) {
this.shareType = shareType;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
package com.gic.haoban.manage.service.entity.content;
import java.util.Date;
import java.io.Serializable;
/**
* (TabHaobanTriggerCustomerDetail)实体类
*
* @author makejava
* @since 2023-03-19 21:35:22
*/
public class TabHaobanTriggerCustomerDetail implements Serializable {
private static final long serialVersionUID = 775762162443994755L;
private Long id;
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 业务id
*/
private String bizId;
/**
* 业务类型 1素材
*/
private Integer bizType;
/**
* 导购id
*/
private String clerkId;
/**
* 成员id
*/
private String staffId;
/**
* 渠道类型 1朋友圈; 2客户群; 3 对话框; 4 复制文案; 5 下载素材
*/
private Integer channelType;
/**
* 触达客户标识 外部联系人id
*/
private String customerId;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 0正常; 1删除
*/
private Integer deleteFlag;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Integer getChannelType() {
return channelType;
}
public void setChannelType(Integer channelType) {
this.channelType = channelType;
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
...@@ -49,6 +49,10 @@ public class GroupChatPlanBO implements Serializable{ ...@@ -49,6 +49,10 @@ public class GroupChatPlanBO implements Serializable{
private Integer totalChatCount; private Integer totalChatCount;
// 1代发送 2已发送 // 1代发送 2已发送
private Integer sendFlag; private Integer sendFlag;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public Integer getSendFlag() { public Integer getSendFlag() {
return sendFlag; return sendFlag;
...@@ -224,4 +228,12 @@ public class GroupChatPlanBO implements Serializable{ ...@@ -224,4 +228,12 @@ public class GroupChatPlanBO implements Serializable{
public Integer getTotalChatCount(){ public Integer getTotalChatCount(){
return totalChatCount; return totalChatCount;
} }
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
} }
\ No newline at end of file
package com.gic.haoban.manage.service.pojo.bo.chat;
/**
* @Author MUSI
* @Date 2023/3/20 8:00 PM
* @Description
* @Version
**/
public class GroupChatUserBO {
private Long chatUserId;
/**微信企业id*/
private String wxEnterpriseId;
private String enterpriseId;
/**1企业成员2外部联系人3客户*/
private Integer userType;
/**群成员id*/
private String userId;
/**群id*/
private Long groupChatId;
public Long getChatUserId() {
return chatUserId;
}
public void setChatUserId(Long chatUserId) {
this.chatUserId = chatUserId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getUserType() {
return userType;
}
public void setUserType(Integer userType) {
this.userType = userType;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public Long getGroupChatId() {
return groupChatId;
}
public void setGroupChatId(Long groupChatId) {
this.groupChatId = groupChatId;
}
}
package com.gic.haoban.manage.service.pojo.bo.content;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/3/18 9:02 PM
* @Description
* @Version
**/
public class ClerkShareLogBO {
private Long id;
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 成员id
*/
private String staffId;
/**
* 素材分享类型
* @see com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType
*/
private Integer shareType;
/**
* 业务id
*/
private String bizId;
/**
* 业务类型
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
/**
* 创建时间
*/
private Date createTime;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Integer getShareType() {
return shareType;
}
public void setShareType(Integer shareType) {
this.shareType = shareType;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
package com.gic.haoban.manage.service.pojo.bo.content;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/3/19 9:47 PM
* @Description
* @Version
**/
public class GroupMessageInfoBo {
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* 分享日志
*/
private Long shareLogId;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public Long getShareLogId() {
return shareLogId;
}
public void setShareLogId(Long shareLogId) {
this.shareLogId = shareLogId;
}
}
package com.gic.haoban.manage.service.pojo.bo.content;
import java.io.Serializable;
import java.util.Date;
/**
* (TabHaobanTriggerCustomerDetail)实体类
*
* @author makejava
* @since 2023-03-19 21:35:22
*/
public class TriggerCustomerDetailBO implements Serializable {
private static final long serialVersionUID = 775762162443994755L;
private Long id;
/**
* 企业id
*/
private String enterpriseId;
/**
* 微信企业id
*/
private String wxEnterpriseId;
/**
* 业务id
*/
private String bizId;
/**
* 业务类型 1素材
*/
private Integer bizType;
/**
* 导购id
*/
private String clerkId;
/**
* 成员id
*/
private String staffId;
/**
* 渠道类型 1朋友圈; 2客户群; 3 对话框; 4 复制文案; 5 下载素材
*/
private Integer channelType;
/**
* 触达客户标识 外部联系人id
*/
private String customerId;
/**
* 创建时间
*/
private Date createTime;
/**
* 修改时间
*/
private Date updateTime;
/**
* 0正常; 1删除
*/
private Integer deleteFlag;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getBizId() {
return bizId;
}
public void setBizId(String bizId) {
this.bizId = bizId;
}
public Integer getBizType() {
return bizType;
}
public void setBizType(Integer bizType) {
this.bizType = bizType;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public Integer getChannelType() {
return channelType;
}
public void setChannelType(Integer channelType) {
this.channelType = channelType;
}
public String getCustomerId() {
return customerId;
}
public void setCustomerId(String customerId) {
this.customerId = customerId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
}
package com.gic.haoban.manage.service.pojo.qo.chat;
import com.gic.haoban.base.api.common.BasePageInfo;
/**
* @Author MUSI
* @Date 2023/3/20 8:07 PM
* @Description
* @Version
**/
public class GroupChatUserQO extends BasePageInfo {
private String wxEnterpriseId;
private String enterpriseId;
private Long chatId;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Long getChatId() {
return chatId;
}
public void setChatId(Long chatId) {
this.chatId = chatId;
}
}
package com.gic.haoban.manage.service.pojo.qo.content;
import com.gic.haoban.base.api.common.BasePageInfo;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/3/19 11:29 PM
* @Description
* @Version
**/
public class ClerkShareLogQO extends BasePageInfo {
private static final long serialVersionUID = -2919045329617420361L;
/**
* 分享日志id
*/
private Long shareLogId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 导购id
*/
private String clerkId;
/**
* 开始时间
*/
private Date startTime;
/**
* 结束时间
*/
private Date endTime;
/**
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
public String getEnterpriseId() {
return enterpriseId;
}
public ClerkShareLogQO setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
return this;
}
public Date getStartTime() {
return startTime;
}
public ClerkShareLogQO setStartTime(Date startTime) {
this.startTime = startTime;
return this;
}
public Date getEndTime() {
return endTime;
}
public ClerkShareLogQO setEndTime(Date endTime) {
this.endTime = endTime;
return this;
}
public Integer getBizType() {
return bizType;
}
public ClerkShareLogQO setBizType(Integer bizType) {
this.bizType = bizType;
return this;
}
public String getClerkId() {
return clerkId;
}
public ClerkShareLogQO setClerkId(String clerkId) {
this.clerkId = clerkId;
return this;
}
public Long getShareLogId() {
return shareLogId;
}
public ClerkShareLogQO setShareLogId(Long shareLogId) {
this.shareLogId = shareLogId;
return this;
}
}
package com.gic.haoban.manage.service.pojo.qo.content;
import com.gic.api.base.commons.BasePageInfo;
import java.util.Date;
/**
* @Author MUSI
* @Date 2023/3/19 9:54 PM
* @Description
* @Version
**/
public class TriggerCustomerDetailQO extends BasePageInfo {
private static final long serialVersionUID = -4776803428834819261L;
/**
* 企业id
*/
private String enterpriseId;
private Date startTime;
private Date endTime;
/**
* @see com.gic.haoban.manage.api.enums.content.ShareBizType
*/
private Integer bizType;
private String bizId;
private String clerkId;
/**
* @see com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType
*/
private Integer channelType;
public String getEnterpriseId() {
return enterpriseId;
}
public TriggerCustomerDetailQO setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
return this;
}
public Date getStartTime() {
return startTime;
}
public TriggerCustomerDetailQO setStartTime(Date startTime) {
this.startTime = startTime;
return this;
}
public Date getEndTime() {
return endTime;
}
public TriggerCustomerDetailQO setEndTime(Date endTime) {
this.endTime = endTime;
return this;
}
public Integer getBizType() {
return bizType;
}
public TriggerCustomerDetailQO setBizType(Integer bizType) {
this.bizType = bizType;
return this;
}
public String getBizId() {
return bizId;
}
public TriggerCustomerDetailQO setBizId(String bizId) {
this.bizId = bizId;
return this;
}
public String getClerkId() {
return clerkId;
}
public TriggerCustomerDetailQO setClerkId(String clerkId) {
this.clerkId = clerkId;
return this;
}
public Integer getChannelType() {
return channelType;
}
public TriggerCustomerDetailQO setChannelType(Integer channelType) {
this.channelType = channelType;
return this;
}
}
...@@ -83,4 +83,11 @@ public interface ExternalClerkRelatedService { ...@@ -83,4 +83,11 @@ public interface ExternalClerkRelatedService {
void updateClerkInfo(String staffId, String oldClerkId, String newClerkId); void updateClerkInfo(String staffId, String oldClerkId, String newClerkId);
/**
* 外部联系人
* @param staffId
* @return
*/
List<String> queryExternalRelatedWithStaffId(String staffId);
} }
...@@ -37,4 +37,15 @@ public interface QywxSendService { ...@@ -37,4 +37,15 @@ public interface QywxSendService {
* @throws * @throws
*/ */
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList); public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList);
/**
* 群群发
* @param wxEnterpriseId
* @param staffId
* @param imageList
* @param message
* @return
*/
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message);
} }
...@@ -136,5 +136,11 @@ public interface StaffService { ...@@ -136,5 +136,11 @@ public interface StaffService {
Integer getOccupyNum(String wxEnterpriseId); Integer getOccupyNum(String wxEnterpriseId);
/**
* 查询成员列表
* @param wxEnterpriseId
* @param staffIds
* @return
*/
List<TabHaobanStaff> listStaffWithIds(List<String> staffIds);
} }
package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
/**
* (TabHaobanTriggerCustomerDetail)表服务接口
*
* @author makejava
* @since 2023-03-19 21:35:22
*/
public interface TabHaobanTriggerCustomerDetailService {
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabHaobanTriggerCustomerDetail queryById(Long id);
/**
* 分页查询
*
* @param tabHaobanTriggerCustomerDetail 筛选条件
* @param pageRequest 分页对象
* @return 查询结果
*/
Page<TabHaobanTriggerCustomerDetail> queryByPage(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail, PageRequest pageRequest);
/**
* 新增数据
*
* @param tabHaobanTriggerCustomerDetail 实例对象
* @return 实例对象
*/
TabHaobanTriggerCustomerDetail insert(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail);
/**
* 修改数据
*
* @param tabHaobanTriggerCustomerDetail 实例对象
* @return 实例对象
*/
TabHaobanTriggerCustomerDetail update(TabHaobanTriggerCustomerDetail tabHaobanTriggerCustomerDetail);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}
...@@ -4,9 +4,16 @@ import com.gic.api.base.commons.BasePageInfo; ...@@ -4,9 +4,16 @@ import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO; import com.gic.haoban.manage.api.dto.chat.GroupChatUserDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatUserSearchQDTO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatUserBO;
import java.util.List;
public interface GroupChatUserService { public interface GroupChatUserService {
Page<GroupChatUserDTO> listPage(GroupChatUserSearchQDTO qdto, BasePageInfo basePageInfo); Page<GroupChatUserDTO> listPage(GroupChatUserSearchQDTO qdto, BasePageInfo basePageInfo);
/**
* 查询群组内群成员
*/
List<GroupChatUserBO> queryGroupMemberWithChatId(String enterpriseId, String wxEnterpriseId, Long groupChatId);
} }
\ No newline at end of file
package com.gic.haoban.manage.service.service.chat.impl; package com.gic.haoban.manage.service.service.chat.impl;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatUser;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatUserBO;
import com.gic.haoban.manage.service.pojo.qo.chat.GroupChatUserQO;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -34,4 +41,30 @@ public class GroupChatUserServiceImpl implements GroupChatUserService { ...@@ -34,4 +41,30 @@ public class GroupChatUserServiceImpl implements GroupChatUserService {
return retPage; return retPage;
} }
/**
* 查询群组内群成员
*
* @param enterpriseId
* @param wxEnterpriseId
* @param groupChatId
*/
@Override
public List<GroupChatUserBO> queryGroupMemberWithChatId(String enterpriseId, String wxEnterpriseId, Long groupChatId) {
GroupChatUserQO search = new GroupChatUserQO();
search.setChatId(groupChatId);
search.setEnterpriseId(enterpriseId);
search.setWxEnterpriseId(wxEnterpriseId);
List<TabGroupChatUser> tabGroupChatUsers = groupChatUserMapper.queryGroupChatUserList(search);
if (CollectionUtils.isEmpty(tabGroupChatUsers)) {
return Collections.emptyList();
}
return tabGroupChatUsers
.stream()
.map(item -> {
GroupChatUserBO temp = new GroupChatUserBO();
BeanUtils.copyProperties(item, temp);
return temp;
})
.collect(Collectors.toList());
}
} }
\ No newline at end of file
package com.gic.haoban.manage.service.service.content;
import com.gic.haoban.manage.service.pojo.bo.content.ClerkShareLogBO;
import com.gic.haoban.manage.service.pojo.qo.content.ClerkShareLogQO;
import java.util.List;
/**
* 导购分享记录(TabHaobanClerkShareLog)表服务接口
*
* @author makejava
* @since 2023-03-18 20:54:32
*/
public interface ClerkShareLogService {
/**
* 导购分享日志
* @param clerkShareLogBO
* @return
*/
Long saveClerkShareLog(ClerkShareLogBO clerkShareLogBO);
/**
* 查询导购分享日志
* @param clerkShareLogQO
* @return
*/
List<ClerkShareLogBO> queryClerkShareLog(ClerkShareLogQO clerkShareLogQO);
/**
* 标记分享日志已处理
*/
void markClerkShareDone(String enterpriseId, List<Long> ids);
}
package com.gic.haoban.manage.service.service.content;
import com.gic.haoban.manage.service.pojo.bo.content.GroupMessageInfoBo;
/**
* @Author MUSI
* @Date 2023/3/19 9:46 PM
* @Description
* @Version
* 群发消息处理器
**/
public interface GroupMessageService {
/**
* 处理企业群发消息
* @param groupMessageInfoBo
*/
void handlerGroupMessage(GroupMessageInfoBo groupMessageInfoBo);
}
package com.gic.haoban.manage.service.service.content;
import com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO;
import com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/3/19 9:38 PM
* @Description
* @Version
* 客户触达明细
**/
public interface TriggerCustomerDetailService {
/**
* 保存客户触达日志
* @param triggerCustomerDetailBO
*/
void save(TriggerCustomerDetailBO triggerCustomerDetailBO);
/**
* 批量保存
* @param triggerCustomerDetailBos
*/
void batchSave(List<TriggerCustomerDetailBO> triggerCustomerDetailBos);
/**
* 查询客户触达日志
* @param triggerCustomerDetailQO
* @return
*/
List<TriggerCustomerDetailBO> queryTriggerCustomerDetailList(TriggerCustomerDetailQO triggerCustomerDetailQO);
}
package com.gic.haoban.manage.service.service.content.impl;
import com.alibaba.fastjson.JSON;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.service.dao.mapper.content.TabHaobanClerkShareLogMapper;
import com.gic.haoban.manage.service.entity.content.TabHaobanClerkShareLog;
import com.gic.haoban.manage.service.pojo.bo.content.ClerkShareLogBO;
import com.gic.haoban.manage.service.pojo.qo.content.ClerkShareLogQO;
import com.gic.haoban.manage.service.service.content.ClerkShareLogService;
import jdk.nashorn.internal.runtime.regexp.joni.ast.StringNode;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author MUSI
* @Date 2023/3/18 9:03 PM
* @Description
* @Version
**/
@Component
public class ClerkShareLogServiceImpl implements ClerkShareLogService {
private static final Logger log = LoggerFactory.getLogger(ClerkShareLogServiceImpl.class);
@Autowired
private TabHaobanClerkShareLogMapper clerkShareLogMapper;
@Override
public Long saveClerkShareLog(ClerkShareLogBO clerkShareLogBO) {
TabHaobanClerkShareLog temp = new TabHaobanClerkShareLog();
BeanUtils.copyProperties(clerkShareLogBO, temp);
temp.setId(UniqueIdUtils.uniqueLong());
temp.setCreateTime(new Date());
temp.setUpdateTime(new Date());
temp.setDeleteFlag(0);
clerkShareLogMapper.insert(temp);
return temp.getId();
}
/**
* 查询导购分享日志
*
* @param clerkShareLogQO
* @return
*/
@Override
public List<ClerkShareLogBO> queryClerkShareLog(ClerkShareLogQO clerkShareLogQO) {
List<TabHaobanClerkShareLog> tabHaobanClerkShareLogs = clerkShareLogMapper.queryWithCondition(clerkShareLogQO);
if (CollectionUtils.isEmpty(tabHaobanClerkShareLogs)) {
log.info("查询导购分享记录为空 {}", JSON.toJSONString(clerkShareLogQO));
return Collections.emptyList();
}
return tabHaobanClerkShareLogs
.stream()
.map(item -> {
ClerkShareLogBO temp = new ClerkShareLogBO();
BeanUtils.copyProperties(item, temp);
return temp;
})
.collect(Collectors.toList());
}
/**
* 标记分享日志已处理
*
* @param enterpriseId
* @param ids
*/
@Override
public void markClerkShareDone(String enterpriseId, List<Long> ids) {
if (StringUtils.isBlank(enterpriseId) || CollectionUtils.isEmpty(ids)) {
return;
}
clerkShareLogMapper.markShareLogWithDone(enterpriseId, ids);
}
}
package com.gic.haoban.manage.service.service.content.impl;
import com.gic.haoban.manage.service.dao.mapper.content.TabHaobanTriggerCustomerDetailMapper;
import com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail;
import com.gic.haoban.manage.service.pojo.bo.content.TriggerCustomerDetailBO;
import com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO;
import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailService;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author MUSI
* @Date 2023/3/19 9:38 PM
* @Description
* @Version
**/
@Component
public class TriggerCustomerDetailServiceImpl implements TriggerCustomerDetailService {
private static final Logger log = LoggerFactory.getLogger(TriggerCustomerDetailServiceImpl.class);
@Autowired
private TabHaobanTriggerCustomerDetailMapper triggerCustomerDetailMapper;
@Override
public void save(TriggerCustomerDetailBO triggerCustomerDetailBO) {
}
/**
* 批量保存
*
* @param triggerCustomerDetailBos
*/
@Override
public void batchSave(List<TriggerCustomerDetailBO> triggerCustomerDetailBos) {
if (CollectionUtils.isEmpty(triggerCustomerDetailBos)) {
return;
}
List<TabHaobanTriggerCustomerDetail> customerDetails = triggerCustomerDetailBos
.stream()
.map(item -> {
TabHaobanTriggerCustomerDetail temp = new TabHaobanTriggerCustomerDetail();
BeanUtils.copyProperties(item, temp);
return temp;
})
.collect(Collectors.toList());
triggerCustomerDetailMapper.insertBatch(customerDetails);
}
/**
* 查询客户触达日志
*
* @param triggerCustomerDetailQO
* @return
*/
@Override
public List<TriggerCustomerDetailBO> queryTriggerCustomerDetailList(TriggerCustomerDetailQO triggerCustomerDetailQO) {
return null;
}
}
...@@ -490,4 +490,15 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -490,4 +490,15 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
ClerkDTO clerk = this.clerkService.getclerkById(newClerkId); ClerkDTO clerk = this.clerkService.getclerkById(newClerkId);
this.mapper.updateClerkInfo(staffId,oldClerkId , newClerkId , clerk.getStoreId()); this.mapper.updateClerkInfo(staffId,oldClerkId , newClerkId , clerk.getStoreId());
} }
/**
* 外部联系人
*
* @param staffId
* @return
*/
@Override
public List<String> queryExternalRelatedWithStaffId(String staffId) {
return this.mapper.queryExternalUserIdWithStaffId(staffId);
}
} }
...@@ -231,4 +231,10 @@ public class QywxSendServiceImpl implements QywxSendService { ...@@ -231,4 +231,10 @@ public class QywxSendServiceImpl implements QywxSendService {
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList) { public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList) {
return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group); return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group);
} }
@Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<ContentMaterialDTO> imageList, String message) {
List<String> materialIdList = this.materialService.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, null, materialIdList, message, 2 , group);
}
} }
package com.gic.haoban.manage.service.service.impl; package com.gic.haoban.manage.service.service.impl;
import java.util.Collection;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -248,5 +250,19 @@ public class StaffServiceImpl implements StaffService { ...@@ -248,5 +250,19 @@ public class StaffServiceImpl implements StaffService {
this.haobanQywxFeeAccountStaffService.save(accountStaff); this.haobanQywxFeeAccountStaffService.save(accountStaff);
} }
} }
/**
* 查询成员列表
*
* @param wxEnterpriseId
* @param staffIds
* @return
*/
@Override
public List<TabHaobanStaff> listStaffWithIds(List<String> staffIds) {
if (CollectionUtils.isEmpty(staffIds)) {
return Collections.emptyList();
}
return this.mapper.listByIds(staffIds);
}
} }
package com.gic.haoban.manage.service.service.out.impl.content;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO;
import com.gic.haoban.manage.api.dto.content.log.TriggerCustomerDetailLogDTO;
import com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType;
import com.gic.haoban.manage.api.service.content.MaterialShareLogApiService;
import com.gic.haoban.manage.service.pojo.bo.content.ClerkShareLogBO;
import com.gic.haoban.manage.service.service.content.ClerkShareLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author MUSI
* @Date 2023/3/18 8:34 PM
* @Description
* @Version
**/
@Component(value = "materialShareLogApiServiceImpl")
public class MaterialShareLogApiServiceImpl implements MaterialShareLogApiService {
private static final Logger log = LoggerFactory.getLogger(MaterialShareLogApiServiceImpl.class);
/**
* 导购分享素材 客户触达日志
* @see com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService#handlerTriggerCustomerDetailLog(String)
*/
private static final String SHARE_MATERIAL_DETAIL_LOG = "share_material_detail_log";
@Autowired
private ClerkShareLogService clerkShareLogService;
@Override
public ServiceResponse<Long> saveClerkShareMaterialLog(ClerkShareMaterialLogDTO clerkShareMaterialLogDTO) {
log.info("saveClerkShareMaterialLog 保存导购分享日志 clerkId:{}, bizId:{}", clerkShareMaterialLogDTO.getClerkId(), clerkShareMaterialLogDTO.getBizId());
ClerkShareLogBO clerkShareLogBO = new ClerkShareLogBO();
BeanUtils.copyProperties(clerkShareMaterialLogDTO, clerkShareLogBO);
Long logId = clerkShareLogService.saveClerkShareLog(clerkShareLogBO);
if (logId != null){
// MQ 通知处理导购分享日志
TriggerCustomerDetailLogDTO triggerCustomerDetailLog = new TriggerCustomerDetailLogDTO();
triggerCustomerDetailLog.setEnterpriseId(clerkShareLogBO.getEnterpriseId());
triggerCustomerDetailLog.setClerkId(clerkShareLogBO.getClerkId());
triggerCustomerDetailLog.setShareType(ClerkShareMaterialType.SHARE_PYQ.getCode());
TriggerCustomerDetailLogDTO.SharePYQ sharePYQ = new TriggerCustomerDetailLogDTO.SharePYQ();
sharePYQ.setShareLogId(logId);
triggerCustomerDetailLog.setSharePYQ(sharePYQ);
try{
GICMQClientUtil.getClientInstance().sendMessage(SHARE_MATERIAL_DETAIL_LOG, JSON.toJSONString(triggerCustomerDetailLog));
}catch (Exception ex){
log.warn("客户分享素材 触达日志MQ异常 {}", JSON.toJSONString(triggerCustomerDetailLog), ex);
}
}
return ServiceResponse.success(logId);
}
}
package com.gic.haoban.manage.service.service.out.impl.content.task;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.haoban.manage.api.dto.content.log.TriggerCustomerDetailLogDTO;
import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType;
import com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService;
import com.gic.haoban.manage.service.pojo.bo.content.GroupMessageInfoBo;
import com.gic.haoban.manage.service.service.content.GroupMessageService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/3/19 8:33 PM
* @Description
* @Version
**/
@Component("qywxGroupMsgTaskApiServiceImpl")
public class QywxGroupMsgTaskApiServiceImpl implements QywxGroupMsgTaskApiService {
private static final Logger log = LoggerFactory.getLogger(QywxGroupMsgTaskApiServiceImpl.class);
@Autowired
private GroupMessageService groupMessageService;
@Override
public ServiceResponse<Void> groupMsgTaskJob(String params) {
// 获取开启【内容】权限的企业id
List<String> enterpriseIds = new ArrayList<>();
// 获取企业 (当前时间 - 30分钟, 当前时间)范围内的 导购分享记录。按创建时间排序
Date currentTime = new Date();
for (String enterpriseId : enterpriseIds) {
GroupMessageInfoBo groupMessageInfoBo = new GroupMessageInfoBo();
groupMessageInfoBo.setEnterpriseId(enterpriseId);
groupMessageInfoBo.setStartTime(DateUtil.addNumForMinute(currentTime, -30));
groupMessageInfoBo.setEndTime(currentTime);
groupMessageService.handlerGroupMessage(groupMessageInfoBo);
}
// 获取当前时间段内的数据
return ServiceResponse.success();
}
/**
* 处理客户触达日志明细
*
* @param params
* @return
*/
@Override
public ServiceResponse<Void> handlerTriggerCustomerDetailLog(String params) {
log.info("处理客户触达日志 {}", params);
TriggerCustomerDetailLogDTO customerDetailLog = JSON.parseObject(params, TriggerCustomerDetailLogDTO.class);
if (customerDetailLog == null) {
return ServiceResponse.success();
}
GroupMessageInfoBo groupMessageInfoBo = new GroupMessageInfoBo();
groupMessageInfoBo.setEnterpriseId(customerDetailLog.getEnterpriseId());
if (TriggerCustomerChannelType.PYQ.getCode().equals(customerDetailLog.getShareType())) {
if (customerDetailLog.getSharePYQ() == null) {
log.info("handlerTriggerCustomerDetailLog 分享朋友圈类型 参数异常 {}", params);
return ServiceResponse.success();
}
groupMessageInfoBo.setShareLogId(customerDetailLog.getSharePYQ().getShareLogId());
}
groupMessageService.handlerGroupMessage(groupMessageInfoBo);
return ServiceResponse.success();
}
}
package com.gic.haoban.manage.service.util;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* Created by wangzubo on 2023/3/20.
*/
public class StreamUtils {
private static Logger logger = LogManager.getLogger(StreamUtils.class);
/**
* 根据图片url地址获取其流
* @param url 网络图片地址
* @return 图片流
*/
public static InputStream getImageStream(String url) {
try {
HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
connection.setReadTimeout(10000);
connection.setConnectTimeout(10000);
connection.setRequestMethod("GET");
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
return inputStream;
}
} catch (IOException e) {
logger.error("获取网络图片出现异常,图片路径为:" + url,e);
}
return null;
}
}
...@@ -135,7 +135,7 @@ ...@@ -135,7 +135,7 @@
<dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/> <dubbo:reference interface="com.gic.enterprise.api.service.EnterpriseUseForbidService" id="enterpriseUseForbidService"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" ref="haobanMenuApiServiceImpl"/> <dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanMenuApiService" ref="haobanMenuApiServiceImpl"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" ref="haobanRoleApiServiceImpl"/> <dubbo:service interface="com.gic.haoban.manage.api.service.role.HaobanRoleApiService" ref="haobanRoleApiServiceImpl"/>
<dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/> <dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService" <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService"
id="qywxDepartmentApiService"/> id="qywxDepartmentApiService"/>
...@@ -204,4 +204,7 @@ ...@@ -204,4 +204,7 @@
<dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.enterprise.api.service.ScreeningDetailService" id="screeningDetailService" timeout="10000" retries="0"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/> <dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxOrderApiService" id="qywxOrderApiService" timeout="10000" retries="0"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.content.MaterialShareLogApiService"
ref="materialShareLogApiServiceImpl" timeout="10000" />
</beans> </beans>
\ No newline at end of file
...@@ -751,4 +751,10 @@ ...@@ -751,4 +751,10 @@
limit 1 limit 1
</select> </select>
<select id="queryExternalUserIdWithStaffId" resultType="java.lang.String">
SELECT external_user_id from tab_haoban_external_clerk_related
WHERE staff_id = #{staffId}
and status_flag in (1, 3, 4);
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
<result column="success_chat_count" property="successChatCount" /> <result column="success_chat_count" property="successChatCount" />
<result column="fail_chat_count" property="failChatCount" /> <result column="fail_chat_count" property="failChatCount" />
<result column="send_flag" property="sendFlag" /> <result column="send_flag" property="sendFlag" />
<result column="material_from" property="materialFrom" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
plan_id, plan_id,
...@@ -49,7 +50,8 @@ ...@@ -49,7 +50,8 @@
send_count, send_count,
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
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -75,7 +77,8 @@ ...@@ -75,7 +77,8 @@
staff_count, staff_count,
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
)VALUES( )VALUES(
#{planId}, #{planId},
#{name}, #{name},
...@@ -96,7 +99,8 @@ ...@@ -96,7 +99,8 @@
#{staffCount}, #{staffCount},
#{sendCount}, #{sendCount},
#{successChatCount}, #{successChatCount},
#{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1 #{failChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0 , 1,
#{materialFrom}
) )
]]> ]]>
</insert> </insert>
...@@ -138,7 +142,8 @@ ...@@ -138,7 +142,8 @@
send_time=#{sendTime}, send_time=#{sendTime},
start_time=#{startTime}, start_time=#{startTime},
end_time=#{endTime}, end_time=#{endTime},
expire_days=#{expireDays} expire_days=#{expireDays},
material_from=#{materialFrom}
where plan_id = #{planId} where plan_id = #{planId}
]]> ]]>
</update> </update>
......
...@@ -282,5 +282,22 @@ ...@@ -282,5 +282,22 @@
</otherwise> </otherwise>
</choose> </choose>
</select> </select>
<select id="queryGroupChatUserList" resultMap="result-map-tabHaobanGroupChatUser">
select <include refid="Base_Column_List"/>
from tab_haoban_group_chat_user
<where>
status_flag = 1 and delete_flag = 0
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
and wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="chatId != null and chatId != ''">
and group_chat_id = #{chatId}
</if>
</where>
</select>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.content.TabHaobanClerkShareLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.content.TabHaobanClerkShareLog"
id="TabHaobanClerkShareLogMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="clerkId" column="clerk_id" jdbcType="VARCHAR"/>
<result property="staffId" column="staff_id" jdbcType="VARCHAR"/>
<result property="shareType" column="share_type" jdbcType="INTEGER"/>
<result property="bizId" column="biz_id" jdbcType="VARCHAR"/>
<result property="bizType" column="biz_type" jdbcType="INTEGER"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="baseSql">
id
, enterprise_id, wx_enterprise_id, clerk_id, staff_id, share_type, biz_id, biz_type, delete_flag, create_time, update_time
</sql>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanClerkShareLogMap">
select id,
enterprise_id,
wx_enterprise_id,
clerk_id,
staff_id,
share_type,
biz_id,
biz_type,
delete_flag,
create_time,
update_time
from tab_haoban_clerk_share_log
where id = #{id}
</select>
<!--查询指定行数据-->
<select id="queryWithCondition" resultMap="TabHaobanClerkShareLogMap">
select
id, enterprise_id, wx_enterprise_id, clerk_id, staff_id, share_type, biz_id, biz_type, delete_flag, create_time,
update_time
from tab_haoban_clerk_share_log
<where>
delete_flag = 0
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="clerkId != null and clerkId != ''">
and clerk_id = #{clerkId}
</if>
<if test="bizType != null">
and biz_type = #{bizType}
</if>
<if test="startTime != null">
and create_time >= #{startTime}
</if>
<if test="endTime != null">
and create_time <![CDATA[ <= ]]> #{endTime}
</if>
<if test="shareLogId != null">
and id = #{shareLogId}
</if>
</where>
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_clerk_share_log
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="clerkId != null and clerkId != ''">
and clerk_id = #{clerkId}
</if>
<if test="staffId != null and staffId != ''">
and staff_id = #{staffId}
</if>
<if test="shareType != null">
and share_type = #{shareType}
</if>
<if test="bizId != null and bizId != ''">
and biz_id = #{bizId}
</if>
<if test="bizType != null">
and biz_type = #{bizType}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_clerk_share_log(id, enterprise_id, wx_enterprise_id, clerk_id, staff_id, share_type,
biz_id, biz_type,
delete_flag, create_time, update_time)
values (#{id}, #{enterpriseId}, #{wxEnterpriseId}, #{clerkId}, #{staffId}, #{shareType}, #{bizId}, #{bizType},
#{deleteFlag},
#{createTime}, #{updateTime})
</insert>
<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_clerk_share_log(id, enterprise_id, wx_enterprise_id, clerk_id, staff_id, share_type,
biz_id, biz_type,
delete_flag, create_time, update_time)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.id}, #{entity.enterpriseId}, #{entity.wxEnterpriseId}, #{entity.clerkId}, #{entity.staffId},
#{entity.shareType}, #{entity.bizId},
#{entity.bizType}, #{entity.deleteFlag}, #{entity.createTime}, #{entity.updateTime})
</foreach>
</insert>
<insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_clerk_share_log(enterprise_id, clerk_id, staff_id, share_type, biz_id, biz_type,
delete_flag, create_time, update_time)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.enterpriseId}, #{entity.clerkId}, #{entity.staffId}, #{entity.shareType}, #{entity.bizId},
#{entity.bizType}, #{entity.deleteFlag}, #{entity.createTime}, #{entity.updateTime})
</foreach>
on duplicate key update
enterprise_id = values(enterprise_id),
clerk_id = values(clerk_id),
staff_id = values(staff_id),
share_type = values(share_type),
biz_id = values(biz_id),
biz_type = values(biz_type),
delete_flag = values(delete_flag),
create_time = values(create_time),
update_time = values(update_time)
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_clerk_share_log
<set>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="clerkId != null and clerkId != ''">
clerk_id = #{clerkId},
</if>
<if test="staffId != null and staffId != ''">
staff_id = #{staffId},
</if>
<if test="shareType != null">
share_type = #{shareType},
</if>
<if test="bizId != null and bizId != ''">
biz_id = #{bizId},
</if>
<if test="bizType != null">
biz_type = #{bizType},
</if>
<if test="deleteFlag != null">
delete_flag = #{deleteFlag},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_clerk_share_log
where id = #{id}
</delete>
<update id="markShareLogWithDone">
update tab_haoban_clerk_share_log set delete_flag = 1
where enterprise_id = #{enterpriseId} and id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</update>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.content.TabHaobanTriggerCustomerDetailMapper">
<resultMap type="com.gic.haoban.manage.service.entity.content.TabHaobanTriggerCustomerDetail"
id="TabHaobanTriggerCustomerDetailMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="enterpriseId" column="enterprise_id" jdbcType="VARCHAR"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="bizId" column="biz_id" jdbcType="VARCHAR"/>
<result property="bizType" column="biz_type" jdbcType="INTEGER"/>
<result property="clerkId" column="clerk_id" jdbcType="VARCHAR"/>
<result property="staffId" column="staff_id" jdbcType="VARCHAR"/>
<result property="channelType" column="channel_type" jdbcType="INTEGER"/>
<result property="customerId" column="customer_id" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="deleteFlag" column="delete_flag" jdbcType="INTEGER"/>
</resultMap>
<sql id="baseSql">
id
, enterprise_id,wxEnterpriseId,
biz_id,
biz_type,
clerk_id,
staff_id,
channel_type,
customer_id,
create_time,
update_time,
delete_flag
</sql>
<!--查询单个-->
<select id="queryById" resultMap="TabHaobanTriggerCustomerDetailMap">
select id,
enterprise_id,
wx_enterprise_id,
biz_id,
biz_type,
clerk_id,
staff_id,
channel_type,
customer_id,
create_time,
update_time,
delete_flag
from tab_haoban_trigger_customer_detail
where id = #{id}
</select>
<!--查询指定行数据-->
<select id="queryWithCondition" resultMap="TabHaobanTriggerCustomerDetailMap">
select
<include refid="baseSql"/>
from tab_haoban_trigger_customer_detail
<where>
delete_flag = 0
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="bizId != null and bizId != ''">
and biz_id = #{bizId}
</if>
<if test="bizType != null">
and biz_type = #{bizType}
</if>
<if test="clerkId != null and clerkId != ''">
and clerk_id = #{clerkId}
</if>
<if test="channelType != null">
and channel_type = #{channelType}
</if>
<if test="startTime != null ">
and create_time >= #{startTime}
</if>
<if test="endTime != null ">
and create_time <![CDATA[ <= ]]> #{endTime}
</if>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</select>
<!--统计总行数-->
<select id="count" resultType="java.lang.Long">
select count(1)
from tab_haoban_trigger_customer_detail
<where>
<if test="id != null">
and id = #{id}
</if>
<if test="enterpriseId != null and enterpriseId != ''">
and enterprise_id = #{enterpriseId}
</if>
<if test="bizId != null and bizId != ''">
and biz_id = #{bizId}
</if>
<if test="bizType != null">
and biz_type = #{bizType}
</if>
<if test="clerkId != null and clerkId != ''">
and clerk_id = #{clerkId}
</if>
<if test="staffId != null and staffId != ''">
and staff_id = #{staffId}
</if>
<if test="channelType != null">
and channel_type = #{channelType}
</if>
<if test="customerId != null and customerId != ''">
and customer_id = #{customerId}
</if>
<if test="createTime != null">
and create_time = #{createTime}
</if>
<if test="updateTime != null">
and update_time = #{updateTime}
</if>
<if test="deleteFlag != null">
and delete_flag = #{deleteFlag}
</if>
</where>
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_trigger_customer_detail(enterprise_id, wx_enterprise_id, biz_id, biz_type, clerk_id, staff_id,
channel_type, customer_id, create_time, update_time, delete_flag)
values (#{enterpriseId}, #{wxEnterpriseId}, #{bizId}, #{bizType}, #{clerkId}, #{staffId}, #{channelType}, #{customerId},
#{createTime}, #{updateTime}, #{deleteFlag})
</insert>
<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_trigger_customer_detail(id, enterprise_id, wx_enterprise_id, biz_id, biz_type, clerk_id, staff_id,
channel_type, customer_id, create_time, update_time, delete_flag)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.id}, #{entity.enterpriseId}, #{entity.wxEnterpriseId}, #{entity.bizId}, #{entity.bizType}, #{entity.clerkId}, #{entity.staffId},
#{entity.channelType}, #{entity.customerId}, #{entity.createTime}, #{entity.updateTime},
#{entity.deleteFlag})
</foreach>
</insert>
<insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
insert into tab_haoban_trigger_customer_detail(enterprise_id, wx_enterprise_id, biz_id, biz_type, clerk_id, staff_id,
channel_type, customer_id, create_time, update_time, delete_flag)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.enterpriseId}, #{entity.wxEnterpriseId}, #{entity.bizId}, #{entity.bizType}, #{entity.clerkId}, #{entity.staffId},
#{entity.channelType}, #{entity.customerId}, #{entity.createTime}, #{entity.updateTime},
#{entity.deleteFlag})
</foreach>
on duplicate key update
enterprise_id = values(enterprise_id),
biz_id = values(biz_id),
biz_type = values(biz_type),
clerk_id = values(clerk_id),
staff_id = values(staff_id),
channel_type = values(channel_type),
customer_id = values(customer_id),
create_time = values(create_time),
update_time = values(update_time),
delete_flag = values(delete_flag)
</insert>
<!--通过主键修改数据-->
<update id="update">
update tab_haoban_trigger_customer_detail
<set>
<if test="enterpriseId != null and enterpriseId != ''">
enterprise_id = #{enterpriseId},
</if>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId}
</if>
<if test="bizId != null and bizId != ''">
biz_id = #{bizId},
</if>
<if test="bizType != null">
biz_type = #{bizType},
</if>
<if test="clerkId != null and clerkId != ''">
clerk_id = #{clerkId},
</if>
<if test="staffId != null and staffId != ''">
staff_id = #{staffId},
</if>
<if test="channelType != null">
channel_type = #{channelType},
</if>
<if test="customerId != null and customerId != ''">
customer_id = #{customerId},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
<if test="deleteFlag != null">
delete_flag = #{deleteFlag},
</if>
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_haoban_trigger_customer_detail
where id = #{id}
</delete>
</mapper>
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NotifyMessageBatchQDTO;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.service.QywxTagApiService;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import com.gic.wechat.api.dto.qywx.QywxNewsArticleMessageDTO;
import com.gic.wechat.api.dto.qywx.QywxNewsSendMessageDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class ChatTest {
private static Logger logger = LoggerFactory.getLogger(ChatTest.class);
@Autowired
private GroupChatPlanService groupChatPlanService;
@Test
public void test() {
String str = "{\"name\":\"测试\",\"remark\":\"测试\",\"expireDays\":\"2\",\"sendType\":1,\"sendTime\":\"\",\"chatContent\":\"[{\\\"img\\\":\\\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/jhdm/marketing_common-edc68cbf153846928c0ac28e2b2aa92f.jpg\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":2},{\\\"img\\\":\\\"https://platform-1251519181.cos.ap-shanghai.myqcloud.com/image/jhdm/marketing_common-3acc9bc9bbe8416e8aefe459b23eea5e.jpg\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":2},{\\\"content\\\":\\\"莎啦啦啦\\\",\\\"relation_id\\\":\\\"510923843246776342\\\",\\\"type\\\":1}]\",\"staffIdList\":\"36067cdee7ba4ff6adc7551b34cc2005\",\"requestProject\":\"haoban-manage-web\"}";
GroupChatPlanDTO groupChatPlanDTO = JSONObject.parseObject(str, GroupChatPlanDTO.class);
groupChatPlanDTO.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
groupChatPlanDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
groupChatPlanDTO.setCreatorId("fefd1c81641711e69d0818c58a146fd2");
groupChatPlanDTO.setCreatorName("达摩管理员");
groupChatPlanDTO.setMaterialFrom(2);
groupChatPlanService.save(groupChatPlanDTO);
}
}
import com.alibaba.fastjson.JSON;
import com.gic.commons.util.DateUtil;
import com.gic.haoban.manage.api.dto.content.log.TriggerCustomerDetailLogDTO;
import com.gic.haoban.manage.api.enums.content.ClerkShareMaterialType;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType;
import com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService;
import com.gic.haoban.manage.service.pojo.bo.content.ClerkShareLogBO;
import com.gic.haoban.manage.service.pojo.bo.content.GroupMessageInfoBo;
import com.gic.haoban.manage.service.service.content.ClerkShareLogService;
import com.gic.haoban.manage.service.service.content.GroupMessageService;
import com.squareup.moshi.Json;
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.Date;
/**
* @Author MUSI
* @Date 2023/3/20 8:57 PM
* @Description
* @Version
**/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class GroupMessageServiceTest {
@Autowired
private GroupMessageService groupMessageService;
@Autowired
private ClerkShareLogService clerkShareLogService;
@Autowired
private QywxGroupMsgTaskApiService qywxGroupMsgTaskApiService;
String eid = "ff8080815dacd3a2015dacd3ef5c0000";
String wxEid = "ca66a01b79474c40b3e7c7f93daf1a3b";
@Test
public void shareLogTest() {
ClerkShareLogBO clerkShareLogBO = new ClerkShareLogBO();
clerkShareLogBO.setEnterpriseId(eid);
clerkShareLogBO.setWxEnterpriseId(wxEid);
clerkShareLogBO.setClerkId("fbc508e395f846ef9005852c420e1c4f");
clerkShareLogBO.setStaffId("e608b51b267e4943b87e222a343b4f25");
clerkShareLogBO.setShareType(ClerkShareMaterialType.SHARE_PYQ.getCode());
clerkShareLogBO.setBizId(eid);
clerkShareLogBO.setBizType(ShareBizType.MATERIAL.getCode());
clerkShareLogService.saveClerkShareLog(clerkShareLogBO);
}
@Test
public void shareWithPyq() {
TriggerCustomerDetailLogDTO customerDetailLog = new TriggerCustomerDetailLogDTO();
customerDetailLog.setEnterpriseId(eid);
customerDetailLog.setShareType(TriggerCustomerChannelType.PYQ.getCode());
TriggerCustomerDetailLogDTO.SharePYQ sharePYQ = new TriggerCustomerDetailLogDTO.SharePYQ();
sharePYQ.setShareLogId(511216759709786113L);
customerDetailLog.setSharePYQ(sharePYQ);
qywxGroupMsgTaskApiService.handlerTriggerCustomerDetailLog(JSON.toJSONString(customerDetailLog));
}
@Test
public void groupMessageTest() {
Date currentTime = new Date();
GroupMessageInfoBo groupMessageInfoBo = new GroupMessageInfoBo();
groupMessageInfoBo.setEnterpriseId(eid);
groupMessageInfoBo.setStartTime(DateUtil.addNumForMinute(currentTime, -100));
groupMessageInfoBo.setEndTime(currentTime);
groupMessageService.handlerGroupMessage(groupMessageInfoBo);
}
}
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.haoban.manage.api.dto.AlertMessageDTO; import com.gic.haoban.manage.api.dto.AlertMessageDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO; import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO; import com.gic.haoban.manage.api.dto.notify.qdto.NoticeMessageQDTO;
...@@ -10,11 +12,15 @@ import com.gic.haoban.manage.api.service.QywxTagApiService; ...@@ -10,11 +12,15 @@ import com.gic.haoban.manage.api.service.QywxTagApiService;
import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService; import com.gic.haoban.manage.api.service.notify.NoticeMessageApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.service.WxEnterpriseService; import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO;
import com.gic.wechat.api.dto.qywx.QywxNewsArticleMessageDTO; import com.gic.wechat.api.dto.qywx.QywxNewsArticleMessageDTO;
import com.gic.wechat.api.dto.qywx.QywxNewsSendMessageDTO; import com.gic.wechat.api.dto.qywx.QywxNewsSendMessageDTO;
import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO; import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService; import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.lang3.time.DateUtils;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -26,7 +32,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; ...@@ -26,7 +32,9 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
...@@ -120,4 +128,24 @@ public class NotityTest { ...@@ -120,4 +128,24 @@ public class NotityTest {
System.out.println(b); System.out.println(b);
} }
@Test
public void queryMessageTest(){
String wxEnterpriseId = "ca66a01b79474c40b3e7c7f93daf1a3b";
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId) ;
QywxGroupMessageQDTO search = new QywxGroupMessageQDTO();
search.setCorpid(qwDTO.getThirdCorpid());
search.setSuiteid(config.getWxSuiteid());
search.setChatType("single");
Date date = DateUtils.addDays(new Date(), -1);
ServiceResponse<QywxGroupMsgResp> serviceResponse = qywxSuiteApiService.queryQywxGroupMessageList(search);
}
@Test
public void convert(){
String json = "{\"errcode\":0,\"next_cursor\":\"\",\"errmsg\":\"ok\",\"group_msg_list\":[{\"attachments\":[{\"image\":{\"media_id\":\"WWME_59NLDQAA808IWhrsFqod3IeQuyZDcw\"},\"msgtype\":\"image\"}],\"create_time\":1679207801,\"msgid\":\"msg59NLDQAAMSF0sKheZ-wwUy06iY1eoQ\",\"create_type\":0,\"text\":{\"content\":\"元宵快乐\"}}]}";
}
} }
...@@ -6,6 +6,7 @@ import java.util.Date; ...@@ -6,6 +6,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.ChatContentDTO;
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;
...@@ -301,15 +302,28 @@ public class GroupChatPlanController { ...@@ -301,15 +302,28 @@ public class GroupChatPlanController {
GroupChatPlanDTO plan = planResp.getResult(); GroupChatPlanDTO plan = planResp.getResult();
plan.getStaffIdList(); plan.getStaffIdList();
String content = plan.getChatContent(); String content = plan.getChatContent();
JSONArray array = JSONArray.parseArray(content); Integer materialFrom = plan.getMaterialFrom();
List<String> materialIdList = new ArrayList<>(); List<MaterialDTO> materials = new ArrayList<>();
for (int i = 0; i < array.size(); i++) { if (materialFrom == null || materialFrom == 1) {
JSONObject json = array.getJSONObject(i); JSONArray array = JSONArray.parseArray(content);
materialIdList.add(json.getString("relation_id")); List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
materials = materialApiService.listMaterialByIds(materialIdList);
}else {
List<ChatContentDTO> contentDTOList = JSONArray.parseArray(content, ChatContentDTO.class);
materials = contentDTOList.stream().map(x -> {
MaterialDTO materialDTO = new MaterialDTO();
materialDTO.setMaterialType(x.getType());
materialDTO.setMaterialContent(x.getContent());
materialDTO.setImgUrl(x.getImg());
return materialDTO;
}).collect(Collectors.toList());
} }
// 查询素材列表 // 查询素材列表
GroupChatPlanVO vo = EntityUtil.changeEntityByJSON(GroupChatPlanVO.class, plan); GroupChatPlanVO vo = EntityUtil.changeEntityByJSON(GroupChatPlanVO.class, plan);
List<MaterialDTO> materials = materialApiService.listMaterialByIds(materialIdList);
vo.setMaterialIdList(materials); vo.setMaterialIdList(materials);
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO(); GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser(); WebLoginDTO loginUser = AuthWebRequestUtil.getLoginUser();
......
...@@ -55,6 +55,11 @@ public class GroupChatPlanVO implements Serializable{ ...@@ -55,6 +55,11 @@ public class GroupChatPlanVO implements Serializable{
private Integer sendFlag; private Integer sendFlag;
private List<MaterialDTO> MaterialIdList ; private List<MaterialDTO> MaterialIdList ;
private List<ChatOwnerVO> ownerList ; private List<ChatOwnerVO> ownerList ;
/**
* 关联素材来源1好办素材2内容中心
*/
private Integer materialFrom;
public List<ChatOwnerVO> getOwnerList() { public List<ChatOwnerVO> getOwnerList() {
return ownerList; return ownerList;
...@@ -245,4 +250,12 @@ public class GroupChatPlanVO implements Serializable{ ...@@ -245,4 +250,12 @@ public class GroupChatPlanVO implements Serializable{
public Integer getTotalChatCount(){ public Integer getTotalChatCount(){
return totalChatCount; return totalChatCount;
} }
public Integer getMaterialFrom() {
return materialFrom;
}
public void setMaterialFrom(Integer materialFrom) {
this.materialFrom = materialFrom;
}
} }
\ No newline at end of file
package com.gic.haoban.manage.web.controller.content;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.api.service.content.MaterialShareLogApiService;
import com.gic.haoban.manage.web.qo.content.ContentMaterialBaseQO;
import com.gic.haoban.manage.web.qo.content.log.MaterialShareLogQO;
import com.gic.haoban.manage.web.vo.content.share.ContentMaterialLandingPageVO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
* 导购分享素材 与素材落地页
*/
@RestController
public class ClerkMaterialShareController {
private static final Logger log = LoggerFactory.getLogger(ClerkMaterialShareController.class);
@Autowired
private MaterialShareLogApiService materialShareLogApiService;
/**
* 导购分享素材日志
* @return
*/
@RequestMapping(path = "/clerk/share/material/log", method = RequestMethod.POST)
public RestResponse<Long> clerkShareMaterialLog(@RequestBody MaterialShareLogQO materialShareLogQo) {
if (materialShareLogQo.getContentMaterialId() == null || StringUtils.isBlank(materialShareLogQo.getClerkId())) {
log.info("参数缺失 {}", JSON.toJSONString(materialShareLogQo));
return RestResponse.failure("-1", "参数异常");
}
ClerkShareMaterialLogDTO temp = new ClerkShareMaterialLogDTO();
temp.setEnterpriseId(materialShareLogQo.getEnterpriseId());
temp.setWxEnterpriseId(materialShareLogQo.getWxEnterpriseId());
temp.setClerkId(materialShareLogQo.getClerkId());
temp.setStaffId(materialShareLogQo.getStaffId());
temp.setShareType(materialShareLogQo.getShareType());
temp.setBizId(materialShareLogQo.getContentMaterialId() +"");
temp.setBizType(ShareBizType.MATERIAL.getCode());
ServiceResponse<Long> serviceResponse = materialShareLogApiService.saveClerkShareMaterialLog(temp);
if (serviceResponse.isSuccess()) {
return RestResponse.successResult(serviceResponse.getResult());
}
return RestResponse.failure("-701", "系统异常");
}
/**
* 查询素材落地页信息
* @param contentMaterialBaseQO
* @return
*/
@RequestMapping(path = "/content/material/share/landing/page/info")
public RestResponse<ContentMaterialLandingPageVO> queryMaterialLandingPage(ContentMaterialBaseQO contentMaterialBaseQO){
return RestResponse.successResult();
}
}
...@@ -196,7 +196,7 @@ public class ContentMaterialController { ...@@ -196,7 +196,7 @@ public class ContentMaterialController {
return RestResponse.failure("-777", "企业参数异常"); return RestResponse.failure("-777", "企业参数异常");
} }
if (contentMaterialShareQO.getContentMaterialId() == null) { if (contentMaterialShareQO.getContentMaterialId() == null) {
// 无商品id 不生成参数 // 无素材id 不生成参数
return RestResponse.successResult(); return RestResponse.successResult();
} }
ContentMaterialShareQDTO contentMaterialShareQDTO = new ContentMaterialShareQDTO(); ContentMaterialShareQDTO contentMaterialShareQDTO = new ContentMaterialShareQDTO();
...@@ -274,5 +274,4 @@ public class ContentMaterialController { ...@@ -274,5 +274,4 @@ public class ContentMaterialController {
return RestResponse.successResult(); return RestResponse.successResult();
} }
} }
package com.gic.haoban.manage.web.controller.goods; package com.gic.haoban.manage.web.controller.goods;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.app.aggregation.api.dto.GoodsSettingDTO; import com.gic.haoban.app.aggregation.api.dto.GoodsSettingDTO;
import com.gic.haoban.app.aggregation.api.service.SettingApiService; import com.gic.haoban.app.aggregation.api.service.SettingApiService;
import com.gic.haoban.manage.web.qo.content.ContentMaterialQO; import com.gic.haoban.manage.web.qo.content.ContentMaterialQO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.service.GoodsInfoOutApiService; import com.gic.store.goods.service.GoodsInfoOutApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Author MUSI * @Author MUSI
...@@ -22,6 +31,8 @@ import java.util.List; ...@@ -22,6 +31,8 @@ import java.util.List;
@Component @Component
public class GoodsInfoAdaptor { public class GoodsInfoAdaptor {
private static final Logger log = LoggerFactory.getLogger(GoodsInfoAdaptor.class);
@Autowired @Autowired
private SettingApiService settingApiService; private SettingApiService settingApiService;
@Autowired @Autowired
...@@ -29,8 +40,29 @@ public class GoodsInfoAdaptor { ...@@ -29,8 +40,29 @@ public class GoodsInfoAdaptor {
public List<String> queryGoodsIdWithSearch(String enterpriseId, String search) { public List<String> queryGoodsIdWithSearch(String enterpriseId, String search) {
// 根据关键字查询1000个商品 // 根据关键字查询1000个商品
GoodsListQDTO searchQdto = new GoodsListQDTO();
return Collections.emptyList(); searchQdto.setEnterpriseId(enterpriseId);
searchQdto.setGoodsNameText(search);
// 只查询ERP的
searchQdto.setSourceType(1);
searchQdto.setPageNum(1);
searchQdto.setPageSize(1000);
ServiceResponse<Page<GoodsSpuInfoDTO>> serviceResponse = goodsInfoOutApiService.queryGoodsInfoList(searchQdto);
if (!serviceResponse.isSuccess()) {
log.info("查询商品异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
if (serviceResponse.getResult() == null ||
CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
log.info("查询商品异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
return serviceResponse
.getResult()
.getResult()
.stream()
.map(GoodsSpuInfoDTO::getGoodsId)
.collect(Collectors.toList());
} }
/** /**
......
...@@ -5,7 +5,9 @@ import java.util.Date; ...@@ -5,7 +5,9 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import com.gic.haoban.manage.api.dto.chat.*;
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;
...@@ -19,10 +21,6 @@ import com.gic.api.base.commons.Page; ...@@ -19,10 +21,6 @@ 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.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.haoban.manage.api.dto.MaterialDTO; import com.gic.haoban.manage.api.dto.MaterialDTO;
import com.gic.haoban.manage.api.dto.chat.ChatOwnerTotalDTO;
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.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.service.MaterialApiService; 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;
...@@ -102,16 +100,29 @@ public class GroupChatPlanController { ...@@ -102,16 +100,29 @@ public class GroupChatPlanController {
} }
GroupChatPlanDTO plan = linkResp.getResult(); GroupChatPlanDTO plan = linkResp.getResult();
String content = plan.getChatContent(); String content = plan.getChatContent();
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
// 查询素材列表 // 查询素材列表
List<MaterialDTO> materials = materialApiService.listMaterialByIds(materialIdList); List<MaterialDTO> materials = new ArrayList<>();
Map<String, Object> retMap = new HashMap<>(); Map<String, Object> retMap = new HashMap<>();
retMap.put("plan", plan); retMap.put("plan", plan);
Integer materialFrom = plan.getMaterialFrom();
if (materialFrom == null || materialFrom == 1) {
JSONArray array = JSONArray.parseArray(content);
List<String> materialIdList = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject json = array.getJSONObject(i);
materialIdList.add(json.getString("relation_id"));
}
materials = materialApiService.listMaterialByIds(materialIdList);
}else {
List<ChatContentDTO> contentDTOList = JSONArray.parseArray(content, ChatContentDTO.class);
materials = contentDTOList.stream().map(x -> {
MaterialDTO materialDTO = new MaterialDTO();
materialDTO.setMaterialType(x.getType());
materialDTO.setMaterialContent(x.getContent());
materialDTO.setImgUrl(x.getImg());
return materialDTO;
}).collect(Collectors.toList());
}
retMap.put("materialList", materials); retMap.put("materialList", materials);
if (null != ownerLogId) { if (null != ownerLogId) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId); ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId);
......
...@@ -32,6 +32,16 @@ public class ContentMaterialBaseQO extends BasePageInfo { ...@@ -32,6 +32,16 @@ public class ContentMaterialBaseQO extends BasePageInfo {
*/ */
private String clerkId; private String clerkId;
/**
* 素材id
*/
private Long contentMaterialId;
/**
* 成员id
*/
private String staffId;
public String getEnterpriseId() { public String getEnterpriseId() {
return enterpriseId; return enterpriseId;
} }
...@@ -63,4 +73,20 @@ public class ContentMaterialBaseQO extends BasePageInfo { ...@@ -63,4 +73,20 @@ public class ContentMaterialBaseQO extends BasePageInfo {
public void setClerkId(String clerkId) { public void setClerkId(String clerkId) {
this.clerkId = clerkId; this.clerkId = clerkId;
} }
public Long getContentMaterialId() {
return contentMaterialId;
}
public void setContentMaterialId(Long contentMaterialId) {
this.contentMaterialId = contentMaterialId;
}
public String getStaffId() {
return staffId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
} }
...@@ -43,7 +43,7 @@ public class ContentMaterialShareQO implements Serializable { ...@@ -43,7 +43,7 @@ public class ContentMaterialShareQO implements Serializable {
private String storeCode; private String storeCode;
/** /**
* 1朋友圈; 2客户群; 3 对话框; 0其他 * 1朋友圈; 2客户群; 3 对话框; 4 复制文案; 5 下载素材
*/ */
private String channelSource; private String channelSource;
......
package com.gic.haoban.manage.web.qo.content.log;
import com.gic.haoban.manage.web.qo.content.ContentMaterialBaseQO;
/**
* @Author MUSI
* @Date 2023/3/17 10:57 AM
* @Description
* @Version
* 素材分享日志
**/
public class MaterialShareLogQO extends ContentMaterialBaseQO {
private static final long serialVersionUID = 2185842438469492808L;
/**
* 分享类型
* 1分享朋友圈; 2 群发给客户; 3 群发到群
*/
private Integer shareType;
public Integer getShareType() {
return shareType;
}
public void setShareType(Integer shareType) {
this.shareType = shareType;
}
}
package com.gic.haoban.manage.web.vo.content;
import java.io.Serializable;
/**
* @Author MUSI
* @Date 2023/3/17 12:53 PM
* @Description
* @Version
* 素材 导购信息
**/
public class MaterialClerkInfo implements Serializable {
private static final long serialVersionUID = -7344011473895833194L;
/**
* 导购名称
*/
private String clerkName;
/**
* 导购id
*/
private String clerkId;
/**
* 分享角色
* 导购、店长、区经
*/
private Integer clerkType;
/**
* 导购code
*/
private String clerkCode;
/**
* 与会员是否是好友关系
* 1 是; 0否
*/
private Integer memberRelation;
/**
* 导购活码链接
*/
private String clerkHmUrl;
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getClerkType() {
return clerkType;
}
public void setClerkType(Integer clerkType) {
this.clerkType = clerkType;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public Integer getMemberRelation() {
return memberRelation;
}
public void setMemberRelation(Integer memberRelation) {
this.memberRelation = memberRelation;
}
public String getClerkHmUrl() {
return clerkHmUrl;
}
public void setClerkHmUrl(String clerkHmUrl) {
this.clerkHmUrl = clerkHmUrl;
}
}
package com.gic.haoban.manage.web.vo.content.share;
import com.gic.haoban.manage.web.vo.content.ContentMaterialInfoVO;
import com.gic.haoban.manage.web.vo.content.MaterialClerkInfo;
import com.gic.haoban.manage.web.vo.content.SimpleGoodsInfoVO;
import java.io.Serializable;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/3/17 12:45 PM
* @Description
* @Version
* 素材落地页 信息
**/
public class ContentMaterialLandingPageVO implements Serializable {
private static final long serialVersionUID = 5618707014774433110L;
/**
* 素材信息 图片/视频、素材内容
*/
private ContentMaterialInfoVO contentMaterialInfo;
/**
* 导购相关信息
*/
private MaterialClerkInfo materialClerkInfo;
/**
* 商品信息
*/
private List<SimpleGoodsInfoVO> goodsInfos;
/**
* 商品类型
* 0 相关商品
* 1 热销商品
*/
private Integer showGoodsType;
/**
* 跳转商城按钮权限
* 1 有权限; 0 无权限
*/
private Integer mallShop;
/**
* 购物车数量
*/
private Integer shoppingCartNum;
public ContentMaterialInfoVO getContentMaterialInfo() {
return contentMaterialInfo;
}
public void setContentMaterialInfo(ContentMaterialInfoVO contentMaterialInfo) {
this.contentMaterialInfo = contentMaterialInfo;
}
public MaterialClerkInfo getMaterialClerkInfo() {
return materialClerkInfo;
}
public void setMaterialClerkInfo(MaterialClerkInfo materialClerkInfo) {
this.materialClerkInfo = materialClerkInfo;
}
public List<SimpleGoodsInfoVO> getGoodsInfos() {
return goodsInfos;
}
public void setGoodsInfos(List<SimpleGoodsInfoVO> goodsInfos) {
this.goodsInfos = goodsInfos;
}
public Integer getShowGoodsType() {
return showGoodsType;
}
public void setShowGoodsType(Integer showGoodsType) {
this.showGoodsType = showGoodsType;
}
public Integer getMallShop() {
return mallShop;
}
public void setMallShop(Integer mallShop) {
this.mallShop = mallShop;
}
public Integer getShoppingCartNum() {
return shoppingCartNum;
}
public void setShoppingCartNum(Integer shoppingCartNum) {
this.shoppingCartNum = shoppingCartNum;
}
}
...@@ -127,4 +127,6 @@ ...@@ -127,4 +127,6 @@
<dubbo:reference id="newDataTargetConfigApiService" interface="com.gic.enterprise.api.service.target.NewDataTargetConfigApiService" timeout="100000" retries="0" check="false" /> <dubbo:reference id="newDataTargetConfigApiService" interface="com.gic.enterprise.api.service.target.NewDataTargetConfigApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference interface="com.gic.store.goods.service.GoodsInfoOutApiService" id="goodsInfoOutApiService" timeout="100000" retries="0" check="false" /> <dubbo:reference interface="com.gic.store.goods.service.GoodsInfoOutApiService" id="goodsInfoOutApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference interface="com.gic.haoban.manage.api.service.content.MaterialShareLogApiService" id="materialShareLogApiService" timeout="100000" retries="0" check="false" />
</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