Commit 6ec1030f by 徐高华

Merge remote-tracking branch 'origin/feature/社群' into test_branch

Conflicts:
	haoban-manage3-wx/src/main/webapp/WEB-INF/dubbo-haoban-manage-wx.xml
parents c99393c2 4b960554
......@@ -14,14 +14,29 @@ public class QywxErrorLogDTO implements Serializable {
private Long id;
private String wxEnterpriseId;
private String corpid;
private String qywxInterface;
private String scenario;
private String errorContent;
private String weworkErrorUrl;
private String traceId;
private Integer qywxErrorType;
private Date createTime;
private String memberId ;
private String externalUserId ;
public String getMemberId() {
return memberId;
}
public String getExternalUserId() {
return externalUserId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public Long getId() {
return id;
......@@ -39,22 +54,6 @@ public class QywxErrorLogDTO implements Serializable {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getCorpid() {
return corpid;
}
public void setCorpid(String corpid) {
this.corpid = corpid;
}
public String getQywxInterface() {
return qywxInterface;
}
public void setQywxInterface(String qywxInterface) {
this.qywxInterface = qywxInterface;
}
public String getScenario() {
return scenario;
}
......@@ -71,14 +70,6 @@ public class QywxErrorLogDTO implements Serializable {
this.errorContent = errorContent;
}
public String getWeworkErrorUrl() {
return weworkErrorUrl;
}
public void setWeworkErrorUrl(String weworkErrorUrl) {
this.weworkErrorUrl = weworkErrorUrl;
}
public String getTraceId() {
return traceId;
}
......
......@@ -25,6 +25,25 @@ public class QywxErrorLogListQDTO extends BasePageInfo implements Serializable {
private String startDate;
private String endDate;
private String memberId ;
private String externalUserId ;
public String getMemberId() {
return memberId;
}
public String getExternalUserId() {
return externalUserId;
}
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public String getScenario() {
return scenario;
......
......@@ -27,7 +27,16 @@ public class GroupChatPlanSearchQDTO implements Serializable {
private Long ownLogId ;
private List<String> creatorIdList ;
private String wxChatId;
private String searchClerkId ;
public String getSearchClerkId() {
return searchClerkId;
}
public void setSearchClerkId(String searchClerkId) {
this.searchClerkId = searchClerkId;
}
public String getWxChatId() {
return wxChatId;
}
......
......@@ -15,29 +15,11 @@ public interface QywxErrorLogApiService {
/**
* 新增数据
* "routerName": "addQywxErrorLogMq",
* @param param 参数
* @return {@link QywxErrorLogDTO }
* @author mozhu
* @date 2022-04-18 17:02:40
*/
void insertQywxErrorLog(String param);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
QywxErrorLogDTO queryById(Long id);
/**
* 查询分页列表
*
* @param qywxErrorLogListQDTO qdto qywx错误日志列表
* @return {@link Page }<{@link QywxErrorLogDTO }>
* @author mozhu
* @date 2022-04-18 17:01:14
*/
Page<QywxErrorLogDTO> queryListByPage(QywxErrorLogListQDTO qywxErrorLogListQDTO);
......
......@@ -47,6 +47,8 @@ public interface GroupChatPlanApiService {
public ServiceResponse<Void> doPlanSendInfoTimer(String params) ;
public ServiceResponse<Void> reflushSendInfo(Long ownerLogId) ;
public ServiceResponse<GroupChatPlanOwnerLogDTO> getOwnerSendInfo(Long ownerLogId) ;
public ServiceResponse<Page<GroupChatPlanOwnerLogDTO>> listOwnerLogPage(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo);
......
......@@ -17,41 +17,10 @@ public interface TabQywxErrorLogMapper {
/**
* 新增数据
*
* @param tabQywxErrorLog 选项卡qywx错误日志
* @return int
* @author mozhu
* @date 2022-04-18 16:18:25
*/
int insert(TabQywxErrorLog tabQywxErrorLog);
/**
* 修改数据
*
* @param tabQywxErrorLog 选项卡qywx错误日志
* @return int
* @author mozhu
* @date 2022-04-18 16:18:28
*/
int update(TabQywxErrorLog tabQywxErrorLog);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 影响行数
*/
int deleteById(Long id);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabQywxErrorLog queryById(Long id);
/**
* 分页列表
*
* @param qywxErrorLogListQDTO qdto qywx错误日志列表
......
......@@ -17,8 +17,6 @@ public class TabQywxErrorLog implements Serializable {
private Long id;
private String wxEnterpriseId;
private String corpid;
private String qywxInterface;
/**
* 场景
*/
......@@ -27,10 +25,10 @@ public class TabQywxErrorLog implements Serializable {
* 报错内容
*/
private String errorContent;
/**
* 企微报错url
*/
private String weworkErrorUrl;
private String memberId;
private String externalUserId;
/**
* 链路id
*/
......@@ -58,22 +56,6 @@ public class TabQywxErrorLog implements Serializable {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getCorpid() {
return corpid;
}
public void setCorpid(String corpid) {
this.corpid = corpid;
}
public String getQywxInterface() {
return qywxInterface;
}
public void setQywxInterface(String qywxInterface) {
this.qywxInterface = qywxInterface;
}
public String getScenario() {
return scenario;
}
......@@ -89,13 +71,21 @@ public class TabQywxErrorLog implements Serializable {
public void setErrorContent(String errorContent) {
this.errorContent = errorContent;
}
public String getMemberId() {
return memberId;
}
public String getExternalUserId() {
return externalUserId;
}
public String getWeworkErrorUrl() {
return weworkErrorUrl;
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setWeworkErrorUrl(String weworkErrorUrl) {
this.weworkErrorUrl = weworkErrorUrl;
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public String getTraceId() {
......
......@@ -14,11 +14,10 @@ public class TabQywxErrorLogBO implements Serializable {
private Long id;
private String wxEnterpriseId;
private String corpid;
private String qywxInterface;
private String memberId;
private String externalUserId;
private String scenario;
private String errorContent;
private String weworkErrorUrl;
private String traceId;
private Integer qywxErrorType;
private Date createTime;
......@@ -39,22 +38,6 @@ public class TabQywxErrorLogBO implements Serializable {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getCorpid() {
return corpid;
}
public void setCorpid(String corpid) {
this.corpid = corpid;
}
public String getQywxInterface() {
return qywxInterface;
}
public void setQywxInterface(String qywxInterface) {
this.qywxInterface = qywxInterface;
}
public String getScenario() {
return scenario;
}
......@@ -70,13 +53,21 @@ public class TabQywxErrorLogBO implements Serializable {
public void setErrorContent(String errorContent) {
this.errorContent = errorContent;
}
public String getMemberId() {
return memberId;
}
public String getExternalUserId() {
return externalUserId;
}
public String getWeworkErrorUrl() {
return weworkErrorUrl;
public void setMemberId(String memberId) {
this.memberId = memberId;
}
public void setWeworkErrorUrl(String weworkErrorUrl) {
this.weworkErrorUrl = weworkErrorUrl;
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public String getTraceId() {
......
......@@ -23,15 +23,6 @@ public interface QywxErrorLogService {
*/
TabQywxErrorLogBO insert(TabQywxErrorLogBO tabQywxErrorLogBO);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
TabQywxErrorLogBO queryById(Long id);
/**
* 查询分页列表
*
......
......@@ -11,7 +11,7 @@ public interface GroupChatPlanService {
public void save(GroupChatPlanDTO dto);
GroupChatPlanBO getById(Long hmId);
GroupChatPlanBO getById(Long planId);
public Page<GroupChatPlanBO> listPage(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo);
......
......@@ -191,6 +191,10 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
if (clerkType == 1) {
storeId = clerk.getStoreId();
clerkId = null;
qdto.setClerkId(null);
if (StringUtils.isNotBlank(qdto.getSearchClerkId())) {
qdto.setClerkId(qdto.getSearchClerkId());
}
}
qdto.setStoreId(storeId);
PageHelper.startPage(basePageInfo);
......@@ -210,6 +214,10 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
if (clerkType == 1) {
storeId = clerk.getStoreId();
clerkId = null;
qdto.setClerkId(null);
if (StringUtils.isNotBlank(qdto.getSearchClerkId())) {
qdto.setClerkId(qdto.getSearchClerkId());
}
}
qdto.setStoreId(storeId);
List<GroupChatPlanOwnerLogDTO> list = this.groupChatPlanOwnerLogMapper.listOwnerLogPageForWxa(qdto);
......@@ -235,13 +243,14 @@ public class GroupChatPlanOwnerLogServiceImpl implements GroupChatPlanOwnerLogSe
GroupChatPlanOwnerLogDTO.class);
return retPage;
}
@Override
public GroupChatPlanOwnerLogDTO getOwnerInfo(Long planId, String staffId, String clerkId, String wxEnterpriseId) {
GroupChatPlanOwnerLogDTO dto = this.groupChatPlanOwnerLogMapper.getOwnerInfo(planId,staffId,clerkId,wxEnterpriseId) ;
if(null != dto && StringUtils.isNotBlank(dto.getClerkId())) {
ClerkDTO clerk = this.clerkService.getclerkById(dto.getClerkId());
dto.setClerkName(clerk.getClerkName());
GroupChatPlanOwnerLogDTO dto = this.groupChatPlanOwnerLogMapper.getOwnerInfo(planId, staffId, clerkId,
wxEnterpriseId);
if (null != dto && StringUtils.isNotBlank(dto.getClerkId())) {
ClerkDTO clerk = this.clerkService.getclerkById(dto.getClerkId());
dto.setClerkName(clerk.getClerkName());
}
return dto;
}
......
......@@ -321,6 +321,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
int sendCount = 0;
int failCount = 0;
List<TabGroupChatPlanLog> addList = new ArrayList<>();
boolean endFlag = false ;
for (QywxSendMessageResultDTO item : list) {
TabGroupChatPlanLog entity = new TabGroupChatPlanLog();
Date sendTime = item.getSendTime();
......@@ -328,6 +329,7 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
// 如果企微的发送时间晚于计划的结束时间,不记录此类数据
if (sendTime.after(plan.getEndTime())) {
logger.info("发送时间晚计划结束");
endFlag = true ;
continue;
}
GroupChatBO chat = this.groupChatService.getByWxChatId(wxEnterpriseId, wxChatId);
......@@ -364,12 +366,14 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
this.groupChatPlanLogMapper.batchInsert(addList);
}
// 更新统计数量、状态
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime(), failCount);
// 完成代办
this.pendingTaskService.updateFinish(ownerLog.getOwnerLogId() + "");
// 更新计划统计
this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount);
if(!endFlag) {
this.groupChatPlanOwnerLogService.updateSendCount(ownerLog.getOwnerLogId(), sendCount,
list.get(0).getSendTime(), failCount);
// 完成代办
this.pendingTaskService.updateFinish(ownerLog.getOwnerLogId() + "");
// 更新计划统计
this.groupChatPlanMapper.updateData(ownerLog.getPlanId(), 1, sendCount, failCount);
}
}
@Override
......
......@@ -247,11 +247,7 @@ public class GroupChatServiceImpl implements GroupChatService {
public Page<GroupChatDTO> listPage(GroupChatSearchQDTO qdto, BasePageInfo basePageInfo) {
List<TabGroupChatHmRelation> relationList = null;
if (null != qdto.getChatHmId()) {
if (qdto.getIncludeOff() == 1) {
relationList = this.groupChatHmRelationMapper.listByChatHmIdIncludeOff(qdto.getChatHmId());
} else {
relationList = this.groupChatHmRelationMapper.listByChatHmId(qdto.getChatHmId());
}
relationList = this.groupChatHmRelationMapper.listByChatHmId(qdto.getChatHmId());
if (CollectionUtils.isEmpty(relationList)) {
return new Page<GroupChatDTO>();
}
......@@ -267,15 +263,6 @@ public class GroupChatServiceImpl implements GroupChatService {
qdto.setSearchParams("%" + params + "%");
}
List<GroupChatDTO> list = this.groupChatMapper.list(qdto);
if(CollectionUtils.isNotEmpty(list) && CollectionUtils.isNotEmpty(relationList)) {
Map<Long,Date> offMap = relationList.stream().filter(dto->dto.getStatusFlag()==2).collect(Collectors.toMap(TabGroupChatHmRelation::getGroupChatId,TabGroupChatHmRelation::getUpdateTime,(k1,k2)->k1));
for(GroupChatDTO dto : list) {
if(null != offMap.get(dto.getGroupChatId())) {
dto.setOffTime( offMap.get(dto.getGroupChatId()));
dto.setHmAddStatus(2);
}
}
}
Page<GroupChatDTO> retPage = PageHelperUtils.changePageHelperToCurrentPage(list, GroupChatDTO.class);
return retPage;
}
......@@ -639,6 +626,9 @@ public class GroupChatServiceImpl implements GroupChatService {
this.saveOwnerHistory(wxEnterpriseId, groupChatId, newStaffId, oldStaffId);
chat.setOriginalStaffId(oldStaffId);
this.groupChatMapper.update(chat);
if(StringUtils.isBlank(chat.getWxChatIdDk())) {
this.updateWxChatIdDk(wxEnterpriseId, staff.getStaffId()) ;
}
this.saveOwner(wxEnterpriseId, staff.getStaffId());
if (!syncMember) {
logger.info("不同步群成员");
......
package com.gic.haoban.manage.service.service.impl;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.dto.qdto.QywxErrorLogListQDTO;
import com.gic.haoban.manage.service.dao.mapper.TabQywxErrorLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanWxApplication;
import com.gic.haoban.manage.service.entity.TabQywxErrorLog;
import com.gic.haoban.manage.service.pojo.bo.TabQywxErrorLogBO;
import com.gic.haoban.manage.service.service.QywxErrorLogService;
import com.gic.haoban.manage.service.service.WxApplicationService;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 企微报错日志(TabQywxErrorLog)表服务实现类
......@@ -26,27 +23,14 @@ import java.util.List;
*/
@Service
public class TabQywxErrorLogServiceImpl implements QywxErrorLogService {
private static final Logger logger = LogManager.getLogger(TabQywxErrorLogServiceImpl.class);
@Autowired
private TabQywxErrorLogMapper tabQywxErrorLogMapper;
@Autowired
private WxApplicationService wxApplicationService;
@Override
public TabQywxErrorLogBO insert(TabQywxErrorLogBO tabQywxErrorLogBO) {
String wxEnterpriseId = tabQywxErrorLogBO.getWxEnterpriseId();
String corpid = tabQywxErrorLogBO.getCorpid();
if (StringUtils.isBlank(wxEnterpriseId)) {
TabHaobanWxApplication tabHaobanWxApplication = wxApplicationService.selectByCorpId(corpid);
if (tabHaobanWxApplication != null) {
tabQywxErrorLogBO.setWxEnterpriseId(tabHaobanWxApplication.getWxEnterpriseId());
}
}
wxEnterpriseId = tabQywxErrorLogBO.getWxEnterpriseId();
if (StringUtils.isBlank(wxEnterpriseId)) {
logger.error("企业微信id为空,corpid:{}", corpid);
return null;
}
tabQywxErrorLogBO.setId(UniqueIdUtils.uniqueLong());
......@@ -56,12 +40,6 @@ public class TabQywxErrorLogServiceImpl implements QywxErrorLogService {
}
@Override
public TabQywxErrorLogBO queryById(Long id) {
TabQywxErrorLog tabQywxErrorLog = this.tabQywxErrorLogMapper.queryById(id);
return EntityUtil.changeEntityByOrika(TabQywxErrorLogBO.class, tabQywxErrorLog);
}
@Override
public List<TabQywxErrorLog> queryListByPage(QywxErrorLogListQDTO qywxErrorLogListQDTO) {
return this.tabQywxErrorLogMapper.queryListByPage(qywxErrorLogListQDTO);
}
......
......@@ -214,6 +214,8 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
private QywxSendService qywxSendService ;
@Autowired
private GroupChatService groupChatService ;
private static GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
@Override
......@@ -480,7 +482,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
TabHaobanClerkMainStoreRelated mainStoreRelated = clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, wxEnterpriseId);
if (mainStoreRelated == null) {
log.info("【新增外部联系人】主门店为空:staffId={}", staffId);
this.sendWelcome(dto, qwDTO, null, staffId, null);
this.sendWelcome(dto, qwDTO, null, staffId, null , null);
return;
}
staffClerkRelationDTO = staffClerkRelationService.getOneBindByStoreId(staffId, mainStoreRelated.getStoreId());
......@@ -645,7 +647,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
}
String storeId = staffClerkRelationDTO.getStoreId();
this.saveExternalClerk(memberId, staffId, dto, staffClerkRelationDTO , 1);
this.sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId);
this.sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId,memberId);
//同步好友标签
this.pushTagSync(memberId, wxEnterpriseId, enterpriseId);
//回调给会员,更新是否为企微好友
......@@ -787,7 +789,7 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
String clerkId = staffClerkRelationDTO.getClerkId();
String enterpriseId = staffClerkRelationDTO.getEnterpriseId();
//发送欢迎语
sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId);
sendWelcome(dto, qwDTO, enterpriseId, staffId, clerkId,null);
//保存好友关系
this.saveExternalClerk(null, staffId, dto, staffClerkRelationDTO, 4);
}
......@@ -800,40 +802,37 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
* @param enterpriseId
* @param staffId
*/
private void sendWelcome(MemberUnionidRelatedDTO dto, WxEnterpriseQwDTO wxEnterpriseDTO, String enterpriseId, String staffId, String clerkId) {
private void sendWelcome(MemberUnionidRelatedDTO dto, WxEnterpriseQwDTO wxEnterpriseDTO, String enterpriseId, String staffId, String clerkId , String memberId) {
log.info("发送欢迎语:dto:{},staffId:{}", JSONObject.toJSONString(dto), staffId);
String welcomeCode = dto.getWelcomeCode();
String state = dto.getState();
String wxEnterpriseId = wxEnterpriseDTO.getWxEnterpriseId();
QywxErrorLogDTO errLog = new QywxErrorLogDTO();
errLog.setWxEnterpriseId(wxEnterpriseId);
errLog.setMemberId(memberId);
errLog.setExternalUserId(dto.getExternalUserid());
errLog.setTraceId(ProviderLocalTag.tag.get().traceId);
errLog.setQywxErrorType(1);
if (StringUtils.isBlank(welcomeCode)) {
log.error("welcomeCode为空,请检查是否使用企微的欢迎语:{}", wxEnterpriseId);
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
QywxErrorLogDTO qywxErrorLogDTO = new QywxErrorLogDTO();
qywxErrorLogDTO.setWxEnterpriseId(wxEnterpriseId);
qywxErrorLogDTO.setCorpid(dto.getCorpid());
qywxErrorLogDTO.setScenario("欢迎语不发送");
qywxErrorLogDTO.setErrorContent("welcomeCode为空,请检查是否使用企微的欢迎语");
qywxErrorLogDTO.setTraceId(ProviderLocalTag.tag.get().traceId);
qywxErrorLogDTO.setQywxErrorType(1);
clientInstance.sendMessage(Manage3Constants.QYWX_ERROR_MSG, JSON.toJSONString(qywxErrorLogDTO));
errLog.setScenario("欢迎语");
errLog.setErrorContent("welcomeCode空,GIC不处理,使用企微发送欢迎语");
clientInstance.sendMessage(Manage3Constants.QYWX_ERROR_MSG, JSON.toJSONString(errLog));
} catch (Exception e) {
log.error("发送消息失败:{}", e.getMessage(), e);
}
return;
}
String relationKey = SecureUtil.md5(staffId + dto.getExternalUserid());
WelcomeDetailBO welcomeDetailBO = null;
if (StringUtils.isNotBlank(state) && (state.startsWith(Manage3Constants.HM) || state.startsWith(Manage3Constants.DT))) {
//"HM+id" "DT+key"
log.info("特殊欢迎语 state:{}", state);
WelcomeReferBO welcomeReferBo = getWelcomeReferBo(state);
welcomeDetailBO = welcomeService.getMatchWelcomeWithReferId(staffId, wxEnterpriseId, welcomeReferBo);
} else {
welcomeDetailBO = welcomeService.getMatchWelcome(staffId, wxEnterpriseId);
}
if (Objects.isNull(welcomeDetailBO)) {
log.info("欢迎语未配置:wxEnterpriseId:{}", wxEnterpriseId);
return;
......@@ -876,13 +875,26 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
qywxWelcomeMsgDTO.setAttachments(attachments);
}
qywxWelcomeMsgDTO.setWelcomeCode(welcomeCode);
log.info("[sendWelcome] 发送欢迎语 params:{}", JSON.toJSONString(qywxWelcomeMsgDTO));
String result = null ;
if (dto.getSuiteid().equals(SELF_APP)) {
//好办助手和代开发
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(dto.getWxEnterpriseId(), SecretTypeEnum.CUSTOMIZED_APP.getVal());
qywxUserApiService.sendSelfWelcomeMsgByExternal(dto.getCorpid(), secretSetting.getSecretVal(), qywxWelcomeMsgDTO);
result = qywxUserApiService.sendSelfWelcomeMsgByExternal(dto.getCorpid(), secretSetting.getSecretVal(), qywxWelcomeMsgDTO);
} else {
qywxUserApiService.sendWelcomeMsgByExternal(dto.getCorpid(), config.getWxSuiteid(), qywxWelcomeMsgDTO);
result = qywxUserApiService.sendWelcomeMsgByExternal(dto.getCorpid(), config.getWxSuiteid(), qywxWelcomeMsgDTO);
}
log.info("发送欢迎语 params:{},返回={}", JSON.toJSONString(qywxWelcomeMsgDTO),result);
if(StringUtils.isNotBlank(result)) {
JSONObject json = JSON.parseObject(result) ;
int errcode = json.getIntValue("errcode") ;
if(0 != errcode) {
try {
errLog.setScenario("欢迎语");
errLog.setErrorContent(result);
clientInstance.sendMessage(Manage3Constants.QYWX_ERROR_MSG, JSON.toJSONString(errLog));
} catch (Exception e) {
log.error("发送消息失败:{}", e.getMessage(), e);
}
}
}
}
......
package com.gic.haoban.manage.service.service.out.impl;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.Page;
import com.gic.haoban.common.utils.EntityUtil;
......@@ -14,12 +17,9 @@ import com.gic.haoban.manage.service.pojo.bo.TabQywxErrorLogBO;
import com.gic.haoban.manage.service.service.QywxErrorLogService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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 java.util.List;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
/**
* 企微报错日志(TabQywxErrorLog)表服务实现类
......@@ -29,23 +29,16 @@ import java.util.List;
*/
@Service
public class QywxErrorLogApiServiceImpl implements QywxErrorLogApiService {
private static final Logger log = LogManager.getLogger(QywxErrorLogApiServiceImpl.class);
@Autowired
private QywxErrorLogService tabQywxErrorLogService;
@Override
public void insertQywxErrorLog(String param) {
log.info("请求企微报错日志:{}", param);
QywxErrorLogDTO qywxErrorLogDTO = JSON.parseObject(param, QywxErrorLogDTO.class);
tabQywxErrorLogService.insert(EntityUtil.changeEntityByOrika(TabQywxErrorLogBO.class, qywxErrorLogDTO));
}
@Override
public QywxErrorLogDTO queryById(Long id) {
return EntityUtil.changeEntityByOrika(QywxErrorLogDTO.class, tabQywxErrorLogService.queryById(id));
}
@Override
public Page<QywxErrorLogDTO> queryListByPage(QywxErrorLogListQDTO qywxErrorLogListQDTO) {
qywxErrorLogListQDTO.setStartDate(DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(qywxErrorLogListQDTO.getStartDate())), DatePattern.NORM_DATETIME_PATTERN));
qywxErrorLogListQDTO.setEndDate(DateUtil.format(DateUtil.beginOfDay(DateUtil.parse(qywxErrorLogListQDTO.getEndDate())), DatePattern.NORM_DATETIME_PATTERN));
......
......@@ -7,6 +7,8 @@ import org.springframework.stereotype.Service;
import com.gic.api.base.commons.BasePageInfo;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils;
......@@ -16,6 +18,7 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanLogDTO;
import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.api.service.chat.GroupChatPlanApiService;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
import com.gic.haoban.manage.service.pojo.bo.chat.GroupChatPlanBO;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanOwnerLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
......@@ -27,6 +30,8 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
private GroupChatPlanService groupChatPlanService;
@Autowired
private GroupChatPlanOwnerLogService groupChatPlanOwnerLogService;
@Autowired
private ClerkService clerkService ;
@Override
public ServiceResponse<Page<GroupChatPlanDTO>> listPage(GroupChatPlanSearchQDTO qdto, BasePageInfo basePageInfo) {
......@@ -56,14 +61,15 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
this.groupChatPlanService.updateRemark(dto);
return ServiceResponse.success(dto);
}
@Override
public ServiceResponse<GroupChatPlanOwnerLogDTO> getOwnerInfo(Long planId, String staffId, String clerkId,
String wxEnterpriseId) {
GroupChatPlanOwnerLogDTO dto = this.groupChatPlanOwnerLogService.getOwnerInfo(planId,staffId,clerkId , wxEnterpriseId) ;
GroupChatPlanOwnerLogDTO dto = this.groupChatPlanOwnerLogService.getOwnerInfo(planId, staffId, clerkId,
wxEnterpriseId);
return ServiceResponse.success(dto);
}
/**
*
* @Title: doPlan
......@@ -93,6 +99,20 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
}
@Override
public ServiceResponse<GroupChatPlanOwnerLogDTO> getOwnerSendInfo(Long ownerLogId) {
TabGroupChatPlanOwnerLog log = this.groupChatPlanOwnerLogService.getById(ownerLogId);
GroupChatPlanOwnerLogDTO dto = EntityUtil.changeEntityByJSON(GroupChatPlanOwnerLogDTO.class, log);
if(null != dto && StringUtils.isNotBlank(dto.getClerkId())) {
ClerkDTO clerk = this.clerkService.getclerkById(dto.getClerkId());
dto.setClerkName(clerk.getClerkName());
}
Long planId = log.getPlanId() ;
GroupChatPlanBO plan = this.groupChatPlanService.getById(planId) ;
dto.setPlanName(plan.getName());
return ServiceResponse.success(dto);
}
@Override
public ServiceResponse<Page<GroupChatPlanLogDTO>> listLogPage(Long planId, GroupChatPlanSearchQDTO qdto,
BasePageInfo basePageInfo) {
if (null != qdto.getEndDate()) {
......@@ -108,8 +128,8 @@ public class GroupChatPlanApiServiceImpl implements GroupChatPlanApiService {
if (null != qdto.getEndDate()) {
qdto.setEndDate(DateUtil.getEndTimeOfDay(qdto.getEndDate()));
}
if(StringUtils.isNotBlank(qdto.getSearchParams())) {
qdto.setSearchParams("%"+qdto.getSearchParams()+"%");
if (StringUtils.isNotBlank(qdto.getSearchParams())) {
qdto.setSearchParams("%" + qdto.getSearchParams() + "%");
}
Page<GroupChatPlanOwnerLogDTO> page = this.groupChatPlanOwnerLogService.listPage(planId, qdto, basePageInfo);
return ServiceResponse.success(page);
......
......@@ -3,19 +3,20 @@
<mapper namespace="com.gic.haoban.manage.service.dao.mapper.TabQywxErrorLogMapper">
<resultMap type="com.gic.haoban.manage.service.entity.TabQywxErrorLog" id="TabQywxErrorLogMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="wxEnterpriseId" column="wx_enterprise_id" jdbcType="VARCHAR"/>
<result property="corpid" column="corpid" jdbcType="VARCHAR"/>
<result property="qywxInterface" column="qywx_interface" jdbcType="VARCHAR"/>
<result property="scenario" column="scenario" jdbcType="VARCHAR"/>
<result property="errorContent" column="error_content" jdbcType="VARCHAR"/>
<result property="weworkErrorUrl" column="wework_error_url" jdbcType="VARCHAR"/>
<result property="traceId" column="trace_id" jdbcType="VARCHAR"/>
<result property="qywxErrorType" column="qywx_error_type" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="id" column="id" />
<result property="wxEnterpriseId" column="wx_enterprise_id" />
<result property="member_id" column="memberId"/>
<result property="external_user_id" column="externalUserId" />
<result property="scenario" column="scenario" />
<result property="errorContent" column="error_content" />
<result property="weworkErrorUrl" column="wework_error_url" />
<result property="traceId" column="trace_id" />
<result property="qywxErrorType" column="qywx_error_type" />
<result property="createTime" column="create_time"/>
</resultMap>
<sql id="Base_Column_List">
id, wx_enterprise_id,corpid,qywx_interface,scenario, error_content, wework_error_url, trace_id, qywx_error_type, create_time </sql>
id, wx_enterprise_id, member_id , external_user_id ,scenario, error_content, trace_id, qywx_error_type, create_time
</sql>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true"
......@@ -28,11 +29,11 @@
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id,
</if>
<if test="corpid != null and corpid != ''">
corpid,
<if test="memberId != null and memberId != ''">
member_id,
</if>
<if test="qywxInterface != null and qywxInterface != ''">
qywx_interface,
<if test="externalUserId != null and externalUserId != ''">
external_user_id,
</if>
<if test="scenario != null and scenario != ''">
scenario,
......@@ -40,9 +41,6 @@
<if test="errorContent != null and errorContent != ''">
error_content,
</if>
<if test="weworkErrorUrl != null and weworkErrorUrl != ''">
wework_error_url,
</if>
<if test="traceId != null and traceId != ''">
trace_id,
</if>
......@@ -60,11 +58,11 @@
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
#{wxEnterpriseId},
</if>
<if test="corpid != null and corpid != ''">
#{corpid},
<if test="memberId != null and memberId != ''">
#{memberId},
</if>
<if test="qywxInterface != null and qywxInterface != ''">
#{qywxInterface},
<if test="externalUserId != null and externalUserId != ''">
#{externalUserId},
</if>
<if test="scenario != null and scenario != ''">
#{scenario},
......@@ -72,9 +70,6 @@
<if test="errorContent != null and errorContent != ''">
#{errorContent},
</if>
<if test="weworkErrorUrl != null and weworkErrorUrl != ''">
#{weworkErrorUrl},
</if>
<if test="traceId != null and traceId != ''">
#{traceId},
</if>
......@@ -87,55 +82,6 @@
</trim>
</insert>
<!--通过主键修改数据-->
<update id="update" parameterType="com.gic.haoban.manage.service.entity.TabQywxErrorLog">
update tab_qywx_error_log
<set>
<if test="wxEnterpriseId != null and wxEnterpriseId != ''">
wx_enterprise_id = #{wxEnterpriseId},
</if>
<if test="corpid != null and corpid != ''">
corpid = #{corpid},
</if>
<if test="qywxInterface != null and qywxInterface != ''">
qywx_interface = #{qywxInterface},
</if>
<if test="scenario != null and scenario != ''">
scenario = #{scenario},
</if>
<if test="errorContent != null and errorContent != ''">
error_content = #{errorContent},
</if>
<if test="weworkErrorUrl != null and weworkErrorUrl != ''">
wework_error_url = #{weworkErrorUrl},
</if>
<if test="traceId != null and traceId != ''">
trace_id = #{traceId},
</if>
<if test="qywxErrorType != null">
qywx_error_type = #{qywxErrorType},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete
from tab_qywx_error_log
where id = #{id}
</delete>
<!--查询单个-->
<select id="queryById" resultMap="TabQywxErrorLogMap">
select
<include refid="Base_Column_List"/>
from tab_qywx_error_log
where id = #{id}
</select>
<!--通过实体作为筛选条件查询-->
<select id="queryListByPage" parameterType="com.gic.haoban.manage.api.dto.qdto.QywxErrorLogListQDTO"
......@@ -150,6 +96,12 @@
<if test="scenario != null and scenario != ''">
and scenario like CONCAT('%',#{scenario},'%')
</if>
<if test="memberId != null and memberId != ''">
and member_id = #{memberId}
</if>
<if test="externalUserId != null and externalUserId != ''">
and external_user_id = #{externalUserId}
</if>
<if test="qywxErrorType != null">
and qywx_error_type = #{qywxErrorType}
</if>
......
......@@ -229,7 +229,7 @@
</select>
<select id="listAllNeedInitWxChatIdDk" 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_dk is null and init_flag = 1 and name is not null
select wx_enterprise_id wxEnterpriseId , staff_id staffId from tab_haoban_group_chat where update_time > DATE_ADD(NOW(),INTERVAL -30 day) and wx_chat_id_dk is null and init_flag = 1 and name is not null
group by wx_enterprise_id , staff_id
</select>
......
......@@ -167,6 +167,9 @@
<if test="null != sendStatus">
and a.send_status = #{sendStatus}
</if>
<if test="null != searchParams">
and b.name like #{searchParams}
</if>
group by b.plan_id
order by a.create_time desc , a.owner_log_id
......
......@@ -57,7 +57,7 @@ public class GroupChatPlanController {
qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId);
if (StringUtils.isNotBlank(searchParams)) {
qdto.setSearchParams(searchParams);
qdto.setSearchParams("%" + searchParams + "%");
}
ServiceResponse<Page<ChatOwnerTotalDTO>> pageResp = this.groupChatPlanApiService
.listOwnerLogPageForWxaTotal(qdto, basePageInfo);
......@@ -87,11 +87,12 @@ public class GroupChatPlanController {
@RequestMapping("reflush-send-msg")
public RestResponse<Object> reflush(String wxEnterpriseId, String enterpriseId, Long ownerLogId) {
this.groupChatPlanApiService.reflushSendInfo(ownerLogId);
return RestResponse.successResult();
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId);
return RestResponse.successResult(resp.getResult());
}
@RequestMapping("detail")
public RestResponse<Object> detail(Long planId,String clerkId, String staffId , String wxEnterpriseId) {
public RestResponse<Object> detail(Long planId, String wxEnterpriseId, Long ownerLogId) {
if (null == planId) {
return RestResponse.failure("1", "planid为空");
}
......@@ -112,31 +113,30 @@ public class GroupChatPlanController {
Map<String, Object> retMap = new HashMap<>();
retMap.put("plan", plan);
retMap.put("materialList", materials);
if(StringUtils.isNotEmpty(clerkId)) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerInfo(planId, staffId, clerkId, wxEnterpriseId) ;
GroupChatPlanOwnerLogDTO owner = resp.getResult() ;
if(!resp.isSuccess()|| null == owner) {
if (null != ownerLogId) {
ServiceResponse<GroupChatPlanOwnerLogDTO> resp = this.groupChatPlanApiService.getOwnerSendInfo(ownerLogId);
GroupChatPlanOwnerLogDTO owner = resp.getResult();
if (!resp.isSuccess() || null == owner) {
return RestResponse.failure("1", "记录不存在");
}
Map<String,Object> ownerInfo = new HashMap<>() ;
ownerInfo.put("clerkName", owner.getClerkName()) ;
ownerInfo.put("ownerLogId", owner.getOwnerLogId()) ;
ownerInfo.put("sendStatus", owner.getSendStatus()) ;
retMap.put("ownerInfo", ownerInfo) ;
Map<String, Object> ownerInfo = new HashMap<>();
ownerInfo.put("clerkName", owner.getClerkName());
ownerInfo.put("ownerLogId", owner.getOwnerLogId());
ownerInfo.put("sendStatus", owner.getSendStatus());
retMap.put("ownerInfo", ownerInfo);
}
return RestResponse.successResult(retMap);
}
@RequestMapping("owner-do-list")
public RestResponse<Object> ownerDoList(Long planId, String clerkId, String wxEnterpriseId, String enterpriseId,String staffId ,Long ownLogId,
public RestResponse<Object> ownerDoList(Long planId, String wxEnterpriseId, String enterpriseId, Long ownLogId,
BasePageInfo basePageInfo) {
if (null == planId || StringUtils.isEmpty(clerkId)) {
if (null == planId || null == ownLogId) {
return RestResponse.failure("1", "参数未传");
}
GroupChatPlanSearchQDTO qdto = new GroupChatPlanSearchQDTO();
qdto.setWxEnterpriseId(wxEnterpriseId);
qdto.setEnterpriseId(enterpriseId);
qdto.setClerkId(clerkId);
qdto.setPlanId(planId);
qdto.setOwnLogId(ownLogId);
ServiceResponse<Page<GroupChatPlanLogDTO>> page = this.groupChatPlanApiService.listLogPage(planId, qdto,
......
......@@ -116,11 +116,13 @@
<dubbo:reference interface="com.gic.marketing.pro.api.service.offline.OfflinePreApiService" id="offlinePreApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.enterprise.api.service.AccountService" id="accountService"/>
<dubbo:reference interface="com.gic.content.api.service.ContentColumnApiService" id="contentColumnApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialApiService" id="contentMaterialApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.content.api.service.ContentMaterialShareApiService" id="contentMaterialShareApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="settingApiService" interface="com.gic.haoban.app.aggregation.api.service.SettingApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference interface="com.gic.enterprise.api.service.AccountService" id="accountService"/>
</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