From 565a1597458fb9093e2800d86a4244af36c9e956 Mon Sep 17 00:00:00 2001 From: wanyongkang <937888580@qq.com> Date: Sat, 24 Oct 2020 15:40:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/order/controller/IncomeCheck.php | 25 +++++++--- fastphp/base/Model.php | 14 +++++- fastphp/db/Sql.php | 73 +++++++++++++++++++++++++++- script/income_check_script.php | 18 +++---- 4 files changed, 110 insertions(+), 20 deletions(-) diff --git a/app/order/controller/IncomeCheck.php b/app/order/controller/IncomeCheck.php index 1d9afa6..0efa799 100644 --- a/app/order/controller/IncomeCheck.php +++ b/app/order/controller/IncomeCheck.php @@ -5,7 +5,7 @@ * @Author: kangkang * @Date: 2020-10-13 19:52:37 * @LastEditors: kangkang - * @LastEditTime: 2020-10-23 18:26:27 + * @LastEditTime: 2020-10-24 14:23:06 */ /* * @Descripttion: @@ -34,31 +34,40 @@ class IncomeCheck extends Controller if (isset($_GET['PageIndex'])) { $page = ($_GET['PageIndex'] - 1) * 50; } - if (isset($_GET['ProductId'])){ + if (isset($_GET['ProductId'])) { $where['ProductId'] = $_GET['ProductId']; } - if (isset($_GET['PackageId'])){ + if (isset($_GET['PackageId'])) { $where['PackageId'] = $_GET['PackageId']; } - if (!empty($_GET['keyWord'])){ + if (!empty($_GET['keyWord'])) { $where['OrderNo'] = $_GET['keyWord']; } - + $check_model = new CheckModel; $list = $check_model->getListPage([], '*', 'id desc', "$page,50"); + foreach ($list as $k => &$v) { + $v['day_time'] = date('Y-m-d', strtotime($v['day_time']) - 86400); + } $data = [ 'Code' => 10000, 'data' => $list, 'msg' => '', - 'count' => (int)$check_model->getCount()['count'], + 'count' => (int) $check_model->getCount()['count'], ]; echo json_encode($data); } - public function search(){ + public function search() + { $data = json_decode(file_get_contents("php://input"), true)['time']; + $data[0] = date('Y-m-d', strtotime($data[0]) + 86400) . ' 00:00:00'; + $data[1] = date('Y-m-d', strtotime($data[1]) + 86400) . ' 23:59:59'; $check_model = new CheckModel; - $list = $check_model->getListPage(['day_time'=>['>',$data[0]],'day_time'=>['<',$data[1]]], '*', 'id desc', "10000"); + $list = $check_model->getListPages(['day_time' => [['>' , $data[0]], ['<' , $data[1]]]], '*', 'id desc', "10000"); + foreach ($list as $k => &$v) { + $v['day_time'] = date('Y-m-d', strtotime($v['day_time']) - 86400); + } $data = [ 'Code' => 30000, 'data' => $list, diff --git a/fastphp/base/Model.php b/fastphp/base/Model.php index b39325c..0bc2aa4 100644 --- a/fastphp/base/Model.php +++ b/fastphp/base/Model.php @@ -2,7 +2,7 @@ /* * @Author: your name * @Date: 2020-09-30 17:32:46 - * @LastEditTime: 2020-10-23 16:23:12 + * @LastEditTime: 2020-10-24 12:11:18 * @LastEditors: kangkang * @Description: In User Settings Edit * @FilePath: /phptest/fastphp/base/Model.php @@ -52,6 +52,18 @@ class Model extends Sql return $this->field($fields)->where($where)->order($order)->limit($limit)->fetchAll(); } + /** + * 按照页数获取数据 复杂查询 + * @param $fields 'id,count(1)...' + * @param $order 'id desc'/'id asc' + * @param $limit = '100' 限制查询100条 + * $limit = '2,100' 查询第二页 100条数据 + */ + public function getListPages($where = [], $fields = '*', $order = 'id desc', $limit = '50') + { + return $this->field($fields)->wheres($where)->order($order)->limit($limit)->fetchAll(); + } + /** * @description: 获取一条数据 * @param {type} diff --git a/fastphp/db/Sql.php b/fastphp/db/Sql.php index 708c273..8245325 100644 --- a/fastphp/db/Sql.php +++ b/fastphp/db/Sql.php @@ -31,9 +31,11 @@ class Sql $this->param = []; $this->filter = ''; if ($where) { - $this->filter .= ' WHERE '; + if(!strpos('$this->filter','WHERE') !== false){ + $this->filter .= ' WHERE '; + } if (is_string($where)) { - $this->filter .= ' ' . $where; + $this->filter .= ' WHERE ' . $where; } else { $flag = true; foreach ($where as $key => $value) { @@ -69,6 +71,73 @@ class Sql return $this; } + /** + * @description: 查询条件 处理复杂查询条件 + * @param {*} [ 'day_time' => [ ['>' , val1], ['<' , val2] ] ] + * @return {*} + */ + public function wheres($where) + { + $this->param = []; + $this->filter = ''; + if ($where) { + + if(!strpos('$this->filter','WHERE') !== false){ + $this->filter .= ' WHERE '; + } + if (is_string($where)) { + $this->filter .= ' WHERE ' . $where; + } else { + $flag = true; + foreach ($where as $key => $value) { + if ($flag) { + $flag = false; + if (is_array($value)) { + $flag2 = true; + foreach($value as $k => $v) { + if($flag2){ + $flag2 = false; + if($v[0] == 'in'){ + $this->filter .= ' `' . $key . '` ' . $v[0] . '('.implode(',',$v[1]).')'; + } else { + $this->filter .= ' `' . $key . '` ' . $v[0] . ' :' . $key.$k; + $this->param[$key.$k] = $v[1]; + } + } else { + if($v[0] == 'in'){ + $this->filter .= ' AND `' . $key . '` ' . $v[0] . '('.implode(',',$v[1]).')'; + } else { + $this->filter .= ' AND `' . $key . '` ' . $v[0] . ' :' . $key.$k; + $this->param[$key.$k] = $v[1]; + } + } + } + } else { + $this->filter .= ' `' . $key . '` = :' . $key; + $this->param[$key] = $value; + } + } else { + if (is_array($value)) { + foreach($value as $k => $v) { + if($v[0] == 'in'){ + $this->filter .= ' AND `' . $key . '` ' . $v[0] . '('.implode(',',$v[1]).')'; + } else { + $this->filter .= ' AND `' . $key . '` ' . $v[0] . ' :' . $key.$k; + $this->param[$key.$k] = $v[1]; + } + } + } else { + $this->filter .= ' AND `' . $key . '` = :' . $key; + $this->param[$key] = $value; + } + } + } + } + } + return $this; + } + + /** * 拼装排序条件 * @param array $order 排序条件 diff --git a/script/income_check_script.php b/script/income_check_script.php index 5b47057..808c259 100644 --- a/script/income_check_script.php +++ b/script/income_check_script.php @@ -5,7 +5,7 @@ * @Author: kangkang * @Date: 2020-10-03 18:23:43 * @LastEditors: kangkang - * @LastEditTime: 2020-10-23 18:56:29 + * @LastEditTime: 2020-10-24 14:52:12 */ $is_script = 1; include __DIR__ . '/../index.php'; @@ -37,20 +37,20 @@ $today = date('Y-m-d', time()); $yesterday = date('Y-m-d', (time() - 86400)); $data['user_balance'] = $user->field('SUM(`RestAmount`) AS balance')->fetch()['balance']; -$where = ['UpdateTime' => ['<', $data], 'UpdateTime' => ['>', $yesterday]]; +$where = ['UpdateTime' => [['<', $today],['>', $yesterday]]]; $data['ali_invest'] = $charge_order_model ->field('SUM(`OrderAmount`) AS ali_invest') - ->where(['TradeNo' => ['like', '2020%'], 'OrderState' => ['in', $charge_order_enum::$PayComplete], 'UpdateTime' => ['<', date('Y-m-d', time())], 'UpdateTime' => ['>', date('Y-m-d', (time() - 86400))]]) + ->wheres(['TradeNo' => ['like', '2020%'], 'OrderState' => ['in', $charge_order_enum::$PayComplete], 'UpdateTime' => [['<', date('Y-m-d', time())],['>', date('Y-m-d', (time() - 86400))]]]) ->fetch()["ali_invest"] ?? 0; $data['wechat_invest'] = $charge_order_model ->field('SUM(`OrderAmount`) AS wechat_invest') - ->where(['TradeNo' => ['like', '4200%'], 'OrderState' => ['in', $charge_order_enum::$PayComplete], 'UpdateTime' => ['<', date('Y-m-d', time())], 'UpdateTime' => ['>', date('Y-m-d', (time() - 86400))]]) + ->wheres(['TradeNo' => ['like', '4200%'], 'OrderState' => ['in', $charge_order_enum::$PayComplete], 'UpdateTime' => [['<', date('Y-m-d', time())],['>', date('Y-m-d', (time() - 86400))]]]) ->fetch()["wechat_invest"] ?? 0; $invest_info = $score_model ->field('ScoreType,SUM(`ScoreValue`) AS money') - ->where($where) + ->wheres($where) ->group(['ScoreType']) ->fetchAll(); @@ -81,7 +81,7 @@ foreach ($invest_info as $v) { $pay_info_where = array_merge($where, ['OrderState' => ['in', $product_order_enum::$PayComplete]]); $pay_info = $product_order_model ->field('PayType,SUM(`PaymentAmount`) AS money') - ->where($pay_info_where) + ->wheres($pay_info_where) ->group(['PayType']) ->fetchAll(); foreach ($pay_info as $v) { @@ -100,7 +100,7 @@ foreach ($pay_info as $v) { $amount_info_where = array_merge($where, ['OrderState' => ['in', $product_order_enum::$PayComplete]]); $amount_info = $product_order_model ->field('OrderType,SUM(`PaymentAmount`) AS money') - ->where($amount_info_where) + ->wheres($amount_info_where) ->group(['OrderType']) ->fetchAll(); @@ -119,7 +119,7 @@ foreach ($amount_info as $v) { } $data['refund_amount'] = $product_order_model ->field('SUM(`RefundAmount`) AS refund_amount') - ->where(array_merge($where, ['OrderState' => ['in', $product_order_enum::$Refunds]])) + ->wheres(array_merge($where, ['OrderState' => ['in', $product_order_enum::$Refunds]])) ->fetch()["refund_amount"] ?? 0; //获取昨天的数据 $yestoday_user_balance = $income_check_model->getNewOne()['user_balance'] ?? 0; @@ -134,7 +134,7 @@ $data['balance_diff'] = $base_money - $data['balance_pay']; $data['in_out_diff'] = $base_money + $data['balance_pay'] + $data['ali_pay'] + $data['wechat_pay'] - $data['new_amount'] - $data['renew_amount']; $data['sell_monet'] = $data['new_amount'] + $data['renew_amount'] - $data['refund_amount']; $data['income'] = $data['ali_invest'] + $data['wechat_invest'] - $data['taobao_invest'] + $data['ali_pay'] + $data['wechat_pay']; -$data['expend'] = $data['cash_out'] + $data['taobao_refund']; +$data['expend'] = $data['cash_out'] + $data['taobao_refund'] - $data['cash_out_refund']; $data['day_time'] = date('Y-m-d H:i:s'); // dump($data);die; $income_check_model->add($data);