admin/app/backend/modules/income/controllers/IncomeRecordsController.php

181 lines
6.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
*
* User: king/QQ995265288
* Date: 2018/5/15 上午9:51
* Email: livsyitian@163.com
*/
namespace app\backend\modules\income\controllers;
use app\backend\modules\income\models\Income;
use app\common\components\BaseController;
use app\common\facades\Setting;
use app\common\helpers\PaginationHelper;
use app\common\services\ExportService;
use Yunshop\TeamDividend\admin\models\TeamDividendModel;
class IncomeRecordsController extends BaseController
{
//收入明细
public function index()
{
if (request()->ajax()) {
$records = Income::records()
->withMember()
->with([
'hasManyOrder' => function ($query) {
$query->select('order_sn','price');
}
]);
$search = \YunShop::request()->search;
if ($search) {
$records = $records->search($search)->searchMember($search);
}
$pageList = $records->orderBy('id', 'desc')->paginate();
$amount = $records->sum('amount');
$shopSet = Setting::get('shop.member');
$pageList->map(function ($item) {
$item->member->nickname = $item->member->nickname ?:
($item->member->mobile ? substr($item->member->mobile, 0, 2) . '******' . substr($item->member->mobile, -2, 2) : '无昵称会员');
});
$pageList = $pageList->toArray();
foreach ($pageList['data'] as &$item) {
if (!$item['member']) {
$item['member'] = [
'nickname' => '已注销或已删除会员',
'avatar' => tomedia($shopSet['headimg']),
];
}
if($item['dividend_code'] == 2){
$type = TeamDividendModel::where('id', $item['incometable_id'])->value('type');
switch ($type) {
case 0:
$item['type_name'] = '分红佣金';
break;
case 1:
$item['type_name'] = '示范点奖励';
break;
case 2:
$item['type_name'] = '感恩奖励';
break;
case 3:
$item['type_name'] = '额外分红';
break;
case 7:
$item['type_name'] = '推广佣金';// 月月返
break;
case 8:
$item['type_name'] = '拓新奖';// 分红奖
break;
}
}
else if($item['dividend_code'] == 203){
$item['type_name'] = '合作养殖补助';
}
}
return $this->successJson('ok', [
'pageList' => $pageList,
'search' => $search,
'income_type_comment' => $this->getIncomeTypeComment(),
'amount' => $amount
]);
}
return view('income.income_records')->render();
}
//收入明细导出excel
public function export()
{
$records = Income::records()->withMember()
->with([
'hasManyOrder' => function ($query) {
$query->select('order_sn','price');
}
])
->orderBy('created_at', 'desc');
$search = \YunShop::request()->search;
if ($search) {
if (isset($search['time'])) {
$search['time'] = explode(',', $search['time']);
$search['time'] = [
'start' => $search['time'][0],
'end' => $search['time'][1]
];
}
$records = $records->search($search)->searchMember($search);
}
$export_page = request()->export_page ? request()->export_page : 1;
$export_model = new ExportService($records, $export_page);
// $data = $records->orderBy('created_at','desc')->limit(20)->get()->toArray();
$excel_data=[['会员id','粉丝','姓名','手机','时间','收入金额','业务类型','提现状态','打款状态','订单号','订单金额']];
// foreach ($data as $v){
foreach ($export_model->builder_model->toArray() as $v){
$typeName = '合作养殖补助';
if($v['dividend_code'] == 2){
$type = TeamDividendModel::where('id', $v['incometable_id'])->value('type');
switch ($type) {
case 0:
$typeName = '分红佣金';
break;
case 1:
$typeName = '示范点奖励';
break;
case 2:
$typeName = '感恩奖励';
break;
case 3:
$typeName = '额外分红';
break;
case 7:
$typeName = '推广佣金';// 月月返
break;
case 8:
$typeName = '拓新奖';// 分红奖
break;
}
}
$excel_data[]=[
$v['member_id'],
empty($v['member']['nickname']) ? '' : $v['member']['nickname'],
empty($v['member']['realname']) ? '' : $v['member']['realname'],
empty($v['member']['mobile']) ? '' : $v['member']['mobile'],
$v['created_at'],
$v['amount'],
$typeName,
$v['status_name'],
$v['pay_status_name'],
($v['order_sn']?:''),
($v['has_many_order']['price']?:''),
];
}
$file_name = date('Ymdhis', time()) . '收入明细导出'.$export_page;
$export_model->export($file_name, $excel_data, "income.income-records.index");
}
private function getIncomeTypeComment()
{
return \app\backend\modules\income\Income::current()->getItems();
}
}