licailing vor 3 Jahren
Ursprung
Commit
eadf30a2d7

+ 4 - 0
src/main/java/com/izouma/nineth/domain/AssetPost.java

@@ -4,6 +4,7 @@ import com.izouma.nineth.enums.PostStatus;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.NoArgsConstructor;
 
 
@@ -13,10 +14,13 @@ import javax.persistence.Enumerated;
 
 
 @Data
 @Data
 @Entity
 @Entity
+@Builder
 @AllArgsConstructor
 @AllArgsConstructor
 @NoArgsConstructor
 @NoArgsConstructor
 @ApiModel("资产邮寄")
 @ApiModel("资产邮寄")
 public class AssetPost extends BaseEntity {
 public class AssetPost extends BaseEntity {
+    private Long userId;
+
     private Long assetId;
     private Long assetId;
 
 
     @ApiModelProperty("收货人")
     @ApiModelProperty("收货人")

+ 14 - 9
src/main/java/com/izouma/nineth/enums/PostStatus.java

@@ -1,15 +1,20 @@
 package com.izouma.nineth.enums;
 package com.izouma.nineth.enums;
 
 
 public enum PostStatus {
 public enum PostStatus {
-    /*
-    待发货
-     */
 
 
-    /*
-    待收货
-     */
+    DELIVERY("待发货"),
+    RECEIVE("待收货"),
+    FINISH("已完成"),
+    CANCELLED("已取消")
+    ;
 
 
-    /*
-    已完成
-     */
+    private final String description;
+
+    PostStatus(String description) {
+        this.description = description;
+    }
+
+    public String getDescription() {
+        return description;
+    }
 }
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/AssetPostRepo.java

@@ -13,4 +13,6 @@ public interface AssetPostRepo extends JpaRepository<AssetPost, Long>, JpaSpecif
     @Modifying
     @Modifying
     @Transactional
     @Transactional
     void softDelete(Long id);
     void softDelete(Long id);
+
+    AssetPost findFirstByAssetIdAndDelFalseOrderByIdDesc(Long assetId);
 }
 }

+ 45 - 4
src/main/java/com/izouma/nineth/service/AssetPostService.java

@@ -2,22 +2,30 @@ package com.izouma.nineth.service;
 
 
 import com.izouma.nineth.domain.Asset;
 import com.izouma.nineth.domain.Asset;
 import com.izouma.nineth.domain.AssetPost;
 import com.izouma.nineth.domain.AssetPost;
+import com.izouma.nineth.domain.UserAddress;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.enums.AssetStatus;
 import com.izouma.nineth.enums.AssetStatus;
+import com.izouma.nineth.enums.PostStatus;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.AssetPostRepo;
 import com.izouma.nineth.repo.AssetPostRepo;
 import com.izouma.nineth.repo.AssetRepo;
 import com.izouma.nineth.repo.AssetRepo;
+import com.izouma.nineth.repo.UserAddressRepo;
 import com.izouma.nineth.utils.JpaUtils;
 import com.izouma.nineth.utils.JpaUtils;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import java.util.List;
+import java.util.Optional;
+
 @Service
 @Service
 @AllArgsConstructor
 @AllArgsConstructor
 public class AssetPostService {
 public class AssetPostService {
 
 
-    private AssetPostRepo assetPostRepo;
-    private AssetRepo     assetRepo;
+    private AssetPostRepo   assetPostRepo;
+    private AssetRepo       assetRepo;
+    private UserAddressRepo userAddressRepo;
 
 
     public Page<AssetPost> all(PageQuery pageQuery) {
     public Page<AssetPost> all(PageQuery pageQuery) {
         return assetPostRepo.findAll(JpaUtils.toSpecification(pageQuery, AssetPost.class), JpaUtils.toPageRequest(pageQuery));
         return assetPostRepo.findAll(JpaUtils.toSpecification(pageQuery, AssetPost.class), JpaUtils.toPageRequest(pageQuery));
@@ -29,7 +37,7 @@ public class AssetPostService {
     衍生品邮寄不支付快递费
     衍生品邮寄不支付快递费
     衍生品暂不可以取消邮寄
     衍生品暂不可以取消邮寄
     */
     */
-    public void post(Long assetId) {
+    public void post(Long userId, Long assetId, Long addressId) {
         Asset asset = assetRepo.findById(assetId).orElseThrow(new BusinessException("无此衍生品"));
         Asset asset = assetRepo.findById(assetId).orElseThrow(new BusinessException("无此衍生品"));
         if (asset.isPublicShow()) {
         if (asset.isPublicShow()) {
             if (asset.isConsignment()) {
             if (asset.isConsignment()) {
@@ -37,9 +45,42 @@ public class AssetPostService {
             }
             }
             throw new BusinessException("请先取消公开展示");
             throw new BusinessException("请先取消公开展示");
         }
         }
-
+        if (AssetStatus.POSTED.equals(asset.getStatus())) {
+            throw new BusinessException("已邮寄,无需再邮寄");
+        }
         if (!AssetStatus.NORMAL.equals(asset.getStatus())) {
         if (!AssetStatus.NORMAL.equals(asset.getStatus())) {
             throw new BusinessException("当前状态不可邮寄");
             throw new BusinessException("当前状态不可邮寄");
         }
         }
+        AssetPost assetPost = assetPostRepo.findFirstByAssetIdAndDelFalseOrderByIdDesc(assetId);
+        if (ObjectUtils.isNotEmpty(assetPost) && !PostStatus.CANCELLED.equals(assetPost.getStatus())) {
+            throw new BusinessException("已邮寄,无需再邮寄");
+        }
+
+        UserAddress userAddress = userAddressRepo.findById(addressId).orElseThrow(new BusinessException("地址信息不存在"));
+
+        AssetPost build = AssetPost.builder()
+                .assetId(assetId)
+                .userId(userId)
+                .contactName(userAddress.getName())
+                .contactPhone(userAddress.getPhone())
+                .address(userAddress.getProvinceName() + " " + userAddress.getCityName() + " " +
+                        userAddress.getDistrictName() + " " + userAddress.getAddress())
+                .status(PostStatus.DELIVERY)
+                .build();
+
+        assetPostRepo.save(build);
+        asset.setStatus(AssetStatus.POSTING);
     }
     }
+
+    public void updateStatus(Long assetPostId, PostStatus status) {
+        AssetPost assetPost = assetPostRepo.findById(assetPostId).orElseThrow(new BusinessException("无邮寄信息"));
+        assetPost.setStatus(status);
+        if (PostStatus.FINISH.equals(status)) {
+            Asset asset = assetRepo.findById(assetPost.getAssetId()).orElseThrow(new BusinessException("无衍生品"));
+            asset.setStatus(AssetStatus.POSTED);
+            assetRepo.save(asset);
+        }
+        assetPostRepo.save(assetPost);
+    }
+
 }
 }