102 行
2.8 KiB
PHP
可执行文件
102 行
2.8 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace app\api\controller\delivery\poster;
|
|
|
|
use addons\paotui\service\Config as PaotuiConfig;
|
|
use app\admin\model\paotui\Poster;
|
|
use app\common\exception\UploadException;
|
|
use app\common\library\Sms as Smslib;
|
|
use app\common\library\Upload;
|
|
use think\Hook;
|
|
|
|
/**
|
|
* 通用接口
|
|
*/
|
|
class Common extends PosterApi
|
|
{
|
|
|
|
// 无需登录的接口,*表示全部
|
|
protected $noNeedLogin = ['xieyi','send_sms','check_sms'];
|
|
// 无需鉴权的接口,*表示全部
|
|
protected $noNeedRight = "*";
|
|
|
|
|
|
public function _initialize()
|
|
{
|
|
parent::_initialize();
|
|
}
|
|
|
|
/**
|
|
* 获取合作协议
|
|
*/
|
|
public function xieyi(){
|
|
$this->success("请求成功",PaotuiConfig::get('xieyi'));
|
|
}
|
|
/**
|
|
* 上传文件
|
|
* @ApiMethod (POST)
|
|
* @param File $file 文件流
|
|
*/
|
|
public function upload()
|
|
{
|
|
$attachment = null;
|
|
//默认普通上传文件
|
|
$file = $this->request->file('file');
|
|
try {
|
|
$upload = new Upload($file);
|
|
$attachment = $upload->upload();
|
|
} catch (UploadException $e) {
|
|
$this->error($e->getMessage());
|
|
}
|
|
|
|
$this->success(__('Uploaded successful'), ['url' => $attachment->url, 'fullurl' => cdnurl($attachment->url, true)]);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* 发送验证码
|
|
*
|
|
* @param string $mobile 手机号
|
|
* @param string $event 事件名称
|
|
*/
|
|
public function send_sms()
|
|
{
|
|
$mobile = $this->request->post("mobile");
|
|
$event = $this->request->post("event");
|
|
$event = $event ? $event : 'mobilelogin';
|
|
|
|
if (!$mobile || !\think\Validate::regex($mobile, "^1\d{10}$")) {
|
|
$this->error(__('手机号不正确'));
|
|
}
|
|
|
|
$last = Smslib::get($mobile, $event);
|
|
if ($last && time() - $last['createtime'] < 60) {
|
|
$this->error(__('发送频繁'));
|
|
}
|
|
$ipSendTotal = \app\common\model\Sms::where(['ip' => $this->request->ip()])->whereTime('createtime', '-1 hours')->count();
|
|
if ($ipSendTotal >= 5) {
|
|
$this->error(__('发送频繁'));
|
|
}
|
|
if ($event) {
|
|
$posterModel = new Poster();
|
|
$posterInfo = $posterModel->where(['mobile'=>$mobile])->find();
|
|
if (empty($posterInfo)) {
|
|
$this->error(__('当前手机号码还未注册快递员'));
|
|
}
|
|
}
|
|
if (!Hook::get('sms_send')) {
|
|
$this->error(__('请在后台插件管理安装短信验证插件'));
|
|
}
|
|
|
|
$ret = Smslib::send($mobile, null, $event);
|
|
if ($ret) {
|
|
$this->success(__('发送成功'));
|
|
} else {
|
|
$this->error(__('发送失败,请检查短信配置是否正确'));
|
|
}
|
|
}
|
|
|
|
}
|