357 lines
16 KiB
PHP
357 lines
16 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* Author:
|
|
* Date: 2017/3/30
|
|
* Time: 下午9:07
|
|
*/
|
|
|
|
namespace app\frontend\modules\finance\controllers;
|
|
|
|
use app\common\components\ApiController;
|
|
use app\common\components\BaseController;
|
|
use app\common\models\Income;
|
|
use app\common\models\Store;
|
|
use app\frontend\modules\finance\models\Withdraw;
|
|
use Yunshop\Auction\models\AuctioneerModel;
|
|
use Yunshop\Auction\models\AuctionOrderModel;
|
|
use Yunshop\Hotel\common\models\CashierOrder;
|
|
use Yunshop\Hotel\common\models\Hotel;
|
|
use Yunshop\Hotel\common\models\HotelOrder;
|
|
use Yunshop\StoreCashier\common\models\StoreOrder;
|
|
use app\common\helpers\PaginationHelper;
|
|
use Yunshop\StoreCashier\frontend\store\models\Goods;
|
|
//use Yunshop\StoreCashier\common\models\CashierOrder;
|
|
|
|
class WithdrawController extends ApiController
|
|
{
|
|
public $pageSize = 15;
|
|
|
|
public function withdrawLog()
|
|
{
|
|
$status = \YunShop::request()->status;
|
|
$request = Withdraw::getWithdrawLog($status)->orderBy('created_at', 'desc')->paginate($this->pageSize);
|
|
if ($request) {
|
|
return $this->successJson('获取数据成功!', $request->toArray());
|
|
}
|
|
return $this->errorJson('未检测到数据!');
|
|
}
|
|
|
|
public function withdrawInfo()
|
|
{
|
|
$id = \YunShop::request()->id;
|
|
$request = Withdraw::getWithdrawInfoById($id)
|
|
->addSelect('reject_reason')
|
|
->first();
|
|
|
|
if ($request) {
|
|
$request = $request->toArray();
|
|
if ($request['status'] == 0) {//未审核
|
|
$request['actual_poundage'] = $request['poundage'];
|
|
$request['actual_servicetax'] = $request['servicetax'];
|
|
$request['actual_amounts'] = bcsub($request['amounts'],(bcadd($request['poundage'],$request['servicetax'],2)),2);
|
|
}
|
|
return $this->successJson('获取数据成功!', $request);
|
|
}
|
|
return $this->errorJson('未检测到数据!');
|
|
}
|
|
|
|
/**
|
|
* 提成列表
|
|
*/
|
|
public function withdrawList()
|
|
{
|
|
$status = \YunShop::request()->status;
|
|
$type = \YunShop::request()->withdrawal_type;
|
|
|
|
$date = $this->timeData();
|
|
|
|
switch ($type){
|
|
case 'store' :
|
|
if (app('plugins')->isEnabled('store-cashier')) {
|
|
return $this->storeData($date,$status);
|
|
}
|
|
break;
|
|
case 'store_cashier' :
|
|
if (app('plugins')->isEnabled('store-cashier')) {
|
|
|
|
return $this->storeCashier($date,$status);
|
|
}
|
|
break;
|
|
case 'hotel' :
|
|
if (app('plugins')->isEnabled('hotel')) {
|
|
return $this->hotel($date,$status);
|
|
}
|
|
break;
|
|
case 'hotel_cashier' :
|
|
if (app('plugins')->isEnabled('hotel')) {
|
|
return $this->hotelashier($date,$status);
|
|
}
|
|
case 'auction' :
|
|
if (app('plugins')->isEnabled('auction')) {
|
|
return $this->auction($date,$status);
|
|
}
|
|
default:
|
|
return $this->errorJson('withdrawal_type参数错误');
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 获取月周,昨天,今天的起始时间戳
|
|
*/
|
|
public function timeData()
|
|
{
|
|
$date = [];
|
|
//今日起始时间
|
|
$date['begin_today'] = mktime(0,0,0,date('m'),date('d'),date('Y'));
|
|
$date['end_today'] = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
|
|
|
|
//获取一周的时间
|
|
$date['begin_lastweek'] = mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'));
|
|
$date['end_lastweek'] = mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y'));
|
|
|
|
//获取昨天的时间
|
|
$date['begin_yesterday'] = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
|
|
$date['end_yesterday'] = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
|
|
|
|
//获取当前月起始时间
|
|
$date['begin_thismonth'] = mktime(0,0,0,date('m'),1,date('Y'));
|
|
$date['end_thismonth'] = mktime(23,59,59,date('m'),date('t'),date('Y'));
|
|
return $date;
|
|
}
|
|
|
|
/**
|
|
* 门店数据
|
|
*/
|
|
public function storeData($date,$status)
|
|
{
|
|
$stro = new StoreOrder();
|
|
$store = Store::where('uid',\YunShop::app()->getMemberId())->first();
|
|
$store_order = StoreOrder::where(['store_id'=>$store['id']]);
|
|
$store_search['store_id'] = $store['id'];
|
|
if (!empty($status) && $status != 3 || $status == 0){
|
|
$store_order->where('has_settlement',$status);
|
|
}
|
|
$data = $store_order->select(['yz_plugin_store_order.id','yz_plugin_store_order.order_id','yz_plugin_store_order.store_id','yz_plugin_store_order.has_settlement','yz_plugin_store_order.amount','yz_plugin_store_order.created_at','yz_order.order_sn'])->join('yz_order','yz_plugin_store_order.order_id','yz_order.id')->where('plugin_id',32)->orderBy('yz_plugin_store_order.created_at', 'desc')->paginate(15)->toArray();
|
|
foreach ($data['data'] as $key => $item){
|
|
$datas[$key]['order_sn'] = $item['order_sn'];
|
|
$datas[$key]['amount'] = $item['amount'];
|
|
$datas[$key]['status'] = $item['has_settlement'];
|
|
switch ($item['has_settlement']){
|
|
case 0 : $datas[$key]['settlement'] = '未结算'; break;
|
|
case 1 : $datas[$key]['settlement'] = '已结算'; break;
|
|
case -1 : $datas[$key]['settlement'] = '已失效'; break;
|
|
}
|
|
}
|
|
$data['data'] = $datas ?: [];
|
|
//获取一月的提成
|
|
$data['thismonth'] = $stro->join('yz_order','yz_plugin_store_order.order_id','yz_order.id')->where('yz_order.plugin_id',32)->where(['store_id'=>$store['id']])->whereBetween('yz_plugin_store_order.created_at',[ $date['begin_thismonth'] , $date['end_thismonth'] ])->sum('yz_plugin_store_order.amount');
|
|
//获取一周的提成
|
|
$data['lastweek'] = $stro->join('yz_order','yz_plugin_store_order.order_id','yz_order.id')->where('yz_order.plugin_id',32)->where(['store_id'=>$store['id']])->whereBetween('yz_plugin_store_order.created_at',[ $date['begin_lastweek'] , $date['end_lastweek'] ])->sum('yz_plugin_store_order.amount');
|
|
//获取昨天的提成
|
|
$data['yesterday'] = $stro->join('yz_order','yz_plugin_store_order.order_id','yz_order.id')->where('yz_order.plugin_id',32)->where(['store_id'=>$store['id']])->whereBetween('yz_plugin_store_order.created_at',[ $date['begin_yesterday'] , $date['end_yesterday'] ])->sum('yz_plugin_store_order.amount');
|
|
//获取今天的提成
|
|
$data['today'] = $stro->join('yz_order','yz_plugin_store_order.order_id','yz_order.id')->where('yz_order.plugin_id',32)->where(['store_id'=>$store['id']])->whereBetween('yz_plugin_store_order.created_at',[ $date['begin_today'] , $date['end_today'] ])->sum('yz_plugin_store_order.amount');
|
|
if ($data['data']){
|
|
return $this->successJson('查询成功',$data);
|
|
}
|
|
return $this->errorJson('查询失败',$data);
|
|
}
|
|
|
|
|
|
/**
|
|
* 收银台数据
|
|
*/
|
|
public function storeCashier($date,$status)
|
|
{
|
|
|
|
$data = [];
|
|
$store = Store::where('uid',\YunShop::app()->getMemberId())->first();
|
|
|
|
// 找到店主
|
|
$cashier_order = new \Yunshop\StoreCashier\common\models\CashierOrder();
|
|
$cashier_order_builder = $cashier_order->select(['yz_plugin_cashier_order.id','yz_plugin_cashier_order.order_id','yz_plugin_cashier_order.cashier_id','yz_plugin_cashier_order.has_settlement','yz_plugin_cashier_order.amount','yz_plugin_cashier_order.created_at','yz_order.order_sn'])->where('cashier_id',$store['cashier_id']);
|
|
|
|
if (!empty($status) && $status != 3 || $status == 0){
|
|
$cashier_order_builder->where('has_settlement',$status);
|
|
}
|
|
|
|
$data = $cashier_order_builder->join('yz_order','yz_order.id','yz_plugin_cashier_order.order_id')->orderBy('yz_plugin_cashier_order.created_at', 'desc')->paginate(15)->toArray();
|
|
|
|
foreach ($data['data'] as $key => $item){
|
|
$datas[$key]['order_sn'] = $item['order_sn'];
|
|
$datas[$key]['created_at'] = $item['created_at'];
|
|
$datas[$key]['status'] = $item['has_settlement'];
|
|
$datas[$key]['amount'] = $item['amount'];
|
|
switch ($item['has_settlement']){
|
|
case 0 : $datas[$key]['settlement'] = '未结算'; break;
|
|
case 1 : $datas[$key]['settlement'] = '已结算'; break;
|
|
case -1 : $datas[$key]['settlement'] = '已失效'; break;
|
|
}
|
|
}
|
|
|
|
$data['data'] = $datas ?: [];
|
|
|
|
//获取一月的提成
|
|
$data['thismonth'] = $cashier_order->where('cashier_id',$store['cashier_id'])->whereBetween('yz_plugin_cashier_order.created_at',[ $date['begin_thismonth'] , $date['end_thismonth'] ])->sum('yz_plugin_cashier_order.amount');
|
|
//获取一周的提成
|
|
$data['lastweek'] = $cashier_order->where('cashier_id',$store['cashier_id'])->whereBetween('yz_plugin_cashier_order.created_at',[ $date['begin_lastweek'] , $date['end_lastweek'] ])->sum('yz_plugin_cashier_order.amount');
|
|
//获取昨天的提成
|
|
$data['yesterday'] = $cashier_order->where('cashier_id',$store['cashier_id'])->whereBetween('yz_plugin_cashier_order.created_at',[ $date['begin_yesterday'] , $date['end_yesterday'] ])->sum('yz_plugin_cashier_order.amount');
|
|
//获取今天的提成
|
|
$data['today'] = $cashier_order->where('cashier_id',$store['cashier_id'])->whereBetween('yz_plugin_cashier_order.created_at',[ $date['begin_today'] , $date['end_today'] ])->sum('yz_plugin_cashier_order.amount');
|
|
|
|
if ($data['data']){
|
|
return $this->successJson('查询成功',$data);
|
|
}
|
|
return $this->successJson('查询失败',$data);
|
|
}
|
|
|
|
|
|
/**
|
|
* j酒店数据
|
|
*/
|
|
public function hotel($date,$status)
|
|
{
|
|
$data = [];
|
|
$hotel = Hotel::where('uid',\YunShop::app()->getMemberId())->first();
|
|
$hotel_order = HotelOrder::with('hasOneOrder')->where('hotel_id',$hotel['id']);
|
|
|
|
if (!empty($status) && $status != 3 || $status == 0){
|
|
$hotel_order->where('has_settlement',$status);
|
|
}
|
|
|
|
$data = $hotel_order->orderBy('created_at', 'desc')->paginate(15)
|
|
->toArray();
|
|
$pager = PaginationHelper::show($data['total'], $data['currentPage'], $data['perPage']);
|
|
foreach ($data['data'] as $key => $itme){
|
|
// dd($itme);
|
|
$datas[$key]['order_sn'] = $itme['has_one_order']['order_sn'];
|
|
$datas[$key]['created_at'] = $itme['created_at'];
|
|
$datas[$key]['amount'] = $itme['amount'];
|
|
$datas[$key]['status'] = $itme['has_settlement'];
|
|
switch ($itme['has_settlement']){
|
|
case 0 : $datas[$key]['settlement'] = '未结算'; break;
|
|
case 1 : $datas[$key]['settlement'] = '已结算'; break;
|
|
case -1 : $datas[$key]['settlement'] = '已失效'; break;
|
|
}
|
|
}
|
|
$data['data'] = $datas ?: [];
|
|
//获取一月的提成
|
|
$data['thismonth'] = $hotel_order->whereBetween('created_at',[ $date['begin_thismonth'] , $date['end_thismonth'] ])->sum('amount');
|
|
//获取一周的提成
|
|
$data['lastweek'] = $hotel_order->whereBetween('created_at',[ $date['begin_lastweek'] , $date['end_lastweek'] ])->sum('amount');
|
|
//获取昨天的提成
|
|
$data['yesterday'] = $hotel_order->whereBetween('created_at',[ $date['begin_yesterday'] , $date['end_yesterday'] ])->sum('amount');
|
|
//获取今天的提成
|
|
$data['today'] = $hotel_order->whereBetween('created_at',[ $date['begin_today'] , $date['end_today'] ])->sum('amount');
|
|
|
|
if ($data['data']){
|
|
return $this->successJson('查询成功',$data);
|
|
}
|
|
return $this->successJson('查询失败',$data);
|
|
}
|
|
|
|
|
|
/**
|
|
* 酒店收银台数据
|
|
*/
|
|
public function hotelashier($date,$status)
|
|
{
|
|
$data = [];
|
|
$hotel = Hotel::where('uid',\YunShop::app()->getMemberId())->first();
|
|
$hotel_order = CashierOrder::with('hasOneOrder')->where('cashier_id',$hotel['cashier_id']);
|
|
|
|
if (!empty($status) && $status != 3 || $status == 0){
|
|
$hotel_order->where('has_settlement',$status);
|
|
}
|
|
|
|
$data = $hotel_order->orderBy('created_at', 'desc')->paginate(15)
|
|
->toArray();
|
|
$pager = PaginationHelper::show($data['total'], $data['currentPage'], $data['perPage']);
|
|
foreach ($data['data'] as $key => $itme){
|
|
// dd($itme);
|
|
$datas[$key]['order_sn'] = $itme['has_one_order']['order_sn'];
|
|
$datas[$key]['created_at'] = $itme['created_at'];
|
|
$datas[$key]['amount'] = $itme['amount'];
|
|
$datas[$key]['status'] = $itme['has_settlement'];
|
|
switch ($itme['has_settlement']){
|
|
case 0 : $datas[$key]['settlement'] = '未结算'; break;
|
|
case 1 : $datas[$key]['settlement'] = '已结算'; break;
|
|
case -1 : $datas[$key]['settlement'] = '已失效'; break;
|
|
}
|
|
}
|
|
$data['data'] = $datas ?: [];
|
|
//获取一月的提成
|
|
$data['thismonth'] = $hotel_order->whereBetween('created_at',[ $date['begin_thismonth'] , $date['end_thismonth'] ])->sum('amount');
|
|
//获取一周的提成
|
|
$data['lastweek'] = $hotel_order->whereBetween('created_at',[ $date['begin_lastweek'] , $date['end_lastweek'] ])->sum('amount');
|
|
//获取昨天的提成
|
|
$data['yesterday'] = $hotel_order->whereBetween('created_at',[ $date['begin_yesterday'] , $date['end_yesterday'] ])->sum('amount');
|
|
//获取今天的提成
|
|
$data['today'] = $hotel_order->whereBetween('created_at',[ $date['begin_today'] , $date['end_today'] ])->sum('amount');
|
|
|
|
if ($data['data']){
|
|
return $this->successJson('查询成功',$data);
|
|
}
|
|
return $this->successJson('查询失败',$data);
|
|
}
|
|
/**
|
|
* 拍卖数据
|
|
*/
|
|
public function auction($date,$status)
|
|
{
|
|
$data = [];
|
|
$auction_order = AuctionOrderModel::with('hasOneOrder')->where('auctioneer_id',\YunShop::app()->getMemberId());
|
|
|
|
if (!empty($status) && $status != 3 || $status == 0){
|
|
$auction_order->where('has_settlement',$status);
|
|
}
|
|
|
|
$data = $auction_order->orderBy('created_at', 'desc')->paginate(15)
|
|
->toArray();
|
|
$pager = PaginationHelper::show($data['total'], $data['currentPage'], $data['perPage']);
|
|
foreach ($data['data'] as $key => $itme){
|
|
// dd($itme);
|
|
$datas[$key]['order_sn'] = $itme['has_one_order']['order_sn'];
|
|
$datas[$key]['created_at'] = $itme['created_at'];
|
|
$datas[$key]['amount'] = $itme['amount'];
|
|
$datas[$key]['status'] = $itme['has_settlement'];
|
|
switch ($itme['has_settlement']){
|
|
case 0 : $datas[$key]['settlement'] = '未结算'; break;
|
|
case 1 : $datas[$key]['settlement'] = '已结算'; break;
|
|
case -1 : $datas[$key]['settlement'] = '已失效'; break;
|
|
}
|
|
}
|
|
$data['data'] = $datas ?: [];
|
|
//获取一月的提成
|
|
$data['thismonth'] = $auction_order->whereBetween('created_at',[ $date['begin_thismonth'] , $date['end_thismonth'] ])->sum('amount');
|
|
//获取一周的提成
|
|
$data['lastweek'] = $auction_order->whereBetween('created_at',[ $date['begin_lastweek'] , $date['end_lastweek'] ])->sum('amount');
|
|
//获取昨天的提成
|
|
$data['yesterday'] = $auction_order->whereBetween('created_at',[ $date['begin_yesterday'] , $date['end_yesterday'] ])->sum('amount');
|
|
//获取今天的提成
|
|
$data['today'] = $auction_order->whereBetween('created_at',[ $date['begin_today'] , $date['end_today'] ])->sum('amount');
|
|
|
|
if ($data['data']){
|
|
return $this->successJson('查询成功',$data);
|
|
}
|
|
return $this->successJson('查询失败',$data);
|
|
}
|
|
|
|
/**
|
|
* 提现收入列表
|
|
* @return mixed
|
|
*/
|
|
public function incomeList()
|
|
{
|
|
$id = \YunShop::request()->id;
|
|
$request = Withdraw::getWithdrawInfoById($id)
|
|
->first();
|
|
$incomeModels = Income::getIncomeByIds($request->type_id)
|
|
->select(['id','pay_status','amount','created_at'])->paginate(15);
|
|
return $this->successJson('success',$incomeModels);
|
|
}
|
|
} |