Преглед на файлове

Merge branch '消息' into dev

# Conflicts:
#	src/main/java/com/izouma/jmrh/domain/CommunicationRecord.java
#	src/main/java/com/izouma/jmrh/domain/Conversation.java
#	src/main/java/com/izouma/jmrh/repo/CommunicationRecordRepo.java
#	src/main/java/com/izouma/jmrh/repo/ConversationRepo.java
#	src/main/java/com/izouma/jmrh/service/AuditHistoryService.java
#	src/main/java/com/izouma/jmrh/service/CommentService.java
#	src/main/java/com/izouma/jmrh/service/ConversationService.java
#	src/main/java/com/izouma/jmrh/web/BaseController.java
#	src/main/java/com/izouma/jmrh/web/CommunicationRecordController.java
#	src/main/java/com/izouma/jmrh/web/ConversationController.java
#	src/main/java/com/izouma/jmrh/web/MessageController.java
#	src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java
#	src/main/jmrh/src/views/enterprise.vue
#	src/main/jmrh/src/views/resourceDetail.vue
#	src/main/jmrh/src/views/resourceFanceDetail.vue
#	src/main/jmrh/src/views/resourceRelease.vue
xiongzhu преди 4 години
родител
ревизия
36444ffa0b
променени са 79 файла, в които са добавени 1116 реда и са изтрити 2681 реда
  1. 28 0
      src/main/java/com/izouma/jmrh/converter/ContactConverter.java
  2. 29 0
      src/main/java/com/izouma/jmrh/converter/JSONObjectConverter.java
  3. 29 0
      src/main/java/com/izouma/jmrh/converter/OrgInfoConverter.java
  4. 0 79
      src/main/java/com/izouma/jmrh/domain/ArtNeed.java
  5. 0 82
      src/main/java/com/izouma/jmrh/domain/ArtProduct.java
  6. 0 25
      src/main/java/com/izouma/jmrh/domain/CommunicationRecord.java
  7. 21 0
      src/main/java/com/izouma/jmrh/domain/Contact.java
  8. 28 24
      src/main/java/com/izouma/jmrh/domain/Conversation.java
  9. 0 23
      src/main/java/com/izouma/jmrh/domain/Differ.java
  10. 29 11
      src/main/java/com/izouma/jmrh/domain/DockingRecord.java
  11. 0 61
      src/main/java/com/izouma/jmrh/domain/FinancingNeeds.java
  12. 22 68
      src/main/java/com/izouma/jmrh/domain/Message.java
  13. 2 2
      src/main/java/com/izouma/jmrh/domain/OrgInfo.java
  14. 0 25
      src/main/java/com/izouma/jmrh/domain/Pic.java
  15. 0 89
      src/main/java/com/izouma/jmrh/domain/Product.java
  16. 0 83
      src/main/java/com/izouma/jmrh/domain/ProductNeed.java
  17. 0 66
      src/main/java/com/izouma/jmrh/domain/Question.java
  18. 0 100
      src/main/java/com/izouma/jmrh/domain/Tresource.java
  19. 79 0
      src/main/java/com/izouma/jmrh/dto/ConversationDTO.java
  20. 47 0
      src/main/java/com/izouma/jmrh/dto/MessageDTO.java
  21. 15 2
      src/main/java/com/izouma/jmrh/dto/SndDTO.java
  22. 19 0
      src/main/java/com/izouma/jmrh/enums/ConversationType.java
  23. 16 0
      src/main/java/com/izouma/jmrh/enums/DockingRole.java
  24. 18 0
      src/main/java/com/izouma/jmrh/enums/DockingStatus.java
  25. 5 11
      src/main/java/com/izouma/jmrh/enums/MessageType.java
  26. 0 41
      src/main/java/com/izouma/jmrh/repo/ArtNeedRepo.java
  27. 0 50
      src/main/java/com/izouma/jmrh/repo/ArtProductRepo.java
  28. 0 1
      src/main/java/com/izouma/jmrh/repo/ArticleRepo.java
  29. 1 1
      src/main/java/com/izouma/jmrh/repo/CollectRepo.java
  30. 0 13
      src/main/java/com/izouma/jmrh/repo/CommunicationRecordRepo.java
  31. 28 9
      src/main/java/com/izouma/jmrh/repo/ConversationRepo.java
  32. 0 9
      src/main/java/com/izouma/jmrh/repo/DifferRepo.java
  33. 7 3
      src/main/java/com/izouma/jmrh/repo/DockingRecordRepo.java
  34. 0 43
      src/main/java/com/izouma/jmrh/repo/FinancingNeedsRepo.java
  35. 27 2
      src/main/java/com/izouma/jmrh/repo/MessageRepo.java
  36. 0 40
      src/main/java/com/izouma/jmrh/repo/ProductNeedRepo.java
  37. 0 47
      src/main/java/com/izouma/jmrh/repo/ProductRepo.java
  38. 0 30
      src/main/java/com/izouma/jmrh/repo/QuestionRepo.java
  39. 13 1
      src/main/java/com/izouma/jmrh/repo/ResourceSupplyAndDemandRepo.java
  40. 0 18
      src/main/java/com/izouma/jmrh/repo/TresourceRepo.java
  41. 1 0
      src/main/java/com/izouma/jmrh/security/WebSecurityConfig.java
  42. 0 64
      src/main/java/com/izouma/jmrh/service/ArtNeedService.java
  43. 0 24
      src/main/java/com/izouma/jmrh/service/ArtProductService.java
  44. 9 18
      src/main/java/com/izouma/jmrh/service/AuditHistoryService.java
  45. 17 27
      src/main/java/com/izouma/jmrh/service/CommentService.java
  46. 0 14
      src/main/java/com/izouma/jmrh/service/CommunicationRecordService.java
  47. 142 45
      src/main/java/com/izouma/jmrh/service/ConversationService.java
  48. 7 0
      src/main/java/com/izouma/jmrh/service/DockingRecordService.java
  49. 0 34
      src/main/java/com/izouma/jmrh/service/FinancingNeedsService.java
  50. 91 35
      src/main/java/com/izouma/jmrh/service/MessageService.java
  51. 0 12
      src/main/java/com/izouma/jmrh/service/OrgInfoService.java
  52. 3 0
      src/main/java/com/izouma/jmrh/service/PostService.java
  53. 0 26
      src/main/java/com/izouma/jmrh/service/ProductNeedService.java
  54. 0 56
      src/main/java/com/izouma/jmrh/service/ProductService.java
  55. 0 14
      src/main/java/com/izouma/jmrh/service/QuestionService.java
  56. 136 34
      src/main/java/com/izouma/jmrh/service/ResourceSupplyAndDemandService.java
  57. 0 14
      src/main/java/com/izouma/jmrh/service/TresourceService.java
  58. 0 98
      src/main/java/com/izouma/jmrh/web/ArtNeedController.java
  59. 0 90
      src/main/java/com/izouma/jmrh/web/ArtProductController.java
  60. 0 2
      src/main/java/com/izouma/jmrh/web/AuditHistoryController.java
  61. 54 195
      src/main/java/com/izouma/jmrh/web/BaseController.java
  62. 3 3
      src/main/java/com/izouma/jmrh/web/CollectController.java
  63. 0 84
      src/main/java/com/izouma/jmrh/web/CommunicationRecordController.java
  64. 29 22
      src/main/java/com/izouma/jmrh/web/ConversationController.java
  65. 13 25
      src/main/java/com/izouma/jmrh/web/DockingRecordController.java
  66. 0 89
      src/main/java/com/izouma/jmrh/web/FinancingNeedsController.java
  67. 38 55
      src/main/java/com/izouma/jmrh/web/MessageController.java
  68. 8 12
      src/main/java/com/izouma/jmrh/web/OrgInfoController.java
  69. 0 91
      src/main/java/com/izouma/jmrh/web/ProductColltroller.java
  70. 0 91
      src/main/java/com/izouma/jmrh/web/ProductNeedController.java
  71. 0 88
      src/main/java/com/izouma/jmrh/web/QuestionController.java
  72. 33 111
      src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java
  73. 0 75
      src/main/java/com/izouma/jmrh/web/TresourceController.java
  74. 2 2
      src/main/jmrh/src/views/login/attest.vue
  75. 2 2
      src/main/jmrh/src/views/mine/editInfo.vue
  76. 6 6
      src/main/resources/application.yaml
  77. 27 18
      src/test/java/com/izouma/jmrh/CommonTest.java
  78. 32 0
      src/test/java/com/izouma/jmrh/repo/OrgInfoRepoTest.java
  79. 0 46
      src/test/java/com/izouma/jmrh/repo/reqTest.java

+ 28 - 0
src/main/java/com/izouma/jmrh/converter/ContactConverter.java

@@ -0,0 +1,28 @@
+package com.izouma.jmrh.converter;
+
+import com.alibaba.fastjson.JSON;
+import com.izouma.jmrh.domain.Contact;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.AttributeConverter;
+
+@Slf4j
+public class ContactConverter implements AttributeConverter<Contact, String> {
+    @Override
+    public String convertToDatabaseColumn(Contact contact) {
+        if (contact != null) {
+            return JSON.toJSONString(contact);
+        }
+        return null;
+    }
+
+    @Override
+    public Contact convertToEntityAttribute(String s) {
+        try {
+            return JSON.parseObject(s, Contact.class);
+        } catch (Exception e) {
+            log.error("parse json error", e);
+        }
+        return null;
+    }
+}

+ 29 - 0
src/main/java/com/izouma/jmrh/converter/JSONObjectConverter.java

@@ -0,0 +1,29 @@
+package com.izouma.jmrh.converter;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.izouma.jmrh.domain.Contact;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.AttributeConverter;
+
+@Slf4j
+public class JSONObjectConverter implements AttributeConverter<JSONObject, String> {
+    @Override
+    public String convertToDatabaseColumn(JSONObject jsonObject) {
+        if (jsonObject != null) {
+            return jsonObject.toJSONString();
+        }
+        return null;
+    }
+
+    @Override
+    public JSONObject convertToEntityAttribute(String s) {
+        try {
+            return JSON.parseObject(s);
+        } catch (Exception e) {
+            log.error("parse json error", e);
+        }
+        return null;
+    }
+}

+ 29 - 0
src/main/java/com/izouma/jmrh/converter/OrgInfoConverter.java

@@ -0,0 +1,29 @@
+package com.izouma.jmrh.converter;
+
+import com.alibaba.fastjson.JSON;
+import com.izouma.jmrh.domain.Contact;
+import com.izouma.jmrh.domain.OrgInfo;
+import lombok.extern.slf4j.Slf4j;
+
+import javax.persistence.AttributeConverter;
+
+@Slf4j
+public class OrgInfoConverter implements AttributeConverter<OrgInfo, String> {
+    @Override
+    public String convertToDatabaseColumn(OrgInfo orgInfo) {
+        if (orgInfo != null) {
+            return JSON.toJSONString(orgInfo);
+        }
+        return null;
+    }
+
+    @Override
+    public OrgInfo convertToEntityAttribute(String s) {
+        try {
+            return JSON.parseObject(s, OrgInfo.class);
+        } catch (Exception e) {
+            log.error("parse json error", e);
+        }
+        return null;
+    }
+}

+ 0 - 79
src/main/java/com/izouma/jmrh/domain/ArtNeed.java

@@ -1,79 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.*;
-import java.time.LocalDateTime;
-
-@Data
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("技术需求")
-public class ArtNeed extends BaseEntity {
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "orgInfoId")
-    @ApiModelProperty("所属企业")
-    private OrgInfo orgInfo;
-
-    @Searchable
-    @ApiModelProperty("需求名称")
-    private String name;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "applicationFieldId")
-    @ApiModelProperty("应用领域")
-    private DataType applicationField;
-
-    @ApiModelProperty("联系人")
-    private String contactName;
-
-    @ApiModelProperty("联系人手机号")
-    private String contactPhone;
-
-    @ApiModelProperty("公开联系方式")
-    private boolean publicContact;
-
-    @ApiModelProperty("信息来源")
-    private String source;
-
-    @ApiModelProperty("转载武器装备采购网")
-    private boolean rePost;
-
-    @ApiModelProperty("有效期")
-    private LocalDateTime expireTime;
-
-    @ApiModelProperty("照片")
-    private String pic;
-
-    @ApiModelProperty("状态")
-    private Long state;
-
-    @ApiModelProperty("需求简介")
-    private String needInfo;
-
-    @ApiModelProperty("详情介绍")
-    String details;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "userId")
-    @ApiModelProperty("所属用户")
-    private User user;
-
-    @Transient
-    private Long userId;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "type")
-    @ApiModelProperty("技术类型")
-    private DataType dataType;
-    @Transient
-    private Long type;
-}

+ 0 - 82
src/main/java/com/izouma/jmrh/domain/ArtProduct.java

@@ -1,82 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.*;
-import java.time.LocalDateTime;
-import java.util.List;
-
-@Entity
-@Data
-@ApiModel("技术产品")
-public class ArtProduct extends BaseEntity{
-    @Searchable
-    @ApiModelProperty("产品标题")
-    private String name;
-    @ApiModelProperty("联系人")
-    private String contactName;
-
-    @ApiModelProperty("联系人手机号")
-    private String contactPhone;
-
-    @ApiModelProperty("联系地址")
-    private String address;
-
-    @ApiModelProperty("功能简介")
-    private String description;
-
-    @ApiModelProperty("有效期")
-    private LocalDateTime expireTime;
-
-    @ApiModelProperty("资源图片")
-    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType. LAZY)
-    @JoinColumn(name = "art_product_pic",insertable = true,updatable = true)
-    private List<Pic> picList;
-
-    @ApiModelProperty("详情介绍")
-    private String details;
-
-    @ApiModelProperty("信息来源")
-    private String source;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "applicationFieldId")
-    @ApiModelProperty("应用领域")
-    private DataType applicationField;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "userId")
-    @ApiModelProperty("所属用户")
-    private User user;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "orgInfoId")
-    @ApiModelProperty("所属企业")
-    private OrgInfo orgInfo;
-
-    @Transient
-    private Long userId;
-
-    @ApiModelProperty("价格,单位")
-    private String price;
-
-    @ApiModelProperty("技术参数")
-    private String parameter;
-
-    @ApiModelProperty("状态")
-    private Long state;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "advanced")
-    @ApiModelProperty("先进程度")
-    private DataType advancedType;
-
-    @ApiModelProperty("技术类型")
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "type")
-    private DataType dataType;
-
-}

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

@@ -1,25 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.Entity;
-
-@ApiModel("沟通记录")
-@Entity
-@Data
-public class CommunicationRecord extends BaseEntity {
-
-    @ApiModelProperty("发送人")
-    private Long userId;
-
-    private String nickname;
-
-    private String avatar;
-    
-    @ApiModelProperty("内容")
-    private String content;
-    @ApiModelProperty("对接记录")
-    private Long conversationId;
-}

+ 21 - 0
src/main/java/com/izouma/jmrh/domain/Contact.java

@@ -0,0 +1,21 @@
+package com.izouma.jmrh.domain;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class Contact {
+
+    private String orgName;
+
+    private String contactName;
+
+    private String contactPhone;
+
+    private String email;
+}

+ 28 - 24
src/main/java/com/izouma/jmrh/domain/Conversation.java

@@ -1,45 +1,49 @@
 package com.izouma.jmrh.domain;
 
-import com.izouma.jmrh.enums.ConversationStatus;
+import com.izouma.jmrh.converter.ContactConverter;
+import com.izouma.jmrh.enums.ConversationType;
+import com.izouma.jmrh.enums.DockingRole;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.persistence.*;
+import java.time.LocalDateTime;
 
 @Data
 @Entity
-@ApiModel("对接记录")
+@Table(indexes = {@Index(columnList = "sessionId")}, uniqueConstraints = @UniqueConstraint(columnNames = {"userId", "sessionId"}))
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("对话")
 public class Conversation extends BaseEntity {
 
-    @ApiModelProperty(name = "对接人")
-    private Long conversationUserId;
+    private String sessionId;
 
-    @ApiModelProperty(name = "单位名称")
-    private String orgName;
+    private Long userId;
 
-    @ApiModelProperty(name = "联系人")
-    private String contact;
+    private Long toUserId;
 
-    @ApiModelProperty(name = "联系方式")
-    private String phone;
+    private Long orgId;
 
-    @ApiModelProperty(name = "对接描述")
-    private String description;
+    @Column(columnDefinition = "TEXT")
+    @Convert(converter = ContactConverter.class)
+    private Contact contact;
 
-    @ApiModelProperty("对接状态")
-    @Enumerated(EnumType.STRING)
-    private ConversationStatus status;
-
-    @ApiModelProperty("对接人可见")
-    private boolean publisherVisible;
+//    @ManyToOne(fetch = FetchType.LAZY)
+//    @JoinColumn(name = "orgId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+//    @NotFound(action = NotFoundAction.IGNORE)
+//    private OrgInfo orgInfo;
 
-    @ApiModelProperty("对发布者可见")
-    private boolean userVisible;
+    @Enumerated(EnumType.STRING)
+    @ApiModelProperty("对话类型")
+    private ConversationType type;
 
-    @ApiModelProperty("资源供需")
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "resourceSupplyAndDemandId")
-    private ResourceSupplyAndDemand resourceSupplyDemand;
+    private LocalDateTime lastUpdate;
 
+    private String lastMessage;
 }

+ 0 - 23
src/main/java/com/izouma/jmrh/domain/Differ.java

@@ -1,23 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.*;
-@Data
-@Entity
-@ApiModel("点赞(差)")
-public class Differ {
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(name = "点赞人" )
-    @OneToOne
-    @JoinColumn(name = "userId")
-    private User user;
-
-    @ApiModelProperty(name = "评论" )
-    private Long commentId;
-}

+ 29 - 11
src/main/java/com/izouma/jmrh/domain/DockingRecord.java

@@ -1,21 +1,39 @@
 package com.izouma.jmrh.domain;
 
+import com.izouma.jmrh.converter.ContactConverter;
+import com.izouma.jmrh.enums.DockingRole;
+import com.izouma.jmrh.enums.DockingStatus;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.persistence.*;
 
 @Data
 @Entity
-@ApiModel("对接沟通记录")
-public class DockingRecord extends BaseEntity{
-    @OneToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "userId")
-    @ApiModelProperty("发送人")
-    private User user;
-    @ApiModelProperty("内容")
-    private String content;
-    @ApiModelProperty("消息Id")
-    private Long dockingRecordId;
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("对接记录")
+public class DockingRecord extends BaseEntity {
+
+    private Long userId;
+
+    private Long orgId;
+
+    private Long sndId;
+
+    private Long conversationId;
+
+    @Column(columnDefinition = "TEXT")
+    @Convert(converter = ContactConverter.class)
+    private Contact contact;
+
+    @Enumerated(EnumType.STRING)
+    private DockingStatus status;
+
+    @Enumerated(EnumType.STRING)
+    private DockingRole role;
 }

+ 0 - 61
src/main/java/com/izouma/jmrh/domain/FinancingNeeds.java

@@ -1,61 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.*;
-
-@Data
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("融资需求")
-public class FinancingNeeds extends BaseEntity{
-    @Searchable
-    @ApiModelProperty("需求名称")
-    private String name;
-
-    @ApiModelProperty("计划融资")
-    private String planMoney;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "type")
-    @ApiModelProperty("行业类型")
-    private DataType dataType;
-
-    @ApiModelProperty("状态")
-    private Long state;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "stage")
-    @ApiModelProperty("融资阶段")
-    private DataType stageType;
-
-    @ApiModelProperty("照片")
-    private String pic;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "userId")
-    @ApiModelProperty("发布人")
-    private User user;
-
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "orgInfoId")
-    @ApiModelProperty("所属企业")
-    private OrgInfo orgInfo;
-
-    @Transient
-    private Long userId;
-
-    @ApiModelProperty("图文详情")
-    private String details;
-
-    @ApiModelProperty("简介")
-    private String needInfo;
-}

+ 22 - 68
src/main/java/com/izouma/jmrh/domain/Message.java

@@ -2,87 +2,41 @@ package com.izouma.jmrh.domain;
 
 import javax.persistence.*;
 
+import com.izouma.jmrh.enums.MessageType;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.NoArgsConstructor;
 
 import java.util.List;
 
-
-@Entity
 @Data
+@Entity
+@Table(indexes = {@Index(columnList = "sessionId")})
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("对接记录")
 public class Message extends BaseEntity {
-    @ApiModelProperty(name = "对接人")
-    @Transient
-    private Long userId;
-    @OneToOne
-    @JoinColumn(name = "userId")
-    private User user;
-
-    @ApiModelProperty(name = "发布人")
-    @OneToOne
-    @JoinColumn(name = "myUserId")
-    private User myUser;
 
-    @Transient
-    @ApiModelProperty(name = "技术需求")
-    private Long reqArt;
-
-    @OneToOne
-    @JoinColumn(name = "reqArt")
-    private ArtNeed artNeed;
-
-    @Transient
-    @ApiModelProperty(name = "产品需求")
-    private Long reqProductId;
-    @OneToOne
-    @JoinColumn(name = "reqProductId")
-    private ProductNeed productNeed;
-
-    @Transient
-    @ApiModelProperty(name = "关联融资需求表")
-    private Long reqFinancingId;
-    @OneToOne
-    @JoinColumn(name = "reqFinancingId")
-    private FinancingNeeds financingNeeds;
-    @Transient
-    @ApiModelProperty(name = "关联资源表")
-    private Long rceId;
-
-    @OneToOne
-    @JoinColumn(name = "rceId")
-    private Tresource tresource;
-    @Transient
-    @ApiModelProperty(name = "关联产品表")
-    private Long resProductId;
-    @OneToOne
-    @JoinColumn(name = "resProductId")
-    private Product product;
-    @Transient
-    @ApiModelProperty(name = "关联技术表")
-    private Long resArtId;
-    @OneToOne
-    @JoinColumn(name = "resArtId")
-    private ArtProduct artProduct;
+    private Long userId;
 
-    @ApiModelProperty(name = "单位名称")
-    private String orgName;
+    private Long toUserId;
 
-    @ApiModelProperty(name = "联系人")
-    private String userName;
+    private String sessionId;
 
-    @ApiModelProperty(name = "联系方式")
-    private String userPhone;
+    @Column(columnDefinition = "TEXT")
+    private String content;
 
-    @ApiModelProperty(name = "对接描述")
-    private String description;
+    @Enumerated(EnumType.STRING)
+    private MessageType type;
 
-    @ApiModelProperty(name = "状态")
-    private Long state;
+    @Column(name = "is_read")
+    private boolean read;
 
-    @ApiModelProperty(name = "判断,对接记录被(1发布人,2对接人,0未删除)删除")
-    private Long onExist = 0L;
+    private Long commentId;
 
-    @OneToMany
-    @JoinColumn(name = "dockingRecordId")
-    List<DockingRecord> recordList;
+    private Long postId;
 }

+ 2 - 2
src/main/java/com/izouma/jmrh/domain/OrgInfo.java

@@ -41,8 +41,8 @@ public class OrgInfo extends BaseEntity {
     @ApiModelProperty("企业介绍")
     private String intro;
 
-    @ApiModelProperty("企业LOGE")
-    private String loge;
+    @ApiModelProperty("企业logo")
+    private String logo;
 
     @ApiModelProperty("营业执照")
     private String license;

+ 0 - 25
src/main/java/com/izouma/jmrh/domain/Pic.java

@@ -1,25 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.persistence.*;
-
-@Data
-@Entity
-@AllArgsConstructor
-@NoArgsConstructor
-@Builder
-@ApiModel("资源图片")
-public class Pic {
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private Long id;
-
-    @ApiModelProperty("地址")
-    private String url;
-}

+ 0 - 89
src/main/java/com/izouma/jmrh/domain/Product.java

@@ -1,89 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import javax.persistence.*;
-
-import com.fasterxml.jackson.annotation.JsonBackReference;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @Description  
- * @Author  lh
- * @Date 2020-12-21 17:47:14 
- */
-
-@Entity
-@Data
-@ApiModel("产品")
-public class Product extends BaseEntity{
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "orgInfoId")
-	@ApiModelProperty("所属企业")
-	private OrgInfo orgInfo;
-	@Searchable
-	@ApiModelProperty("产品标题")
-	private String name;
-	@ApiModelProperty("联系人")
-	private String contactName;
-
-	@ApiModelProperty("联系人手机号")
-	private String contactPhone;
-
-	@ApiModelProperty("联系地址")
-	private String address;
-
-	@ApiModelProperty("功能简介")
-	private String description;
-
-	@ApiModelProperty("有效期")
-	private LocalDateTime expireTime;
-
-	@ApiModelProperty("资源图片")
-	@OneToMany(cascade = CascadeType.ALL , fetch = FetchType. LAZY)
-	@JoinColumn(name = "product_pic",insertable = true,updatable = true)
-	private List<Pic> picList;
-
-	@ApiModelProperty("详情介绍")
-	private String details;
-
-	@ApiModelProperty("信息来源")
-	private String source;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "applicationFieldId")
-	@ApiModelProperty("应用领域")
-	private DataType applicationField;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "userId")
-	@ApiModelProperty("所属用户")
-	private User user;
-
-	@ApiModelProperty("价格,单位")
-	private String price;
-
-	@ApiModelProperty("技术参数")
-	private String parameter;
-
-	@ApiModelProperty("状态")
-	private Long state;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "advanced")
-	@ApiModelProperty("先进程度")
-	private DataType advancedType;
-
-    @ApiModelProperty("设备类型")
-    @ManyToOne(fetch = FetchType.LAZY)
-    @JoinColumn(name = "type")
-    private DataType dataType;
-
-}

+ 0 - 83
src/main/java/com/izouma/jmrh/domain/ProductNeed.java

@@ -1,83 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import javax.persistence.*;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @Description  
- * @Author  lh
- * @Date 2020-12-21 17:47:14 
- */
-
-@Entity
-@Data
-@ApiModel("产品需求")
-public class ProductNeed extends BaseEntity{
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "orgInfoId")
-	@ApiModelProperty("所属企业")
-	private OrgInfo orgInfo;
-
-	@Searchable
-	@ApiModelProperty("名称")
-	private String name;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "applicationFieldId")
-	@ApiModelProperty("应用领域")
-	private DataType applicationField;
-
-	@ApiModelProperty("联系人")
-	private String contactName;
-
-	@ApiModelProperty("联系人手机号")
-	private String contactPhone;
-
-	@ApiModelProperty("公开联系方式")
-	private boolean publicContact;
-
-	@ApiModelProperty("信息来源")
-	private String source;
-
-	@ApiModelProperty("转载武器装备采购网")
-	private boolean rePost;
-
-	@ApiModelProperty("有效期")
-	private LocalDateTime expireTime;
-
-	@ApiModelProperty("照片")
-	private String pic;
-
-	@ApiModelProperty("状态")
-	private Long state;
-
-	@ApiModelProperty("需求简介")
-	private String needInfo;
-
-	@ApiModelProperty("详情介绍")
-	String details;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "userId")
-	@ApiModelProperty("发布人")
-	private User user;
-
-	@Transient
-	private Long userId;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "type")
-	@ApiModelProperty("设备类型")
-	private DataType dataType;
-
-	@Transient
-	private Long type;
-
-}

+ 0 - 66
src/main/java/com/izouma/jmrh/domain/Question.java

@@ -1,66 +0,0 @@
-package com.izouma.jmrh.domain;
-
-import com.izouma.jmrh.annotations.Searchable;
-import com.izouma.jmrh.dto.gen.QuestionDTO;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Builder;
-import lombok.Data;
-
-import javax.persistence.Entity;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
-
-@Data
-@Entity
-@ApiModel("问题")
-public class Question extends BaseEntity {
-    @Searchable
-    @ApiModelProperty("标题")
-    private String title;
-
-    @ApiModelProperty("分类")
-    private String category;
-
-    @ApiModelProperty("描述")
-    private String description;
-
-    @ApiModelProperty(name = "发布人")
-    @OneToOne
-    @JoinColumn(name = "userId")
-    private User user;
-
-    @ApiModelProperty("姓名")
-    private String name;
-
-    @ApiModelProperty("手机")
-    private String phone;
-
-    @ApiModelProperty("职业")
-    private String profession;
-
-    @ApiModelProperty("邮箱")
-    private String email;
-
-    @ApiModelProperty("证件类型")
-    private String papersType;
-
-    @ApiModelProperty("证件编号")
-    private String papersCode;
-
-    @ApiModelProperty("答复内容")
-    private String repleContext;
-
-    @ApiModelProperty("公开")
-    private boolean publicity;
-
-    @ApiModelProperty("图片")
-    private String pic;
-
-    @ApiModelProperty("状态")
-    private Long state;
-
-    @ApiModelProperty("是否回复")
-    private boolean memberReply;
-
-}

+ 0 - 100
src/main/java/com/izouma/jmrh/domain/Tresource.java

@@ -1,100 +0,0 @@
-package com.izouma.jmrh.domain;
-import javax.persistence.*;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.izouma.jmrh.annotations.Searchable;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
-
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @Description  
- * @Author  lh
- * @Date 2020-12-22 15:59:53 
- */
-
-@Entity
-@Data
-public class Tresource  extends BaseEntity{
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "orgInfoId")
-	@ApiModelProperty("所属企业")
-	private OrgInfo orgInfo;
-
-	/**
-	 * 资源共享表
-	 */
-	@Searchable
-	@ApiModelProperty("关键字")
-	private String name;
-
-	@ApiModelProperty("设备类型")
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "type")
-	private DataType dataType;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "applicationFieldId")
-	@ApiModelProperty("应用领域")
-	private DataType applicationField;
-
-	@ApiModelProperty("产地")
-	private String place;
-
-	@ApiModelProperty("规格")
-	private String specification;
-
-	@ApiModelProperty("安装地点")
-	private String installAddress;
-
-	@ApiModelProperty("安装详细地点")
-	private String installAddressDesc;
-
-	@ApiModelProperty("经费")
-	private String expenditure;
-
-	@ApiModelProperty("价格单位")
-	private String price;
-
-	@ApiModelProperty("联系方式")
-	private String contactWay;
-
-	@ApiModelProperty("手机号")
-	private String phone;
-
-	@ApiModelProperty("信息来源")
-	private String source;
-
-	@ApiModelProperty("资源图片")
-	@OneToMany(cascade = CascadeType.ALL , fetch = FetchType. LAZY)
-	@JoinColumn(name = "res_pic",insertable = true,updatable = true)
-	private List<Pic> picList;
-
-	@ApiModelProperty("保密审查扫描件")
-	private String secretFiel;
-
-	@ApiModelProperty("有效期")
-	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
-	private LocalDateTime expireTime;
-
-	@ApiModelProperty("技术参数")
-	private String parameter;
-
-	@ApiModelProperty("功能描述")
-	private String description;
-
-	@ApiModelProperty("详细介绍")
-	private String details;
-
-	@ApiModelProperty("审核状态")
-	private Long state;
-
-	@ManyToOne(fetch = FetchType.LAZY)
-	@JoinColumn(name = "userId")
-	@ApiModelProperty("所属用户")
-	private User user;
-}

+ 79 - 0
src/main/java/com/izouma/jmrh/dto/ConversationDTO.java

@@ -0,0 +1,79 @@
+package com.izouma.jmrh.dto;
+
+import com.izouma.jmrh.domain.Contact;
+import com.izouma.jmrh.domain.Conversation;
+import com.izouma.jmrh.domain.OrgInfo;
+import com.izouma.jmrh.domain.User;
+import com.izouma.jmrh.enums.ConversationType;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class ConversationDTO {
+    private Long id;
+
+    private String sessionId;
+
+    private Long userId;
+
+    private Long toUserId;
+
+    private Long orgId;
+
+    private Contact contact;
+
+    private ConversationType type;
+
+    private LocalDateTime lastUpdate;
+
+    private String lastMessage;
+
+    private OrgInfo orgInfo;
+
+    private String title;
+
+    private String icon;
+
+    private long unread;
+
+    public ConversationDTO(Conversation conversation, long unread, OrgInfo orgInfo, User to) {
+        BeanUtils.copyProperties(conversation, this);
+        this.unread = unread;
+        this.orgInfo = orgInfo;
+        switch (type) {
+            case DOCKING:
+                title = orgInfo.getOrgName();
+                icon = StringUtils.isEmpty(orgInfo.getLogo())
+                        ? "https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/image/2021-03-04-17-34-09WoHLRdSP.png"
+                        : orgInfo.getLogo();
+                break;
+            case PUBLISH:
+                title = to.getNickname();
+                icon = to.getAvatar();
+                break;
+            case SYS:
+                title = "系统消息";
+                icon = "https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/application/icon/conversation_icon_sys.png";
+                break;
+            case LIKE:
+                title = "点赞";
+                icon = "https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/application/icon/conversation_icon_like.png";
+                break;
+            case COMMENT:
+                title = "回复";
+                icon = "https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/application/icon/conversation_icon_comment.png";
+                break;
+        }
+    }
+}

+ 47 - 0
src/main/java/com/izouma/jmrh/dto/MessageDTO.java

@@ -0,0 +1,47 @@
+package com.izouma.jmrh.dto;
+
+import com.izouma.jmrh.domain.Comment;
+import com.izouma.jmrh.domain.Message;
+import com.izouma.jmrh.domain.Post;
+import com.izouma.jmrh.enums.MessageType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+import java.time.LocalDateTime;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class MessageDTO {
+    private Long id;
+
+    private Long userId;
+
+    private Long toUserId;
+
+    private String sessionId;
+
+    private String content;
+
+    private MessageType type;
+
+    private boolean read;
+
+    private Long commentId;
+
+    private Long postId;
+
+    private LocalDateTime createdAt;
+
+    private Post post;
+
+    private Comment comment;
+
+    public MessageDTO(Message message, Post post, Comment comment) {
+        BeanUtils.copyProperties(message, this);
+        this.post = post;
+        this.comment = comment;
+    }
+}

+ 15 - 2
src/main/java/com/izouma/jmrh/dto/SndDTO.java

@@ -1,14 +1,18 @@
 package com.izouma.jmrh.dto;
 
+import com.izouma.jmrh.domain.DockingRecord;
 import com.izouma.jmrh.domain.OrgInfo;
 import com.izouma.jmrh.domain.ResSnDProperty;
+import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
 import com.izouma.jmrh.enums.AuditStatus;
 import com.izouma.jmrh.enums.ConversationStatus;
+import com.izouma.jmrh.enums.DockingStatus;
 import com.izouma.jmrh.enums.ResSnDType;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
 
 import java.time.LocalDateTime;
 import java.util.List;
@@ -18,7 +22,7 @@ import java.util.List;
 @NoArgsConstructor
 @Builder
 public class SndDTO {
-    private Long   id;
+    private Long id;
 
     private String name;
 
@@ -50,5 +54,14 @@ public class SndDTO {
 
     private Integer count;
 
-    private ConversationStatus conversationStatus;
+    private DockingStatus dockingStatus;
+
+    private Long conversationId;
+
+    public SndDTO(ResourceSupplyAndDemand snd, DockingRecord dockingRecord) {
+        BeanUtils.copyProperties(snd, this);
+        if (dockingRecord != null) {
+            dockingStatus = dockingRecord.getStatus();
+        }
+    }
 }

+ 19 - 0
src/main/java/com/izouma/jmrh/enums/ConversationType.java

@@ -0,0 +1,19 @@
+package com.izouma.jmrh.enums;
+
+public enum ConversationType {
+    PUBLISH("发布方"),
+    DOCKING("对接方"),
+    SYS("系统消息"),
+    LIKE("点赞"),
+    COMMENT("回复");
+
+    private final String description;
+
+    ConversationType(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+}

+ 16 - 0
src/main/java/com/izouma/jmrh/enums/DockingRole.java

@@ -0,0 +1,16 @@
+package com.izouma.jmrh.enums;
+
+public enum DockingRole {
+    PUBLISH("发布方"),
+    DOCKING("对接方");
+
+    private final String description;
+
+    DockingRole(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+}

+ 18 - 0
src/main/java/com/izouma/jmrh/enums/DockingStatus.java

@@ -0,0 +1,18 @@
+package com.izouma.jmrh.enums;
+
+public enum DockingStatus {
+    PENDING("等待对接"),
+    IN_PROGRESS("正在对接"),
+    SUCCESS("对接成功"),
+    FAIL("对接失败");
+
+    private final String description;
+
+    DockingStatus(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+}

+ 5 - 11
src/main/java/com/izouma/jmrh/enums/MessageType.java

@@ -1,25 +1,19 @@
 package com.izouma.jmrh.enums;
 
 public enum MessageType {
-    SYSTEM_MESSAGE("系统消息", "SYSTEM_MESSAGE"),
-    CONVERSATION_MESSAGE("对接消息", "CONVERSATION_MESSAGE"),
-    COMMENT_MESSAGE("评论消息", "COMMENT_MESSAGE"),
-    LIKE_RECORD_MESSAGE("点赞消息", "LIKE_RECORD_MESSAGE");
+    TEXT("文本"),
+    SND("供需信息"),
+    LIKE("点赞"),
+    COMMENT("回复");
 
     private final String description;
-    private String name;
 
-    MessageType(String description, String name) {
+    MessageType(String description) {
         this.description = description;
-        this.name = name;
     }
 
     public String getDescription() {
         return description;
     }
-
-    public String getName() {
-        return name;
-    }
 }
 

+ 0 - 41
src/main/java/com/izouma/jmrh/repo/ArtNeedRepo.java

@@ -1,41 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.ArtNeed;
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.dto.WebDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.List;
-import java.util.Map;
-
-public interface ArtNeedRepo extends JpaRepository<ArtNeed, Long>, JpaSpecificationExecutor<ArtNeed> {
-    @Query(value = "SELECT " +
-            "created_at as createdAt, count(created_at) as count " +
-            "FROM " +
-            "art_need WHERE 1=1 " +
-            "GROUP BY " +
-            "created_at ORDER BY created_at desc",nativeQuery = true)
-    List<Object[]> getDataCount();
-
-@Query(value = "select requir.id,requir.name," +
-        "requir.need_info,count(mess.id) as count,requir.pic,requir.created_at  from " +
-        "art_need as requir left join message as mess on " +
-        "requir.id = mess.req_art where requir.state>0 and if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1) and on_exist='0' or on_exist='2' or on_exist is null GROUP BY " +
-        "requir.id",nativeQuery = true,
-        countQuery = "select count(*)from " +
-        "art_need as requir left join message as mess on " +
-        "requir.id = mess.req_art where requir.state>0 and if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1) and on_exist='0' or on_exist='2' or on_exist is null group by requir.id")
-Page<Map<String,Object>> getMyAllCount(WebDTO webDTO, Pageable pageable);
-@Modifying
-@Transactional
-@Query(value = "update art_need set state =:#{#artNeed.state} where id=:#{#artNeed.id}",nativeQuery = true)
-int updateStateById(ArtNeed artNeed);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}
-

+ 0 - 50
src/main/java/com/izouma/jmrh/repo/ArtProductRepo.java

@@ -1,50 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.ArtProduct;
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.dto.WebDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.List;
-import java.util.Map;
-
-public interface ArtProductRepo extends JpaRepository<ArtProduct, Long>, JpaSpecificationExecutor<ArtProduct> {
-    @Query(value = "select requir.id,requir.name," +
-            "requir.description,count(mess.id) as count,"+
-            "(select " +
-            "url" +
-            " from pic where art_product_pic = requir.id order" +
-            " by id desc" +
-            " LIMIT 1" +
-            ") url from " +
-            "art_product as requir left join message as mess on " +
-            "requir.id = mess.res_art_id inner join pic as  img on requir.id = img.art_product_pic where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1)"+
-            "and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1)  and on_exist='0' or on_exist='2' or on_exist is null  GROUP BY " +
-            "requir.id",nativeQuery = true,
-            countQuery = "select count(*)from " +
-                    "art_product as requir left join message as mess on " +
-                    "requir.id = mess.res_art_id where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1)" +
-                    "and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1)  and on_exist='0' or on_exist='2' or on_exist is null  group by requir.id")
-    Page<Map<String,Object>> getMyAllCount(WebDTO webDTO, Pageable pageable);
-
-
-    @Query(value = "SELECT " +
-            "created_at as createdAt, count(created_at) as count " +
-            "FROM " +
-            "art_product WHERE 1=1 "+
-            "GROUP BY " +
-            "created_at ORDER BY created_at desc",nativeQuery = true)
-    List<Object[]> getDataCount();
-
-    @Modifying
-    @Transactional
-    @Query(value = "update art_product set state =:#{#artProduct.state} where id=:#{#artProduct.id}",nativeQuery = true)
-    int updateStateById(ArtProduct artProduct);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}

+ 0 - 1
src/main/java/com/izouma/jmrh/repo/ArticleRepo.java

@@ -1,7 +1,6 @@
 package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.Article;
-import com.izouma.jmrh.domain.Tresource;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;

+ 1 - 1
src/main/java/com/izouma/jmrh/repo/CollectRepo.java

@@ -15,7 +15,7 @@ public interface CollectRepo extends JpaRepository<Collect, Long>, JpaSpecificat
 
     @Modifying
     @Transactional
-    void deleteAllByUserIdAndSndId(Long userId, Iterable<Long> ids);
+    void deleteAllByUserIdAndSndIdIn(Long userId, Iterable<Long> ids);
 
     Collect findByUserIdAndSndId(Long userId, Long sndId);
 }

+ 0 - 13
src/main/java/com/izouma/jmrh/repo/CommunicationRecordRepo.java

@@ -1,13 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.CommunicationRecord;
-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> findByConversationIdAndUserId(Long conversationId, Long userId);
-}

+ 28 - 9
src/main/java/com/izouma/jmrh/repo/ConversationRepo.java

@@ -2,14 +2,19 @@ package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.Conversation;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
+import com.izouma.jmrh.dto.ConversationDTO;
 import com.izouma.jmrh.enums.ConversationStatus;
+import com.izouma.jmrh.enums.DockingRole;
+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;
 import org.springframework.data.jpa.repository.Query;
 
 import javax.transaction.Transactional;
+import java.time.LocalDateTime;
 import java.util.List;
+import java.util.Optional;
 
 public interface ConversationRepo extends JpaRepository<Conversation, Long>, JpaSpecificationExecutor<Conversation> {
     @Transactional
@@ -17,14 +22,28 @@ 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> findByResourceSupplyDemandAndUserVisible(ResourceSupplyAndDemand resourceSupplyDemand, boolean userVisible);
-
-    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);
+    Conversation findFirstByUserIdAndToUserIdOrderByIdDesc(Long userId, Long toUserId);
 
+    @Transactional
+    @Modifying
+    @Query("update Conversation c set c.lastUpdate = ?2, c.lastMessage = ?3 where c.sessionId = ?1")
+    void updateConversation(String sessionId, LocalDateTime time, String lastMessage);
+
+    List<Conversation> findByUserIdOrderByLastUpdateDesc(Long userId);
+
+    @Query("select new com.izouma.jmrh.dto.ConversationDTO(c, count(m.id), o, u2) from Conversation c " +
+            "left join Message m on m.sessionId = c.sessionId and m.toUserId = ?1 and m.read = false " +
+            "left join OrgInfo o on c.orgId = o.id " +
+            "left join User u2 on c.toUserId = u2.id " +
+            "where c.userId = ?1 " +
+            "group by c.id order by c.lastUpdate desc")
+    List<ConversationDTO> my(Long userId);
+
+    @Query("select new com.izouma.jmrh.dto.ConversationDTO(c, count(m.id), o, u2) from Conversation c " +
+            "left join Message m on m.sessionId = c.sessionId and m.toUserId = ?1 and m.read = false " +
+            "left join OrgInfo o on c.orgId = o.id " +
+            "left join User u2 on c.toUserId = u2.id " +
+            "where c.id = ?1 " +
+            "group by c.id")
+    Optional<ConversationDTO> get(Long id);
 }

+ 0 - 9
src/main/java/com/izouma/jmrh/repo/DifferRepo.java

@@ -1,9 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.Differ;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-
-public interface DifferRepo extends JpaRepository<Differ, Long>, JpaSpecificationExecutor<Differ> {
-    Differ findByCommentIdAndUserId(Long commentId,Long userId);
-}

+ 7 - 3
src/main/java/com/izouma/jmrh/repo/DockingRecordRepo.java

@@ -1,12 +1,16 @@
 package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.DockingRecord;
-import com.izouma.jmrh.domain.User;
+import com.izouma.jmrh.enums.DockingRole;
+import com.izouma.jmrh.enums.DockingStatus;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
-import java.util.List;
 
 public interface DockingRecordRepo extends JpaRepository<DockingRecord, Long>, JpaSpecificationExecutor<DockingRecord> {
-List<DockingRecord> findDockingRecordByUserAndDockingRecordId(User user, Long id);
+    DockingRecord findFirstByUserIdAndSndIdAndRoleAndStatusInOrderByIdDesc(Long userId, Long sndId, DockingRole role, Iterable<DockingStatus> status);
+
+    DockingRecord findFirstByUserIdAndSndIdAndRoleOrderByIdDesc(Long userId, Long sndId, DockingRole role);
+
+    DockingRecord findFirstByUserIdAndSndIdAndStatusInOrderByIdDesc(Long userId, Long sndId, Iterable<DockingStatus> status);
 }

+ 0 - 43
src/main/java/com/izouma/jmrh/repo/FinancingNeedsRepo.java

@@ -1,43 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.FinancingNeeds;
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.dto.WebDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.Map;
-
-public interface FinancingNeedsRepo extends JpaRepository<FinancingNeeds, Long>, JpaSpecificationExecutor<FinancingNeeds> {
-
-    @Query(value = "SELECT " +
-            "requir.id," +
-            "requir.name," +
-            "type.NAME typeName," +
-            "stageType.name stageName," +
-            "requir.plan_money planMoney," +
-            "count( mess.id ) AS count ,requir.pic,requir.created_at " +
-            "FROM " +
-            "financing_needs AS requir " +
-            "LEFT JOIN message AS mess ON requir.id = mess.req_financing_id " +
-            "INNER JOIN data_type type ON requir.type = type.id " +
-            "INNER JOIN data_type stageType on requir.stage = stageType.id  where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) " +
-            "and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1)  and on_exist='0' or on_exist='2' or on_exist is null " +
-            "GROUP BY " +
-            "requir.id",
-            countQuery = "select count(*) from " +
-                    "financing_needs as requir left join message as mess on " +
-                    "requir.id = mess.req_financing_id where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1)" +
-                    "and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1) and on_exist='0' or on_exist='2' or on_exist is null ",nativeQuery = true)
-    Page<Map<String,Object>>  getMyAllCount(WebDTO webDTO, Pageable pageable);
-    @Modifying
-    @Transactional
-    @Query(value = "update financing_needs set state =:#{#financingNeeds.state} where id=:#{#financingNeeds.id}",nativeQuery = true)
-    int updateStateById(FinancingNeeds financingNeeds);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}

+ 27 - 2
src/main/java/com/izouma/jmrh/repo/MessageRepo.java

@@ -1,7 +1,10 @@
 package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.Message;
-import org.springframework.data.annotation.Transient;
+import com.izouma.jmrh.dto.MessageDTO;
+import com.izouma.jmrh.enums.MessageType;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -12,6 +15,28 @@ import javax.transaction.Transactional;
 public interface MessageRepo extends JpaRepository<Message, Long>, JpaSpecificationExecutor<Message> {
     @Transactional
     @Modifying
-    @Query(value = "update message set state = :#{#message.state} where id =:#{#message.id}",nativeQuery = true)
+    @Query(value = "update message set state = :#{#message.state} where id =:#{#message.id}", nativeQuery = true)
     Integer updateStatus(Message message);
+
+    @Transactional
+    @Modifying
+    @Query("update Message m set m.read = true where m.sessionId = ?1 and m.toUserId = ?2")
+    void readAll(String sessionId, Long toUserId);
+
+    @Transactional
+    @Modifying
+    @Query("update Message m set m.read = true where m.toUserId = ?2")
+    void readAll(Long toUserId);
+
+    @Query("select new com.izouma.jmrh.dto.MessageDTO(m, p, c) from Message m " +
+            "left join Post p on m.postId = p.id " +
+            "left join Comment c on m.commentId = c.id " +
+            "where m.sessionId = ?1 and m.type = ?2 order by m.createdAt desc")
+    Page<MessageDTO> all(String sessionId, MessageType type, Pageable pageable);
+
+    @Query("select new com.izouma.jmrh.dto.MessageDTO(m, p, c) from Message m " +
+            "left join Post p on m.postId = p.id " +
+            "left join Comment c on m.commentId = c.id " +
+            "where m.sessionId = ?1 order by m.createdAt desc")
+    Page<MessageDTO> all(String sessionId, Pageable pageable);
 }

+ 0 - 40
src/main/java/com/izouma/jmrh/repo/ProductNeedRepo.java

@@ -1,40 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.ProductNeed;
-import com.izouma.jmrh.dto.WebDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.List;
-import java.util.Map;
-
-public interface ProductNeedRepo extends JpaRepository<ProductNeed, Long>, JpaSpecificationExecutor<ProductNeed> {
-    @Query(value = "SELECT " +
-            "created_at as createdAt, count(created_at) as count " +
-            "FROM product_need" +
-            " WHERE 1=1 " +
-            "GROUP BY " +
-            "created_at ORDER BY created_at desc",nativeQuery = true)
-    List<Object[]> getDataCount();
-
-    @Query(value = "select requir.id,requir.name," +
-            "requir.need_info,count(mess.id) as count,requir.pic,requir.created_at from " +
-            "product_need as requir left join message as mess on " +
-            "requir.id = mess.req_product_id where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1)  and on_exist='0' or on_exist='2' or on_exist is null  GROUP BY " +
-            "requir.id",nativeQuery = true,
-            countQuery = "select count(*)from " +
-                    "product_need as requir left join message as mess on " +
-                    "requir.id = mess.req_product_id  where if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1)  and on_exist='0' or on_exist='2' or on_exist is null  group by requir.id")
-    Page<Map<String,Object>> getMyAllCount(WebDTO webDTO, Pageable pageable);
-    @Modifying
-    @Transactional
-    @Query(value = "update product_need set state =:#{#productNeed.state} where id=:#{#productNeed.id}",nativeQuery = true)
-    int updateStateById(ProductNeed productNeed);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}

+ 0 - 47
src/main/java/com/izouma/jmrh/repo/ProductRepo.java

@@ -1,47 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.Product;
-import com.izouma.jmrh.dto.WebDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-import java.util.List;
-import java.util.Map;
-
-public interface ProductRepo extends JpaRepository<Product, Long>, JpaSpecificationExecutor<Product> {
-
-    @Query(value = "SELECT " +
-            "created_at as createdAt, count(created_at) as count " +
-            "FROM " +
-            "Product WHERE state ='1' or state ='3'" +
-            "GROUP BY " +
-            "created_at ORDER BY created_at desc",nativeQuery = true)
-    List<Object[]> getDataCount();
-
-    @Query(value = "select requir.id,requir.name," +
-            "requir.description,count(mess.id) as count ," +
-            "(select " +
-            "url" +
-            " from pic where product_pic = requir.id order" +
-            " by id desc" +
-            " LIMIT 1" +
-            ") url from " +
-            "Product as requir left join message as mess on " +
-            "requir.id = mess.res_product_id where requir.state>0 and if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1) and on_exist='0' or on_exist='2' or on_exist is null  GROUP BY " +
-            "requir.id",nativeQuery = true,
-            countQuery = "select count(*)from " +
-                    "Product as requir left join message as mess on " +
-                    "requir.id = mess.res_product_id where requir.state>0 and if(:#{#webDTO.resUserId}!='',requir.user_id =:#{#webDTO.resUserId},1=1) and if(:#{#webDTO.reqUserId}!='',mess.user_id =:#{#webDTO.reqUserId},1=1) and on_exist='0' or on_exist='2' or on_exist is null  group by requir.id")
-    Page<Map<String,Object>> getMyAllCount(WebDTO webDTO, Pageable pageable);
-    @Modifying
-    @Transactional
-    @Query(value = "update Product set state =:#{#product.state} where id=:#{#product.id}",nativeQuery = true)
-    int updateStateById(Product product);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}

+ 0 - 30
src/main/java/com/izouma/jmrh/repo/QuestionRepo.java

@@ -1,30 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.Question;
-import com.izouma.jmrh.domain.User;
-import com.izouma.jmrh.dto.gen.QuestionDTO;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-
-public interface QuestionRepo extends JpaRepository<Question, Long>, JpaSpecificationExecutor<Question> {
-    @Modifying
-    @Transactional
-    @Query(value = "update question set state =:#{#question.state} where id=:#{#question.id}", nativeQuery = true)
-    int updateStateById(Question question);
-
-    /*
-     * 获取登录未公开的UNION所有公开的
-     * */
-    @Query(value = "select id,title,created_at from question where publicity = true and state = 1 and if(:#{#search}!='',title like concat('%',:#{#search},'%'),1=1) union " +
-            "select id,title,created_at from question where if(:#{#userId}!='',user_id =:#{#userId},1=1) and state = 1 and if(:#{#userId}!=0,publicity = false,1=1) and if(:#{#search}!='',title like concat('%',:#{#search},'%'),1=1) ORDER BY created_at desc",
-            countQuery = "select count(id) from (select id from question where publicity = true and state = 1 and if(:#{#search}!='',title like concat('%',:#{#search},'%'),1=1) UNION " +
-                    "select id from question where if(:#{#userId}!='',user_id=:#{#userId},1=1) and state = 1 and if(:#{#userId}!='',publicity = false,publicity = true) and if(:#{#search}!='',title like concat('%',:#{#search},'%'),1=1)) tem", nativeQuery = true)
-    Page<Object[]> userAll(String search, String userId, Pageable pageable);
-}

+ 13 - 1
src/main/java/com/izouma/jmrh/repo/ResourceSupplyAndDemandRepo.java

@@ -1,6 +1,8 @@
 package com.izouma.jmrh.repo;
 
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
+import com.izouma.jmrh.dto.SndDTO;
+import com.izouma.jmrh.enums.DockingRole;
 import com.izouma.jmrh.enums.ResSnDType;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -22,7 +24,7 @@ public interface ResourceSupplyAndDemandRepo extends JpaRepository<ResourceSuppl
     @Query(value = "select name,DATE_FORMAT(created_at,'%Y-%m-%d') createdAt,count(id) productCount from resource_supply_and_demand" +
             " where type = :#{#resSnDType} GROUP BY DATE_FORMAT(created_at,'%Y-%m-%d') ORDER BY created_at desc", nativeQuery = true)
     List<Map<String, Object>> getProductCountList(String resSnDType);
-    
+
     @Query(value = "select name,DATE_FORMAT(created_at,'%Y-%m-%d') createdAt,count(id) techCount from resource_supply_and_demand" +
             " where type = :#{#resSnDType} GROUP BY DATE_FORMAT(created_at,'%Y-%m-%d') ORDER BY created_at desc", nativeQuery = true)
     List<Map<String, Object>> getTechCountList(String resSnDType);
@@ -32,4 +34,14 @@ public interface ResourceSupplyAndDemandRepo extends JpaRepository<ResourceSuppl
 
     @Query("select r from ResourceSupplyAndDemand r join Collect c on c.sndId = r.id where c.userId = ?1")
     Page<ResourceSupplyAndDemand> myCollect(Long userId, Pageable pageable);
+
+    @Query("select new com.izouma.jmrh.dto.SndDTO(s, d) from DockingRecord d " +
+            "join ResourceSupplyAndDemand s on d.sndId = s.id " +
+            "where d.userId = ?1 and d.role = ?2 group by s.id order by d.createdAt desc")
+    Page<SndDTO> myDockingSnd(Long userId, DockingRole role, Pageable pageable);
+
+    @Query("select new com.izouma.jmrh.dto.SndDTO(s, d) from DockingRecord d " +
+            "join ResourceSupplyAndDemand s on d.sndId = s.id " +
+            "where d.userId = ?1 and d.role = ?2 and s.type in ?3 group by s.id order by d.createdAt desc")
+    Page<SndDTO> myDockingSnd(Long userId, DockingRole role, Iterable<ResSnDType> types, Pageable pageable);
 }

+ 0 - 18
src/main/java/com/izouma/jmrh/repo/TresourceRepo.java

@@ -1,18 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.Tresource;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Modifying;
-import org.springframework.data.jpa.repository.Query;
-
-import javax.transaction.Transactional;
-
-public interface TresourceRepo extends JpaRepository<Tresource, Long>, JpaSpecificationExecutor<Tresource> {
-    @Modifying
-    @Transactional
-    @Query(value = "update tresource set state =:#{#tresource.state} where id=:#{#tresource.id}",nativeQuery = true)
-    int updateStateById(Tresource tresource);
-    long countAllByAndOrgInfo(OrgInfo orgInfo);
-}

+ 1 - 0
src/main/java/com/izouma/jmrh/security/WebSecurityConfig.java

@@ -104,6 +104,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/question/**").permitAll()
                 .antMatchers("/topic/**").permitAll()
                 .antMatchers("/resourceSupplyAndDemand/all/*").permitAll()
+                .antMatchers("/resourceSupplyAndDemand/allDTO").permitAll()
                 .antMatchers("/resourceSupplyAndDemand/getMyAll/*").permitAll()
                 .antMatchers("/dataType/**").permitAll()
                 .antMatchers("/orgInfo/save").permitAll()

+ 0 - 64
src/main/java/com/izouma/jmrh/service/ArtNeedService.java

@@ -1,64 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.dto.ArtProductDTO;
-import com.izouma.jmrh.dto.ArtNeedVO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.repo.ArtNeedRepo;
-import com.izouma.jmrh.repo.ProductNeedRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.math.BigInteger;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class ArtNeedService {
-
-    private ArtNeedRepo artNeedRepo;
-
-    private ProductNeedRepo productNeedRepo;
-
-    public List<ArtProductDTO> getDataCount(){
-        List<ArtProductDTO> voList=new ArrayList<>();
-        List<Object[]> productList = productNeedRepo.getDataCount();
-        List<Object[]> artList = artNeedRepo.getDataCount();
-      for (Object[] art:artList) {
-            ArtProductDTO artProductDTO = new ArtProductDTO();
-            artProductDTO.setCreatedAt(((Timestamp) art[0]).toLocalDateTime().toLocalDate());
-            artProductDTO.setArtCount(((BigInteger)art[1]).longValue());
-            for (Object[] product:productList) {
-                if (artProductDTO.getCreatedAt()==((Timestamp) product[0]).toLocalDateTime().toLocalDate()){
-                    artProductDTO.setProductCount(((BigInteger)product[1]).longValue());
-                    productList.remove(product);
-                }
-            }
-            voList.add(artProductDTO);
-        }
-        for (Object[] product:productList) {
-            ArtProductDTO artProductDTO = new ArtProductDTO();
-            artProductDTO.setCreatedAt(((Timestamp) product[0]).toLocalDateTime().toLocalDate());
-            artProductDTO.setProductCount(((BigInteger)product[1]).longValue());
-            voList.add(artProductDTO);
-        }
-        return voList;
-    }
-  /*  public List<ArtNeedVO> getMyAllCount(WebDTO artNeed, Pageable pageable){
-        List<ArtNeedVO> voList=new ArrayList<>();
-        Page<Object[]> myAllCount = artNeedRepo.getMyAllCount(artNeed, pageable);
-        for (Object[] obj:myAllCount.getContent()
-        ) {
-            ArtNeedVO artNeedVO = new ArtNeedVO();
-            artNeedVO.setId(((BigInteger)obj[0]).longValue());
-            artNeedVO.setName(String.valueOf(obj[1]));
-            artNeedVO.setNeedInfo(String.valueOf(obj[2]));
-            artNeedVO.setCount(((BigInteger)obj[3]).longValue());
-            voList.add(artNeedVO);
-        }
-        return voList;
-    }*/
-}

+ 0 - 24
src/main/java/com/izouma/jmrh/service/ArtProductService.java

@@ -1,24 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.dto.ProductDTO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.repo.ArtProductRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.Map;
-
-@Service
-@AllArgsConstructor
-public class ArtProductService {
-
-    private ArtProductRepo artProductRepo;
-
-    public Page<Map<String,Object>> getMyAllCount(WebDTO webDTO, Pageable pageable){
-        Page<Map<String,Object>> myAllCount = artProductRepo.getMyAllCount(webDTO, pageable);
-        return myAllCount;
-    }
-}

+ 9 - 18
src/main/java/com/izouma/jmrh/service/AuditHistoryService.java

@@ -5,7 +5,6 @@ import com.izouma.jmrh.enums.MessageType;
 import com.izouma.jmrh.enums.Reading;
 import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.*;
-import com.izouma.jmrh.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
@@ -13,46 +12,38 @@ import org.springframework.stereotype.Service;
 @AllArgsConstructor
 public class AuditHistoryService {
 
-    private ArticleRepo articleRepo;
-    private OrgInfoRepo orgInfoRepo;
+    private ArticleRepo                 articleRepo;
+    private OrgInfoRepo                 orgInfoRepo;
     private ResourceSupplyAndDemandRepo resourceSupplyAndDemandRepo;
-    private PostRepo postRepo;
-    private NotificationMessageRepo notificationMessageRepo;
+    private PostRepo                    postRepo;
+    private NotificationMessageRepo     notificationMessageRepo;
 
 
     public AuditHistory updateState(AuditHistory auditHistory) {
-        NotificationMessage message = new NotificationMessage();
-        message.setMessageType(MessageType.SYSTEM_MESSAGE);
-        String content = new String();
         User user = new User();
         if (auditHistory.getArticle() != null) {
             articleRepo.updateStateById(auditHistory.getArticle());
         } else if (auditHistory.getOrgInfo() != null) {
-            OrgInfo orgInfo = orgInfoRepo.findById(auditHistory.getOrgInfo().getId()).orElseThrow(new BusinessException("无记录"));
+            OrgInfo orgInfo = orgInfoRepo.findById(auditHistory.getOrgInfo().getId())
+                    .orElseThrow(new BusinessException("无记录"));
             auditHistory.setTitle(orgInfo.getOrgName());
             user.setId(orgInfo.getUserId());
             auditHistory.setMyUser(user);
-            content = orgInfo.getOrgName();
             orgInfoRepo.updateStateById(auditHistory.getOrgInfo());
         } else if (auditHistory.getResourceSupplyAndDemand() != null) {
-            ResourceSupplyAndDemand resourceSupplyAndDemand = resourceSupplyAndDemandRepo.findById(auditHistory.getResourceSupplyAndDemand().getId()).orElseThrow(new BusinessException("无记录"));
-            content = resourceSupplyAndDemand.getName();
+            ResourceSupplyAndDemand resourceSupplyAndDemand = resourceSupplyAndDemandRepo
+                    .findById(auditHistory.getResourceSupplyAndDemand().getId())
+                    .orElseThrow(new BusinessException("无记录"));
             user.setId(resourceSupplyAndDemand.getPublishersId());
             auditHistory.setMyUser(user);
             resourceSupplyAndDemandRepo.updateStatusById(auditHistory.getResourceSupplyAndDemand());
         } else if (auditHistory.getPost() != null) {
             Post post = postRepo.findById(auditHistory.getPost().getId()).orElseThrow(new BusinessException("无记录"));
-            content = post.getTitle();
             user.setId(post.getUserId());
             auditHistory.setMyUser(user);
             post.setStatus(auditHistory.getPost().getStatus());
             postRepo.save(post);
         }
-        message.setRecipientId(user.getId());
-        message.setSenderId(SecurityUtils.getAuthenticatedUser().getId());
-        message.setContent(content);
-        message.setReading(Reading.UN_READ);
-        notificationMessageRepo.save(message);
         return auditHistory;
     }
 }

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

@@ -3,12 +3,13 @@ package com.izouma.jmrh.service;
 import com.izouma.jmrh.domain.*;
 import com.izouma.jmrh.dto.CommentDTO;
 import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.enums.MessageType;
 import com.izouma.jmrh.enums.OrgStatus;
 import com.izouma.jmrh.enums.PostType;
-import com.izouma.jmrh.enums.Reading;
 import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.*;
+import com.izouma.jmrh.repo.CommentRepo;
+import com.izouma.jmrh.repo.LikeRecordRepo;
+import com.izouma.jmrh.repo.PostRepo;
+import com.izouma.jmrh.repo.UserRepo;
 import com.izouma.jmrh.security.Authority;
 import com.izouma.jmrh.utils.SecurityUtils;
 import lombok.AllArgsConstructor;
@@ -28,11 +29,11 @@ import static com.izouma.jmrh.web.BaseController.toSpecification;
 @AllArgsConstructor
 public class CommentService {
 
-    private CommentRepo commentRepo;
-    private PostRepo postRepo;
+    private CommentRepo    commentRepo;
+    private PostRepo       postRepo;
     private LikeRecordRepo likeRecordRepo;
-    private UserRepo userRepo;
-    private NotificationMessageRepo notificationMessageRepo;
+    private UserRepo       userRepo;
+    private MessageService messageService;
 
     public Comment create(Comment record) {
         Post post = postRepo.findById(record.getPostId()).orElseThrow(new BusinessException("帖子不存在"));
@@ -53,18 +54,13 @@ public class CommentService {
         post.setCommentNum(post.getCommentNum() + 1);
         postRepo.save(post);
         record.setUserId(SecurityUtils.getAuthenticatedUser().getId());
-        NotificationMessage notificationMessage = new NotificationMessage();
-        notificationMessage.setMessageType(MessageType.COMMENT_MESSAGE);
-        notificationMessage.setReading(Reading.UN_READ);
-        notificationMessage.setSenderId(SecurityUtils.getAuthenticatedUser().getId());
-        notificationMessage.setSenderName(SecurityUtils.getAuthenticatedUser().getNickname());
-        notificationMessage.setSenderAvatar(SecurityUtils.getAuthenticatedUser().getAvatar());
-        notificationMessage.setRecipientId(post.getUserId());
-        notificationMessage.setName(post.getTitle());
-        notificationMessage.setContent(record.getContent());
-        notificationMessageRepo.save(notificationMessage);
-        return commentRepo.save(record);
+        record = commentRepo.save(record);
 
+        if (!post.getUserId().equals(SecurityUtils.getAuthenticatedUser().getId())) {
+            messageService.sendCommentMsg(SecurityUtils.getAuthenticatedUser().getId(), post.getUserId(), record, post);
+        }
+
+        return record;
     }
 
     public void del(Long id) {
@@ -83,6 +79,7 @@ public class CommentService {
 
     public void like(Long commentId, boolean dislike) {
         Comment comment = commentRepo.findById(commentId).orElseThrow(new BusinessException("无记录"));
+        Post post = postRepo.findById(comment.getPostId()).orElseThrow(new BusinessException("无记录"));
         LikeRecord likeRecord = likeRecordRepo
                 .findByCommentIdAndUserId(commentId, SecurityUtils.getAuthenticatedUser().getId());
         if (likeRecord == null) {
@@ -96,6 +93,8 @@ public class CommentService {
                 comment.setDislikeNum(comment.getDislikeNum() + 1);
             } else {
                 comment.setLikeNum(comment.getLikeNum() + 1);
+                messageService.sendLikeMsg(SecurityUtils.getAuthenticatedUser().getId(), comment.getUserId(),
+                        "comment", post, comment);
             }
         } else {
             if (dislike == likeRecord.isDislike()) {
@@ -117,15 +116,6 @@ public class CommentService {
                 likeRecordRepo.save(likeRecord);
             }
         }
-        NotificationMessage notificationMessage = new NotificationMessage();
-        notificationMessage.setMessageType(MessageType.LIKE_RECORD_MESSAGE);
-        notificationMessage.setReading(Reading.UN_READ);
-        notificationMessage.setSenderId(SecurityUtils.getAuthenticatedUser().getId());
-        notificationMessage.setRecipientId(comment.getUserId());
-        notificationMessage.setSenderName(SecurityUtils.getAuthenticatedUser().getNickname());
-        notificationMessage.setSenderAvatar(SecurityUtils.getAuthenticatedUser().getAvatar());
-        notificationMessage.setContent(comment.getContent());
-        notificationMessageRepo.save(notificationMessage);
         commentRepo.save(comment);
     }
 

+ 0 - 14
src/main/java/com/izouma/jmrh/service/CommunicationRecordService.java

@@ -1,14 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.domain.CommunicationRecord;
-import com.izouma.jmrh.repo.CommunicationRecordRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-@Service
-@AllArgsConstructor
-public class CommunicationRecordService {
-
-    private CommunicationRecordRepo communicationRecordRepo;
-
-}

+ 142 - 45
src/main/java/com/izouma/jmrh/service/ConversationService.java

@@ -1,62 +1,159 @@
 package com.izouma.jmrh.service;
 
-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.MessageType;
-import com.izouma.jmrh.enums.Reading;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.izouma.jmrh.domain.*;
+import com.izouma.jmrh.dto.ConversationDTO;
+import com.izouma.jmrh.enums.*;
 import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.ConversationRepo;
-import com.izouma.jmrh.repo.NotificationMessageRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
+import com.izouma.jmrh.repo.*;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang.ArrayUtils;
 import org.springframework.stereotype.Service;
 
+import java.util.*;
+import java.util.stream.Collectors;
+
 @Service
 @AllArgsConstructor
 public class ConversationService {
+    private ConversationRepo            conversationRepo;
+    private DockingRecordRepo           dockingRecordRepo;
+    private UserRepo                    userRepo;
+    private ResourceSupplyAndDemandRepo resourceSupplyAndDemandRepo;
+    private MessageRepo                 messageRepo;
+    private MessageService              messageService;
+    private OrgInfoRepo                 orgInfoRepo;
+
+    public void create(Long userId, Long sndId, String orgName, String contactName, String contactPhone,
+                       String email, String content) {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+        ResourceSupplyAndDemand snd = resourceSupplyAndDemandRepo.findById(sndId)
+                .orElseThrow(new BusinessException("供需不存在"));
+        if (userId.equals(snd.getPublishersId())) {
+            throw new BusinessException("不能和自己对接");
+        }
+        Contact contact = new Contact(orgName, contactName, contactPhone, email);
+        String sessionId = snd.getPublishersId() > userId ?
+                (userId + "-" + snd.getPublishersId()) : (snd.getPublishersId() + "-" + userId);
+
 
-    private ConversationRepo conversationRepo;
-    private NotificationMessageRepo notificationMessageRepo;
+        Conversation conversationFrom = conversationRepo
+                .findFirstByUserIdAndToUserIdOrderByIdDesc(userId, snd.getPublishersId());
+        if (conversationFrom == null) {
+            conversationFrom = Conversation.builder()
+                    .sessionId(sessionId)
+                    .userId(userId)
+                    .toUserId(snd.getPublishersId())
+                    .orgId(snd.getOrgId())
+                    .contact(contact)
+                    .type(ConversationType.DOCKING)
+                    .build();
+        }
+        conversationFrom.setOrgId(snd.getOrgId());
+        conversationFrom.setContact(contact);
+        conversationRepo.save(conversationFrom);
+
+        Conversation conversationTo = conversationRepo
+                .findFirstByUserIdAndToUserIdOrderByIdDesc(snd.getPublishersId(), userId);
+        if (conversationTo == null) {
+            conversationTo = Conversation.builder()
+                    .sessionId(sessionId)
+                    .userId(snd.getPublishersId())
+                    .toUserId(userId)
+                    .orgId(snd.getOrgId())
+                    .contact(contact)
+                    .type(ConversationType.PUBLISH)
+                    .build();
+        }
+        conversationTo.setContact(contact);
+        conversationTo.setOrgId(snd.getOrgId());
+        conversationRepo.save(conversationTo);
 
+        messageService.send(userId, snd.getPublishersId(), sessionId, MessageType.TEXT, content);
+        messageService.send(userId, snd.getPublishersId(), sessionId, MessageType.SND, JSON.toJSONString(snd));
 
-    public Conversation create(Conversation record) {
-        User user = SecurityUtils.getAuthenticatedUser();
-        if (record.getId() != null) {
-            Conversation orig = conversationRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return conversationRepo.save(orig);
+        DockingRecord dockingRecordFrom = dockingRecordRepo
+                .findFirstByUserIdAndSndIdAndRoleAndStatusInOrderByIdDesc(userId, sndId, DockingRole.DOCKING,
+                        Arrays.asList(DockingStatus.PENDING, DockingStatus.IN_PROGRESS));
+        if (dockingRecordFrom == null) {
+            dockingRecordFrom = DockingRecord.builder()
+                    .userId(userId)
+                    .orgId(snd.getOrgId())
+                    .sndId(sndId)
+                    .role(DockingRole.DOCKING)
+                    .status(DockingStatus.PENDING)
+                    .build();
         }
-        Conversation conversation = conversationRepo.findByResourceSupplyDemandAndConversationUserId(record.getResourceSupplyDemand(), user.getId());
-        if (conversation != null) {
-            //对接终止状态恢复对接
-            if (conversation.getStatus().equals(ConversationStatus.TERMINATION)) {
-                ObjUtils.merge(conversation, record);
-                conversation.setStatus(ConversationStatus.CONDUCTED);
-                conversation.setPublisherVisible(true);
-                conversation.setUserVisible(true);
-                return conversationRepo.save(conversation);
-            } else {
-                throw new BusinessException("不能重复对接");
+        dockingRecordFrom.setConversationId(conversationFrom.getId());
+        dockingRecordFrom.setContact(contact);
+        dockingRecordRepo.save(dockingRecordFrom);
+
+        DockingRecord dockingRecordTo = dockingRecordRepo
+                .findFirstByUserIdAndSndIdAndRoleAndStatusInOrderByIdDesc(snd
+                                .getPublishersId(), sndId, DockingRole.PUBLISH,
+                        Arrays.asList(DockingStatus.PENDING, DockingStatus.IN_PROGRESS));
+        if (dockingRecordTo == null) {
+            dockingRecordTo = DockingRecord.builder()
+                    .userId(snd.getPublishersId())
+                    .orgId(snd.getOrgId())
+                    .sndId(sndId)
+                    .role(DockingRole.PUBLISH)
+                    .status(DockingStatus.PENDING)
+                    .build();
+        }
+        dockingRecordTo.setConversationId(conversationTo.getId());
+        dockingRecordTo.setContact(contact);
+        dockingRecordRepo.save(dockingRecordTo);
+    }
+
+    public ConversationDTO get(Long id) {
+        return conversationRepo.get(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    public List<ConversationDTO> my(Long userId) {
+        try {
+            conversationRepo.saveAll(Arrays.asList(Conversation.builder()
+                            .sessionId("like-" + userId)
+                            .userId(userId)
+                            .type(ConversationType.LIKE)
+                            .build(),
+                    Conversation.builder()
+                            .sessionId("comment-" + userId)
+                            .userId(userId)
+                            .type(ConversationType.COMMENT)
+                            .build(),
+                    Conversation.builder()
+                            .sessionId("sys-" + userId)
+                            .userId(userId)
+                            .type(ConversationType.SYS)
+                            .build()
+            ));
+        } catch (Exception ignored) {
+        }
+        Map<Integer, ConversationDTO> head = new HashMap<>();
+        List<ConversationDTO> list = conversationRepo.my(userId);
+        Iterator<ConversationDTO> it = list.iterator();
+        while (it.hasNext()) {
+            ConversationDTO dto = it.next();
+            if (dto.getType() == ConversationType.LIKE) {
+                it.remove();
+                head.put(0, dto);
+            } else if (dto.getType() == ConversationType.COMMENT) {
+                it.remove();
+                head.put(1, dto);
+            } else if (dto.getType() == ConversationType.SYS) {
+                it.remove();
+                head.put(2, dto);
+            }
+            if (head.size() == 3) {
+                break;
             }
         }
-        NotificationMessage notificationMessage = new NotificationMessage();
-        record.setConversationUserId(SecurityUtils.getAuthenticatedUser().getId());
-        conversation.setPublisherVisible(true);
-        conversation.setUserVisible(true);
-        record.setStatus(ConversationStatus.AWAIT);
-        Conversation save = conversationRepo.save(record);
-        //添加通知消息
-        notificationMessage.setReading(Reading.UN_READ);
-        notificationMessage.setMessageType(MessageType.CONVERSATION_MESSAGE);
-        notificationMessage.setContent(record.getResourceSupplyDemand().getName());
-        notificationMessage.setRecipientId(record.getResourceSupplyDemand().getPublishersId());
-        notificationMessage.setSenderId(save.getConversationUserId());
-        notificationMessage.setSenderName(SecurityUtils.getAuthenticatedUser().getNickname());
-        notificationMessage.setSenderAvatar(SecurityUtils.getAuthenticatedUser().getAvatar());
-        notificationMessage.setConversationId(save.getId());
-        return save;
+        list.addAll(0, head.entrySet().stream()
+                .sorted(Map.Entry.comparingByKey())
+                .map(Map.Entry::getValue)
+                .collect(Collectors.toList()));
+        return list;
     }
 }

+ 7 - 0
src/main/java/com/izouma/jmrh/service/DockingRecordService.java

@@ -1,6 +1,8 @@
 package com.izouma.jmrh.service;
 
 import com.izouma.jmrh.domain.DockingRecord;
+import com.izouma.jmrh.enums.DockingStatus;
+import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.DockingRecordRepo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
@@ -11,4 +13,9 @@ public class DockingRecordService {
 
     private DockingRecordRepo dockingRecordRepo;
 
+    public DockingRecord updateStatue(Long id, DockingStatus status) {
+        DockingRecord dockingRecord = dockingRecordRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+        dockingRecord.setStatus(status);
+        return dockingRecordRepo.save(dockingRecord);
+    }
 }

+ 0 - 34
src/main/java/com/izouma/jmrh/service/FinancingNeedsService.java

@@ -1,34 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.dto.FinancingDTO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.repo.FinancingNeedsRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-@AllArgsConstructor
-public class FinancingNeedsService {
-
-    private FinancingNeedsRepo financingNeedsRepo;
-    public List<FinancingDTO> getMyAllCount(WebDTO webDTO, Pageable pageable){
-        List<FinancingDTO> voList=new ArrayList<>();
-/*        Page<Map<String,Object>> myAllCount = financingNeedsRepo.getMyAllCount(webDTO, pageable);
-        for (Object[] obj:myAllCount.getContent()
-        ) {
-            FinancingDTO financingDTO = new FinancingDTO();
-            financingDTO.setId(((BigInteger)obj[0]).longValue());
-            financingDTO.setName((String) obj[1]);
-            financingDTO.setTypeName((String) obj[2]);
-            financingDTO.setStageName((String) obj[3]);
-            financingDTO.setPlanMoney((String) obj[4]);
-            financingDTO.setCount(((BigInteger)obj[5]).longValue());
-            voList.add(financingDTO);
-        }*/
-        return voList;
-    }
-}

+ 91 - 35
src/main/java/com/izouma/jmrh/service/MessageService.java

@@ -1,51 +1,107 @@
 package com.izouma.jmrh.service;
 
 import com.izouma.jmrh.domain.*;
+import com.izouma.jmrh.dto.MessageDTO;
+import com.izouma.jmrh.enums.MessageType;
+import com.izouma.jmrh.enums.PostType;
 import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.*;
+import com.izouma.jmrh.utils.JsonUtils;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.util.Optional;
+
 @Service
 @Slf4j
 @AllArgsConstructor
 public class MessageService {
-    private MessageRepo messageRepo;
-    private ProductRepo productRepo;
-    private ArtProductRepo artProductRepo;
-    private FinancingNeedsRepo financingNeedsRepo;
-    private ProductNeedRepo productNeedRepo;
-    private ArtNeedRepo artNeedRepo;
-    private TresourceRepo tresourceRepo;
-
-    public Message getMessage(Message message){
-        if (message.getArtProduct()!=null){
-            ArtProduct artProduct = artProductRepo.findById(message.getArtProduct().getId()).orElseThrow(new BusinessException("无记录"));
-            artProductRepo.updateStateById(message.getArtProduct());
-            message.setMyUser(artProduct.getUser());
-        }else if (message.getFinancingNeeds()!=null){
-            FinancingNeeds financingNeeds = financingNeedsRepo.findById(message.getFinancingNeeds().getId()).orElseThrow(new BusinessException("无记录"));
-            message.setMyUser(financingNeeds.getUser());
-            financingNeedsRepo.updateStateById(message.getFinancingNeeds());
-        }else if (message.getProductNeed()!=null){
-            ProductNeed productNeed = productNeedRepo.findById(message.getProductNeed().getId()).orElseThrow(new BusinessException("无记录"));
-            message.setMyUser(productNeed.getUser());
-            productNeedRepo.updateStateById(message.getProductNeed());
-        }else if (message.getArtNeed()!=null){
-            ArtNeed artNeed = artNeedRepo.findById(message.getArtNeed().getId()).orElseThrow(new BusinessException("无记录"));
-            User user = artNeed.getUser();
-            artNeedRepo.updateStateById(message.getArtNeed());
-            message.setMyUser(user);
-        }else if (message.getTresource()!=null){
-            Tresource tresource = tresourceRepo.findById(message.getTresource().getId()).orElseThrow(new BusinessException("无记录"));
-            message.setMyUser(tresource.getUser());
-            tresourceRepo.updateStateById(message.getTresource());
-        }else if (message.getProduct()!=null){
-            Product product = productRepo.findById(message.getProduct().getId()).orElseThrow(new BusinessException("无记录"));
-            message.setMyUser(product.getUser());
-            productRepo.updateStateById(message.getProduct());
+    private MessageRepo      messageRepo;
+    private ConversationRepo conversationRepo;
+    private UserRepo         userRepo;
+
+    public Page<MessageDTO> all(String sessionId, MessageType type, Pageable pageable) {
+        if (type != null) {
+            return messageRepo.all(sessionId, type, pageable);
+        }
+        return messageRepo.all(sessionId, pageable);
+    }
+
+    public void readAll(Long userId, String sessionId) {
+        if (StringUtils.isNotEmpty(sessionId)) {
+            messageRepo.readAll(sessionId, userId);
+        } else {
+            messageRepo.readAll(userId);
+        }
+    }
+
+    public void send(Long userId, Long toUserId, String sessionId, MessageType type, String content) {
+        String lastMessage;
+        switch (type) {
+            case TEXT:
+                lastMessage = content.length() > 20 ? content.substring(0, 20) + "……" : content;
+                break;
+            case SND:
+                lastMessage = "[资源供需]";
+                break;
+            default:
+                lastMessage = "";
         }
-        return message;
+        conversationRepo.updateConversation(sessionId, LocalDateTime.now(), lastMessage);
+        messageRepo.save(Message.builder()
+                .userId(userId)
+                .toUserId(toUserId)
+                .sessionId(sessionId)
+                .type(type)
+                .content(content)
+                .read(false)
+                .build());
+    }
+
+    public void sendCommentMsg(Long fromUserId, Long toUserId, Comment comment, Post post) {
+        User user = userRepo.findById(fromUserId).orElseThrow(new BusinessException("用户不存在"));
+        String sessionId = "comment-" + toUserId;
+        conversationRepo.updateConversation(sessionId, LocalDateTime.now(), "");
+        messageRepo.save(Message.builder()
+                .userId(null)
+                .toUserId(toUserId)
+                .sessionId(sessionId)
+                .type(MessageType.COMMENT)
+                .postId(post.getId())
+                .content(new JsonUtils.Builder()
+                        .add("nickname", post.getType() == PostType.OFFICIAL ? "官方平台" : user.getNickname())
+                        .add("avatar", post.getType() == PostType.OFFICIAL
+                                ? "https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/application/icon/guan.png"
+                                : user.getAvatar())
+                        .add("message", comment.getContent())
+                        .build())
+                .read(false)
+                .build());
+    }
+
+    public void sendLikeMsg(Long fromUserId, Long toUserId, String type, Post post, Comment comment) {
+        User user = userRepo.findById(fromUserId).orElseThrow(new BusinessException("用户不存在"));
+        String sessionId = "like-" + toUserId;
+        conversationRepo.updateConversation(sessionId, LocalDateTime.now(), "");
+        messageRepo.save(Message.builder()
+                .userId(null)
+                .toUserId(toUserId)
+                .sessionId(sessionId)
+                .type(MessageType.LIKE)
+                .postId(Optional.ofNullable(post).map(BaseEntity::getId).orElse(null))
+                .commentId(Optional.ofNullable(comment).map(BaseEntity::getId).orElse(null))
+                .content(new JsonUtils.Builder()
+                        .add("nickname", user.getNickname())
+                        .add("avatar", user.getAvatar())
+                        .add("message", comment == null ? "赞了我的话题" : "赞了我的回复")
+                        .add("type", type)
+                        .build())
+                .read(false)
+                .build());
     }
 }

+ 0 - 12
src/main/java/com/izouma/jmrh/service/OrgInfoService.java

@@ -14,23 +14,11 @@ import java.util.Map;
 public class OrgInfoService {
 
     private OrgInfoRepo orgInfoRepo;
-    private ProductRepo productRepo;
-    private ArtProductRepo artProductRepo;
-    private FinancingNeedsRepo financingNeedsRepo;
-    private ProductNeedRepo productNeedRepo;
-    private ArtNeedRepo artNeedRepo;
-    private TresourceRepo tresourceRepo;
 
     public Map<String, Object> getAllCount(Long id){
         HashMap<String, Object> map = new HashMap<>();
         OrgInfo orgInfo = orgInfoRepo.findById(id).orElseThrow(new BusinessException("无记录"));
         map.put("orgInfo",orgInfo);
-        map.put("productCount", productRepo.countAllByAndOrgInfo(orgInfo));
-        map.put("artProductCount", artProductRepo.countAllByAndOrgInfo(orgInfo));
-        map.put("financingNeedsCount",financingNeedsRepo.countAllByAndOrgInfo(orgInfo));
-        map.put("productNeedCount", productNeedRepo.countAllByAndOrgInfo(orgInfo));
-        map.put("artNeedCount", artNeedRepo.countAllByAndOrgInfo(orgInfo));
-        map.put("tResourceCount",tresourceRepo.countAllByAndOrgInfo(orgInfo));
         return map;
     }
 

+ 3 - 0
src/main/java/com/izouma/jmrh/service/PostService.java

@@ -35,6 +35,7 @@ public class PostService {
     private LikeRecordRepo likeRecordRepo;
     private UserRepo       userRepo;
     private CommentRepo    commentRepo;
+    private MessageService messageService;
 
     public Post save(Post record) {
         if (record.getId() == null) {
@@ -94,6 +95,8 @@ public class PostService {
                 post.setDislikeNum(post.getDislikeNum() + 1);
             } else {
                 post.setLikeNum(post.getLikeNum() + 1);
+                messageService.sendLikeMsg(SecurityUtils.getAuthenticatedUser().getId(), post.getUserId(),
+                        "post", post, null);
             }
         } else {
             if (dislike == likeRecord.isDislike()) {

+ 0 - 26
src/main/java/com/izouma/jmrh/service/ProductNeedService.java

@@ -1,26 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.dto.ArtNeedVO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.repo.ProductNeedRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-@Service
-@AllArgsConstructor
-public class ProductNeedService {
-
-    private ProductNeedRepo productNeedRepo;
-    public Page<Map<String,Object>> getMyAllCount(WebDTO productNeed, Pageable pageable){
-        List<ArtNeedVO> voList=new ArrayList<>();
-        Page<Map<String,Object>> myAllCount = productNeedRepo.getMyAllCount(productNeed, pageable);
-
-        return myAllCount;
-    }
-}

+ 0 - 56
src/main/java/com/izouma/jmrh/service/ProductService.java

@@ -1,56 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.dto.ArtProductDTO;
-import com.izouma.jmrh.dto.ProductDTO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.repo.ArtProductRepo;
-import com.izouma.jmrh.repo.ProductRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.math.BigInteger;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-@Service
-@AllArgsConstructor
-public class ProductService {
-
-    private ProductRepo productRepo;
-    private ArtProductRepo artProductRepo;
-    public List<ArtProductDTO> getDataCount(){
-        List<ArtProductDTO> voList=new ArrayList<>();
-        List<Object[]> productList = productRepo.getDataCount();
-        List<Object[]> artList = artProductRepo.getDataCount();
-        for (Object[] art:artList) {
-            ArtProductDTO artProductDTO = new ArtProductDTO();
-            artProductDTO.setCreatedAt(((Timestamp) art[0]).toLocalDateTime().toLocalDate());
-            artProductDTO.setArtCount(((BigInteger)art[1]).longValue());
-            for (Object[] product:productList) {
-                if (artProductDTO.getCreatedAt()==((Timestamp) product[0]).toLocalDateTime().toLocalDate()){
-                    artProductDTO.setProductCount(((BigInteger)product[1]).longValue());
-                    productList.remove(product);
-                }
-            }
-            voList.add(artProductDTO);
-        }
-        for (Object[] product:productList) {
-            ArtProductDTO artProductDTO = new ArtProductDTO();
-            artProductDTO.setCreatedAt(((Timestamp) product[0]).toLocalDateTime().toLocalDate());
-            artProductDTO.setProductCount(((BigInteger)product[1]).longValue());
-            voList.add(artProductDTO);
-        }
-        return voList;
-    };
-
-    public Page<Map<String,Object>> getMyAllCount(WebDTO product, Pageable pageable){
-        List<ProductDTO> voList=new ArrayList<>();
-        Page<Map<String,Object>> myAllCount = productRepo.getMyAllCount(product, pageable);
-
-        return myAllCount;
-    }
-}

+ 0 - 14
src/main/java/com/izouma/jmrh/service/QuestionService.java

@@ -1,14 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.domain.Question;
-import com.izouma.jmrh.repo.QuestionRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-@Service
-@AllArgsConstructor
-public class QuestionService {
-
-    private QuestionRepo questionRepo;
-
-}

+ 136 - 34
src/main/java/com/izouma/jmrh/service/ResourceSupplyAndDemandService.java

@@ -1,54 +1,117 @@
 package com.izouma.jmrh.service;
 
+import com.izouma.jmrh.domain.DockingRecord;
+import com.izouma.jmrh.domain.OrgInfo;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
+import com.izouma.jmrh.dto.PageQuery;
+import com.izouma.jmrh.dto.ResSnDAndPropertyDTO;
 import com.izouma.jmrh.dto.SndDTO;
+import com.izouma.jmrh.enums.AuditStatus;
+import com.izouma.jmrh.enums.DockingRole;
+import com.izouma.jmrh.enums.DockingStatus;
 import com.izouma.jmrh.enums.ResSnDType;
+import com.izouma.jmrh.exception.BusinessException;
+import com.izouma.jmrh.repo.DockingRecordRepo;
+import com.izouma.jmrh.repo.OrgInfoRepo;
+import com.izouma.jmrh.repo.ResSnDPropertyRepo;
 import com.izouma.jmrh.repo.ResourceSupplyAndDemandRepo;
+import com.izouma.jmrh.utils.ObjUtils;
+import com.izouma.jmrh.utils.SecurityUtils;
+import com.izouma.jmrh.web.BaseController;
 import lombok.AllArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestBody;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.*;
+import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
 public class ResourceSupplyAndDemandService {
 
     private ResourceSupplyAndDemandRepo resourceSupplyAndDemandRepo;
+    private DockingRecordRepo           dockingRecordRepo;
+    private OrgInfoRepo                 orgInfoRepo;
+    private ResSnDPropertyRepo          resSnDPropertyRepo;
 
-    public List<Map<String, Object>> getDataCountList(String productType, String techType) {
-        List<Map<String, Object>> productCountList = resourceSupplyAndDemandRepo.getProductCountList(productType);
-        List<Map<String, Object>> techCountList = resourceSupplyAndDemandRepo.getTechCountList(techType);
-        List<Map<String, Object>> voList = new ArrayList<>();
-        for (Map<String, Object> product : productCountList
-        ) {
-            Map<String, Object> map = new HashMap<>();
-            map.putAll(product);
-            if (techCountList != null && techCountList.size() > 0) {
-                for (Map<String, Object> tech : techCountList
-                ) {
-                    if (product.get("createdAt").equals(tech.get("createdAt"))) {
-                        map.put("techCount", tech.get("techCount"));
-                        techCountList.remove(tech);
-                        break;
-                    }
-                }
-            }
-            voList.add(map);
+    public ResSnDAndPropertyDTO save(ResSnDAndPropertyDTO record) {
+        if (record.getResSnD() == null || record.getPropertyList() == null) {
+            throw new BusinessException("信息不完善");
+        }
+        if (record.getResSnD().getId() != null) {
+            ResourceSupplyAndDemand orig = resourceSupplyAndDemandRepo.findById(record.getResSnD().getId())
+                    .orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            record.setResSnD(resourceSupplyAndDemandRepo.save(orig));
+        } else {
+            record.getResSnD().setStatus(AuditStatus.PENDING);
+            record.getResSnD().setPublishersId(SecurityUtils.getAuthenticatedUser().getId());
+            record.getResSnD().setOrgId(SecurityUtils.getAuthenticatedUser().getOrgInfo().getId());
+            record.setResSnD(resourceSupplyAndDemandRepo.save(record.getResSnD()));
         }
-        if (techCountList != null && techCountList.size() > 0) {
-            techCountList.forEach(tech -> {
-                tech.put("productCount", 0);
-                productCountList.add(tech);
-            });
+        resSnDPropertyRepo.deleteByResSnDId(record.getResSnD().getId());
+        record.getPropertyList().forEach(item -> {
+            item.setId(null);
+            item.setResSnDId(record.getResSnD().getId());
+            resSnDPropertyRepo.save(item);
+        });
+        return record;
+    }
+
+    public SndDTO get(Long id, Long userId) {
+        ResourceSupplyAndDemand snd = resourceSupplyAndDemandRepo.findById(id)
+                .orElseThrow(new BusinessException("无记录"));
+        OrgInfo orgInfo = orgInfoRepo.findById(snd.getOrgId())
+                .orElseThrow(new BusinessException("无记录"));
+        SndDTO dto = toDTO(snd, userId);
+        dto.setOrgInfo(orgInfo);
+        return dto;
+    }
+
+    public Page<SndDTO> allDTO(Long userId, PageQuery pageQuery) {
+        Map<String, String> property = (Map<String, String>) pageQuery.getQuery().get("property");
+        Specification<ResourceSupplyAndDemand> specification =
+                BaseController.toSpecification(pageQuery, ResourceSupplyAndDemand.class);
+        if (property != null && !property.isEmpty()) {
+            specification = specification
+                    .and((Specification<ResourceSupplyAndDemand>) (root, criteriaQuery, criteriaBuilder) -> {
+                        List<Predicate> or = new ArrayList<>();
+                        property.forEach((name, value) -> {
+                            or.add(criteriaBuilder.and(
+                                    criteriaBuilder.equal(root.join("resSnDPropertyList").get("name"), name),
+                                    criteriaBuilder.equal(root.join("resSnDPropertyList").get("value"), value)
+                            ));
+                        });
+                        return criteriaBuilder.or(or.toArray(new Predicate[0]));
+                    });
         }
+        Page<ResourceSupplyAndDemand> page = resourceSupplyAndDemandRepo
+                .findAll(specification, BaseController.toPageRequest(pageQuery));
+        return toDTOPage(page, userId);
+    }
 
-        return voList;
+    public Page<SndDTO> my(Long userId, List<ResSnDType> types, Pageable pageable) {
+        Page<ResourceSupplyAndDemand> page = resourceSupplyAndDemandRepo
+                .findAll((Specification<ResourceSupplyAndDemand>) (root, criteriaQuery, criteriaBuilder) -> {
+                    List<Predicate> predicates = new ArrayList<>();
+                    predicates.add(criteriaBuilder.equal(root.get("publishersId"), userId));
+                    if (types != null && !types.isEmpty()) {
+                        predicates.add(root.get("type").in(types));
+                    }
+                    return criteriaQuery.where(predicates.toArray(new Predicate[0]))
+                            .orderBy(criteriaBuilder.desc(root.get("createdAt")))
+                            .getRestriction();
+                }, pageable);
+        return toDTOPage(page, userId);
     }
 
     public Page<SndDTO> myCollect(Long userId, List<ResSnDType> types, Pageable pageable) {
@@ -58,10 +121,49 @@ public class ResourceSupplyAndDemandService {
         } else {
             page = resourceSupplyAndDemandRepo.myCollect(userId, types, pageable);
         }
-        return page.map(snd -> {
-            SndDTO dto = new SndDTO();
-            BeanUtils.copyProperties(snd, dto);
-            return dto;
-        });
+        return toDTOPage(page, userId);
+    }
+
+    public Page<SndDTO> myDocking(Long userId, DockingRole role, List<ResSnDType> types, Pageable pageable) {
+        Page<SndDTO> page;
+        if (types != null && !types.isEmpty()) {
+            page = resourceSupplyAndDemandRepo.myDockingSnd(userId, role, types, pageable);
+        } else {
+            page = resourceSupplyAndDemandRepo.myDockingSnd(userId, role, pageable);
+        }
+        addOrgInfo(page);
+        return page;
+    }
+
+    private Page<SndDTO> toDTOPage(Page<ResourceSupplyAndDemand> page, Long userId) {
+        Page<SndDTO> dtoPage = page.map(snd -> toDTO(snd, userId));
+        addOrgInfo(dtoPage);
+        return dtoPage;
+    }
+
+    private SndDTO toDTO(ResourceSupplyAndDemand snd, Long userId) {
+        SndDTO dto = new SndDTO();
+        BeanUtils.copyProperties(snd, dto);
+        if (userId != null && !snd.getPublishersId().equals(userId)) {
+            dto.setDockingStatus(Optional.ofNullable(dockingRecordRepo
+                    .findFirstByUserIdAndSndIdAndRoleOrderByIdDesc(userId, snd.getId(), DockingRole.DOCKING))
+                    .map(DockingRecord::getStatus).orElse(null));
+        }
+        return dto;
+    }
+
+    private void addOrgInfo(Page<SndDTO> page) {
+        Set<Long> orgIds = page.stream().map(SndDTO::getOrgId).filter(Objects::nonNull).collect(Collectors.toSet());
+        List<OrgInfo> orgInfos = new ArrayList<>();
+        if (!orgIds.isEmpty()) {
+            orgInfos = orgInfoRepo.findAllById(orgIds);
+        }
+        for (SndDTO dto : page) {
+            dto.setOrgInfo(orgInfos
+                    .stream()
+                    .filter(orgInfo -> orgInfo.getId().equals(dto.getOrgId()))
+                    .findFirst()
+                    .orElse(null));
+        }
     }
 }

+ 0 - 14
src/main/java/com/izouma/jmrh/service/TresourceService.java

@@ -1,14 +0,0 @@
-package com.izouma.jmrh.service;
-
-import com.izouma.jmrh.domain.Tresource;
-import com.izouma.jmrh.repo.TresourceRepo;
-import lombok.AllArgsConstructor;
-import org.springframework.stereotype.Service;
-
-@Service
-@AllArgsConstructor
-public class TresourceService {
-
-    private TresourceRepo tresourceRepo;
-
-}

+ 0 - 98
src/main/java/com/izouma/jmrh/web/ArtNeedController.java

@@ -1,98 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.*;
-import com.izouma.jmrh.dto.ArtProductDTO;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.service.ArtNeedService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.ArtNeedRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.data.domain.Pageable;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/artNeed")
-@AllArgsConstructor
-@ApiOperation("技术需求")
-public class ArtNeedController extends BaseController {
-    private ArtNeedService artNeedService;
-    private ArtNeedRepo artNeedRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public ArtNeed save(@RequestBody ArtNeed record) {
-        if (record.getId() != null) {
-            ArtNeed orig = artNeedRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return artNeedRepo.save(orig);
-        }
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setState(0L);
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return artNeedRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<ArtNeed> all(PageQuery pageQuery) {
-        return artNeedRepo.findAll(toSpecification(pageQuery, ArtNeed.class), toPageRequest(pageQuery));
-    }
-
-    @GetMapping("/get/{id}")
-    public ArtNeed get(@PathVariable Long id) {
-        return artNeedRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        artNeedRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<ArtNeed> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-    @ApiOperation("首页获取最新发布技术需求数量列表")
-    @PostMapping("/count")
-    public List<ArtProductDTO> getCount() {
-        return artNeedService.getDataCount();
-    }
-
-    @ApiOperation("个人中心/我发布的技术需求")
-    @GetMapping("/reqAllCount")
-    public Page<Map<String,Object>> reqAllCount(WebDTO artNeed, Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setResUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = artNeedRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return artNeedRepo.count(toSpecification(pageQuery, ArtNeed.class));
-    }
-
-    @ApiOperation("个人中心/我对接的技术需求")
-    @GetMapping("/resAllCount")
-    public Page<Map<String,Object>> resAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setReqUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = artNeedRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-
-}
-

+ 0 - 90
src/main/java/com/izouma/jmrh/web/ArtProductController.java

@@ -1,90 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.ArtProduct;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.service.ArtProductService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.ArtProductRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/artProduct")
-@AllArgsConstructor
-@ApiOperation("技术产品")
-public class ArtProductController extends BaseController {
-    private ArtProductService artProductService;
-    private ArtProductRepo artProductRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public ArtProduct save(@RequestBody ArtProduct record) {
-        if (record.getId() != null) {
-            ArtProduct orig = artProductRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return artProductRepo.save(orig);
-        }
-        record.setState(0L);
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return artProductRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<ArtProduct> all(PageQuery pageQuery) {
-        return artProductRepo.findAll(toSpecification(pageQuery, ArtProduct.class), toPageRequest(pageQuery));
-    }
-
-    @GetMapping("/get/{id}")
-    public ArtProduct get(@PathVariable Long id) {
-        return artProductRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        artProductRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<ArtProduct> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return artProductRepo.count(toSpecification(pageQuery, ArtProduct.class));
-    }
-
-    @ApiOperation("个人中心/我对接先进技术")
-    @GetMapping("/resAllCount")
-    public  Page<Map<String,Object>> resAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setReqUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = artProductService.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-    @ApiOperation("个人中心/我发布的先进技术")
-    @GetMapping("/reqAllCount")
-    public  Page<Map<String,Object>> reqAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setResUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = artProductService.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-}
-

+ 0 - 2
src/main/java/com/izouma/jmrh/web/AuditHistoryController.java

@@ -1,6 +1,5 @@
 package com.izouma.jmrh.web;
 import com.izouma.jmrh.domain.AuditHistory;
-import com.izouma.jmrh.repo.ArtNeedRepo;
 import com.izouma.jmrh.service.AuditHistoryService;
 import com.izouma.jmrh.dto.PageQuery;
 import com.izouma.jmrh.exception.BusinessException;
@@ -22,7 +21,6 @@ import java.util.List;
 public class AuditHistoryController extends BaseController {
     private AuditHistoryService auditHistoryService;
     private AuditHistoryRepo auditHistoryRepo;
-    private ArtNeedRepo artNeedRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")

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

@@ -4,7 +4,6 @@ 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;
@@ -46,6 +45,60 @@ 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> 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) {
         return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
@@ -319,134 +372,6 @@ 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) {
@@ -563,70 +488,4 @@ public class BaseController {
             return criteriaQuery.where(Pre_And, Pre_Or).getRestriction();
         };
     }
-
-    public <T> Specification<T> getMessage(Message message) {
-        return (Specification<T>) (root, criteriaQuery, criteriaBuilder) -> {
-            List<Predicate> and = new ArrayList<>();
-            if (message.getProduct() != null) {
-                Join<Product, Message> join = root.join("product", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                Product product = objectMapper.convertValue(message.getProduct(), Product.class);
-                if (product.getId() != null && product.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                }
-            }
-            if (message.getArtProduct() != null) {
-                Join<ArtProduct, Message> join = root.join("artProduct", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                ArtProduct product = objectMapper.convertValue(message.getArtProduct(), ArtProduct.class);
-                if (product.getId() != null && product.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), product.getId()));
-                }
-            }
-            if (message.getProductNeed() != null) {
-
-                Join<ProductNeed, Message> join = root.join("productNeed", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                ProductNeed productNeed = objectMapper.convertValue(message.getProductNeed(), ProductNeed.class);
-                if (productNeed.getId() != null && productNeed.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), productNeed.getId()));
-                }
-            }
-            if (message.getFinancingNeeds() != null) {
-                Join<FinancingNeeds, Message> join = root.join("financingNeeds", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                FinancingNeeds financingNeeds = objectMapper
-                        .convertValue(message.getFinancingNeeds(), FinancingNeeds.class);
-                if (financingNeeds.getId() != null && financingNeeds.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), financingNeeds.getId()));
-                }
-            }
-            if (message.getArtNeed() != null) {
-                Join<ArtNeed, Message> join = root.join("artNeed", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                ArtNeed artNeed = objectMapper.convertValue(message.getArtNeed(), ArtNeed.class);
-                if (artNeed.getId() != null && artNeed.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), artNeed.getId()));
-                }
-            }
-            if (message.getUser() != null) {
-                Join<User, Message> join = root.join("user", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                User user = objectMapper.convertValue(message.getUser(), User.class);
-                if (user.getId() != null && user.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), user.getId()));
-                }
-            }
-            if (message.getMyUser() != null) {
-                Join<User, Message> join = root.join("myUser", JoinType.LEFT);
-                ObjectMapper objectMapper = new ObjectMapper();
-                User user = objectMapper.convertValue(message.getMyUser(), User.class);
-                if (user.getId() != null && user.getId() > 0) {
-                    and.add(criteriaBuilder.equal(join.get("id"), user.getId()));
-                }
-
-            }
-            return criteriaBuilder.and(and.toArray(new Predicate[0]));
-        };
-    }
 }

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

@@ -33,9 +33,9 @@ public class CollectController extends BaseController {
     }
 
     @PostMapping("/remove")
-    public void remove(@RequestBody List<Long> ids) {
-        if (!ids.isEmpty()) {
-            collectRepo.deleteAllByUserIdAndSndId(SecurityUtils.getAuthenticatedUser().getId(), ids);
+    public void remove(@RequestParam List<Long> sndIds) {
+        if (!sndIds.isEmpty()) {
+            collectRepo.deleteAllByUserIdAndSndIdIn(SecurityUtils.getAuthenticatedUser().getId(), sndIds);
         }
     }
 }

+ 0 - 84
src/main/java/com/izouma/jmrh/web/CommunicationRecordController.java

@@ -1,84 +0,0 @@
-package com.izouma.jmrh.web;
-
-import com.izouma.jmrh.domain.CommunicationRecord;
-import com.izouma.jmrh.domain.Conversation;
-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.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-@RestController
-@RequestMapping("/communicationRecord")
-@AllArgsConstructor
-public class CommunicationRecordController extends BaseController {
-    private CommunicationRecordService communicationRecordService;
-    private CommunicationRecordRepo communicationRecordRepo;
-    private ConversationRepo conversationRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public CommunicationRecord save(@RequestBody CommunicationRecord record) {
-        if (record.getId() != null) {
-            CommunicationRecord orig = communicationRecordRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return communicationRecordRepo.save(orig);
-        }
-        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.findByConversationIdAndUserId(record.getConversationId(), SecurityUtils.getAuthenticatedUser().getId());
-            if (communicationRecordList.size() < 1) {
-                conversationRepo.updateStatus(ConversationStatus.CONDUCTED, record.getConversationId());
-            }
-        }
-        return communicationRecordRepo.save(record);
-    }
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<CommunicationRecord> all(PageQuery pageQuery) {
-        Page<CommunicationRecord> all = communicationRecordRepo.findAll(toSpecification(pageQuery, CommunicationRecord.class), toPageRequest(pageQuery));
-        return all;
-    }
-
-    @GetMapping("/get/{id}")
-    public CommunicationRecord get(@PathVariable Long id) {
-        return communicationRecordRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @GetMapping("/getList/{id}")
-    public List<CommunicationRecord> getList(@PathVariable Long id) {
-        return communicationRecordRepo.findByConversationId(id);
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        communicationRecordRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<CommunicationRecord> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-}
-

+ 29 - 22
src/main/java/com/izouma/jmrh/web/ConversationController.java

@@ -2,18 +2,23 @@ package com.izouma.jmrh.web;
 
 import com.izouma.jmrh.domain.Conversation;
 import com.izouma.jmrh.domain.ResourceSupplyAndDemand;
+import com.izouma.jmrh.dto.ConversationDTO;
 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;
 import com.izouma.jmrh.utils.ObjUtils;
+import com.izouma.jmrh.utils.SecurityUtils;
 import com.izouma.jmrh.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 @RestController
@@ -21,43 +26,39 @@ import java.util.List;
 @AllArgsConstructor
 public class ConversationController extends BaseController {
     private ConversationService conversationService;
-    private ConversationRepo conversationRepo;
+    private ConversationRepo    conversationRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public Conversation save(@RequestBody Conversation record) {
-        if (record.getId() != null) {
-            Conversation orig = conversationRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return conversationRepo.save(orig);
-        }
-        return conversationRepo.save(record);
+        if (record.getId() == null) throw new BusinessException("id不能为空");
+        Conversation orig = conversationRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+        ObjUtils.merge(orig, record);
+        return conversationRepo.save(orig);
     }
 
     @PostMapping("/create")
-    public Conversation create(@RequestBody Conversation record) {
-        return conversationService.create(record);
+    public void create(@RequestParam Long sndId, @RequestParam String orgName,
+                       @RequestParam String contactName, @RequestParam String contactPhone,
+                       @RequestParam(required = false) String email, @RequestParam String content) {
+        conversationService.create(SecurityUtils.getAuthenticatedUser().getId(),
+                sndId, orgName, contactName, contactPhone, email, content);
     }
 
     //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<Conversation> all(PageQuery pageQuery) {
-        pageQuery.getQuery().put("publisherVisible", true);
-        return conversationRepo.findAll(getConversation(pageQuery, Conversation.class), toPageRequest(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));
     }
 
     @GetMapping("/get/{id}")
-    public Conversation get(@PathVariable Long id) {
-        return conversationRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    //个人中心-我发布的-对接详情
-    @GetMapping("/getList/{id}")
-    public List<Conversation> getList(@PathVariable Long id) {
-        ResourceSupplyAndDemand resourceSupplyAndDemand = new ResourceSupplyAndDemand();
-        resourceSupplyAndDemand.setId(id);
-        List<Conversation> byResourceSupplyDemand = conversationRepo.findByResourceSupplyDemandAndUserVisible(resourceSupplyAndDemand, true);
-        return byResourceSupplyDemand;
+    public ConversationDTO get(@PathVariable Long id) {
+        return conversationService.get(id);
     }
 
     @PostMapping("/del/{id}")
@@ -71,5 +72,11 @@ public class ConversationController extends BaseController {
         List<Conversation> data = all(pageQuery).getContent();
         ExcelUtils.export(response, data);
     }
+
+    @GetMapping("/my")
+    @ApiOperation("我的对话")
+    public List<ConversationDTO> my() {
+        return conversationService.my(SecurityUtils.getAuthenticatedUser().getId());
+    }
 }
 

+ 13 - 25
src/main/java/com/izouma/jmrh/web/DockingRecordController.java

@@ -1,6 +1,8 @@
 package com.izouma.jmrh.web;
+
 import com.izouma.jmrh.domain.DockingRecord;
 import com.izouma.jmrh.domain.Message;
+import com.izouma.jmrh.enums.DockingStatus;
 import com.izouma.jmrh.repo.MessageRepo;
 import com.izouma.jmrh.service.DockingRecordService;
 import com.izouma.jmrh.dto.PageQuery;
@@ -17,47 +19,33 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
+import java.util.Objects;
 
 @RestController
 @RequestMapping("/dockingRecord")
 @AllArgsConstructor
 public class DockingRecordController extends BaseController {
     private DockingRecordService dockingRecordService;
-    private DockingRecordRepo dockingRecordRepo;
-    private MessageRepo messageRepo;
+    private DockingRecordRepo    dockingRecordRepo;
+    private MessageRepo          messageRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public DockingRecord save(@RequestBody DockingRecord record) {
-        if (record.getId() != null) {
-            DockingRecord orig = dockingRecordRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return dockingRecordRepo.save(orig);
-        }
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return dockingRecordRepo.save(record);
+        Objects.requireNonNull(record.getId(), "无记录");
+        DockingRecord orig = dockingRecordRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+        ObjUtils.merge(orig, record);
+        return dockingRecordRepo.save(orig);
     }
 
-/**/
-//@PreAuthorize("hasRole('ADMIN')")
-@PostMapping("/updateMessageSave")
-public DockingRecord updateMessageSave(@RequestBody DockingRecord record) {
-
-    record.setUser(SecurityUtils.getAuthenticatedUser());
-    List<DockingRecord> dockingRecord = dockingRecordRepo.findDockingRecordByUserAndDockingRecordId(SecurityUtils.getAuthenticatedUser(), record.getDockingRecordId());
-   if (dockingRecord.size()<=0){
-       Message message = new Message();
-       message.setId(record.getDockingRecordId());
-       message.setState(1L);
-       messageRepo.updateStatus(message);
-   }
-    return dockingRecordRepo.save(record);
-}
+    public DockingRecord updateStatus(@RequestParam Long id, @RequestParam DockingStatus status) {
+        return dockingRecordService.updateStatue(id, status);
+    }
 
     //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
     public Page<DockingRecord> all(PageQuery pageQuery) {
-        return dockingRecordRepo.findAll(toSpecification(pageQuery,DockingRecord.class), toPageRequest(pageQuery));
+        return dockingRecordRepo.findAll(toSpecification(pageQuery, DockingRecord.class), toPageRequest(pageQuery));
     }
 
     @GetMapping("/get/{id}")

+ 0 - 89
src/main/java/com/izouma/jmrh/web/FinancingNeedsController.java

@@ -1,89 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.FinancingNeeds;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.service.FinancingNeedsService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.FinancingNeedsRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/financingNeeds")
-@AllArgsConstructor
-@ApiOperation("融资需求")
-public class FinancingNeedsController extends BaseController {
-    private FinancingNeedsService financingNeedsService;
-    private FinancingNeedsRepo financingNeedsRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public FinancingNeeds save(@RequestBody FinancingNeeds record) {
-        if (record.getId() != null) {
-            FinancingNeeds orig = financingNeedsRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return financingNeedsRepo.save(orig);
-        }
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        record.setState(0L);
-        return financingNeedsRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<FinancingNeeds> all(PageQuery pageQuery) {
-        return financingNeedsRepo.findAll(toSpecification(pageQuery,FinancingNeeds.class), toPageRequest(pageQuery));
-    }
-
-    @GetMapping("/get/{id}")
-    public FinancingNeeds get(@PathVariable Long id) {
-        return financingNeedsRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        financingNeedsRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<FinancingNeeds> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-    @ApiOperation("个人中心/我发布的融资需求")
-    @GetMapping("/reqAllCount")
-    public Page<Map<String,Object>>   reqAllCount( Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setResUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>>   page = financingNeedsRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-    @ApiOperation("个人中心/我对接的融资需求")
-    @GetMapping("/resAllCount")
-    public Page<Map<String,Object>>  resAllCount( Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setReqUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>>  page = financingNeedsRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return financingNeedsRepo.count(toSpecification(pageQuery, FinancingNeeds.class));
-    }
-}
-

+ 38 - 55
src/main/java/com/izouma/jmrh/web/MessageController.java

@@ -1,93 +1,76 @@
 package com.izouma.jmrh.web;
 
 import com.izouma.jmrh.domain.Message;
-import com.izouma.jmrh.domain.User;
+import com.izouma.jmrh.dto.MessageDTO;
 import com.izouma.jmrh.dto.PageQuery;
+import com.izouma.jmrh.enums.MessageType;
 import com.izouma.jmrh.exception.BusinessException;
 import com.izouma.jmrh.repo.MessageRepo;
 import com.izouma.jmrh.service.MessageService;
+import com.izouma.jmrh.utils.ObjUtils;
 import com.izouma.jmrh.utils.SecurityUtils;
+import com.izouma.jmrh.utils.excel.ExcelUtils;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 
-@RequestMapping("message")
+@RequestMapping("/message")
 @RestController
 @AllArgsConstructor
 @ApiOperation("联系对接")
 public class MessageController extends BaseController {
-    private MessageRepo messageRepo;
+    private MessageRepo    messageRepo;
     private MessageService messageService;
 
-    @ApiOperation("添加修改对接")
+    //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public Message save(@RequestBody Message record) {
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        List<Message> all = messageRepo.findAll(getMessage(record));
-        if (all.size() > 0) {
-            return null;
+        if (record.getId() != null) {
+            Message orig = messageRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return messageRepo.save(orig);
         }
-        Message message = messageService.getMessage(record);
-        return messageRepo.save(message);
+        return messageRepo.save(record);
     }
 
-    @ApiOperation("修改对接状态")
-    @PostMapping("/updateStatus")
-    public Integer updateStatus(@RequestBody Message record) {
-        Message message = messageRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-        User user = SecurityUtils.getAuthenticatedUser();
-        message.setState(record.getState());
-        message.setOnExist(record.getOnExist());
-        //终止并删除
-        if (record.getState() == 4L) {
-            if (user.getId() == message.getMyUser().getId()) {
-                message.setOnExist(1L);
-            } else if (user.getId() == message.getUser().getId()) {
-                message.setOnExist(2L);
-            }
-        }
-        return messageRepo.save(message) != null ? 1 : 0;
-    }
-
-    @ApiOperation("对接列表")
+    //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
-    public Page<Message> all(PageQuery pageQuery) {
-        Page<Message> all = messageRepo.findAll(toSpecification(pageQuery, Message.class), toPageRequest(pageQuery));
-        return all;
+    public Page<MessageDTO> all(@RequestParam String sessionId, @RequestParam(required = false) MessageType type,
+                                Pageable pageable) {
+        return messageService.all(sessionId, type, pageable);
     }
 
-    @ApiOperation("对接列表条件查询")
-    @GetMapping("/getMessage")
-    public Page<Message> getMessage(PageQuery pageQuery) {
-        //Page<Message> all = messageRepo.findAll(getMessage(pageQuery, Message.class), toPageRequest(pageQuery));
-        return null;
+    @GetMapping("/get/{id}")
+    public Message get(@PathVariable Long id) {
+        return messageRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }
 
-    @ApiOperation("我对接别人的对接列表(需求)")
-    @GetMapping("/getMyMessageNeed")
-    public Page<Message> getMyMessageNeed(PageQuery pageQuery) {
-        pageQuery.getQuery().put("user", SecurityUtils.getAuthenticatedUser());
-        Page<Message> all = messageRepo.findAll(getNeedMessage(pageQuery, Message.class), toPageRequest(pageQuery));
-        return all;
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        messageRepo.deleteById(id);
     }
 
-    @ApiOperation("我对接别人的对接列表(产品)")
-    @GetMapping("/getMyMessageRes")
-    public Page<Message> getMyMessageRes(PageQuery pageQuery) {
-        pageQuery.getQuery().put("user", SecurityUtils.getAuthenticatedUser());
-        Page<Message> all = messageRepo.findAll(getResMessage(pageQuery, Message.class), toPageRequest(pageQuery));
-        return all;
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, @RequestParam String sessionId, @RequestParam(required = false) MessageType type,
+                      Pageable pageable) throws IOException {
+        List<MessageDTO> data = all(sessionId, type, pageable).getContent();
+        ExcelUtils.export(response, data);
     }
 
+    @GetMapping("/readAll")
+    public void realAll(@RequestParam String sessionId) {
+        messageService.readAll(SecurityUtils.getAuthenticatedUser().getId(), sessionId);
+    }
 
-    @ApiOperation("别人对接我的对接列表(需求)")
-    @GetMapping("/getMySupply")
-    public Page<Message> getMySupply(PageQuery pageQuery) {
-        pageQuery.getQuery().put("myUser", SecurityUtils.getAuthenticatedUser());
-        Page<Message> all = messageRepo.findAll(getNeedMessage(pageQuery, Message.class), toPageRequest(pageQuery));
-        return all;
+    @PostMapping("/send")
+    public void send(@RequestParam String sessionId, @RequestParam Long toUserId, @RequestParam MessageType type, @RequestParam String content) {
+        messageService.send(SecurityUtils.getAuthenticatedUser().getId(), toUserId, sessionId, type, content);
     }
 }

+ 8 - 12
src/main/java/com/izouma/jmrh/web/OrgInfoController.java

@@ -1,7 +1,6 @@
 package com.izouma.jmrh.web;
 
 import com.izouma.jmrh.domain.OrgInfo;
-import com.izouma.jmrh.domain.Question;
 import com.izouma.jmrh.domain.User;
 import com.izouma.jmrh.repo.UserRepo;
 import com.izouma.jmrh.service.OrgInfoService;
@@ -51,7 +50,7 @@ public class OrgInfoController extends BaseController {
 
     @GetMapping("/my")
     public User my() {
-       return SecurityUtils.getAuthenticatedUser();
+        return SecurityUtils.getAuthenticatedUser();
     }
 
     //@PreAuthorize("hasRole('ADMIN')")
@@ -65,23 +64,20 @@ public class OrgInfoController extends BaseController {
                         .orElse(null)))
                 .collect(Collectors.toList()), page.getPageable(), page.getTotalElements());
     }
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return orgInfoRepo.count(toSpecification(pageQuery,Question.class));
-    }
+
     @GetMapping("/get/{id}")
     public OrgInfo get(@PathVariable Long id) {
         return orgInfoRepo.findById(id).orElseThrow(new BusinessException("无记录"));
     }
 
-    @GetMapping ("/urlListSupplyDemand")
-    public Page<Map<String,Object>> listSupplyDemand(PageQuery pageQuery) {
+    @GetMapping("/urlListSupplyDemand")
+    public Page<Map<String, Object>> listSupplyDemand(PageQuery pageQuery) {
         long id = Long.parseLong(String.valueOf(pageQuery.getQuery().get("id")));
         String[] split = pageQuery.getSort().split(",");
-        Sort sort = new Sort(split[1].equals("desc")?Sort.Direction.DESC:Sort.Direction.ASC,split[0]);
-        Page<Map<String, Object>> created_at = orgInfoRepo.listSupplyDemand(id, PageRequest.of(pageQuery.getPage(), pageQuery.getSize(), sort));
-       return created_at;
+        Sort sort = new Sort(split[1].equals("desc") ? Sort.Direction.DESC : Sort.Direction.ASC, split[0]);
+        Page<Map<String, Object>> created_at = orgInfoRepo
+                .listSupplyDemand(id, PageRequest.of(pageQuery.getPage(), pageQuery.getSize(), sort));
+        return created_at;
     }
 
     @GetMapping("/getAllCount/{id}")

+ 0 - 91
src/main/java/com/izouma/jmrh/web/ProductColltroller.java

@@ -1,91 +0,0 @@
-package com.izouma.jmrh.web;
-
-import com.izouma.jmrh.domain.Product;
-import com.izouma.jmrh.dto.*;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.ProductRepo;
-import com.izouma.jmrh.service.ProductService;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/product")
-@AllArgsConstructor
-@ApiOperation("先进产品")
-public class ProductColltroller extends BaseController{
-    private ProductRepo productRepo;
-    private ProductService productService;
-    @GetMapping("/all")
-    public Page<Product> all(PageQuery pageQuery) {
-        Page<Product> all = productRepo.findAll(toSpecification(pageQuery, Product.class), toPageRequest(pageQuery));
-        return all;
-    }
-
-    @PostMapping("/save")
-    public Product save(@RequestBody Product record) {
-        if (record.getId() != null) {
-            Product orig = productRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return productRepo.save(orig);
-        }
-        record.setState(0L);
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return productRepo.save(record);
-    }
-    @GetMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        productRepo.deleteById(id);
-    }
-
-    @GetMapping("/get/{id}")
-    public Product get(@PathVariable Long id) {
-        return productRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<Product> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-    @ApiOperation("首页获取最新发布产品数量列表")
-    @PostMapping("/count")
-    public List<ArtProductDTO> getCount() {
-        return productService.getDataCount();
-    }
-
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return productRepo.count(toSpecification(pageQuery, Product.class));
-    }
-
-    @ApiOperation("个人中心/我对接先进产品")
-    @GetMapping("/resAllCount")
-    public Page<Map<String,Object>> resAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setReqUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>>page = productService.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-    @ApiOperation("个人中心/我发布的先进产品")
-    @GetMapping("/reqAllCount")
-    public Page<Map<String,Object>> reqAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setResUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = productService.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-}
-

+ 0 - 91
src/main/java/com/izouma/jmrh/web/ProductNeedController.java

@@ -1,91 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.ProductNeed;
-import com.izouma.jmrh.dto.WebDTO;
-import com.izouma.jmrh.service.ProductNeedService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.ProductNeedRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-@RestController
-@RequestMapping("/productNeed")
-@AllArgsConstructor
-public class ProductNeedController extends BaseController {
-    private ProductNeedService productNeedService;
-    private ProductNeedRepo productNeedRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public ProductNeed save(@RequestBody ProductNeed record) {
-        if (record.getId() != null) {
-            ProductNeed orig = productNeedRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return productNeedRepo.save(orig);
-        }
-        record.setState(0L);
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return productNeedRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<ProductNeed> all(PageQuery pageQuery) {
-        return productNeedRepo.findAll(toSpecification(pageQuery, ProductNeed.class), toPageRequest(pageQuery));
-    }
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return productNeedRepo.count(toSpecification(pageQuery, ProductNeed.class));
-    }
-
-    @GetMapping("/get/{id}")
-    public ProductNeed get(@PathVariable Long id) {
-        return productNeedRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        productNeedRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<ProductNeed> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-    @ApiOperation("个人中心/我对接先进产品")
-    @GetMapping("/resAllCount")
-    public  Page<Map<String,Object>> resAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setReqUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = productNeedRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-    @ApiOperation("个人中心/我发布的先进产品")
-    @GetMapping("/reqAllCount")
-    public  Page<Map<String,Object>> reqAllCount(Pageable pageable) {
-        WebDTO webDTO = new WebDTO();
-        webDTO.setResUserId(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()));
-        Page<Map<String,Object>> page = productNeedRepo.getMyAllCount(webDTO,pageable);
-        return page;
-    }
-
-
-
-}
-

+ 0 - 88
src/main/java/com/izouma/jmrh/web/QuestionController.java

@@ -1,88 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.Question;
-import com.izouma.jmrh.service.QuestionService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.QuestionRepo;
-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.data.domain.PageRequest;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-@RestController
-@RequestMapping("/question")
-@AllArgsConstructor
-public class QuestionController extends BaseController {
-    private QuestionService questionService;
-    private QuestionRepo questionRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public Question save(@RequestBody Question record) {
-        if (record.getId() != null) {
-            Question orig = questionRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return questionRepo.save(orig);
-        }
-        record.setState(0L);
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return questionRepo.save(record);
-    }
-
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<Question> all(PageQuery pageQuery) {
-       // User user = (User) pageQuery.getQuery().get("user");
-        //Page<Object[]> page=questionRepo.userAll(String.valueOf(SecurityUtils.getAuthenticatedUser().getId()), PageRequest.of(pageQuery.getPage(), pageQuery.getSize()));
-        return questionRepo.findAll(toSpecification(pageQuery, Question.class), toPageRequest(pageQuery));
-
-    }
-    @GetMapping("/getAll")
-    public Page<Object[]> getAll(PageQuery pageQuery) {
-        // User user = (User) pageQuery.getQuery().get("user");
-        String userId= "";
-        if (SecurityUtils.getAuthenticatedUser()!=null){
-             userId = String.valueOf(SecurityUtils.getAuthenticatedUser().getId());
-        }
-
-        Page<Object[]> page=questionRepo.userAll(pageQuery.getSearch(),userId, PageRequest.of(pageQuery.getPage(), pageQuery.getSize()));
-        return page;
-    }
-
-    @GetMapping("/myAll")
-    public Page<Question> myAll(PageQuery pageQuery) {
-        pageQuery.getQuery().put("user",SecurityUtils.getAuthenticatedUser());
-        return questionRepo.findAll(toSpecification(pageQuery,Question.class), toPageRequest(pageQuery));
-
-    }
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return questionRepo.count(toSpecification(pageQuery, Question.class));
-    }
-    @GetMapping("/get/{id}")
-    public Question get(@PathVariable Long id) {
-        return questionRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        questionRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<Question> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-}
-

+ 33 - 111
src/main/java/com/izouma/jmrh/web/ResourceSupplyAndDemandController.java

@@ -5,6 +5,7 @@ import com.izouma.jmrh.dto.PageQuery;
 import com.izouma.jmrh.dto.ResSnDAndPropertyDTO;
 import com.izouma.jmrh.dto.SndDTO;
 import com.izouma.jmrh.enums.AuditStatus;
+import com.izouma.jmrh.enums.DockingRole;
 import com.izouma.jmrh.enums.Exist;
 import com.izouma.jmrh.enums.ResSnDType;
 import com.izouma.jmrh.exception.BusinessException;
@@ -13,6 +14,7 @@ import com.izouma.jmrh.service.ResourceSupplyAndDemandService;
 import com.izouma.jmrh.utils.ObjUtils;
 import com.izouma.jmrh.utils.SecurityUtils;
 import com.izouma.jmrh.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -20,124 +22,41 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 @RequestMapping("/resourceSupplyAndDemand")
 @AllArgsConstructor
 public class ResourceSupplyAndDemandController extends BaseController {
     private ResourceSupplyAndDemandService resourceSupplyAndDemandService;
-    private ResourceSupplyAndDemandRepo resourceSupplyAndDemandRepo;
-    private ResSnDPropertyRepo resSnDPropertyRepo;
-    private OrgInfoRepo orgInfoRepo;
-    private DataTypeRepo dataTypeRepo;
-    private ConversationRepo conversationRepo;
+    private ResourceSupplyAndDemandRepo    resourceSupplyAndDemandRepo;
 
     //@PreAuthorize("hasRole('ADMIN')")
     @PostMapping("/save")
     public ResSnDAndPropertyDTO save(@RequestBody ResSnDAndPropertyDTO record) {
-        if (SecurityUtils.getAuthenticatedUser() == null) {
-            throw new BusinessException("用户未登录");
-        }
-        if (record.getResSnD() == null || record.getPropertyList() == null) {
-            throw new BusinessException("信息不完善");
-        }
-        if (record.getResSnD().getId() != null) {
-            ResourceSupplyAndDemand orig = resourceSupplyAndDemandRepo.findById(record.getResSnD().getId())
-                    .orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            record.setResSnD(resourceSupplyAndDemandRepo.save(orig));
-        } else {
-            record.getResSnD().setStatus(AuditStatus.PENDING);
-            record.getResSnD().setPublishersId(SecurityUtils.getAuthenticatedUser().getId());
-            record.getResSnD().setOrgId(SecurityUtils.getAuthenticatedUser().getOrgInfo().getId());
-            record.setResSnD(resourceSupplyAndDemandRepo.save(record.getResSnD()));
-        }
-        resSnDPropertyRepo.deleteByResSnDId(record.getResSnD().getId());
-        record.getPropertyList().forEach(item -> {
-            item.setId(null);
-            item.setResSnDId(record.getResSnD().getId());
-            resSnDPropertyRepo.save(item);
-        });
-        return record;
+        return resourceSupplyAndDemandService.save(record);
     }
 
-
     //@PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/all")
-    /*
-     * 查询添加对接状态
-     * */
     public Page<ResourceSupplyAndDemand> all(PageQuery pageQuery) {
-        Page<ResourceSupplyAndDemand> all = resourceSupplyAndDemandRepo
+        return resourceSupplyAndDemandRepo
                 .findAll(getResourceSupplyAndDemand(pageQuery, ResourceSupplyAndDemand.class), toPageRequest(pageQuery));
-        User user = SecurityUtils.getAuthenticatedUser();
-        if (user != null) {
-            ArrayList<Exist> exists = new ArrayList<>();
-            exists.add(Exist.ON_DELETED);
-            all.getContent().forEach(item -> {
-                Conversation conversation = null;
-                if (item.getPublishersId().equals(user.getId())) {
-                    conversation = conversationRepo
-                            .findByResourceSupplyDemandAndPublisherVisibleAndConversationUserId(item, true, user.getId());
-
-                } else {
-                    conversation = conversationRepo
-                            .findByResourceSupplyDemandAndUserVisibleAndConversationUserId(item, true, user.getId());
-
-                }
-                if (conversation != null) {
-                    item.setConversationStatus(conversation.getStatus());
-                }
-            });
-        }
-        return all;
     }
 
-    //我发布的
-    @GetMapping("/getMyAll")
-    public Page<ResourceSupplyAndDemand> getMyAll(PageQuery pageQuery) {
-        pageQuery.getQuery().put("publishersId", SecurityUtils.getAuthenticatedUser().getId());
-        Page<ResourceSupplyAndDemand> all = resourceSupplyAndDemandRepo
-                .findAll(getResourceSupplyAndDemand(pageQuery, ResourceSupplyAndDemand.class), toPageRequest(pageQuery));
-        all.getContent().forEach(item -> {
-            List<Conversation> demand = conversationRepo.findByResourceSupplyDemandAndUserVisible(item, true);
-            item.setCount(demand.size());
-        });
-        return all;
+    @PostMapping("/allDTO")
+    @ApiOperation("前端列表查询")
+    public Page<SndDTO> allDTO(@RequestBody PageQuery pageQuery) {
+        return resourceSupplyAndDemandService
+                .allDTO(Optional.ofNullable(SecurityUtils.getAuthenticatedUser()).map(BaseEntity::getId)
+                        .orElse(null), pageQuery);
     }
 
     @GetMapping("/get/{id}")
-    public Map<String, Object> get(@PathVariable Long id) {
-        HashMap<String, Object> map = new HashMap<>();
-        User user = SecurityUtils.getAuthenticatedUser();
-        ResourceSupplyAndDemand resourceSupplyAndDemand = resourceSupplyAndDemandRepo.findById(id)
-                .orElseThrow(new BusinessException("无记录"));
-        OrgInfo orgInfo = orgInfoRepo.findById(resourceSupplyAndDemand.getOrgId())
-                .orElseThrow(new BusinessException("无记录"));
-        map.put("resourceSupplyAndDemand", resourceSupplyAndDemand);
-        map.put("orgInfo", orgInfo);
-        if (user != null) {
-            ArrayList<Exist> exists = new ArrayList<>();
-            exists.add(Exist.ON_DELETED);
-            Conversation conversation = null;
-            if (resourceSupplyAndDemand.getPublishersId().equals(user.getId())) {
-                conversation = conversationRepo
-                        .findByResourceSupplyDemandAndPublisherVisibleAndConversationUserId(resourceSupplyAndDemand, true, user.getId());
-
-            } else {
-                conversation = conversationRepo
-                        .findByResourceSupplyDemandAndUserVisibleAndConversationUserId(resourceSupplyAndDemand, true, user.getId());
-
-            }
-            if (conversation != null) {
-                resourceSupplyAndDemand.setConversationStatus(conversation.getStatus());
-            }
-        }
-        return map;
+    public SndDTO get(@PathVariable Long id) {
+        return resourceSupplyAndDemandService
+                .get(id, Optional.ofNullable(SecurityUtils.getAuthenticatedUser()).map(BaseEntity::getId)
+                        .orElse(null));
     }
 
     @PostMapping("/del/{id}")
@@ -152,26 +71,29 @@ public class ResourceSupplyAndDemandController extends BaseController {
         ExcelUtils.export(response, data);
     }
 
-    /*
-    首页
-    * */
-    @GetMapping("/getDataCount")
-    public List<Map<String, Object>> getDataCount(@RequestParam String productType, @RequestParam String techType) {
-        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")
+    @ApiOperation("我收藏的")
     public Page<SndDTO> myCollect(@RequestParam(required = false) List<ResSnDType> types, Pageable pageable) {
         if (types == null) {
             types = new ArrayList<>();
         }
         return resourceSupplyAndDemandService.myCollect(SecurityUtils.getAuthenticatedUser().getId(), types, pageable);
     }
+
+    @GetMapping("/my")
+    @ApiOperation("我发布的")
+    public Page<SndDTO> my(@RequestParam(required = false) List<ResSnDType> types, Pageable pageable) {
+        return resourceSupplyAndDemandService.my(SecurityUtils.getAuthenticatedUser().getId(), types, pageable);
+    }
+
+    @GetMapping("/myDocking")
+    @ApiOperation("我对接的")
+    public Page<SndDTO> myDocking(@RequestParam(required = false) DockingRole role, List<ResSnDType> types, Pageable pageable) {
+        if (role == null) {
+            role = DockingRole.DOCKING;
+        }
+        return resourceSupplyAndDemandService
+                .myDocking(SecurityUtils.getAuthenticatedUser().getId(), role, types, pageable);
+    }
 }
 

+ 0 - 75
src/main/java/com/izouma/jmrh/web/TresourceController.java

@@ -1,75 +0,0 @@
-package com.izouma.jmrh.web;
-import com.izouma.jmrh.domain.Tresource;
-import com.izouma.jmrh.service.TresourceService;
-import com.izouma.jmrh.dto.PageQuery;
-import com.izouma.jmrh.exception.BusinessException;
-import com.izouma.jmrh.repo.TresourceRepo;
-import com.izouma.jmrh.utils.ObjUtils;
-import com.izouma.jmrh.utils.SecurityUtils;
-import com.izouma.jmrh.utils.excel.ExcelUtils;
-import io.swagger.annotations.ApiOperation;
-import lombok.AllArgsConstructor;
-import org.springframework.data.domain.Page;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-@RestController
-@RequestMapping("/tresource")
-@AllArgsConstructor
-@ApiOperation("共享资源")
-public class TresourceController extends BaseController {
-    private TresourceService tresourceService;
-    private TresourceRepo tresourceRepo;
-
-    //@PreAuthorize("hasRole('ADMIN')")
-    @PostMapping("/save")
-    public Tresource save(@RequestBody Tresource record) {
-        if (record.getId() != null) {
-            Tresource orig = tresourceRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
-            ObjUtils.merge(orig, record);
-            return tresourceRepo.save(orig);
-        }
-        record.setState(0L);
-        record.setOrgInfo(SecurityUtils.getAuthenticatedUser().getOrgInfo());
-        record.setUser(SecurityUtils.getAuthenticatedUser());
-        return tresourceRepo.save(record);
-    }
-
-    @GetMapping("/count")
-    public long count(PageQuery pageQuery) {
-        pageQuery.getQuery().put("state","0");
-        return tresourceRepo.count(toSpecification(pageQuery, Tresource.class));
-    }
-    //@PreAuthorize("hasRole('ADMIN')")
-    @GetMapping("/all")
-    public Page<Tresource> all(PageQuery pageQuery) {
-        return tresourceRepo.findAll(toSpecification(pageQuery,Tresource.class), toPageRequest(pageQuery));
-    }
-
-    @GetMapping("/myAll")
-    public Page<Tresource> myAll(PageQuery pageQuery) {
-        pageQuery.getQuery().put("user",SecurityUtils.getAuthenticatedUser());
-        return tresourceRepo.findAll(toSpecification(pageQuery,Tresource.class), toPageRequest(pageQuery));
-    }
-
-    @GetMapping("/get/{id}")
-    public Tresource get(@PathVariable Long id) {
-        return tresourceRepo.findById(id).orElseThrow(new BusinessException("无记录"));
-    }
-
-    @PostMapping("/del/{id}")
-    public void del(@PathVariable Long id) {
-        tresourceRepo.deleteById(id);
-    }
-
-    @GetMapping("/excel")
-    @ResponseBody
-    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
-        List<Tresource> data = all(pageQuery).getContent();
-        ExcelUtils.export(response, data);
-    }
-}
-

+ 2 - 2
src/main/jmrh/src/views/login/attest.vue

@@ -65,8 +65,8 @@
                         style="width:300px"
                     ></el-input>
                 </el-form-item>
-                <el-form-item prop="loge" label="企业loge">
-                    <single-upload v-model="formData.loge"></single-upload>
+                <el-form-item prop="logo" label="企业logo">
+                    <single-upload v-model="formData.logo"></single-upload>
                     <span class="remind">请上传企业logo图片,格式JPG或PNG,尺寸500x500px,大小不超过1M</span>
                 </el-form-item>
                 <el-form-item label="营业执照" prop="license">

+ 2 - 2
src/main/jmrh/src/views/mine/editInfo.vue

@@ -60,8 +60,8 @@
             <el-form-item prop="description" label="企业简介">
                 <el-input type="textarea" v-model="form.intro" placeholder="请填写企业简介,不超过200字"></el-input>
             </el-form-item>
-            <el-form-item prop="loge" label="企业loge">
-                <single-upload v-model="form.loge"></single-upload>
+            <el-form-item prop="logo" label="企业logo">
+                <single-upload v-model="form.logo"></single-upload>
                 <span class="remind">请上传企业logo图片,格式JPG或PNG,尺寸500x500px,大小不超过1M</span>
             </el-form-item>
             <el-form-item prop="license" label="营业执照">

+ 6 - 6
src/main/resources/application.yaml

@@ -12,12 +12,12 @@ spring:
   profiles:
     active: dev
   datasource:
-    url: jdbc:mysql://mysql.izouma.com/jmrh_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
-    username: microball
-    password: 2wsx@WSX#EDC
-    #url: jdbc:mysql://127.0.0.1/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
-    #username: root
-    #password: 123456
+#    url: jdbc:mysql://mysql.izouma.com/jmrh_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+#    username: microball
+#    password: 2wsx@WSX#EDC
+    url: jdbc:mysql://192.168.50.10/jmrh?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+    username: root
+    password: 123456
     hikari:
       minimum-idle: 5
       maximum-pool-size: 30

+ 27 - 18
src/test/java/com/izouma/jmrh/CommonTest.java

@@ -22,10 +22,8 @@ import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.ArrayList;
+import java.util.*;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
 import java.util.regex.Pattern;
 
 import static java.nio.file.StandardOpenOption.CREATE;
@@ -52,7 +50,8 @@ public class CommonTest {
         List<Map<String, String>> entities = new ArrayList<>();
         Reflections classReflections = new Reflections(this.getClass().getPackage().getName());
         Set<Class<? extends BaseController>> controllers = classReflections.getSubTypesOf(BaseController.class);
-        Set<Class<? extends BaseController>> list = ReflectionUtils.getAll(controllers, ReflectionUtils.withAnnotation(RestController.class));
+        Set<Class<? extends BaseController>> list = ReflectionUtils
+                .getAll(controllers, ReflectionUtils.withAnnotation(RestController.class));
         System.out.println(list);
 
         for (Class<? extends BaseController> aClass : list) {
@@ -62,7 +61,8 @@ public class CommonTest {
                 GetMapping getMapping = method.getAnnotation(GetMapping.class);
                 System.out.println(getMapping.value()[0]);
             }
-            for (Method method : ReflectionUtils.getMethods(aClass, ReflectionUtils.withAnnotation(PostMapping.class))) {
+            for (Method method : ReflectionUtils
+                    .getMethods(aClass, ReflectionUtils.withAnnotation(PostMapping.class))) {
                 PostMapping postMapping = method.getAnnotation(PostMapping.class);
                 System.out.println(postMapping.value()[0]);
             }
@@ -78,13 +78,15 @@ public class CommonTest {
     public void testMeasureText() throws IOException, FontFormatException {
         AffineTransform affinetransform = new AffineTransform();
         FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
-        Font font = Font.createFont(Font.TRUETYPE_FONT, this.getClass().getResourceAsStream("/font/SourceHanSansCN-Normal.ttf"));
+        Font font = Font.createFont(Font.TRUETYPE_FONT, this.getClass()
+                .getResourceAsStream("/font/SourceHanSansCN-Normal.ttf"));
         System.out.println((int) (font.deriveFont(14f).getStringBounds("aaa", frc).getWidth()));
     }
 
     @Test
     public void testIdNoRegexp() {
-        boolean b = Pattern.matches("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}[0-9xX]$", "32100219950830461X");
+        boolean b = Pattern
+                .matches("^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}[0-9xX]$", "32100219950830461X");
         System.out.println(b);
     }
 
@@ -94,23 +96,34 @@ public class CommonTest {
         Set<Class<? extends Enum>> entitySet = reflections.getSubTypesOf(Enum.class);
         StringBuilder idxJs = new StringBuilder();
         for (Class<? extends Enum> entity : entitySet) {
-            idxJs.append("import ").append(entity.getSimpleName()).append(" from \"./").append(entity.getSimpleName()).append("\";\n");
+            idxJs.append("import ").append(entity.getSimpleName()).append(" from \"./").append(entity.getSimpleName())
+                    .append("\";\n");
             StringBuilder str = new StringBuilder("export default {\n");
             for (Enum enumConstant : entity.getEnumConstants()) {
-                str.append("    ").append(enumConstant.name()).append(": \"").append(enumConstant.name()).append("\",\n");
+                str.append("    ").append(enumConstant.name()).append(": \"").append(enumConstant.name())
+                        .append("\",\n");
             }
             str.append("}");
-            Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "vue", "src", "constants", entity.getSimpleName() + ".js"), str.toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
-            Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "zmj_mp", "src", "constants", entity.getSimpleName() + ".js"), str.toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
+            Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "vue", "src", "constants", entity
+                    .getSimpleName() + ".js"), str.toString()
+                    .getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
+            Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "zmj_mp", "src", "constants", entity
+                    .getSimpleName() + ".js"), str.toString()
+                    .getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
         }
         idxJs.append("export default {\n");
         for (Class<? extends Enum> entity : entitySet) {
-            idxJs.append("    ").append(entity.getSimpleName()).append(": ").append(entity.getSimpleName()).append(",\n");
+            idxJs.append("    ").append(entity.getSimpleName()).append(": ").append(entity.getSimpleName())
+                    .append(",\n");
         }
         idxJs.append("}");
         System.out.println(idxJs.toString());
-        Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "vue", "src", "constants", "index.js"), idxJs.toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
-        Files.write(Paths.get(System.getProperty("user.dir"), "src", "main", "zmj_mp", "src", "constants", "index.js"), idxJs.toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
+        Files.write(Paths
+                .get(System.getProperty("user.dir"), "src", "main", "vue", "src", "constants", "index.js"), idxJs
+                .toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
+        Files.write(Paths
+                .get(System.getProperty("user.dir"), "src", "main", "zmj_mp", "src", "constants", "index.js"), idxJs
+                .toString().getBytes(StandardCharsets.UTF_8), CREATE, TRUNCATE_EXISTING);
     }
 
     @Test
@@ -127,9 +140,5 @@ public class CommonTest {
 
     @Test
     public void testEnum() {
-        System.out.println(String.class.getName());
-        System.out.println(String.class.getSimpleName());
-        System.out.println(String.class.getCanonicalName());
-        System.out.println(String.class.getTypeName());
     }
 }

+ 32 - 0
src/test/java/com/izouma/jmrh/repo/OrgInfoRepoTest.java

@@ -0,0 +1,32 @@
+package com.izouma.jmrh.repo;
+
+import com.izouma.jmrh.ApplicationTests;
+import com.izouma.jmrh.domain.OrgInfo;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class OrgInfoRepoTest extends ApplicationTests {
+    @Autowired
+    private OrgInfoRepo orgInfoRepo;
+
+    @Test
+    public void save() {
+        orgInfoRepo.save(OrgInfo.builder()
+                .orgName("蚂蚁集团")
+                .orgType("私企")
+                .industry("金融")
+                .publicCompany(true)
+                .address("浙江杭州")
+                .addressDetail("西湖区西溪路556号蚂蚁Z空间")
+                .intro("蚂蚁集团是一家旨在为世界带来普惠金融服务和数字生活新服务的创新型科技企业。")
+                .logo("https://jxjmrh.oss-cn-hangzhou.aliyuncs.com/image/2021-03-04-15-32-25SYmveuGr.png")
+                .license("")
+                .contactName("马云")
+                .contactIdNo("321321321111111111")
+                .contactPhone("15888888888")
+                .contactEmail("123456@alibaba.com")
+                .userId(2047L)
+                .state(1L)
+                .build());
+    }
+}

+ 0 - 46
src/test/java/com/izouma/jmrh/repo/reqTest.java

@@ -1,46 +0,0 @@
-package com.izouma.jmrh.repo;
-
-import com.izouma.jmrh.domain.ArtNeed;
-import com.izouma.jmrh.dto.ArtProductDTO;
-import com.izouma.jmrh.service.ArtProductService;
-import com.izouma.jmrh.service.FinancingNeedsService;
-import com.izouma.jmrh.service.ArtNeedService;
-import com.izouma.jmrh.service.ProductService;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-@RunWith(SpringRunner.class)
-@SpringBootTest
-public class reqTest {
-    @Resource
-    FinancingNeedsService financingNeedsService;
-    @Resource
-    ProductService productService;
-    @Resource
-    ArtNeedService artNeedService;
-    @Resource
-    ArtProductService artProductService;
-    @Test
-    public void getCount(){
-        ArtNeed artNeed = new ArtNeed();
-
-        //List<FinancingDTO> created_at = financingNeedsService.getMyAllCount(new FinancingNeeds(), PageRequest.of(0, 5, Sort.by("created_at").descending()));
-        //System.out.println(created_at.toString());
-        //artNeedService.getMyAllCount(artNeed,PageRequest.of(0,5, Sort.by("created_at").descending()));
-        List<ArtProductDTO> dataCount = artNeedService.getDataCount();
-        System.out.println(dataCount.toString());
-/*        WebDTO webDTO = new WebDTO();
-        //webDTO.setReqUserId("3");
-        webDTO.setResUserId("1");
-        List<ProductDTO> created_at = artProductService.getMyAllCount(webDTO, PageRequest.of(0, 5, Sort.by("created_at").descending()));
-    System.out.println(created_at.toString());
-    */
-        List<ArtProductDTO> dataCount1 = productService.getDataCount();
-        System.out.println(dataCount1.toString());
-    }
-}