فهرست منبع

分销订单筛选导出

licailing 4 سال پیش
والد
کامیت
aa10c658ab

+ 12 - 0
src/main/java/com/izouma/nineth/annotations/SearchableOne.java

@@ -0,0 +1,12 @@
+package com.izouma.nineth.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SearchableOne {
+    boolean value() default true;
+}

+ 8 - 0
src/main/java/com/izouma/nineth/domain/BaseEntity.java

@@ -1,5 +1,7 @@
 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;
@@ -20,26 +22,32 @@ import java.time.LocalDateTime;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonIgnoreProperties(value = {"hibernateLazyInitializer"}, ignoreUnknown = true)
 public abstract class BaseEntity {
+    @ExcelProperty("ID")
     @Id
     @GeneratedValue(strategy = GenerationType.AUTO)
     private Long id;
 
+    @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 Long getId() {

+ 18 - 1
src/main/java/com/izouma/nineth/domain/CommissionRecord.java

@@ -1,6 +1,8 @@
 package com.izouma.nineth.domain;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.izouma.nineth.annotations.Searchable;
+import com.izouma.nineth.annotations.SearchableOne;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -18,28 +20,43 @@ import java.math.BigDecimal;
 @Builder
 @ApiModel("分销记录")
 public class CommissionRecord extends BaseEntity {
+    @ExcelProperty("用户ID")
     @ApiModelProperty("用户ID")
     @Searchable
     private Long userId;
 
+    @ExcelProperty("昵称")
     @ApiModelProperty("用户名")
     @Searchable
     private String nickname;
 
+    @ExcelProperty("手机")
     @ApiModelProperty("手机")
     @Searchable
     private String phone;
 
+    @ExcelProperty("藏品ID")
+    @ApiModelProperty("藏品ID")
+    private Long collectionId;
+
+    @ExcelProperty("名称")
+    @SearchableOne
+    @ApiModelProperty("名称")
+    private String name;
+
+    @ExcelProperty("订单ID")
     @ApiModelProperty("订单ID")
-    @Searchable
     private Long orderId;
 
+    @ExcelProperty("订单总价")
     @ApiModelProperty("订单总价")
     private BigDecimal totalPrice;
 
+    @ExcelProperty("分成比例")
     @ApiModelProperty("分成比例")
     private BigDecimal shareRatio;
 
+    @ExcelProperty("分成金额")
     @ApiModelProperty("分成金额")
     private BigDecimal shareAmount;
 }

+ 2 - 0
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -616,6 +616,8 @@ public class OrderService {
                     BigDecimal totalPrice = order.getTotalPrice().subtract(order.getGasPrice());
                     commissionRecordRepo.save(CommissionRecord.builder()
                             .orderId(order.getId())
+                            .collectionId(order.getCollectionId())
+                            .name(order.getName())
                             .totalPrice(totalPrice)
                             .nickname(user.getNickname())
                             .userId(user.getId())

+ 8 - 0
src/main/java/com/izouma/nineth/utils/JpaUtils.java

@@ -1,6 +1,7 @@
 package com.izouma.nineth.utils;
 
 import com.izouma.nineth.annotations.Searchable;
+import com.izouma.nineth.annotations.SearchableOne;
 import com.izouma.nineth.dto.PageQuery;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -136,6 +137,13 @@ public class JpaUtils {
                     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 if (String.class == fieldType) {
+                    SearchableOne annotation = field.getAnnotation(SearchableOne.class);
+                    if (annotation != null && annotation.value()) {
+                        and.add(criteriaBuilder.like(root.get(field.getName()), "%" + value + "%"));
+                    } else {
+                        and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), value)));
+                    }
                 } else {
                     and.add(criteriaBuilder.and(criteriaBuilder.equal(root.get(property), DateTimeUtils
                             .toLocalDateTime((String) value, "yyyy-MM-dd"))));

+ 34 - 6
src/main/vue/src/views/CommissionRecordList.vue

@@ -9,7 +9,7 @@
                 class="filter-item"
             >
                 新增
-            </el-button>
+            </el-button> -->
             <el-button
                 @click="download"
                 icon="el-icon-upload2"
@@ -18,11 +18,12 @@
                 class="filter-item"
             >
                 导出
-            </el-button> -->
+            </el-button>
         </page-title>
         <div class="filters-container">
+            <created-at-picker v-model="createdAt" @input="getData" name="获得" class="filter-item"></created-at-picker>
             <el-input
-                placeholder="搜索..."
+                placeholder="用户ID/昵称/手机号"
                 v-model="search"
                 clearable
                 class="filter-item search"
@@ -30,6 +31,24 @@
             >
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
             </el-input>
+            <el-input
+                placeholder="搜索藏品ID"
+                v-model="collectionId"
+                clearable
+                class="filter-item"
+                @keyup.enter.native="getData"
+            >
+                <!-- <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button> -->
+            </el-input>
+            <el-input
+                placeholder="搜索藏品名称"
+                v-model="name"
+                clearable
+                class="filter-item"
+                @keyup.enter.native="getData"
+            >
+                <!-- <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button> -->
+            </el-input>
         </div>
         <el-table
             :data="tableData"
@@ -45,8 +64,10 @@
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <el-table-column prop="id" label="ID" width="100"> </el-table-column>
             <el-table-column prop="userId" label="用户ID"> </el-table-column>
-            <el-table-column prop="nickname" label="用户名"> </el-table-column>
+            <el-table-column prop="nickname" label="昵称"> </el-table-column>
             <el-table-column prop="phone" label="手机"> </el-table-column>
+            <el-table-column prop="collectionId" label="藏品ID"> </el-table-column>
+            <el-table-column prop="name" label="名称"> </el-table-column>
             <el-table-column prop="orderId" label="订单ID"> </el-table-column>
             <el-table-column prop="totalPrice" label="订单总价"> </el-table-column>
             <el-table-column prop="shareRatio" label="分成比例"> </el-table-column>
@@ -55,6 +76,7 @@
                     <sortable-header :column="column" :current-sort="sort" @changeSort="changeSort"> </sortable-header>
                 </template>
             </el-table-column>
+            <el-table-column prop="createdAt" label="获得时间" width="140"> </el-table-column>
         </el-table>
         <div class="pagination-wrapper">
             <!-- <div class="multiple-mode-wrapper">
@@ -91,7 +113,10 @@ export default {
             multipleMode: false,
             search: '',
             url: '/commissionRecord/all',
-            downloading: false
+            downloading: false,
+            createdAt: '',
+            collectionId: '',
+            name: ''
         };
     },
     computed: {
@@ -101,7 +126,10 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search, query: { del: false } };
+            return {
+                search: this.search,
+                query: { del: false, createdAt: this.createdAt, collectionId: this.collectionId, name: this.name }
+            };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;