308 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace addons\manystore;
 | 
						|
 | 
						|
use app\common\library\Menu;
 | 
						|
use addons\manystore\library\ManystoreMenu;
 | 
						|
use think\Addons;
 | 
						|
use think\Exception;
 | 
						|
 | 
						|
/**
 | 
						|
 * 插件
 | 
						|
 */
 | 
						|
class Manystore extends Addons
 | 
						|
{
 | 
						|
 | 
						|
    protected $menu = [
 | 
						|
        [
 | 
						|
            'name' => 'manystore',
 | 
						|
            'title' => '商家管理',
 | 
						|
            'icon' => 'fa fa-list',
 | 
						|
            'remark' => 'Rule tips',
 | 
						|
            'sublist' => [
 | 
						|
                [
 | 
						|
                    'name' => 'manystore/index',
 | 
						|
                    'title' => '商家列表',
 | 
						|
                    'icon' => 'fa fa-list',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'manystore/index/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'manystore/index/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'manystore/index/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'manystore/index/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'manystore/rule',
 | 
						|
                    'title' => '商家菜单规则',
 | 
						|
                    'icon' => 'fa fa-list',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'manystore/rule/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'manystore/rule/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'manystore/rule/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'manystore/rule/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'manystore/config_group',
 | 
						|
                    'title' => '商家系统配置分组',
 | 
						|
                    'icon' => 'fa fa-list',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'manystore/config_group/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'manystore/config_group/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'manystore/config_group/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'manystore/config_group/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'manystore/config',
 | 
						|
                    'title' => '商家系统配置管理',
 | 
						|
                    'icon' => 'fa fa-list',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'manystore/config/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'manystore/config/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'manystore/config/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'manystore/config/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'manystore/command',
 | 
						|
                    'title' => '商家在线命令管理',
 | 
						|
                    'icon' => 'fa fa-list',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'manystore/command/index', 'title' => '查看'],
 | 
						|
                        ['name' => 'manystore/command/add', 'title' => '添加'],
 | 
						|
                        ['name' => 'manystore/command/detail', 'title' => '详情'],
 | 
						|
                        ['name' => 'manystore/command/execute', 'title' => '运行'],
 | 
						|
                        ['name' => 'manystore/command/del', 'title' => '删除'],
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ],
 | 
						|
    ];
 | 
						|
 | 
						|
    protected $manystore_menu = [
 | 
						|
        [
 | 
						|
            'name' => 'dashboard',
 | 
						|
            'title' => 'Dashboard',
 | 
						|
            'icon' => 'fa fa-dashboard',
 | 
						|
            'remark' => 'Dashboard tips',
 | 
						|
            'sublist' => [
 | 
						|
                ['name' => 'dashboard/index', 'title' => 'View'],
 | 
						|
                ['name' => 'dashboard/add', 'title' => 'Add'],
 | 
						|
                ['name' => 'dashboard/edit', 'title' => 'Edit'],
 | 
						|
                ['name' => 'dashboard/del', 'title' => 'Delete'],
 | 
						|
                ['name' => 'dashboard/multi', 'title' => 'Multi'],
 | 
						|
            ]
 | 
						|
        ],
 | 
						|
        [
 | 
						|
            'name' => 'general',
 | 
						|
            'title' => 'General',
 | 
						|
            'icon' => 'fa fa-cogs',
 | 
						|
            'remark' => '',
 | 
						|
            'sublist' => [
 | 
						|
                [
 | 
						|
                    'name' => 'general/config',
 | 
						|
                    'title' => 'Config',
 | 
						|
                    'icon' => 'fa fa-cog',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'general/config/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'general/config/edit', 'title' => 'Edit'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'general/attachment',
 | 
						|
                    'title' => 'Attachment',
 | 
						|
                    'icon' => 'fa fa-file-image-o',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'general/attachment/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'general/attachment/select', 'title' => 'Select attachment'],
 | 
						|
                        ['name' => 'general/attachment/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'general/attachment/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'general/attachment/del', 'title' => 'Delete'],
 | 
						|
                        ['name' => 'general/attachment/multi', 'title' => 'Multi'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'general/profile',
 | 
						|
                    'title' => 'Profile',
 | 
						|
                    'icon' => 'fa fa-user',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'general/profile/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'general/profile/update', 'title' => 'Update profile'],
 | 
						|
                        ['name' => 'general/profile/shop_update', 'title' => 'Update shop'],
 | 
						|
                        ['name' => 'general/profile/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'general/profile/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'general/profile/del', 'title' => 'Delete'],
 | 
						|
                        ['name' => 'general/profile/multi', 'title' => 'Multi'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'general/log',
 | 
						|
                    'title' => '操作日志',
 | 
						|
                    'icon' => 'fa fa-file-text',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'general/log/index', 'title' => 'View'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
            ]
 | 
						|
        ],
 | 
						|
        [
 | 
						|
            'name' => 'auth',
 | 
						|
            'title' => 'Auth',
 | 
						|
            'icon' => 'fa fa-group',
 | 
						|
            'remark' => '',
 | 
						|
            'sublist' => [
 | 
						|
                [
 | 
						|
                    'name' => 'auth/manystore',
 | 
						|
                    'title' => 'Admin',
 | 
						|
                    'icon' => 'fa fa-user',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'auth/manystore/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'auth/manystore/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'auth/manystore/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'auth/manystore/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'auth/manystorelog',
 | 
						|
                    'title' => 'Admin log',
 | 
						|
                    'icon' => 'fa fa-list-alt',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'auth/manystorelog/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'auth/manystorelog/detail', 'title' => 'Detail'],
 | 
						|
                        ['name' => 'auth/manystorelog/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ],
 | 
						|
                [
 | 
						|
                    'name' => 'auth/group',
 | 
						|
                    'title' => 'Group',
 | 
						|
                    'icon' => 'fa fa-group',
 | 
						|
                    'sublist' => [
 | 
						|
                        ['name' => 'auth/group/index', 'title' => 'View'],
 | 
						|
                        ['name' => 'auth/group/add', 'title' => 'Add'],
 | 
						|
                        ['name' => 'auth/group/edit', 'title' => 'Edit'],
 | 
						|
                        ['name' => 'auth/group/del', 'title' => 'Delete'],
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件安装方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function install()
 | 
						|
    {
 | 
						|
        Menu::create($this->menu);
 | 
						|
        $info = get_addon_info('manystore');
 | 
						|
        if (!$info['install']) {
 | 
						|
            $info['install'] = 1;
 | 
						|
            set_addon_info('manystore', $info);
 | 
						|
        }
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件卸载方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function uninstall()
 | 
						|
    {
 | 
						|
        Menu::delete('manystore');
 | 
						|
        ManystoreMenu::delete('dashboard');
 | 
						|
        ManystoreMenu::delete('general');
 | 
						|
        ManystoreMenu::delete('auth');
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件启用方法
 | 
						|
     */
 | 
						|
    public function enable()
 | 
						|
    {
 | 
						|
        Menu::enable('manystore');
 | 
						|
 | 
						|
        $info = get_addon_info('manystore');
 | 
						|
        if ($info['install']) {
 | 
						|
            $menu_exist = ManystoreMenu::getAuthRuleIdsByName('dashboard');
 | 
						|
            if (!$menu_exist) {
 | 
						|
                db()->startTrans();
 | 
						|
                try {
 | 
						|
                    ManystoreMenu::create($this->manystore_menu);
 | 
						|
                    db()->commit();
 | 
						|
                } catch (Exception $e) {
 | 
						|
                    db()->rollback();
 | 
						|
                    return false;
 | 
						|
                }
 | 
						|
            } else {
 | 
						|
                ManystoreMenu::enable('dashboard');
 | 
						|
                ManystoreMenu::enable('general');
 | 
						|
                ManystoreMenu::enable('auth');
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件禁用方法
 | 
						|
     */
 | 
						|
    public function disable()
 | 
						|
    {
 | 
						|
        Menu::disable('manystore');
 | 
						|
        ManystoreMenu::disable('dashboard');
 | 
						|
        ManystoreMenu::disable('general');
 | 
						|
        ManystoreMenu::disable('auth');
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 注册模型事件-附件表
 | 
						|
     */
 | 
						|
    public function appInit()
 | 
						|
    {
 | 
						|
        //上传到多商家附件
 | 
						|
        \app\common\model\Attachment::event('after_insert', function ($row) {
 | 
						|
            try {
 | 
						|
                $row = $row->toArray();
 | 
						|
                $attachment = \app\common\model\ManystoreAttachment::where('url', $row['url'])->where('storage', 'alioss')->find();
 | 
						|
                if (!$attachment && session('manystore.shop_id')) {
 | 
						|
                    $data = array(
 | 
						|
                        'category'    => $row['category'],
 | 
						|
                        'shop_id'    => (int)session('manystore.shop_id'),
 | 
						|
                        'user_id'     => (int)session('uid'),
 | 
						|
                        'filesize'    => $row['filesize'],
 | 
						|
                        'filename'    => $row['filename'],
 | 
						|
                        'imagewidth'  => $row['imagewidth'],
 | 
						|
                        'imageheight' => $row['imageheight'],
 | 
						|
                        'imagetype'   => $row['imagetype'],
 | 
						|
                        'imageframes' => 0,
 | 
						|
                        'mimetype'    => $row['mimetype'],
 | 
						|
                        'url'         => $row['url'],
 | 
						|
                        'uploadtime'  => time(),
 | 
						|
                        'storage'     => 'alioss',
 | 
						|
                        'sha1'        => $row['sha1'],
 | 
						|
                    );
 | 
						|
                    \app\common\model\ManystoreAttachment::create($data, true);
 | 
						|
                }
 | 
						|
            } catch (\think\Exception $e) {
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 注册事件-上传登录检测判断
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function uploadConfigChecklogin()
 | 
						|
    {
 | 
						|
        //必须判断模块中的用户是否登录
 | 
						|
        if (request()->module() == 'manystore' && \app\manystore\library\Auth::instance()->id) {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
 | 
						|
}
 |