// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\dao\user\level; use app\dao\BaseDao; use app\model\user\level\UserLevel; /** * 用户等技 * Class UserLevelDao * @package app\dao\user\level */ class UserLevelDao extends BaseDao { /** * 设置模型 * @return string */ protected function setModel(): string { return UserLevel::class; } /** * 根据uid 获取用户会员等级详细信息 * @param int $uid * @param string $field * @return array|\think\Model|null * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getUserLevel(int $uid, string $field = '*', $time = PHP_INT_MAX) { return $this->getModel()->where('uid', $uid)->where('is_del', 0)->where('status', 1)->where('add_time', '<', $time)->field($field)->with(['levelInfo'])->order('grade desc,add_time desc')->find(); } /** * 根据uid 获取用户会员等级详细信息 * @param int $uid * @param string $field * @return array|\think\Model|null * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getUserLevelBefore(int $uid, $addtime, string $field = '*') { return $this->getModel()->where('uid', $uid)->where('is_del', 0)->where('add_time', '<', $addtime)->where('status', 1)->field($field)->with(['levelInfo'])->order('grade desc,add_time desc')->find(); } /** * 获取用户等级折扣 * @param int $uid * @return mixed */ public function getDiscount(int $uid) { $level = $this->getModel()->where(['uid' => $uid, 'is_del' => 0, 'status' => 1])->with(['levelInfo' => function ($query) { $query->field('id,discount')->bind(['discount_num' => 'discount']); }])->order('id desc')->find(); return $level ? $level->toArray()['discount_num'] : NULL; } }