Browse Source

店铺查新用户统计--修改列表查询

master
liangyuyan 5 years ago
parent
commit
11f2801755
  1. 38
      app/Admin/Controllers/StoreUserReportController.php
  2. 35
      app/Admin/Repositories/StoreUserReport.php
  3. 5
      app/Models/ImsCjdcStore.php
  4. 53
      app/Models/StoreAccount.php
  5. 3
      resources/lang/zh-CN/store-user-report.php

38
app/Admin/Controllers/StoreUserReportController.php

@ -7,6 +7,7 @@ use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
use Dcat\Admin\Show; use Dcat\Admin\Show;
use Dcat\Admin\Controllers\AdminController; use Dcat\Admin\Controllers\AdminController;
use App\Models\ImsCjdcMarket as marketModel;
class StoreUserReportController extends AdminController class StoreUserReportController extends AdminController
{ {
@ -19,18 +20,45 @@ class StoreUserReportController extends AdminController
{ {
return Grid::make(new StoreUserReport(), function (Grid $grid) { return Grid::make(new StoreUserReport(), function (Grid $grid) {
$grid->disableCreateButton(); $grid->disableCreateButton();
$grid->disableDeleteButton();
$grid->disableEditButton();
$grid->disableQuickEditButton();
$grid->disableViewButton();
$marketList = [];
$list = marketModel::select('id','name')->get()->toArray();
foreach($list as $value){
$marketList[$value['id']] = $value['name'];
}
$grid->store_id; $grid->store_id;
$grid->market_id;
$grid->market_id->filter(
Grid\Column\Filter\In::make($marketList)
)->display(function ($markrtId) {
$market = marketModel::find($markrtId);
if (!$market) {
return '<span style="color: red">数据错误</span>';
}
return $market->name;
});
$grid->store_name; $grid->store_name;
$grid->mm_user_id;
$grid->mm_user_id->display(function ($markrtId) {
return '未关联';
});
$grid->new_user_total; $grid->new_user_total;
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
$filter->equal('store_id'); $filter->equal('store_id');
$filter->equal('market_id');
// $filter->equal('column')->datetime($options)->toTimestamp();
$filter->equal('pay_time')->month();
$filter->like('store.name');
$filter->whereBetween('time', function ($q) {
$start = $this->input['start'] ?? null;
$end = $this->input['end'] ?? null;
if ($start !== null) {
$q->whereRaw('add_time >= UNIX_TIMESTAMP(?)',$start);
}
if ($end !== null) {
$q->whereRaw('add_time <= UNIX_TIMESTAMP(?)',$end);
}
})->datetime();
}); });
}); });
} }

35
app/Admin/Repositories/StoreUserReport.php

@ -6,6 +6,8 @@ use App\Models\storeUserReport as Model;
use Dcat\Admin\Grid\Model as GridModel; use Dcat\Admin\Grid\Model as GridModel;
use Dcat\Admin\Repositories\EloquentRepository; use Dcat\Admin\Repositories\EloquentRepository;
use App\Models\ImsCjdcOrder as orderModel; use App\Models\ImsCjdcOrder as orderModel;
use App\Models\StoreAccount as storeAccountModel;
use App\Models\ImsCjdcStore as storeModel;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class StoreUserReport extends EloquentRepository class StoreUserReport extends EloquentRepository
@ -26,10 +28,9 @@ class StoreUserReport extends EloquentRepository
$startTime = '2020-06-01';$endTime = '2020-08-01'; $startTime = '2020-06-01';$endTime = '2020-08-01';
$this->setSort($model); $this->setSort($model);
$this->setPaginate($model); $this->setPaginate($model);
$orderModel = new orderModel();
//根据订单查询
//根据订单查询 方法查询出来的数据不对
// $orderModel = new orderModel();
// $query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id') // $query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
// ->join('ims_cjdc_user as user','order.user_id','user.id') // ->join('ims_cjdc_user as user','order.user_id','user.id')
// ->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total")) // ->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
@ -39,15 +40,31 @@ class StoreUserReport extends EloquentRepository
// ->orderBy('market_id','desc') // ->orderBy('market_id','desc')
// ->orderBY('new_user_total','desc'); // ->orderBY('new_user_total','desc');
// 根据流水查询
$query = $orderModel::join('ims_cjdc_store as store','order.store_id','store.id')
->join('ims_cjdc_user as user','order.user_id','user.id')
->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct order.user_id) as new_user_total"))
->whereRaw("join_time BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
/* 根据流水查询 2020-08-18 目前用全匹配文字方式查询新用户,后期维护店铺流水表的类型(category)后再换,或者使用其他方法 */
$storeAccountModel = new storeAccountModel();
$query = $storeAccountModel::join('ims_cjdc_store as store','ims_cjdc_store_account.store_id','store.id')
// with(['store' => function($query){
// $query->select('id','market_id','name as store_name','mm_user_id');
// }])
->select('store_id','store.market_id','store.name as store_name','mm_user_id',DB::raw("count(distinct ims_cjdc_store_account.id) as new_user_total"))
->whereRaw("note = '新用户下单成功,平台奖励'")
// ->whereRaw("UNIX_TIMESTAMP(account.time) BETWEEN UNIX_TIMESTAMP(?) AND UNIX_TIMESTAMP(?)",[$startTime,$endTime])
->groupBy('store_id') ->groupBy('store_id')
->orderBy('market_id','desc')
->orderBy('store.market_id','desc')
->orderBY('new_user_total','desc'); ->orderBY('new_user_total','desc');
// $storeModel = new storeModel();
// $query = $storeModel
// ->with(['storeAccount'=>function($query){
// $query->where('note',"新用户下单成功,平台奖励")
// ->select(DB::raw("count(distinct id) as new_user_total"));
// }])
// ->select('id as store_id','market_id','name as store_name','mm_user_id')
// ->groupBy('id')
// ->orderBy('market_id','desc')
// ->orderBY('new_user_total','desc')
// ;
$model->getQueries()->unique()->each(function ($value) use (&$query) { $model->getQueries()->unique()->each(function ($value) use (&$query) {
if ($value['method'] == 'paginate') { if ($value['method'] == 'paginate') {
$value['arguments'][1] = $this->getGridColumns(); $value['arguments'][1] = $this->getGridColumns();

5
app/Models/ImsCjdcStore.php

@ -5,6 +5,7 @@ namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use App\Models\StoreAccount;
class ImsCjdcStore extends Model class ImsCjdcStore extends Model
{ {
@ -14,4 +15,8 @@ class ImsCjdcStore extends Model
public function market(){ public function market(){
return $this->hasOne('\App\Models\ImsCjdcMarket','id','market_id'); return $this->hasOne('\App\Models\ImsCjdcMarket','id','market_id');
} }
public function storeAccount(){
return $this->hasMany(StoreAccount::class,'store_id','id');
}
} }

53
app/Models/StoreAccount.php

@ -0,0 +1,53 @@
<?php
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
use App\Models\ImsCjdcStore as storeModel;
class StoreAccount extends Model
{
use HasDateTimeFormatter;
protected $table = 'ims_cjdc_store_account';
protected $dateFormat = 'U';
public $timestamps = false;
/**
* 添加店铺流水
* @param $oid //主订单id
*/
public function addStoreAccount($oid,$type=1,$note='线上订单')
{
$accountData = $data = [];
$orderData = DB::table('ims_cjdc_order')->where('order_main_id',$oid)->get()->toArray();
if (count($orderData)) {
foreach ($orderData as $item) {
if (is_object($item)){
$accountData['user_id'] = $item->user_id;
$accountData['order_id'] = $item->id;
$accountData['store_id'] = $item->store_id;
$accountData['money'] = $item->money;
$accountData['type'] = $type;
$accountData['note'] = $note;
$accountData['add_time'] = time();
$accountData['time'] = date('Y-m-d H:i:s', time());
$data[] = $accountData;
}
}
return DB::table('ims_cjdc_store_account')->insert($data);
} else {
return false;
}
}
public function store(){
return $this->hasMany(storeModel::class,'id','store_id');
}
}

3
resources/lang/zh-CN/store-user-report.php

@ -7,9 +7,12 @@ return [
'fields' => [ 'fields' => [
'store_id' => '店铺ID', 'store_id' => '店铺ID',
'market_id' => '所属市场', 'market_id' => '所属市场',
'name' => '商家名称',
'store_name' => '商家名称', 'store_name' => '商家名称',
'new_user_total' => '新增用户总数', 'new_user_total' => '新增用户总数',
'mm_user_id' => '所属市场经理', 'mm_user_id' => '所属市场经理',
'time' => '时间',
'created_at' => '时间'
], ],
'options' => [ 'options' => [
], ],

Loading…
Cancel
Save