|
@@ -1,22 +1,32 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
-import com.ym.mec.auth.api.client.SysUserFeignService;
|
|
|
-import com.ym.mec.auth.api.entity.SysUser;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.dayaedu.cbs.common.enums.EAppKey;
|
|
|
+import com.dayaedu.cbs.common.enums.EClientType;
|
|
|
+import com.dayaedu.cbs.common.enums.message.EMessageSendMode;
|
|
|
+import com.dayaedu.cbs.common.enums.message.ESendStatus;
|
|
|
+import com.dayaedu.cbs.openfeign.client.MessageFeignClientService;
|
|
|
+import com.dayaedu.cbs.openfeign.wrapper.message.CbsMessageWrapper;
|
|
|
+import com.microsvc.toolkit.common.response.template.R;
|
|
|
import com.ym.mec.biz.dal.dao.SysConfigDao;
|
|
|
import com.ym.mec.biz.dal.dao.SysMessageDao;
|
|
|
import com.ym.mec.biz.dal.dao.TeacherDao;
|
|
|
import com.ym.mec.biz.dal.dao.WaitSendMessageDao;
|
|
|
-import com.ym.mec.biz.dal.dto.Mapper;
|
|
|
import com.ym.mec.biz.dal.dto.SimpleUserDto;
|
|
|
-import com.ym.mec.biz.dal.dto.SysMessageDto;
|
|
|
import com.ym.mec.biz.dal.dto.SysMessageVo;
|
|
|
-import com.ym.mec.biz.dal.entity.*;
|
|
|
+import com.ym.mec.biz.dal.entity.ImSendGroupMessage;
|
|
|
+import com.ym.mec.biz.dal.entity.SysMessage;
|
|
|
+import com.ym.mec.biz.dal.entity.SysMessageConfig;
|
|
|
+import com.ym.mec.biz.dal.entity.WaitSendMessage;
|
|
|
import com.ym.mec.biz.dal.enums.MessageSendMode;
|
|
|
import com.ym.mec.biz.dal.enums.MessageTypeEnum;
|
|
|
import com.ym.mec.biz.dal.enums.SendStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
|
|
|
+import com.ym.mec.biz.dal.wrapper.SysMessageWrapper;
|
|
|
import com.ym.mec.biz.service.SysMessageConfigService;
|
|
|
import com.ym.mec.biz.service.SysMessageService;
|
|
|
+import com.ym.mec.biz.service.SysUserService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
import com.ym.mec.common.entity.ImMessageDto;
|
|
|
import com.ym.mec.common.entity.ImPrivateMessage;
|
|
@@ -24,38 +34,33 @@ import com.ym.mec.common.entity.ImSendMessageUserInfo;
|
|
|
import com.ym.mec.common.entity.ImTxtMessage;
|
|
|
import com.ym.mec.common.exception.BizException;
|
|
|
import com.ym.mec.common.page.PageInfo;
|
|
|
-import com.ym.mec.common.page.QueryInfo;
|
|
|
-import com.ym.mec.common.page.WrapperUtil;
|
|
|
import com.ym.mec.common.redis.service.RedisCache;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
import com.ym.mec.common.tenant.TenantContextHolder;
|
|
|
import com.ym.mec.im.ImFeignService;
|
|
|
-import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
|
|
|
import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
|
|
|
-import com.ym.mec.util.collection.MapUtil;
|
|
|
import com.ym.mec.util.date.DateUtil;
|
|
|
import com.ym.mec.util.string.MessageFormatter;
|
|
|
import net.coobird.thumbnailator.Thumbnails;
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
|
+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.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import javax.imageio.ImageIO;
|
|
|
import java.awt.image.BufferedImage;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.io.IOException;
|
|
|
import java.net.URL;
|
|
|
import java.util.*;
|
|
|
-import java.util.Map.Entry;
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
-import java.util.concurrent.Executors;
|
|
|
+import java.util.function.Function;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.ym.mec.biz.dal.enums.MessageTypeEnum.OA_NOTICE_PUSH;
|
|
|
import static com.ym.mec.biz.dal.enums.MessageTypeEnum.STUDENT_PUSH_VIP_BUY;
|
|
|
|
|
|
@Service
|
|
@@ -63,32 +68,30 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
private final static Logger LOGGER = LoggerFactory.getLogger(SysMessageServiceImpl.class);
|
|
|
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysMessageDao sysMessageDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysMessageConfigService sysMessageConfigService;
|
|
|
- @Autowired
|
|
|
- private MessageSenderPluginContext messageSenderPluginContext;
|
|
|
- @Autowired
|
|
|
- private SysUserFeignService sysUserFeignService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
+ private SysUserService sysUserService;
|
|
|
+ @Resource
|
|
|
private TeacherDao teacherDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private WaitSendMessageDao waitSendMessageDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private SysConfigDao sysConfigDao;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private ImFeignService imFeignService;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private RedisCache<String, Object> redisCache;
|
|
|
- @Autowired
|
|
|
- private SysEmailServiceImpl sysEmailService;
|
|
|
+ @Resource
|
|
|
+ private MessageFeignClientService messageFeignClientService;
|
|
|
// 验证码有效期
|
|
|
public static final int CODE_EXPIRE = 60 * 10;
|
|
|
// 发送验证码的间隔时间
|
|
|
public static final int CODE_INTERVAL_TIME = 60;
|
|
|
|
|
|
- private final int DEFAULT_CODE = 888888;
|
|
|
+ private final int DEFAULT_CODE = 666666;
|
|
|
|
|
|
@Value("${message.debugMode}")
|
|
|
private boolean debugMode;
|
|
@@ -98,108 +101,147 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
return sysMessageDao;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public PageInfo<SysMessageDto> queryListPage(QueryInfo queryInfo) {
|
|
|
- PageInfo<SysMessageDto> pageInfo = new PageInfo<SysMessageDto>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
- Map<String, Object> params = new HashMap<String, Object>();
|
|
|
- MapUtil.populateMap(params, queryInfo);
|
|
|
-
|
|
|
- List<SysMessageDto> dataList = null;
|
|
|
- int count = this.findCount(params);
|
|
|
- if (count > 0) {
|
|
|
- pageInfo.setTotal(count);
|
|
|
- params.put("offset", pageInfo.getOffset());
|
|
|
- dataList = sysMessageDao.queryListPage(params);
|
|
|
- }
|
|
|
- if (count == 0) {
|
|
|
- dataList = new ArrayList<SysMessageDto>();
|
|
|
- }
|
|
|
- pageInfo.setRows(dataList);
|
|
|
- return pageInfo;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 添加消息
|
|
|
- * @param subject 消息主题
|
|
|
- * @param content 消息内容
|
|
|
- * @param receivers 接收人,多个人用逗号分开
|
|
|
- * @param triggerTime 触发时间
|
|
|
- * @param mode 消息的发送模式
|
|
|
- * @param status 消息的当前状态
|
|
|
- * @param errorMsg 错误消息
|
|
|
- * @param readStatus 阅读状态
|
|
|
- * @param memo 备注
|
|
|
- * @param group 消息组
|
|
|
- * @return
|
|
|
- */
|
|
|
- private int addMessage(Integer receiverTenantId, Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
|
|
|
- String errorMsg, Integer readStatus, String memo, String group,String jpushType) {
|
|
|
- return addMessage(receiverTenantId,receivers,subject,content,triggerTime,mode,status,errorMsg,readStatus,memo,group,jpushType,null);
|
|
|
- }
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 添加消息
|
|
|
- * @param subject 消息主题
|
|
|
- * @param content 消息内容
|
|
|
- * @param receivers 接收人,多个人用逗号分开
|
|
|
- * @param triggerTime 触发时间
|
|
|
- * @param mode 消息的发送模式
|
|
|
- * @param status 消息的当前状态
|
|
|
- * @param errorMsg 错误消息
|
|
|
- * @param readStatus 阅读状态
|
|
|
- * @param memo 备注
|
|
|
- * @param group 消息组
|
|
|
- * @return
|
|
|
+ * 分页查询
|
|
|
+ * @param page IPage<SysMessageWrapper.SysMessageList>
|
|
|
+ * @param query SysMessageWrapper.SysMessageQuery
|
|
|
+ * @return IPage<SysMessageWrapper.SysMessage>
|
|
|
*/
|
|
|
- private int addMessage(Integer receiverTenantId, Map<Integer, String> receivers, String subject, String content, Date triggerTime, MessageSendMode mode, SendStatusEnum status,
|
|
|
- String errorMsg, Integer readStatus, String memo, String group,String jpushType,Integer messageConfigId) {
|
|
|
- SysMessage message = null;
|
|
|
- Date date = new Date();
|
|
|
-
|
|
|
- List<SysMessage> messages = new ArrayList<>();
|
|
|
-
|
|
|
- Integer userId = null;
|
|
|
- String receiver;
|
|
|
- for (Entry<Integer, String> entry : receivers.entrySet()) {
|
|
|
- userId = entry.getKey();
|
|
|
- receiver = entry.getValue();
|
|
|
-
|
|
|
- message = new SysMessage();
|
|
|
- if (userId == null) {
|
|
|
- SysUser user = sysUserFeignService.queryUserByMobile(receiver);
|
|
|
- if (user != null) {
|
|
|
- userId = user.getId();
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public PageInfo<SysMessageWrapper.Message> queryPage(SysMessageQueryInfo query){
|
|
|
+
|
|
|
+ CbsMessageWrapper.SysMessageQuery cbsQuery = getSysMessageQuery(query);
|
|
|
+
|
|
|
+ PageInfo<SysMessageWrapper.Message> pageInfo = new PageInfo<>(query.getPage(), query.getRows());
|
|
|
+
|
|
|
+ cbsQuery.setPage(query.getPage());
|
|
|
+ cbsQuery.setRows(query.getRows());
|
|
|
+ com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage> sysMessagePageInfo = messageFeignClientService
|
|
|
+ .sysMessagePage(cbsQuery).feignData();
|
|
|
+ List<CbsMessageWrapper.SysMessage> rows = sysMessagePageInfo.getRows();
|
|
|
+ if (CollectionUtils.isEmpty(rows)) {
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+ List<SysMessage> sysMessages = rows.stream().map(this::convert).collect(Collectors.toList());
|
|
|
+ pageInfo.setRows(JSON.parseArray(JSON.toJSONString(sysMessages), SysMessageWrapper.Message.class));
|
|
|
+ pageInfo.setTotal(sysMessagePageInfo.getTotal());
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private SysMessage convert(CbsMessageWrapper.SysMessage sysMessage) {
|
|
|
+ SysMessage message = new SysMessage();
|
|
|
+ message.setId(sysMessage.getId().toString());
|
|
|
+ if (sysMessage.getUserId() != null) {
|
|
|
+ message.setUserId(sysMessage.getUserId().intValue());
|
|
|
+ }
|
|
|
+ if (sysMessage.getMessageConfigId() != null) {
|
|
|
+ message.setMessageConfigId(sysMessage.getMessageConfigId().intValue());
|
|
|
+ }
|
|
|
+ message.setTitle(sysMessage.getTitle());
|
|
|
+ message.setContent(sysMessage.getContent());
|
|
|
+ message.setType(MessageSendMode.valueOf(sysMessage.getSendMode() !=null?sysMessage.getSendMode().name():"PUSH"));
|
|
|
+ message.setStatus(SendStatusEnum.valueOf(Optional.ofNullable(sysMessage.getStatus()).map(o->o.name()).orElse(SendStatusEnum.FAILED.name())));
|
|
|
+ message.setReceiver(sysMessage.getReceiver());
|
|
|
+ message.setSendTime(sysMessage.getSendTime());
|
|
|
+ message.setErrorMsg(sysMessage.getErrorMsg());
|
|
|
+ message.setMemo(sysMessage.getMemo());
|
|
|
+ message.setReadStatus(sysMessage.getReadStatus()?1:0);
|
|
|
+ message.setGroup(sysMessage.getGroup());
|
|
|
+ message.setCreateOn(sysMessage.getCreateTime());
|
|
|
+ message.setModifyOn(sysMessage.getUpdateTime());
|
|
|
+ message.setJpushType(sysMessage.getSendMode().name());
|
|
|
+ return message;
|
|
|
+ }
|
|
|
+
|
|
|
+ private CbsMessageWrapper.SysMessageQuery getSysMessageQuery(SysMessageQueryInfo query) {
|
|
|
+ CbsMessageWrapper.SysMessageQuery cbsQuery = new CbsMessageWrapper.SysMessageQuery();
|
|
|
+ if (query.getUserId() != null) {
|
|
|
+ cbsQuery.setUserId(query.getUserId().longValue());
|
|
|
+ }
|
|
|
+ cbsQuery.setAppKey(EAppKey.GYM);
|
|
|
+ if (query.getJpushType() !=null) {
|
|
|
+ cbsQuery.setClientType(getClientType(query.getJpushType()));
|
|
|
+ }
|
|
|
+ if (query.getStatus() !=null) {
|
|
|
+ switch (query.getStatus()) {
|
|
|
+ case 0:
|
|
|
+ cbsQuery.setStatus(ESendStatus.WAIT);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ cbsQuery.setStatus(ESendStatus.SENDING);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ cbsQuery.setStatus(ESendStatus.SUCCESSED);
|
|
|
+ break;
|
|
|
}
|
|
|
- message.setTenantId(receiverTenantId);
|
|
|
- message.setUserId(userId);
|
|
|
- message.setContent(content);
|
|
|
- message.setCreateOn(date);
|
|
|
- message.setModifyOn(date);
|
|
|
- message.setReceiver(receiver);
|
|
|
- if (triggerTime == null) {
|
|
|
- triggerTime = date;
|
|
|
+ }
|
|
|
+ cbsQuery.setTitle(query.getTitle());
|
|
|
+ if (query.getType() != null) {
|
|
|
+ switch (query.getType()) {
|
|
|
+ case 1:
|
|
|
+ cbsQuery.setSendMode(EMessageSendMode.SMS);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ cbsQuery.setSendMode(EMessageSendMode.EMAIL);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ cbsQuery.setSendMode(EMessageSendMode.PUSH);
|
|
|
+ break;
|
|
|
}
|
|
|
- message.setMessageConfigId(messageConfigId);
|
|
|
- message.setSendTime(triggerTime);
|
|
|
- message.setTitle(subject);
|
|
|
- message.setStatus(status);
|
|
|
- message.setType(mode);
|
|
|
- message.setErrorMsg(errorMsg);
|
|
|
- message.setReadStatus(readStatus);
|
|
|
- message.setMemo(memo);
|
|
|
- message.setGroup(group);
|
|
|
- message.setJpushType(jpushType);
|
|
|
- messages.add(message);
|
|
|
}
|
|
|
-
|
|
|
- return sysMessageDao.batchInsert(messages);
|
|
|
+ if (StringUtils.isNotBlank(query.getGroup())) {
|
|
|
+ cbsQuery.setGroup(query.getGroup());
|
|
|
+ }
|
|
|
+ if (query.getReadStatus() != null) {
|
|
|
+ cbsQuery.setReadStatus(query.getReadStatus() == 1);
|
|
|
+ }
|
|
|
+ return cbsQuery;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int updateMessage(SysMessage message) {
|
|
|
- return sysMessageDao.update(message);
|
|
|
+ public R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage>> queryListPage(SysMessageQueryInfo queryInfo) {
|
|
|
+ CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
|
|
|
+ query.setPage(queryInfo.getPage());
|
|
|
+ query.setRows(queryInfo.getRows());
|
|
|
+ query.setUserId(queryInfo.getUserId().longValue());
|
|
|
+// query.setStatus(ESendStatus.SUCCESSED);
|
|
|
+ query.setAppKey(EAppKey.GYM);
|
|
|
+ query.setGroup(queryInfo.getGroup());
|
|
|
+ query.setSendMode(getMessageSendMode(queryInfo.getType()));
|
|
|
+ query.setTitle(queryInfo.getTitle());
|
|
|
+ query.setClientType(getClientType(queryInfo.getJpushType()));
|
|
|
+ query.setReadStatus(queryInfo.getReadStatus() == null?null:queryInfo.getReadStatus()==1);
|
|
|
+ return messageFeignClientService.sysMessagePage(query);
|
|
|
+ }
|
|
|
+
|
|
|
+ private EMessageSendMode getMessageSendMode(Integer type){
|
|
|
+ if(type == null){
|
|
|
+ return null;
|
|
|
+ }else if(type == 1){
|
|
|
+ return EMessageSendMode.SMS;
|
|
|
+ }else if(type == 2){
|
|
|
+ return EMessageSendMode.EMAIL;
|
|
|
+ }else if(type == 3){
|
|
|
+ return EMessageSendMode.PUSH;
|
|
|
+ }else {
|
|
|
+ return EMessageSendMode.SEO;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public EClientType getClientType(String jpushType){
|
|
|
+ if(StringUtils.isEmpty(jpushType)){
|
|
|
+ return null;
|
|
|
+ }else if(StringUtils.equals(jpushType, "STUDENT")){
|
|
|
+ return EClientType.STUDENT;
|
|
|
+ }else if(StringUtils.equals(jpushType, "TEACHER")){
|
|
|
+ return EClientType.TEACHER;
|
|
|
+ }else if(StringUtils.equals(jpushType, "SCHOOL")){
|
|
|
+ return EClientType.SCHOOL;
|
|
|
+ }else {
|
|
|
+ return EClientType.BACKEND;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -207,39 +249,38 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
if(userIds != null){
|
|
|
userIds.removeAll(Collections.singleton(null));
|
|
|
}
|
|
|
- if (userIds == null || userIds.size() == 0) {
|
|
|
+ if (CollectionUtils.isEmpty(userIds)) {
|
|
|
LOGGER.error("接收地址不能为空");
|
|
|
return false;
|
|
|
}
|
|
|
- SysMessageConfig messageConfig = sysMessageConfigService.queryByType(messageType);
|
|
|
- if (messageConfig == null) {
|
|
|
- throw new BizException("消息类型错误");
|
|
|
- }else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
|
|
|
- return true;
|
|
|
- }
|
|
|
- Date date = new Date();
|
|
|
- SendStatusEnum status = SendStatusEnum.SUCCESSED;
|
|
|
- String content = MessageFormatter.arrayFormat(messageConfig.getContent(), args);
|
|
|
- SysMessage message = null;
|
|
|
-
|
|
|
- List<SysMessage> messages = new ArrayList<>();
|
|
|
- for (Integer userId : userIds) {
|
|
|
- message = new SysMessage();
|
|
|
- message.setUserId(userId);
|
|
|
- message.setContent(content);
|
|
|
- message.setCreateOn(date);
|
|
|
- message.setModifyOn(date);
|
|
|
- message.setReceiver(userId.toString());
|
|
|
- message.setSendTime(date);
|
|
|
- message.setStatus(status);
|
|
|
- message.setType(MessageSendMode.SEO);
|
|
|
- message.setTitle(messageConfig.getDescription());
|
|
|
- message.setReadStatus(0);
|
|
|
- message.setMemo(memo);
|
|
|
- message.setGroup(messageConfig.getGroup());
|
|
|
- messages.add(message);
|
|
|
+ List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(new ArrayList<>(userIds));
|
|
|
+ List<CbsMessageWrapper.MessageParam> messageParams = new ArrayList<>();
|
|
|
+ for (SimpleUserDto user : userDtoList) {
|
|
|
+ CbsMessageWrapper.MessageParam messageParam = new CbsMessageWrapper.MessageParam();
|
|
|
+ messageParam.setUserId(user.getUserId().longValue());
|
|
|
+ messageParam.setAppKey(EAppKey.GYM);
|
|
|
+ messageParam.setClientType(EClientType.BACKEND);
|
|
|
+ messageParam.setClientId(messageParam.getClientType());
|
|
|
+ messageParam.setType(messageType.getCode());
|
|
|
+ Map<Long, String> params = new HashMap<>(1);
|
|
|
+ params.put(user.getUserId().longValue(), user.getPhone());
|
|
|
+ messageParam.setReceivers(params);
|
|
|
+ messageParam.setRealSend(!debugMode);
|
|
|
+ messageParam.setUrl(memo);
|
|
|
+ if(args != null && args.length > 0){
|
|
|
+ String[] argsStr = new String[args.length];
|
|
|
+ for (int i = 0; i < args.length; i++) {
|
|
|
+ if (args[i]!=null){
|
|
|
+ argsStr[i] = args[i].toString();
|
|
|
+ }else {
|
|
|
+ argsStr[i] = "";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ messageParam.setContentArgs(argsStr);
|
|
|
+ }
|
|
|
+ messageParams.add(messageParam);
|
|
|
}
|
|
|
- sysMessageDao.batchInsert(messages);
|
|
|
+ messageFeignClientService.sysMessageBatchSendMessage(messageParams);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -425,13 +466,10 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
@Override
|
|
|
public void sendPrivateMessage(String studentId, String content, String extra) {
|
|
|
- SysUser sysUser = sysUserFeignService.queryUserInfo();
|
|
|
- if(sysUser == null){
|
|
|
- throw new BizException("用户信息获取失败");
|
|
|
- }
|
|
|
+ Integer userId = sysUserService.getUserId();
|
|
|
//ExecutorService executor = Executors.newCachedThreadPool();
|
|
|
CompletableFuture.runAsync(()->{
|
|
|
- imFeignService.privateSend(getImGroupMessage("RC:TxtMsg", sysUser.getId().toString(),
|
|
|
+ imFeignService.privateSend(getImGroupMessage("RC:TxtMsg", userId.toString(),
|
|
|
studentId.split(","), content, extra));
|
|
|
});
|
|
|
//executor.shutdown();
|
|
@@ -466,256 +504,169 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public PageInfo<SysMessageVo.SysMessageList> queryMessageCode(SysMessageVo.SysMessageQuery queryInfo) {
|
|
|
- PageInfo<SysMessageVo.SysMessageList> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
- Map<String, Object> params = new HashMap<String, Object>();
|
|
|
- MapUtil.populateMap(params, queryInfo);
|
|
|
-
|
|
|
- List<SysMessageVo.SysMessageList> dataList = null;
|
|
|
- int count = sysMessageDao.countMessageCode(params);
|
|
|
- if (count > 0) {
|
|
|
- pageInfo.setTotal(count);
|
|
|
- params.put("offset", pageInfo.getOffset());
|
|
|
- dataList = sysMessageDao.queryMessageCode(params);
|
|
|
- }
|
|
|
- if (count == 0) {
|
|
|
- dataList = new ArrayList<>();
|
|
|
- }
|
|
|
- pageInfo.setRows(dataList);
|
|
|
- return pageInfo;
|
|
|
+ public R<com.microsvc.toolkit.common.response.paging.PageInfo<CbsMessageWrapper.SysMessage>> queryMessageCode(SysMessageVo.SysMessageQuery queryInfo) {
|
|
|
+ CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
|
|
|
+ query.setPage(queryInfo.getPage());
|
|
|
+ query.setRows(queryInfo.getRows());
|
|
|
+// query.setStatus(ESendStatus.SUCCESSED);
|
|
|
+ query.setAppKey(EAppKey.GYM);
|
|
|
+ query.setTitle(queryInfo.getTitle());
|
|
|
+ query.setSendMode(EMessageSendMode.SMS);
|
|
|
+ query.setSendTimeStart(queryInfo.getSendTime() == null?null:DateUtil.stringToDate(queryInfo.getSendTime()+" 00:00:00"));
|
|
|
+ return messageFeignClientService.sysMessagePage(query);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
- String url,String jpushType, Object... args) {
|
|
|
+ public void batchSendMessage(Integer senderTenantId, MessageSender messageSender, MessageTypeEnum type, Map<Integer,String> receivers, Date triggerTime, Integer readStatus,
|
|
|
+ String url, String jpushType, Object... args) {
|
|
|
LOGGER.info("batchSendMessage tenantId {} msgSender {}, type {}, receivers {} ", senderTenantId, messageSender, type, receivers);
|
|
|
- if (receivers == null || receivers.size() == 0) {
|
|
|
+ if (receivers == null || receivers.isEmpty()) {
|
|
|
LOGGER.error("接收地址不能为空");
|
|
|
return;
|
|
|
}
|
|
|
- Integer userId = receivers.keySet().iterator().next();
|
|
|
- Integer receiverTenantId = 0;
|
|
|
- SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(userId);
|
|
|
- if(simpleUserDto != null){
|
|
|
- receiverTenantId = simpleUserDto.getTenantId();
|
|
|
- }
|
|
|
-
|
|
|
- // email data from database load, 使用接收者 tenantId, 假设发送者和接收者为同一机构
|
|
|
- if (Objects.equals(messageSender.getSendMode(), "EMAIL")) {
|
|
|
- LOGGER.info("batch 发送邮件 {} ", receiverTenantId);
|
|
|
- loadEmailInfo(senderTenantId);
|
|
|
- // debugMode = false;
|
|
|
- }
|
|
|
- if(StringUtils.isNotEmpty(jpushType) && jpushType.equals("STUDENT")){
|
|
|
+ if("STUDENT".equals(jpushType) && type != STUDENT_PUSH_VIP_BUY){
|
|
|
//如果不是缴费信息
|
|
|
- if(type != STUDENT_PUSH_VIP_BUY){
|
|
|
- int hour = DateUtil.getHour(new Date());
|
|
|
- //如果当前时间在22点之后
|
|
|
- String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
|
|
|
- if(StringUtils.isEmpty(messageTime)){
|
|
|
- messageTime = "22";
|
|
|
- }
|
|
|
- if(messageTime.contains(":")){
|
|
|
- messageTime = messageTime.substring(0,messageTime.indexOf(":"));
|
|
|
- }
|
|
|
- if(hour > Integer.parseInt(messageTime)-1){
|
|
|
- //保存推送信息
|
|
|
- WaitSendMessage waitSendMessage = new WaitSendMessage();
|
|
|
- if(args != null){
|
|
|
- waitSendMessage.setAgrs(JSON.toJSONString(args));
|
|
|
- }
|
|
|
- waitSendMessage.setJpushType(jpushType);
|
|
|
- waitSendMessage.setMessageSender(messageSender.name());
|
|
|
- waitSendMessage.setMessageType(type.name());
|
|
|
- waitSendMessage.setReceivers(JSON.toJSONString(receivers));
|
|
|
- waitSendMessage.setUrl(url);
|
|
|
- waitSendMessageDao.insert(waitSendMessage);
|
|
|
- return;
|
|
|
+ int hour = DateUtil.getHour(new Date());
|
|
|
+ //如果当前时间在22点之后
|
|
|
+ String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
|
|
|
+ if(StringUtils.isEmpty(messageTime)){
|
|
|
+ messageTime = "22";
|
|
|
+ }
|
|
|
+ if(messageTime.contains(":")){
|
|
|
+ messageTime = messageTime.substring(0,messageTime.indexOf(":"));
|
|
|
+ }
|
|
|
+ if(hour > Integer.parseInt(messageTime)-1){
|
|
|
+ //保存推送信息
|
|
|
+ WaitSendMessage waitSendMessage = new WaitSendMessage();
|
|
|
+ if(args != null){
|
|
|
+ waitSendMessage.setAgrs(JSON.toJSONString(args));
|
|
|
}
|
|
|
+ waitSendMessage.setJpushType(jpushType);
|
|
|
+ waitSendMessage.setMessageSender(messageSender.name());
|
|
|
+ waitSendMessage.setMessageType(type.name());
|
|
|
+ waitSendMessage.setReceivers(JSON.toJSONString(receivers));
|
|
|
+ waitSendMessage.setUrl(url);
|
|
|
+ waitSendMessageDao.insert(waitSendMessage);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
- String[] tos = receivers.values().toArray(new String[receivers.size()]);
|
|
|
- LOGGER.error("batch 接收人 {} ", tos );
|
|
|
- SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
|
|
|
- if (messageConfig == null) {
|
|
|
- throw new BizException("消息类型错误");
|
|
|
- }else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
|
|
|
- LOGGER.error("batch 发送标志为空" );
|
|
|
- return;
|
|
|
- }
|
|
|
- Date date = new Date();
|
|
|
- SendStatusEnum status = SendStatusEnum.WAIT;
|
|
|
- String errorMsg = null;
|
|
|
- // 立即发送
|
|
|
- if (triggerTime == null || date.after(triggerTime)) {
|
|
|
- status = SendStatusEnum.SENDING;
|
|
|
- try {
|
|
|
- if (debugMode == true || messageSenderPluginContext.batchSend(messageSender, messageConfig.getDescription(),
|
|
|
- MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,"default",null)) {
|
|
|
- status = SendStatusEnum.SUCCESSED;
|
|
|
- } else {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
+ if(StringUtils.isEmpty(jpushType)){
|
|
|
+ jpushType = "STUDENT";
|
|
|
+ }
|
|
|
+ // 处理注册验证码,没有用户ID的情况导致没有发送短息
|
|
|
+ List<CbsMessageWrapper.MessageParam> messageParams = new ArrayList<>();
|
|
|
+ List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(new ArrayList<>(receivers.keySet()));
|
|
|
+ Map<Integer, SimpleUserDto> userMap = userDtoList.stream().collect(Collectors.toMap(SimpleUserDto::getUserId, Function.identity()));
|
|
|
+ for (Map.Entry<Integer, String> receive : receivers.entrySet()) {
|
|
|
+ Long userId = Long.valueOf(Optional.ofNullable(receive.getKey()).orElse(-1));
|
|
|
+ SimpleUserDto user = userMap.getOrDefault(userId.intValue(), new SimpleUserDto());
|
|
|
+ CbsMessageWrapper.MessageParam messageParam = new CbsMessageWrapper.MessageParam();
|
|
|
+ messageParam.setUserId(userId);
|
|
|
+ messageParam.setAppKey(EAppKey.GYM);
|
|
|
+ messageParam.setClientType(getClientType(jpushType));
|
|
|
+ messageParam.setClientId(getClientType(jpushType));
|
|
|
+ messageParam.setType(type.getCode());
|
|
|
+ messageParam.setUrl(url);
|
|
|
+ Map<Long, String> params = new HashMap<>();
|
|
|
+ if(messageSender == MessageSender.EMAIL){
|
|
|
+ //如果是极光推送,没有用户ID的情况下,使用手机号
|
|
|
+ params.put(userId, Optional.ofNullable(receive.getValue()).orElse(user.getPhone()));
|
|
|
+ }else {
|
|
|
+ params.put(userId, Optional.ofNullable(user.getPhone()).orElse(receive.getValue()));
|
|
|
+ }
|
|
|
+ messageParam.setReceivers(params);
|
|
|
+ messageParam.setRealSend(!debugMode);
|
|
|
+ if(args != null && args.length > 0){
|
|
|
+ String[] argsStr = new String[args.length];
|
|
|
+ for (int i = 0; i < args.length; i++) {
|
|
|
+ if (args[i]!=null){
|
|
|
+ argsStr[i] = args[i].toString();
|
|
|
+ }else {
|
|
|
+ argsStr[i] = "";
|
|
|
+ }
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- LOGGER.warn("消息发送失败", e);
|
|
|
+ messageParam.setContentArgs(argsStr);
|
|
|
}
|
|
|
+ messageParams.add(messageParam);
|
|
|
}
|
|
|
- MessageSendMode mode = MessageSendMode.SMS;
|
|
|
- if (messageSender.getSendMode().equals("PUSH")) {
|
|
|
- mode = MessageSendMode.PUSH;
|
|
|
- } else if (messageSender.getSendMode().equals("EMAIL")) {
|
|
|
- mode = MessageSendMode.EMAIL;
|
|
|
- }
|
|
|
- // oa 待审批只推送 不记录表
|
|
|
- if (type == OA_NOTICE_PUSH) {
|
|
|
- return;
|
|
|
- }
|
|
|
- addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, mode, status, errorMsg, readStatus,
|
|
|
- url, messageConfig.getGroup(),jpushType,messageConfig.getId());
|
|
|
+ messageFeignClientService.sysMessageBatchSendMessage(messageParams);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
+ public void batchSendMessage(MessageSender messageSender, MessageTypeEnum type, Map<Integer,String> receivers, Date triggerTime, Integer readStatus,
|
|
|
String url,String jpushType, Object... args) {
|
|
|
batchSendMessage(TenantContextHolder.getTenantId(), messageSender, type, receivers, triggerTime, readStatus, url, jpushType, args);
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public void batchPushMessage(MessageTypeEnum type, Map<Integer, String> receivers, Date triggerTime, Integer readStatus,
|
|
|
+ public void batchPushMessage(MessageTypeEnum type, Map<Integer,String> receivers, Date triggerTime, Integer readStatus,
|
|
|
String url,String jpushType,String sound,String channelId, Object... args) {
|
|
|
- if (receivers == null || receivers.size() == 0) {
|
|
|
- throw new BizException("接收地址不能为空");
|
|
|
- }
|
|
|
- SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(receivers.keySet().iterator().next());
|
|
|
- Integer receiverTenantId = simpleUserDto.getTenantId();
|
|
|
-
|
|
|
- if(StringUtils.isNotEmpty(jpushType) && jpushType == "STUDENT"){
|
|
|
- //如果不是缴费信息
|
|
|
- if(type != STUDENT_PUSH_VIP_BUY){
|
|
|
- int hour = DateUtil.getHour(new Date());
|
|
|
- //如果当前时间在22点之后
|
|
|
- String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
|
|
|
- if(StringUtils.isEmpty(messageTime)){
|
|
|
- messageTime = "22";
|
|
|
- }
|
|
|
- if(messageTime.contains(":")){
|
|
|
- messageTime = messageTime.substring(0,messageTime.indexOf(":"));
|
|
|
- }
|
|
|
- if(hour > Integer.parseInt(messageTime)-1){
|
|
|
- //保存推送信息
|
|
|
- WaitSendMessage waitSendMessage = new WaitSendMessage();
|
|
|
- if(args != null){
|
|
|
- waitSendMessage.setAgrs(JSON.toJSONString(args));
|
|
|
- }
|
|
|
- waitSendMessage.setJpushType(jpushType);
|
|
|
- waitSendMessage.setMessageSender(MessageSender.JIGUANG.name());
|
|
|
- waitSendMessage.setMessageType(type.name());
|
|
|
- waitSendMessage.setReceivers(JSON.toJSONString(receivers));
|
|
|
- waitSendMessage.setUrl(url);
|
|
|
- waitSendMessageDao.insert(waitSendMessage);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- String[] tos = receivers.values().toArray(new String[receivers.size()]);
|
|
|
- SysMessageConfig messageConfig = sysMessageConfigService.queryByType(type);
|
|
|
- if (messageConfig == null) {
|
|
|
- throw new BizException("消息类型错误");
|
|
|
- }else if(messageConfig.getSendFlag() == null || messageConfig.getSendFlag() == 0){
|
|
|
+ if (receivers == null || receivers.isEmpty()) {
|
|
|
+ LOGGER.error("接收地址不能为空");
|
|
|
return;
|
|
|
}
|
|
|
- Date date = new Date();
|
|
|
- SendStatusEnum status = SendStatusEnum.WAIT;
|
|
|
- String errorMsg = null;
|
|
|
- // 立即发送
|
|
|
- if (triggerTime == null || date.after(triggerTime)) {
|
|
|
- status = SendStatusEnum.SENDING;
|
|
|
- try {
|
|
|
- if (debugMode == true || messageSenderPluginContext.batchSend(MessageSender.JIGUANG, messageConfig.getDescription(),
|
|
|
- MessageFormatter.arrayFormat(messageConfig.getContent(), args), tos, url,jpushType,sound,channelId)) {
|
|
|
- status = SendStatusEnum.SUCCESSED;
|
|
|
- } else {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
+ if("STUDENT".equals(jpushType) && type != STUDENT_PUSH_VIP_BUY){
|
|
|
+ int hour = DateUtil.getHour(new Date());
|
|
|
+ //如果当前时间在22点之后
|
|
|
+ String messageTime = sysConfigDao.findConfigValue("wait_send_message_time");
|
|
|
+ if(StringUtils.isEmpty(messageTime)){
|
|
|
+ messageTime = "22";
|
|
|
+ }
|
|
|
+ if(messageTime.contains(":")){
|
|
|
+ messageTime = messageTime.substring(0,messageTime.indexOf(":"));
|
|
|
+ }
|
|
|
+ if(hour > Integer.parseInt(messageTime)-1){
|
|
|
+ //保存推送信息
|
|
|
+ WaitSendMessage waitSendMessage = new WaitSendMessage();
|
|
|
+ if(args != null){
|
|
|
+ waitSendMessage.setAgrs(JSON.toJSONString(args));
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- LOGGER.warn("消息发送失败", e);
|
|
|
+ waitSendMessage.setJpushType(jpushType);
|
|
|
+ waitSendMessage.setMessageSender(MessageSender.JIGUANG.name());
|
|
|
+ waitSendMessage.setMessageType(type.name());
|
|
|
+ waitSendMessage.setReceivers(JSON.toJSONString(receivers));
|
|
|
+ waitSendMessage.setUrl(url);
|
|
|
+ waitSendMessageDao.insert(waitSendMessage);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
- addMessage(receiverTenantId, receivers, messageConfig.getDescription(), MessageFormatter.arrayFormat(messageConfig.getContent(), args), triggerTime, MessageSendMode.PUSH, status, errorMsg, readStatus,
|
|
|
- url, messageConfig.getGroup(),jpushType);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void sendMessage(MessageSender messageSender, Integer userId, String title, String content, String receiver, Date triggerTime, Integer readStatus, String url, String group,String jpushType) {
|
|
|
- LOGGER.info("batchSendMessage {}, userId {}, receivers {} ", messageSender, userId, receiver);
|
|
|
- if (StringUtils.isBlank(receiver)) {
|
|
|
- throw new BizException("接收地址不能为空");
|
|
|
- }
|
|
|
- SimpleUserDto simpleUserDto = teacherDao.getSimpleUser(userId);
|
|
|
- Integer receiverTenantId = simpleUserDto.getTenantId();
|
|
|
-
|
|
|
- // email data from database load
|
|
|
- if (Objects.equals(messageSender.getSendMode(), "EMAIL")) {
|
|
|
- loadEmailInfo(simpleUserDto.getTenantId());
|
|
|
- debugMode = false;
|
|
|
- LOGGER.info("batch 发送邮件 {} ", userId);
|
|
|
- }
|
|
|
- Date date = new Date();
|
|
|
- SendStatusEnum status = SendStatusEnum.WAIT;
|
|
|
- String errorMsg = null;
|
|
|
- // 立即发送
|
|
|
- if (triggerTime == null || date.after(triggerTime)) {
|
|
|
- status = SendStatusEnum.SENDING;
|
|
|
- try {
|
|
|
- if (debugMode == true || messageSenderPluginContext.send(messageSender, receiver, title, content, url,jpushType,"default",null)) {
|
|
|
- status = SendStatusEnum.SUCCESSED;
|
|
|
- } else {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
+ if(StringUtils.isEmpty(jpushType)){
|
|
|
+ jpushType = "STUDENT";
|
|
|
+ }
|
|
|
+ List<SimpleUserDto> userDtoList = teacherDao.getUsersSimpleInfo(new ArrayList<>(receivers.keySet()));
|
|
|
+ List<CbsMessageWrapper.MessageParam> messageParams = new ArrayList<>();
|
|
|
+ for (SimpleUserDto user : userDtoList) {
|
|
|
+ CbsMessageWrapper.MessageParam messageParam = new CbsMessageWrapper.MessageParam();
|
|
|
+ messageParam.setUserId(user.getUserId().longValue());
|
|
|
+ messageParam.setAppKey(EAppKey.GYM);
|
|
|
+ messageParam.setClientType(EClientType.valueOf(jpushType));
|
|
|
+ messageParam.setClientId(messageParam.getClientType());
|
|
|
+ messageParam.setType(type.getCode());
|
|
|
+ messageParam.setUrl(url);
|
|
|
+ Map<Long, String> params = new HashMap<>();
|
|
|
+ params.put(user.getUserId().longValue(), user.getPhone());
|
|
|
+ messageParam.setReceivers(params);
|
|
|
+ messageParam.setRealSend(!debugMode);
|
|
|
+ if(args != null && args.length > 0){
|
|
|
+ String[] argsStr = new String[args.length];
|
|
|
+ for (int i = 0; i < args.length; i++) {
|
|
|
+ if (args[i]!=null){
|
|
|
+ argsStr[i] = args[i].toString();
|
|
|
+ }else {
|
|
|
+ argsStr[i] = "";
|
|
|
+ }
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- status = SendStatusEnum.FAILED;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- LOGGER.warn("消息发送失败", e);
|
|
|
+ messageParam.setContentArgs(argsStr);
|
|
|
}
|
|
|
+ messageParams.add(messageParam);
|
|
|
}
|
|
|
- MessageSendMode mode = MessageSendMode.SMS;
|
|
|
- if (messageSender.getSendMode().equals("PUSH")) {
|
|
|
- mode = MessageSendMode.PUSH;
|
|
|
- } else if (messageSender.getSendMode().equals("EMAIL")) {
|
|
|
- mode = MessageSendMode.EMAIL;
|
|
|
- LOGGER.info("发送邮件 {} ");
|
|
|
- }
|
|
|
- Map<Integer, String> receivers = new HashMap<Integer, String>();
|
|
|
- receivers.put(userId, receiver);
|
|
|
- addMessage(receiverTenantId, receivers, title, content, triggerTime, mode, status, errorMsg, readStatus, url, null,jpushType);
|
|
|
+ messageFeignClientService.sysMessageBatchSendMessage(messageParams);
|
|
|
}
|
|
|
|
|
|
- private void loadEmailInfo(Integer tenantId) {
|
|
|
- try {
|
|
|
- SysEmail email1 = sysEmailService.getOne(new WrapperUtil<SysEmail>().hasEq("tenant_id_", tenantId).queryWrapper());
|
|
|
- if (email1 == null) {
|
|
|
- LOGGER.error("未找到邮件配置 tenantId" + tenantId);
|
|
|
- throw new RuntimeException("未找到邮件配置 tenantId" + tenantId);
|
|
|
- }
|
|
|
-
|
|
|
- messageSenderPluginContext.sysEmail.setHostName(email1.getHostName());
|
|
|
- messageSenderPluginContext.sysEmail.setSmtpPort(email1.getSmtpPort());
|
|
|
- messageSenderPluginContext.sysEmail.setUserName(email1.getUserName());
|
|
|
- messageSenderPluginContext.sysEmail.setPassword(email1.getPassword());
|
|
|
- messageSenderPluginContext.sysEmail.setFromName(email1.getFromName());
|
|
|
- messageSenderPluginContext.sysEmail.setFrom(email1.getFrom());
|
|
|
- } catch (Exception e) {
|
|
|
- LOGGER.error("设置邮件配置错误: {} " + e);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
- public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver) {
|
|
|
+ public boolean sendSecurityCode(MessageSender messageSender, Integer userId, MessageTypeEnum messageType, String receiver,String jpushType) {
|
|
|
String key1 = getVerificationCode1CacheKey(messageType, receiver);
|
|
|
if (redisCache.get(key1) != null) {
|
|
|
throw new BizException("请勿频繁操作,获取验证码间隔时间为60秒");
|
|
@@ -723,12 +674,12 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
String key = getVerificationCodeCacheKey(messageType, receiver);
|
|
|
int code = DEFAULT_CODE;
|
|
|
- if (debugMode == false) {
|
|
|
+ if (!debugMode) {
|
|
|
code = getRandomCode(messageType, receiver);
|
|
|
}
|
|
|
Map<Integer, String> receivers = new HashMap<>(1);
|
|
|
receivers.put(userId, receiver);
|
|
|
- batchSendMessage(messageSender, messageType, receivers, null, 1, "","", code);
|
|
|
+ batchSendMessage(messageSender, messageType, receivers, null, 1, "",jpushType, Integer.toString(code));
|
|
|
redisCache.put(key, code + "", CODE_EXPIRE);
|
|
|
redisCache.put(key1, code + "", CODE_INTERVAL_TIME);
|
|
|
return true;
|
|
@@ -736,7 +687,7 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
|
|
|
@Override
|
|
|
public String getSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
|
|
|
- if (debugMode == true) {
|
|
|
+ if (debugMode) {
|
|
|
return DEFAULT_CODE + "";
|
|
|
}
|
|
|
String key = getVerificationCodeCacheKey(type, mobileNOOrEmailAddr);
|
|
@@ -744,22 +695,23 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
return object == null ? null : object.toString();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void delSendedVerificationCode(MessageTypeEnum type, String mobileNOOrEmailAddr) {
|
|
|
- String key = getVerificationCodeCacheKey(type, mobileNOOrEmailAddr);
|
|
|
- if (StringUtils.isNotBlank(key)) {
|
|
|
- redisCache.delete(key);
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
@Override
|
|
|
public Map<String, Integer> queryCountOfUnread(MessageSendMode type, Integer userId, String jpushType, Integer tenantId) {
|
|
|
- List<Mapper> mappers = sysMessageDao.queryCountOfUnread(type, userId, jpushType, tenantId);
|
|
|
+ CbsMessageWrapper.SysMessageQuery query = new CbsMessageWrapper.SysMessageQuery();
|
|
|
+ query.setUserId(userId.longValue());
|
|
|
+ query.setClientType(getClientType(jpushType));
|
|
|
+// query.setStatus(ESendStatus.SUCCESSED);
|
|
|
+ query.setAppKey(EAppKey.GYM);
|
|
|
+ query.setSendMode(getMessageSendMode(type.getCode()));
|
|
|
+ query.setReadStatus(false);
|
|
|
+ List<CbsMessageWrapper.MessageUnreadStat> messageUnreadStats = messageFeignClientService.messageUnreadStat(query).feignData();
|
|
|
+// List<Mapper> mappers = sysMessageDao.queryCountOfUnread(type, userId, jpushType, tenantId);
|
|
|
|
|
|
Map<String, Integer> map = new HashMap<String, Integer>();
|
|
|
|
|
|
- for (Mapper mapper : mappers) {
|
|
|
- map.put(mapper.getKey().toString(), Integer.parseInt(mapper.getValue().toString()));
|
|
|
+ for (CbsMessageWrapper.MessageUnreadStat mapper : messageUnreadStats) {
|
|
|
+ map.put(mapper.getGroup(), mapper.getNumber());
|
|
|
}
|
|
|
|
|
|
return map;
|
|
@@ -792,17 +744,26 @@ public class SysMessageServiceImpl extends BaseServiceImpl<Long, SysMessage> imp
|
|
|
* @return 修改的条数
|
|
|
*/
|
|
|
@Override
|
|
|
- public int updateStatus(Integer userId, int status,String jpushType) {
|
|
|
- return sysMessageDao.updateStatus(userId, status,jpushType);
|
|
|
+ public Boolean updateStatus(Integer userId, int status,String jpushType) {
|
|
|
+ CbsMessageWrapper.MessageRead messageRead = new CbsMessageWrapper.MessageRead();
|
|
|
+ messageRead.setUserId(userId.longValue());
|
|
|
+ messageRead.setAppKey(EAppKey.GYM);
|
|
|
+ messageRead.setClientType(getClientType(jpushType));
|
|
|
+ return messageFeignClientService.batchSetRead(messageRead).feignData();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int updateOneStatus(Long id, int status) {
|
|
|
- return sysMessageDao.updateOneStatus(id, status);
|
|
|
+ public Boolean updateOneStatus(Long id) {
|
|
|
+ return messageFeignClientService.setRead(id).feignData();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
|
|
|
- return sysMessageDao.queryUserInRecentMinList(mobile, recentMin, type);
|
|
|
+ public List<CbsMessageWrapper.SysMessage> queryUserInRecentMinList(String mobile, int recentMin, MessageSendMode type) {
|
|
|
+ CbsMessageWrapper.UserRecentMessageQuery query = new CbsMessageWrapper.UserRecentMessageQuery();
|
|
|
+ query.setPhone(mobile);
|
|
|
+ query.setRecentMin(recentMin);
|
|
|
+ query.setSendMode(EMessageSendMode.SMS);
|
|
|
+ query.setAppKey(EAppKey.GYM);
|
|
|
+ return messageFeignClientService.userRecentMessageRecords(query).feignData();
|
|
|
}
|
|
|
}
|