Ver Fonte

聊天框

licailing há 5 anos atrás
pai
commit
4890279915
38 ficheiros alterados com 346 adições e 95 exclusões
  1. 4 0
      src/main/java/com/izouma/dingdong/config/Constants.java
  2. 21 4
      src/main/java/com/izouma/dingdong/domain/Chat.java
  3. 0 9
      src/main/java/com/izouma/dingdong/domain/Coupon.java
  4. 5 5
      src/main/java/com/izouma/dingdong/domain/OrderInfo.java
  5. 10 1
      src/main/java/com/izouma/dingdong/domain/backstage/Complaint.java
  6. 2 4
      src/main/java/com/izouma/dingdong/domain/backstage/Email.java
  7. 2 0
      src/main/java/com/izouma/dingdong/domain/backstage/MerchantNature.java
  8. 4 1
      src/main/java/com/izouma/dingdong/domain/merchant/AutomaticResponse.java
  9. 8 0
      src/main/java/com/izouma/dingdong/domain/merchant/MerchantSettings.java
  10. 3 4
      src/main/java/com/izouma/dingdong/domain/user/MyCollection.java
  11. 9 3
      src/main/java/com/izouma/dingdong/dto/MerchantDTO.java
  12. 0 1
      src/main/java/com/izouma/dingdong/dto/OrderDTO.java
  13. 14 0
      src/main/java/com/izouma/dingdong/repo/ChatRepo.java
  14. 2 2
      src/main/java/com/izouma/dingdong/repo/merchant/AutomaticResponseRepo.java
  15. 2 0
      src/main/java/com/izouma/dingdong/repo/merchant/MerchantRepo.java
  16. 6 0
      src/main/java/com/izouma/dingdong/repo/merchant/MerchantSettingsRepo.java
  17. 15 0
      src/main/java/com/izouma/dingdong/service/ChatService.java
  18. 10 1
      src/main/java/com/izouma/dingdong/service/OrderInfoService.java
  19. 1 0
      src/main/java/com/izouma/dingdong/service/OrderRefundApplyService.java
  20. 0 1
      src/main/java/com/izouma/dingdong/service/WithdrawApplyService.java
  21. 24 39
      src/main/java/com/izouma/dingdong/service/backstage/CategoryService.java
  22. 7 1
      src/main/java/com/izouma/dingdong/service/merchant/MerchantClassificationService.java
  23. 9 6
      src/main/java/com/izouma/dingdong/service/merchant/MerchantService.java
  24. 7 0
      src/main/java/com/izouma/dingdong/service/rider/RiderService.java
  25. 74 0
      src/main/java/com/izouma/dingdong/web/ChatController.java
  26. 9 2
      src/main/java/com/izouma/dingdong/web/backstage/CategoryController.java
  27. 2 2
      src/main/java/com/izouma/dingdong/web/merchant/AutomaticResponseController.java
  28. 5 0
      src/main/java/com/izouma/dingdong/web/merchant/MerchantClassificationController.java
  29. 1 0
      src/main/resources/genjson/Chat.json
  30. 2 2
      src/main/vue/src/views/merchant/MerchantList.vue
  31. 34 0
      src/test/java/com/izouma/dingdong/contorller/ChatControllerTest.java
  32. 26 0
      src/test/java/com/izouma/dingdong/contorller/ClassificationControllerTest.java
  33. 0 2
      src/test/java/com/izouma/dingdong/contorller/OrderInfoController.java
  34. 27 0
      src/test/java/com/izouma/dingdong/repo/ChatRepoTest.java
  35. 1 1
      src/test/java/com/izouma/dingdong/repo/OrderInfoRepoTest.java
  36. 0 1
      src/test/java/com/izouma/dingdong/repo/SalesRepoTest.java
  37. 0 1
      src/test/java/com/izouma/dingdong/repo/UserRepoTest.java
  38. 0 2
      src/test/java/com/izouma/dingdong/service/AppraisalServiceTest.java

+ 4 - 0
src/main/java/com/izouma/dingdong/config/Constants.java

@@ -15,7 +15,11 @@ public interface Constants {
 
     String SMS_TEMPLATE_CODE_GENERIC = "SMS_175485688";
 
+    String DEFAULT_LOGO = "";
+
     String CLASSIFICATION_NAME = "好评热销";
 
     String CLASSIFICATION_NAME2 = "折扣";
+
+    String CLASSIFICATION_NAME3 = "点单必读";
 }

+ 21 - 4
src/main/java/com/izouma/dingdong/domain/Chat.java

@@ -1,5 +1,6 @@
 package com.izouma.dingdong.domain;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -7,18 +8,34 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.util.List;
+import javax.persistence.*;
+import java.time.LocalDateTime;
 
+@Entity
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
 @ApiModel(value = "聊天框")
 public class Chat extends BaseEntity {
-    private Long userId;
 
-    private Long otherId;
+    @ApiModelProperty(value = "发件人", name = "sendUserId")
+    private Long sendUserId;
 
-    private String context;
+    @ApiModelProperty(value = "收件人", name = "receiveUserId")
+    private Long receiveUserId;
 
+    private String content;
+
+    private LocalDateTime sendTime;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "sendUserId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    @JsonIgnore
+    private User sendUser;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "receiveUserId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    @JsonIgnore
+    private User receiveUser;
 }

+ 0 - 9
src/main/java/com/izouma/dingdong/domain/Coupon.java

@@ -27,8 +27,6 @@ import java.util.Set;
 //@Where(clause = "enabled = 1")
 @ApiModel(value = "优惠券", description = "优惠券")
 public class Coupon extends BaseEntity implements Serializable {
-//    @ApiModelProperty(value = "用户ID", name = "userId")
-//    private Long userId;
 
     @ApiModelProperty(value = "优惠券名称", name = "name")
     private String name;
@@ -50,19 +48,12 @@ public class Coupon extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "满额", name = "fullAmount")
     private BigDecimal fullAmount;
 
-//    @ApiModelProperty(value = "折扣", name = "discount")
-//    private Integer discount;
-
-
     //商家发的优惠券
     private Long merchantId;
 
     //优惠券描述
     private String description;
 
-//    //用于限制手机号
-//    private String phone;
-
     //用于限制优惠券类别
 //    @ApiModelProperty(value = "类别Id")
 //    @Convert(converter = LongArrayConverter.class)

+ 5 - 5
src/main/java/com/izouma/dingdong/domain/OrderInfo.java

@@ -1,9 +1,6 @@
 package com.izouma.dingdong.domain;
 
-import com.alibaba.excel.annotation.ExcelIgnore;
 import com.izouma.dingdong.domain.merchant.Merchant;
-import com.izouma.dingdong.domain.merchant.MerchantSettings;
-import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.enums.MerchantStatus;
 import com.izouma.dingdong.enums.OrderStatus;
 import com.izouma.dingdong.enums.PayMethod;
@@ -134,15 +131,18 @@ public class OrderInfo extends BaseEntity {
     @JoinColumn(name = "orderInfoId")
     List<OrderGoodsSpec> orderGoodsSpecs;
 
-    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "userId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
     private User user;
 
-    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)
+    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.DETACH)
     @JoinColumn(name = "merchantId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
     private Merchant merchant;
 
 /*    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)
     @JoinColumn(name = "merchantId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
     private MerchantSettings merchantSettings;*/
+
+    @ApiModelProperty(value = "取消订单原因", name = "reason")
+    private String reason;
 }

+ 10 - 1
src/main/java/com/izouma/dingdong/domain/backstage/Complaint.java

@@ -8,8 +8,11 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Entity;
+import java.time.LocalDateTime;
+
 @Data
-//@Entity
+@Entity
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
@@ -19,9 +22,13 @@ public class Complaint extends BaseEntity {
     @ApiModelProperty(value = "订单ID", name = "orderId")
     private Long orderId;
 
+    //商家或骑手
     @ApiModelProperty(value = "投诉目标", name = "target")
     private String target;
 
+    @ApiModelProperty(value = "投诉类型")
+    private String type;
+
     @ApiModelProperty(value = "图片", name = "img")
     private String img;
 
@@ -31,4 +38,6 @@ public class Complaint extends BaseEntity {
     @ApiModelProperty(value = "是否解决",name = "resolve")
     private Boolean resolve;
 
+    @ApiModelProperty(value = "投诉时间")
+    private LocalDateTime time;
 }

+ 2 - 4
src/main/java/com/izouma/dingdong/domain/backstage/Email.java

@@ -1,8 +1,6 @@
 package com.izouma.dingdong.domain.backstage;
 
-import com.alibaba.excel.annotation.ExcelIgnore;
 import com.izouma.dingdong.domain.BaseEntity;
-import com.izouma.dingdong.domain.User;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -11,7 +9,6 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import javax.persistence.Entity;
-import javax.persistence.Transient;
 import java.time.LocalDate;
 
 @Data
@@ -24,9 +21,10 @@ public class Email extends BaseEntity {
     @ApiModelProperty(value = "发件人", name = "sendUserId")
     private Long sendUserId;
 
+    //叮咚logo
     private String avatar;
 
-    private String name;
+    private String name = "系统消息";
 
     @ApiModelProperty(value = "收件人", name = "receiveUserId")
     private Long receiveUserId;

+ 2 - 0
src/main/java/com/izouma/dingdong/domain/backstage/MerchantNature.java

@@ -1,5 +1,6 @@
 package com.izouma.dingdong.domain.backstage;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.izouma.dingdong.domain.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -20,6 +21,7 @@ import java.util.List;
 @NoArgsConstructor
 @Builder
 @Where(clause = "active = 1")
+@JsonIgnoreProperties(value = { "hibernateLazyInitializer"})
 @ApiModel(value = "商家性质", description = "商家性质")
 public class MerchantNature extends BaseEntity implements Serializable {
     @Size(max = 30)

+ 4 - 1
src/main/java/com/izouma/dingdong/domain/merchant/AutomaticResponse.java

@@ -23,6 +23,9 @@ public class AutomaticResponse extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "用户ID")
     private Long userId;
 
+    @ApiModelProperty(value = "好评内容")
+    public String goodContent;
+
     @ApiModelProperty(value = "自动回复内容")
-    private String context;
+    private String badContent;
 }

+ 8 - 0
src/main/java/com/izouma/dingdong/domain/merchant/MerchantSettings.java

@@ -2,6 +2,7 @@ package com.izouma.dingdong.domain.merchant;
 
 import com.izouma.dingdong.domain.BaseEntity;
 import com.izouma.dingdong.domain.backstage.Category;
+import com.izouma.dingdong.domain.backstage.MerchantNature;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
@@ -49,6 +50,9 @@ public class MerchantSettings extends BaseEntity {
     @ApiModelProperty(value = "简介", name = "introduction")
     private String introduction;
 
+    @ApiModelProperty(value = "首单优惠需求")
+    private String demand;
+
     @Column(precision = 10, scale = 2)
     @ApiModelProperty(value = "首单优惠", name = "firstOrder")
     private BigDecimal firstOrder;
@@ -99,4 +103,8 @@ public class MerchantSettings extends BaseEntity {
     @ApiModelProperty(value = "是否营业中", name = "isOpening")
     private Boolean isOpening;
 
+    @ManyToOne(fetch = FetchType.LAZY,cascade = CascadeType.DETACH)
+    @JoinColumn(name = "merchantNatureId", insertable = false, updatable = false, foreignKey = @ForeignKey(ConstraintMode.NO_CONSTRAINT))
+    private MerchantNature merchantNature;
+
 }

+ 3 - 4
src/main/java/com/izouma/dingdong/domain/user/MyCollection.java

@@ -8,12 +8,13 @@ import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import javax.persistence.Entity;
+
 @Data
-//@Entity
+@Entity
 @AllArgsConstructor
 @NoArgsConstructor
 @Builder
-//@Where(clause = "enabled = 1")
 @ApiModel(value = "我的收藏", description = "我的收藏")
 public class MyCollection extends BaseEntity {
     @ApiModelProperty(value = "用户ID",name = "userId")
@@ -22,6 +23,4 @@ public class MyCollection extends BaseEntity {
     @ApiModelProperty(value = "商户ID",name = "merchantId")
     private Long merchantId;
 
-//    @ApiModelProperty(value = "商户简介",name = "merchantProfile")
-//    private String merchantProfile;
 }

+ 9 - 3
src/main/java/com/izouma/dingdong/dto/MerchantDTO.java

@@ -2,6 +2,7 @@ package com.izouma.dingdong.dto;
 
 import com.izouma.dingdong.annotations.Searchable;
 import com.izouma.dingdong.domain.backstage.Category;
+import com.izouma.dingdong.domain.backstage.MerchantNature;
 import com.izouma.dingdong.domain.merchant.Merchant;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import com.izouma.dingdong.enums.ApplyStatus;
@@ -51,7 +52,8 @@ public class MerchantDTO {
         logo = merchant.getLogo();
         proclamation = merchantSettings.getProclamation();
         userId = merchant.getUserId();
-//        money = merchant.getMoney();
+        merchantNature = merchantSettings.getMerchantNature();
+        demand = merchantSettings.getDemand();
     }
 
 
@@ -149,8 +151,12 @@ public class MerchantDTO {
     @ApiModelProperty(value = "公告", name = "proclamation")
     private String proclamation;
 
-//    private BigDecimal money;
-
     @ApiModelProperty(value = "用户id", name = "userId")
     private Long userId;
+
+    private MerchantNature merchantNature;
+
+    @ApiModelProperty(value = "首单优惠需求")
+    private String demand;
+
 }

+ 0 - 1
src/main/java/com/izouma/dingdong/dto/OrderDTO.java

@@ -80,7 +80,6 @@ public class OrderDTO {
     @ApiModelProperty(value = "商品及规格")
     private List<OrderGoodsSpec> orderGoodsSpecs;
 
-    private MerchantDTO merchantDTO;
 
     private User user;
 

+ 14 - 0
src/main/java/com/izouma/dingdong/repo/ChatRepo.java

@@ -0,0 +1,14 @@
+package com.izouma.dingdong.repo;
+
+import com.izouma.dingdong.domain.Chat;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+
+public interface ChatRepo extends JpaRepository<Chat, Long>, JpaSpecificationExecutor<Chat> {
+
+    //按聊天框查找
+    List<Chat> findAllBySendUserIdAndReceiveUserId(Long sendUserId, Long receiveUserId);
+}

+ 2 - 2
src/main/java/com/izouma/dingdong/repo/merchant/AutomaticResponseRepo.java

@@ -11,6 +11,6 @@ public interface AutomaticResponseRepo extends JpaRepository<AutomaticResponse,
     //查找商户下的所有自动回复
    // List<AutomaticResponse> findAllByMerchantId(Long merchantId);
 
-    //查找商户下的所有自动回复
-    List<AutomaticResponse> findAllByUserId(Long userId);
+    //查找商户下的自动回复
+    AutomaticResponse findByUserId(Long userId);
 }

+ 2 - 0
src/main/java/com/izouma/dingdong/repo/merchant/MerchantRepo.java

@@ -7,6 +7,7 @@ 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.Optional;
 
 public interface MerchantRepo extends JpaRepository<Merchant, Long>, JpaSpecificationExecutor<Merchant> {
@@ -22,4 +23,5 @@ public interface MerchantRepo extends JpaRepository<Merchant, Long>, JpaSpecific
     //按商户Id找出用户Id
     @Query("select t.userId from Merchant t where t.id = ?1")
     Long findUserIdById(Long id);
+
 }

+ 6 - 0
src/main/java/com/izouma/dingdong/repo/merchant/MerchantSettingsRepo.java

@@ -1,5 +1,6 @@
 package com.izouma.dingdong.repo.merchant;
 
+import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.domain.merchant.MerchantSettings;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -7,6 +8,7 @@ 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.Optional;
 
 public interface MerchantSettingsRepo extends JpaRepository<MerchantSettings, Long>, JpaSpecificationExecutor<MerchantSettings> {
@@ -21,4 +23,8 @@ public interface MerchantSettingsRepo extends JpaRepository<MerchantSettings, Lo
     @Modifying
     @Transactional
     void deleteByMerchantId(Long merchantId);
+
+    //按分类显示商家
+    List<MerchantSettings> findAllByCategoryContains(Category category);
+
 }

+ 15 - 0
src/main/java/com/izouma/dingdong/service/ChatService.java

@@ -0,0 +1,15 @@
+package com.izouma.dingdong.service;
+
+import com.izouma.dingdong.repo.ChatRepo;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class ChatService {
+
+    private ChatRepo chatRepo;
+
+}

+ 10 - 1
src/main/java/com/izouma/dingdong/service/OrderInfoService.java

@@ -179,6 +179,7 @@ public class OrderInfoService {
             merReceiveOrder(save.getId(), true);
         }
 
+        //购物车删除
         shoppingCartRepo.deleteById(cart.getId());
 
         return orderInfo;
@@ -200,6 +201,7 @@ public class OrderInfoService {
         } else {
             orderInfo.setMerchantStatus(MerchantStatus.REJECTED);
             orderInfo.setCancel(true);
+            orderInfo.setReason("商家拒单");
             //退款流程
         }
         return orderInfoRepo.save(orderInfo);
@@ -334,7 +336,14 @@ public class OrderInfoService {
         dto.setOrderGoodsSpecs(specs);
 
         return dto;
+    }
 
-
+    /*
+    用户取消订单
+     */
+    public void cancel(Long id, String reason) {
+        OrderInfo orderInfo = orderInfoRepo.findById(id).orElseThrow(new BusinessException("无订单"));
+        orderInfo.setCancel(true);
+        orderInfo.setReason(reason);
     }
 }

+ 1 - 0
src/main/java/com/izouma/dingdong/service/OrderRefundApplyService.java

@@ -67,6 +67,7 @@ public class OrderRefundApplyService {
                 .build());
 
         order.setStatus(OrderStatus.REFUNDED_PENDING);
+        order.setReason(reason.toString());
         orderInfoRepo.save(order);
     }
 

+ 0 - 1
src/main/java/com/izouma/dingdong/service/WithdrawApplyService.java

@@ -6,7 +6,6 @@ import com.izouma.dingdong.domain.MoneyRecord;
 import com.izouma.dingdong.domain.User;
 import com.izouma.dingdong.domain.WithdrawApply;
 import com.izouma.dingdong.domain.backstage.Email;
-import com.izouma.dingdong.enums.EmailType;
 import com.izouma.dingdong.enums.FinancialType;
 import com.izouma.dingdong.enums.WithdrawStatus;
 import com.izouma.dingdong.exception.BusinessException;

+ 24 - 39
src/main/java/com/izouma/dingdong/service/backstage/CategoryService.java

@@ -1,60 +1,45 @@
 package com.izouma.dingdong.service.backstage;
 
-import cn.hutool.core.bean.BeanUtil;
+
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.domain.backstage.Category;
-import com.izouma.dingdong.dto.CategoryDTO;
+import com.izouma.dingdong.domain.merchant.Goods;
+import com.izouma.dingdong.domain.merchant.Merchant;
+import com.izouma.dingdong.domain.merchant.MerchantSettings;
+import com.izouma.dingdong.dto.MerchantDTO;
+import com.izouma.dingdong.exception.BusinessException;
 import com.izouma.dingdong.repo.backstage.CategoryRepo;
+import com.izouma.dingdong.repo.merchant.MerchantRepo;
+import com.izouma.dingdong.repo.merchant.MerchantSettingsRepo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
-import java.util.stream.Collectors;
+
 
 @Service
 @AllArgsConstructor
 public class CategoryService {
 
     private CategoryRepo categoryRepo;
+    private MerchantRepo merchantRepo;
+    private MerchantSettingsRepo merchantSettingsRepo;
 
     /*
-    转DTO
+    按类别显示商户列表
      */
-    private CategoryDTO categoryDTO(Category category){
-        CategoryDTO dto = new CategoryDTO();
-        BeanUtil.copyProperties(category, dto);
-        if (CollUtil.isNotEmpty(category.getChildren())){
-            dto.setChildren(category.getChildren().stream().map(this::categoryDTO).collect(Collectors.toList()));
+    public List<MerchantDTO> categoryMer(Long categoryId) {
+        Category category = categoryRepo.findById(categoryId).orElseThrow(new BusinessException("无分类"));
+        List<MerchantSettings> settings = merchantSettingsRepo.findAllByCategoryContains(category);
+        if (ObjectUtil.isNull(settings)) {
+            return null;
         }
-        return dto;
+        List<MerchantDTO> dtos = CollUtil.newArrayList();
+        settings.forEach(s -> {
+            Merchant merchant = merchantRepo.findById(s.getMerchantId()).orElseThrow(new BusinessException("无商家"));
+            dtos.add(new MerchantDTO(merchant, s));
+        });
+        return dtos;
     }
-
-    /*
-    树形显示菜单
-     */
-    public List<CategoryDTO> treeList(Long id) {
-        List<Category> categories = categoryRepo.findAllByParent(id);
-
-//        List<CategoryDTO> categoryDTOS = CollUtil.newArrayList();
-//        List<CategoryDTO> children = CollUtil.newArrayList();
-/*        categories.forEach(c -> {
-                    CategoryDTO categoryDTO = new CategoryDTO();
-                    BeanUtil.copyProperties(c, categoryDTO);
-                    if (CollUtil.isNotEmpty(c.getChildren())) {
-                        c.getChildren().forEach(category -> {
-                            CategoryDTO dto = new CategoryDTO();
-                            BeanUtil.copyProperties(category, dto);
-                            children.add(dto);
-                        });
-                        categoryDTO.setChildren(children);
-                    }
-                    categoryDTOS.add(categoryDTO);
-                }
-        );*/
-
-
-        return categories.stream().map(this::categoryDTO).collect(Collectors.toList());
-    }
-
-
 }

+ 7 - 1
src/main/java/com/izouma/dingdong/service/merchant/MerchantClassificationService.java

@@ -3,6 +3,7 @@ package com.izouma.dingdong.service.merchant;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import com.izouma.dingdong.config.Constants;
 import com.izouma.dingdong.converter.LongArrayConverter;
 import com.izouma.dingdong.converter.StringArrayConverter;
 import com.izouma.dingdong.domain.merchant.Goods;
@@ -114,6 +115,12 @@ public class MerchantClassificationService {
         if (!ids.contains(goodsId)) {
             ids.add(goodsId);
             merchantClassification.setGoodsIds(converter.convertToDatabaseColumn(ids));
+            //如果是点单必读
+            if (merchantClassification.getName().equals(Constants.CLASSIFICATION_NAME3)) {
+                if (!merchantClassification.getIsShow()) {
+                    merchantClassification.setIsShow(true);
+                }
+            }
             merchantClassificationRepo.save(merchantClassification);
         }
     }
@@ -136,5 +143,4 @@ public class MerchantClassificationService {
         merchantClassificationRepo.save(merchantClassification);
     }
 
-
 }

+ 9 - 6
src/main/java/com/izouma/dingdong/service/merchant/MerchantService.java

@@ -118,7 +118,7 @@ public class MerchantService {
         merchantSettingsRepo.save(merchantSettings);
 
 
-        //新建 系统预制分类:好评热销
+        //新建 系统预制分类:好评热销/折扣/点单必读
         merchantClassificationRepo.save(MerchantClassification.builder()
                 .merchantId(merchant.getId())
                 .name(Constants.CLASSIFICATION_NAME)
@@ -133,6 +133,13 @@ public class MerchantService {
                 .isOpen(true)
                 .isShow(false)
                 .build());
+       merchantClassificationRepo.save(MerchantClassification.builder()
+                .merchantId(merchant.getId())
+                .name(Constants.CLASSIFICATION_NAME3)
+                .sort(3)
+                .isOpen(true)
+                .isShow(false)
+                .build());
 
         return merchantDTO;
     }
@@ -242,10 +249,6 @@ public class MerchantService {
         }
         merchantSettingsRepo.save(merchant);
     }
-
-    /*
-    筛选新店
-     */
-
+    
 
 }

+ 7 - 0
src/main/java/com/izouma/dingdong/service/rider/RiderService.java

@@ -11,4 +11,11 @@ public class RiderService {
 
     private RiderRepo riderRepo;
 
+
+    /*
+    骑手签到
+     */
+    public void sign(Long riderId){
+
+    }
 }

+ 74 - 0
src/main/java/com/izouma/dingdong/web/ChatController.java

@@ -0,0 +1,74 @@
+package com.izouma.dingdong.web;
+
+import com.izouma.dingdong.domain.Chat;
+import com.izouma.dingdong.service.ChatService;
+import com.izouma.dingdong.dto.PageQuery;
+import com.izouma.dingdong.exception.BusinessException;
+import com.izouma.dingdong.repo.ChatRepo;
+import com.izouma.dingdong.utils.ObjUtils;
+import com.izouma.dingdong.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.data.domain.Page;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.List;
+
+@RestController
+@RequestMapping("/chat")
+@AllArgsConstructor
+public class ChatController extends BaseController {
+    private ChatService chatService;
+    private ChatRepo chatRepo;
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/save")
+    public Chat save(@RequestBody Chat record) {
+        record.setSendTime(LocalDateTime.now());
+
+        if (record.getId() != null) {
+            Chat orig = chatRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
+            ObjUtils.merge(orig, record);
+            return chatRepo.save(orig);
+        }
+        return chatRepo.save(record);
+    }
+
+
+    //@PreAuthorize("hasRole('ADMIN')")
+    @GetMapping("/all")
+    public Page<Chat> all(PageQuery pageQuery) {
+        return chatRepo.findAll(toSpecification(pageQuery, Chat.class), toPageRequest(pageQuery));
+    }
+
+    @GetMapping("/get/{id}")
+    public Chat get(@PathVariable Long id) {
+        return chatRepo.findById(id).orElseThrow(new BusinessException("无记录"));
+    }
+
+    @PostMapping("/del/{id}")
+    public void del(@PathVariable Long id) {
+        chatRepo.deleteById(id);
+    }
+
+    @GetMapping("/excel")
+    @ResponseBody
+    public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
+        List<Chat> data = all(pageQuery).getContent();
+        ExcelUtils.export(response, data);
+    }
+
+    @ApiOperation("显示两个人的所有聊天")
+    @GetMapping("/showChat")
+    public List<Chat> showChat(Long userOne, Long userTwo) {
+        List<Chat> sendChats = chatRepo.findAllBySendUserIdAndReceiveUserId(userOne, userTwo);
+        List<Chat> receiveChats = chatRepo.findAllBySendUserIdAndReceiveUserId(userTwo, userOne);
+        sendChats.addAll(receiveChats);
+        return sendChats;
+    }
+}
+

+ 9 - 2
src/main/java/com/izouma/dingdong/web/backstage/CategoryController.java

@@ -2,6 +2,7 @@ package com.izouma.dingdong.web.backstage;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.izouma.dingdong.dto.CategoryDTO;
+import com.izouma.dingdong.dto.MerchantDTO;
 import com.izouma.dingdong.web.BaseController;
 import com.izouma.dingdong.domain.backstage.Category;
 import com.izouma.dingdong.service.backstage.CategoryService;
@@ -11,6 +12,7 @@ import com.izouma.dingdong.repo.backstage.CategoryRepo;
 import com.izouma.dingdong.utils.ObjUtils;
 import com.izouma.dingdong.utils.excel.ExcelUtils;
 
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
@@ -71,8 +73,13 @@ public class CategoryController extends BaseController {
 
     @GetMapping("/tree")
     public List<Category> tree(Long id) {
-        List<Category> categories = categoryRepo.findAllByParent(id);
-        return categories;
+        return categoryRepo.findAllByParent(id);
+    }
+
+    @GetMapping("/merchants")
+    @ApiOperation("分类下的所有商品")
+    public List<MerchantDTO> merchants(Long id) {
+        return categoryService.categoryMer(id);
     }
 
 }

+ 2 - 2
src/main/java/com/izouma/dingdong/web/merchant/AutomaticResponseController.java

@@ -73,8 +73,8 @@ public class AutomaticResponseController extends BaseController {
 
     @ApiOperation("商家下的所有自动回复")
     @GetMapping("/my")
-    public List<AutomaticResponse> my() {
-        return automaticResponseRepo.findAllByUserId(SecurityUtils.getAuthenticatedUser().getId());
+    public AutomaticResponse my() {
+        return automaticResponseRepo.findByUserId(SecurityUtils.getAuthenticatedUser().getId());
     }
 }
 

+ 5 - 0
src/main/java/com/izouma/dingdong/web/merchant/MerchantClassificationController.java

@@ -1,6 +1,7 @@
 package com.izouma.dingdong.web.merchant;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
 import com.izouma.dingdong.domain.merchant.Goods;
 import com.izouma.dingdong.service.merchant.MerchantService;
 import com.izouma.dingdong.utils.SecurityUtils;
@@ -64,6 +65,10 @@ public class MerchantClassificationController extends BaseController {
 
     @PostMapping("/del/{id}")
     public void del(@PathVariable Long id) {
+        MerchantClassification classification = merchantClassificationRepo.findById(id).orElseThrow(new BusinessException("无分类"));
+        if (StrUtil.isNotBlank(classification.getGoodsIds())){
+            throw new BusinessException("该分类下有商品,暂无法删除");
+        }
         merchantClassificationRepo.deleteById(id);
     }
 

+ 1 - 0
src/main/resources/genjson/Chat.json

@@ -0,0 +1 @@
+{"tableName":"Chat","className":"Chat","remark":"聊天框","genTable":true,"genClass":true,"genList":false,"genForm":false,"genRouter":false,"javaPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/java/com/izouma/dingdong","viewPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src/views","routerPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/vue/src","resourcesPath":"/Users/qiufangchao/Desktop/project/dingdong/src/main/resources","dataBaseType":"Mysql","fields":[{"name":"talkId","modelName":"talkId","remark":"对话框","showInList":true,"showInForm":true,"formType":"number"},{"name":"context","modelName":"context","remark":"内容","showInList":true,"showInForm":true,"formType":"singleLineText"}],"readTable":false,"dataSourceCode":"dataSource","genJson":"","subtables":[],"update":false,"basePackage":"com.izouma.dingdong","tablePackage":"com.izouma.dingdong.domain.Chat"}

+ 2 - 2
src/main/vue/src/views/merchant/MerchantList.vue

@@ -92,7 +92,7 @@
                                           :preview-src-list="[row.qualifications]"></el-image>
                             </template>
                         </el-table-column>-->
-            <el-table-column prop="businessNature" label="营业性质"
+            <el-table-column prop="merchantNature.name" label="营业性质"
             >
             </el-table-column>
             <!--            <el-table-column prop="blacklist" label="黑名单"
@@ -188,7 +188,7 @@
                               :src="formData.qualification" fit="fit"
                               :preview-src-list="[formData.qualification]"/>
                 </div>
-                <div class="info-item">营业性质:{{formData.businessNature}}</div>
+                <div class="info-item">营业性质:{{formData.merchantNature.name}}</div>
                 <div class="info-item">公告:{{formData.proclamation}}</div>
                 <div class="info-item">经营品类:{{formData.category}}
                 </div>

+ 34 - 0
src/test/java/com/izouma/dingdong/contorller/ChatControllerTest.java

@@ -0,0 +1,34 @@
+package com.izouma.dingdong.contorller;
+
+import com.izouma.dingdong.domain.Chat;
+import com.izouma.dingdong.web.ChatController;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class ChatControllerTest {
+    @Autowired
+    private ChatController chatController;
+
+
+    @Test
+    public void testChat() {
+        Chat chat = Chat.builder()
+                .sendUserId(82L)
+                .receiveUserId(174L)
+                .content("优秀优秀!!")
+                .build();
+        chatController.save(chat);
+    }
+
+    @Test
+    public void testShow() {
+        System.out.println(chatController.showChat(82L, 185L));
+    }
+
+}

+ 26 - 0
src/test/java/com/izouma/dingdong/contorller/ClassificationControllerTest.java

@@ -0,0 +1,26 @@
+package com.izouma.dingdong.contorller;
+
+import com.izouma.dingdong.web.merchant.MerchantClassificationController;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class ClassificationControllerTest {
+
+    @Autowired
+    private MerchantClassificationController controller;
+
+    @Test
+    public void testDel(){
+        controller.del(1L);
+    }
+
+    @Test
+    public void testDelGoods(){
+        controller.delGoods(1L,109L);
+    }
+}

+ 0 - 2
src/test/java/com/izouma/dingdong/contorller/OrderInfoController.java

@@ -29,8 +29,6 @@ public class OrderInfoController {
     private CategoryController categoryController;
     @Autowired
     private GoodsController goodsController;
-    @Autowired
-    private MerchantClassificationController classificationController;
 
     @Autowired
     private MerchantRepo merchantRepo;

+ 27 - 0
src/test/java/com/izouma/dingdong/repo/ChatRepoTest.java

@@ -0,0 +1,27 @@
+package com.izouma.dingdong.repo;
+
+import com.izouma.dingdong.domain.Chat;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.List;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ChatRepoTest {
+    @Autowired
+    private ChatRepo chatRepo;
+
+    @Test
+    public void show(){
+        List<Chat> cs = chatRepo.findAllBySendUserIdAndReceiveUserId(82L, 158L);
+        List<Chat> chats = chatRepo.findAllBySendUserIdAndReceiveUserId(158L, 82L);
+        chats.addAll(cs);
+        System.out.println(chats);
+
+        System.out.println(cs.get(0).getSendUser().getAvatar());
+    }
+}

+ 1 - 1
src/test/java/com/izouma/dingdong/repo/OrderInfoRepoTest.java

@@ -16,7 +16,7 @@ public class OrderInfoRepoTest {
 
     @Test
     public void testOrder() {
-        System.out.println(orderInfoRepo.sumRealAmountByUserId(170l));
+        System.out.println(orderInfoRepo.sumRealAmountByUserId(170L));
     }
 
 }

+ 0 - 1
src/test/java/com/izouma/dingdong/repo/SalesRepoTest.java

@@ -1,6 +1,5 @@
 package com.izouma.dingdong.repo;
 
-import com.izouma.dingdong.domain.merchant.Sales;
 import com.izouma.dingdong.repo.merchant.SalesRepo;
 import org.junit.Test;
 import org.junit.runner.RunWith;

+ 0 - 1
src/test/java/com/izouma/dingdong/repo/UserRepoTest.java

@@ -10,7 +10,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 
 @RunWith(SpringRunner.class)

+ 0 - 2
src/test/java/com/izouma/dingdong/service/AppraisalServiceTest.java

@@ -2,8 +2,6 @@ package com.izouma.dingdong.service;
 
 import com.izouma.dingdong.domain.Appraisal;
 import com.izouma.dingdong.repo.AppraisalRepo;
-import com.izouma.dingdong.repo.OrderInfoRepo;
-import com.izouma.dingdong.repo.user.ShoppingCartRepo;
 import com.izouma.dingdong.web.AppraisalController;
 import org.junit.Test;
 import org.junit.runner.RunWith;