8 changed files with 319 additions and 1 deletions
-
31app/Admin/Controllers/MiniProgramDraftController.php
-
25app/Admin/Controllers/MiniProgramListController.php
-
32app/Admin/Controllers/MiniProgramTemplateController.php
-
56app/Admin/Repositories/MiniProgramDraft.php
-
56app/Admin/Repositories/MiniProgramList.php
-
56app/Admin/Repositories/MiniProgramTemplate.php
-
5app/Admin/routes.php
-
59app/Http/Controllers/Api/MiniProgramController.php
@ -0,0 +1,31 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
use App\Admin\Repositories\MiniProgramDraft; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Http\Controllers\AdminController; |
|||
|
|||
/** |
|||
* 小程序草稿箱 |
|||
* Class MiniProgramController |
|||
* @package App\Admin\Controllers |
|||
*/ |
|||
class MiniProgramDraftController extends AdminController |
|||
{ |
|||
protected $title = '小程序草稿箱'; |
|||
|
|||
protected function grid(): Grid |
|||
{ |
|||
return Grid::make(new MiniProgramDraft, function (Grid $grid) { |
|||
$grid->disableCreateButton(); |
|||
|
|||
$grid->column('draft_id', 'ID'); |
|||
$grid->column('user_version', '版本号'); |
|||
$grid->column('user_desc', '描述'); |
|||
$grid->column('source_miniprogram', '来源小程序'); |
|||
$grid->column('source_miniprogram_appid', '上传者微信号'); |
|||
$grid->column('developer', '上传者微信昵称'); |
|||
$grid->column('create_time', '创建时间')->display(fn($v) => date('Y-m-d H:i:s', $v)); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,25 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
use App\Admin\Repositories\MiniProgramList; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Http\Controllers\AdminController; |
|||
|
|||
/** |
|||
* 小程序列表 |
|||
* Class MiniProgramController |
|||
* @package App\Admin\Controllers |
|||
*/ |
|||
class MiniProgramListController extends AdminController |
|||
{ |
|||
protected $title = '小程序列表'; |
|||
|
|||
protected function grid(): Grid |
|||
{ |
|||
return Grid::make(new MiniProgramList, function (Grid $grid) { |
|||
$grid->disableCreateButton(); |
|||
|
|||
$grid->column('authorizer_appid', 'APPID'); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Controllers; |
|||
use App\Admin\Repositories\MiniProgramTemplate; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Http\Controllers\AdminController; |
|||
|
|||
/** |
|||
* 小程序模板 |
|||
* Class MiniProgramController |
|||
* @package App\Admin\Controllers |
|||
*/ |
|||
class MiniProgramTemplateController extends AdminController |
|||
{ |
|||
protected $title = '小程序模板'; |
|||
|
|||
protected function grid(): Grid |
|||
{ |
|||
return Grid::make(new MiniProgramTemplate, function (Grid $grid) { |
|||
$grid->disableCreateButton(); |
|||
|
|||
$grid->column('template_id', 'ID'); |
|||
$grid->column('template_type', '模板类型')->using([0 => '普通模板', 1 => '标准模板']); |
|||
$grid->column('user_version', '版本号'); |
|||
$grid->column('user_desc', '描述'); |
|||
$grid->column('source_miniprogram', '来源小程序'); |
|||
$grid->column('source_miniprogram_appid', '上传者微信号'); |
|||
$grid->column('developer', '上传者微信昵称'); |
|||
$grid->column('create_time', '创建时间')->display(fn($v) => date('Y-m-d H:i:s', $v)); |
|||
}); |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
use App\Models\AdminSetting; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Repositories\Repository; |
|||
use EasyWeChat\Factory; |
|||
use GuzzleHttp\Exception\GuzzleException; |
|||
use Illuminate\Pagination\LengthAwarePaginator; |
|||
|
|||
/** |
|||
* 小程序草稿箱 |
|||
* Class MiniProgramDraft |
|||
* @package App\Admin\Repositories |
|||
*/ |
|||
class MiniProgramDraft extends Repository |
|||
{ |
|||
public function getPrimaryKeyColumn() |
|||
{ |
|||
return 'draft_id'; |
|||
} |
|||
|
|||
/** |
|||
* 查询表格数据 |
|||
* |
|||
* @param Grid\Model $model |
|||
* @return LengthAwarePaginator |
|||
* @throws GuzzleException |
|||
*/ |
|||
public function get(Grid\Model $model): LengthAwarePaginator |
|||
{ |
|||
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); |
|||
$config = [ |
|||
'app_id' => $setting['service_appid'], |
|||
'secret' => $setting['service_appsecret'], |
|||
'token' => $setting['service_token'], |
|||
'aes_key' => $setting['service_aeskey'], |
|||
]; |
|||
|
|||
$openPlatform = Factory::openPlatform($config); |
|||
$codeTemplate = $openPlatform['code_template']; |
|||
|
|||
if (empty($codeTemplate) || (!$list = $codeTemplate->getDrafts())) { |
|||
$data['total'] = 0; |
|||
$data['subjects'] = []; |
|||
} else { |
|||
$data['total'] = count($list['draft_list']); |
|||
$data['subjects'] = $list['draft_list'] ?? []; |
|||
} |
|||
|
|||
return $model->makePaginator( |
|||
$data['total'] ?? 0, // 传入总记录数
|
|||
$data['subjects'] ?? [] // 传入数据二维数组
|
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
use App\Models\AdminSetting; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Repositories\Repository; |
|||
use EasyWeChat\Factory; |
|||
use GuzzleHttp\Exception\GuzzleException; |
|||
use Illuminate\Pagination\LengthAwarePaginator; |
|||
|
|||
/** |
|||
* 小程序草稿箱 |
|||
* Class MiniProgramDraft |
|||
* @package App\Admin\Repositories |
|||
*/ |
|||
class MiniProgramList extends Repository |
|||
{ |
|||
public function getPrimaryKeyColumn() |
|||
{ |
|||
return ''; |
|||
} |
|||
|
|||
/** |
|||
* 查询表格数据 |
|||
* |
|||
* @param Grid\Model $model |
|||
* @return LengthAwarePaginator |
|||
* @throws GuzzleException |
|||
*/ |
|||
public function get(Grid\Model $model): LengthAwarePaginator |
|||
{ |
|||
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); |
|||
$config = [ |
|||
'app_id' => $setting['service_appid'], |
|||
'secret' => $setting['service_appsecret'], |
|||
'token' => $setting['service_token'], |
|||
'aes_key' => $setting['service_aeskey'], |
|||
]; |
|||
|
|||
$openPlatform = Factory::openPlatform($config); |
|||
$codeTemplate = $openPlatform['code_template']; |
|||
|
|||
if (empty($codeTemplate) || (!$list = $openPlatform->getAuthorizers())) { |
|||
$data['total'] = 0; |
|||
$data['subjects'] = []; |
|||
} else { |
|||
$data['total'] = count($list['list']); |
|||
$data['subjects'] = $list['list'] ?? []; |
|||
} |
|||
|
|||
return $model->makePaginator( |
|||
$data['total'] ?? 0, // 传入总记录数
|
|||
$data['subjects'] ?? [] // 传入数据二维数组
|
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
<?php |
|||
|
|||
namespace App\Admin\Repositories; |
|||
use App\Models\AdminSetting; |
|||
use Dcat\Admin\Grid; |
|||
use Dcat\Admin\Repositories\Repository; |
|||
use EasyWeChat\Factory; |
|||
use GuzzleHttp\Exception\GuzzleException; |
|||
use Illuminate\Pagination\LengthAwarePaginator; |
|||
|
|||
/** |
|||
* 小程序模板 |
|||
* Class MiniProgramDraft |
|||
* @package App\Admin\Repositories |
|||
*/ |
|||
class MiniProgramTemplate extends Repository |
|||
{ |
|||
public function getPrimaryKeyColumn() |
|||
{ |
|||
return 'template_id'; |
|||
} |
|||
|
|||
/** |
|||
* 查询表格数据 |
|||
* |
|||
* @param Grid\Model $model |
|||
* @return LengthAwarePaginator |
|||
* @throws GuzzleException |
|||
*/ |
|||
public function get(Grid\Model $model): LengthAwarePaginator |
|||
{ |
|||
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); |
|||
$config = [ |
|||
'app_id' => $setting['service_appid'], |
|||
'secret' => $setting['service_appsecret'], |
|||
'token' => $setting['service_token'], |
|||
'aes_key' => $setting['service_aeskey'], |
|||
]; |
|||
|
|||
$openPlatform = Factory::openPlatform($config); |
|||
$codeTemplate = $openPlatform['code_template']; |
|||
|
|||
if (empty($codeTemplate) || (!$list = $codeTemplate->list())) { |
|||
$data['total'] = 0; |
|||
$data['subjects'] = []; |
|||
} else { |
|||
$data['total'] = count($list['template_list']); |
|||
$data['subjects'] = $list['template_list'] ?? []; |
|||
} |
|||
|
|||
return $model->makePaginator( |
|||
$data['total'] ?? 0, // 传入总记录数
|
|||
$data['subjects'] ?? [] // 传入数据二维数组
|
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Controllers\Api; |
|||
use App\Http\Controllers\Controller; |
|||
use App\Models\AdminSetting; |
|||
use EasyWeChat\Factory; |
|||
use EasyWeChat\OpenPlatform\Server\Guard; |
|||
use Illuminate\Http\Request; |
|||
use Illuminate\Support\Facades\DB; |
|||
|
|||
/** |
|||
* 小程序授权等相关 |
|||
* Class MiniProgramController |
|||
* @package App\Http\Controllers\Api |
|||
*/ |
|||
class MiniProgramController extends Controller |
|||
{ |
|||
// 第三方平台授权事件通知
|
|||
public function authEvent(Request $request) |
|||
{ |
|||
$setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); |
|||
$config = [ // 第三方平台信息
|
|||
'app_id' => $setting['service_appid'], |
|||
'secret' => $setting['service_appsecret'], |
|||
'token' => $setting['service_token'], |
|||
'aes_key' => $setting['service_aeskey'], |
|||
]; |
|||
|
|||
$openPlatform = Factory::openPlatform($config); |
|||
$server = $openPlatform->server; |
|||
|
|||
// 处理授权成功事件
|
|||
$server->push(function ($message) { |
|||
DB::table('auth_event')->insert([ |
|||
['response' => json_encode($message)] |
|||
]); |
|||
}, Guard::EVENT_AUTHORIZED); |
|||
|
|||
// 处理授权更新事件
|
|||
$server->push(function ($message) { |
|||
DB::table('auth_event')->insert([ |
|||
['response' => json_encode($message)] |
|||
]); |
|||
}, Guard::EVENT_UPDATE_AUTHORIZED); |
|||
|
|||
// 处理授权取消事件
|
|||
$server->push(function ($message) { |
|||
DB::table('auth_event')->insert([ |
|||
['response' => json_encode($message)] |
|||
]); |
|||
}, Guard::EVENT_UNAUTHORIZED); |
|||
|
|||
DB::table('auth_event')->insert([ |
|||
['response' => json_encode($request->all())] |
|||
]); |
|||
|
|||
return $server->serve(); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue