|
|
@@ -7,10 +7,6 @@ import com.uas.account.util.AccountUtils;
|
|
|
import com.uas.account.util.FlexJsonUtil;
|
|
|
import com.uas.ps.core.page.PageInfo;
|
|
|
import com.uas.ps.core.page.PageParams;
|
|
|
-import com.uas.ps.core.page.criteria.LogicalExpression;
|
|
|
-import com.uas.ps.core.page.criteria.PredicateUtils;
|
|
|
-import com.uas.ps.core.page.criteria.SimpleExpression;
|
|
|
-import com.uas.ps.core.util.ArrayUtils;
|
|
|
import com.uas.ps.message.dao.AppDao;
|
|
|
import com.uas.ps.message.dao.MessageDao;
|
|
|
import com.uas.ps.message.domain.App;
|
|
|
@@ -26,6 +22,8 @@ import com.uas.ps.message.util.SMSType;
|
|
|
import com.uas.ps.message.util.SplitChar;
|
|
|
import com.uas.ps.message.util.account.HttpUtil;
|
|
|
import com.uas.ps.message.util.account.HttpUtil.ResponseWrap;
|
|
|
+import java.sql.ResultSet;
|
|
|
+import java.sql.SQLException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
@@ -33,16 +31,14 @@ import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Set;
|
|
|
-import javax.persistence.criteria.CriteriaBuilder;
|
|
|
-import javax.persistence.criteria.CriteriaQuery;
|
|
|
-import javax.persistence.criteria.Predicate;
|
|
|
-import javax.persistence.criteria.Root;
|
|
|
import org.apache.log4j.Logger;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
-import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.data.domain.PageImpl;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.MediaType;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.jdbc.core.RowMapper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.ui.ModelMap;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
@@ -60,7 +56,9 @@ public class MessageServiceImpl implements MessageService {
|
|
|
|
|
|
private final AppDao appDao;
|
|
|
|
|
|
- private static final Logger logger = Logger.getLogger(Logger.class);
|
|
|
+ private static final Logger LOGGER = Logger.getLogger(Logger.class);
|
|
|
+
|
|
|
+ private final JdbcTemplate jdbcTemplate;
|
|
|
|
|
|
// private RestTemplate restTemplate;
|
|
|
|
|
|
@@ -70,7 +68,8 @@ public class MessageServiceImpl implements MessageService {
|
|
|
|
|
|
private static final String PROD_URL = "https://mobile.ubtob.com/tigase/baiduPush";
|
|
|
|
|
|
- private static final String PUBLIC_INQUIRY_IM_URL= "https://mobile.ubtob.com:8443/openapp/?pagekind=B&id=%s&uu=%s&telephone=%s";
|
|
|
+ private static final String PUBLIC_INQUIRY_IM_URL = "https://mobile.ubtob.com:8443/openapp/?pagekind"
|
|
|
+ + "=B&id=%s&uu=%s&telephone=%s";
|
|
|
/**
|
|
|
* 邮件服务主机地址
|
|
|
*/
|
|
|
@@ -91,9 +90,10 @@ public class MessageServiceImpl implements MessageService {
|
|
|
private final String messageUrl = "http://10.10.100.136:8080/sms/send";
|
|
|
|
|
|
@Autowired
|
|
|
- public MessageServiceImpl(MessageDao messageDao, AppDao appDao) {
|
|
|
+ public MessageServiceImpl(MessageDao messageDao, AppDao appDao, JdbcTemplate jdbcTemplate) {
|
|
|
this.messageDao = messageDao;
|
|
|
this.appDao = appDao;
|
|
|
+ this.jdbcTemplate = jdbcTemplate;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -112,41 +112,71 @@ public class MessageServiceImpl implements MessageService {
|
|
|
final Long consumerAppId = consumerAppExists.getId();
|
|
|
|
|
|
// 消息接收人过滤
|
|
|
- SimpleExpression receiverUuExp = PredicateUtils.eq("receiverUu", Long.valueOf(receiverUu), true);
|
|
|
+// SimpleExpression receiverUuExp = PredicateUtils.eq("receiverUu", Long.valueOf(receiverUu), true);
|
|
|
// 消息接收企业过滤
|
|
|
- SimpleExpression receiverEnuuExp = PredicateUtils.eq("receiverEnuu", Long.valueOf(receiverEnuu), true);
|
|
|
- SimpleExpression[] simpleExpressions = new SimpleExpression[] {receiverUuExp, receiverEnuuExp};
|
|
|
+// SimpleExpression receiverEnuuExp = PredicateUtils.eq("receiverEnuu", Long.valueOf(receiverEnuu), true);
|
|
|
+// SimpleExpression[] simpleExpressions = new SimpleExpression[] {receiverUuExp, receiverEnuuExp};
|
|
|
|
|
|
+ String sql = String.format("select * from messages m where ms_receiveruu = %s and ms_receiverenuu = %s ",
|
|
|
+ Long.valueOf(receiverUu), Long.valueOf(receiverEnuu));
|
|
|
// 读取状态
|
|
|
if (!StringUtils.isEmpty(isRead)) {
|
|
|
- SimpleExpression isReadExp = PredicateUtils.eq("isRead", Short.valueOf(isRead), true);
|
|
|
- simpleExpressions = ArrayUtils.concat(simpleExpressions, new SimpleExpression[] {isReadExp});
|
|
|
+// SimpleExpression isReadExp = PredicateUtils.eq("isRead", Short.valueOf(isRead), true);
|
|
|
+// simpleExpressions = ArrayUtils.concat(simpleExpressions, new SimpleExpression[] {isReadExp});
|
|
|
+ sql += String.format(" and ms_isread = %s", Short.valueOf(isRead));
|
|
|
}
|
|
|
|
|
|
// 关键词搜索
|
|
|
if (!StringUtils.isEmpty(keyword)) {
|
|
|
- SimpleExpression contentExp = PredicateUtils.like("content", keyword, true);
|
|
|
- simpleExpressions = ArrayUtils.concat(simpleExpressions, new SimpleExpression[] {contentExp});
|
|
|
+// SimpleExpression contentExp = PredicateUtils.like("content", keyword, true);
|
|
|
+// simpleExpressions = ArrayUtils.concat(simpleExpressions, new SimpleExpression[] {contentExp});
|
|
|
+ sql += String.format(" and ms_content like '%%%s%%'", keyword);
|
|
|
}
|
|
|
|
|
|
- final LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
|
|
|
+ sql += String.format(" and exists (select 1 from message$consumeapp where app_id = %s and m.ms_id = ms_id)",
|
|
|
+ consumerAppId);
|
|
|
|
|
|
+// final LogicalExpression logicalExpression = PredicateUtils.and(simpleExpressions);
|
|
|
final PageInfo pageInfo = new PageInfo(pageParams);
|
|
|
-
|
|
|
- return messageDao.findAll(new Specification<Message>() {
|
|
|
+ List<Message> messageList = jdbcTemplate.query(sql, new RowMapper<Message>() {
|
|
|
@Override
|
|
|
- public Predicate toPredicate(Root<Message> root, CriteriaQuery<?> criteriaQuery,
|
|
|
- CriteriaBuilder criteriaBuilder) {
|
|
|
- Predicate messagePredicate = criteriaBuilder.and(logicalExpression.toPredicate(root, criteriaQuery,
|
|
|
- criteriaBuilder));
|
|
|
- // 消费应用过滤
|
|
|
- Predicate consumerAppPredicate = criteriaBuilder.equal(root.join("consumerApp").get("id"),
|
|
|
- consumerAppId);
|
|
|
- Predicate all = criteriaBuilder.and(messagePredicate, consumerAppPredicate);
|
|
|
- criteriaQuery.where(all);
|
|
|
- return null;
|
|
|
+ public Message mapRow(ResultSet resultSet, int i) throws SQLException {
|
|
|
+ Message message = new Message();
|
|
|
+ if (resultSet != null) {
|
|
|
+ message.setId(resultSet.getLong("ms_id"));
|
|
|
+ message.setConsumeType(resultSet.getString("ms_consumeType"));
|
|
|
+ message.setContent(resultSet.getString("ms_content"));
|
|
|
+ message.setCreateTime(resultSet.getDate("ms_createTime"));
|
|
|
+ message.setIsRead(resultSet.getShort("ms_isread"));
|
|
|
+ message.setIsSent(resultSet.getShort("ms_issent"));
|
|
|
+ message.setReceiverEnuu(resultSet.getLong("ms_receiverenuu"));
|
|
|
+ message.setReceiverUu(resultSet.getLong("ms_receiveruu"));
|
|
|
+ message.setSenderEnuu(resultSet.getLong("ms_senderenuu"));
|
|
|
+ message.setSenderUu(resultSet.getLong("ms_senderuu"));
|
|
|
+ message.setType(resultSet.getString("ms_type"));
|
|
|
+ message.setRemark(resultSet.getString("ms_remark"));
|
|
|
+ message.setSourceId(resultSet.getLong("ms_sourceid"));
|
|
|
+ }
|
|
|
+ return message;
|
|
|
}
|
|
|
- }, pageInfo);
|
|
|
+ });
|
|
|
+ Long count = jdbcTemplate.queryForObject(sql.replace("*", "count(1)"), Long.class);
|
|
|
+ return new PageImpl<Message>(messageList, pageInfo, count);
|
|
|
+
|
|
|
+// return messageDao.findAll(new Specification<Message>() {
|
|
|
+// @Override
|
|
|
+// public Predicate toPredicate(Root<Message> root, CriteriaQuery<?> criteriaQuery,
|
|
|
+// CriteriaBuilder criteriaBuilder) {
|
|
|
+// Predicate messagePredicate = criteriaBuilder.and(logicalExpression.toPredicate(root, criteriaQuery,
|
|
|
+// criteriaBuilder));
|
|
|
+// // 消费应用过滤
|
|
|
+// Predicate consumerAppPredicate = criteriaBuilder.equal(root.join("consumerApp").get("id"),
|
|
|
+// consumerAppId);
|
|
|
+// Predicate all = criteriaBuilder.and(messagePredicate, consumerAppPredicate);
|
|
|
+// criteriaQuery.where(all);
|
|
|
+// return null;
|
|
|
+// }
|
|
|
+// }, pageInfo);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -181,7 +211,7 @@ public class MessageServiceImpl implements MessageService {
|
|
|
throw new ParameterMissingException("接收应用信息为空");
|
|
|
}
|
|
|
App consumerAppExists = appDao.findByName(consumerApp);
|
|
|
- if (consumerApp == null) {
|
|
|
+ if (consumerAppExists == null) {
|
|
|
throw new IllegalOperatorException("接收应用不存在");
|
|
|
}
|
|
|
|
|
|
@@ -223,7 +253,7 @@ public class MessageServiceImpl implements MessageService {
|
|
|
// 获取改应用应接收的未读、未发送的需要推送的消息(取前500条)
|
|
|
List<Message> messages = messageDao.findByConsumerAppIdAndIsReadAndIsSentNeedToSend(
|
|
|
consumerAppExists.getId(), Constant.NO, Constant.NO);
|
|
|
- logger.info("信息数量:" + messages.size());
|
|
|
+ LOGGER.info("信息数量:" + messages.size());
|
|
|
Map<String, Object> resultMap = sendMessageByAPI(messages, consumerApp);
|
|
|
resultMap.put("success", "success");
|
|
|
return resultMap;
|
|
|
@@ -445,12 +475,12 @@ public class MessageServiceImpl implements MessageService {
|
|
|
UserView receiver = AccountUtils.getImUserByUserUU(message.getReceiverUu(),
|
|
|
message.getReceiverEnuu());
|
|
|
if (receiver.getName() != null) {
|
|
|
- logger.info("接收人:" + receiver.getName());
|
|
|
+ LOGGER.info("接收人:" + receiver.getName());
|
|
|
|
|
|
UserView sender = AccountUtils.getImUserByUserUU(message.getSenderUu(),
|
|
|
message.getSenderEnuu());
|
|
|
if (sender != null && sender.getName() != null && sender.getSpaceName() != null) {
|
|
|
- logger.info("发送人:" + sender.getName());
|
|
|
+ LOGGER.info("发送人:" + sender.getName());
|
|
|
|
|
|
boolean sendSuccess = false;
|
|
|
// 发送邮件
|
|
|
@@ -460,13 +490,13 @@ public class MessageServiceImpl implements MessageService {
|
|
|
|
|
|
// 发送短息
|
|
|
if (message.getSmsType().contains(SMSType.SM)) {
|
|
|
- logger.info("开始推送短信");
|
|
|
+ LOGGER.info("开始推送短信");
|
|
|
sendSuccess = sendSM(message, receiver, sender);
|
|
|
}
|
|
|
|
|
|
// 发送IM
|
|
|
if (message.getSmsType().contains(SMSType.IM)) {
|
|
|
- logger.info("开始推送IM");
|
|
|
+ LOGGER.info("开始推送IM");
|
|
|
sendSuccess = sendIM(message, receiver, consumerApp);
|
|
|
}
|
|
|
|
|
|
@@ -475,14 +505,14 @@ public class MessageServiceImpl implements MessageService {
|
|
|
pushSuccess(message, receiver, sender);
|
|
|
}
|
|
|
} else {
|
|
|
- logger.info("发送人信息为空,uu:" + message.getSenderUu() + ",enuu:" + message.getSenderEnuu());
|
|
|
+ LOGGER.info("发送人信息为空,uu:" + message.getSenderUu() + ",enuu:" + message.getSenderEnuu());
|
|
|
}
|
|
|
} else {
|
|
|
- logger.info("接收人姓名为空,uu:" + message.getReceiverUu() + ",enuu:" + message.getReceiverEnuu());
|
|
|
+ LOGGER.info("接收人姓名为空,uu:" + message.getReceiverUu() + ",enuu:" + message.getReceiverEnuu());
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
message.setIsSent(Constant.ERROR);
|
|
|
- logger.info(e.getMessage());
|
|
|
+ LOGGER.info(e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
messageDao.save(messages);
|
|
|
@@ -556,7 +586,7 @@ public class MessageServiceImpl implements MessageService {
|
|
|
}
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
- logger.info("短信推送异常:" + e.getMessage());
|
|
|
+ LOGGER.info("短信推送异常:" + e.getMessage());
|
|
|
e.printStackTrace();
|
|
|
return false;
|
|
|
}
|
|
|
@@ -578,22 +608,7 @@ public class MessageServiceImpl implements MessageService {
|
|
|
sms.setTemplateId(message.getSmTemplate());
|
|
|
String response = com.uas.ps.message.util.HttpUtil
|
|
|
.sendPost(messageUrl, FastjsonUtils.toJson(sms));
|
|
|
- logger.info("短信推送成功:" + response);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
- SmsMessage smsMessage = new SmsMessage();
|
|
|
- List<Object> param = new ArrayList<>();
|
|
|
- param.add("测试公司");
|
|
|
- param.add("测试型号");
|
|
|
-
|
|
|
- smsMessage.setParams(param);
|
|
|
- smsMessage.setReceiver("13632823241");
|
|
|
- smsMessage.setTemplateId("7879bfda-f871-4a95-9430-54d1ea00b198");
|
|
|
- String response = com.uas.ps.message.util.HttpUtil
|
|
|
- .sendPost("http://10.10.100.136:8080/sms/send", FastjsonUtils.toJson(smsMessage));
|
|
|
- System.out.println(response);
|
|
|
+ LOGGER.info("短信推送成功:" + response);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -631,10 +646,10 @@ public class MessageServiceImpl implements MessageService {
|
|
|
try {
|
|
|
ResponseWrap res = HttpUtil.doPost(PROD_URL, params);
|
|
|
if (res.isSuccess()) {
|
|
|
- logger.info("IM推送成功");
|
|
|
+ LOGGER.info("IM推送成功");
|
|
|
return true;
|
|
|
} else {
|
|
|
- logger.info("IM推送失败:" + res.getContent());
|
|
|
+ LOGGER.info("IM推送失败:" + res.getContent());
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|