Commit 67950e11 by 徐高华

parent 3832e262
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable;
import com.gic.haoban.manage.api.dto.StaffDTO;
/**
*
* @ClassName: TabHaobanGroupChatOwner
* @Description: TODO
* @Author 徐高华
* @Date 2022年12月04日 10:08:25
* @Modify
* @CopyRight
*/
public class GroupChatOwnerDTO extends StaffDTO implements Serializable {
private static final long serialVersionUID = 237823065250200L;
/**成员ID*/
private String staffId;
private String wxEnterpriseId;
/**群数量*/
private Integer chatCount;
private java.util.Date createTime;
private java.util.Date updateTime;
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public String getStaffId() {
return staffId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setChatCount(Integer chatCount) {
this.chatCount = chatCount;
}
public Integer getChatCount() {
return chatCount;
}
public void setCreateTime(java.util.Date createTime) {
this.createTime = createTime;
}
public java.util.Date getCreateTime() {
return createTime;
}
public void setUpdateTime(java.util.Date updateTime) {
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime() {
return updateTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.api.dto.chat;
import java.io.Serializable ;
import java.util.Date;
/**
*
......@@ -28,8 +29,35 @@ public class GroupChatPlanOwnerLogDTO implements Serializable{
private Integer sendCount;
private java.util.Date createTime;
private java.util.Date updateTime;
private String remark ;
private String msgid ;
private Date expireDate ;
public void setOwnerLogId(Long ownerLogId){
public Date getExpireDate() {
return expireDate;
}
public void setExpireDate(Date expireDate) {
this.expireDate = expireDate;
}
public String getRemark() {
return remark;
}
public String getMsgid() {
return msgid;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void setMsgid(String msgid) {
this.msgid = msgid;
}
public void setOwnerLogId(Long ownerLogId){
this.ownerLogId = ownerLogId;
}
......
package com.gic.haoban.manage.api.dto.qdto.chat;
import java.io.Serializable;
import com.gic.haoban.manage.api.dto.StaffDTO;
/**
*
* @ClassName: TabHaobanGroupChatOwner
* @Description: TODO
* @Author 徐高华
* @Date 2022年12月04日 10:08:25
* @Modify
* @CopyRight
*/
public class OwnerSearchQDTO implements Serializable {
}
\ No newline at end of file
......@@ -25,4 +25,14 @@ public interface GroupChatPlanApiService {
// 保存/更新
public ServiceResponse<GroupChatPlanDTO> save(GroupChatPlanDTO dto);
/**
*
* @Title: doPlanTimer
* @Description: 定时执行计划
* @author xugh
* @param params
* @return
* @throws
*/
public ServiceResponse<Void> doPlanTimer(String params);
}
package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
......@@ -17,17 +18,21 @@ import com.gic.haoban.manage.service.entity.chat.TabGroupChat;
* @CopyRight
*/
public interface GroupChatMapper {
public int getCountByStaffId(String staffId) ;
public int insert(TabGroupChat tabHaobanGroupChat);
public int deleteByPrimaryKey(Long groupChatId);
public int update(TabGroupChat tabHaobanGroupChat);
public int updateData() ;
public void updateWxChatId3th(@Param("staffId")String staffId , @Param("name")String name , @Param("chatAddTime")Date chatAddTime , @Param("wxChatId3th")String wxChatId3th);
public int updateData();
// 更新群状态
public int updateChatStatus(@Param("groupChatId")Long groupChatId , @Param("chatStatus")int chatStatus) ;
public int updateChatStatus(@Param("groupChatId") Long groupChatId, @Param("chatStatus") int chatStatus);
public TabGroupChat selectById(Long groupChatId);
......@@ -36,9 +41,16 @@ public interface GroupChatMapper {
public TabGroupChat selectByWxChatId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("wxChatId") String wxChatId);
public TabGroupChat selectByWxChatId3th(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("wxChatId3th") String wxChatId3th);
public List<TabGroupChat> listAllNeedInit();
public List<TabGroupChat> listAllNeedInitWxChatId3th();
public List<TabGroupChat> list(GroupChatSearchQDTO qdto);
public void updateChatEnterpriseId(@Param("wxEnterpriseId")String wxEnterpriseId, @Param("enterpriseId")String enterpriseId, @Param("groupChatIdList")List<Long> groupChatIdList);
public void updateChatEnterpriseId(@Param("wxEnterpriseId") String wxEnterpriseId,
@Param("enterpriseId") String enterpriseId, @Param("groupChatIdList") List<Long> groupChatIdList);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner;
/**
*
* @ClassName: TabHaobanGroupChatOwnerMapper
* @Description: TODO
* @Author 徐高华
* @Date 2022年12月04日 10:08:25
* @Modify
* @CopyRight
*/
public interface GroupChatOwnerMapper {
public int insert(TabGroupChatOwner owner);
public TabGroupChatOwner selectByStaffId(@Param("staffId") String staffId);
public int updateChatCount(@Param("staffId") String staffId, @Param("chatCount") int chatCount);
public List<GroupChatOwnerDTO> listOwner(GroupChatOwnerDTO qdto);
}
\ No newline at end of file
......@@ -17,11 +17,5 @@ public interface GroupChatPlanLogMapper {
public int insert(TabGroupChatPlanLog entity);
public int deleteByPrimaryKey(Long logId);
public int updateByPrimaryKey(TabGroupChatPlanLog entity);
public TabGroupChatPlanLog selectByPrimaryKey(Long logId);
public List<TabGroupChatPlanLog> listAll(TabGroupChatPlanLog entity);
public List<TabGroupChatPlanLog> listPlanLog(TabGroupChatPlanLog entity);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper.chat;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
/**
......@@ -17,11 +20,10 @@ public interface GroupChatPlanOwnerLogMapper {
public int insert(TabGroupChatPlanOwnerLog entity);
public int deleteByPrimaryKey(Long ownerLogId);
public int updateByPrimaryKey(TabGroupChatPlanOwnerLog entity);
public TabGroupChatPlanOwnerLog selectByPrimaryKey(Long ownerLogId);
public TabGroupChatPlanOwnerLog selectById(Long ownerLogId);
public List<TabGroupChatPlanOwnerLog> listAll(TabGroupChatPlanOwnerLog entity);
public void updateSendCount(@Param("id") Long id, @Param("sendCount") int sendCount,
@Param("sendTime") Date sendTime);
}
\ No newline at end of file
......@@ -52,8 +52,17 @@ public class TabGroupChat implements Serializable{
private String enterpriseId;
private Integer statusFlag;
private Integer initFlag ;
private String wxChatId3th;
public Integer getInitFlag() {
public String getWxChatId3th() {
return wxChatId3th;
}
public void setWxChatId3th(String wxChatId3th) {
this.wxChatId3th = wxChatId3th;
}
public Integer getInitFlag() {
return initFlag;
}
......
package com.gic.haoban.manage.service.entity.chat;
import java.io.Serializable;
/**
*
* @ClassName: TabHaobanGroupChatOwner
* @Description: TODO
* @Author 徐高华
* @Date 2022年12月04日 10:08:25
* @Modify
* @CopyRight
*/
public class TabGroupChatOwner implements Serializable {
private static final long serialVersionUID = 237823065250200L;
/**成员ID*/
private String staffId;
private String wxEnterpriseId;
/**群数量*/
private Integer chatCount;
private java.util.Date createTime;
private java.util.Date updateTime;
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public String getStaffId() {
return staffId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setChatCount(Integer chatCount) {
this.chatCount = chatCount;
}
public Integer getChatCount() {
return chatCount;
}
public void setCreateTime(java.util.Date createTime) {
this.createTime = createTime;
}
public java.util.Date getCreateTime() {
return createTime;
}
public void setUpdateTime(java.util.Date updateTime) {
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime() {
return updateTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.entity.chat;
import java.io.Serializable ;
import java.util.Date;
/**
*
......@@ -27,8 +28,35 @@ public class TabGroupChatPlanLog implements Serializable{
private java.util.Date sendTime;
private java.util.Date createTime;
private java.util.Date updateTime;
public void setLogId(Long logId){
private String enterpriseId ;
private Integer deleteFlag ;
private String wxChatId3th ;
public String getWxChatId3th() {
return wxChatId3th;
}
public void setWxChatId3th(String wxChatId3th) {
this.wxChatId3th = wxChatId3th;
}
public String getEnterpriseId() {
return enterpriseId;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public void setLogId(Long logId){
this.logId = logId;
}
......
package com.gic.haoban.manage.service.entity.chat;
import java.io.Serializable ;
import java.io.Serializable;
import java.util.Date;
/**
*
......@@ -11,106 +12,171 @@ import java.io.Serializable ;
* @Modify
* @CopyRight
*/
public class TabGroupChatPlanOwnerLog implements Serializable{
private static final long serialVersionUID = 21697825515700L;
private Long ownerLogId;
private Long planId;
private String wxEnterpriseId;
private String enterpriseId;
private String staffId;
private String storeId;
private String clerkId;
/**1已发送 0待发送*/
private Integer sendStatus;
private Integer totalCount;
private Integer sendCount;
private java.util.Date createTime;
private java.util.Date updateTime;
public void setOwnerLogId(Long ownerLogId){
this.ownerLogId = ownerLogId;
}
public Long getOwnerLogId(){
return ownerLogId;
}
public void setPlanId(Long planId){
this.planId = planId;
}
public Long getPlanId(){
return planId;
}
public void setWxEnterpriseId(String wxEnterpriseId){
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseId(){
return wxEnterpriseId;
}
public void setEnterpriseId(String enterpriseId){
this.enterpriseId = enterpriseId;
}
public String getEnterpriseId(){
return enterpriseId;
}
public void setStaffId(String staffId){
this.staffId = staffId;
}
public String getStaffId(){
return staffId;
}
public void setStoreId(String storeId){
this.storeId = storeId;
}
public String getStoreId(){
return storeId;
}
public void setClerkId(String clerkId){
this.clerkId = clerkId;
}
public String getClerkId(){
return clerkId;
}
public void setSendStatus(Integer sendStatus){
this.sendStatus = sendStatus;
}
public Integer getSendStatus(){
return sendStatus;
}
public void setTotalCount(Integer totalCount){
this.totalCount = totalCount;
}
public Integer getTotalCount(){
return totalCount;
}
public void setSendCount(Integer sendCount){
this.sendCount = sendCount;
}
public Integer getSendCount(){
return sendCount;
}
public void setCreateTime(java.util.Date createTime){
this.createTime = createTime;
}
public java.util.Date getCreateTime(){
return createTime;
}
public void setUpdateTime(java.util.Date updateTime){
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime(){
return updateTime;
}
public class TabGroupChatPlanOwnerLog implements Serializable {
private static final long serialVersionUID = 21697825515700L;
private Long ownerLogId;
private Long planId;
private String wxEnterpriseId;
private String enterpriseId;
private String staffId;
private String storeId;
private String clerkId;
/**1已发送 0待发送*/
private Integer sendStatus;
private Integer totalCount;
private Integer sendCount;
private java.util.Date createTime;
private java.util.Date updateTime;
private String remark;
private String msgid;
private Integer doneFlag;
private Integer deleteFlag;
private Date sendTime;
private Date expireDate;
public Date getExpireDate() {
return expireDate;
}
public void setExpireDate(Date expireDate) {
this.expireDate = expireDate;
}
public Date getSendTime() {
return sendTime;
}
public void setSendTime(Date sendTime) {
this.sendTime = sendTime;
}
public String getMsgid() {
return msgid;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setMsgid(String msgid) {
this.msgid = msgid;
}
public Integer getDoneFlag() {
return doneFlag;
}
public void setDoneFlag(Integer doneFlag) {
this.doneFlag = doneFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public void setOwnerLogId(Long ownerLogId) {
this.ownerLogId = ownerLogId;
}
public Long getOwnerLogId() {
return ownerLogId;
}
public void setPlanId(Long planId) {
this.planId = planId;
}
public Long getPlanId() {
return planId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setStaffId(String staffId) {
this.staffId = staffId;
}
public String getStaffId() {
return staffId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getStoreId() {
return storeId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public String getClerkId() {
return clerkId;
}
public void setSendStatus(Integer sendStatus) {
this.sendStatus = sendStatus;
}
public Integer getSendStatus() {
return sendStatus;
}
public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount;
}
public Integer getTotalCount() {
return totalCount;
}
public void setSendCount(Integer sendCount) {
this.sendCount = sendCount;
}
public Integer getSendCount() {
return sendCount;
}
public void setCreateTime(java.util.Date createTime) {
this.createTime = createTime;
}
public java.util.Date getCreateTime() {
return createTime;
}
public void setUpdateTime(java.util.Date updateTime) {
this.updateTime = updateTime;
}
public java.util.Date getUpdateTime() {
return updateTime;
}
}
\ No newline at end of file
......@@ -24,4 +24,17 @@ public interface QywxSendService {
*/
public ServiceResponse<String> share(String wxEnterpriseId, List<String> clerkIdList, String message,
List<ContentMaterialDTO> imageList);
/**
*
* @Title: sendChatMessage
* @Description: 群群发
* @author xugh
* @param wxEnterpriseId
* @param staffId
* @param materialIdList
* @return
* @throws
*/
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList);
}
package com.gic.haoban.manage.service.service.chat;
public interface GroupChatPlanLogService {
}
\ No newline at end of file
package com.gic.haoban.manage.service.service.chat;
import java.util.Date;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
public interface GroupChatPlanOwnerLogService {
public void save(GroupChatPlanOwnerLogDTO dto);
public void updateSendCount(Long id, int sendCount, Date sendTime);
TabGroupChatPlanOwnerLog getById(Long ownerLogId);
}
\ No newline at end of file
......@@ -7,11 +7,15 @@ import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO;
public interface GroupChatPlanService {
public void save(GroupChatPlanDTO dto);
GroupChatPlanBO getById(Long hmId);
public Page<GroupChatPlanBO> listPage(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo);
public void doPlan(Long planId);
public void doPlanSendInfoTimer(String params) ;
}
\ No newline at end of file
......@@ -48,6 +48,10 @@ public interface GroupChatService {
* @throws
*/
public GroupChatBO detail(String wxEnterpriseId, Long groupChatId);
public GroupChatBO getByWxChatId(String wxEnterpriseId, String wxChatId);
public GroupChatBO getByWxChatId3th(String wxEnterpriseId, String wxChatId3th);
/**
*
......
......@@ -27,9 +27,7 @@ import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatHmMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatMapper;
import com.gic.haoban.manage.service.entity.chat.TabGroupChat;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatHm;
import com.gic.haoban.manage.service.entity.hm.TabHmLink;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatHmBO;
import com.gic.haoban.manage.service.pojo.bo.hm.HmLinkBO;
import com.gic.haoban.manage.service.service.SecretSettingService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.chat.GroupChatHmService;
......
package com.gic.haoban.manage.service.service.chat.impl;
import org.springframework.stereotype.Service;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanLogService;
@Service
public class GroupChatPlanLogServiceImpl implements GroupChatPlanLogService {
}
\ No newline at end of file
package com.gic.haoban.manage.service.service.chat.impl;
import java.util.Date;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanOwnerLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
import com.gic.haoban.manage.service.service.ClerkMainStoreRelatedService;
import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanOwnerLogService;
@Service
public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogService{
@Service("groupChatPlanOwnerLogService")
public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogService {
private static final Logger logger = LogManager.getLogger(GroupChatPlanOwnerLogService.class);
@Autowired
private GroupChatPlanOwnerLogMapper groupChatPlanOwnerLogMapper;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
@Autowired
private ClerkMainStoreRelatedService clerkMainStoreRelatedService;
public TabGroupChatPlanOwnerLog getById(Long ownerLogId){
TabGroupChatPlanOwnerLog log = this.groupChatPlanOwnerLogMapper.selectById(ownerLogId) ;
return log ;
}
@Override
public void updateSendCount(Long id, int sendCount, Date sendTime) {
this.groupChatPlanOwnerLogMapper.updateSendCount(id,sendCount,sendTime);
}
@Override
public void save(GroupChatPlanOwnerLogDTO dto) {
TabGroupChatPlanOwnerLog log = EntityUtil.changeEntityByJSON(TabGroupChatPlanOwnerLog.class, dto);
log.setOwnerLogId(UniqueIdUtils.uniqueLong());
log.setSendStatus(0);
log.setCreateTime(new Date());
log.setUpdateTime(new Date());
log.setSendCount(0);
String staffId = dto.getStaffId();
TabHaobanClerkMainStoreRelated mainStore = this.clerkMainStoreRelatedService.getMainStoreByStaffId(staffId,
dto.getWxEnterpriseId());
if (null == mainStore) {
log.setRemark("区经/未配置主门店");
} else {
StaffClerkRelationDTO clerk = this.staffClerkRelationService.getOneBindByStoreId(staffId,
mainStore.getStoreId());
if (null != clerk) {
log.setClerkId(clerk.getClerkId());
log.setStoreId(mainStore.getStoreId());
} else {
log.setRemark("关联导购数据查不到");
logger.info("导购关联数据不存在,staffid={},storeid={}", staffId, mainStore.getStoreId());
}
}
this.groupChatPlanOwnerLogMapper.insert(log);
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanLogMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatBO;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO;
import com.gic.haoban.manage.service.service.QywxSendService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanOwnerLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.wechat.api.dto.qywx.QywxSendMessageResultDTO;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.github.pagehelper.PageHelper;
@Service
@Service("groupChatPlanService")
public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(GroupChatPlanService.class);
@Autowired
private GroupChatPlanMapper groupChatPlanMapper;
@Autowired
private GroupChatPlanOwnerLogService groupChatPlanOwnerLogService;
@Autowired
private GroupChatPlanLogMapper groupChatPlanLogMapper;
@Autowired
private QywxSendService qywxSendService;
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private Config config;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private StaffMapper staffMapper;
@Autowired
private GroupChatService groupChatService;
@Override
public void save(GroupChatPlanDTO dto) {
......@@ -44,4 +88,97 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
return retPage;
}
@Override
public void doPlan(Long planId) {
logger.info("开始执行群群发计划,planId={}", planId);
TabGroupChatPlan plan = this.groupChatPlanMapper.selectById(planId);
if (null == plan) {
logger.info("计划不存在,planid={}", planId);
return;
}
String[] staffIdList = plan.getStaffIdList().split(",");
String wxEnterpriseId = plan.getWxEnterpriseId();
String enterpriseId = plan.getEnterpriseId();
String chatContent = plan.getChatContent();
JSONArray jsonArr = JSONArray.parseArray(chatContent);
List<String> madidList = new ArrayList<>();
for (int i = 0; i < jsonArr.size(); i++) {
JSONObject json = jsonArr.getJSONObject(i);
madidList.add(json.getString("relation_id"));
}
for (int i = 0; i < staffIdList.length; i++) {
String staffId = staffIdList[i];
ServiceResponse<String> sendResp = qywxSendService.sendChatMessage(wxEnterpriseId, staffId, madidList);
GroupChatPlanOwnerLogDTO ownerDTO = new GroupChatPlanOwnerLogDTO();
if (sendResp.isSuccess()) {
String msgid = sendResp.getResult();
ownerDTO.setMsgid(msgid);
ownerDTO.setSendStatus(1);
} else {
ownerDTO.setRemark(sendResp.getMessage());
ownerDTO.setSendStatus(0);
}
// 群主群数量
ownerDTO.setExpireDate(DateUtil.addDay(new Date(), plan.getExpireDays()));
ownerDTO.setTotalCount(0);
ownerDTO.setWxEnterpriseId(wxEnterpriseId);
ownerDTO.setEnterpriseId(enterpriseId);
ownerDTO.setStaffId(staffId);
ownerDTO.setPlanId(planId);
this.groupChatPlanOwnerLogService.save(ownerDTO);
}
}
@Override
public void doPlanSendInfoTimer(String params) {
Long owner_log_id = 472092751301763073L;
TabGroupChatPlanOwnerLog ownerLog = this.groupChatPlanOwnerLogService.getById(owner_log_id);
String wxEnterpriseId = ownerLog.getWxEnterpriseId();
String enterpriseId = ownerLog.getEnterpriseId();
String msgid = ownerLog.getMsgid();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
if (qwDTO != null) {
}
String staffId = ownerLog.getStaffId();
TabHaobanStaff staff = this.staffMapper.selectByPrimaryKey(staffId);
String userid = staff.getWxUserId();
if (qwDTO.needOpenUserId3th()) {
userid = staff.getWxOpenUseId();
}
JSONResponse respon = qywxSuiteApiService.resultExternalMessage(qwDTO.getThirdCorpid(), config.getWxSuiteid(),
msgid, null, userid);
logger.info(JSON.toJSONString(respon));
if (respon.getErrorCode() == 0) {
List<QywxSendMessageResultDTO> list = (List<QywxSendMessageResultDTO>) respon.getList();
if (CollectionUtils.isNotEmpty(list)) {
int sendCount = list.size();
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime());
for (QywxSendMessageResultDTO item : list) {
String wxChatId3th = item.getChatId();
Date sendTime = item.getSendTime();
TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
entity.setLogId(UniqueIdUtils.uniqueLong());
entity.setPlanId(ownerLog.getPlanId());
entity.setOwnLogId(ownerLog.getOwnerLogId());
entity.setWxEnterpriseId(wxEnterpriseId);
entity.setEnterpriseId(enterpriseId);
entity.setWxChatId3th(wxChatId3th);
GroupChatBO chat = this.groupChatService.getByWxChatId3th(wxEnterpriseId, wxChatId3th);
if (null != chat) {
entity.setGroupChatId(chat.getGroupChatId());
}
entity.setSendTime(sendTime);
entity.setSendStatus(1);
this.groupChatPlanLogMapper.insert(entity);
}
}
}
}
}
\ No newline at end of file
......@@ -141,6 +141,7 @@ public class MaterialServiceImpl implements MaterialService {
materialDTO.setMediaId(madiaId);
materialDTO.setWxLastUploadTime(date);
return materialDTO;
}
private String reUpdalodMetail(String materialId,int from) {
......
......@@ -73,30 +73,33 @@ public class QywxSendServiceImpl implements QywxSendService {
private QywxExternalUserService qywxExternalUserService;
@Autowired
private TabHaobanStaffClerkRelationMapper tabHaobanStaffClerkRelationMapper;
private static final String single = "single" ;
private static final String group = "group" ;
@Override
public ServiceResponse<String> sendMessage(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<String> materialIdList) {
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, null, 1);
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, null, 1 , single);
}
@Override
public ServiceResponse<String> sendMessageShare(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<ContentMaterialDTO> imageList, String message) {
List<String> materialIdList = this.getImageMediaId(wxEnterpriseId, imageList, 1);
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, message, 2);
return this.send(wxEnterpriseId, staffId, extendUserList, materialIdList, message, 2 , null);
}
// 群发发送
private ServiceResponse<String> send(String wxEnterpriseId, String staffId, List<String> extendUserList,
List<String> materialIdList, String message, int from) {
List<String> materialIdList, String message, int from , String chatType) {
TabHaobanStaff tabHaobanStaff = staffService.selectById(staffId);
if (null == tabHaobanStaff) {
log.info("staff不存在,staffId={}", staffId);
return ServiceResponse.failure("9999", "群发失败,成员不存在");
}
// 群发请求参数
QywxExternalMessageDTO messageDTO = this.getMessage(from, message, materialIdList);
QywxExternalMessageDTO messageDTO = this.getMessage(from, message, materialIdList,chatType);
if (messageDTO.getAttachments().isEmpty() && StringUtils.isBlank(messageDTO.getContent())) {
return ServiceResponse.failure("9999", "群发素材不存在, 群发创建失败");
}
......@@ -152,7 +155,7 @@ public class QywxSendServiceImpl implements QywxSendService {
List<ContentMaterialDTO> imageList) {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
List<String> materialIdList = this.getImageMediaId(wxEnterpriseId, imageList, 2);
QywxExternalMessageDTO dto = this.getMessage(2, message, materialIdList);
QywxExternalMessageDTO dto = this.getMessage(2, message, materialIdList,null);
MomentTaskDTO moment = EntityUtil.changeEntity(MomentTaskDTO.class, dto);
Text text = new Text();
text.setContent(dto.getContent());
......@@ -186,9 +189,9 @@ public class QywxSendServiceImpl implements QywxSendService {
}
// from 1好办素材 2内容中台
private QywxExternalMessageDTO getMessage(int from, String message, List<String> materialIdList) {
private QywxExternalMessageDTO getMessage(int from, String message, List<String> materialIdList , String chatType) {
QywxExternalMessageDTO messageDTO = new QywxExternalMessageDTO();
messageDTO.setChatType("single");
messageDTO.setChatType(chatType);
List<QywxMessageMaterialDTO> attachList = new ArrayList<>();
if (from == 2) {
if (StringUtils.isNotBlank(message)) {
......@@ -252,4 +255,9 @@ public class QywxSendServiceImpl implements QywxSendService {
}
return dto;
}
@Override
public ServiceResponse<String> sendChatMessage(String wxEnterpriseId, String staffId, List<String> materialIdList) {
return this.send(wxEnterpriseId, staffId, null, materialIdList, null, 1 , group);
}
}
......@@ -39,5 +39,21 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
this.groupChatPlanService.save(dto);
return ServiceResponse.success(dto);
}
/**
*
* @Title: doPlan
* @Description: 定时执行计划
* @author xugh
* @param planId
* @return
* @throws
*/
@Override
public ServiceResponse<Void> doPlanTimer(String params) {
Long planId = Long.parseLong(params) ;
this.groupChatPlanService.doPlan(planId) ;
return ServiceResponse.success();
}
}
......@@ -24,6 +24,7 @@
<result column="enterprise_id" property="enterpriseId" />
<result column="status_flag" property="statusFlag" />
<result column="init_flag" property="initFlag" />
<result column="wx_chat_id_3th" property="wxChatId3th" />
</resultMap>
<sql id="Base_Column_List">
group_chat_id,
......@@ -45,7 +46,7 @@
quit_count,
quit_member_count,
enterprise_id,
status_flag , init_flag
status_flag , init_flag , wx_chat_id_3th
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert"
......@@ -100,7 +101,7 @@
<!-- =====================删除==================== -->
<update id="deleteByPrimaryKey" parameterType="long">
UPDATE
tab_haoban_group_chat SET delete_flag = 1 WHERE group_chat_id =
tab_haoban_group_chat SET delete_flag = 1 , update_time=now() WHERE group_chat_id =
#{groupChatId}
</update>
......@@ -124,6 +125,9 @@
]]>
</update>
<update id="updateWxChatId3th">
update tab_haoban_group_chat set wx_chat_id_3th=#{wxChatId3th} where staff_id = #{staffId} and chat_add_time=#{chatAddTime} and name=#{name}
</update>
<update id="updateChatStatus">
update tab_haoban_group_chat set chat_status = #{chatStatus} ,
......@@ -160,11 +164,28 @@
and wx_enterprise_id = #{wxEnterpriseId}
and delete_flag = 0
</select>
<select id="selectByWxChatId3th" resultMap="result-map-tabHaobanGroupChat">
select
<include refid="Base_Column_List" />
FROM tab_haoban_group_chat WHERE wx_chat_id_3th = #{wxChatId3th}
and wx_enterprise_id = #{wxEnterpriseId}
and delete_flag = 0
</select>
<select id="getCountByStaffId" resultType="int">
select count(*) from tab_haoban_group_chat where staff_id = #{staffId} and delete_flag = 0
</select>
<select id="listAllNeedInit" resultMap="result-map-tabHaobanGroupChat">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat where create_time > DATE_ADD(NOW(),INTERVAL -7 day) and init_flag = 0
</select>
<select id="listAllNeedInitWxChatId3th" resultMap="result-map-tabHaobanGroupChat">
select wx_enterprise_id wxEnterpriseId , staff_id staffId from tab_haoban_group_chat where create_time > DATE_ADD(NOW(),INTERVAL -1 day) and wx_chat_id_3th is null and init_flag = 1 and name is not null
group by wx_enterprise_id , staff_id
</select>
<select id="list" resultMap="result-map-tabHaobanGroupChat">
select <include refid="Base_Column_List" /> from ta_haoban_group_chat where wx_enterprise_id=#{wxEnterpriseId} and delete_flag = 0
</select>
......
<?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.chat.GroupChatOwnerMapper">
<resultMap type="com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner" id="result-map-tabHaobanGroupChatOwner">
<result column="staff_id" property="staffId"/>
<result column="wx_enterprise_id" property="wxEnterpriseId"/>
<result column="chat_count" property="chatCount"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
staff_id,
wx_enterprise_id,
chat_count,
create_time,
update_time
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner">
<![CDATA[
INSERT INTO tab_haoban_group_chat_owner(
staff_id,
wx_enterprise_id,
chat_count,
create_time,
update_time
)VALUES(
#{staffId},
#{wxEnterpriseId},
#{chatCount},
now(),
now()
)
]]>
</insert>
<select id="selectByStaffId" resultMap="result-map-tabHaobanGroupChatOwner">
select <include refid="Base_Column_List"/> from tab_haoban_group_chat_owner where staff_id =#{staffId}
</select>
<!-- ==================更新 ========== -->
<update id="updateChatCount">
<![CDATA[
UPDATE tab_haoban_group_chat_owner SET
chat_count=#{chatCount},
update_time=now()
where staff_id = #{staffId}
]]>
</update>
<select id="listOwner" parameterType="com.gic.haoban.manage.api.dto.qdto.chat.OwnerSearchQDTO" resultType="com.gic.haoban.manage.api.dto.chat.GroupChatOwnerDTO">
select a.staff_id staffId
from tab_haoban_group_chat_owner a
</select>
</mapper>
\ No newline at end of file
......@@ -5,6 +5,7 @@
<result column="log_id" property="logId"/>
<result column="plan_id" property="planId"/>
<result column="wx_enterprise_id" property="wxEnterpriseId"/>
<result column="enterprise_id" property="enterpriseId"/>
<result column="group_chat_id" property="groupChatId"/>
<result column="send_status" property="sendStatus"/>
<result column="own_log_id" property="ownLogId"/>
......@@ -12,18 +13,23 @@
<result column="send_time" property="sendTime"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="delete_flag" property="deleteFlag"/>
<result column="wx_chat_id_3th" property="wxChatId3th"/>
</resultMap>
<sql id="Base_Column_List">
log_id,
plan_id,
wx_enterprise_id,
enterprise_id,
group_chat_id,
send_status,
own_log_id,
remark,
send_time,
delete_flag,
create_time,
update_time
update_time , wx_chat_id_3th
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog">
......@@ -32,58 +38,33 @@
log_id,
plan_id,
wx_enterprise_id,
enterprise_id,
group_chat_id,
send_status,
own_log_id,
remark,
send_time,
delete_flag,
create_time,
update_time
update_time , wx_chat_id_3th
)VALUES(
#{logId,jdbcType=BIGINT},
#{planId,jdbcType=BIGINT},
#{wxEnterpriseId,jdbcType=CHAR},
#{groupChatId,jdbcType=BIGINT},
#{sendStatus,jdbcType=INTEGER},
#{ownLogId,jdbcType=BIGINT},
#{remark,jdbcType=VARCHAR},
#{sendTime,jdbcType=TIMESTAMP},
#{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}
#{logId},
#{planId},
#{wxEnterpriseId},
#{enterpriseId} ,
#{groupChatId},
#{sendStatus},
#{ownLogId},
#{remark},
#{sendTime},
0,
now(),
now() , #{wxChatId3th}
)
]]>
</insert>
<!-- =====================删除==================== -->
<update id="deleteByPrimaryKey" parameterType="long">
UPDATE tab_haoban_group_chat_plan_log SET delete_flag = 1 WHERE log_id = #{logId}
</update>
<!-- ==================更新 ========== -->
<update id="updateByPrimaryKey" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog">
<![CDATA[
UPDATE tab_haoban_group_chat_plan_log SET
log_id=#{logId,jdbcType=BIGINT},
plan_id=#{planId,jdbcType=BIGINT},
wx_enterprise_id=#{wxEnterpriseId,jdbcType=CHAR},
group_chat_id=#{groupChatId,jdbcType=BIGINT},
send_status=#{sendStatus,jdbcType=INTEGER},
own_log_id=#{ownLogId,jdbcType=BIGINT},
remark=#{remark,jdbcType=VARCHAR},
send_time=#{sendTime,jdbcType=TIMESTAMP},
create_time=#{createTime,jdbcType=TIMESTAMP},
update_time=#{updateTime,jdbcType=TIMESTAMP}
where log_id = #{logId}
]]>
</update>
<!-- ============ 查询=============-->
<select id="selectById" parameterType="long" resultMap="result-map-tabHaobanGroupChatPlanLog">
SELECT * FROM tab_haoban_group_chat_plan_log WHERE log_id = #{logId}
</select>
<select id="listAll" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog" resultMap="result-map-tabHaobanGroupChatPlanLog">
select * from tab_haoban_group_chat_plan_log
<select id="listPlanLog" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog" resultMap="result-map-tabHaobanGroupChatPlanLog">
select <include refid="Base_Column_List" /> from tab_haoban_group_chat_plan_log
</select>
</mapper>
\ No newline at end of file
......@@ -27,6 +27,7 @@
<result column="send_count" property="sendCount" />
<result column="success_chat_count" property="successChatCount" />
<result column="total_chat_count" property="totalChatCount" />
<result column="delete_flag" property="deleteFlag"/>
</resultMap>
<sql id="Base_Column_List">
plan_id,
......@@ -75,7 +76,7 @@
staff_count,
send_count,
success_chat_count,
total_chat_count , wx_enterprise_id , enterprise_id
total_chat_count , wx_enterprise_id , enterprise_id , delete_flag
)VALUES(
#{planId},
#{name},
......@@ -97,7 +98,7 @@
#{staffCount},
#{sendCount},
#{successChatCount},
#{totalChatCount} , #{wxEnterpriseId} , #{enterpriseId}
#{totalChatCount} , #{wxEnterpriseId} , #{enterpriseId} , 0
)
]]>
</insert>
......@@ -116,8 +117,6 @@
name=#{name},
remark=#{remark},
chat_content=#{chatContent},
creator_id=#{creatorId},
creator_name=#{creatorName},
modifier_id=#{modifierId},
modifier_name=#{modifierName},
update_time=now(),
......
......@@ -14,6 +14,12 @@
<result column="send_count" property="sendCount"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="remark" property="remark"/>
<result column="msgid" property="msgid"/>
<result column="delete_flag" property="deleteFlag"/>
<result column="done_flag" property="doneFlag"/>
<result column="send_time" property="sendTime"/>
<result column="expire_date" property="expireDate"/>
</resultMap>
<sql id="Base_Column_List">
owner_log_id,
......@@ -27,7 +33,7 @@
total_count,
send_count,
create_time,
update_time
update_time , remark , msgid , delete_flag , done_flag , send_time , expire_date
</sql>
<!-- ===================== 新增 ======================== -->
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog">
......@@ -44,7 +50,7 @@
total_count,
send_count,
create_time,
update_time
update_time , remark , msgid , delete_flag , done_flag , expire_date
)VALUES(
#{ownerLogId,jdbcType=BIGINT},
#{planId,jdbcType=BIGINT},
......@@ -57,40 +63,23 @@
#{totalCount,jdbcType=INTEGER},
#{sendCount,jdbcType=INTEGER},
#{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}
#{updateTime,jdbcType=TIMESTAMP} , #{remark} , #{msgid} , 0 , 0 , #{expireDate}
)
]]>
</insert>
<!-- =====================删除==================== -->
<update id="deleteByPrimaryKey" parameterType="long">
UPDATE tab_haoban_group_chat_plan_owner_log SET delete_flag = 1 WHERE owner_log_id = #{ownerLogId}
</update>
<!-- ==================更新 ========== -->
<update id="updateByPrimaryKey" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog">
<![CDATA[
UPDATE tab_haoban_group_chat_plan_owner_log SET
owner_log_id=#{ownerLogId,jdbcType=BIGINT},
plan_id=#{planId,jdbcType=BIGINT},
wx_enterprise_id=#{wxEnterpriseId,jdbcType=CHAR},
enterprise_id=#{enterpriseId,jdbcType=CHAR},
staff_id=#{staffId,jdbcType=CHAR},
store_id=#{storeId,jdbcType=CHAR},
clerk_id=#{clerkId,jdbcType=CHAR},
send_status=#{sendStatus,jdbcType=INTEGER},
total_count=#{totalCount,jdbcType=INTEGER},
send_count=#{sendCount,jdbcType=INTEGER},
create_time=#{createTime,jdbcType=TIMESTAMP},
update_time=#{updateTime,jdbcType=TIMESTAMP}
where owner_log_id = #{ownerLogId}
]]>
<update id="updateSendCount">
<![CDATA[
UPDATE tab_haoban_group_chat_plan_owner_log SET send_count = #{sendCount} ,
send_status = 2 , send_time = #{sendTime} ,
update_time = now() where owner_log_id = #{id}
]]>
</update>
<!-- ============ 查询=============-->
<select id="selectById" parameterType="long" resultMap="result-map-tabHaobanGroupChatPlanOwnerLog">
SELECT * FROM tab_haoban_group_chat_plan_owner_log WHERE owner_log_id = #{ownerLogId}
SELECT <include refid="Base_Column_List"/> FROM tab_haoban_group_chat_plan_owner_log WHERE owner_log_id = #{ownerLogId} and delete_flag = 0
</select>
<select id="listAll" parameterType="com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog" resultMap="result-map-tabHaobanGroupChatPlanOwnerLog">
......
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