2026-03-21 02:55:24 +08:00
< ? php
// +----------------------------------------------------------------------
2026-03-29 11:22:52 +08:00
// | Author: ScottPan Team
2026-03-21 02:55:24 +08:00
// +----------------------------------------------------------------------
2026-03-29 11:22:52 +08:00
2026-03-21 02:55:24 +08:00
declare ( strict_types = 1 );
namespace app\dao\user ;
use app\dao\BaseDao ;
use app\model\order\StoreOrder ;
use app\model\user\User ;
/**
*
* Class UserStoreOrderDao
* @ package app\dao\user
*/
class UserStoreOrderDao extends BaseDao
{
/**
* @ var string
*/
protected string $alias = '' ;
/**
* @ var string
*/
protected string $join_alis = '' ;
/**
* 设置模型
* @ return string
*/
protected function setModel () : string
{
return User :: class ;
}
public function joinModel () : string
{
return StoreOrder :: class ;
}
/**
* 关联模型
* @ param string $alias
* @ param string $join_alias
* @ return \crmeb\basic\BaseModel
*/
public function getModel ( string $table = '' , string $alias = 'u' , string $join_alias = 'p' , $join = 'left' )
{
$this -> alias = $alias ;
$this -> join_alis = $join_alias ;
if ( ! $table ) {
/** @var StoreOrder $storeOrder */
$storeOrder = app () -> make ( $this -> joinModel ());
$table = $storeOrder -> getName ();
}
return parent :: getModel () -> join ( $table . ' ' . $join_alias , $alias . '.uid = ' . $join_alias . '.uid' , $join ) -> alias ( $alias );
}
/**
* 推广团队列表
* @ param array $where
* @ param string $field
* @ param string $order_by
* @ param $page
* @ param $limit
* @ return array
* @ throws \think\db\exception\DataNotFoundException
* @ throws \think\db\exception\DbException
* @ throws \think\db\exception\ModelNotFoundException
*/
public function getUserSpreadCountList ( array $where , string $field , string $order_by , int $page , int $limit )
{
$table = app () -> make ( $this -> joinModel ()) -> getModel () -> where ( 'o.pid' , 'IN' , [ 0 , - 1 ]) -> group ( 'o.uid' ) -> field ([ 'SUM(o.pay_price) as numberCount' , 'count(o.id) as orderCount' , 'o.uid' , 'o.order_id' ])
-> where ( 'o.is_del' , 0 ) -> where ( 'o.is_system_del' , 0 ) -> where ( 'o.paid' , 1 ) -> where ( 'o.refund_status' , 'IN' , [ 0 , 3 ]) -> alias ( 'o' ) -> fetchSql ( true ) -> select ();
return $this -> getModel ( '(' . $table . ')' ) -> where ( $where ) -> field ( $field ) -> order ( $order_by ) -> page ( $page , $limit ) -> select () -> toArray ();
}
}