Commit 29e4d6bc by songyinghui

feat: 客户触达

parent af8b69b3
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 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;
}
}
package com.gic.haoban.manage.api.dto.content;
\ No newline at end of file
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);
}
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);
}
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);
}
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;
}
}
package com.gic.haoban.manage.service.pojo.bo.content;
/**
* @Author MUSI
* @Date 2023/3/18 9:02 PM
* @Description
* @Version
**/
public class ClerkShareLogBO {
/**
* 企业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.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;
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;
}
}
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.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 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;
}
}
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;
}
}
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);
}
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);
}
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 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.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());
}
}
package com.gic.haoban.manage.service.service.content.impl;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.common.utils.StringUtil;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.enums.content.ShareBizType;
import com.gic.haoban.manage.service.config.Config;
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.pojo.bo.content.TriggerCustomerDetailBO;
import com.gic.haoban.manage.service.pojo.qo.content.ClerkShareLogQO;
import com.gic.haoban.manage.service.pojo.qo.content.TriggerCustomerDetailQO;
import com.gic.haoban.manage.service.service.content.ClerkShareLogService;
import com.gic.haoban.manage.service.service.content.GroupMessageService;
import com.gic.haoban.manage.service.service.content.TriggerCustomerDetailService;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMessageQDTO;
import com.gic.wechat.api.dto.qdto.group.QywxGroupMsgSendResultQDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMessageInfoDTO;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgResp;
import com.gic.wechat.api.dto.qywx.group.QywxGroupMsgSendResultDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Author MUSI
* @Date 2023/3/19 9:49 PM
* @Description
* @Version 企微群发消息处理器
**/
@Component
public class GroupMessageServiceImpl implements GroupMessageService {
private static final Logger log = LoggerFactory.getLogger(GroupMessageServiceImpl.class);
public enum GroupMsgChatType {
single("single", "发送给客户"),
group("group", "发送给客户群");
GroupMsgChatType(String code, String desc) {
this.code = code;
this.desc = desc;
}
private String code;
private String desc;
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
@Autowired
private TriggerCustomerDetailService triggerCustomerDetailService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private ClerkShareLogService clerkShareLogService;
@Autowired
private Config config;
@Override
public void handlerGroupMessage(GroupMessageInfoBo groupMessageInfoBo) {
// 获取企业下(当前时间 - 30, 当前时间) 的导购分享日志
ClerkShareLogQO clerkShareLogQO = new ClerkShareLogQO()
.setEnterpriseId(groupMessageInfoBo.getEnterpriseId())
.setStartTime(groupMessageInfoBo.getStartTime())
.setEndTime(groupMessageInfoBo.getEndTime())
.setBizType(ShareBizType.MATERIAL.getCode());
List<ClerkShareLogBO> shareLogBos = clerkShareLogService.queryClerkShareLog(clerkShareLogQO);
if (CollectionUtils.isEmpty(shareLogBos)) {
return;
}
// 获取企业下的群发记录
String corpId = "";
// 发送给客户的消息
List<QywxGroupMessageInfoDTO> sendWithCustomerMsg = this.queryGroupMsg(corpId, GroupMsgChatType.single);
// 发送到群
List<QywxGroupMessageInfoDTO> sendWithGroupMsg = this.queryGroupMsg(corpId, GroupMsgChatType.single);
// 匹配msgId
// 获取触发日志详情
// 保存客户触达日志明细
}
private List<QywxGroupMessageInfoDTO> queryGroupMsg(String corpid, GroupMsgChatType groupMsgChatType) {
List<QywxGroupMessageInfoDTO> groupMessageInfos = new ArrayList<>();
QywxGroupMessageQDTO groupMessageQDTO = new QywxGroupMessageQDTO();
groupMessageQDTO.setCorpid(corpid);
groupMessageQDTO.setSuiteid(config.getWxSuiteid());
groupMessageQDTO.setChatType(groupMsgChatType.getCode());
groupMessageQDTO.setPageSize(100);
ServiceResponse<QywxGroupMsgResp> serviceResponse =
qywxSuiteApiService.queryQywxGroupMessageList(groupMessageQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getGroupMessageInfos())) {
log.info("获取群发任务记录异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
QywxGroupMsgResp groupMsgResp = serviceResponse.getResult();
List<QywxGroupMessageInfoDTO> tempMessageInfos = groupMsgResp.getGroupMessageInfos();
groupMessageInfos.addAll(tempMessageInfos);
String cursor = groupMsgResp.getCursor();
int loopTimes = 0;
while (StringUtils.isNotBlank(cursor)) {
loopTimes++;
log.info("查询群消息 第{}次查询", loopTimes);
groupMessageQDTO.setCursor(cursor);
ServiceResponse<QywxGroupMsgResp> tempResponse =
qywxSuiteApiService.queryQywxGroupMessageList(groupMessageQDTO);
if (!tempResponse.isSuccess() || CollectionUtils.isEmpty(tempResponse.getResult().getGroupMessageInfos())) {
log.info("查询群消息异常 跳出循环 {}", loopTimes);
break;
}
groupMessageInfos.addAll(tempResponse.getResult().getGroupMessageInfos());
cursor = tempResponse.getResult().getCursor();
}
return groupMessageInfos;
}
/**
* 群发给客户
* @param corpid
* @param msgId
* @param userId
* @param cursor
* @param clerkShareLogBO
*/
private void handlerGroupMsgWithCustomer(String corpid, String msgId, String userId, String cursor, ClerkShareLogBO clerkShareLogBO) {
QywxGroupMsgSendResultQDTO searchQDTO = new QywxGroupMsgSendResultQDTO();
searchQDTO.setCorpid(corpid);
searchQDTO.setSuiteid(config.getWxSuiteid());
searchQDTO.setPageSize(1000);
searchQDTO.setMsgId(msgId);
searchQDTO.setUserId(userId);
searchQDTO.setCursor(cursor);
ServiceResponse<QywxGroupMsgSendResultDTO> serviceResponse = qywxSuiteApiService.queryQywxGroupMsgSendResult(searchQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getSendResultInfos())) {
return;
}
List<TriggerCustomerDetailBO> customerDetailBos = serviceResponse.getResult()
.getSendResultInfos()
.stream()
.map(item -> {
TriggerCustomerDetailBO temp = new TriggerCustomerDetailBO();
temp.setId(UniqueIdUtils.uniqueLong());
temp.setEnterpriseId(clerkShareLogBO.getEnterpriseId());
temp.setWxEnterpriseId(clerkShareLogBO.getWxEnterpriseId());
temp.setBizId(clerkShareLogBO.getBizId());
temp.setBizType(clerkShareLogBO.getBizType());
temp.setClerkId(clerkShareLogBO.getClerkId());
temp.setStaffId(clerkShareLogBO.getStaffId());
temp.setChannelType(clerkShareLogBO.getShareType());
temp.setCustomerId(item.getExternalUserId());
temp.setCreateTime(new Date());
temp.setUpdateTime(new Date());
temp.setDeleteFlag(0);
return temp;
})
.collect(Collectors.toList());
triggerCustomerDetailService.batchSave(customerDetailBos);
if (StringUtils.isNotBlank(serviceResponse.getResult().getCursor())) {
String tempCursor = serviceResponse.getResult().getCursor();
this.handlerGroupMsgWithCustomer(corpid, msgId, userId, tempCursor, clerkShareLogBO);
}
// 标记该条分享日志为已分享
}
}
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;
}
}
package com.gic.haoban.manage.service.service.out.impl.content;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.content.log.ClerkShareMaterialLogDTO;
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);
@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);
return ServiceResponse.success(logId);
}
}
package com.gic.haoban.manage.service.service.out.impl.content.task;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.service.content.task.QywxGroupMsgTaskApiService;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @Author MUSI
* @Date 2023/3/19 8:33 PM
* @Description
* @Version
**/
@Component("qywxGroupMsgTaskApiServiceImpl")
public class QywxGroupMsgTaskApiServiceImpl implements QywxGroupMsgTaskApiService {
@Override
public ServiceResponse<Void> groupMsgTaskJob(String params) {
// 获取开启【内容】权限的企业id
List<String> enterpriseIds = new ArrayList<>();
// 获取企业 (当前时间 - 30分钟, 当前时间)范围内的 导购分享记录。按创建时间排序
// 获取当前时间段内的数据
return ServiceResponse.success();
}
}
...@@ -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
<?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>
</where>
limit #{pageable.offset}, #{pageable.pageSize}
</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>
</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.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\":\"元宵快乐\"}}]}";
}
} }
package com.gic.haoban.manage.web.controller.content; 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.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.ContentMaterialBaseQO;
import com.gic.haoban.manage.web.qo.content.log.MaterialShareLogQO; 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.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
* @Author MUSI * 导购分享素材 与素材落地页
* @Date 2023/3/17 10:54 AM */
* @Description
* @Version
* 导购分享素材日志
**/
@RestController @RestController
public class ClerkMaterialShareController { public class ClerkMaterialShareController {
private static final Logger log = LoggerFactory.getLogger(ClerkMaterialShareController.class);
@Autowired
private MaterialShareLogApiService materialShareLogApiService;
/** /**
* 导购分享素材日志 * 导购分享素材日志
* @return * @return
*/ */
@RequestMapping(path = "/clerk/share/material/log") @RequestMapping(path = "/clerk/share/material/log", method = RequestMethod.POST)
public RestResponse<?> clerkShareMaterialLog(MaterialShareLogQO materialShareLogQo) { public RestResponse<Long> clerkShareMaterialLog(@RequestBody MaterialShareLogQO materialShareLogQo) {
return RestResponse.successResult(); 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.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", "系统异常");
} }
...@@ -32,8 +62,8 @@ public class ClerkMaterialShareController { ...@@ -32,8 +62,8 @@ public class ClerkMaterialShareController {
* @param contentMaterialBaseQO * @param contentMaterialBaseQO
* @return * @return
*/ */
public RestResponse<?> queryMaterialLandingPage(ContentMaterialBaseQO contentMaterialBaseQO){ @RequestMapping(path = "/content/material/share/landing/page/info")
public RestResponse<ContentMaterialLandingPageVO> queryMaterialLandingPage(ContentMaterialBaseQO contentMaterialBaseQO){
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());
} }
/** /**
......
...@@ -40,11 +40,63 @@ public class ContentMaterialLandingPageVO implements Serializable { ...@@ -40,11 +40,63 @@ public class ContentMaterialLandingPageVO implements Serializable {
*/ */
private Integer showGoodsType; private Integer showGoodsType;
// 跳转商城按钮权限 /**
* 跳转商城按钮权限
* 1 有权限; 0 无权限
*/
private Integer mallShop; private Integer mallShop;
/** /**
* 购物车数量 * 购物车数量
*/ */
private Integer shoppingCartNum; 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