licailing 3 سال پیش
والد
کامیت
8c7d48adde

+ 89 - 0
src/main/java/com/izouma/nineth/domain/BaseEntityNoID.java

@@ -0,0 +1,89 @@
+package com.izouma.nineth.domain;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import org.hibernate.envers.Audited;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+
+import javax.persistence.EntityListeners;
+import javax.persistence.MappedSuperclass;
+import java.time.LocalDateTime;
+
+@MappedSuperclass
+@Audited
+@EntityListeners(AuditingEntityListener.class)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonIgnoreProperties(value = {"hibernateLazyInitializer"}, ignoreUnknown = true)
+public abstract class BaseEntityNoID {
+    @ExcelIgnore
+    @JsonIgnore
+    @CreatedBy
+    private String createdBy;
+
+    @ExcelProperty("创建时间")
+    @JsonIgnore
+    @CreatedDate
+    private LocalDateTime createdAt;
+
+    @ExcelIgnore
+    @JsonIgnore
+    @LastModifiedBy
+    private String modifiedBy;
+
+    @ExcelIgnore
+    @JsonIgnore
+    @LastModifiedDate
+    private LocalDateTime modifiedAt;
+
+    @ExcelIgnore
+    private boolean del;
+
+    public String getCreatedBy() {
+        return createdBy;
+    }
+
+    public void setCreatedBy(String createdBy) {
+        this.createdBy = createdBy;
+    }
+
+    @JsonProperty("createdAt")
+    public LocalDateTime getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(LocalDateTime createdAt) {
+        this.createdAt = createdAt;
+    }
+
+    public String getModifiedBy() {
+        return modifiedBy;
+    }
+
+    public void setModifiedBy(String modifiedBy) {
+        this.modifiedBy = modifiedBy;
+    }
+
+    public LocalDateTime getModifiedAt() {
+        return modifiedAt;
+    }
+
+    public void setModifiedAt(LocalDateTime modifiedAt) {
+        this.modifiedAt = modifiedAt;
+    }
+
+    public boolean isDel() {
+        return del;
+    }
+
+    public void setDel(boolean del) {
+        this.del = del;
+    }
+}

+ 4 - 1
src/main/java/com/izouma/nineth/domain/Order.java

@@ -28,7 +28,10 @@ import java.util.List;
 @NoArgsConstructor
 @Builder
 @ApiModel("订单")
-public class Order extends BaseEntity {
+public class Order extends BaseEntityNoID {
+
+    @Id
+    private Long id;
 
     @ApiModelProperty("用户ID")
     @Searchable

+ 28 - 0
src/main/java/com/izouma/nineth/event/CreateOrderEvent.java

@@ -0,0 +1,28 @@
+package com.izouma.nineth.event;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CreateOrderEvent implements Serializable {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    id;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    userId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    collectionId;
+    private int     qty;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    addressId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    userCouponId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long    invitor;
+}

+ 21 - 0
src/main/java/com/izouma/nineth/event/OrderNotifyEvent.java

@@ -0,0 +1,21 @@
+package com.izouma.nineth.event;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.izouma.nineth.enums.PayMethod;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderNotifyEvent implements Serializable {
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long      orderId;
+    private PayMethod payMethod;
+    private String    transactionId;
+    private long      time;
+}

+ 3 - 1
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -75,13 +75,14 @@ public class OrderService {
     private CommissionRecordRepo          commissionRecordRepo;
     private AdapayProperties              adapayProperties;
     private GeneralProperties             generalProperties;
+    private SnowflakeIdWorker             snowflakeIdWorker;
 
     public Page<Order> all(PageQuery pageQuery) {
         return orderRepo.findAll(JpaUtils.toSpecification(pageQuery, Order.class), JpaUtils.toPageRequest(pageQuery));
     }
 
     @Transactional
-    public Order create(Long userId, Long collectionId, int qty, Long addressId, Long userCouponId, Long invitor) {
+    public Order create(Long userId, Long collectionId, int qty, Long addressId, Long userCouponId, Long invitor, Long id) {
         if (qty <= 0) throw new BusinessException("数量必须大于0");
         User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("用户不存在"));
         Collection collection = collectionRepo.findById(collectionId).orElseThrow(new BusinessException("藏品不存在"));
@@ -126,6 +127,7 @@ public class OrderService {
 
         BigDecimal gasFee = sysConfigService.getBigDecimal("gas_fee");
         Order order = Order.builder()
+                .id(Optional.ofNullable(id).orElse(snowflakeIdWorker.nextId()))
                 .userId(userId)
                 .collectionId(collectionId)
                 .name(collection.getName())