HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot//my.esfyn.top/Modules/Mp/Http/Controllers/Admin/MpTagsController.php
<?php

namespace Modules\Mp\Http\Controllers\Admin;


use EasyWeChat\Kernel\Exceptions\InvalidConfigException;
use GuzzleHttp\Exception\GuzzleException;

class MpTagsController extends MpController
{

    public $view = 'admin.mp_tags.';

    public $model = 'Modules\Mp\Models\MpTagsModel';

    /**
     * @throws InvalidConfigException
     */
    public function index($ident)
    {

        if (request()->ajax() && request()->wantsJson()) {

            $mp = $this->service->getMpObject($ident, 'id');
            $data = $mp->user_tag->list();
            $this->cache($ident, $data['tags']);

            return $this->success([
                'total' => count($data['tags']),
                'current_page' => 1,
                'last_page' => 1,
                'per_page' => count($data['tags']),
                'data' => $data['tags']
            ]);
        }

        return $this->view($this->view . 'index');
    }


    /**
     * @throws InvalidConfigException
     * @throws GuzzleException
     */
    public function store($ident)
    {
        $name = $this->param('name');

        $mp = $this->service->getMpObject($ident, 'id');
        $mp->user_tag->create($name);

        return $this->success();
    }


    /**
     * @throws InvalidConfigException
     */
    public function edit($ident)
    {
        $data = [];
        $tagId = $this->param('id');

        $mp = $this->service->getMpObject($ident, 'id');
        $list = $mp->user_tag->list();

        foreach ($list['tags'] as $tag) {
            if ($tag['id'] == $tagId) {
                $data = $tag;
                break;
            }
        }

        return $this->view($this->view . 'edit', compact('data'));
    }


    /**
     * @throws InvalidConfigException
     * @throws GuzzleException
     */
    public function update($ident)
    {
        $tagId = $this->param('id');
        $name = $this->param('name');

        $mp = $this->service->getMpObject($ident, 'id');
        $mp->user_tag->update($tagId, $name);

        return $this->success();
    }


    /**
     * @param $ident
     * @param $data
     * @return void
     */
    protected function cache($ident, $data = [])
    {
        $this->getModel()::where('mp_id', $ident)
            ->whereNotIn('tag_id', array_column($data, 'id'))
            ->delete();

        foreach ($data as $value) {

            $result = $this->getModel()::where('mp_id', $ident)
                ->where('tag_id', $value['id'])->first();

            if ($result) {
                $this->getModel()::where('mp_id', $ident)
                    ->where('tag_id', $value['id'])->update([
                        'name' => $value['name']
                    ]);
            } else {
                $this->getModel()::insert([
                    'mp_id' => $ident,
                    'tag_id' => $value['id'],
                    'name' => $value['name'],
                ]);
            }
        }
    }
}