| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- <?php
- /**
- * 代理等级设置模型(对应表:system_user_agent_level)
- * 作用:管理代理等级的基础配置(名称、返利比例、有效期等)
- * @author: yourname
- * @day: 2025/10
- */
- namespace app\admin\model\system;
- use crmeb\traits\ModelTrait;
- use crmeb\basic\BaseModel;
- class SystemUserAgentLevel extends BaseModel
- {
- /**
- * 数据表主键
- * @var string
- */
- protected $pk = 'id';
- /**
- * 模型关联的数据表名
- * @var string
- */
- protected $name = 'system_user_agent_level';
- use ModelTrait;
- /**
- * add_time 字段修改器:新增时自动填充当前时间戳
- * @return int
- */
- public static function setAddTimeAttr()
- {
- return time();
- }
- /**
- * add_time 字段获取器:时间戳转格式化时间
- * @param int $value 时间戳
- * @return string 格式化时间(Y-m-d H:i:s)
- */
- public static function getAddTimeAttr($value)
- {
- return $value ? date('Y-m-d H:i:s', $value) : '';
- }
- /**
- * 构建代理等级查询条件(过滤删除、支持显示状态/名称搜索)
- * @param array $where 查询条件(如is_show、name等)
- * @param string $alias 表别名(联查时用)
- * @param SystemAgentLevel|null $model 模型实例(支持链式调用)
- * @return SystemAgentLevel
- */
- public static function setWhere($where, $alias = '', $model = null)
- {
- $model = $model === null ? new self() : $model;
- // 处理表别名
- if ($alias) {
- $model = $model->alias($alias);
- $alias .= '.';
- }
- // 基础条件:未删除
- $model = $model->where("{$alias}is_del", 0);
- // 筛选:显示状态(1=显示,0=隐藏)
- if (isset($where['is_show']) && $where['is_show'] !== '') {
- $model = $model->where("{$alias}is_show", $where['is_show']);
- }
- // 搜索:代理等级名称(模糊匹配)
- if (isset($where['name']) && $where['name']) {
- $model = $model->where("{$alias}name", 'LIKE', "%{$where['name']}%");
- }
- return $model;
- }
- /**
- * 获取代理等级列表(带分页、排序)
- * @param array $where 分页及筛选条件(page、limit、is_show、name等)
- * @return array 格式:['data' => 列表数据, 'count' => 总数]
- */
- public static function getSystemAgentList($where)
- {
- // 分页查询:按等级排序(grade越大等级越高)
- $data = self::setWhere($where)
- ->order('grade desc')
- ->page((int)$where['page'], (int)$where['limit'])
- ->select();
- $data = $data ? $data->toArray() : [];
- // 补充格式化字段(如有效期文本)
- foreach ($data as &$item) {
- $item['is_forever_text'] = $item['is_forever'] ? '永久有效' : '限时有效';
- $item['valid_days_text'] = $item['is_forever'] ? '—' : "{$item['valid_days']}天";
- }
- // 统计符合条件的总数
- $count = self::setWhere($where)->count();
- return compact('data', 'count');
- }
- /**
- * 根据等级ID获取单个代理等级配置详情
- * @param int $id 代理等级ID
- * @return array|null 等级详情(含格式化字段)
- */
- public static function getAgentLevelConfig($id)
- {
- $level = self::setWhere([])->where('id', $id)->find();
- if (!$level) return null;
- $level = $level->toArray();
- // 格式化显示字段
- $level['is_forever_text'] = $level['is_forever'] ? '永久有效' : '限时有效';
- $level['valid_days_text'] = $level['is_forever'] ? '—' : "{$level['valid_days']}天";
- $level['rebates_text'] = "直推:{$level['direct_rebates']}% | 间接:{$level['indirect_rebates']}% | 伞下:{$level['umbrella_rebates']}%";
- return $level;
- }
- }
|