// +---------------------------------------------------------------------- namespace app\model\user; use app\model\order\StoreOrder; use app\model\system\SystemUserLevel; use crmeb\basic\BaseModel; use crmeb\traits\ModelTrait; use think\Model; /** * Class User * @package app\model\user */ class User extends BaseModel { use ModelTrait; /** * @var string */ protected $pk = 'uid'; protected $name = 'user'; protected $insert = ['add_time', 'add_ip', 'last_time', 'last_ip']; protected $hidden = [ 'add_ip', 'account', 'clean_time', 'last_ip', 'pwd' ]; /** * 自动转类型 * @var string[] */ protected $type = [ 'birthday' => 'int' ]; protected $updateTime = false; protected function setAddTimeAttr($value) { return time(); } protected function setAddIpAttr($value) { return app('request')->ip(); } protected function setLastTimeAttr($value) { return time(); } protected function setLastIpAttr($value) { return app('request')->ip(); } /** * 链接会员登陆设置表 * @return \think\model\relation\HasOne */ public function systemUserLevel() { return $this->hasOne(SystemUserLevel::class, 'id', 'level'); } /** * 关联用户分组 * @return \think\model\relation\HasOne */ public function userGroup() { return $this->hasOne(UserGroup::class, 'id', 'group_id'); } /** * 关联自己 * @return \think\model\relation\HasOne */ public function spreadUser() { return $this->hasOne(self::class, 'uid', 'spread_uid'); } /** * 关联自己 * @return \think\model\relation\HasOne */ public function spreadCount() { return $this->hasMany(User::class, 'spread_uid', 'uid'); } /** * 关联用户标签关系 * @return \think\model\relation\HasMany */ public function LabelRelation() { return $this->hasMany(UserLabelRelation::class, 'uid', 'uid'); } /** * 关联用户标签 * @return \think\model\relation\HasManyThrough */ public function label() { return $this->hasManyThrough(UserLabel::class, UserLabelRelation::class, 'uid', 'id', 'uid', 'label_id'); } /** * 关联用户地址 * @return \think\model\relation\HasMany */ public function address() { return $this->hasMany(UserAddress::class, 'uid', 'uid'); } /** * 关联提现 * @return \think\model\relation\HasMany */ public function extract() { return $this->hasMany(UserExtract::class, 'uid', 'uid'); } /** * 关联订单 * @return User|\think\model\relation\HasMany */ public function order() { return $this->hasMany(StoreOrder::class, 'uid', 'uid'); } /** * 关联佣金数据 * @return \think\model\relation\HasMany */ public function bill() { return $this->hasMany(UserBill::class, 'uid', 'uid'); } /** * 用户uid * @param Model $query * @param $value */ public function searchUidAttr($query, $value) { if (is_array($value)) $query->whereIn('uid', $value); else $query->where('uid', $value); } /** * 账号搜索器 * @param Model $query * @param $value */ public function searchAccountAttr($query, $value) { $query->where('account', $value); } /** * 密码搜索器 * @param Model $query * @param $value */ public function searchPwdAttr($query, $value) { $query->where('pwd', $value); } /** * uid范围查询搜索器 * @param Model $query * @param $value */ public function searchUidsAttr($query, $value) { $query->whereIn('uid', $value); } /** * 模糊条件搜索器 * @param Model $query * @param $value */ public function searchLikeAttr($query, $value) { $query->where('account|nickname|phone|real_name|uid', 'LIKE', "%$value%"); } /** * 手机号搜索器 * @param Model $query * @param $value */ public function searchPhoneAttr($query, $value) { $query->where('phone', $value); } /** * 分组搜索器 * @param Model $query * @param $value */ public function searchGroupIdAttr($query, $value) { $query->where('group_id', $value); } /** * 是否推广人搜索器 * @param Model $query * @param $value */ public function searchIsPromoterAttr($query, $value) { $query->where('is_promoter', $value); } /** * 状态搜索器 * @param Model $query * @param $value */ public function searchStatusAttr($query, $value) { $query->where('status', $value); } /** * 会员等级搜索器 * @param Model $query * @param $value */ public function searchLevelAttr($query, $value) { $query->where('level', $value); } /** * 推广人uid搜索器 * @param Model $query * @param $value */ public function searchSpreadUidAttr($query, $value) { $query->where('spread_uid', $value); } /** * 用户类型搜索器 * @param Model $query * @param $value */ public function searchUserTypeAttr($query, $value) { if ($value != '') $query->where('user_type', $value); } /** * 购买次数搜索器 * @param Model $query * @param $value */ public function searchPayCountAttr($query, $value) { $query->where('pay_count', $value); } public function searchNicknameAttr($query, $value) { $query->where('nickname', "like", "%".$value."%"); } }