| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614 | <?phpnamespace App\Console\Commands\Transfer;use Illuminate\Console\Command;use Illuminate\Support\Facades\DB;use App\Transfer\Notice;use App\Transfer\NoticeCategory;use App\Models\SubsiteNotice;use App\Models\NoticeCategory as newNoticeCategory;use App\Models\Notice as newNotice;use App\Transfer\ExplainCategory;use App\Models\SubsiteExplain;use App\Models\Explain as newExplain;use App\Models\ExplainCategory as newExplainCategory;use App\Transfer\Feedback;use App\Models\Feedback as newFeedback;use App\Transfer\Appeal;use App\Models\Appeal as newAppeal;use App\Transfer\Report;use App\Transfer\ReportResume;use App\Models\Report as newReport;use App\Transfer\Help;use App\Transfer\HelpCategory;use App\Models\Help as newHelp;use App\Models\HelpCategory as newHelpCategory;use App\Transfer\Hrtool;use App\Transfer\HrtoolCategory;use App\Models\Hrtools as newHrtools;use App\Models\HrtoolsCategory as newHrtoolsCategory;use App\Transfer\Link;use App\Transfer\LinkCategory;use App\Models\SubsiteLink;use App\Models\Link as newLink;use App\Models\LinkCategory as newLinkCategory;class TransferContent extends Command{    /**     * The name and signature of the console command.     *     * @var string     */    protected $signature = 'aix:transfer-content';    /**     * The console command description.     *     * @var string     */    protected $description = '转移旧系统内容数据';    /**     * Create a new command instance.     *     * @return void     */    public function __construct()    {        parent::__construct();    }    /**     * Execute the console command.     *     * @return mixed     */    public function handle()    {        //转移新闻资讯模块(不导入)        //转移广告模块(手动导入)        //转移友情链接模块        $this->info("清除友情链接分类数据表:link_categorys");        DB::table('link_categorys')->delete();        $this->info("清除友情链接数据表:links");        DB::table('links')->delete();        $this->info("清除友情链接与分站关系数据表:subsite_link");        DB::table('subsite_link')->delete();        $this->info("开始转移数据...");        $total = LinkCategory::count();        $bar = $this->output->createProgressBar($total);        LinkCategory::orderBy('id', 'asc')->chunk(500, function ($categories) use ($bar) {            $cate_array = [];            $link_array = [];            $link_subsite_array = [];            foreach ($categories as $cate) {                $this->handleLinkCategory($cate, $cate_array);                $this->handleLink($cate->id, $cate->links, $link_array, $link_subsite_array);            }            //批量插入数据;            if ($cate_array) {                newLinkCategory::insert($cate_array);            }            if ($link_array) {                newLink::insert($link_array);            }            if ($link_subsite_array) {                SubsiteLink::insert($link_subsite_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移友情链接数据成功.");        //转移HR工具箱模块        $this->info("清除HR工具箱分类数据表:hrtools_categorys");        DB::table('hrtools_categorys')->delete();        $this->info("清除HR工具箱数据表:hrtools");        DB::table('hrtools')->delete();        $this->info("开始转移数据...");        $total = HrtoolCategory::count();        $bar = $this->output->createProgressBar($total);        HrtoolCategory::orderBy('c_id', 'asc')->chunk(500, function ($hrtool_categories) use ($bar) {            $hrtool_cate_array = [];            $hrtool_array = [];            foreach ($hrtool_categories as $cate) {                $this->handleHrtoolCategory($cate, $hrtool_cate_array);                $this->handleHrtool($cate->hrtools, $hrtool_array);            }            if ($hrtool_cate_array) {                newHrtoolsCategory::insert($hrtool_cate_array);            }            if ($hrtool_array) {                newHrtools::insert($hrtool_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移HR工具箱数据成功.");        //转移帮助模块        $this->info("清除帮助中心分类数据表:help_categorys");        DB::table('help_categorys')->delete();        $this->info("清除帮助中心数据表:helps");        DB::table('helps')->delete();        $this->info("开始转移数据...");        $total = HelpCategory::count();        $bar = $this->output->createProgressBar($total);        HelpCategory::orderBy('id', 'asc')->chunk(500, function ($help_categories) use ($bar) {            $help_cate_array = [];            $help_array = [];            foreach ($help_categories as $cate) {                $this->handleHelpCategory($cate, $help_cate_array);                $this->handleHelp($cate->helps, $help_array);            }            if ($help_cate_array) {                newHelpCategory::insert($help_cate_array);            }            if ($help_array) {                newHelp::insert($help_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移帮助中心数据成功.");        //转移举报职位模块        $this->info("清除举报数据表:reports");        DB::table('reports')->delete();        $this->info("开始转移数据...");        $total = Report::count();        $bar = $this->output->createProgressBar($total);        Report::orderBy('id', 'asc')->chunk(500, function ($reports) use ($bar) {            $report_array = [];            foreach ($reports as $report) {                $this->handleJobReport($report, $report_array);            }            if ($report_array) {                newReport::insert($report_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移举报职位数据成功.");        //转移举报简历模块        $total = ReportResume::count();        $bar = $this->output->createProgressBar($total);        ReportResume::orderBy('id', 'asc')->chunk(500, function ($resume_reports) use ($bar) {            $resume_report_array = [];            foreach ($resume_reports as $report) {                $this->handleResumeReport($report, $resume_report_array);            }            if ($resume_report_array) {                newReport::insert($resume_report_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移举报简历数据成功.");        //转移账号申诉模块        $this->info("清除账号申诉数据表:appeals");        DB::table('appeals')->delete();        $this->info("开始转移数据...");        $total = Appeal::count();        $bar = $this->output->createProgressBar($total);        Appeal::orderBy('id', 'asc')->chunk(500, function ($appeals) use ($bar) {            $appeal_array = [];            foreach ($appeals as $appeal) {                $this->handleAppeal($appeal, $appeal_array);            }            if ($appeal_array) {                newAppeal::insert($appeal_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移账号申诉数据成功.");        //转移意见建议模块        $this->info("清除意见建议数据表:feedbacks");        DB::table('feedbacks')->delete();        $this->info("开始转移数据...");        $total = NoticeCategory::count();        $bar = $this->output->createProgressBar($total);        Feedback::orderBy('id', 'asc')->chunk(500, function ($feedbacks) use ($bar) {            $feed_array = [];            foreach ($feedbacks as $feedback) {                $this->handleFeedback($feedback, $feed_array);            }            if ($feed_array) {                newFeedback::insert($feed_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移意见建议数据成功.");        //转移公告模块        $this->info("清除公告分类数据表:notice_categorys");        DB::table('notice_categorys')->delete();        $this->info("清除公告数据表:notices");        DB::table('notices')->delete();        $this->info("清除公告分站关系数据表:subsite_notice");        DB::table('subsite_notice')->delete();        $this->info("开始转移数据...");        $total = NoticeCategory::count();        $bar = $this->output->createProgressBar($total);        NoticeCategory::orderBy('id', 'asc')->chunk(500, function ($categories) use ($bar) {            $cate_array = [];            $notice_array = [];            $notice_subsite_array = [];            foreach ($categories as $cate) {                //处理公告分类表                $this->handleNoticeCategory($cate, $cate_array);                //处理公告表、公告与分站关系表                $this->handleNotice($cate->notices, $notice_array, $notice_subsite_array);            }            //批量插入数据;            if ($cate_array) {                newNoticeCategory::insert($cate_array);            }            if ($notice_array) {                newNotice::insert($notice_array);            }            if ($notice_subsite_array) {                SubsiteNotice::insert($notice_subsite_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移公告数据成功.");        //转移说明页模块        $this->info("清除说明页分类数据表:explain_categorys");        DB::table('explain_categorys')->delete();        $this->info("清除说明页数据表:explains");        DB::table('explains')->delete();        $this->info("清除说明页分站关系数据表:subsite_explain");        DB::table('subsite_explain')->delete();        $this->info("开始转移数据...");        $total = ExplainCategory::count();        $bar = $this->output->createProgressBar($total);        ExplainCategory::orderBy('id', 'asc')->chunk(500, function ($categories) use ($bar) {            $cate_array = [];            $explain_array = [];            $explain_subsite_array = [];            foreach ($categories as $cate) {                //处理说明页分类表                $this->handleExplainCategory($cate, $cate_array);                //处理说明页表、说明页与分站关系表                $this->handleExplain($cate->explains, $explain_array, $explain_subsite_array);            }            //批量插入数据;            if ($cate_array) {                newExplainCategory::insert($cate_array);            }            if ($explain_array) {                newExplain::insert($explain_array);            }            if ($explain_subsite_array) {                SubsiteExplain::insert($explain_subsite_array);            }            $bar->advance(500);        });        $bar->finish();        $this->line("  完成!");        $this->info("转移说明页数据成功.");    }    public function handleLinkCategory($link_cate, &$result_array)    {        $time = date('Y-m-d H:i:s', time());        if (strpos($link_cate->c_alias, 'QS_') === 0) {            $alias = substr_replace($link_cate->c_alias, 'AIX_', 0, 3);        } else {            $alias = $link_cate->c_alias;        }        $cate_data = array(            'id' => $link_cate->id,            'category_name' => $link_cate->categoryname,            'alias' => $alias,            'admin_set' => $link_cate->c_sys,            'created_at' => $time,            'updated_at' => $time        );        $result_array[] = $cate_data;    }    public function handleLink($type_id, $links, &$result_array, &$sub_array)    {        foreach ($links as $key => $link) {            $ltime = date('Y-m-d H:i:s', time());            $link_data = array(                'id' => $link->link_id,                'is_display' => $link->display,                'type_id' => $type_id,                'link_title' => $link->link_name,                'link_url' => $link->link_url,                'link_logo' => !empty($link->link_logo) ? 'old/link_logo/' . $link->link_logo : '',                'note' => htmlspecialchars_decode($link->notes),                'list_order' => $link->show_order,                'subsite_id' => $link->subsite_id,                'created_at' => $ltime,                'updated_at' => $ltime,            );            $result_array[] = $link_data;            $sub_data = array(                'link_id' => $link->link_id,                'subsite_id' => $link->subsite_id,                'created_at' => $ltime,                'updated_at' => $ltime,            );            $sub_array[] = $sub_data;        }    }    public function handleHrtoolCategory($hrtool_cate, &$result_array)    {        $time = date('Y-m-d H:i:s', time());        $data = array(            'id' => $hrtool_cate->c_id,            'category_name' => $hrtool_cate->c_name,            'category_img' => !empty($hrtool_cate->c_img) ? 'old/resource/hrtools_img/' . $hrtool_cate->c_img : '',            'admin_set' => $hrtool_cate->c_adminset,            'list_order' => $hrtool_cate->c_order,            'content' => $hrtool_cate->c_desc,            'created_at' => $time,            'updated_at' => $time        );        $result_array[] = $data;    }    public function handleHrtool($hrtools, &$result_array)    {        foreach ($hrtools as $key => $val) {            $htime = date('Y-m-d H:i:s', time());            $hr_data = array(                'id' => $val->h_id,                'type_id' => $val->h_typeid,                'title' => $val->h_filename,                'tit_color' => $val->h_color,                'tit_b' => $val->h_strong,                'file_url' => !empty($val->h_fileurl) ? 'old/hrtools/' . $val->h_fileurl : '',                'list_order' => $val->h_order,                'created_at' => $htime,                'updated_at' => $htime,            );            $result_array[] = $hr_data;        }    }    public function handleHelpCategory($help_cate, &$result_array)    {        $time = date('Y-m-d H:i:s', time());        $cate_data = array(            'id' => $help_cate->id,            'parent_id' => $help_cate->parentid,            'category_name' => $help_cate->categoryname,            'list_order' => $help_cate->category_order,            'created_at' => $time,            'updated_at' => $time        );        $result_array[] = $cate_data;    }    public function handleHelp($helps, &$result_array)    {        foreach ($helps as $help) {            $htime = date('Y-m-d H:i:s', $help->addtime);            $help_data = array(                'id' => $help->id,                'type_id' => $help->type_id,                'parent_id' => $help->parentid,                'title' => $help->title,                'content' => $help->content,                'list_order' => $help->ordid,                'click' => $help->click,                'created_at' => $htime,                'updated_at' => $htime,            );            $result_array[] = $help_data;        }    }    public function handleJobReport($report, &$result_array)    {        $data = array(            'uid' => $report->uid,            'username' => $report->username,            'utype' => 1,            'utype_id' => $report->jobs_id,            'utype_realname' => $report->jobs_name,            'type_id' => $report->report_type,            'phone' => $report->telephone,            'content' => $report->content,            'audit' => $report->audit,            'subsite_id' => $report->subsite_id,            'created_at' => date('Y-m-d H:i:s', $report->addtime),            'updated_at' => date('Y-m-d H:i:s', $report->addtime),        );        $result_array[] = $data;    }    public function handleResumeReport($resume_report, &$result_array)    {        $report_type = 7 + (int)$resume_report->report_type;        $data = array(            'uid' => $resume_report->uid,            'username' => $resume_report->username,            'utype' => 2,            'utype_id' => $resume_report->resume_id,            'utype_realname' => $resume_report->resume_realname,            'type_id' => $report_type,            'phone' => '',            'content' => '',            'audit' => $resume_report->audit,            'subsite_id' => $resume_report->subsite_id,            'created_at' => date('Y-m-d H:i:s', $resume_report->addtime),            'updated_at' => date('Y-m-d H:i:s', $resume_report->addtime),        );        $result_array[] = $data;    }    public function handleAppeal($appeal, &$result_array)    {        $appeal_data = array(            'id' => $appeal->id,            'real_name' => $appeal->realname,            'mobile' => $appeal->mobile,            'email' => $appeal->email,            'description' => $appeal->description,            'subsite_id' => $appeal->subsite_id,            'status' => $appeal->status,            'created_at' => date('Y-m-d H:i:s', $appeal->addtime),            'updated_at' => date('Y-m-d H:i:s', $appeal->addtime)        );        $result_array[] = $appeal_data;    }    public function handleFeedback($feedback, &$result_array)    {        $audit = 0;        if ($feedback->audit == 1) {            $audit = 0;        } elseif ($feedback->audit == 2) {            $audit = 1;        }        $data = array(            'id' => $feedback->id,            'type' => $feedback->infotype,            'content' => $feedback->feedback,            'contact' => $feedback->tel,            'audit' => $audit,            'subsite_id' => $feedback->subsite_id?$feedback->subsite_id:0,            'created_at' => date('Y-m-d H:i:s', $feedback->addtime),            'updated_at' => date('Y-m-d H:i:s', $feedback->addtime)        );        $result_array[] = $data;    }    public function handleExplainCategory($cate, &$result_array)    {        $time = date('Y-m-d H:i:s', time());        $data['id'] = $cate->id;        $data['category_name'] = $cate->categoryname;        $data['list_order'] = $cate->category_order;        $data['admin_set'] = $cate->admin_set;        $data['status'] = 1;        $data['created_at'] = $time;        $data['updated_at'] = $time;        $result_array[] = $data;    }    public function handleExplain($explains, &$result_array, &$sub_array)    {        foreach ($explains as $key => $explain) {            $etime = date('Y-m-d H:i:s', $explain->addtime);            $is_url = $explain->is_url;            if ($explain->is_url == 'http://') {                $is_url = null;            }            $data['id'] = $explain->id;            $data['title'] = $explain->title;            $data['tit_color'] = $explain->tit_color ? $explain->tit_color : '#000000';            $data['tit_b'] = $explain->tit_b;            $data['content'] = htmlspecialchars_decode($explain->content);            $data['is_display'] = $explain->is_display;            $data['is_url'] = $is_url;            $data['seo_keywords'] = $explain->seo_keywords;            $data['seo_description'] = $explain->seo_description;            $data['click'] = $explain->click;            $data['list_order'] = $explain->show_order;            $data['subsite_id'] = $explain->subsite_id;            $data['created_at'] = $etime;            $data['updated_at'] = $etime;            $result_array[] = $data;            //分站对应关系            $sub_data = array(                'explain_id' => $explain->id,                'subsite_id' => $explain->subsite_id,                'created_at' => $etime,                'updated_at' => $etime,            );            $sub_array[] = $sub_data;        }    }    public function handleNoticeCategory($cate, &$result_array)    {        $time = date('Y-m-d H:i:s', time());        $data['id'] = $cate->id;        $data['category_name'] = $cate->categoryname;        $data['listorder'] = $cate->sort;        $data['admin_set'] = $cate->admin_set;        $data['status'] = 1;        $data['created_at'] = $time;        $data['updated_at'] = $time;        $result_array[] = $data;    }    public function handleNotice($notices, &$result_array, &$sub_array)    {        foreach ($notices as $key => $notice) {            $ntime = date('Y-m-d H:i:s', $notice->addtime);            $is_url = $notice->is_url;            if ($notice->is_url == 'http://') {                $is_url = null;            }            $data['id'] = $notice->id;            $data['type_id'] = $notice->type_id;            $data['title'] = $notice->title;            $data['content'] = htmlspecialchars_decode($notice->content);            $data['tit_color'] = $notice->tit_color ? $notice->tit_color : '#000000';            $data['tit_b'] = $notice->tit_b;            $data['is_display'] = $notice->is_display;            $data['is_url'] = $is_url;            $data['seo_keywords'] = $notice->seo_keywords;            $data['seo_description'] = $notice->seo_description;            $data['click'] = $notice->click;            $data['sort'] = $notice->sort;            $data['subsite_id'] = $notice->subsite_id;            $data['created_at'] = $ntime;            $data['updated_at'] = $ntime;            $result_array[] = $data;            //分站对应关系            $sub_data = array(                'notice_id' => $notice->id,                'subsite_id' => $notice->subsite_id,                'created_at' => $ntime,                'updated_at' => $ntime,            );            $sub_array[] = $sub_data;        }    }}
 |