You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.9 KiB
123 lines
4.9 KiB
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use Illuminate\Console\Command;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class couponReport extends Command
|
|
{
|
|
/**
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'command:couponReport {start?} {end?} {--ret=0}';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Command 每日优惠券统计';
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function handle()
|
|
{
|
|
$start = $this->argument('start');
|
|
$end = $this->argument('end');
|
|
$return = $this->option('ret');
|
|
|
|
$start = $start ? $start : date('Y-m-d',time());
|
|
$end = $end ? $end : date('Y-m-d',time());
|
|
$where = [strtotime($start.' 00:00:00'),strtotime($end.' 23:59:59')];
|
|
|
|
// 统计优惠券订单数据-金额
|
|
$orderTotal = DB::select("SELECT
|
|
coupon.title 优惠券标题
|
|
,SUM(money) '使用优惠券消费总额(实付总金额)'
|
|
,SUM(total_money) '订单总额(不包含配送费,含包装费)'
|
|
,SUM(dada_fee) 配送费
|
|
,SUM(yhq_money2) 优惠总金额
|
|
,COUNT(om.id) '总订单数量'
|
|
FROM
|
|
ims_system_coupon_user_use couu
|
|
INNER JOIN ims_cjdc_order_main om ON couu.order_main_id = om.id
|
|
INNER JOIN ims_system_coupon_user coupon ON coupon.id=couu.system_coupon_id
|
|
WHERE couu.`status` = 1
|
|
AND om.time_add BETWEEN ? AND ?
|
|
GROUP BY couu.system_coupon_id",
|
|
$where
|
|
);
|
|
|
|
// 查询领取数量和统计数量-总数
|
|
$receiveCoupon = DB::select("SELECT
|
|
coupon.id ID
|
|
,title 优惠券标题
|
|
,full_amount as 满足金额
|
|
,discounts as 优惠金额
|
|
,inventory AS 发放数量
|
|
,inventory_use as 已领取数量
|
|
,IFNULL((SELECT SUM(IFNULL(number,0)) FROM ims_system_coupon_user_use WHERE system_coupon_id = coupon.id AND TO_DAYS(receive.created_at) = TO_DAYS(NOW())),0) AS 使用数量
|
|
FROM
|
|
ims_system_coupon_user coupon
|
|
LEFT JOIN ims_system_coupon_user_receive receive ON coupon.id = receive.system_coupon_user_id
|
|
WHERE receive.created_at BETWEEN ? AND ?",
|
|
$where
|
|
);
|
|
// 查询优惠券订单用户数据
|
|
// $orderList = DB::select("SELECT
|
|
// uu.id AS 序号
|
|
// ,IF(uu.status=1,'已使用','已退回') AS 使用状态
|
|
// ,user.id AS 用户ID
|
|
// ,main.order_num AS 订单号
|
|
// ,main.money AS 订单金额
|
|
// ,conpon.title AS 优惠券种类
|
|
// ,user.`name` AS 用户昵称
|
|
// ,main.`name` AS 用户姓名
|
|
// ,main.tel AS 用户电话
|
|
// ,main.address AS 用户地址
|
|
// FROM ims_system_coupon_user_use uu
|
|
// INNER JOIN ims_system_coupon_user conpon ON conpon.id=uu.system_coupon_id
|
|
// INNER JOIN ims_cjdc_user user ON user.id=uu.user_id
|
|
// INNER JOIN ims_cjdc_order_main main ON main.id=uu.order_main_id
|
|
// WHERE main.time_add BETWEEN ? AND ?
|
|
// ORDER BY uu.`status` ASC",
|
|
// $where
|
|
// );
|
|
|
|
$orderArray = [];
|
|
foreach($orderTotal as $value){
|
|
$orderArray[] = (array)$value;
|
|
}
|
|
$receiveArray = [];
|
|
foreach($receiveCoupon as $value){
|
|
$receiveArray[] = (array)$value;
|
|
}
|
|
$listArray = [];
|
|
// foreach($orderList as $value){
|
|
// $listArray[] = (array)$value;
|
|
// }
|
|
if($return){
|
|
return json_encode(compact($orderTotal,$receiveCoupon,$orderList));
|
|
}else{
|
|
$this->table(['优惠券标题','使用优惠券消费总额(实付总金额)','订单总额(不包含配送费,含包装费)','配送费','优惠总金额','总订单数量'],$orderArray);
|
|
$this->table(['ID','优惠券标题','满足金额','优惠金额','发放数量','已领取数量','使用数量'],$receiveArray);
|
|
// $this->table(['序号','使用状态','用户ID','订单号','订单金额','优惠券种类','用户昵称','用户姓名','用户电话','用户地址'],$listArray);
|
|
}
|
|
}
|
|
}
|