|
|
@@ -0,0 +1,107 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Longyi\Member\DataGrids\Member;
|
|
|
+
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
+use Webkul\DataGrid\DataGrid;
|
|
|
+
|
|
|
+class MemberDataGrid extends DataGrid
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * Prepare query builder.
|
|
|
+ *
|
|
|
+ * @return \Illuminate\Database\Query\Builder
|
|
|
+ */
|
|
|
+ public function prepareQueryBuilder()
|
|
|
+ {
|
|
|
+ $queryBuilder = DB::table('member_log')
|
|
|
+ ->leftJoin('customers', 'member_log.customer_id', '=', 'customers.id')
|
|
|
+ ->select(
|
|
|
+ 'member_log.id',
|
|
|
+ 'member_log.customer_id',
|
|
|
+ 'member_log.order_id',
|
|
|
+ 'member_log.amount',
|
|
|
+ 'customers.email as customer_email',
|
|
|
+ 'customers.first_name',
|
|
|
+ 'customers.last_name',
|
|
|
+ 'member_log.expirationdate',
|
|
|
+ 'member_log.created_at',
|
|
|
+ 'member_log.updated_at'
|
|
|
+ );
|
|
|
+
|
|
|
+ $this->addFilter('id', 'member_log.id');
|
|
|
+ $this->addFilter('order_id', 'member_log.order_id');
|
|
|
+ $this->addFilter('amount', 'member_log.amount');
|
|
|
+ $this->addFilter('expirationdate', 'member_log.expirationdate');
|
|
|
+ $this->addFilter('created_at', 'member_log.created_at');
|
|
|
+ $this->addFilter('customer_email', 'customers.email');
|
|
|
+
|
|
|
+ return $queryBuilder;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Add columns.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function prepareColumns()
|
|
|
+ {
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'id',
|
|
|
+ 'label' => 'id',
|
|
|
+ 'type' => 'integer',
|
|
|
+ 'filterable' => true,
|
|
|
+ 'sortable' => true,
|
|
|
+ ]);
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'customer_email',
|
|
|
+ 'label' => '用户邮箱',
|
|
|
+ 'type' => 'string',
|
|
|
+ 'filterable' => true,
|
|
|
+ 'sortable' => true,
|
|
|
+ 'searchable' => true,
|
|
|
+ 'closure' => function ($row) {
|
|
|
+ if ($row->customer_email) {
|
|
|
+ $customerName = '';
|
|
|
+ if ($row->first_name || $row->last_name) {
|
|
|
+ $customerName = ' (' . trim($row->first_name . ' ' . $row->last_name) . ')';
|
|
|
+ }
|
|
|
+ return $row->customer_email . $customerName;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'order_id',
|
|
|
+ 'label' => '#order Id',
|
|
|
+ 'type' => 'integer',
|
|
|
+ 'filterable' => false,
|
|
|
+ 'sortable' => true
|
|
|
+ ]);
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'amount',
|
|
|
+ 'label' => 'vip amount',
|
|
|
+ 'type' => 'aggregate',
|
|
|
+ 'filterable' => false,
|
|
|
+ 'sortable' => true,
|
|
|
+ 'closure' => function ($row) {
|
|
|
+ return core()->formatPrice($row->amount);
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'expirationdate',
|
|
|
+ 'label' => 'expirationdate',
|
|
|
+ 'type' => 'date',
|
|
|
+ 'filterable' => true,
|
|
|
+ 'sortable' => true,
|
|
|
+ ]);
|
|
|
+
|
|
|
+
|
|
|
+ $this->addColumn([
|
|
|
+ 'index' => 'created_at',
|
|
|
+ 'label' => 'created at',
|
|
|
+ 'type' => 'datetime',
|
|
|
+ 'filterable' => true,
|
|
|
+ 'sortable' => true,
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+}
|