fetch(); } /** * 创建/编辑代理等级表单 * @param int $id 代理等级ID(编辑时传递) * @return \think\response\View */ public function create($id = 0) { $agentLevel = $id ? SystemUserAgentLevel::get($id) : null; if ($id && !$agentLevel) { return JsonService::fail('代理等级不存在'); } $field = []; // 等级名称 $field[] = Form::input('name', '代理等级名称', $agentLevel ? $agentLevel->name : '') ->col(Form::col(24)) ->required('请输入代理等级名称'); // 直推返利比例 $field[] = Form::number('direct_rebates', '直推返利比例(%)', $agentLevel ? $agentLevel->direct_rebates : 0) ->min(0)->max(100) ->col(Form::col(8)); // 间接返利比例 $field[] = Form::number('indirect_rebates', '间接返利比例(%)', $agentLevel ? $agentLevel->indirect_rebates : 0) ->min(0)->max(100) ->col(Form::col(8)); // 伞下返利比例 $field[] = Form::number('umbrella_rebates', '伞下返利比例(%)', $agentLevel ? $agentLevel->umbrella_rebates : 0) ->min(0)->max(100) ->col(Form::col(8)); // 代理进货折扣 // $field[] = Form::number('discount', '代理进货折扣(%)', $agentLevel ? $agentLevel->discount : 0) // ->min(0)->max(100) // ->col(Form::col(8)); // 是否永久有效 // $field[] = Form::radio('is_forever', '是否永久有效', $agentLevel ? $agentLevel->is_forever : 0) // ->options([ // ['label' => '永久', 'value' => 1], // ['label' => '非永久', 'value' => 0] // ]) // ->col(Form::col(24)); // 有效天数(非永久时必填) // $field[] = Form::number('valid_days', '有效天数', $agentLevel ? $agentLevel->valid_days : 0) // ->min(0) // ->col(Form::col(8)) // ->when($agentLevel && $agentLevel->is_forever == 0, function ($form) { // return $form->required('非永久有效时请输入有效天数'); // }) // ->when(!$agentLevel, function ($form) { // return $form->requiredIf('is_forever', 0, '非永久有效时请输入有效天数'); // }); // 等级排序 $field[] = Form::number('grade', '等级排序', $agentLevel ? $agentLevel->grade : 0) ->min(0) ->col(Form::col(8)) ->required('请输入等级排序'); // 是否显示 $field[] = Form::radio('is_show', '是否显示', $agentLevel ? $agentLevel->is_show : 1) ->options([ ['label' => '显示', 'value' => 1], ['label' => '隐藏', 'value' => 0] ]) ->col(Form::col(8)); // 返利规则说明 $field[] = Form::textarea('rule_explain', '返利规则说明', $agentLevel ? $agentLevel->rule_explain : '') ->col(Form::col(24)); // // 等级图标 // $field[] = Form::frameImageOne('icon', '等级图标', Url::buildUrl('admin/widget.images/index', ['fodder' => 'icon']), $agentLevel ? $agentLevel->icon : '') // ->icon('image') // ->width('100%') // ->height('500px') // ->required('请上传等级图标'); $formTitle = $id ? '编辑代理等级' : '添加代理等级'; $formUrl = Url::buildUrl('save', ['id' => $id]); $form = Form::make_post_form($formTitle, $field, $formUrl, 2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 保存/编辑代理等级 * @param int $id 代理等级ID(编辑时传递) * @return \crmeb\services\JsonService */ public function save($id = 0) { $data = UtilService::postMore([ ['name', ''], ['direct_rebates', 0], ['indirect_rebates', 0], ['umbrella_rebates', 0], ['discount', 0], // ['is_forever', 0], // ['valid_days', 0], ['grade', 0], ['is_show', 0], ['rule_explain', ''], ['icon', ''], ]); // 参数验证 if (empty($data['name'])) return JsonService::fail('请输入代理等级名称'); if ($data['direct_rebates'] < 0 || $data['direct_rebates'] > 100) return JsonService::fail('直推返利比例请输入0-100之间的数值'); if ($data['indirect_rebates'] < 0 || $data['indirect_rebates'] > 100) return JsonService::fail('间接返利比例请输入0-100之间的数值'); if ($data['umbrella_rebates'] < 0 || $data['umbrella_rebates'] > 100) return JsonService::fail('伞下返利比例请输入0-100之间的数值'); if ($data['discount'] < 0 || $data['discount'] > 100) return JsonService::fail('代理进货折扣请输入0-100之间的数值'); if (empty($data['grade'])) return JsonService::fail('请输入等级排序'); // if (empty($data['rule_explain'])) return JsonService::fail('请输入返利规则说明'); // if (empty($data['icon'])) return JsonService::fail('请上传等级图标'); // if ($data['is_forever'] == 0 && empty($data['valid_days'])) return JsonService::fail('非永久有效时,请输入有效天数'); // 等级排序唯一性校验 $exists = SystemUserAgentLevel::where('is_del', 0) ->where('grade', $data['grade']) ->when($id, function ($query) use ($id) { $query->where('id', '<>', $id); }) ->find(); if ($exists) return JsonService::fail('该等级排序已存在,请更换'); SystemUserAgentLevel::startTrans(); try { if ($id) { // 编辑操作 $result = SystemUserAgentLevel::update($data, ['id' => $id]); } else { // 新增操作 $data['add_time'] = time(); $result = SystemUserAgentLevel::create($data); } if ($result) { SystemUserAgentLevel::commit(); return JsonService::successful($id ? '修改成功' : '添加成功'); } else { SystemUserAgentLevel::rollback(); return JsonService::fail($id ? '修改失败' : '添加失败'); } } catch (\Exception $e) { SystemUserAgentLevel::rollback(); return JsonService::fail($e->getMessage()); } } /** * 获取代理等级列表(分页+搜索) * @return \crmeb\services\JsonService */ public function get_system_agent_list() { $where = UtilService::getMore([ ['page', 1], ['limit', 10], ['name', ''], ['is_show', ''], ]); $query = SystemUserAgentLevel::where('is_del', 0); // 名称搜索 if ($where['name']) $query->where('name', 'like', "%{$where['name']}%"); // 显示状态筛选 if ($where['is_show'] !== '') $query->where('is_show', $where['is_show']); $list = $query->order('grade asc') ->paginate([ 'page' => $where['page'], 'list_rows' => $where['limit'], ]); return JsonService::successlayui([ 'count' => $list->total(), 'data' => $list->items(), ]); } /** * 删除代理等级(软删除) * @param int $id 代理等级ID * @return \crmeb\services\JsonService */ public function delete($id = 0) { if (empty($id)) return JsonService::fail('缺少参数ID'); if (SystemUserAgentLevel::update(['is_del' => 1], ['id' => $id])) { return JsonService::successful('删除成功'); } else { return JsonService::fail('删除失败'); } } /** * 设置代理等级显示状态 * @param int $is_show 显示状态(1=显示,0=隐藏) * @param int $id 代理等级ID * @return \crmeb\services\JsonService */ public function set_show($is_show = '', $id = '') { if (empty($is_show) || empty($id)) return JsonService::fail('缺少参数'); $result = SystemUserAgentLevel::where('id', $id)->update(['is_show' => (int)$is_show]); return $result ? JsonService::successful($is_show == 1 ? '显示成功' : '隐藏成功') : JsonService::fail($is_show == 1 ? '显示失败' : '隐藏失败'); } /** * 快速编辑代理等级字段 * @param string $field 字段名 * @param int $id 代理等级ID * @param mixed $value 字段值 * @return \crmeb\services\JsonService */ public function set_value($field = '', $id = '', $value = '') { if (empty($field) || empty($id) || $value === '') return JsonService::fail('缺少参数'); // 允许编辑的字段白名单 $allowFields = ['grade', 'direct_rebates', 'indirect_rebates', 'umbrella_rebates', 'discount']; if (!in_array($field, $allowFields)) return JsonService::fail('不允许修改的字段'); if (SystemUserAgentLevel::where('id', $id)->update([$field => $value])) { return JsonService::successful('保存成功'); } else { return JsonService::fail('保存失败'); } } /** * 用户代理等级列表页面 * @return \think\response\View */ public function user_agent_level_list() { $agentLevels = SystemUserAgentLevel::where('is_del', 0) ->where('is_show', 1) ->order('grade asc') ->field('id, name') ->select(); $this->assign('agentLevels', $agentLevels); return $this->fetch(); } /** * 获取用户代理等级列表(分页+关联用户信息) * @return \crmeb\services\JsonService */ public function get_user_agent_list() { $where = UtilService::getMore([ ['page', 1], ['limit', 10], ['nickname', ''], ['level_id', ''], ]); $list = SystemUserAgentLevel::alias('ual') ->join('eb_user u', 'ual.uid = u.uid') ->join('eb_agent_level al', 'ual.level_id = al.id') ->where('ual.is_del', 0) ->when($where['nickname'], function ($query) use ($where) { $query->where('u.nickname', 'like', "%{$where['nickname']}%"); }) ->when($where['level_id'], function ($query) use ($where) { $query->where('ual.level_id', $where['level_id']); }) ->field('ual.*, u.nickname, al.name as level_name') ->order('ual.add_time desc') ->paginate([ 'page' => $where['page'], 'list_rows' => $where['limit'], ]); return JsonService::successlayui([ 'count' => $list->total(), 'data' => $list->items(), ]); } }