dlh_test_server/app/admin/logic/finance/IncomeLogic.php
2024-11-01 10:47:52 +08:00

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[] = ['r.create_time', '>=', strtotime($get['start_time'])];
}
if (isset($get['end_time']) && $get['end_time'] != '') {
$where[] = ['r.create_time', '<=', strtotime($get['end_time'])];
}
if (isset($get['order_source']) && $get['order_source'] != '') {
$where[] = ['r.order_source', '=', $get['order_source']];
}
if (isset($get['pay_way']) && $get['pay_way'] != '') {
$where[] = ['r.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;
}
}