123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- <?php
- namespace App\DataApiNew\Models;
- use Illuminate\Database\Eloquent\SoftDeletes;
- use Illuminate\Database\Eloquent\Model;
- use Dcat\Admin\Traits\HasDateTimeFormatter;
- use Spatie\Permission\Traits\HasRoles;
- use Illuminate\Foundation\Auth\User as Authenticatable;
- use Laravel\Sanctum\HasApiTokens;
- use Laravel\Sanctum\NewAccessToken;
- use Illuminate\Support\Str;
- // 无表注释
- class AdminUsers extends Authenticatable
- {
- use SoftDeletes, HasDateTimeFormatter, HasRoles, HasApiTokens;
- protected $table = 'admin_users';
- protected $dateFormat = 'Y-m-d H:i:s';
- protected $guard_name = 'web';
- const ADMINID = 1; // 系统管理员ID
-
- // 自定义生成token方法
- public function createToken(string $name, array $abilities = ['*'])
- {
- $token = $this->tokens()->create([
- 'name' => $name,
- 'token' => hash('sha256', $plainTextToken = Str::random(40)),
- 'abilities' => $abilities,
- ]);
- return new NewAccessToken($token, $plainTextToken);
- }
- // 表字段
- protected $fillable = [
- 'id',
- 'user_id', // 用户id
- 'username', // 用户名
- 'password', // 密码
- 'name', // 名称
- 'avatar', // 头像
- 'remember_token',
- 'created_at',
- 'updated_at',
- 'real_password', // 真实密码
- 'mobile', // 联系电话
- 'address', // 地址
- 'yj', // 剩余佣金
- 'yj_p', // 佣金比例
- 'al_yj', // 已提现佣金
- 'share_code', // 邀请码
- 'role_ids', // 角色
- 'agent_level', // 代理等级:0合伙人 1代理
- 'kefu_type', // 客服类型 1:链接 2:图片
- 'kefu_url', // 客服链接
- 'kefu_image', // 客服图片
- 'small_shop_image', // 小店头像图片
- 'contact_number', // 联系电话
- 'contact_qrcode', // 联系二维码
- 'jkc_user_id', // 集客仓用户id
- 'yj_type', // 分成类型 1:比例 2:金额
- 'yj_a',
- 'default_yj_p', // 合伙人默认抽成比例
- 'remark', // 备注
- 'deleted_at', // 删除时间
- 'is_follow', // 下级分销是否强制关注
- 'is_package_sms', // 是否发送套餐短信
- 'is_real', // 是否实名
- 'id_name', // 身份证姓名
- 'id_card', // 身份证号码
- 'id_card_address', // 身份证家庭地址
- 'id_card_front', // 身份证正面
- 'id_card_back', // 身份证反面
- 'agent_operate', // 合伙人运营
- 'agent_kefu', // 合伙人客服
- 'agent_anchor', // 合伙人主播
- 'gzh_open_id', // 公众号open_id
- 'xcx_open_id', // 小程序open_id
- 'unionid', // unionid
- 'is_api', // 是否接口提单
- 'status', // 状态 0正常 1注销
- 'default_yj_type', // 合伙人默认抽成类型 0不启用 1比例 2金额
- 'default_yj_a',
- 'package_yj_status', // 套餐分成开关 0关 1开(默认)
- 'show_first_charge', // 显示首冲信息开关
- 'member_level_id', // 头衔id
- 'royalty_yj',
- 'is_put_order', // 是否允许下单 0禁止下单 1可以下单
- 'iot_yj_type', // 设备抽成类型 1比例 2金额
- 'iot_yj_p', // 设备抽成比例
- 'iot_yj_a',
- 'default_iot_yj_type', // 默认设备抽成类型 1比例 2金额
- 'default_iot_yj_p', // 默认设备抽成比例
- 'default_iot_yj_a',
- 'kd_yj_type', // 宽带抽成类型 1比例 2金额
- 'kd_yj_p', // 宽带抽成比例
- 'kd_yj_a',
- 'default_kd_yj_type', // 默认宽带抽成类型 1比例 2金额
- 'default_kd_yj_p', // 默认宽带抽成比例
- 'default_kd_yj_a',
- 'is_snapshotuser', // 是否快照授权 0否 1是
- 'level_path', // 上下级关系
- 'parent_id',// 上级用户id
- 'last_system_msg_id', // 最后系统消息id
- ];
- // 查询字段
- public static $selectFields = [
- 'id',
- 'user_id', // 用户id
- 'username', // 用户名
- 'password', // 密码
- 'real_password', // 真实密码
- // 'name', // 名称
- 'avatar', // 头像
- // 'remember_token',
- 'created_at',
- // 'updated_at',
- 'mobile', // 联系电话
- 'address', // 地址
- 'yj', // 剩余佣金
- // 'al_yj', // 已提现佣金
- // 'is_agent', // 是否是代理
- 'share_code', // 邀请码
- // 'role_ids', // 角色
- 'agent_level', // 代理等级:1一级 2二级 3三级 4四级
- // 'kefu_type', // 客服类型 1:链接 2:图片
- // 'kefu_url', // 客服链接
- // 'kefu_image', // 客服图片
- // 'small_shop_image', // 小店头像图片
- // 'contact_number', // 联系电话
- // 'contact_qrcode', // 联系二维码
- // 'jkc_user_id', // 集客仓用户id
- 'yj_type', // 分成类型 1:比例 2:金额
- 'yj_a',
- 'yj_p', // 佣金比例
- 'iot_yj_type', // 设备抽成类型 1比例 2金额
- 'iot_yj_p', // 设备抽成比例
- 'kd_yj_type', // 宽带抽成类型 1比例 2金额
- 'kd_yj_p', // 宽带抽成比例
- 'kd_yj_a',
- 'default_yj_type', // 合伙人默认抽成类型 0不启用 1比例 2金额
- 'default_yj_a',
- 'default_yj_p', // 合伙人默认抽成比例
- 'default_iot_yj_type', // 默认设备抽成类型 1比例 2金额
- 'default_iot_yj_p', // 默认设备抽成比例
- 'default_kd_yj_type', // 默认宽带抽成类型 1比例 2金额
- 'default_kd_yj_p', // 默认宽带抽成比例
- 'default_kd_yj_a',
- // 'remark', // 备注
- // 'deleted_at', // 删除时间
- // 'is_follow', // 下级分销是否强制关注
- // 'is_package_sms', // 是否发送套餐短信
- 'is_real', // 是否实名
- // 'id_name', // 身份证姓名
- // 'id_card', // 身份证号码
- // 'id_card_address', // 身份证家庭地址
- // 'id_card_front', // 身份证正面
- // 'id_card_back', // 身份证反面
- // 'agent_operate', // 合伙人运营
- // 'agent_kefu', // 合伙人客服
- // 'agent_anchor', // 合伙人主播
- // 'gzh_open_id', // 公众号open_id
- // 'xcx_open_id', // 小程序open_id
- // 'unionid', // unionid
- // 'is_api', // 是否接口提单
- 'status', // 状态
- // 'package_yj_status', // 套餐分成开关 0关 1开(默认)
- // 'show_first_charge', // 显示首冲信息开关
- 'member_level_id', // 头衔id
- 'level_path', // 上下级关系
- // 'royalty_yj',
- // 'is_put_order', // 是否允许下单 0禁止下单 1可以下单
- // 'is_snapshotuser', // 是否快照授权 0否 1是
- 'parent_id',// 上级用户id
- ];
- // 默认佣金配置
- public static $defaultYjConfig = [
- 'default_yj_type' => 1, // 合伙人默认抽成类型 0不启用 1比例 2金额
- 'default_yj_a' => 5, // 合伙人默认抽成金额
- 'default_yj_p' => 5, // 合伙人默认抽成比例
- 'default_iot_yj_type' => 1, // 默认设备抽成类型 1比例 2金额
- 'default_iot_yj_p' => 5, // 默认设备抽成比例
- 'default_kd_yj_type' => 1, // 默认宽带抽成类型 1比例 2金额
- 'default_kd_yj_p' => 5, // 默认宽带抽成比例
- 'default_kd_yj_a' => 5, // 默认宽带抽成金额
- ];
- // 是否实名
- const IS_REAL_YES = 1; // 是
- const IS_REAL_NO = 0; // 否
- public static $isReal = [
- self::IS_REAL_YES => '是',
- self::IS_REAL_NO => '否',
- ];
- // 不发送短信的手机号
- public static $notSmsMobile = [
- '15244141832',
- '13235388225',
- ];
- // 是否为超管
- public static function isAdmin($user_id)
- {
- $adminList = [1];
- return in_array($user_id, $adminList);
- }
- // 头衔
- public function member_level()
- {
- return $this->belongsTo(AdminUsersMemberLevel::class, 'member_level_id')->select(['id', 'name', 'tag', 'royalty_yj']);
- }
- // 用户套餐
- public function agent_package()
- {
- return $this->hasMany(AgentPackage::class, 'user_id', 'id')->select(['id','user_id','package_id','yj_type','yj_a','yj_p']);
- }
- // 获取全部上级,包括自己
- public static function getParents($id)
- {
- $level_path = self::where('id', $id)->value('level_path');
- preg_match_all('/\d+/', $level_path, $id_list);
- return $id_list[0];
- }
- // 获取全部下级,包括自己
- public static function getChildrens($id)
- {
- $level_path = self::where('level_path', 'like', '%\['.$id.'\]%')->orderByDesc('agent_level')->value('level_path');
- preg_match_all('/\d+/', $level_path, $id_list);
- $id_list = $id_list[0];
- $index = array_search($id, $id_list); // 找到自己的索引位置
- if ($index === false) {
- return [];
- }
- $id_list = array_slice($id_list, $index);
- return $id_list ?: [];
- }
- // 获取全部下级,不包括自己
- public static function getChildrensNotSelf($id)
- {
- $level_path = self::where('level_path', 'like', '%\['.$id.'\]%')->orderByDesc('agent_level')->value('level_path');
- preg_match_all('/\d+/', $level_path, $id_list);
- $id_list = $id_list[0];
- $index = array_search($id, $id_list); // 找到自己的索引位置
- if ($index === false) {
- return [];
- }
- $id_list = array_slice($id_list, $index + 1);
-
- return $id_list ?: [];
- }
- // 获取直属下级
- public static function getDirectChildrens($id)
- {
- $id_list = self::where('parent_id', $id)->pluck('id');
- return $id_list ?: [];
- }
- }
|