242 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace addons\csmtable;
 | 
						|
 | 
						|
use addons\csmtable\library\xcore\xcore\utils\XcAdminSessionUtils;
 | 
						|
use addons\csmtable\library\xcore\xcore\utils\XcRequestUtils;
 | 
						|
use think\Addons;
 | 
						|
use app\common\library\Menu;
 | 
						|
use addons\csmtable\library\xcore\xcore\utils\XcConfigUtils;
 | 
						|
use addons\csmtable\library\xcore\xcore\utils\XcResponseUtils;
 | 
						|
 | 
						|
/**
 | 
						|
 * 插件
 | 
						|
 */
 | 
						|
class Csmtable extends Addons
 | 
						|
{
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件安装方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function install()
 | 
						|
    {
 | 
						|
        $menu = [
 | 
						|
            [
 | 
						|
                'name' => 'csmtable',
 | 
						|
                'title' => 'Table功能增强',
 | 
						|
                'sublist' => [
 | 
						|
                    [
 | 
						|
                        'name' => 'csmtable/test',
 | 
						|
                        'title' => '使用示例',
 | 
						|
                        'icon' => 'fa fa-meetup',
 | 
						|
                        'sublist' => [
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/index',
 | 
						|
                                'title' => '查询'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/recyclebin',
 | 
						|
                                'title' => '回收站'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/add',
 | 
						|
                                'title' => '添加'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/edit',
 | 
						|
                                'title' => '修改'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/del',
 | 
						|
                                'title' => '删除'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/destroy',
 | 
						|
                                'title' => '真实删除'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/restore',
 | 
						|
                                'title' => '还原'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/multi',
 | 
						|
                                'title' => '批量更新'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/test/import',
 | 
						|
                                'title' => '导入'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/datasource/admin',
 | 
						|
                                'title' => '人员信息读取'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/cligenerateexcel/index',
 | 
						|
                                'title' => '下载Excel'
 | 
						|
                            ]
 | 
						|
                        ]
 | 
						|
                    ],
 | 
						|
                    [
 | 
						|
                        'name' => 'csmtable/xlstask',
 | 
						|
                        'title' => '下载任务',
 | 
						|
                        'icon' => 'fa fa-meetup',
 | 
						|
                        'sublist' => [
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/xlstask/index',
 | 
						|
                                'title' => '查询'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/xlstask/add',
 | 
						|
                                'title' => '添加'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/xlstask/edit',
 | 
						|
                                'title' => '修改'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/xlstask/del',
 | 
						|
                                'title' => '删除'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/xlstask/multi',
 | 
						|
                                'title' => '批量'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/csmgeneratesub/index',
 | 
						|
                                'title' => '重新执行'
 | 
						|
                            ],
 | 
						|
                            [
 | 
						|
                                'name' => 'csmtable/csmgenerate/generate',
 | 
						|
                                'title' => '生成文件'
 | 
						|
                            ],
 | 
						|
                        ]
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
        Menu::create($menu);
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件卸载方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function uninstall()
 | 
						|
    {
 | 
						|
        Menu::delete(XcConfigUtils::getAddonCode());
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件启用方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function enable()
 | 
						|
    {
 | 
						|
        Menu::enable(XcConfigUtils::getAddonCode());
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * 插件禁用方法
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function disable()
 | 
						|
    {
 | 
						|
        Menu::disable(XcConfigUtils::getAddonCode());
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * JS 获取配置的方式 Config.csmtable.cloginwxmp
 | 
						|
     */
 | 
						|
    public function configInit(&$params)
 | 
						|
    {
 | 
						|
        $config = $this->getConfig();
 | 
						|
        $addons = XcConfigUtils::xpconfig('addons_code');
 | 
						|
        $params[$addons] = [
 | 
						|
        ];
 | 
						|
    }
 | 
						|
 | 
						|
    public function actionBegin($call)
 | 
						|
    {
 | 
						|
 | 
						|
        $request = XcRequestUtils::getRequest();
 | 
						|
 | 
						|
        if (true) {
 | 
						|
            // 判断是否安装了插件:表格无刷新行内编辑
 | 
						|
            $path = $request->path();
 | 
						|
            if ($path == 'csmtable/test') {
 | 
						|
                $editable = get_addon_info('editable');
 | 
						|
                if (! $editable || ! $editable['state']) {
 | 
						|
                    XcResponseUtils::error("为更好的演示本功能,请安装【表格无刷新行内编辑】插件", null, null, 60);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        if (true) {
 | 
						|
            // 异步下载用
 | 
						|
            $method = $request->request('csmtable_method');
 | 
						|
            $filesource = $request->request('csmtable_filesource');
 | 
						|
            if ($method == 'download_excel') {
 | 
						|
                set_time_limit(0);
 | 
						|
 | 
						|
                $dao = new \app\admin\model\csmtable\Xlstask();
 | 
						|
                $admin_id = XcAdminSessionUtils::getUserId();
 | 
						|
 | 
						|
                // 限制下载
 | 
						|
                if (true) {
 | 
						|
                    $row = $dao->where("admin_id", "=", $admin_id)
 | 
						|
                        ->where("progress", "<", "100")
 | 
						|
                        ->where("createtime", ">", time() - 1800)
 | 
						|
                        ->where("iserror", "<>", "Y")
 | 
						|
                        ->find();
 | 
						|
                    if ($row) {
 | 
						|
                        XcResponseUtils::error("当前有下载任务,请任务结束后再尝试下载。");
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                // 生成任务记录
 | 
						|
                $dao->where("admin_id", "=", $admin_id)
 | 
						|
                    ->where("filesource", '=', $filesource)
 | 
						|
                    ->where("status", "=", "normal")
 | 
						|
                    ->update([
 | 
						|
                    "status" => "hidden"
 | 
						|
                ]);
 | 
						|
 | 
						|
                // 触发异步生成Excel任务
 | 
						|
                $classname = get_class($call[0]);
 | 
						|
                $getparams = [
 | 
						|
                    'search' => $request->request('search'),
 | 
						|
                    'filter' => $request->request('filter'),
 | 
						|
                    'op' => $request->request('op'),
 | 
						|
                    'sort' => $request->request('sort'),
 | 
						|
                    'order' => $request->request('order'),
 | 
						|
                    'offset' => $request->request('offset'),
 | 
						|
                    'limit' => $request->request('limit'),
 | 
						|
                    'csmtable_classname' => str_replace('\\', '/', $classname),
 | 
						|
                    'csmtable_methodname' => 'index',
 | 
						|
                    'csmtable_columns' => $request->request('csmtable_columns')
 | 
						|
                ];
 | 
						|
 | 
						|
                $param = [
 | 
						|
                    'admin_id' => $admin_id,
 | 
						|
                    'filesource' => $filesource,
 | 
						|
                    'param' => json_encode($getparams),
 | 
						|
                    'createtime' => time()
 | 
						|
                ];
 | 
						|
                $row = $dao->create($param);
 | 
						|
 | 
						|
                $url = XcRequestUtils::urlBase("/addons/csmtable/csmgenerate/index?id={$row->id}&clogintoken=".XcAdminSessionUtils::getToken());
 | 
						|
                $this->callremote2($url);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private function callremote2($url)
 | 
						|
    {
 | 
						|
        \fast\Http::sendRequest($url);
 | 
						|
    }
 | 
						|
}
 |