fetch(); } /** * 创建/编辑经销商等级表单 * @param int $id 经销商等级ID(编辑时传递) * @return \think\response\View */ public function create($id = 0) { $dealerLevel = $id ? SystemDealerLevel::get($id) : null; if ($id && !$dealerLevel) { return JsonService::fail('经销商等级不存在'); } $field = []; // 等级名称 $field[] = Form::input('name', '经销商等级名称', $dealerLevel ? $dealerLevel->name : '') ->col(Form::col(24)) ->required('请输入经销商等级名称'); // 等级排序 $field[] = Form::number('grade', '等级排序', $dealerLevel ? $dealerLevel->grade : 0) ->min(0) ->col(Form::col(8)) ->required('请输入等级排序'); // 进货折扣 $field[] = Form::number('discount', '进货折扣(%)', $dealerLevel ? $dealerLevel->discount : 100) ->min(0)->max(100) ->col(Form::col(8)); // 佣金比例 $field[] = Form::number('commission_rate', '佣金比例(%)', $dealerLevel ? $dealerLevel->commission_rate : 0) ->min(0)->max(100) ->col(Form::col(8)); // 是否可见特供规格 $field[] = Form::radio('can_see_special', '可见特供规格', $dealerLevel ? $dealerLevel->can_see_special : 0) ->options([ ['label' => '可见', 'value' => 1], ['label' => '不可见', 'value' => 0] ]) ->col(Form::col(12)); // 是否显示 $field[] = Form::radio('is_show', '是否显示', $dealerLevel ? $dealerLevel->is_show : 1) ->options([ ['label' => '显示', 'value' => 1], ['label' => '隐藏', 'value' => 0] ]) ->col(Form::col(12)); // 等级图标 $field[] = Form::frameImageOne('icon', '等级图标', Url::buildUrl('admin/widget.images/index', ['fodder' => 'icon']), $dealerLevel ? $dealerLevel->icon : '') ->icon('image') ->width('100%') ->height('500px'); // 等级大图 $field[] = Form::frameImageOne('image', '等级大图', Url::buildUrl('admin/widget.images/index', ['fodder' => 'image']), $dealerLevel ? $dealerLevel->image : '') ->icon('image') ->width('100%') ->height('500px'); // 等级说明 $field[] = Form::textarea('explain', '等级说明', $dealerLevel ? $dealerLevel->explain : '') ->col(Form::col(24)); $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', ''], ['grade', 0], ['discount', 100], ['commission_rate', 0], ['can_see_special', 0], ['is_show', 1], ['icon', ''], ['image', ''], ['explain', ''], ]); // 参数验证 if (empty($data['name'])) return JsonService::fail('请输入经销商等级名称'); if ($data['discount'] < 0 || $data['discount'] > 100) return JsonService::fail('进货折扣请输入0-100之间的数值'); if ($data['commission_rate'] < 0 || $data['commission_rate'] > 100) return JsonService::fail('佣金比例请输入0-100之间的数值'); if (empty($data['grade']) && $data['grade'] !== 0) return JsonService::fail('请输入等级排序'); // 等级排序唯一性校验 $exists = SystemDealerLevel::where('is_del', 0) ->where('grade', $data['grade']) ->when($id, function ($query) use ($id) { $query->where('id', '<>', $id); }) ->find(); if ($exists) return JsonService::fail('该等级排序已存在,请更换'); SystemDealerLevel::startTrans(); try { if ($id) { $result = SystemDealerLevel::update($data, ['id' => $id]); } else { $data['add_time'] = time(); $result = SystemDealerLevel::create($data); } if ($result) { SystemDealerLevel::commit(); return JsonService::successful($id ? '修改成功' : '添加成功'); } else { SystemDealerLevel::rollback(); return JsonService::fail($id ? '修改失败' : '添加失败'); } } catch (\Exception $e) { SystemDealerLevel::rollback(); return JsonService::fail($e->getMessage()); } } /** * 获取经销商等级列表(分页+搜索) * @return \crmeb\services\JsonService */ public function get_list() { $where = UtilService::getMore([ ['page', 1], ['limit', 10], ['name', ''], ['is_show', ''], ]); $query = SystemDealerLevel::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 (SystemDealerLevel::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 ($is_show === '' || empty($id)) return JsonService::fail('缺少参数'); $result = SystemDealerLevel::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', 'discount', 'commission_rate']; if (!in_array($field, $allowFields)) return JsonService::fail('不允许修改的字段'); if (SystemDealerLevel::where('id', $id)->update([$field => $value])) { return JsonService::successful('保存成功'); } else { return JsonService::fail('保存失败'); } } // ==================== 用户经销商管理 ==================== /** * 用户经销商列表页面 * @return \think\response\View */ public function user_dealer_list() { $dealerLevels = SystemDealerLevel::where('is_del', 0) ->where('is_show', 1) ->order('grade asc') ->field('id, name') ->select(); $this->assign('dealerLevels', $dealerLevels); return $this->fetch(); } /** * 获取用户经销商列表(分页+关联用户信息) * @return \crmeb\services\JsonService */ public function get_user_dealer_list() { $where = UtilService::getMore([ ['page', 1], ['limit', 10], ['nickname', ''], ['level_id', ''], ]); $result = UserDealer::getUserDealerList($where); return JsonService::successlayui([ 'count' => $result['count'], 'data' => $result['data'], ]); } /** * 赠送经销商等级表单 * @param int $uid 用户ID * @return \think\response\View */ public function give_dealer_level($uid = 0) { if (!$uid) return $this->failed('缺少参数'); $dealerLevels = SystemDealerLevel::where('is_del', 0) ->where('is_show', 1) ->order('grade asc') ->field('id, name') ->select(); if ($dealerLevels->isEmpty()) { return $this->failed('暂无经销商等级,请先添加'); } $field[] = Form::select('dealer_level_id', '经销商等级')->setOptions(function () use ($dealerLevels) { $menus = []; foreach ($dealerLevels as $menu) { $menus[] = ['value' => $menu['id'], 'label' => $menu['name']]; } return $menus; })->filterable(1)->required('请选择经销商等级'); $form = Form::make_post_form('赠送经销商等级', $field, Url::buildUrl('save_give_dealer_level', ['uid' => $uid]), 2); $this->assign(compact('form')); return $this->fetch('public/form-builder'); } /** * 保存赠送经销商等级 * @param int $uid 用户ID * @return \crmeb\services\JsonService */ public function save_give_dealer_level($uid = 0) { if (!$uid) return JsonService::fail('缺少参数'); list($dealer_level_id) = UtilService::postMore([ ['dealer_level_id', 0], ], $this->request, true); $systemLevel = SystemDealerLevel::where(['is_show' => 1, 'is_del' => 0, 'id' => $dealer_level_id])->find(); if (!$systemLevel) return JsonService::fail('您选择的经销商等级不存在!'); // 检查是否已有该等级 $exist = UserDealer::where(['uid' => $uid, 'level_id' => $dealer_level_id, 'is_del' => 0])->find(); if ($exist) return JsonService::fail('此用户已有该经销商等级,请勿重复赠送'); UserDealer::startTrans(); try { $res = UserDealer::create([ 'uid' => $uid, 'level_id' => $dealer_level_id, 'grade' => $systemLevel->grade, 'status' => 1, 'is_del' => 0, 'add_time' => time(), 'spread_code' => '', 'mark' => '后台管理员于' . date('Y-m-d H:i:s') . '赠送【' . $systemLevel->name . '】经销商等级', ]); // 更新用户表中的经销商等级 $res = $res && User::where('uid', $uid)->update(['dealer' => $systemLevel->grade]); if ($res) { UserDealer::commit(); return JsonService::successful('赠送成功'); } else { UserDealer::rollback(); return JsonService::fail('赠送失败'); } } catch (\Exception $e) { UserDealer::rollback(); return JsonService::fail('赠送失败:' . $e->getMessage()); } } /** * 清除用户经销商等级 * @param int $uid 用户ID * @return \crmeb\services\JsonService */ public function del_dealer_level($uid = 0) { if (!$uid) return JsonService::fail('缺少参数'); if (UserDealer::cleanUpDealerLevel($uid)) return JsonService::successful('清除成功'); else return JsonService::fail('清除失败'); } }