DeAdmin 自定义调用 API 请求

需求:操作记录中有ip地址,现在需要在列表中增加获取归属地的功能,调用的方法不写在操作记录的控制器中

创建API公用模型

  • 模型页面中新建模型API,是一个空的模型,不需要配置字段信息
  • 在生成的控制器文件中加入获取地址归属地的方法
  • 示例代码如下

<?php
namespace App\Http\Controllers\admin\echoyl;
use Echoyl\Sa\Http\Controllers\admin\CrudController;
use App\Models\echoyl\Api;
use Echoyl\Sa\Models\perm\Log;
use Echoyl\Sa\Services\HelperService;

//customer namespace start

//customer namespace end

/**
 * @property \App\Services\echoyl\AdminAppService $service
 */
class ApiController extends CrudController
{
	//customer property start
	
	//customer property end
    public function __construct()
	{
		parent::__construct();
		
		$this->model = new Api();
		$this->model_class = Api::class;
		//customer construct start
		
		//customer construct end
	}

	//customer code start
	public function ipaddress()
	{
		$ip = request('ip');

		$id = request('id');

		if(!$id || !$ip)
		{
			return $this->fail([1,'参数错误']);
		}

		$ak = env('bmap_key');

		$url = 'https://api.map.baidu.com/location/ip';

		[$code,$data] = HelperService::get($url,['ip'=>$ip,'coor'=>'bd09ll','ak'=>$ak]);

		if($code)
		{
			return $this->fail([$code,$data]);
		}

		if($data['status'])
		{
			return $this->fail([$data['status'],$data['message']]);
		}

		$update = ['ipaddr'=>$data['address']];

		$model = new Log();

		$model->where(['id'=>$id])->update($update);

		return $this->success();
	}
	//customer code end
	
}



新增菜单指向该控制器

  • 创建菜单

image

  • 配置子权限 声明方法名

image

在目标页面中添加调用按钮

  • 增加一列 类型选择 customerColumn
  • 配置该列更多设置

image

  • 第一组件直接显示文字展示 dom 为 {{record?.ipaddr}}
  • 第二个组件选择按钮,条件为 {{!record?.ipaddr}}没有归属地才展示按钮
  • 配置按钮为confirm类型,增加request的url为刚创建的菜单路径
    image

完成效果图

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值