| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- // +----------------------------------------------------------------------
- // | saiadmin [ saiadmin快速开发框架 ]
- // +----------------------------------------------------------------------
- namespace plugin\saiadmin\app\controller\miniProgram;
- use plugin\saiadmin\app\logic\miniProgram\AlipayMiniProgramLogic;
- use plugin\saiadmin\app\validate\miniProgram\AlipayMiniProgramValidate;
- use plugin\saiadmin\basic\BaseController;
- use plugin\saiadmin\exception\ApiException;
- use plugin\saiadmin\service\Permission;
- use support\Request;
- use support\Response;
- /**
- * 支付宝小程序配置控制器
- */
- class AlipayMiniProgramController extends BaseController
- {
- private const LIST_FIELDS = [
- 'id',
- 'partner_id',
- 'mini_program_name',
- 'appid',
- 'credit_service_id',
- 'create_time',
- 'update_time',
- ];
- public function __construct()
- {
- $this->logic = new AlipayMiniProgramLogic();
- $this->validate = new AlipayMiniProgramValidate();
- parent::__construct();
- }
- #[Permission('支付宝小程序列表', 'core:miniProgram:alipay:index')]
- public function index(Request $request): Response
- {
- $where = $request->more([
- ['mini_program_name', ''],
- ['appid', ''],
- ]);
- $query = $this->logic->search($where)->field(self::LIST_FIELDS);
- if (!$this->isSuperAdmin()) {
- $query->where('partner_id', '=', $this->adminId);
- }
- return $this->success($this->logic->getList($query));
- }
- #[Permission('支付宝小程序详情', 'core:miniProgram:alipay:read')]
- public function read(Request $request): Response
- {
- $id = (int) $request->input('id', 0);
- if ($id <= 0) {
- return $this->fail('参数错误');
- }
- return $this->success($this->readAccessibleRecord($id));
- }
- #[Permission('绑定支付宝小程序', 'core:miniProgram:alipay:save')]
- public function save(Request $request): Response
- {
- $data = $request->post();
- $this->validate('save', $data);
- $data['partner_id'] = $this->adminId;
- $id = $this->logic->add($data);
- return $id ? $this->success(['id' => $id], '绑定成功') : $this->fail('绑定失败');
- }
- #[Permission('编辑支付宝小程序', 'core:miniProgram:alipay:update')]
- public function update(Request $request): Response
- {
- $data = $request->post();
- $id = (int) ($data['id'] ?? 0);
- if ($id <= 0) {
- return $this->fail('参数错误');
- }
- $this->readAccessibleRecord($id);
- $this->validate('update', $data);
- return $this->logic->edit($id, $data) !== false
- ? $this->success([], '修改成功')
- : $this->fail('修改失败');
- }
- #[Permission('删除支付宝小程序', 'core:miniProgram:alipay:destroy')]
- public function destroy(Request $request): Response
- {
- $ids = array_values(array_filter(array_map('intval', (array) $request->post('ids', []))));
- if ($ids === []) {
- return $this->fail('请选择要删除的数据');
- }
- foreach ($ids as $id) {
- $this->readAccessibleRecord($id);
- }
- return $this->logic->destroy($ids) ? $this->success([], '删除成功') : $this->fail('删除失败');
- }
- private function readAccessibleRecord(int $id): array
- {
- $model = $this->logic->read($id);
- $data = is_array($model) ? $model : $model->toArray();
- if (!$this->isSuperAdmin() && (int) ($data['partner_id'] ?? 0) !== $this->adminId) {
- throw new ApiException('无权访问该支付宝小程序配置');
- }
- return $data;
- }
- private function isSuperAdmin(): bool
- {
- return (int) ($this->adminInfo['is_super'] ?? 0) === 1;
- }
- }
|