瀏覽代碼

主外键,去除无用的返回值

LH 5 年之前
父節點
當前提交
4a8d1b74c3

+ 8 - 8
src/main/java/com/izouma/jmrh/domain/CommunicationRecord.java

@@ -1,23 +1,23 @@
 package com.izouma.jmrh.domain;
 
-import com.izouma.jmrh.domain.BaseEntity;
-import com.izouma.jmrh.domain.User;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
 
 @ApiModel("沟通记录")
 @Entity
 @Data
 public class CommunicationRecord extends BaseEntity {
-    @OneToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "userId")
+
     @ApiModelProperty("发送人")
-    private User user;
+    private Long userId;
+
+    private String nickname;
+
+    private String avatar;
+    
     @ApiModelProperty("内容")
     private String content;
     @ApiModelProperty("对接记录")

+ 5 - 4
src/main/java/com/izouma/jmrh/domain/Conversation.java

@@ -1,7 +1,6 @@
 package com.izouma.jmrh.domain;
 
 import com.izouma.jmrh.enums.ConversationStatus;
-import com.izouma.jmrh.enums.Exist;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -32,9 +31,11 @@ public class Conversation extends BaseEntity {
     @Enumerated(EnumType.STRING)
     private ConversationStatus status;
 
-    @ApiModelProperty("逻辑删除")
-    @Enumerated(EnumType.STRING)
-    private Exist exist;
+    @ApiModelProperty("对接人可见")
+    private boolean publisherVisible;
+
+    @ApiModelProperty("对发布者可见")
+    private boolean userVisible;
 
     @ApiModelProperty("资源供需")
     @ManyToOne(fetch = FetchType.LAZY)

+ 3 - 4
src/main/java/com/izouma/jmrh/repo/CommunicationRecordRepo.java

@@ -1,14 +1,13 @@
 package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.CommunicationRecord;
-import com.izouma.jmrh.domain.Conversation;
-import com.izouma.jmrh.domain.User;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
 import java.util.List;
 
 public interface CommunicationRecordRepo extends JpaRepository<CommunicationRecord, Long>, JpaSpecificationExecutor<CommunicationRecord> {
-List<CommunicationRecord> findByConversationId(Long conversationId);
-List<CommunicationRecord> findByConversationIdAndUser(Long conversationId, User user);
+    List<CommunicationRecord> findByConversationId(Long conversationId);
+
+    List<CommunicationRecord> findByConversationIdAndUserId(Long conversationId, Long userId);
 }

+ 6 - 3
src/main/java/com/izouma/jmrh/repo/ConversationRepo.java

@@ -3,7 +3,6 @@ package com.izouma.jmrh.repo;
 import com.izouma.jmrh.domain.Conversation;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
 import com.izouma.jmrh.enums.ConversationStatus;
-import com.izouma.jmrh.enums.Exist;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -18,10 +17,14 @@ public interface ConversationRepo extends JpaRepository<Conversation, Long>, Jpa
     @Query(value = "update conversation set status = :#{#conversationStatus.name} where id =:#{#id}", nativeQuery = true)
     Integer updateStatus(ConversationStatus conversationStatus, Long id);
 
-    List<Conversation> findByResourceSupplyDemandAndExistIn(ResourceSupplyAndDemand resourceSupplyDemand, List<Exist> existList);
+    List<Conversation> findByResourceSupplyDemandAndUserVisible(ResourceSupplyAndDemand resourceSupplyDemand, boolean userVisible);
 
-    Conversation findByResourceSupplyDemandAndExistInAndConversationUserId(ResourceSupplyAndDemand resourceSupplyDemand, List<Exist> existList, Long conversationUserId);
+    List<Conversation> findByResourceSupplyDemandAndPublisherVisible(ResourceSupplyAndDemand resourceSupplyDemand, boolean publisherVisible);
 
     Conversation findByResourceSupplyDemandAndConversationUserId(ResourceSupplyAndDemand resourceSupplyDemand, Long conversationUserId);
 
+    Conversation findByResourceSupplyDemandAndPublisherVisibleAndConversationUserId(ResourceSupplyAndDemand resourceSupplyDemand, boolean publisherVisible, Long conversationUserId);
+
+    Conversation findByResourceSupplyDemandAndUserVisibleAndConversationUserId(ResourceSupplyAndDemand resourceSupplyDemand, boolean userVisible, Long conversationUserId);
+
 }

+ 1 - 1
src/main/java/com/izouma/jmrh/service/CommentService.java

@@ -60,7 +60,7 @@ public class CommentService {
         notificationMessage.setSenderName(SecurityUtils.getAuthenticatedUser().getNickname());
         notificationMessage.setSenderAvatar(SecurityUtils.getAuthenticatedUser().getAvatar());
         notificationMessage.setRecipientId(post.getUserId());
-        notificationMessage.setName(post.getName());
+        notificationMessage.setName(post.getTitle());
         notificationMessage.setContent(record.getContent());
         notificationMessageRepo.save(notificationMessage);
         return commentRepo.save(record);

+ 4 - 3
src/main/java/com/izouma/jmrh/service/ConversationService.java

@@ -4,7 +4,6 @@ import com.izouma.jmrh.domain.Conversation;
 import com.izouma.jmrh.domain.NotificationMessage;
 import com.izouma.jmrh.domain.User;
 import com.izouma.jmrh.enums.ConversationStatus;
-import com.izouma.jmrh.enums.Exist;
 import com.izouma.jmrh.enums.MessageType;
 import com.izouma.jmrh.enums.Reading;
 import com.izouma.jmrh.exception.BusinessException;
@@ -36,7 +35,8 @@ public class ConversationService {
             if (conversation.getStatus().equals(ConversationStatus.TERMINATION)) {
                 ObjUtils.merge(conversation, record);
                 conversation.setStatus(ConversationStatus.CONDUCTED);
-                conversation.setExist(Exist.ON_DELETED);
+                conversation.setPublisherVisible(true);
+                conversation.setUserVisible(true);
                 return conversationRepo.save(conversation);
             } else {
                 throw new BusinessException("不能重复对接");
@@ -44,7 +44,8 @@ public class ConversationService {
         }
         NotificationMessage notificationMessage = new NotificationMessage();
         record.setConversationUserId(SecurityUtils.getAuthenticatedUser().getId());
-        record.setExist(Exist.ON_DELETED);
+        conversation.setPublisherVisible(true);
+        conversation.setUserVisible(true);
         record.setStatus(ConversationStatus.AWAIT);
         Conversation save = conversationRepo.save(record);
         //添加通知消息

+ 1 - 1
src/main/java/com/izouma/jmrh/service/NotificationMessageService.java

@@ -1,6 +1,5 @@
 package com.izouma.jmrh.service;
 
-import com.izouma.jmrh.domain.NotificationMessage;
 import com.izouma.jmrh.repo.NotificationMessageRepo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -11,4 +10,5 @@ public class NotificationMessageService {
 
     private NotificationMessageRepo notificationMessageRepo;
 
+
 }

+ 131 - 131
src/main/java/com/izouma/jmrh/web/BaseController.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.izouma.jmrh.annotations.Searchable;
 import com.izouma.jmrh.domain.*;
 import com.izouma.jmrh.dto.PageQuery;
+import com.izouma.jmrh.enums.ResSnDType;
 import com.izouma.jmrh.utils.DateTimeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -45,137 +46,8 @@ public class BaseController {
         return pageRequest;
     }
 
-    public <T> Specification<T> getResAll(PageQuery pageQuery, Class<?> queryClass) {
-        return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> or = new ArrayList<>();
-            List<Predicate> and = new ArrayList<>();
-            or.add(root.get("tresource").isNotNull());
-            or.add(root.get("product").isNotNull());
-            or.add(root.get("artProduct").isNotNull());
-            if (pageQuery.getQuery().get("user") != null) {
-                User user = (User) pageQuery.getQuery().get("user");
-                Join<User, Collect> join = root.join("user", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                if (user.getId() != null && user.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), user.getId()));
-                }
-            }
-            Predicate[] array_and = new Predicate[and.size()];
-            Predicate Pre_And = criteriaBuilder.and(and.toArray(array_and));
 
-            Predicate[] arrayOr = new Predicate[or.size()];
-            Predicate Pre_Or = criteriaBuilder.or(or.toArray(arrayOr));
-
-            /*criteriaBuilder.or(or.toArray(new Predicate[0]));*/
-            return criteriaQuery.where(Pre_And, Pre_Or).getRestriction();
-        };
-    }
-
-    public <T> Specification<T> getMessage(PageQuery pageQuery, Class<?> queryClass) {
-        return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = new ArrayList<>();
-            pageQuery.getQuery().forEach((property, value) -> {
-                Field field = getDeclaredField(queryClass, property);
-                if (field == null) return;
-                Class fieldType = field.getType();
-                if (fieldType == Product.class) {
-                    Join<Product, Message> join = root.join("product", JoinType.LEFT);
-                    ObjectMapper objectMapper = new ObjectMapper();
-                    Product product = objectMapper.convertValue(value, Product.class);
-                    if (product.getId() != null && product.getId() > 0) {
-                        and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                    }
-                } else if (fieldType == ArtProduct.class) {
-                    Join<ArtProduct, Message> join = root.join("artProduct", JoinType.LEFT);
-                    ObjectMapper objectMapper = new ObjectMapper();
-                    ArtProduct product = objectMapper.convertValue(value, ArtProduct.class);
-                    if (product.getId() != null && product.getId() > 0) {
-                        and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                    }
-                } else if (fieldType == ProductNeed.class) {
-
-                    Join<ProductNeed, Message> join = root.join("productNeed", JoinType.LEFT);
-                    ObjectMapper objectMapper = new ObjectMapper();
-                    ProductNeed product = objectMapper.convertValue(value, ProductNeed.class);
-                    if (product.getId() != null && product.getId() > 0) {
-                        and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                    }
-                } else if (fieldType == FinancingNeeds.class) {
-                    Join<FinancingNeeds, Message> join = root.join("financingNeeds", JoinType.LEFT);
-                    ObjectMapper objectMapper = new ObjectMapper();
-                    FinancingNeeds product = objectMapper.convertValue(value, FinancingNeeds.class);
-                    if (product.getId() != null && product.getId() > 0) {
-                        and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                    }
-                } else if (fieldType == ArtNeed.class) {
-                    Join<ArtNeed, Message> join = root.join("artNeed", JoinType.LEFT);
-                    ObjectMapper objectMapper = new ObjectMapper();
-                    ArtNeed product = objectMapper.convertValue(value, ArtNeed.class);
-                    if (product.getId() != null && product.getId() > 0) {
-                        and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                    }
-                } else if (fieldType == User.class) {
-                    if (property == "user") {
-                        Join<User, Message> join = root.join("user", JoinType.LEFT);
-                        ObjectMapper objectMapper = new ObjectMapper();
-                        User product = objectMapper.convertValue(value, User.class);
-                        if (product.getId() != null && product.getId() > 0) {
-                            and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                        }
-                    } else {
-                        Join<User, Message> join = root.join("myUser", JoinType.LEFT);
-                        ObjectMapper objectMapper = new ObjectMapper();
-                        User product = objectMapper.convertValue(value, User.class);
-                        if (product.getId() != null && product.getId() > 0) {
-                            and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                        }
-
-                    }
-                } else if (property.equals("onExist")) {
-                    String[] split = String.valueOf(value).split(",");
-                    if (split.length > 1) {
-                        List<Predicate> or = new ArrayList<>();
-                        or.add(criteriaBuilder.equal(root.get("onExist"), Long.parseLong(split[0])));
-                        or.add(criteriaBuilder.equal(root.get("onExist"), Long.parseLong(split[1])));
-                        and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
-                    } else {
-                        and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
-                    }
-                }
-            });
-            return criteriaBuilder.or(and.toArray(new Predicate[0]));
-        };
-    }
-
-    public <T> Specification<T> getNeedAll(PageQuery pageQuery, Class<?> queryClass) {
-        return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> or = new ArrayList<>();
-            List<Predicate> and = new ArrayList<>();
-            or.add(root.get("artNeed").isNotNull());
-            or.add(root.get("productNeed").isNotNull());
-            or.add(root.get("financingNeeds").isNotNull());
-            if (pageQuery.getQuery().get("user") != null) {
-                User user = (User) pageQuery.getQuery().get("user");
-                Class cla = queryClass;
-                Join<User, Collect> join = root.join("user", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                if (user.getId() != null && user.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), user.getId()));
-                }
-            }
-
-            Predicate[] array_and = new Predicate[and.size()];
-            Predicate Pre_And = criteriaBuilder.and(and.toArray(array_and));
-
-            Predicate[] arrayOr = new Predicate[or.size()];
-            Predicate Pre_Or = criteriaBuilder.or(or.toArray(arrayOr));
-
-            /*criteriaBuilder.or(or.toArray(new Predicate[0]));*/
-            return criteriaQuery.where(Pre_And, Pre_Or).getRestriction();
-        };
-    }
-
-    public static  <T> Specification<T> toSpecification(PageQuery pageQuery, Class<?> queryClass) {
+    public static <T> Specification<T> toSpecification(PageQuery pageQuery, Class<?> queryClass) {
         return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
             List<Predicate> and = new ArrayList<>();
             pageQuery.getQuery().forEach((property, value) -> {
@@ -286,7 +158,7 @@ public class BaseController {
                     } else {
                         and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
                     }
-                }  else {
+                } else {
                     and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
                 }
             });
@@ -447,6 +319,134 @@ public class BaseController {
         };
     }
 
+    public <T> Specification<T> getConversation(PageQuery pageQuery, Class<?> queryClass) {
+        return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
+            List<Predicate> and = new ArrayList<>();
+            pageQuery.getQuery().forEach((property, value) -> {
+                if (value == null) {
+                    return;
+                }
+                if (String.class.equals(value.getClass())) {
+                    if (StringUtils.isEmpty((String) value)) {
+                        return;
+                    }
+                }
+                if (property.equals("typeStr")) {
+                    String str = String.valueOf(value);
+                    if (StringUtils.isNotEmpty(str)) {
+                        Join<ResourceSupplyAndDemand, Conversation> join = root.join("resourceSupplyDemand", JoinType.LEFT);
+                        String[] split = str.split(",");
+                        List list = new ArrayList();
+                        for (String item : split
+                        ) {
+                            list.add(Enum.valueOf(ResSnDType.class, String.valueOf(item)));
+                        }
+                        and.add(criteriaBuilder.and(join.get("type").in(list)));
+                    }
+                }
+                Field field = getDeclaredField(queryClass, property);
+                if (field == null) return;
+                Class fieldType = field.getType();
+                if (Enum.class.isAssignableFrom(fieldType)) {
+                    if (value instanceof Collection) {
+                        if (!((Collection) value).isEmpty()) {
+                            List list = new ArrayList();
+                            for (Object o : ((Collection) value)) {
+                                list.add(Enum.valueOf(fieldType, String.valueOf(o)));
+                            }
+                            and.add(root.get(property).in(list));
+                        }
+                    } else if (value instanceof String && StringUtils.isNotEmpty((String) value)) {
+                        if (((String) value).contains(",")) {
+                            String[] arr = ((String) value).split(",");
+                            List list = new ArrayList();
+                            for (String s : arr) {
+                                list.add(Enum.valueOf(fieldType, s));
+                            }
+                            and.add(root.get(property).in(list));
+                        } else {
+                            and.add(criteriaBuilder.and(criteriaBuilder
+                                    .equal(root.get(property), Enum.valueOf(fieldType, String.valueOf(value)))));
+                        }
+                    }
+                } else if (LocalDateTime.class == fieldType) {
+                    if (value instanceof List) {
+                        List list = (List) value;
+                        if (list.size() == 1) {
+                            LocalDateTime start = DateTimeUtils
+                                    .toLocalDateTime((String) list.get(0), "yyyy-MM-dd HH:mm:ss");
+                            and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
+                        } else if (list.size() == 2) {
+                            LocalDateTime end = DateTimeUtils
+                                    .toLocalDateTime((String) list.get(1), "yyyy-MM-dd HH:mm:ss");
+                            and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
+                        }
+                    } else if (value instanceof String && Pattern
+                            .matches("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}$", (String) value)) {
+                        String[] arr = ((String) value).split(",");
+                        LocalDateTime start = DateTimeUtils.toLocalDateTime(arr[0], "yyyy-MM-dd HH:mm:ss");
+                        and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
+                        LocalDateTime end = DateTimeUtils.toLocalDateTime(arr[1], "yyyy-MM-dd HH:mm:ss");
+                        and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
+                    } else {
+                        and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), DateTimeUtils
+                                .toLocalDateTime((String) value, "yyyy-MM-dd HH:mm:ss"))));
+                    }
+                } else if (LocalDate.class == fieldType) {
+                    if (value instanceof List) {
+                        List list = (List) value;
+                        if (list.size() == 1) {
+                            LocalDate start = DateTimeUtils
+                                    .toLocalDate((String) list.get(0), "yyyy-MM-dd");
+                            and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
+                        } else if (list.size() == 2) {
+                            LocalDate end = DateTimeUtils
+                                    .toLocalDate((String) list.get(1), "yyyy-MM-dd");
+                            and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
+                        }
+                    } else if (value instanceof String && Pattern
+                            .matches("^\\d{4}-\\d{2}-\\d{2},\\d{4}-\\d{2}-\\d{2}$", (String) value)) {
+                        String[] arr = ((String) value).split(",");
+                        LocalDate start = DateTimeUtils.toLocalDate(arr[0], "yyyy-MM-dd");
+                        and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
+                        LocalDate end = DateTimeUtils.toLocalDate(arr[1], "yyyy-MM-dd");
+                        and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
+                    } else {
+                        and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), DateTimeUtils
+                                .toLocalDateTime((String) value, "yyyy-MM-dd"))));
+                    }
+                } else {
+                    and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
+                }
+            });
+
+            if (StringUtils.isNotEmpty(pageQuery.getSearch())) {
+                Field[] fields = queryClass.getDeclaredFields();
+                List<Predicate> or = new ArrayList<>();
+                try {
+                    if (StringUtils.isNumeric(pageQuery.getSearch())) {
+                        or.add(criteriaBuilder.equal(root.get("id"), Long.parseLong(pageQuery.getSearch())));
+                    }
+                } catch (Exception ignored) {
+                }
+                for (Field field : fields) {
+                    Searchable annotation = field.getAnnotation(Searchable.class);
+                    if (annotation == null) {
+                        continue;
+                    }
+                    if (!annotation.value()) {
+                        continue;
+                    }
+                    or.add(criteriaBuilder.like(root.get(field.getName()), "%" + pageQuery.getSearch() + "%"));
+                }
+                and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
+            }
+
+            return criteriaBuilder.and(and.toArray(new Predicate[0]));
+        };
+    }
+
+
     private static Field getDeclaredField(Class<?> clazz, String property) {
         String className = clazz.getName();
         while (clazz != null && clazz != Object.class) {

+ 11 - 8
src/main/java/com/izouma/jmrh/web/CommunicationRecordController.java

@@ -2,19 +2,18 @@ package com.izouma.jmrh.web;
 
 import com.izouma.jmrh.domain.CommunicationRecord;
 import com.izouma.jmrh.domain.Conversation;
-import com.izouma.jmrh.enums.ConversationStatus;
-import com.izouma.jmrh.repo.ConversationRepo;
-import com.izouma.jmrh.repo.ResourceSupplyAndDemandRepo;
-import com.izouma.jmrh.service.CommunicationRecordService;
+import com.izouma.jmrh.domain.User;
 import com.izouma.jmrh.dto.PageQuery;
+import com.izouma.jmrh.enums.ConversationStatus;
 import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.CommunicationRecordRepo;
+import com.izouma.jmrh.repo.ConversationRepo;
+import com.izouma.jmrh.service.CommunicationRecordService;
 import com.izouma.jmrh.utils.ObjUtils;
 import com.izouma.jmrh.utils.SecurityUtils;
 import com.izouma.jmrh.utils.excel.ExcelUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
@@ -37,12 +36,15 @@ public class CommunicationRecordController extends BaseController {
             ObjUtils.merge(orig, record);
             return communicationRecordRepo.save(orig);
         }
-        record.setUser(SecurityUtils.getAuthenticatedUser());
+        User user = SecurityUtils.getAuthenticatedUser();
+        record.setUserId(user.getId());
+        record.setNickname(user.getNickname());
+        record.setAvatar(user.getAvatar());
         Conversation conversation = conversationRepo.findById(record.getConversationId()).orElseThrow(new BusinessException("无记录"));
         Long publishersId = conversation.getResourceSupplyDemand().getPublishersId();
         //当前登录用户为发布者并且回复了对接用户修改状态为正在对接
         if (publishersId == SecurityUtils.getAuthenticatedUser().getId()) {
-            List<CommunicationRecord> communicationRecordList = communicationRecordRepo.findByConversationIdAndUser(record.getConversationId(), SecurityUtils.getAuthenticatedUser());
+            List<CommunicationRecord> communicationRecordList = communicationRecordRepo.findByConversationIdAndUserId(record.getConversationId(), SecurityUtils.getAuthenticatedUser().getId());
             if (communicationRecordList.size() < 1) {
                 conversationRepo.updateStatus(ConversationStatus.CONDUCTED, record.getConversationId());
             }
@@ -53,7 +55,8 @@ public class CommunicationRecordController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<CommunicationRecord> all(PageQuery pageQuery) {
-        return communicationRecordRepo.findAll(toSpecification(pageQuery, CommunicationRecord.class), toPageRequest(pageQuery));
+        Page<CommunicationRecord> all = communicationRecordRepo.findAll(toSpecification(pageQuery, CommunicationRecord.class), toPageRequest(pageQuery));
+        return all;
     }
 
     @GetMapping("/get/{id}")

+ 3 - 12
src/main/java/com/izouma/jmrh/web/ConversationController.java

@@ -3,7 +3,6 @@ package com.izouma.jmrh.web;
 import com.izouma.jmrh.domain.Conversation;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
 import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.enums.Exist;
 import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.ConversationRepo;
 import com.izouma.jmrh.service.ConversationService;
@@ -15,7 +14,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -44,12 +42,8 @@ public class ConversationController extends BaseController {
     //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<Conversation> all(PageQuery pageQuery) {
-        //过滤已经终止并删除的对接
-        ArrayList<Exist> exists = new ArrayList<>();
-        exists.add(Exist.PUBLISHERS_DELETED);
-        exists.add(Exist.ON_DELETED);
-        pageQuery.getQuery().put("exist", exists);
-        return conversationRepo.findAll(toSpecification(pageQuery, Conversation.class), toPageRequest(pageQuery));
+        pageQuery.getQuery().put("publisherVisible", true);
+        return conversationRepo.findAll(getConversation(pageQuery, Conversation.class), toPageRequest(pageQuery));
     }
 
     @GetMapping("/get/{id}")
@@ -62,10 +56,7 @@ public class ConversationController extends BaseController {
     public List<Conversation> getList(@PathVariable Long id) {
         ResourceSupplyAndDemand resourceSupplyAndDemand = new ResourceSupplyAndDemand();
         resourceSupplyAndDemand.setId(id);
-        ArrayList<Exist> exists = new ArrayList<>();
-        exists.add(Exist.ON_DELETED);
-        exists.add(Exist.DOCKED_USER_DELETED);
-        List<Conversation> byResourceSupplyDemand = conversationRepo.findByResourceSupplyDemandAndExistIn(resourceSupplyAndDemand, exists);
+        List<Conversation> byResourceSupplyDemand = conversationRepo.findByResourceSupplyDemandAndUserVisible(resourceSupplyAndDemand, true);
         return byResourceSupplyDemand;
     }
 

+ 2 - 3
src/main/java/com/izouma/jmrh/web/MessageController.java

@@ -9,7 +9,6 @@ import com.izouma.jmrh.service.MessageService;
 import com.izouma.jmrh.utils.SecurityUtils;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.apache.catalina.security.SecurityUtil;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
@@ -63,8 +62,8 @@ public class MessageController extends BaseController {
     @ApiOperation("对接列表条件查询")
     @GetMapping("/getMessage")
     public Page<Message> getMessage(PageQuery pageQuery) {
-        Page<Message> all = messageRepo.findAll(getMessage(pageQuery, Message.class), toPageRequest(pageQuery));
-        return all;
+        //Page<Message> all = messageRepo.findAll(getMessage(pageQuery, Message.class), toPageRequest(pageQuery));
+        return null;
     }
 
     @ApiOperation("我对接别人的对接列表(需求)")

+ 24 - 19
src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java

@@ -1,9 +1,6 @@
 package com.izouma.jmrh.web;
 
-import com.izouma.jmrh.domain.Conversation;
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
-import com.izouma.jmrh.domain.User;
+import com.izouma.jmrh.domain.*;
 import com.izouma.jmrh.dto.PageQuery;
 import com.izouma.jmrh.dto.ResSnDAndPropertyDTO;
 import com.izouma.jmrh.dto.SndDTO;
@@ -82,13 +79,16 @@ public class ResourceSupplyAndDemandController extends BaseController {
             ArrayList<Exist> exists = new ArrayList<>();
             exists.add(Exist.ON_DELETED);
             all.getContent().forEach(item -> {
-                if (item.getPublishersId() == user.getId()) {
-                    exists.add(Exist.DOCKED_USER_DELETED);
+                Conversation conversation = null;
+                if (item.getPublishersId().equals(user.getId())) {
+                    conversation = conversationRepo
+                            .findByResourceSupplyDemandAndPublisherVisibleAndConversationUserId(item, true, user.getId());
+
                 } else {
-                    exists.add(Exist.PUBLISHERS_DELETED);
+                    conversation = conversationRepo
+                            .findByResourceSupplyDemandAndUserVisibleAndConversationUserId(item, true, user.getId());
+
                 }
-                Conversation conversation = conversationRepo
-                        .findByResourceSupplyDemandAndExistInAndConversationUserId(item, exists, user.getId());
                 if (conversation != null) {
                     item.setConversationStatus(conversation.getStatus());
                 }
@@ -103,11 +103,8 @@ public class ResourceSupplyAndDemandController extends BaseController {
         pageQuery.getQuery().put("publishersId", SecurityUtils.getAuthenticatedUser().getId());
         Page<ResourceSupplyAndDemand> all = resourceSupplyAndDemandRepo
                 .findAll(getResourceSupplyAndDemand(pageQuery, ResourceSupplyAndDemand.class), toPageRequest(pageQuery));
-        ArrayList<Exist> exists = new ArrayList<>();
-        exists.add(Exist.ON_DELETED);
-        exists.add(Exist.DOCKED_USER_DELETED);
         all.getContent().forEach(item -> {
-            List<Conversation> demand = conversationRepo.findByResourceSupplyDemandAndExistIn(item, exists);
+            List<Conversation> demand = conversationRepo.findByResourceSupplyDemandAndUserVisible(item, true);
             item.setCount(demand.size());
         });
         return all;
@@ -126,14 +123,16 @@ public class ResourceSupplyAndDemandController extends BaseController {
         if (user != null) {
             ArrayList<Exist> exists = new ArrayList<>();
             exists.add(Exist.ON_DELETED);
-            if (resourceSupplyAndDemand.getPublishersId() == user.getId()) {
-                exists.add(Exist.DOCKED_USER_DELETED);
+            Conversation conversation = null;
+            if (resourceSupplyAndDemand.getPublishersId().equals(user.getId())) {
+                conversation = conversationRepo
+                        .findByResourceSupplyDemandAndPublisherVisibleAndConversationUserId(resourceSupplyAndDemand, true, user.getId());
+
             } else {
-                exists.add(Exist.PUBLISHERS_DELETED);
+                conversation = conversationRepo
+                        .findByResourceSupplyDemandAndUserVisibleAndConversationUserId(resourceSupplyAndDemand, true, user.getId());
+
             }
-            Conversation conversation = conversationRepo
-                    .findByResourceSupplyDemandAndExistInAndConversationUserId(resourceSupplyAndDemand, exists, user
-                            .getId());
             if (conversation != null) {
                 resourceSupplyAndDemand.setConversationStatus(conversation.getStatus());
             }
@@ -161,6 +160,12 @@ public class ResourceSupplyAndDemandController extends BaseController {
         return resourceSupplyAndDemandService.getDataCountList(productType, techType);
     }
 
+    @GetMapping("/count")
+    public long count(PageQuery pageQuery) {
+        pageQuery.getQuery().put("status", AuditStatus.PENDING);
+        return resourceSupplyAndDemandRepo.count(toSpecification(pageQuery, Tresource.class));
+    }
+
     @GetMapping("/myCollect")
     public Page<SndDTO> myCollect(@RequestParam(required = false) List<ResSnDType> types, Pageable pageable) {
         if (types == null) {

+ 16 - 20
src/main/java/com/izouma/jmrh/web/UserController.java

@@ -17,15 +17,12 @@ import com.izouma.jmrh.utils.excel.ExcelUtils;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.DisabledException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.web.bind.annotation.*;
 
@@ -33,7 +30,6 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 
 @AllArgsConstructor
@@ -41,10 +37,10 @@ import java.util.Objects;
 @RequestMapping("/user")
 @Slf4j
 public class UserController extends BaseController {
-    private UserRepo              userRepo;
-    private UserService           userService;
-    private JwtTokenUtil          jwtTokenUtil;
-    private SmsService            smsService;
+    private UserRepo userRepo;
+    private UserService userService;
+    private JwtTokenUtil jwtTokenUtil;
+    private SmsService smsService;
     private AuthenticationManager authenticationManager;
 
     @PostMapping("/register")
@@ -80,35 +76,37 @@ public class UserController extends BaseController {
      * 找回密码
      * */
     @PostMapping("/updatePassWord")
-    public Integer updatePassWord(@RequestParam(name = "phone") String phone, @RequestParam(name = "password") String password) {
+    public void updatePassWord(@RequestParam(name = "phone") String phone, @RequestParam(name = "password") String password) {
         //smsService.verify(user.getPhone(), code);
         User byPhone = userRepo.findByPhone(phone);
         if (byPhone != null) {
             byPhone.setPassword(new BCryptPasswordEncoder().encode(password));
-            return userRepo.updatePassword(byPhone);
+            userRepo.updatePassword(byPhone);
+        } else {
+            throw new BusinessException("手机号不存在");
         }
-        return 0;
     }
 
     /*
      * 修改密码
      * */
     @PostMapping("/updatePassWordTo")
-    public Integer updatePassWordTo(@RequestParam(name = "username") String username, @RequestParam(name = "password") String password,
-                                    @RequestParam(name = "passWordTo") String passWordTo) {
+    public void updatePassWordTo(@RequestParam(name = "username") String username, @RequestParam(name = "password") String password,
+                                 @RequestParam(name = "passWordTo") String passWordTo) {
         //smsService.verify(user.getPhone(), code);
         try {
             authenticate(username, password);
             User user = userRepo.findByUsername(username);
-            if (user != null) {
-                user.setPassword(new BCryptPasswordEncoder().encode(passWordTo));
-                return userRepo.updatePassword(user);
+            if (user == null) {
+                throw new BusinessException("用户不存在,请先注册");
             }
+            user.setPassword(new BCryptPasswordEncoder().encode(passWordTo));
+            userRepo.updatePassword(user);
         } catch (Exception e) {
             log.error("loginByUserPwd", e);
             throw new AuthenticationException("密码错误", e);
         }
-        return 0;
+
     }
 
     /**
@@ -131,14 +129,12 @@ public class UserController extends BaseController {
      * 修改手机号
      * */
     @PostMapping("/updatePhone")
-    public Integer updatePhone(@RequestParam(name = "phone") String phone, @RequestParam(name = "id") Long id) {
+    public void updatePhone(@RequestParam(name = "phone") String phone, @RequestParam(name = "id") Long id) {
         //smsService.verify(user.getPhone(), code);
         User byPhone = userRepo.findByPhone(phone);
         if (byPhone == null) {
             userRepo.updateUserPhone(phone, id);
-            return 1;
         }
-        return 0;
     }
 
     @GetMapping("/my")

+ 64 - 11
src/main/resources/static/backlog.json

@@ -1,10 +1,52 @@
 [
-  { todoName: '技术需求信息待办', count: 0, url: '/artNeedList', query: { state:0 } },
-  { todoName: '产品需求信息待办', count: 0, url: '/productNeedList', query: { state:0 } },
-  { todoName: '融资需求信息待办', count: 0, url: '/financingNeedsList', query: { state:0 } },
-  { todoName: '产品待办', count: 0, url: '/productList', query: { state:0 } },
-  { todoName: '技术待办', count: 0, url: '/artProductList', query: { state:0 } },
-  { todoName: '设备资源待办', count: 0, url: '/tresourceList', query: { state:0 } },
+  {
+    todoName: '技术需求信息待办',
+    count: 0,
+    url: '/artNeedList',
+    query: {
+      state: 0
+    }
+  },
+  {
+    todoName: '产品需求信息待办',
+    count: 0,
+    url: '/productNeedList',
+    query: {
+      state: 0
+    }
+  },
+  {
+    todoName: '融资需求信息待办',
+    count: 0,
+    url: '/financingNeedsList',
+    query: {
+      state: 0
+    }
+  },
+  {
+    todoName: '产品待办',
+    count: 0,
+    url: '/productList',
+    query: {
+      state: 0
+    }
+  },
+  {
+    todoName: '技术待办',
+    count: 0,
+    url: '/artProductList',
+    query: {
+      state: 0
+    }
+  },
+  {
+    todoName: '设备资源待办',
+    count: 0,
+    url: '/tresourceList',
+    query: {
+      state: 0
+    }
+  },
   {
     todoName: '公告审核',
     count: 0,
@@ -12,7 +54,8 @@
     query: {
       type: {
         keyType: 'gg'
-      }, state:0
+      },
+      state: 0
     }
   },
   {
@@ -22,15 +65,25 @@
     query: {
       type: {
         keyType: 'zcfg'
-      }, "state": 0
+      },
+      state: 0
     },
-    "urlCount":''
+    "urlCount": ''
+  },
+  {
+    todoName: '官方问答审核',
+    count: 0,
+    url: '/questionList',
+    query: {
+      state: 0
+    }
   },
-  { todoName: '官方问答审核', count: 0, url: '/questionList',query: { state:0 } },
   {
     todoName: '企业信息审核',
     count: 0,
     url: '/orgInfoList',
-    query: { state:0 }
+    query: {
+      state: 0
+    }
   }
 ]

+ 3 - 28
src/main/vue/src/views/agency.vue

@@ -850,32 +850,10 @@ export default {
                 { todoName: '产品待办', url: '/product/all' },
                 { todoName: '技术待办', url: '/artProduct/all' },
                 { todoName: '设备资源待办', url: '/tresource/all' },
-                {
-                    todoName: '公告审核',
-
-                    url: '/article/all',
-                    query: {
-                        type: {
-                            keyType: 'gg'
-                        }
-                    }
-                },
-                {
-                    todoName: '政策审核',
-
-                    url: '/article/all',
-                    query: {
-                        type: {
-                            keyType: 'zcfg'
-                        }
-                    }
-                },
+                { todoName: '公告审核', url: '/article/all' },
+                { todoName: '政策审核', url: '/article/all' },
                 { todoName: '官方问答审核', url: '/question/all' },
-                {
-                    todoName: '企业信息审核',
-
-                    url: '/orgInfo/all'
-                },
+                { todoName: '企业信息审核', url: '/orgInfo/all' },
                 { todoName: '融资需求信息待办', url: '/financingNeeds/all' }
             ]
         };
@@ -907,9 +885,6 @@ export default {
             }
             this.show = todoName;
             this.getData(this.url, this.query);
-            /*  Promise.all([this.getData()]).then(res => {
-                this.show = todoName;
-            }); */
         },
         getData(url, data) {
             this.$http