jh-admin/addon/saas/shop/controller/Bill.php

232 lines
9.2 KiB
PHP

<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace addon\saas\shop\controller;
use addon\saas\model\DividemoneyBill;
use addon\saas\model\AgentAccount;
use app\model\system\Cron;
use extend\Time;
class Bill extends SaasBase
{
/***
* 列表
* @return array|mixed
*/
public function lists()
{
if (request()->isAjax()) {
$bill = new DividemoneyBill();
$search_text = input('search_text', '');
$states = input('status', '');
$channel_type = input('channel_type', '');
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$condition = [];
if ($this->site_id != 1) {
$condition[] = ['b.ag_site_id', '=', $this->site_id];
$condition[] = ['b.is_platform', '=', 2];
}
if ($states != '') {
$condition[] = ['b.states', '=', $states];
}
if ($channel_type != '') {
$condition[] = ['b.channel_type', '=', $channel_type];
}
//下单时间
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && $end_time) {
$condition[] = ['b.create_time', 'between', [date_to_time($start_time), date_to_time($end_time)]];
} elseif (!$start_time && $end_time) {
$condition[] = ['b.create_time', '<=', date_to_time($end_time)];
} elseif ($start_time && !$end_time) {
$condition[] = ['b.create_time', '>=', date_to_time($start_time)];
}
if ($search_text) {
$condition[] = ['s.username|s.site_name|s.contacts_mobile', 'like', '%' . $search_text . '%'];
}
$res = $bill->getPageList($condition, $page, $page_size);
return $res;
}
$condition = [];
if ($this->site_id != 1) {
$condition[] = ['ag_site_id', '=', $this->site_id];
$condition[] = ['is_platform', '=', 2]; //
} else {
// $condition[] = ['is_platform', '=', 1]; //统计平台
}
$totalCommission = model('dividemoney_bill')->getSum($condition, 'amount');
$todayCondition = $condition; //今日统计
$todayCondition[] = ['create_time', 'BETWEEN', Time::today()];
$todaytalCommission = model('dividemoney_bill')->getSum($todayCondition, 'amount');
$yesterdayCondition = $condition; //昨日统计
$yesterdayCondition[] = ['create_time', 'BETWEEN', Time::yesterday()];
$yesterdaytalCommission = model('dividemoney_bill')->getSum($yesterdayCondition, 'amount');
$noCondition = $condition;
$noCondition[] = ['states', '=', 0];//未分配
$nototalCommission = model('dividemoney_bill')->getSum($noCondition, 'amount');
$yesCondition = $condition;
$yesCondition[] = ['states', '=', 1];//成功统计
$yestotalCommission = model('dividemoney_bill')->getSum($yesCondition, 'amount');
$failCondition = $condition;
$failCondition[] = ['states', '>=', 2];//失败统计
$failtotalCommission = model('dividemoney_bill')->getSum($failCondition, 'amount');
$this->assign('yesterdaytalCommission', $yesterdaytalCommission);
$this->assign('todaytalCommission', $todaytalCommission);
$this->assign('failtotalCommission', $failtotalCommission);
$this->assign('yestotalCommission', $yestotalCommission);
$this->assign('nototalCommission', $nototalCommission);
$this->assign('totalCommission', $totalCommission);
$this->forthMenu();
return $this->fetch('bill/lists');
}
/***
* 支出明细
* @return array|mixed
*/
public function explists()
{
if (request()->isAjax()) {
$bill = new AgentAccount();
$search_text = input('search_text', '');
$states = input('status', '');
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$condition[] = ['b.ag_site_id', '=', $this->site_id];
//下单时间
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && $end_time) {
$condition[] = ['b.create_time', 'between', [date_to_time($start_time), date_to_time($end_time)]];
} elseif (!$start_time && $end_time) {
$condition[] = ['b.create_time', '<=', date_to_time($end_time)];
} elseif ($start_time && !$end_time) {
$condition[] = ['b.create_time', '>=', date_to_time($start_time)];
}
if ($search_text) {
$condition[] = ['s.username|s.site_name|s.contacts_mobile', 'like', '%' . $search_text . '%'];
}
$res = $bill->getPageList($condition, $page, $page_size);
return $res;
}
$this->forthMenu();
return $this->fetch('explists/lists');
}
/***
* 平台佣金
* @return void
*/
public function commission()
{
if (request()->isAjax()) {
$bill = new AgentAccount();
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$condition[] = ['w.agent_site_id', '=', $this->site_id];
//下单时间
$start_time = input('w.start_time', '');
$end_time = input('w.end_time', '');
if ($start_time && $end_time) {
$condition[] = ['w.create_time', 'between', [date_to_time($start_time), date_to_time($end_time)]];
} elseif (!$start_time && $end_time) {
$condition[] = ['w.create_time', '<=', date_to_time($end_time)];
} elseif ($start_time && !$end_time) {
$condition[] = ['w.create_time', '>=', date_to_time($start_time)];
}
$res = $bill->getCommissionPageList($condition, $page, $page_size);
return $res;
}
$settled_commission = model('website_commission')->getSum(['agent_site_id' => $this->site_id, 'is_settlement' => 1], 'commission_money');
$not_commission = model('website_commission')->getSum(['agent_site_id' => $this->site_id, 'is_settlement' => 0], 'commission_money');
$this->assign('settled_commission', $settled_commission);
$this->assign('not_commission', $not_commission);
$this->forthMenu();
return $this->fetch('commission/lists');
}
/***
* 结算异常商户
* @return array|mixed
*/
public function exalist()
{
if (request()->isAjax()) {
$bill = new AgentAccount();
$search_text = input('search_text', '');
$states = input('status', '');
$page = input('page', 1);
$page_size = input('page_size', PAGE_LIST_ROWS);
$condition[] = ['b.ag_site_id', '=', $this->site_id];
//下单时间
$start_time = input('start_time', '');
$end_time = input('end_time', '');
if ($start_time && $end_time) {
$condition[] = ['b.create_time', 'between', [date_to_time($start_time), date_to_time($end_time)]];
} elseif (!$start_time && $end_time) {
$condition[] = ['b.create_time', '<=', date_to_time($end_time)];
} elseif ($start_time && !$end_time) {
$condition[] = ['b.create_time', '>=', date_to_time($start_time)];
}
if ($search_text) {
$condition[] = ['s.username|s.site_name|s.contacts_mobile', 'like', '%' . $search_text . '%'];
}
$res = $bill->getPageList($condition, $page, $page_size);
return $res;
}
$this->forthMenu();
return $this->fetch('explists/lists');
}
/***
* 重置分账
* @return void
*/
public function resetDivide()
{
$site_id = input('site_id');
$where = [
'site_id' => $site_id,
'states' => 2
];
$info = model('dividemoney_bill')->getList($where);
$cron = new Cron();
if ($info) {
model('dividemoney_bill')->update(['states' => 0], $where);
foreach ($info as $key => $item) {
$cron->addCron(1, 1, '重启执行自动分账', 'AutoCronOrderDividemoney', time() + $key * 5, $item['order_id']);
}
}
return success(0, '刷新成功');
}
public function verifyDivide()
{
$site_id = input('site_id');
return $this->fetch('bill/verify');
}
}