<?php
/*
 * @Descripttion: 
 * @version: 
 * @Author: kangkang
 * @Date: 2020-10-22 16:13:41
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2020-12-03 16:28:11
 */


namespace app\agent\model;

use enum\order\ProductOrder as ProductOrderEnum;
use fastphp\base\Model;

class ProductOrder extends Model
{
    protected $table = 'product_order';

    /**
     * 按照页数获取数据
     * @param $fields 'id,count(1)...'
     * @param $order  'id desc'/'id asc'
     * @param $limit = '100'   限制查询100条
     *        $limit = '2,100' 查询第二页 100条数据
     */
    public function getAgentListPage($where = [],$where_str = '', $fields = '*', $order = 'id desc', $limit = '50')
    {
        return $this->field($fields)->where($where)->where($where_str)->order($order)->limit($limit)->fetchAll();
    }

    //获取上月消费
    public function getLastMonthCost($agent_id =[])
    {
        $st = date('Y-m-d', strtotime(date('Y-m-01') . " - 1 month"));
        $et = date('Y-m-d', strtotime(date('Y-m-01')));
        return $this->field("sum(PaymentAmount) as pay_money,agent_id")
                    ->where("UpdateTime>'$st' and UpdateTime<'$et' ")->where(['agent_id'=>['in',$agent_id]])
                    ->where(['OrderState' => ['in', ProductOrderEnum::$PayComplete]])
                    ->group(['agent_id'])
                    ->fetchAll();
    }
    //获取本月消费
    public function getMonthCost($agent_id =[])
    {
        $st = date('Y-m-d', strtotime(date('Y-m-01')));
        $et = date('Y-m-d', time());
        return $this->field("sum(PaymentAmount) as pay_money,agent_id")
                    ->where("UpdateTime>'$st' and UpdateTime<'$et' ")->where(['agent_id'=>['in',$agent_id]])
                    ->where(['OrderState' => ['in', ProductOrderEnum::$PayComplete]])
                    ->group(['agent_id'])
                    ->fetchAll();
    }
    //获取上月退款
    public function getLastMonthRefund($agent_id =[])
    {
        $st = date('Y-m-d', strtotime(date('Y-m-01') . " - 1 month"));
        $et = date('Y-m-d', strtotime(date('Y-m-01')));
        return $this->field("sum(PaymentAmount) as pay_money,agent_id")
                    ->where("UpdateTime>'$st' and UpdateTime<'$et' ")->where(['agent_id'=>['in',$agent_id]])
                    ->where(['OrderState' => ['in', ProductOrderEnum::$Refunds]])
                    ->group(['agent_id'])
                    ->fetchAll();
    }
    //获取本月退款
    public function getMonthRefund($agent_id =[])
    {
        $st = date('Y-m-d', strtotime(date('Y-m-01'))); 
        $et = date('Y-m-d', time());
        return $this->field("sum(PaymentAmount) as pay_money,agent_id")
                    ->where("UpdateTime>'$st' and UpdateTime<'$et' ")->where(['agent_id'=>['in',$agent_id]])
                    ->where(['OrderState' => ['in', ProductOrderEnum::$Refunds]])
                    ->group(['agent_id'])
                    ->fetchAll();
    }
}