// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\dao\user; use app\dao\BaseDao; use app\model\user\UserBrokerage; /** * 用户佣金 * Class UserBrokerageDao * @package app\dao\user */ class UserBrokerageDao extends BaseDao { /** * 设置模型 * @return string */ protected function setModel(): string { return UserBrokerage::class; } /** * 获取列表 * @param array $where * @param string $field * @param int $page * @param int $limit * @param array $typeWhere * @param array $with * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getList(array $where, string $field = '*', int $page = 0, int $limit = 0, array $typeWhere = [], array $with = []) { return $this->search($where)->when(count($typeWhere) > 0, function ($query) use ($typeWhere) { $query->where($typeWhere); })->field($field)->when($page && $limit, function ($query) use ($page, $limit) { $query->page($page, $limit); })->when(!empty($with), function ($query) use ($with) { $query->with($with); })->order('id desc')->select()->toArray(); } /** * 获取佣金排行 * @param array $where * @param int $page * @param int $limit * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function brokerageRankList(array $where, int $page = 0, int $limit = 0) { $where['not_type'] = ['extract_fail', 'refund']; return $this->search($where)->where('pm', 1)->field('uid,SUM(number) as brokerage_price')->with(['user' => function ($query) { $query->field('uid,avatar,nickname'); }])->order('brokerage_price desc')->group('uid')->when($page && $limit, function ($query) use ($page, $limit) { $query->page($page, $limit); })->select()->toArray(); } /** * @param array $where * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getUserBrokerageList(array $where) { return $this->search($where)->select()->toArray(); } /** * 获取佣金记录类型 * @param array $where * @param string $filed * @return mixed */ public function getType(array $where, string $filed = 'title,type') { return $this->search($where)->distinct(true)->field($filed)->group('type')->select(); } /** * 修改收货状态 * @param int $uid * @param int $id * @return \crmeb\basic\BaseModel */ public function takeUpdate(int $uid, int $id) { return $this->getModel()->where('uid', $uid)->where('link_id', $id)->where('type', 'IN', ['one_brokerage', 'two_brokerage'])->update(['take' => 1]); } /** * 获取某个账户下的冻结佣金 * @param int $uid * @return float */ public function getUserFrozenPrice(int $uid) { return $this->search(['uid' => $uid, 'status' => 1, 'pm' => 1])->where('frozen_time', '>', time())->sum('number'); } /** * 获取某个条件总数 * @param array $where */ public function getBrokerageSum(array $where) { return $this->search($where)->sum('number'); } /** * 获取列表 * @param array $where * @param string $field * @param int $page * @param int $limit * @return array */ public function getBrokerageList(array $where, string $field = '*', int $page = 0, int $limit = 0) { return $this->search($where)->field($field)->with([ 'user' => function ($query) { $query->field('uid,nickname'); }])->when($page && $limit, function ($query) use ($page, $limit) { $query->page($page, $limit); })->order('id desc')->select()->toArray(); } /** * 获取某些条件的bill总数 * @param array $where * @return mixed */ public function getBrokerageSumColumn(array $where) { if (isset($where['uid']) && is_array($where['uid'])) { return $this->search($where)->group('uid')->column('sum(number) as num', 'uid'); } else return $this->search($where)->sum('number'); } }