|
|
@@ -0,0 +1,651 @@
|
|
|
+package com.uas.cloud.mall.service.impl;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.fastjson.TypeReference;
|
|
|
+import com.google.gson.JsonObject;
|
|
|
+import com.mongodb.BasicDBObject;
|
|
|
+import com.mongodb.DBObject;
|
|
|
+import com.uas.cloud.mall.domain.*;
|
|
|
+import com.uas.cloud.mall.repository.*;
|
|
|
+import com.uas.cloud.mall.service.MessageLogService;
|
|
|
+import com.uas.cloud.mall.service.MessageTextService;
|
|
|
+import com.uas.cloud.mall.util.*;
|
|
|
+import org.apache.catalina.User;
|
|
|
+import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageImpl;
|
|
|
+import org.springframework.data.domain.Sort;
|
|
|
+import org.springframework.data.mongodb.core.MongoTemplate;
|
|
|
+import org.springframework.data.mongodb.core.query.Criteria;
|
|
|
+import org.springframework.data.mongodb.core.query.Query;
|
|
|
+import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by wangyc on 2017/6/26.
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class MessageLogServiceImpl implements MessageLogService{
|
|
|
+
|
|
|
+ private final MessageLogRepository messageLogRepository;
|
|
|
+
|
|
|
+ private final MessageTextRepository messageTextRepository;
|
|
|
+
|
|
|
+ private final MessageTextService messageTextService;
|
|
|
+
|
|
|
+ private final UserBaseInfoReposity userBaseInfoReposity;
|
|
|
+
|
|
|
+ private final EnterpriseRepository enterpriseRepository;
|
|
|
+
|
|
|
+ private final JdbcTemplate jdbcTemplate;
|
|
|
+
|
|
|
+ private final MongoTemplate mongoTemplate;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public MessageLogServiceImpl (MessageLogRepository messageLogRepository, MessageTextService messageTextService, MessageTextRepository messageTextRepository,UserBaseInfoReposity userBaseInfoReposity, EnterpriseRepository enterpriseRepository, JdbcTemplate jdbcTemplate, MongoTemplate mongoTemplate) {
|
|
|
+ this.messageLogRepository = messageLogRepository;
|
|
|
+ this.messageTextRepository = messageTextRepository;
|
|
|
+ this.messageTextService = messageTextService;
|
|
|
+ this.userBaseInfoReposity = userBaseInfoReposity;
|
|
|
+ this.enterpriseRepository = enterpriseRepository;
|
|
|
+ this.jdbcTemplate = jdbcTemplate;
|
|
|
+ this.mongoTemplate = mongoTemplate;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog savePrivate(JSONObject jsonObject) {
|
|
|
+ MessageLog messageLog = JSON.parseObject(jsonObject.toJSONString(), MessageLog.class);
|
|
|
+ UserBaseInfo receiver = userBaseInfoReposity.findByUserUU(messageLog.getRecuu());
|
|
|
+ messageLog.setReceiver(receiver);
|
|
|
+ if (messageLog.getRecenuu() != null)
|
|
|
+ messageLog.setRecenterprise(enterpriseRepository.findByuu(messageLog.getRecenuu()));
|
|
|
+
|
|
|
+ UserBaseInfo sender = new UserBaseInfo();
|
|
|
+ if (messageLog.getSenduu() == 1) {
|
|
|
+ sender.setUserUU(1L);
|
|
|
+ sender.setUserName("平台");
|
|
|
+ } else {
|
|
|
+ sender = userBaseInfoReposity.findByUserUU(messageLog.getSenduu());
|
|
|
+ }
|
|
|
+
|
|
|
+ messageLog.setSender(sender);
|
|
|
+ Enterprise sendEnterprise = enterpriseRepository.findByuu(messageLog.getSendEnuu());
|
|
|
+ messageLog.setSendEnterprise(sendEnterprise);
|
|
|
+ messageLog.setStatus(Status.UNREAD.name());
|
|
|
+ messageLog.setIsDelete((short) 0);
|
|
|
+
|
|
|
+ MessageText messageText = jsonObject.getObject("messageText", MessageText.class);
|
|
|
+ messageText.setCount(1L);
|
|
|
+ messageText.setSenduu(messageLog.getSenduu());
|
|
|
+ messageText.setSendEnuu(messageLog.getSendEnuu());
|
|
|
+ messageText.setSender(sender);
|
|
|
+ messageText.setSendEnterprise(sendEnterprise);
|
|
|
+ messageText.setRecuu(messageLog.getRecuu());
|
|
|
+ messageText.setReceiver(receiver);
|
|
|
+ messageTextRepository.save(messageText);
|
|
|
+
|
|
|
+ messageLog.setMessageText(messageText);
|
|
|
+ messageLog.setTextid(messageText.getId());
|
|
|
+ return messageLogRepository.save(messageLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog savePrivateMutilate(JSONObject jsonObject) {
|
|
|
+ MessageLog messageLog = JSON.parseObject(jsonObject.toJSONString(), MessageLog.class);
|
|
|
+ MessageText messageText = jsonObject.getObject("messageText", MessageText.class);
|
|
|
+
|
|
|
+ List<MessageLog> messageLogs = new ArrayList<MessageLog>();
|
|
|
+ List<Map<String, Object>> users = jdbcTemplate.queryForList("select * from sec$userenterprise where en_uu=" + messageLog.getRecenuu());
|
|
|
+
|
|
|
+ UserBaseInfo sender = new UserBaseInfo(1L, "平台");
|
|
|
+ if (messageLog.getSenduu() != 1)
|
|
|
+ sender = userBaseInfoReposity.findByUserUU(messageLog.getSenduu());
|
|
|
+ Enterprise sendEnterprise = enterpriseRepository.findByuu(messageLog.getSendEnuu());
|
|
|
+ messageText.setCount((long) users.size());
|
|
|
+ messageText.setSenduu(messageLog.getSenduu());
|
|
|
+ messageText.setSendEnuu(messageLog.getSendEnuu());
|
|
|
+ messageText.setSender(sender);
|
|
|
+ messageText.setSendEnterprise(sendEnterprise);
|
|
|
+
|
|
|
+ messageTextRepository.save(messageText);
|
|
|
+
|
|
|
+ for (Map<String, Object> user : users) {
|
|
|
+ MessageLog messageLogUser = new MessageLog(messageLog);
|
|
|
+ messageLogUser.setRecuu(Long.valueOf(user.get("user_uu").toString()));
|
|
|
+ messageLogUser.setRecenuu(Long.valueOf(user.get("en_uu").toString()));
|
|
|
+ messageLogUser.setReceiver(userBaseInfoReposity.findByUserUU(messageLogUser.getRecuu()));
|
|
|
+ messageLogUser.setRecenterprise(enterpriseRepository.findByuu(messageLogUser.getRecenuu()));
|
|
|
+ messageLogUser.setSender(sender);
|
|
|
+ messageLogUser.setSendEnterprise(sendEnterprise);
|
|
|
+ messageLogUser.setStatus(Status.UNREAD.name());
|
|
|
+ messageLogUser.setIsDelete((short) 0);
|
|
|
+ messageLogUser.setMessageText(messageText);
|
|
|
+ messageLogUser.setTextid(messageText.getId());
|
|
|
+ messageLogs.add(messageLogUser);
|
|
|
+ }
|
|
|
+ return messageLogRepository.save(messageLogs).get(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog savePublic(JSONObject jsonObject) {
|
|
|
+ MessageText messageText = jsonObject.getObject("messageText", MessageText.class);
|
|
|
+
|
|
|
+
|
|
|
+ // 给每个用户发送一条公有消息
|
|
|
+ List<UserBaseInfo> users = userBaseInfoReposity.findAll();
|
|
|
+ JSON.parseObject(jsonObject.toJSONString(), MessageLog.class);
|
|
|
+ MessageLog message = JSON.parseObject(jsonObject.toJSONString(), MessageLog.class);
|
|
|
+
|
|
|
+ messageText.setSendEnuu(message.getSendEnuu());
|
|
|
+ messageText.setSenduu(message.getSenduu());
|
|
|
+
|
|
|
+ UserBaseInfo sender = new UserBaseInfo(1L, "平台");
|
|
|
+ if (message.getSenduu() != 1) {
|
|
|
+ sender = userBaseInfoReposity.findByUserUU(message.getSenduu());
|
|
|
+ }
|
|
|
+ Enterprise sendEnterprise = enterpriseRepository.findByuu(message.getSendEnuu());
|
|
|
+
|
|
|
+ messageText.setSender(sender);
|
|
|
+ messageText.setSendEnterprise(sendEnterprise);
|
|
|
+ messageText.setCount((long) users.size());
|
|
|
+
|
|
|
+ messageTextRepository.save(messageText);
|
|
|
+
|
|
|
+ Thread t = new Thread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ long startTime = new Date().getTime();
|
|
|
+ PageParams pageParams = new PageParams();
|
|
|
+ int page = 1;
|
|
|
+ pageParams.setPage(page);
|
|
|
+ pageParams.setCount(1000);
|
|
|
+ final PageInfo pageInfo = new PageInfo(pageParams);
|
|
|
+ Long usersCount = userBaseInfoReposity.findCount();
|
|
|
+ Long pages = usersCount / 1000;
|
|
|
+ pages = usersCount % 1000 > 0 ? pages + 1 : pages;
|
|
|
+ System.err.println("总数:" + usersCount);
|
|
|
+ System.err.println(pages);
|
|
|
+// int num = 1;
|
|
|
+ for (int i = 1; i <= pages; i++) {
|
|
|
+ pageInfo.setPageNumber(i);
|
|
|
+ pageInfo.setOffset(1000 * (i - 1));
|
|
|
+ Page<UserBaseInfo> pageUsers = userBaseInfoReposity.findAll(pageInfo);
|
|
|
+ List<UserBaseInfo> usersList = pageUsers.getContent();
|
|
|
+ for (UserBaseInfo user : usersList) {
|
|
|
+// System.err.println("第 " + num + " 位:" + user.getUserName());
|
|
|
+ MessageLog messageLog = JSON.parseObject(jsonObject.toJSONString(), MessageLog.class);
|
|
|
+ messageLog.setRecuu(user.getUserUU());
|
|
|
+ messageLog.setReceiver(user);
|
|
|
+ messageLog.setReceiver(userBaseInfoReposity.findByUserUU(messageLog.getRecuu()));
|
|
|
+ UserBaseInfo sender = new UserBaseInfo(1L, "平台");
|
|
|
+ if (messageLog.getSenduu() != 1) {
|
|
|
+ sender = userBaseInfoReposity.findByUserUU(message.getSenduu());
|
|
|
+ }
|
|
|
+ messageLog.setSender(sender);
|
|
|
+ messageLog.setSendEnterprise(sendEnterprise);
|
|
|
+ messageLog.setStatus(Status.UNREAD.name());
|
|
|
+ messageLog.setIsDelete((short) 0);
|
|
|
+ messageLog.setMessageText(messageText);
|
|
|
+ messageLog.setTextid(messageText.getId());
|
|
|
+ messageLogRepository.save(messageLog);
|
|
|
+// num++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ long endTime = new Date().getTime();
|
|
|
+ System.err.println("发送时间是:" + (startTime - endTime)/1000 + "秒");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ t.start();
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog delete(String id) {
|
|
|
+ MessageLog messageLog = messageLogRepository.findOne(id);
|
|
|
+ messageLog.setIsDelete((short) 1);
|
|
|
+ return messageLogRepository.save(messageLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<MessageLog> deleteBatch(String ids) {
|
|
|
+ String[] idList = ids.split(",");
|
|
|
+ for (String id : idList) {
|
|
|
+ if (messageLogRepository.findOne(id) != null)
|
|
|
+ delete(id);
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog read(String id) {
|
|
|
+ MessageLog messageLog = messageLogRepository.findOne(id);
|
|
|
+ messageLog.setStatus(Status.ISREAD.name());
|
|
|
+ return messageLogRepository.save(messageLog);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getCount(Long uu, Long enuu, String recRole, String status) {
|
|
|
+ Integer privateCount = getCountPrivate(uu, enuu, recRole, status, (short) 0);
|
|
|
+ Integer publicCount = getCountPublic(uu, recRole, status, (short) 0);
|
|
|
+ return privateCount + publicCount;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getCountPrivate(Long uu, Long enuu, String recRole, String status, Short isDelete) {
|
|
|
+ if (enuu != null) {
|
|
|
+ return messageLogRepository.findByRecuuAndRecenuuAndTypeAndRecRoleAndStatusAndIsDelete(uu, enuu, Type.PRIVATE.name(), recRole, status, isDelete).size();
|
|
|
+ } else {
|
|
|
+ return messageLogRepository.findByRecuuAndTypeAndRecRoleAndStatusAndIsDelete(uu, Type.PRIVATE.name(), recRole, status, isDelete).size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getCountPublic(Long uu, String recRole, String status, Short isDelete) {
|
|
|
+ return messageLogRepository.findByRecuuAndTypeAndRecRoleAndStatusAndIsDelete(uu, Type.PUBLIC.name(), recRole, status , isDelete).size();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过收信人信息、收信类型、消息状态获取消息(Person)
|
|
|
+ * @param uu
|
|
|
+ * @param status
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<MessageLog> getCountPersonalPrivatePerson(Long uu, String recType, String status) {
|
|
|
+// return messageLogRepository.findByRecuuAndMessageTextTypeAndRecTypeAndStatus(uu, Type.PRIVATE.name(), recType, status);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过收信人信息、收信类型、消息状态获取消息(Employee)
|
|
|
+ * @param uu
|
|
|
+ * @param enuu
|
|
|
+ * @param status
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<MessageLog> getCountPersonalPrivateEmployee(Long uu, Long enuu, String recType, String status) {
|
|
|
+// return messageLogRepository.findByRecuuAndRecenuuAndRecTypeAndStatusAndMessageTextType(uu, enuu, recType, status, Type.PRIVATE.name());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 通过收信人信息、收信类型、消息状态获取消息(Enterprise)
|
|
|
+ * @param enuu
|
|
|
+ * @param status
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<MessageLog> getCountPersonalPrivateEnterprise(Long enuu, String recType, String status) {
|
|
|
+// return messageLogRepository.findByRecenuuAndMessageTextTypeAndRecTypeAndStatus(enuu, Type.PRIVATE.name(), recType, status);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<MessageLog> getPage(Long uu, Long enuu, String recRole, String timeSorting, String classes, PageInfo pageInfo) {
|
|
|
+ Query query = new Query();
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("recuu").is(uu);
|
|
|
+ criteria.and("isDelete").is(0);
|
|
|
+
|
|
|
+ Criteria[] typeCriteria = new Criteria[2];
|
|
|
+
|
|
|
+ Criteria privateCrieria = new Criteria();
|
|
|
+ if (enuu == null) {
|
|
|
+ enuu = 1L;
|
|
|
+ }
|
|
|
+ privateCrieria.and("recenuu").is(enuu);
|
|
|
+ privateCrieria.and("recRole").is(recRole);
|
|
|
+ privateCrieria.and("type").is(Type.PRIVATE.name());
|
|
|
+
|
|
|
+ Criteria publicCrieria = new Criteria();
|
|
|
+ publicCrieria.and("type").is(Type.PUBLIC.name());
|
|
|
+ publicCrieria.and("recRole").is(Type.BUYER.name());
|
|
|
+
|
|
|
+ if (enuu != null) {
|
|
|
+ typeCriteria[0] = publicCrieria;
|
|
|
+ typeCriteria[1] = privateCrieria;
|
|
|
+ criteria.orOperator(typeCriteria);
|
|
|
+ } else {
|
|
|
+ criteria.andOperator(publicCrieria);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.hasText(classes))
|
|
|
+ criteria.and("messageText.classes").is(classes);
|
|
|
+ List<Sort.Order> orders = new ArrayList<Sort.Order>();
|
|
|
+ if ("DESC".equals(timeSorting))
|
|
|
+ orders.add(new Sort.Order(Sort.Direction.DESC, "messageText.sendTime"));
|
|
|
+ if ("ASC".equals(timeSorting))
|
|
|
+ orders.add(new Sort.Order(Sort.Direction.ASC, "messageText.sendTime"));
|
|
|
+ Sort sort = new Sort(orders);
|
|
|
+ if (null != sort) {
|
|
|
+ query.with(sort);
|
|
|
+ }
|
|
|
+ query.addCriteria(criteria);
|
|
|
+ Long count = mongoTemplate.count(query, MessageLog.class);
|
|
|
+
|
|
|
+ List<MessageLog> messageLogs = mongoTemplate.find(query.with(pageInfo), MessageLog.class);
|
|
|
+ for (MessageLog messageLog : messageLogs) {
|
|
|
+ if (Status.UNREAD.name().equals(messageLog.getStatus())) {
|
|
|
+ messageLog.setStatus(Status.ISREAD.name());
|
|
|
+ messageLogRepository.save(messageLog);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Page<MessageLog> pageList = new PageImpl<MessageLog>(messageLogs, pageInfo, count);
|
|
|
+ return pageList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<MessageText> getPagesAdmin(String keyword, String classes, String timeSorting, PageInfo pageInfo) {
|
|
|
+ Query query = new Query();
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ if (StringUtils.hasText(keyword)) {
|
|
|
+ criteria.orOperator(Criteria.where("sender.userName").regex(keyword), Criteria.where("sendEnterprise.enName").regex(keyword), Criteria.where("content").regex(keyword));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(classes))
|
|
|
+ criteria.and("classes").is(classes);
|
|
|
+ List<Sort.Order> orders = new ArrayList<Sort.Order>();
|
|
|
+ if (StringUtils.isEmpty(timeSorting))
|
|
|
+ timeSorting = "DESC";
|
|
|
+ if ("DESC".equals(timeSorting))
|
|
|
+ orders.add(new Sort.Order(Sort.Direction.DESC, "sendTime"));
|
|
|
+ if ("ASC".equals(timeSorting))
|
|
|
+ orders.add(new Sort.Order(Sort.Direction.ASC, "sendTime"));
|
|
|
+ Sort sort = new Sort(orders);
|
|
|
+ if (null != sort) {
|
|
|
+ query.with(sort);
|
|
|
+ }
|
|
|
+ query.addCriteria(criteria);
|
|
|
+ Long count = mongoTemplate.count(query, MessageText.class);
|
|
|
+ List<MessageText> messageTexts = mongoTemplate.find(query.with(pageInfo), MessageText.class);
|
|
|
+
|
|
|
+ for (MessageText messageText : messageTexts) {
|
|
|
+ DBObject query1 = new BasicDBObject("textid", messageText.getId());
|
|
|
+ List<MessageLog> messageLogLists = mongoTemplate.getCollection("msg_message_log").distinct("recuu",query1);
|
|
|
+ messageText.setEffectiveNumber( (long) messageLogLists.size() );
|
|
|
+ if (messageText.getCount().equals(1L)) {
|
|
|
+ List<MessageLog> messageLog = messageLogRepository.findByTextid(messageText.getId());
|
|
|
+ if (!messageLog.get(0).getStatus().equals(messageText.getStatus())) {
|
|
|
+ messageText.setStatus(messageLog.get(0).getStatus());
|
|
|
+ messageTextRepository.save(messageText);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Page<MessageText> pageList = new PageImpl<MessageText>(messageTexts, pageInfo, count);
|
|
|
+ return pageList;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<MessageLog> getPagePublicPersonal(Long uu, Long enuu, String type, String status, PageInfo pageable) {
|
|
|
+ List<MessageText> unreadmessagetexts = messageTextService.getByType(Type.PUBLIC.name());
|
|
|
+ List<MessageLog> messageLogs = new ArrayList<MessageLog>();
|
|
|
+ if (Type.PERSON.name().equals(type)) {
|
|
|
+// messageLogs = messageLogRepository.findByRecuuAndMessageTextTypeAndRecType(uu,Type.PUBLIC.name(), type);
|
|
|
+ }
|
|
|
+ if (Type.EMPLOYEE.name().equals(type)) {
|
|
|
+// messageLogs = messageLogRepository.findByRecuuAndRecenuuAndMessageTextTypeAndRecType(uu, enuu, Type.PUBLIC.name(), type);
|
|
|
+ }
|
|
|
+ if (Type.ENTERPRISE.name().equals(type)) {
|
|
|
+// messageLogs = messageLogRepository.findByRecenuuAndMessageTextTypeAndRecType(enuu, Type.PUBLIC.name(), type);
|
|
|
+ }
|
|
|
+ if (CollectionUtils.isNotEmpty(messageLogs)) {
|
|
|
+ Set<String> messageLogIds = new HashSet<String>();
|
|
|
+ for (MessageLog messageLog : messageLogs) {
|
|
|
+ messageLogIds.add(messageLog.getMessageText().getId());
|
|
|
+ }
|
|
|
+ for (Iterator it = unreadmessagetexts.iterator(); it.hasNext();) {
|
|
|
+ MessageText thisText = (MessageText) it.next();
|
|
|
+ if (messageLogIds.contains(thisText.getId()))
|
|
|
+ it.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将未读公告加入个人信息
|
|
|
+ for (MessageText messagetext : unreadmessagetexts) {
|
|
|
+ MessageLog messagelog = new MessageLog();
|
|
|
+ messagelog.setSenduu(1l);
|
|
|
+ messagelog.setSendEnuu(1l);
|
|
|
+ messagelog.setMessageText(messagetext);
|
|
|
+ messagelog.setStatus(Status.UNREAD.name());
|
|
|
+// messagelog.setRecType(type);
|
|
|
+ messagelog.setRecuu(uu);
|
|
|
+ messagelog.setRecenuu(enuu);
|
|
|
+ if (messagelog.getRecuu() != null)
|
|
|
+ messagelog.setReceiver(userBaseInfoReposity.findByUserUU(messagelog.getRecuu()));
|
|
|
+ if (messagelog.getRecenuu() != null)
|
|
|
+ messagelog.setRecenterprise(enterpriseRepository.findByuu(messagelog.getRecenuu()));
|
|
|
+
|
|
|
+ messageLogs.add(messagelog);
|
|
|
+ }
|
|
|
+ messageLogRepository.save(messageLogs);
|
|
|
+
|
|
|
+ return getPage(uu, enuu, type, status, Type.PUBLIC.name(), pageable);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<MessageLog> getMessageLogsByText(String textid, String keyword, String status, PageInfo pageable) {
|
|
|
+ Query query = new Query();
|
|
|
+
|
|
|
+ Criteria criteria = new Criteria();
|
|
|
+ criteria.and("textid").is(textid);
|
|
|
+
|
|
|
+ if (StringUtils.hasText(keyword)) {
|
|
|
+ criteria.orOperator(Criteria.where("receiver.userName").regex(keyword), Criteria.where("recenterprise.enName").regex(keyword));
|
|
|
+ }
|
|
|
+ if (StringUtils.hasText(status))
|
|
|
+ criteria.and("status").is(status);
|
|
|
+
|
|
|
+ List<Sort.Order> orders = new ArrayList<Sort.Order>();
|
|
|
+ orders.add(new Sort.Order(Sort.Direction.ASC, "id"));
|
|
|
+ Sort sort = new Sort(orders);
|
|
|
+
|
|
|
+ query.with(sort);
|
|
|
+ query.addCriteria(criteria);
|
|
|
+
|
|
|
+ Long count = mongoTemplate.count(query, MessageLog.class);
|
|
|
+ List<MessageLog> messageLogs = mongoTemplate.find(query.with(pageable), MessageLog.class);
|
|
|
+ Page<MessageLog> messageLogPage = new PageImpl<MessageLog>(messageLogs, pageable, count);
|
|
|
+ return messageLogPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JSONObject getMessageLogsCountByText(String textid) {
|
|
|
+ Integer count = messageLogRepository.findByTextid(textid).size();
|
|
|
+ Integer isReadCount = messageLogRepository.findByTextidAndStatus(textid, Status.ISREAD.name()).size();
|
|
|
+ Integer unReadCount = messageLogRepository.findByTextidAndStatus(textid, Status.UNREAD.name()).size();
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("count", count);
|
|
|
+ jsonObject.put("isReadCount", isReadCount);
|
|
|
+ jsonObject.put("unReadCount", unReadCount);
|
|
|
+ return jsonObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public MessageLog sendMessages(JSONObject jsonObject) {
|
|
|
+ String classes = jsonObject.getString("classes");
|
|
|
+ if (StringUtils.isEmpty(classes)) {
|
|
|
+ throw new IllegalOperatorException("没有选择发送信息的类型,请选择后重新发送!");
|
|
|
+ }
|
|
|
+ String recRole = jsonObject.getString("recRole");
|
|
|
+ if (StringUtils.isEmpty(recRole)) {
|
|
|
+ throw new IllegalOperatorException("没有选择发送信息对象的角色,请选择后重新发送!");
|
|
|
+ }
|
|
|
+ Long[] enuus = new Long[0];
|
|
|
+ if (jsonObject.getJSONArray("enuu") != null) {
|
|
|
+ enuus = objectToLong(jsonObject.getJSONArray("enuu").toArray());
|
|
|
+ }
|
|
|
+ List<UserEnterprise> userEnterprises = new ArrayList<UserEnterprise>();
|
|
|
+ if (jsonObject.getString("user") != null) {
|
|
|
+ JSONArray arr = jsonObject.getJSONArray("user");
|
|
|
+ for (Object obj : arr) {
|
|
|
+ UserEnterprise userEnterprise = JSONObject.parseObject(JSONObject.toJSONString(obj), UserEnterprise.class);
|
|
|
+ userEnterprises.add(userEnterprise);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String content = jsonObject.getString("content");
|
|
|
+ if (StringUtils.isEmpty(content)) {
|
|
|
+ throw new IllegalOperatorException("发送的内容为空,请填写后重新发送!");
|
|
|
+ }
|
|
|
+ if (enuus.length > 1000) {
|
|
|
+ throw new IllegalOperatorException("选择的企业名称超过1000个,请重新发送!");
|
|
|
+ }
|
|
|
+ if (userEnterprises.size() > 1000) {
|
|
|
+ throw new IllegalOperatorException("选择的具体用户超过1000个,请重新发送!");
|
|
|
+ }
|
|
|
+ if (enuus.length < 1 && userEnterprises.size() < 1) {
|
|
|
+ throw new IllegalOperatorException("没有选择要发送信息的对象,请重新发送!");
|
|
|
+ }
|
|
|
+ if (jsonObject.getString("userUu") == null) {
|
|
|
+ throw new IllegalOperatorException("当前操作用户尚未登录,请登录后重新发送!");
|
|
|
+ }
|
|
|
+ Long user_Uu = Long.parseLong(jsonObject.getString("userUu"));
|
|
|
+ //Long en_Uu = Long.parseLong(jsonObject.getString("enUu"));
|
|
|
+ if (!CollectionUtils.isEmpty(userEnterprises)) {
|
|
|
+ for (UserEnterprise user : userEnterprises) {
|
|
|
+ if (CollectionUtils.isEmpty(jdbcTemplate.queryForList("select * from sec$userenterprise where " +
|
|
|
+ "user_uu = " + user.getUseruu() + " and en_uu = " + user.getEnuu()))) {
|
|
|
+ if (userBaseInfoReposity.findByUserUU(user.getUseruu()) == null) {
|
|
|
+ throw new IllegalOperatorException("uu号为" + user.getUseruu() + "的用户不存在,请核对后重新发送!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<UserEnterprise> userEnterprisesRemove = new ArrayList<UserEnterprise>();
|
|
|
+ for (UserEnterprise user : userEnterprises) {
|
|
|
+ if (Arrays.asList(enuus).contains(user.getEnuu())) {
|
|
|
+ userEnterprisesRemove.add(user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!CollectionUtils.isEmpty(userEnterprisesRemove)) {
|
|
|
+ userEnterprises.removeAll(userEnterprisesRemove);
|
|
|
+ }
|
|
|
+ for (int i = 0; i < enuus.length; i++) {
|
|
|
+ if (enterpriseRepository.findByuu(enuus[i]) == null) {
|
|
|
+ throw new IllegalOperatorException("企业uu号为" + enuus[i] + "的企业不存在,请核对后重新发送!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ MessageLog messageLog = new MessageLog();
|
|
|
+ MessageText messageText = new MessageText();
|
|
|
+ List<MessageLog> messageLogs = new ArrayList<MessageLog>();
|
|
|
+ messageText.setContent(content);
|
|
|
+ messageText.setClasses(classes);
|
|
|
+ if (!recRole.contains(",")) {
|
|
|
+ if (Type.BUYER.name().equals(recRole)) {
|
|
|
+ messageLog.setRecRole(Type.BUYER.name());
|
|
|
+ } else if (Type.SELLER.name().equals(recRole)) {
|
|
|
+ messageLog.setRecRole(Type.SELLER.name());
|
|
|
+ } else {
|
|
|
+ throw new IllegalOperatorException("没有选择消息接收的角色,请重新选择后再发送!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ UserBaseInfo sender = userBaseInfoReposity.findByUserUU(user_Uu);
|
|
|
+ messageLog.setSenduu(user_Uu);
|
|
|
+ messageLog.setSender(sender);
|
|
|
+ Long enuu = Long.valueOf(10101);
|
|
|
+ messageLog.setSendEnuu(enuu);
|
|
|
+// Enterprise enterprise = enterpriseRepository.findByuu(enuu);
|
|
|
+ Enterprise enterprise = new Enterprise(enuu, "平台", "平台");
|
|
|
+ messageLog.setSendEnterprise(enterprise);
|
|
|
+ messageLog.setStatus(Status.UNREAD.name());
|
|
|
+ messageLog.setIsDelete((short) 0);
|
|
|
+ messageLog.setType(Type.PRIVATE.name());
|
|
|
+ messageText.setSenduu(messageLog.getSenduu());
|
|
|
+ messageText.setSendEnuu(messageLog.getSendEnuu());
|
|
|
+ messageText.setSender(sender);
|
|
|
+ messageText.setSendEnterprise(messageLog.getSendEnterprise());
|
|
|
+ messageText.setSendTime(new Date());
|
|
|
+ for (int i = 0; i < enuus.length; i++) {
|
|
|
+ List<Map<String, Object>> en_uus = jdbcTemplate.queryForList("select * from sec$userenterprise where en_uu = " + enuus[i]);
|
|
|
+ for (Map<String, Object> enUu : en_uus) {
|
|
|
+ MessageLog messageLogUser = new MessageLog(messageLog);
|
|
|
+ messageLogUser.setRecenuu(enuus[i]);
|
|
|
+ messageLogUser.setRecenterprise(enterpriseRepository.findByuu(enuus[i]));
|
|
|
+ Long userUu = Long.valueOf(enUu.get("user_uu").toString());
|
|
|
+ messageLogUser.setRecuu(userUu);
|
|
|
+ messageLogUser.setReceiver(userBaseInfoReposity.findByUserUU(userUu));
|
|
|
+ messageLogs.add(messageLogUser);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for (UserEnterprise user : userEnterprises) {
|
|
|
+ MessageLog messageLogUser = new MessageLog(messageLog);
|
|
|
+ messageLogUser.setRecuu(user.getUseruu());
|
|
|
+ //发送个人信息时给enuu 设置一个默认值用于个人账号的信息查询
|
|
|
+ if (user.getEnuu() != null) {
|
|
|
+ messageLogUser.setRecenuu(user.getEnuu());
|
|
|
+ } else {
|
|
|
+ messageLogUser.setRecenuu(1L);
|
|
|
+ }
|
|
|
+ messageLogUser.setReceiver(userBaseInfoReposity.findByUserUU(messageLogUser.getRecuu()));
|
|
|
+ messageLogUser.setRecenterprise(enterpriseRepository.findByuu(messageLogUser.getRecenuu()));
|
|
|
+ messageLogs.add(messageLogUser);
|
|
|
+ }
|
|
|
+ messageText.setCount((long) messageLogs.size());
|
|
|
+ if (messageLogs.size() == 1) {
|
|
|
+ messageText.setRecuu(messageLogs.get(0).getRecuu());
|
|
|
+ messageText.setReceiver(messageLogs.get(0).getReceiver());
|
|
|
+ }
|
|
|
+ messageTextRepository.save(messageText);
|
|
|
+ for (int i = 0; i < messageLogs.size(); i++) {
|
|
|
+ messageLogs.get(i).setTextid(messageText.getId());
|
|
|
+ messageLogs.get(i).setMessageText(messageText);
|
|
|
+ }
|
|
|
+ if (recRole.contains(",")) {
|
|
|
+ String[] recRoles = recRole.split(",");
|
|
|
+ for (MessageLog messageLog1 : messageLogs) {
|
|
|
+ messageLog1.setRecRole(recRoles[0]);
|
|
|
+ }
|
|
|
+ messageLogRepository.save(messageLogs);
|
|
|
+ List<MessageLog> messageLogss = new ArrayList<MessageLog>();
|
|
|
+ for (MessageLog messageLog1 : messageLogs) {
|
|
|
+ MessageLog messageLog2 = new MessageLog(messageLog1);
|
|
|
+ //如果接受企业是1L,则是个人信息,设置为不发送
|
|
|
+ if (messageLog2.getRecenuu() == 1L) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ messageLog2.setRecRole(recRoles[1]);
|
|
|
+ messageLog2.setTextid(messageText.getId());
|
|
|
+ messageLog2.setMessageText(messageText);
|
|
|
+ messageLogss.add(messageLog2);
|
|
|
+ }
|
|
|
+ if (messageLogss.size() != 0) {
|
|
|
+ messageLogRepository.save(messageLogss);
|
|
|
+ }
|
|
|
+ } else if (Type.BUYER.name().equals(recRole)) {
|
|
|
+ messageLogRepository.save(messageLogs);
|
|
|
+ } else {
|
|
|
+ List<MessageLog> messageLogss = new ArrayList<MessageLog>();
|
|
|
+ for (MessageLog messageLog1 : messageLogs) {
|
|
|
+ MessageLog messageLog2 = new MessageLog(messageLog1);
|
|
|
+ //如果接受企业是1L,则是个人信息,设置为不发送
|
|
|
+ if (messageLog2.getRecenuu() == 1L) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ messageLog2.setRecRole(Type.SELLER.name());
|
|
|
+ messageLog2.setTextid(messageText.getId());
|
|
|
+ messageLog2.setMessageText(messageText);
|
|
|
+ messageLogss.add(messageLog2);
|
|
|
+ }
|
|
|
+ if (messageLogss.size() != 0) {
|
|
|
+ messageLogRepository.save(messageLogss);
|
|
|
+ } else {
|
|
|
+ messageTextRepository.delete(messageText);
|
|
|
+ throw new IllegalOperatorException("个人用户没有卖家身份,请选择后重新发送!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Long[] objectToLong(Object[] objects) {
|
|
|
+ Long[] longs = new Long[objects.length];
|
|
|
+ for (int i = 0; i < objects.length; i++) {
|
|
|
+ longs[i] = Long.valueOf(objects[i].toString());
|
|
|
+ }
|
|
|
+ return longs;
|
|
|
+ }
|
|
|
+}
|