326 lines
11 KiB
PHP
326 lines
11 KiB
PHP
<?php
|
|
|
|
namespace app\admin\logic\finance;
|
|
|
|
use app\common\basics\Logic;
|
|
use app\common\model\LocalPay;
|
|
use app\common\model\order\Order;
|
|
use app\common\model\RechargeOrder;
|
|
use app\common\model\user\UserLevel;
|
|
use app\common\server\UrlServer;
|
|
|
|
class IncomeLogic extends Logic
|
|
{
|
|
static protected $order_source = [
|
|
'1'=>'小程序',
|
|
'2'=>'h5',
|
|
'3'=>'ios',
|
|
'4'=>'安卓',
|
|
'5'=>''
|
|
];
|
|
|
|
static protected $pay_way = [
|
|
'1'=>'微信支付',
|
|
'2'=>'支付宝支付',
|
|
'3'=>'余额支付',
|
|
'4'=>'储值卡核销',
|
|
'5'=>'百亿返补充值',
|
|
|
|
];
|
|
public static function Orderlists($get = [], $is_export = false){
|
|
$order = new Order();
|
|
$where = [];
|
|
$page = $get['page'] ?? 1;
|
|
$limit = $get['limit'] ?? 10;
|
|
|
|
//订单状态选项卡
|
|
if (isset($get['type']) && $get['type'] != '') {
|
|
$where[] = ['order_status', '=', $get['type']];
|
|
}
|
|
//订单搜素
|
|
if (!empty($get['search_key']) && !empty($get['keyword'])) {
|
|
$keyword = $get['keyword'];
|
|
switch ($get['search_key']) {
|
|
case 'order_sn':
|
|
$where[] = ['o.order_sn', '=', $keyword];
|
|
break;
|
|
case 'user_sn':
|
|
$where[] = ['u.sn', '=', $keyword];
|
|
break;
|
|
case 'shop_name':
|
|
$where[] = ['s.name', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'goods_name':
|
|
$where[] = ['g.goods_name', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'user_id':
|
|
$where[] = ['o.user_id', '=', $keyword];
|
|
break;
|
|
case 'nickname':
|
|
$where[] = ['u.nickname', 'like', '%' . $keyword . '%'];
|
|
break;
|
|
case 'user_mobile':
|
|
$where[] = ['u.mobile', '=', $keyword];
|
|
break;
|
|
case 'consignee':
|
|
$where[] = ['consignee', '=', $keyword];
|
|
break;
|
|
case 'consignee_mobile':
|
|
$where[] = ['o.mobile', '=', $keyword];
|
|
break;
|
|
}
|
|
}
|
|
//商家名称
|
|
if (isset($get['shop_name']) && $get['shop_name'] != '') {
|
|
$where[] = ['s.name', 'like', '%' . $get['shop_name'] . '%'];
|
|
}
|
|
//商品名称
|
|
if (isset($get['goods_name']) && $get['goods_name'] != '') {
|
|
$where[] = ['g.goods_name', 'like', '%' . $get['goods_name'] . '%'];
|
|
}
|
|
//配送方式
|
|
if (isset($get['delivery_type']) && $get['delivery_type'] != '') {
|
|
$where[] = ['o.delivery_type', '=', $get['delivery_type']];
|
|
}
|
|
|
|
//订单类型
|
|
if (isset($get['order_type']) && $get['order_type'] != '') {
|
|
$where[] = ['o.order_type', '=', $get['order_type']];
|
|
}
|
|
//付款方式
|
|
if (isset($get['pay_way']) && $get['pay_way'] != '') {
|
|
$where[] = ['o.pay_way', '=', $get['pay_way']];
|
|
}
|
|
//订单来源
|
|
if (isset($get['order_source']) && $get['order_source'] != '') {
|
|
$where[] = ['o.order_source', '=', $get['order_source']];
|
|
}
|
|
|
|
//下单时间
|
|
if (isset($get['start_time']) && $get['start_time'] != '') {
|
|
$where[] = ['o.create_time', '>=', strtotime($get['start_time'])];
|
|
}
|
|
|
|
if (isset($get['end_time']) && $get['end_time'] != '') {
|
|
$where[] = ['o.create_time', '<=', strtotime($get['end_time'])];
|
|
}
|
|
|
|
if (isset($get['page']) && $get['page'] != '') {
|
|
$page = $get['page'];
|
|
}
|
|
|
|
if (isset($get['limit']) && $get['limit'] != '') {
|
|
$limit = $get['limit'];
|
|
}
|
|
|
|
// // 导出excel
|
|
// if (true === $is_export) {
|
|
// return self::export($where);
|
|
// }
|
|
|
|
$field = 'o.*,s.name as shop_name,u.level';
|
|
|
|
$count = $order
|
|
->alias('o')
|
|
->field($field)
|
|
->join('shop s', 's.id = o.shop_id')
|
|
->join('user u', 'u.id = o.user_id')
|
|
->join('order_goods g', 'g.order_id = o.id')
|
|
->with(['order_goods', 'user', 'shop'])
|
|
->where($where)
|
|
->where('o.order_status',1)
|
|
->group('o.id')
|
|
->count();
|
|
|
|
$lists = $order
|
|
->alias('o')
|
|
->field($field)
|
|
->join('shop s', 's.id = o.shop_id')
|
|
->join('user u', 'u.id = o.user_id')
|
|
->join('order_goods g', 'g.order_id = o.id')
|
|
->with(['order_goods', 'user', 'shop'])
|
|
->where($where)
|
|
->where('o.order_status',1)
|
|
->append([
|
|
'delivery_address', 'pay_status_text', 'order_source_text',
|
|
'order_status_text', 'delivery_type_text','order_type_text',
|
|
'pay_way_text',
|
|
])
|
|
->page($page, $limit)
|
|
->order('o.id desc')
|
|
->group('o.id')
|
|
->select();
|
|
|
|
$user_level = UserLevel::where(['del'=>0])->column('name','id');
|
|
|
|
foreach ($lists as $list) {
|
|
$list['pay_time'] = $list['pay_time'] == '0' ? '未支付' : date('Y-m-d H:i:s', $list['pay_time']);
|
|
$list['user']['avatar'] = UrlServer::getFileUrl($list['user']['avatar']);
|
|
$list['shop']['logo'] = UrlServer::getFileUrl($list['shop']['logo']);
|
|
foreach ($list['order_goods'] as $order_good) {
|
|
$order_good['image'] = UrlServer::getFileUrl($order_good['image']);
|
|
}
|
|
|
|
// 会员等级
|
|
$list['user_level'] = '暂无等级';
|
|
if(isset($user_level[$list['level']])) {
|
|
$list['user_level'] = $user_level[$list['level']];
|
|
}
|
|
}
|
|
return ['count' => $count, 'lists' => $lists];
|
|
|
|
}
|
|
|
|
public static function LocalOrderLists($get){
|
|
|
|
|
|
$where = [];
|
|
$page = $get['page'] ?? 1;
|
|
$limit = $get['limit'] ?? 10;
|
|
// 会员信息
|
|
if (!empty($get['search_key']) && !empty($get['keyword'])) {
|
|
$keyword = $get['keyword'];
|
|
if ($get['search_key'] == 'user_sn') {
|
|
$where[] = ['u.sn', '=', $keyword];
|
|
} elseif ($get['search_key'] == 'nickname') {
|
|
$where[] = ['u.nickname', 'like', '%' . $keyword . '%'];
|
|
}
|
|
}
|
|
//下单时间
|
|
if (isset($get['start_time']) && $get['start_time'] != '') {
|
|
$where[] = ['lp.create_time', '>=', strtotime($get['start_time'])];
|
|
}
|
|
|
|
if (isset($get['end_time']) && $get['end_time'] != '') {
|
|
$where[] = ['lp.create_time', '<=', strtotime($get['end_time'])];
|
|
}
|
|
|
|
if (isset($get['order_source']) && $get['order_source'] != '') {
|
|
$where[] = ['lp.order_source', '=', $get['order_source']];
|
|
}
|
|
if (isset($get['pay_way']) && $get['pay_way'] != '') {
|
|
$where[] = ['lp.pay_way', '=', $get['pay_way']];
|
|
}
|
|
|
|
$lists = LocalPay::alias('lp')
|
|
->join('user u', 'lp.user_id = u.id')
|
|
->field('lp.*, u.nickname,u.avatar, u.sn as user_sn, u.mobile')
|
|
->where('lp.pay_status',1)
|
|
->where($where)
|
|
->page($page, $limit)
|
|
->order('lp.id desc')
|
|
->group('lp.id')
|
|
->select()->toArray();
|
|
|
|
$count = LocalPay::alias('lp')
|
|
->join('user u', 'lp.user_id = u.id')
|
|
->field('lp.*, u.nickname,u.avatar, u.sn as user_sn, u.mobile')
|
|
->where('lp.pay_status',1)
|
|
->where($where)
|
|
->order('lp.id desc')
|
|
->group('lp.id')
|
|
->count();
|
|
|
|
foreach ($lists as &$item){
|
|
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
|
|
$item['order_source'] = self::$order_source[$item['order_source']];
|
|
$item['pay_way'] = self::$pay_way[$item['pay_way']];
|
|
}
|
|
return ['count' => $count, 'lists' => $lists];
|
|
|
|
|
|
}
|
|
|
|
public static function RechargeOrderLists($get){
|
|
|
|
$where = [];
|
|
$page = $get['page'] ?? 1;
|
|
$limit = $get['limit'] ?? 10;
|
|
// 会员信息
|
|
if (!empty($get['search_key']) && !empty($get['keyword'])) {
|
|
$keyword = $get['keyword'];
|
|
if ($get['search_key'] == 'user_sn') {
|
|
$where[] = ['u.sn', '=', $keyword];
|
|
} elseif ($get['search_key'] == 'nickname') {
|
|
$where[] = ['u.nickname', 'like', '%' . $keyword . '%'];
|
|
}
|
|
}
|
|
//下单时间
|
|
if (isset($get['start_time']) && $get['start_time'] != '') {
|
|
$where[] = ['lp.create_time', '>=', strtotime($get['start_time'])];
|
|
}
|
|
|
|
if (isset($get['end_time']) && $get['end_time'] != '') {
|
|
$where[] = ['lp.create_time', '<=', strtotime($get['end_time'])];
|
|
}
|
|
|
|
if (isset($get['order_source']) && $get['order_source'] != '') {
|
|
$where[] = ['lp.order_source', '=', $get['order_source']];
|
|
}
|
|
if (isset($get['pay_way']) && $get['pay_way'] != '') {
|
|
$where[] = ['lp.pay_way', '=', $get['pay_way']];
|
|
}
|
|
|
|
$lists = RechargeOrder::alias('r')
|
|
->join('user u', 'r.user_id = u.id')
|
|
->field('r.*, u.nickname,u.avatar, u.sn as user_sn, u.mobile')
|
|
->where('r.pay_status',1)
|
|
->where($where)
|
|
->page($page, $limit)
|
|
->order('r.id desc')
|
|
->group('r.id')
|
|
->select()->toArray();
|
|
|
|
|
|
$count = RechargeOrder::alias('r')
|
|
->join('user u', 'r.user_id = u.id')
|
|
->field('r.*, u.nickname,u.avatar, u.sn as user_sn, u.mobile')
|
|
->where('r.pay_status',1)
|
|
->where($where)
|
|
->order('r.id desc')
|
|
->group('r.id')
|
|
->count();
|
|
|
|
|
|
foreach ($lists as &$item){
|
|
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
|
|
// $item['order_source'] = self::$order_source[$item['order_source']];
|
|
// $item['pay_way'] = self::$pay_way[$item['pay_way']];
|
|
}
|
|
return ['count' => $count, 'lists' => $lists];
|
|
|
|
}
|
|
/**
|
|
* @notes 获取各列表数量
|
|
* @return int
|
|
* @author Yzt
|
|
* @date 2024/10/31 10:08 上午
|
|
*/
|
|
public static function getAll()
|
|
{
|
|
$order_all = Order::where('order_status',1)->count('id');
|
|
$local_order_all = LocalPay::where('pay_status',1)->count('id');
|
|
$recharge_order_all = RechargeOrder::where('pay_status',1)->count('id');
|
|
$order_price = Order::where('order_status',1)->sum('order_amount');
|
|
$local_order_price = LocalPay::where('pay_status',1)->sum('order_amount');
|
|
$recharge_order_price = RechargeOrder::where('pay_status',1)->sum('order_amount');
|
|
return [
|
|
'order_all'=>$order_all,
|
|
'local_order_all'=>$local_order_all,
|
|
'recharge_order_all'=>$recharge_order_all,
|
|
'order_price'=>$order_price,
|
|
'local_order_price'=>$local_order_price,
|
|
'recharge_order_price'=>$recharge_order_price
|
|
];
|
|
}
|
|
|
|
public static function getStat($order_status)
|
|
{
|
|
foreach ($order_status as $key => $value) {
|
|
$num = Order::where('order_status', $key)->count('id');
|
|
$stat = $value . "(" . $num . ")";
|
|
$data[] = $stat;
|
|
}
|
|
return $data;
|
|
}
|
|
} |